From ce910c8cec901b061317d4ccc6373c2b03cdfbf6 Mon Sep 17 00:00:00 2001
From: houzhongjian <houzhongyi@126.com>
Date: 星期四, 24 十月 2024 17:41:06 +0800
Subject: [PATCH] 1、修改应用菜单权限等,增加根据应用id查询该应用下的二级菜单,并且转成一级菜单展示 2、数据采集模块增加大华和海康摄像头的sdk工具及相关代码 3、移除data和model模块iailab-common-biz-data-permission依赖重复,解决打包报错的bug 4、data-biz模块左右openscada依赖都需要排除bcprov-jdk15on,否则会导致打包报错 5、其它相关修改

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java                 |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_RECEIVE_STAT.java                               |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java               |   48 
 iailab-module-data/iailab-module-data-biz/libs/win64/StreamConvertor.dll                                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BURN_PARAM_INFO.java                                   |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTRIBUTE_INFO.java                                    |  115 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java                    |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_PAIR_EX.java                                     |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java                                   |   66 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPlayBack.dll                                                   |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/VideoStateSummaryModule.java                                 |  128 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java                              |  118 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java                           |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_DEVICE.java                                    |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATISTICS_MODE.java                                  |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_INSERT_MULTI_TALK_DEV.java                          |   32 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libssl.so.1.1                                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java                                 |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_TRANSMIT_STAT.java                              |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java                                  |  158 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_INFO.java                                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGEPOINT_TYPE.java                                |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java                             |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_RADAR_INFO.java                                  |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/PaintPanel.java                                                   |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java                      |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTION_INFO.java                                   |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FIREWARNING_EXT_INFO.java                              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_INFO_EX.java                            |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java                       |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java                        |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java                                 |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java                                   |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSOR_STATE.java                                      |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTODemo.java                                              |  640 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAR_WEIGHT_INFO.java                                   |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINGERPRINT_INFO.java                                  |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java                          |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java                                 |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java                               |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AUDIO_ANOMALY.java                                   |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VTO_MANAGER_RELATION.java                      |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java                           |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java                              |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java                          |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GYRO.java                                    |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_VEHICLE_INFO.java                            |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO.java                  |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java                         |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java                  |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PointerSize.java                                           |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_OUTV_INFO.java                            |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java                                |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java                        |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java                       |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java                  |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java                       |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java                                  |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java                      |   26 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCCoreDevCfg.so                                             |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java                  |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java                             |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FATIGUE_DRIVING.java                                   |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BYPASSMODE.java                                |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/DynamicParseUtil.java                                                |  124 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java                         |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java                  |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_WADING_DETECTION_INFO.java                   |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java                      |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RECORD_MODE.java                                  |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java                           |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_INFO_EXTERN.java                            |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/Gate.java                                                |  611 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/CommonUtils.java                         |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java                             |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java                   |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/REC_TYPE.java                                            |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java                    |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java                             |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java                                 |  176 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java                           |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java                     |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEKS_PLAN_INFO.java                                   |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DownloadPictureDialog.java                  |  138 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java                             |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java                             |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java                           |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java                   |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCapturePictureClient.java                        |  314 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java                        |   99 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhpr.so                                                                  |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_INFO.java                                         |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_INFO.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_GLASSES_INFO.java                                |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java                         |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java                   |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COVER_PLATE_STATE.java                                |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java              |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java             |  136 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VTO_MANAGER_RELATION.java                       |   24 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libopenal.so.1                                                             |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java                           |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java                                   |  858 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SCENE_MODE_INFO.java                                   |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java                      |  132 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_BASE.java                            |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_TYPE.java                                   |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java                 |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceFunctionOperatePanel.java                |  324 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_TYPE.java                                        |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_ROLL.java                                 |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/GateModule.java                                              |  575 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java                               |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUTO_PAN_INFO.java                                 |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_STATEMANAGER_INFO.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java                             |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CORRECTION.java                                        |   28 
 iailab-module-data/iailab-module-data-biz/libs/win64/avnetsdk.dll                                                                           |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java                           |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_INFO.java                                             |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java                               |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java                   |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREAS_INFO.java                                        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java                               |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java                       |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java                                 |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_TANK.java                                      |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_STATE_INFO.java                           |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ECK_GUIDINGPANEL_CONTENT.java                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java                               |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java                              |  169 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java                              |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java                                 |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java                      |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java             |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UINT_POINT.java                                        |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_GROUP_INFO.java                                       |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS.java                                     |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java                                |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_LIST_INFO.java                                   |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java                          |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_COURSE.java                                 |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java                        |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java           |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT.java                                      |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java                     |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Main.java                                                     |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java                           |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java                         |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFID_CARD_INFO.java                                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java             |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_COLOR_INFO.java                               |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_RELAY_INFO.java                                   |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AREA_SCAN.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java                         |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSLINE_INFO.java                                    |  141 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java                      |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/RealPlayModule.java                                          |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java                          |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java                      |   97 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java                             |   53 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCDisplay.dll                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java                              |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java                            |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java                           |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIALDETECT_TYPE.java                                  |  110 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/utils/HttpRequest.java                                |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ListPictureShowDialog.java                                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME_EX.java                                       |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java                       |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POSTURE.java                                   |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java                          |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLEDETECT_RULE_INFO.java                           |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevNvrEntity.java                                 |   98 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java           |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java                             |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java                         |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AutoRegister.java                                | 1826 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java                          |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java                                |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO.java                 |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java                         |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java                           |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_CAPS_INFO.java                                          |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_256.java                                              |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_INFO.java                                       |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java               |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java                     |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java                           |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java                          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java                              |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java                               |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD.java                                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java                     |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java                              |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_STATUS.java                                     |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_NO_DISK_INFO.java                                    |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_LIGHT_TYPE.java                                    |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrSaveReqVO.java             |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java                            |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/TemperQueryDialog.java                          |  558 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java                         |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java                        |   17 
 iailab-module-data/iailab-module-data-biz/libs/win64/RenderEngine.dll                                                                       |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java              |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java                     |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java                  |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EmptyStructure.java                                        |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE.java                                  |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java                    |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/CardManegerDialog.java                                   |  399 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_INFO.java                                             |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java                               |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java                     |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java                             |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java                                |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ONLINE_STATUS.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java                           |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIAL_STATE.java                                       |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java                                |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKPANTS_STATE.java                                  |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java                              |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_FAULT_INFO.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java                          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java                             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java              |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FACE_FEATURE_ABSTRACT_INFO.java                      |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java                          |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java                           |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_VEHICLE_INFO.java                    |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java                     |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java                              |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java                             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO.java                                       |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java                         |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java                        |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java                         |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java                           |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MAN_NUM_INFO.java                                    |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java                |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java                         |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET.java                                    |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/LastErrorNew.java                                        | 1703 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java                             |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AlarmListen.java                                              |  450 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FAILCODE.java                                     |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java                                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_STATUS.java                                     |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/Utils.java                                                           |  210 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_TALK_DEV.java                              |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EMDeviceType.java                                        |  295 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java                         |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_PIC_INFO_EX.java                                       |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java                   |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java                               |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java                            |  179 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKLIGHT_MODE.java                                   |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java                        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LPNET_RECORDFILE_INFO.java                                 |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java                        |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java                     |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO.java             |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/AddCardDialog.java                                       |  332 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java                           |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java                               |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_LEVEL.java                                      |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskCommonQueue.java                                         |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java                            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEV_IO_STATS.java                                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java                      |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NAS_STATE_TYPE.java                                   |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java               |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_SNAPBYTIME_DATA.java                                 |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_PROTOCOL_TYPE.java                            |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java                 |  112 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_WINDOW.java                                     |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java                             |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java                          |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_NET_DATA_STAT.java                          |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL.java                                     |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java                               |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_2DCODE.java                                    |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIER_LIST_INFO.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java                |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java                 |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java                                  |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java           |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_LIGHT_TYPE.java                                |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASG_WORK_MODE.java                                    |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java                  |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java            |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java                      |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java                         |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java                      |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java                        |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NEST_DETECT.java                                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_SUPPORT_EVENTS.java                                |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java                    |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/PointQueryDialog.java                           |  233 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTUP_MODE.java                                     |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java              |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java                                |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETALL_CALIBRATEINFO_INFO.java                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java                              |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_INFO.java                                          |   34 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioIntercom.dll                                                |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOES_TYPE.java                                       |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java                        |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java                         |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java                       |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java                       |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java                     |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java                               |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_TAMPER_STATE.java                                 |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG.java                                      |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java                              |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CB_STATES.java                                        |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO.java              |  174 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java                         |   37 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libAudioIntercom.so                                            |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java                           |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_INFO.java                                 |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java            |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java                                |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java                        |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATHER_TYPE.java                                      |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java                                |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_INFO.java                                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java                         |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_INFO.java                                       |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java                             |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java                               |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java                             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_INFO.java                                          |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java                           |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java                           |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java                                  |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java                        |   59 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/zlib1.dll                                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SPACE_TYPE.java                                       |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java                        |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_TYPE.java                                       |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java                   |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_CALCINFO_INFO.java                   |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java                      |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEST_INFO.java                                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java                               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_ENABLE.java                                      |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java                       |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java                                  |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_EMOTION_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java                             |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java           |  115 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java                            |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_LINK_STATUS.java                             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java                                 |   89 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java                           |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java                  |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_LIST_INFO.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultHaveReconnect.java                                 |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/CapturePictureModule.java                                    |  107 
 iailab-module-data/iailab-module-data-biz/src/main/resources/application-dev.yml                                                            |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java                               |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java                        |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_TRAIT.java                                            |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_STATE.java                                            |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java                |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO.java                               |  101 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java                     |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ALARMMODE.java                                 |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java                       |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java                      |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java                                 |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_VEST_INFO.java                                   |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TrafficEventModule.java                                      |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java                               |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_OFFLINE_INFO.java                 |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java                    |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PassingCityByteArr.java                                    |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java                            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_THERMO_GAIN.java                                       |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java                 |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java                  |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java                            |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_BLOCKING.java                                 |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DisConnect.java                                    |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java          |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java                                |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_INFO.java                                  |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_SPACE_TYPE.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_CFG.java                                       |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/UNPACKING_CHECK_INFO.java                                  |   89 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java                      |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java                   |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ThermalCamera.java                              |  567 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT.java                                    |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_CONFIG.java                                       |  407 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_INFO.java                                     |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COAT_TYPE.java                                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_INFO.java                                     |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java                              |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_SET_BYPASS.java                                   |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_ROPE_INFO.java                                  |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java                             |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETCOUNT_LOG_PARAM.java                             |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java                      |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BREATHING_MASK_INFO.java                               |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java                           |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java                              |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java                  |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_LIGHTING_INFO.java                             |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java                             |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java                  |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java                               |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM.java                                    |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java                               |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java                              |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceOperateShareDialog.java                  |  265 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java                                |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java                      |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_CARD_CAPS.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java                          |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java                        |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_IMAGE.java                                    |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NIGHT_ASK_INFO.java                                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSITION.java                                 |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java                         |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java                         |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java                        |  135 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_DIRECTION.java                                  |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_NAME.java                                  |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java                              |   97 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevLogServiceImpl.java                      |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_RELATED_IMAGE_TYPE.java                          |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java                                |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java                           |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java                       |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java                              |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java                               |  323 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java           |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java                        |   32 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libHCCore.so                                                               |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java                         |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_EXTERN.java                                 |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java                               |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLANS_INFO.java                                   |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java                                  |   98 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java                        |   25 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libanalyzedata.so                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java                            |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKING_DETECT.java                                    |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java                               |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE.java                                       |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_OBJECT_ANIMAL.java                                      |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java               |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java                           |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RESPIRATOR_STATE.java                                 |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java                |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HSJC_INFO.java                                         |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java                              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java           |  110 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java                          |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java                                |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_LIGHTINGCONTROL_CAPS.java                          |  109 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_STREAM.java                                     |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java                              |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_DIRECTION.java                                   |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java                         |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java                                  |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java                            |   20 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libSuperRender.so                                                          |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java                  |   23 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCDisplay.so                                                |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISK_STATE.java                                       |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CYCLING_NUM_INFO.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_TYPE.java                                      |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java                        |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java                           |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ALARMMODE.java                                 |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java                         |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java                  |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DRIVING_DIRECTION.java                                |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_DETAIL_OPTIONS.java                                |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE.java                                       | 1521 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java        |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX_IMAGEINFO.java                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java                              |    7 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java                            |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_RAINCOAT.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java                             |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java                                   |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_RAIN_COAT_INFO.java                              |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_STATEMANAGER_INFO.java                          |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java                          |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java                              |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java                |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java               |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevImageEntity.java                               |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_ATTACH.java                                  |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java                           |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARMING_TYPE.java                                      |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java                              |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTCOORDINATE.java                                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java              |  102 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java                                 |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java                            |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java                                 |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java                                |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java                             |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java                     |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java                       |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEOPLE_REGION_INFO.java                                |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java                             |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Base64.java                                                       |  553 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java                               |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java                               |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java                        |   17 
 iailab-module-data/iailab-module-data-biz/libs/win64/dhplay.dll                                                                             |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java                            |    7 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java                |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java                          |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ALRAM_SCENECHANGE_INFO.java                            |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAT_STYLE.java                                        |   12 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java                               |   89 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_SOURCE.java                                     |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAALARM_INFO.java                                  |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java                    |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java                 |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java                        |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java                             |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java               |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS.java                                        |  484 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_ATTACHMENT_INFO.java                           |   32 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/SystemTransform.dll                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_PLAN_INFO.java                                   |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceSearchAndInit.java                                      | 1135 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRMAP.java                                      |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java                               |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO_ALL.java                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java                                  |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CARDNOARRAY_INFO.java                                  |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java                                |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java                |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java               |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java                         |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_INFO.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_COURSE.java                                 |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java                           |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_STATEMANAGER_INFO.java                         |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEX_TYPE.java                                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_STATUS.java                                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java                           |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java                              |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java                         |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GPS_STATUS_INFO.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/MessageCode.java                         |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java                                 |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_OUTPUT_STATE.java                               |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java                  |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ACCESSCONTROL.java                                 |   93 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java                            |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java                             |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SPACE_MODE_INFO.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SupportedModeByteArr.java                                  |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java                     |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPARE_RESULT.java                                   |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java                        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java                        |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java                        |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/HumanNumberStatistic.java                                     |  711 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java                               |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java                          |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java                     |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AddFingerPrintDialog.java                          |  208 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java                              |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java                         |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java                          |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java                          |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_LANE_STATE.java                                      |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java                           |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_CONTROL_MONITOR_FILTER.java                       |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java                        |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_GROUP_INFO.java                                    |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java                     |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java                                  |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_STATE.java                                        |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java                          |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java                           |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java                         |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IDCARD_INFO.java                                       |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DEVICE_INFO.java                                 |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java                             |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO.java               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE.java                                    |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java            |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_OUTV_INFO.java                             |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java                            |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java                          |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java                           |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESPIRATOR_DETECT.java                                 |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java                           |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java                               |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_POINTTYPE.java                                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INTENSITY_MODE.java                                   |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskHandler.java                                             |    6 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java                              |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java                              |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java                             |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java                                 |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_HARDDISK_STATE.java                                    |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MULTIFACE_DETECT_ERRCODE.java                         |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Auxs.java                                                  |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java                          |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_PTZ_INFO.java                                   |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TALKING_HANGUP_INFO.java                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java                   |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java                               |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java                         |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_UNIT.java                                  |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java                      |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/ModifyPersonDialog.java                     |  326 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java                |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLES_DISTRIBUTION_DATA.java                        |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_PLATE_COLOR_INFO.java                          |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java                             |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java                        |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java                                |   71 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/OpenAL32.dll                                                     |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java                |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java               |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LINE_DETECTION_INFO.java                    |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java                         |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java                                  |  192 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java                          |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_INFO.java                                        |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java                         |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_NUMMAN.java                                   |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java                          |   26 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCVoiceTalk.dll                                                  |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCENE_CAP.java                                   |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_PRESET_UNIT.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java                              |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java                               |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java                |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java                            |  317 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_MASK_INFO.java                                   |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java                    |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ENCODECAP.java                                   |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java                          |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_INFO.java                                       |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java                         |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java        |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_INFO.java                                       |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java                     |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java                                 |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_LIGHTINGCONTROL_CAPS.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java                               |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java                               |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX2.java                              |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java                      |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java                         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java                         |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_RADAR_CONFIG.java                                      |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CATEGORY_INFO.java                            |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RELATING_VIDEO_INFO.java                               |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java                                   |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java                           |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_32.java                                               |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java                     |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java                            |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERSERVER_GETDETEVTTOKEN.java                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_ATTACH.java                                 |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_DETAIL.java                                       |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java                       |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java                      |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java               |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java                          |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java                       |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DotmatrixScreenModule.java                                   |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java                                |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java                                 |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java                          |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java                          |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java                              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BIND_MODE.java                                        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java                         |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VEHICLES_DISTRIBUTION_DATA.java                     |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO.java                  |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java                                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java                               |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAVEL_INFO.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java                    |  117 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java                        |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATE_TYPE.java                                        |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java                  |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java                          |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java                  |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java              |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java                         |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java                                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSS_LIST_INFO.java                                   |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_NETWORK_INFO.java                                  |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_COURSE.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libAudioRender.so                                                          |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AC_CAPS.java                                           |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java                          |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILE_PROCESS_INFO.java                                 |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONTROL_CASE_INFO.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java                          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java                              |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java                          |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/SNAP_TYPE.java                                           |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java                  |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO_EX.java                            |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java                                |  102 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java                                |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java                  |   27 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/libiconv2.dll                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java                           |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java                       |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCREEN_SHOW_INFO.java                                  |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java                               |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java                              |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_UMBRELLA.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FAN_SPEED.java                                       |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java                                   |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IPC_TYPE.java                                         |  122 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_COURSE.java                                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PIG_STAY_STAT.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLAN_INFO.java                                     |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_BEARD_INFO.java                                  |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java                      |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java                           |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java                              |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_2048.java                                             |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java                  |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java                               |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_PLAYBACK_PARAM.java                              |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENIOR_INFO.java                                       |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/DevNvrController.java               |   77 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE.java                                     |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java        |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_MODE_ZONE_ABNORMAL_INFO.java                       |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java                             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java                 |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_40.java                                               |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMELLY_LEVEL.java                                     |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIERS_INFO.java                                     |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java                            |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java                      |  101 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java                 |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java                             |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java                        |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java                                |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java              |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java                              |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_STATES.java                                         |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPDATE_MULTI_TALK_DEV.java                          |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE.java                                            |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java                                |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_QUERY_TYPE.java                                   |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKDevice.java                           |  266 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CONDITION_INFO.java                                |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FFCPERIOD_RANGE.java                                   |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java                                 |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArrSixteen.java                                  |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java                     |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java                               |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java                               |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDKStructureFieldLenth.java                                 |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ATTACH_TOPICS.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_TYPE.java                                   |  161 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HELMET_INFO.java                                 |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CaptureTypeEnum.java                               |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_GPS_INFO.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java                    |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java                         |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java                |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java                        |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_CMD.java                                     |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java                              |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java                |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java                          |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_INFO.java                                     |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java                             |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_PATTERN.java                                  |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java                                 |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_QUERYLOG.java                                 |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java       |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java                        |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_INFO.java                                          |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java                               |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAIR_STYLE.java                                       |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_ANGLE_INFO.java                                  |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java                                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java                          |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_QUERYLOG.java                                |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java                      |  169 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GYRO.java                                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java                                 |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java                    |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_RECT.java                                  |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETALL_CALIBRATEINFO_INFO.java                      |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fVideoStatHeatMapCallBack.java                              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java          |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java                          |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_VERSION.java                                  |  162 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/PermissionServiceImpl.java          |    7 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO.java                   |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IDENTITY_ANOMALY.java                                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java                        |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java                        |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_TAMPER_INFO.java                              |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_IO_STAT_INFO.java                                  |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java                         |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOW_COLOR.java                                       |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_INFO_EXTEND.java                                 |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java                              |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_LOW_SPACE_INFO.java                          |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAP_TYPE.java                                         |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java                         |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java                  |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_DEVICE_INFO_EX.java                                |  166 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_CONFIG_INFO.java                                |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevCameraDTO.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java                                  |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MAKE_TOKEN.java                                    |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_INFO.java                                      |  138 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java                         |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java                           |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevNvrDTO.java                                       |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java                          |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java                     |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficEvent.java                                             | 1689 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java       |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevImageService.java                             |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_TRANSMIT_INFO.java                                  |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java                            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOSAIC_TYPE.java                                      |   77 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java                              |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUISCREEN_ARROW.java                                   |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java                       |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_INFO.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_TSECT.java                                             |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java                            |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CAMERASTATE.java                                   |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java                       |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_RESULT.java                                     |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_WIEGAND_INFO.java                                  |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java                     |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/CameraHeartTask.java                                |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java                                |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USERMANAGER_IMAGE_TYPE.java                           |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ETH_STATE.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_2DCODE.java                                     |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_EX.java                                          |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java                       |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java                               |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_TOP_WINDOW.java                            |   25 
 iailab-cloud/iailab-gateway/src/main/resources/application.yaml                                                                             |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java                                |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELPOINT.java                                  |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java                             |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java                      |  194 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_HYGROTHERMOGRAPH.java                       |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ERRORDETECT.java                                   |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java                      |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java                               |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java                                |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_INFO.java                                      |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PED_DETECTOR_INFO.java                                 |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_LOCK_STATE.java                                    |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_TYPE.java                                       |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java                      |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java                             |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_CONFIG_VERSION.java                                |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java                                |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java                       |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java                                  |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OBJECT_RELATED_INFO.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VTO_DEV_NODE_INFO.java                                 |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_INFO.java                                       |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java                               |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java                                 |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java                        |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_STATE.java                                    |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java                             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java           |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_CALLING_INFO.java                              |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COVER_PLATE_DETECT.java                                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java                              |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java                    |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Net_PIC_INFO.java                                          |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java                             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java         |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java                               |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java                    |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_LOG_ITEM.java                                          |   32 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.dll                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_PICTURE_DATA.java                                 |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_TYPE.java                                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java                                  |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TROUSERS_TYPE.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COORDINATE_TYPE.java                                  |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_EX.java                                         |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/ThermalCameraModule.java                                     |  273 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO.java                                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTIONS_INFO.java                                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java                                |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_PANEL_INFO.java                                  |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java                             |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java                                |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_SHOES_INFO.java                                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java                                |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UNIFORM_INFO.java                                      |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java                           |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_FILE_INFO.java                                  |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_MODE.java                                     |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java                            |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java                        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO.java                   |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_LAPS_INFO.java                                    |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TIME_SECTION_6.java                                        |   11 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELLINE.java                                   |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java                         |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_CALIBRATEINFO_INFO.java                      |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_INFO.java                                          |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java                         |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java                    |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MODES_COMPLEX_LIGHT.java                               |   52 
 iailab-module-data/iailab-module-data-biz/src/main/resources/res_zh_CN.properties                                                           |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLANS_INFO.java                                    |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java                     |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERYNEXTLOG.java                                   |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_LIST_INFO.java                                |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevCameraService.java                            |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO.java         |  120 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java                     |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBER_STAT_INFO.java                                  |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java                                |   39 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCVoiceTalk.so                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_MODE.java                                      |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java                        |   30 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libssl-1_1-x64.dll                                                           |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_NEW.java                                      |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java                                 |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java                         |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java                   |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java                               |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java                      |   23 
 iailab-module-data/iailab-module-data-biz/pom.xml                                                                                           |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java                         |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java                               |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_PERSON.java                               |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java                      |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_RGBA.java                                        |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_GRANULARITY.java                                 |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_TYPE.java                                         |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java                             |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java                   |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java          |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java              |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/package-info.java                              |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java                 |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_VTO_MANAGER_RELATION.java                       |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java                         |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java               |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java                           |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPEED.java                                             |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/LoginModule.java                                             |  148 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIEW_RANGE_STATE.java                              |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java                 |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java                     |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_STATE_INFO.java                            |  136 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java                              |  101 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java                      |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java                         |   21 
 iailab-module-data/iailab-module-data-biz/src/main/resources/application.yml                                                                |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java                             |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_INFO.java                                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java                              |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_UMBRELLA_INFO.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java                             |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java                           |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LastError.java                                                       |  495 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_INFO.java                   |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java                                 |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_TYPE.java                                     |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_STATUS.java                                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java                               |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_STATEMANAGER_INFO.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java                               |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java                                 |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AIRBORNE_TYPE.java                                    |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java                          |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_COLOR.java                                       |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java                           |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEV_IO_STATS.java                                  |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MASK_ATTRIBUTE.java                                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java                          |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficAllowList.java                                         | 1344 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/BorderEx.java                                                     |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java                                |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_STATE.java                                         |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java                          |   49 
 iailab-module-data/iailab-module-data-biz/src/main/resources/res_en_US.properties                                                           | 1071 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RULE_TYPE_ACCURATE.java                               |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME.java                                          |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java                                |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_ABILITY.java                                   |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_INFO.java                                 |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java                          |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_LOGIN_FAILIUR_INFO.java                              |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ROAD_LEVEL.java                                       |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java                    |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java                           |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMM_PROP.java                                         |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java                          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java                |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_PLATE_INFO.java                                      |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java                     |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HOLD.java                                         |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java                                 |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARMOUT_POLE.java                                    |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java                           |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java                           |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceShowPanel.java                           |  370 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java                               |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java                  |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX.java                                     |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java                                |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java                               |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java                        |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java                     |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_FRONT_DEV_INFO.java                           |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_SWITCHWARN_INFO.java                      |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java               |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java                             |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_INFO.java                                   |  139 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java                |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java                        |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java                           |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java                    |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java                              |   25 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhcnetsdk.so                                                             |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java                     |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java                          |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java                                 |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.java                |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_NET_DATA_STAT.java                           |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEINFO_OPERATE_TYPE.java                       |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java                                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java                            |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_LASER_DISTANCE.java                             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TSECT_DAY.java                                         |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_FORMAT.java                                    |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BYPASSMODE.java                                 |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java                                |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/LatticeScreen.java                          |  529 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java                       |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevImageDTO.java                                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java                                  |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java                     |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java                             |   19 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libiconv2.so                                                   |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java                             |   20 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.lib                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_MODE_INFO.java                                    |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java                                |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/AlarmCameraEntity.java                            |  114 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_MODE.java                                          |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java                |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java                      |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/AlarmCameraService.java                          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_AGE_INFO.java                                    |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java                       |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BIND_MODE_INFO.java                             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java                        |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java                         |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java                             |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java                                |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REASON_TYPE.java                                      |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINK_INFO.java                                         |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_INFO.java                           |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java                         |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java                             |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java              |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SENSE_METHOD.java                                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_POSITION.java                                      |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java                              |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java               |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_POINT_INFO.java                      |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java                        |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java                              |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java                            |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_TALK_DEV.java                               |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_SEX_INFO.java                                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_SCHEME.java                                      |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_TIMESECTION_INFO.java                            |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MANUAL_SNAP_PARAMETER.java                                 |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_AREAR_INFO.java                                  |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_SET_ZOOM_VALUE.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_OBJECT.java                                    |  168 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java         |   66 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libPlayCtrl.so                                                             |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java                       |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java                          |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java                            |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER.java                                        |   93 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java                        |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/ResponseUtil.java                        |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java                   |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java                     |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POINT.java                                              |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java                            |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevLogEntity.java                                 |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BROADCAST_INFO.java                                    |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRIBUTE.java                                    |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPDATE_TYPE.java                                      |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java                               |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java                  |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE_WIDE.java                                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO.java                  |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java             |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOITEM.java                                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java                               |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java             |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java                     |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java                       |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_INFO.java                                   |  133 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Byte64Arr.java                                             |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CGF_MASKING_INFO.java                                      |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java                     |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java                      |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java                            |  222 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HEAD.java                                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java                        |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HAT.java                                          |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RECORD_STATE.java                               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java                           |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java                         |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADADemo.java                                          |  898 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java                           |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java                       |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/LoginPanel.java                                                   |  115 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_ABNORMAL_INFO.java                                |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX.java                                 |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java                               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPACE_UNIT.java                                        |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DISTRACT_DRIVING.java                                  |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTER_LOCK_CAPS.java                                   |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java                             |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java                       |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java                           |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java                       |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java                       |  105 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CAPTURE_SIZE.java                                        |  258 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ByteSize16.java                                            |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java                             |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USERMANAGER_IMAGE_INFO.java                            |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java                           |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LINK_CLASS_TYPE.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java                        |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASS_MODE.java                                        |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_FORMAT_INFO.java                             |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java                              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HEALTH_CODE_INFO.java                                  |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java                                 |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PROFILE_INFO.java                                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AREA_MODE_INFO.java                                    |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java                                |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java                            |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AC_CAPS.java                                        |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java                        |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java                            |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java                               |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_HYGROTHERMOGRAPH.java                        |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java                             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOOR_STATE.java                                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java                           |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_COLOR_INFO.java                         |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java                        |  109 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_AIRSWITCH_INFO.java                        |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java              |   33 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPlayBack.so                                               |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USER_GROUP.java                                 |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_SERVER_TYPE.java                                  |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAY_WITH_MODE.java                                   |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CALIBRATEINFO_INFO.java                         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXPOWER_STATE.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/GLOBAL_INFO.java                                           |  142 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java                  |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_DETECT_CAPS.java                                  |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_EVENT_LEFT_INFO.java                                 |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java                        |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java             |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java                                  |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java                  |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java                    |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HOTSPOT_WARNING_INFO.java                        |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java                             |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java                  |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java                             |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVER_NOBELT.java                                     |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUMERROR.java                                           |  567 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java                     |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SavePath.java                                                     |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java                               |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java                               |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_BOAT_INFO.java                               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java                              |   25 
 iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml                                                           |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATED_AREAS.java                                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WANDERDETECTION_INFO.java                            |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java                   |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_OUT.java                                     |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOABNORMALDETECTION_INFO.java                       |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_LOG.java                                           |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_TYPE.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java                           |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_ZOOM_INFO.java                                 |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java                       |  133 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ENCRYPT.java                                       |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POINT.java                                     |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/AlarmCameraDTO.java                                  |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java                         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java                         |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java                 |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DownLoadRecordModule.java                                    |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java        |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java                         |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACROSS_PARKING.java                                   |   64 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCCore.dll                                                                   |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java                             |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKCLOTHES_DETECT_INFO.java                     |  201 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java                 |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CAMERASTATE.java                                    |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PREALARM.java                                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java                                 |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILCKER_LIGHTING.java                                  |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATEMANAGER_STATE.java                               |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java                 |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java                   |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGION.java                                     |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java                               |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE.java                                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_COLOR.java                                    |  138 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java                         |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_VEHICLE_OBJECT.java                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java                  |  209 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/ModifyCardDialog.java                                    |  341 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java                           |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java                        |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME.java                                              |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java                             |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java                       |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STREAM_CFG_CAPS.java                                   |  117 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java                              |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java                          |   43 
 iailab-module-data/pom.xml                                                                                                                  |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_HUMIDITY_ALARM_INFO.java                     |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java                          |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java                      |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_FEATURE_ABSTRACT_INFO.java                            |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java                             |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VACCINE_INFO.java                                      |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java                         |  112 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java                         |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java                       |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUSTOM_PERSON_INFO.java                                    |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_MODE.java                                      |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAN_TRAFFIC_INFO.java                                      |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET.java                                     |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java                    |  148 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.lib                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java                                  |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WIRELESS_INFO.java                                     |   89 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO.java            |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java                |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERSERVER_GETDETEVTTOKEN.java                     |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java                        |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAIR_STYLE_INFO.java                             |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java                             |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TalkModule.java                                              |  162 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuServiceImpl.java                |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java                             |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java                  |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java                       |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java                               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java                                 |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_GYROABNORMALATTITUDE_INFO.java                       |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_SPEAK.java                                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java                                   |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_EX.java                                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/PTZControl.java                                               |  956 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java                           |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java                       |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_ERROR_CODE.java                               |  159 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java                           |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_BC.java                          |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java                           |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_NETWORK.java                                      |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARTITION_TYPE.java                                   |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_WND_ZORDER.java                                         |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVLOCATION_INFO.java                                  |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java                        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE.java                                            |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java               |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_INOUT_ANALYSE_PROC.java                        |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java                               |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraSaveReqVO.java       |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SCENE_SUPPORT_RULE.java                                    |  191 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROWD_LEVEL_DETECTION_INFO.java                  |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java                |  133 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java                        |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java                            |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java               |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_LIGHT_INTENSITY_MODE.java                            |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO.java        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java                                 |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java         |  116 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE.java                                          |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java                        |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java                               |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java                    |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java                       |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MANUAL_TEST.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/libs/win64/dhnetsdk.dll                                                                           |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_SEARCH_BY_PIC.java                            |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java                   |   16 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java                          |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButton.java                                           |  625 
 iailab-module-data/iailab-module-data-biz/libs/win64/Infra.dll                                                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TargetRecognitionModule.java                                 |  880 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CAP_CMD.java                                      |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TANK_STATUS.java                                      |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_SMOKING.java                                     |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java                                 |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASES_INFO.java                                       |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_STATUS_INFO.java                                   |  114 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java                            |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_COMP.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DownLoadRecord.java                                           |  889 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java            |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ARMING_INFO.java                                  |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java                        |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java                           |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_INFO.java                                   |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WORKMODE.java                                     |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java                          |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java                              |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFE_BELT_INFO.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO.java               |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java          |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java                             |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java                       |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCURATE_NUMBER_STAT.java                              |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java                            |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java                              |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/SearchByPicDialog.java                      |  596 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java                        |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/FindFaceEventRecordDialog.java              |  245 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORK_HELMET_STATE.java                                |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java            |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java              |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java                                 |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java                         |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_IN.java                                      |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java                       |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/STREAM_RATE_TYPE.java                                    |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO.java     |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RULE_INFO.java                                   |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAMERA_OCCLUSION.java                                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java                     |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java                        |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCaptureReceiveCB.java                            |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEVTIME.java                                             |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java                     |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java                             |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_TYPE.java                                   |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java                        |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_STATES_INFO.java                                |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java                           |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java                            |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_INFO.java                                        |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java              |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java                          |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_TYPE.java                                       |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java                               |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java                     |  289 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java                              |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java                           |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java                          |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAttachModule.java                                  |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java                     |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java                              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java               |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java                          |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG_LIST.java                                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PtotoListByteArr.java                                      |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTIGEN_INFO.java                                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java                       |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_CHECK.java                                       |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_STAY_STAT.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_COVERS.java                                    |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java                |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEVICE_ATTRIBUTE.java                                 |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_POS.java                                  |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java                        |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java                      |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java                         |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java                      |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java                        |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java                      |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSMIT_CMD.java                                   |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java                      |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_18.java                                               |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPTIMIZES_INFO.java                                    |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java                          |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ENCODECAP.java                                         |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java                               |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_TYPE_INFO.java                                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java                               |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java                              |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_PIC_INFO.java                                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_INFO.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java                     |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_WIFI_INFO.java                                    |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java                       |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java                         |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESET_POSITION.java                                   |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java                            |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ACTION_COUNT_INFO.java                       |   86 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java                                  |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java                  |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java                          |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java                    |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HKIMAGESERVER_INFO.java                                |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION.java                                    |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPLOAD_FLAG.java                                      |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java                              |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java                        |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java                        |  115 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_VEST.java                                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java                |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevCameraServiceImpl.java                   |  129 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_APRON_ATTRIBUTE.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java         |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LIFT_CONTROL_TYPES.java                       |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java                   |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java                                |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java                             |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java                             |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java                           |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/frame/DHCapturePictureFrame.java                   |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java                 |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_QUEUE_INFO.java                                    |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java                   |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE_EX.java                      |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_SOFT_TOUR_POINT_INFO.java                      |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java                      |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java                                |  394 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/ModifyDeviceDialog.java                          |  146 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PACKAGE_INFO.java                                      |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MOVE_DETECTION_INFO.java                             |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POLY_POINTS.java                                        |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java                                 |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java                           |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFIDELETAG_INFO.java                                   |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java                        |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java                                |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java                          |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevLogDao.java                                       |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSULATOR_STATE.java                                  |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java                                |   52 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AnalyzeData.dll                                                  |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_ALLOW_LIST_CAR.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDK_ALARM_Ex_TYPE.java                                      |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java                            |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/AlarmCameraServiceImpl.java                 |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java                       |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CALIBRATEINFO_INFO.java                        |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAFF_INFO.java                                        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java                        |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ALARMMODE.java                                  |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java                            |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LibraryLoad.java                                                     |  187 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java                          |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateInfo.java                                          |  559 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceControlModule.java                                     |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java                         |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java                   |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java                         |  141 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/GetDevCaps_Type.java                                     |  196 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO.java                      |   98 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java                           |    9 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java                         |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java      |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_TYPE.java                                         |  938 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_INFO.java                                     |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java                              |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java              |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_POWER_TYPE.java                                   |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BIND_MODE_INFO.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java                        |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java                               |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_ALARM_USER.java                                 |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java                    |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java                        |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RuleTypeByteArr.java                                       |   17 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDK.dll                                                                 |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EYE_STATE_TYPE.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROCESS_MODE.java                                     |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETAPP_WLAN.java                                       |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java                         |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java                           |  187 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java                      |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java                                |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO.java          |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java                      |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/SearchByPictureModule.java                                   |  214 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_OUTV_INFO.java                            |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROWD_STAT_DATA.java                                   |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java                        |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java                                  |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java                            |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java                         |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java                        |   86 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hpr.dll                                                                      |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java                               |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java                             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java              |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java                            |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BODY_TRAIT.java                                            |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java                        |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java                     |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java                         |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DO_FIND_INFO.java                             |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java                              |   11 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java             |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java                        |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ALARM_INFO.java                                    |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_INFO_EX.java                                       |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java                        |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java      |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java              |   50 
 iailab-module-data/iailab-module-data-biz/libs/win64/IvsDrawer.dll                                                                          |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java                                 |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDFILE_INFOEX.java                                 |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_SAFE_BELT_INFO.java                            |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO.java              |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java               |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SENSE_METHOD.java                                     |  240 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java                            |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java                    |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java               |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_RAID.java                                      |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO.java                           |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java        |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CARD_PROVINCE.java                                    |  154 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPPER_TYPE.java                                       |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_STATUS.java                                        |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_STATE.java                                    |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java               |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java                      |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java                           |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java                       |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java                         |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_WIDTH.java                                    |   57 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDK_Log_Switch.xml                                                    |   12 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/AlarmCameraDao.java                                  |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CROWD_CALIBRATION.java                                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java                           |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java                          |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO.java                                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WIEGAND_INFO.java                                      |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_UNIT_INFO.java                               |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java                             |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java                                |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_STAFF_TYPE.java                                   |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java                           |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java                               |   56 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.dll                                              |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java                       |  126 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java                      |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java                            |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java                               |   80 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libz.so                                                                    |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java                           |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java                              |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java               |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO.java           |  108 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java                             |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java                         |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AttendanceModule.java                                        |  501 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_LINK_STATUS.java                            |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AutoRegisterModule.java                                      |  346 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java                 |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OneDimensionalInformation.java                             |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealPlay.java                                                 |  420 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKSDKStructure.java                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java                       |  125 
 iailab-module-data/iailab-module-data-biz/src/main/resources/dynamic-lib-load.xml                                                           |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java                       |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java                |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_SOFT_TOUR_POINT_INFO.java                       |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/PythonUtil.java                          |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARMMODE_INFO.java                                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java               |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BAG.java                                          |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java     |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MANUAL_TEST.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java                                |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RELATED_IMAGE.java                                         |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java                           |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java                        |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java                               |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXTRA_PLATES.java                                      |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ZONE_ARMODE_INFO.java                          |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java                         |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java                |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java                              |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Talk.java                                                     |  342 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NEXT_STEP_INFO.java                                        |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrPageReqVO.java             |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRACK_OBJECT_TYPE.java                                |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INFO.java                                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java                                  |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java                              |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATE_SOURCE.java                                      |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java                       |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_EAP.java                                          |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java                     |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_DIRECTION.java                          |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java                   |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java               |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_INFO.java                                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO.java                   |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java                          |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_NEW_ENERGY_CAR.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java                                 |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java                          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java                              |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java                               |  107 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_TASK_NAME.java                                    |   84 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libcrypto.so.1.1                                                           |    0 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCCoreDevCfg.dll                                                 |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java                   |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java                         |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_MESSAGE.java                                       |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NativeString.java                                                    |  124 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java                                 |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java                           |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java                                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_CALIBRATEINFO_INFO.java                     |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_CTRL_STATE.java                                       |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSULATOR_DETECT.java                                  |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAPCATEGORY.java                                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java                     |   35 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libcrypto-1_1-x64.dll                                                        |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DataEntity.java                                   |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java                        |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_LIST.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_QR_CODE_INFO.java                                  |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java                        |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java                       |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/PtzControlModule.java                                        |  206 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TAKENAWAY_DETECTION_INFO.java                        |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java                     |   40 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.lib                                                      |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOOR_DETECT.java                                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java                   |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java                         |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_NONMOTOR_INFO.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEARING_STATE.java                                    |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANGLE_TYPE.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java                        |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java                             |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java                               |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO.java                                          |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SNAPBYTIME.java                                  |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_RULE_TYPE.java                                    |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_PHASE_INFO.java                                        |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java                          |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java                     |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java                              |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java                     |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java                           |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOTE_SLEEP.java                                   |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTPERIODS_INFO.java                                 |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOVE_SOFT_TOUR_POINT_INFO.java                    |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java                              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java                 |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java               |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java                              |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_COURSE.java                                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java                        |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java                               |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_HARDDISK.java                                  |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java                                  |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java                               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEBOXCOLOR_CAPS.java                                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATUS.java                                |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_CAPS.java                                  |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java                    |  188 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/ITask.java                                          |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAND_SPEED_INFO.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_GLASS.java                                        |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java                             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INFO.java                                   |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java                 |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO.java                                |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java                                   |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java                         |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java                    |   77 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_THREE_STATUS_BOOL.java                               |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_STATUS.java                                    |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java                                  |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java            |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java                                |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIP_SERVER_INFO.java                                   |  118 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java                                  |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java                                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java                           |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLI_INFO.java                                      |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROTECTIVE_SUIT_INFO.java                              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java                              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java                                   |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_IN_CHANNEL.java                                  |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CANDIDATE_INFOEX2.java                                 |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java                        |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java                         |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_PTZ_MOVEMENT_INFO.java                             |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX3.java                                    |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_RECT.java                                 |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java                                |  130 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java                    |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HYGROTHERMOGRAPH_INFO.java                             |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java                          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java                      |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java                           |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MASK_TYPE.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_TRACK_PROC.java                          |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java                                   |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java                              |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java                             |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectPath.java                                            |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_APPEND_STATE.java                                |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java                            |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java             |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO_EX.java                                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java                       |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION.java                                 |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ZONE_STATUS.java                                      |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_CURRENT_VK.java                                    |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/SubscribePanel.java                                |  153 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOIN_BACKLIGHT_MODE.java                           |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOTIONDETECT_REGION_INFO.java                          |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java                                |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_LOG_ITEM.java                                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java                         |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java                               |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_TARGET.java                                     |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java                        |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DETAIL_INFO.java                              |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/TargetRecognition.java                      | 1246 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java             |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java                                 |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java                             |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java               |   66 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCIndustry.dll                                                   |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java                                 |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/AlarmStatusEnum.java                               |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_ACCESSORY_INFO.java                                |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java                                |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_ZIGBEE_INFO.java                          |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECT.java                                              |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java                     |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_STREAM_INFO.java                                |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java                |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java                          |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java                             |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AddDeviceDialog.java                             |  134 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java                             |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java                     |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMALL_OCCUPY_LARGE.java                               |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SENSE_METHOD.java                                    |  274 
 iailab-module-data/iailab-module-data-biz/libs/win64/ImageAlg.dll                                                                           |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java          |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java                               |  302 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java                              |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java                           |   40 
 iailab-module-model/pom.xml                                                                                                                 |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_H264_PROFILE_RANK.java                                |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java                         |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java                              |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java                               |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java                          |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPDATE_INFO.java                                       |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java                           |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java                      |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java                           |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java                                 |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_HOMING.java                                       |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java                   |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HCNetSDK.java                            | 10608 ++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java                            |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENE_MODE.java                                   |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java                |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMOTION_TYPE.java                                     |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java                               |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java                         |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java              |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTINFO_CFG.java                                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java                       |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO.java               |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java                         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java                               |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java                         |   62 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuService.java                    |    2 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceControl.java                                            |  406 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DeviceManagerListener.java                                        |    5 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealplayEx.java                                               |  223 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java                              |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_DETECT_MODE.java                                 |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_EVENT.java                                    |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_COMM_INFO.java                             |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java                             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMBERS_INFO.java                                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java                             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java                             |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java              |   73 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java                            |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java                    |  123 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevNvrServiceImpl.java                      |  144 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java                              |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_INFO.java                                    |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_OPTIONS.java                                       |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java                                 |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java                   |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java                              |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java                             |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_TYPE.java                                       |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_TALK_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java                             |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_RADAR_INFO.java                                 |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_KEEP_LIGHTING.java                                     |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAlarmAttachInfoCallBack.java                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArr32.java                                       |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USERLOCK_INFO.java                                   |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java                    |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java                          |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java                         |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java                       |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java                            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java                             |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java                          |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFORM_STYLE.java                                    |   11 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CAR_INFO.java                                              |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java                          |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java               |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_IP_CONFLICT_INFO.java                                |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DEVLOCATION_INFO.java                                  |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java                             |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AC_CAPS.java                                       |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java                                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_WASH_INFO.java                                     |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_QUALITY.java                                    |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPLIT_OSD.java                                         |   88 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java                        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java                          |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java                    |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIEW_RANGE_STATE.java                               |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java                       |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/NewLatticeScreen.java                       | 1186 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java                      |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_DROP_DETECTION_INFO.java                     |   77 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByFingerPrintIdDialog.java                  |  209 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java                   |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java                       |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PIC_TYPE.java                                         |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java              |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java                            |   34 
 iailab-module-data/iailab-module-data-biz/libs/win64/jna.jar                                                                                |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByUserIdDialog.java                         |  281 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FIREWARNING_MODE_TYPE.java                        |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java                              |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HUMIDITY_ALARM_INFO.java                             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java                   |  120 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java            |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java                                   |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java                            |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java                                   |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_INFO.java                                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java                          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java                                   |  113 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_DAYNIGHT.java                              |   25 
 iailab-module-system/iailab-module-system-api/pom.xml                                                                                       |    5 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ICON.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BATTERY_INFO.java                                      |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java                          |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java                             |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java                         |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java                       |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCREEN_RULE.java                                 |   42 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPreview.so                                                |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java                          |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SET.java                                     |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java                     |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_LEVEL_INFO.java                                  |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java                        |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java                               |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java                               |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java                             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java                  |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_STATE_TYPE.java                                  |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java                             |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_NOTIFY_TYPE.java                                     |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java                               |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CALIBRATEINFO_INFO.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX2.java                                    |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java                     |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java                           |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSITIVITY.java                                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java                            |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java                           |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java                              |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_STATUS.java                                      |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxNameByteArrInfo.java                                    |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java                                |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MAKE_TOKEN.java                                     |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_TYPE.java                                        |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAL_DETECT.java                                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java                            |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE.java                                   |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java                        |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java                |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java                                |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java                     |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java                                |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVEING_CALLING.java                                  |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java                           |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java                  |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java                           |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_STATE_INFO.java                                      |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BOAT_DIRECTION.java                                   |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_OBJECT.java                                       |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java                            |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STATEMANAGER_V_INFO.java                               |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java                                |  109 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_LIST_INFO.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java                         |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_COLOR.java                              |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_DEVICE_INFO.java                                     |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_VEHICLE_INFO.java                                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java                           |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NetSDKLib.java                                                       | 38558 ++++++++++
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java              |  107 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java                               |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java                       |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java                      |   32 
 iailab-module-data/iailab-module-data-biz/libs/win64/dhconfigsdk.dll                                                                        |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java                            |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java                                 |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_VALUE.java                                     |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PlateNumber.java                                           |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java                    |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java                            |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java                   |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX1.java                                          |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETCAPS.java                                  |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java                         |   29 
 iailab-module-model/iailab-module-model-biz/pom.xml                                                                                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java                               |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java                            |   80 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX.java                                           |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java                                |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCENE_TYPE.java                                       |  191 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java                          |   91 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java                    |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java                |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO_EX.java                        |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java                             |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANCE_STATE.java                                 |   67 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hlog.dll                                                                     |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java                               |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java                             |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java             |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_VEHICLE_REG_DB_CONDITION.java               |   52 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java                        |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java                             |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java                        |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRING_GPS_INFO.java                                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java                          |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMALL_PIC_INFO.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOAnalyzerCallBack.java                                  |  128 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_TYPE_COMPLEX_DETAIL.java                         |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java                            |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java                     |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SIM_STATE.java                                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java                                 |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_TYPE.java                                      |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO.java          |  116 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java                               |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java                              |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUIDESCREEN_INFO.java                                  |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ZONE_ARMODE_INFO.java                           |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java                              |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java                             |   19 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioRender.dll                                                  |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java                            |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java                |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_SCENE.java                                         |  268 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOOT_ATTRIBUTE.java                                    |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ZONE_ARMODE_INFO.java                          |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java                            |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STORAGEPOINT_INFO.java                                 |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java                        |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevNvrService.java                               |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java                              |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java                       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java            |   30 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCAlarm.so                                                  |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_BAG_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ImageAlgLib.java                                                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java                 |  159 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java                      |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_STATE.java                                     |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java                      |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java              |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COUNT_DETAIL_INFO.java                                 |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java                          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java                        |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java               |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java                               |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java                  |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java                            |  150 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java                               |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERYNEXTLOG.java                                  |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_CHANNEL_INFO.java                               |  134 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java                        |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java                   |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceSearchModule.java                                      |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java                              |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraPageReqVO.java       |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java                      |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java                                   |   37 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/permission/MenuController.java        |   10 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java                              |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateManager.java                                       |  518 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/AddPersonDialog.java                        |  254 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java                      |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceInitModule.java                                        |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java                        |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPEED_LIMIT.java                                       |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevCameraDao.java                                    |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java                   |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java                               |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java                               |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java                               |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fRedirectServerCallBackEx.java                              |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java                       |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java                         |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_REMOTE_CHECK_INFO_EX.java                         |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CAMERASTATE.java                                    |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java                                  |   76 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java                       |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java                            |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIREPROOF_CLOTHES.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java                    |  158 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java                   |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_POINT_INFO.java                     |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM.java                  |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java                               |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/HeatMapDialog.java                              |  349 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java                            |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_VALUE_INFO.java                                  |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_STATE.java                                     |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java                               |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java                       |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java                                  |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java                        |   37 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/app/AppServiceImpl.java                        |    1 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java                        |   77 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_GET_RECT.java                                  |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GPS_STATUS_INFO.java                            |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java                        |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/HaveReConnect.java                                 |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java               |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AlarmListenModule.java                                       |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETCOUNT_LOG_PARAM.java                            |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java                |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java                        |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_CFG_INFO.java                                   |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA.java                                |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectUrl.java                                             |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java                   |  114 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHSavePath.java                                    |   73 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_INFO.java                                     |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_TF_INFO.java                               |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java                             |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java                     |   84 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SET.java                                    |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_INFO.java                                       |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE.java                         |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java                             |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultDisConnect.java                                    |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUR_STEP_INFO.java                                         |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_CUT_INFO.java                                     |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_EX_INFO.java                      |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java                          |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/Attendance.java                                    |  166 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java                                   |  239 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_ACCURATE.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java                     |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java                       |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_STATE.java                                     |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java                        |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java                              |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_STATE_V1.java                               |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/CollectionFingerPrint.java                                |  425 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POSTION.java                                               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_ORDER.java                                      |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARMIN_INFO.java                                      |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/FunctionList.java                                                 |  366 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java                     |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java           |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java                 |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java                        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEST_ITEMS.java                                       |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java                |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CALIBRATEINFO_INFO.java                        |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTINFOS.java                                            |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java                             |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACTION.java                                           |   81 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java                             |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java                 |   89 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java                            |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java           |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java                            |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java                               |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java               |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java                         |  159 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ABNORMALRUNDETECTION_INFO.java                   |  129 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java                              |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java                     |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java           |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java                          |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_SCADA_DATA_INFO.java                                   |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/DeviceConfigDialog.java                          |  341 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RAID_INFO_EX.java                                    |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java                               |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java            |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/GroupOperateDialog.java                     |  334 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java                        |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java                               |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java                       |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java         |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java                     |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java                             |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java                                  |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LIGHTING_MODE.java                                |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java                        |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java                             |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_USER.java                                     |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java                     |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java           |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButtonEx.java                                         |  587 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java          |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java                                |   86 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java                                |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java                               |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java                          |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java                             |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java                      |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATUS.java                                           |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_OUTPUT_STATE.java                              |   45 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java                                |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java                                |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java                             |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java                   |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java                               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BIND_MODE_INFO.java                             |   28 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libSystemTransform.so                                          |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java                               |  122 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RECT.java                                                  |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java                               |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_FUNCTION.java                                     |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java                           |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETAIL_INFO.java                                       |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java                       |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java                               |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java                      |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java                              |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_METHOD.java                                   |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java                      |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java                          |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java                              |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java                    |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_LAMP_INFO.java                                         |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_SEQUENCE_INFO.java                                    |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_INFO.java                                            |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_SIZE.java                                      |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java                              |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java                              |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_MOTION_STATUS.java                                  |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java                              |   85 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HOLD_BABY_INFO.java                              |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_HUMAN_INFO.java                              |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/WindowCloseListener.java                                          |    5 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java                              |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_BETWEENRULE_DIFFTEMPER_INFO.java                     |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ALARMMODE.java                                  |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java                             |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java                     |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/CaseMenu.java                                                     |   93 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java                               |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java            |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROJECT_TASK.java                                      |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_UPDATE_INFO.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java                                 |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_IMAGE_INFO.java                                   |   48 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ENTER_INFO_V1.java                               |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java               |   86 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java                            |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java                      |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SERVER_OPTION.java                                    |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java                  |   73 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java                                |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_RECT_REGION.java                                        |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_INFO.java                            |   23 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libNPQos.so                                                                |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java                                 |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java                        |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java       |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java                                |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java                               |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_MASKING_CAPS.java                                |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java                          |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VaccinateDateByteArr.java                                  |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java                                |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_TYPE.java                                     |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_DEFOG_MODE.java                                      |   72 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BYPASSMODE.java                                 |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_INSERT_MULTI_TALK_DEV.java                         |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java                    |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VKINFO.java                                            |   46 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABSTRACT_STATE.java                                   |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java                             |  116 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LIGHT_COLOR_INFO.java                                      |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ItemQueryDialog.java                            |  301 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_RECORD.java                                        |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java                             |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ZONE_ARMODE_INFO.java                           |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java                         |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java                      |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO.java                   |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java                |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java                                |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/PersonOperateDialog.java                    |  856 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java          |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_OBJECT.java                                     |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_OLD_LOG.java                                       |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_COLOR_INFO.java                             |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevImageServiceImpl.java                    |  134 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java                             |   24 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCIndustry.so                                               |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/DevCameraController.java         |   86 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java                 |   15 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java                           |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BAG_TYPE.java                                         |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevLogService.java                               |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA.java             |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java                              |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java                   |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java                               |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_VTO_MANAGER_RELATION.java                      |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java                          |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java                      |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java                               |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java                           |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java                      |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLISION_MODE.java                                   |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/USER_TIME_SECTION.java                                     |   13 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java                              |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java                           |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_TYPE_INFO.java                          |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java                               |   20 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libStreamTransClient.so                                        |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java                             |  432 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java                               |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java                                |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STRABISMUS_TYPE.java                                  |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java                         |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java                                |  134 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BIND_MODE_INFO.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java                                 |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DISKCTRL_PARAM.java                                        |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DEFENCEAREATYPE.java                              |  108 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java                 |   40 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ISCSI_TARGET.java                                      |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java                            |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java                         |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AIRBORNE_DETECT.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java                  |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKACTION_STATE.java                                 |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java                            |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java                                |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO.java             |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java                 |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_NAME.java                                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java                   |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java                               |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java                       |   38 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCGeneralCfgMgr.so                                          |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java                             |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java                              |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FACE_CAPS.java                                  |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_LASER_DISTANCE.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_DETAIL.java                                    |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RUNMODE_PARAMS.java                                    |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_HUMAN_INFO.java                      |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMOKE_COLOR.java                                      |   58 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_MODE_INFO.java                                   |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_TYPE_INFO.java                                 |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java                   |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLASS_TYPE.java                                       |  387 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java               |   79 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/TALK_CODING_TYPE.java                                    |   69 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEAKAGE_DETECT.java                                    |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java                           |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java                      |   91 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_SET_ZOOM_VALUE.java                             |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java                              |   92 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java                           |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java                             |   27 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_USER_TYPE.java                                 |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java            |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/CapturePicture.java                                           |  475 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_INFO.java                                    |   49 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java                       |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java  |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOMessageCallBack.java                                   |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java                             |   54 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java           |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_VOLUME_TYPE.java                                     |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USER_LOCK_EVENT_INFO.java                            |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java                 |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_HUMAN_OBJECT.java                          |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java                               |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPDATE_MULTI_TALK_DEV.java                         |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO_ARRAY.java                                 |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java                |  139 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Res.java                                                          | 2882 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java                               |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_DOORSTATE.java                                  |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_CFG_INFO.java                                  |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java                       |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ECK_PANEL_CONTENT.java                                 |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLASSES_RELATED_INFO.java                              |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java                      |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java                             |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java                            |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java                               |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL_EX.java                                  |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java                  |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java                         |  108 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java                       |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java                                  |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java                  |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEST_RESULT.java                                       |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONTROL_MODE.java                                     |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java         |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java        |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java            |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_TOP_WINDOW.java                           |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java                       |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_OCCUPY_RATIO_MULTI.java                          |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevLogDTO.java                                       |   44 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO.java          |   98 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java                          |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java                            |   16 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java                       |   60 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java               |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java                   |   28 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.dll                                                      |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_HAT_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DispositionOperateDialog.java               |  350 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java                        |   53 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java                           |  112 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevNvrDao.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_GET_RECT.java                                 |   21 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java                            |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java                             |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_GUARD_INFO.java                                  |   27 
 iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/StreamTransClient.dll                                            |    0 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_EVENT.java                                         |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATION_MODE.java                                   |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_STATUS.java                                        |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java                         |   25 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BADGE.java                                        |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/UnzipUtils.java                          |  103 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEATMAP_TYPE.java                                     |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java                                |   64 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java                              |   43 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java             |   95 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java                        |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java                            |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java                          |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java             |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LANE_RUNING_STATE.java                                |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_APN.java                                          |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java                                 |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java          |   17 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLAN_INFO.java                                    |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_64.java                                               |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POSTION.java                                           |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ErrorCode.java                                                    |  872 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java                                |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java                               |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_MEMBER_INFO.java                                  |   18 
 iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/auth/AuthController.java              |    8 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java                                 |   62 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java                             |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java                   |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java                     |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_INFO_EX.java                             |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java                      |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_TYPE.java                                        |    7 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java                       |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_VOICE_ID.java                                     |   70 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java                             |   75 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java                            |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_BRAND_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java                          |  159 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java                                   |  166 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java                            |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java                                |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java                             |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION.java                                        |   91 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SwitchLanguage.java                                               |  105 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ToolKits.java                                                        |  591 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_ACTION.java                                  |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java                           |   50 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java             |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_TALK_INFO.java                               |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java                             |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java                       |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java                              |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_DETECTION_JUDGE_REMOTELY.java                    |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java                     |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_INFO.java                                  |   35 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java                               |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_TRAFFIC_INFO.java                                    |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java                   |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java                            |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java                      |   66 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_COLOR_INFO.java                                |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevCameraEntity.java                              |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO.java                |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java                     |   73 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java                              |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java          |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java                           |   41 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERROR.java                                       |   42 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java                       |  134 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java                             |   68 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CameraStatusEnum.java                              |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHAPE_TYPE.java                                       |   65 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java                              |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEV_TIME.java                                          |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REAL_DATA_TYPE.java                                   |   61 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java                           |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java                     |   94 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java                           |  120 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java                        |   83 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java                           |   74 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java                     |   20 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java                        |   39 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_TYPE_INFO.java                              |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java                            |   87 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java                            |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ISBOLD.java                             |   63 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java                               |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java                            |   18 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java                                  |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_TYPE.java                                     |   59 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java                                |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java                                 |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_BATTERY_INFO.java                                |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD.java                                       |   57 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java                 |   78 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java                           |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NTP_STATUS.java                                       |   30 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_LAMP_EXTERNAL_DEVICE_INFO.java                     |   96 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_INFO.java                                  |   34 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java                              |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevImageDao.java                                     |   14 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java                           |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java                      |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java                         |   31 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGRECORD_INFO.java                                |   28 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO.java         |   99 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java                      |   90 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHClientFactory.java                               |  106 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA.java              |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java                                  |   19 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSREGION_INFO.java                                  |  173 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java                           |   32 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java                    |   55 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java                      |   51 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_AUTHMODE.java                                     |   56 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java                        |   82 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java                             |   24 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java                         |   37 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_COURSE.java                                  |   36 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java                           |   29 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/IDENTITY_INFO.java                                         |   22 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java                        |   71 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java                            |  112 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO.java                 |  100 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOENC_OPT.java                                      |  125 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java                |   33 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_DOWNBODY.java                                     |   26 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java         |   47 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_METAL_CORROSION.java                                   |   23 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAN_START_STREAM.java                                 |   67 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BSCCUSTOM.java                                     |   38 
 iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java                                 |   22 
 2,711 files changed, 215,341 insertions(+), 41 deletions(-)

diff --git a/iailab-cloud/iailab-gateway/src/main/resources/application.yaml b/iailab-cloud/iailab-gateway/src/main/resources/application.yaml
index f158874..6428717 100644
--- a/iailab-cloud/iailab-gateway/src/main/resources/application.yaml
+++ b/iailab-cloud/iailab-gateway/src/main/resources/application.yaml
@@ -115,11 +115,21 @@
             - Path=/admin-api/model/**
           filters:
             - RewritePath=/admin-api/model/v3/api-docs, /v3/api-docs
+        ## shasteel 服务
+        - id: shasteel-admin-api # 路由的编号
+          uri: grayLb://shasteel-server
+          predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
+            - Path=/admin-api/shasteel/**
+          filters:
+            - RewritePath=/admin-api/shasteel/v3/api-docs, /v3/api-docs
       x-forwarded:
         prefix-enabled: true # 避免 Swagger 重复带上额外的 /admin-api/system 前缀
 
 server:
   port: 48080
+  servlet:
+    session:
+      timeout: 120s
 
 logging:
   file:
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libAudioIntercom.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libAudioIntercom.so
new file mode 100644
index 0000000..49685d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libAudioIntercom.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCAlarm.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCAlarm.so
new file mode 100644
index 0000000..a54dee3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCAlarm.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCCoreDevCfg.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCCoreDevCfg.so
new file mode 100644
index 0000000..5ada40f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCCoreDevCfg.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCDisplay.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCDisplay.so
new file mode 100644
index 0000000..9871c9e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCDisplay.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCGeneralCfgMgr.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCGeneralCfgMgr.so
new file mode 100644
index 0000000..7666233
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCGeneralCfgMgr.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCIndustry.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCIndustry.so
new file mode 100644
index 0000000..4b11107
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCIndustry.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPlayBack.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPlayBack.so
new file mode 100644
index 0000000..6137552
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPlayBack.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPreview.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPreview.so
new file mode 100644
index 0000000..035cd3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCPreview.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCVoiceTalk.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCVoiceTalk.so
new file mode 100644
index 0000000..6a2ab90
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libHCVoiceTalk.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libStreamTransClient.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libStreamTransClient.so
new file mode 100644
index 0000000..6b16337
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libStreamTransClient.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libSystemTransform.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libSystemTransform.so
new file mode 100644
index 0000000..086c631
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libSystemTransform.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libanalyzedata.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libanalyzedata.so
new file mode 100644
index 0000000..fa416e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libanalyzedata.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libiconv2.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libiconv2.so
new file mode 100644
index 0000000..d17b0a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDKCom/libiconv2.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDK_Log_Switch.xml b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDK_Log_Switch.xml
new file mode 100644
index 0000000..8b7e236
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/HCNetSDK_Log_Switch.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="GB2312"?>
+<SdkLocal>
+	<SdkLog>
+        <logLevel>3</logLevel><!--req, 1-ERROR, 2-DEBUG, 3-INFO-->
+        <logDirectory>./SDKLOG/</logDirectory><!--the end of the string must be '/'-->
+        <autoDelete>true</autoDelete><!--true: There are less than 10 files in the directory, it will be auto deleted by sdk when the files are more than 10; false: No upper limit to the number of log files-->
+    </SdkLog>
+	<HeartbeatCfg>
+		<Interval>120</Interval> <!-- ����ʱ��������λ�룬����0��ʹ��Ĭ��ֵ120s��ȡֵ��ΧΪ[30, 120] С��30s�����Ϊ30s������120s�����Ϊ120s-->
+		<Count>1</Count> 	<!-- �����쳣�ص���Ҫ���������쳣�Ĵ���������0��ʹ��Ĭ��ֵ1��-->
+	</HeartbeatCfg>
+</SdkLocal>
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libAudioRender.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libAudioRender.so
new file mode 100644
index 0000000..f39a4a1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libAudioRender.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libHCCore.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libHCCore.so
new file mode 100644
index 0000000..7846902
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libHCCore.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libNPQos.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libNPQos.so
new file mode 100644
index 0000000..4972715
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libNPQos.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libPlayCtrl.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libPlayCtrl.so
new file mode 100644
index 0000000..e255c22
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libPlayCtrl.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libSuperRender.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libSuperRender.so
new file mode 100644
index 0000000..3f36846
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libSuperRender.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libcrypto.so.1.1 b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libcrypto.so.1.1
new file mode 100644
index 0000000..88c3746
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libcrypto.so.1.1
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhcnetsdk.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhcnetsdk.so
new file mode 100644
index 0000000..2607cee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhcnetsdk.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhpr.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhpr.so
new file mode 100644
index 0000000..8efcabb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libhpr.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libopenal.so.1 b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libopenal.so.1
new file mode 100644
index 0000000..a9dcb82
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libopenal.so.1
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libssl.so.1.1 b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libssl.so.1.1
new file mode 100644
index 0000000..f3e4481
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libssl.so.1.1
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libz.so b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libz.so
new file mode 100644
index 0000000..13b4ed9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/linux64/libz.so
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCCore.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCCore.dll
new file mode 100644
index 0000000..48f8411
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCCore.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDK.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDK.dll
new file mode 100644
index 0000000..2ed412e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDK.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AnalyzeData.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AnalyzeData.dll
new file mode 100644
index 0000000..2317b39
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AnalyzeData.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioIntercom.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioIntercom.dll
new file mode 100644
index 0000000..071a5e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioIntercom.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioRender.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioRender.dll
new file mode 100644
index 0000000..4935684
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/AudioRender.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.dll
new file mode 100644
index 0000000..bdb8406
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.lib b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.lib
new file mode 100644
index 0000000..0aa0d4c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCAlarm.lib
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCCoreDevCfg.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCCoreDevCfg.dll
new file mode 100644
index 0000000..7cd924e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCCoreDevCfg.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCDisplay.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCDisplay.dll
new file mode 100644
index 0000000..f0a2b7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCDisplay.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.dll
new file mode 100644
index 0000000..3719694
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.lib b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.lib
new file mode 100644
index 0000000..7091c25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCGeneralCfgMgr.lib
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCIndustry.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCIndustry.dll
new file mode 100644
index 0000000..9af77a1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCIndustry.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPlayBack.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPlayBack.dll
new file mode 100644
index 0000000..8d8e8a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPlayBack.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.dll
new file mode 100644
index 0000000..005656d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.lib b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.lib
new file mode 100644
index 0000000..18d4d63
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCPreview.lib
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCVoiceTalk.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCVoiceTalk.dll
new file mode 100644
index 0000000..eb04a1e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/HCVoiceTalk.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/OpenAL32.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/OpenAL32.dll
new file mode 100644
index 0000000..4b35df4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/OpenAL32.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/StreamTransClient.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/StreamTransClient.dll
new file mode 100644
index 0000000..a69e9bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/StreamTransClient.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/SystemTransform.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/SystemTransform.dll
new file mode 100644
index 0000000..f704e49
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/SystemTransform.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/libiconv2.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/libiconv2.dll
new file mode 100644
index 0000000..978e2fa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/HCNetSDKCom/libiconv2.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hlog.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hlog.dll
new file mode 100644
index 0000000..fe2298a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hlog.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hpr.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hpr.dll
new file mode 100644
index 0000000..eef0d55
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/hpr.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libcrypto-1_1-x64.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libcrypto-1_1-x64.dll
new file mode 100644
index 0000000..6731338
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libcrypto-1_1-x64.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libssl-1_1-x64.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libssl-1_1-x64.dll
new file mode 100644
index 0000000..ac5e8fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/libssl-1_1-x64.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/zlib1.dll b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/zlib1.dll
new file mode 100644
index 0000000..9c37a84
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/hikvision/win64/zlib1.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/ImageAlg.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/ImageAlg.dll
new file mode 100644
index 0000000..06c5c75
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/ImageAlg.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/Infra.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/Infra.dll
new file mode 100644
index 0000000..19524ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/Infra.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/IvsDrawer.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/IvsDrawer.dll
new file mode 100644
index 0000000..b339dc9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/IvsDrawer.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/RenderEngine.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/RenderEngine.dll
new file mode 100644
index 0000000..0f4742f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/RenderEngine.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/StreamConvertor.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/StreamConvertor.dll
new file mode 100644
index 0000000..ad69638
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/StreamConvertor.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/avnetsdk.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/avnetsdk.dll
new file mode 100644
index 0000000..dee0180
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/avnetsdk.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/dhconfigsdk.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/dhconfigsdk.dll
new file mode 100644
index 0000000..4a25011
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/dhconfigsdk.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/dhnetsdk.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/dhnetsdk.dll
new file mode 100644
index 0000000..f534c67
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/dhnetsdk.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/dhplay.dll b/iailab-module-data/iailab-module-data-biz/libs/win64/dhplay.dll
new file mode 100644
index 0000000..921564e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/dhplay.dll
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/libs/win64/jna.jar b/iailab-module-data/iailab-module-data-biz/libs/win64/jna.jar
new file mode 100644
index 0000000..af5dd08
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/libs/win64/jna.jar
Binary files differ
diff --git a/iailab-module-data/iailab-module-data-biz/pom.xml b/iailab-module-data/iailab-module-data-biz/pom.xml
index 9f95a2d..d44daff 100644
--- a/iailab-module-data/iailab-module-data-biz/pom.xml
+++ b/iailab-module-data/iailab-module-data-biz/pom.xml
@@ -81,10 +81,6 @@
             <groupId>com.iailab</groupId>
             <artifactId>iailab-common-monitor</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.iailab</groupId>
-            <artifactId>iailab-common-biz-data-permission</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>com.auth0</groupId>
@@ -139,6 +135,12 @@
             <groupId>org.openscada.jinterop</groupId>
             <artifactId>org.openscada.jinterop.core</artifactId>
             <version>2.1.8</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.bouncycastle</groupId>
+                    <artifactId>bcprov-jdk15on</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.openscada.jinterop</groupId>
@@ -155,16 +157,28 @@
             <groupId>org.openscada.utgard</groupId>
             <artifactId>org.openscada.opc.dcom</artifactId>
             <version>1.5.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.bouncycastle</groupId>
+                    <artifactId>bcprov-jdk15on</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.openscada.utgard</groupId>
             <artifactId>org.openscada.opc.lib</artifactId>
             <version>1.5.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.bouncycastle</groupId>
+                    <artifactId>bcprov-jdk15on</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcprov-jdk15on</artifactId>
-            <version>1.61</version>
+            <version>1.70</version>
         </dependency>
 
         <!-- ModBus TCP -->
@@ -198,6 +212,23 @@
             <version>6.8.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.4.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.hikvision</groupId>
+            <artifactId>examples</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.hikvision</groupId>
+            <artifactId>jna</artifactId>
+            <version>1.0</version>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/utils/HttpRequest.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/utils/HttpRequest.java
index e3816d5..3588186 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/utils/HttpRequest.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/common/utils/HttpRequest.java
@@ -1,5 +1,10 @@
 package com.iailab.module.data.common.utils;
 
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
 import org.springframework.util.CollectionUtils;
 
 import java.io.BufferedReader;
@@ -232,4 +237,40 @@
         }
         return result;
     }
+
+    /**
+     *
+     * @param url
+     * @param json
+     * @param charset
+     * @param token
+     * @return
+     */
+    public static String doPost(String url, String json, String charset, String token) {
+        org.apache.http.client.HttpClient httpClient = null;
+        HttpPost httpPost = null;
+        String result = null;
+        try {
+            httpClient = new SSLClient();
+            httpPost = new HttpPost(url);
+            //设置参数
+            httpPost.addHeader("Accept", "application/json");
+            httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
+            httpPost.addHeader("token", token);
+            StringEntity stringEntity = new StringEntity(json);
+            stringEntity.setContentEncoding("UTF-8");
+            stringEntity.setContentType("application/json");
+            httpPost.setEntity(stringEntity);
+            HttpResponse response = httpClient.execute(httpPost);
+            if (response != null) {
+                HttpEntity resEntity = response.getEntity();
+                if (resEntity != null) {
+                    result = EntityUtils.toString(resEntity, charset);
+                }
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return result;
+    }
 }
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/DevCameraController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/DevCameraController.java
new file mode 100644
index 0000000..9a0daf7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/DevCameraController.java
@@ -0,0 +1,86 @@
+package com.iailab.module.data.dev.controller.admin.camera;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.module.data.dev.controller.admin.camera.vo.DevCameraPageReqVO;
+import com.iailab.module.data.dev.dto.DevCameraDTO;
+import com.iailab.module.data.dev.service.DevCameraService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+import static com.iailab.framework.common.pojo.CommonResult.error;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@RestController
+@RequestMapping("/data/dev/camera")
+@Tag(name = "摄像头管理")
+public class DevCameraController {
+
+    @Autowired
+    private DevCameraService devCameraService;
+
+    @GetMapping("page")
+    @Operation(summary = "分页")
+    public CommonResult<PageResult<DevCameraDTO>> page(@Valid DevCameraPageReqVO cameraPageReqVO) {
+        return success(devCameraService.getPage(cameraPageReqVO));
+    }
+
+    @GetMapping("list")
+    public CommonResult<List<DevCameraDTO>> list(@Valid DevCameraPageReqVO cameraPageReqVO) {
+        List<DevCameraDTO> list = devCameraService.list(cameraPageReqVO);
+        return success(list);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<DevCameraDTO> get(@RequestParam("id") String id) {
+        DevCameraDTO data = devCameraService.get(id);
+        return success(data);
+    }
+
+    @PostMapping("/create")
+    @Operation(summary = "保存")
+    public CommonResult save(@RequestBody DevCameraDTO dto) {
+        if (devCameraService.cheack(dto) > 0) {
+            return error(405,"内容重复!");
+        }
+        devCameraService.save(dto);
+        return success();
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "修改")
+    public CommonResult update(@RequestBody DevCameraDTO dto) {
+        if (devCameraService.cheack(dto) > 0) {
+            return error(405,"内容重复!");
+        }
+        devCameraService.update(dto);
+        return success();
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除")
+    public CommonResult delete(@RequestBody String[] ids) {
+        devCameraService.delete(ids);
+        return success();
+    }
+
+    @PostMapping("/getLocation")
+    @Operation(summary = "获取摄像头监控区域")
+    public CommonResult<List<String>> getLocation() {
+        List<String> locations = devCameraService.getLocation();
+        return success(locations);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraPageReqVO.java
new file mode 100644
index 0000000..6d06526
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraPageReqVO.java
@@ -0,0 +1,27 @@
+package com.iailab.module.data.dev.controller.admin.camera.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月17日
+ */
+@Schema(description = "硬盘录像机 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DevCameraPageReqVO extends PageParam {
+
+    /**
+     * 录像机ID
+     */
+    private String nvrId;
+
+    private String location;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraSaveReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraSaveReqVO.java
new file mode 100644
index 0000000..3731645
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/camera/vo/DevCameraSaveReqVO.java
@@ -0,0 +1,125 @@
+package com.iailab.module.data.dev.controller.admin.camera.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月17日
+ */
+@Schema(description = "硬盘录像机 Request VO")
+@Data
+public class DevCameraSaveReqVO {
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 编码
+     */
+    private Integer code;
+
+    /**
+     * 厂部
+     */
+    private String factory;
+
+    /**
+     * 单元
+     */
+    private String unit;
+
+    /**
+     * 品牌
+     */
+    private String brand;
+
+    /**
+     * 监控点位
+     */
+    private String point;
+
+    /**
+     * 监控区域
+     */
+    private String location;
+
+    /**
+     * 录像机ID
+     */
+    private String nvrId;
+
+    /**
+     * IP
+     */
+    private String ip;
+
+    /**
+     * 端口
+     */
+    private String port;
+
+    /**
+     * 通道
+     */
+    private Integer channel;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 抓图方式
+     */
+    private String captureType;
+
+    /**
+     * 创建者
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+
+    /**
+     * 更新者
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateDate;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/DevNvrController.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/DevNvrController.java
new file mode 100644
index 0000000..bff8317
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/DevNvrController.java
@@ -0,0 +1,77 @@
+package com.iailab.module.data.dev.controller.admin.nvr;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrPageReqVO;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrSaveReqVO;
+import com.iailab.module.data.dev.dto.DevNvrDTO;
+import com.iailab.module.data.dev.service.DevNvrService;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import java.util.UUID;
+
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月07日
+ */
+@RestController
+@RequestMapping("/data/dev/nvr")
+@Tag(name = "硬盘录像机")
+public class DevNvrController {
+
+    @Autowired
+    private DevNvrService devCameraService;
+
+    @GetMapping("page")
+    @Operation(summary = "分页")
+    @PreAuthorize("@ss.hasPermission('dev:nvr:query')")
+    public CommonResult<PageResult<DevNvrDTO>> page(@Valid DevNvrPageReqVO pageReqVO) {
+        PageResult<DevNvrDTO> pageResult = devCameraService.getPage(pageReqVO);
+        return success(pageResult);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "信息")
+    @PreAuthorize("@ss.hasPermission('dev:nvr:query')")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<DevNvrDTO> get(@RequestParam("id") String id) {
+        DevNvrDTO data = devCameraService.get(id);
+        return success(data);
+    }
+
+    @PostMapping("/create")
+    @Operation(summary = "保存")
+    @PreAuthorize("@ss.hasPermission('dev:nvr:save')")
+    public CommonResult<String> save(@RequestBody DevNvrSaveReqVO saveReqVO) {
+        String id = UUID.randomUUID().toString();
+        saveReqVO.setId(id);
+        return success(devCameraService.save(saveReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "修改")
+    @PreAuthorize("@ss.hasPermission('dev:nvr:update')")
+    public CommonResult<String> update(@RequestBody DevNvrSaveReqVO saveReqVO) {
+        return success(devCameraService.update(saveReqVO));
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除")
+    @PreAuthorize("@ss.hasPermission('dev:nvr:delete')")
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        devCameraService.delete(id);
+        return success(true);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrPageReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrPageReqVO.java
new file mode 100644
index 0000000..9ee4904
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrPageReqVO.java
@@ -0,0 +1,29 @@
+package com.iailab.module.data.dev.controller.admin.nvr.vo;
+
+import com.iailab.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月17日
+ */
+@Schema(description = "硬盘录像机 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DevNvrPageReqVO extends PageParam {
+
+    private String brand;
+
+    private String ip;
+
+    private String code;
+
+    private String name;
+
+    private String device;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrSaveReqVO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrSaveReqVO.java
new file mode 100644
index 0000000..68a1eaa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/controller/admin/nvr/vo/DevNvrSaveReqVO.java
@@ -0,0 +1,100 @@
+package com.iailab.module.data.dev.controller.admin.nvr.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年08月17日
+ */
+@Schema(description = "硬盘录像机 Request VO")
+@Data
+public class DevNvrSaveReqVO {
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 品牌
+     */
+    private String brand;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * IP
+     */
+    private String ip;
+
+    /**
+     * 端口
+     */
+    private Integer port;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 设备类型
+     */
+    private String device;
+
+    /**
+     * 位置
+     */
+    private String position;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+
+    /**
+     * 更新者
+     */
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCapturePictureClient.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCapturePictureClient.java
new file mode 100644
index 0000000..f938535
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCapturePictureClient.java
@@ -0,0 +1,314 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.alibaba.fastjson.JSON;
+import com.iailab.module.data.common.utils.HttpRequest;
+import com.iailab.module.data.dev.dahua.frame.DHCapturePictureFrame;
+import com.iailab.module.data.dev.task.CameraHeartTask;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.RealPlayModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.sun.jna.CallbackThreadInitializer;
+import com.sun.jna.Native;
+import com.sun.jna.ptr.IntByReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.awt.*;
+import java.io.File;
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年04月08日
+ */
+public class DHCapturePictureClient {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    // 登陆句柄
+    public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
+
+    // 设备信息
+    public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
+
+    private static boolean bInit = false;
+
+    private static boolean bLogopen = false;
+
+    private boolean bLogin = false;
+
+    private boolean bRealPlay = false;
+
+    private Panel realPlayWindow = new Panel();
+
+    private String ip;
+
+    private Vector<String> chnlist = new Vector<String>();
+
+    private DisConnect disConnect = new DisConnect();
+
+    private HaveReConnect haveReConnect = new HaveReConnect();
+
+    private DHCaptureReceiveCB m_CaptureReceiveCB = new DHCaptureReceiveCB();
+
+    public static boolean isInit () {
+        return bInit;
+    }
+
+    public boolean isLogin () {
+        return bLogin;
+    }
+
+    public String getIp () {
+        return ip;
+    }
+
+    public Vector<String> getChnList() {
+       return  chnlist;
+    }
+
+    // 登陆句柄
+    public NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);
+
+    // realplay handle
+    public NetSDKLib.LLong m_hPlayHandle = new NetSDKLib.LLong(0);
+
+    private DHCapturePictureFrame cpf;
+
+    DHCapturePictureClient() {
+        cpf = new DHCapturePictureFrame(realPlayWindow);
+        cpf.setVisible(true);
+    }
+
+    /**
+     * 初始化SDK
+     *
+     * @return
+     */
+    public boolean initSDK() {
+
+        bInit = netsdk.CLIENT_Init(disConnect, null);
+        if(!bInit) {
+            System.out.println("Initialize SDK failed");
+            return false;
+        }
+
+        //打开日志,可选
+        NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
+        File path = new File("./sdklog/");
+        if (!path.exists()) {
+            path.mkdir();
+        }
+        String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log";
+        setLog.nPrintStrategy = 0;
+        setLog.bSetFilePath = 1;
+        System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
+        System.out.println(logPath);
+        setLog.bSetPrintStrategy = 1;
+        bLogopen = netsdk.CLIENT_LogOpen(setLog);
+        if(!bLogopen ) {
+            System.err.println("Failed to open NetSDK log");
+        }
+
+        // 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作
+        // 此操作为可选操作,但建议用户进行设置
+        netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
+
+        //设置登录超时时间和尝试次数,可选
+        int waitTime = 5000; //登录请求响应超时时间设置为5S
+        int tryTimes = 1;    //登录时尝试建立链接1次
+        netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
+
+
+        // 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime
+        // 接口设置的登录设备超时时间和尝试次数意义相同,可选
+        NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
+        netParam.nConnectTime = 10000;      // 登录时尝试建立链接的超时时间
+        netParam.nGetConnInfoTime = 3000;   // 设置子连接的超时时间
+        netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间,为0默认1000ms
+        netsdk.CLIENT_SetNetworkParam(netParam);
+        if (!bInit) {
+            logger.info("Initialize SDK Failed");
+        } else {
+            logger.info("Initialize SDK Success");
+        }
+        return bInit;
+    }
+
+    /**
+     * \if ENGLISH_LANG
+     * CleanUp
+     * \else
+     * 清除环境
+     * \endif
+     */
+    public static void cleanup() {
+        if(bLogopen) {
+            netsdk.CLIENT_LogClose();
+        }
+
+        if(bInit) {
+            netsdk.CLIENT_Cleanup();
+        }
+    }
+
+    /**
+     * 登录设备
+     *
+     * @param ip
+     * @param port
+     * @param username
+     * @param password
+     */
+    public boolean login(String ip, int port, String username, String password) {
+        this.ip = ip;
+        if (!bInit) {
+            return false;
+        }
+        Native.setCallbackThreadInitializer(m_CaptureReceiveCB,
+                new CallbackThreadInitializer(false, false, "snapPicture callback thread"));
+
+        //IntByReference nError = new IntByReference(0);
+        //入参
+        NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam=new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
+        pstInParam.nPort=port;
+        pstInParam.szIP=ip.getBytes();
+        pstInParam.szPassword=password.getBytes();
+        pstInParam.szUserName=username.getBytes();
+        //出参
+        NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
+        pstOutParam.stuDeviceInfo=m_stDeviceInfo;
+        //m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError);
+        m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
+        boolean ret = m_hLoginHandle.longValue() == 0? false:true;
+
+        if (ret) {
+            bLogin = true;
+            for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+                chnlist.add(Res.string().getChannel() + " " + i);
+            }
+            NetSDKLib.NETSDK_INSTANCE.CLIENT_SetSnapRevCallBack(m_CaptureReceiveCB, null);
+        } else {
+            bLogin = false;
+        };
+        return bLogin;
+    }
+
+    /**
+     * 登出设备
+     */
+    public void logout() {
+        if(m_hLoginHandle.longValue() == 0) {
+            return;
+        }
+        RealPlayModule.stopRealPlay(m_hPlayHandle);
+        boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
+        if(bRet) {
+            m_hLoginHandle.setValue(0);
+        }
+        for (int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+            chnlist.clear();
+        }
+        bInit = false;
+    }
+
+    /**
+     * 远程抓图
+     *
+     * @param channel
+     * @param serial
+     * @return
+     */
+    public boolean remoteCapturePicture(int channel, int serial) {
+        if (!bLogin) {
+            logger.info("not login!");
+            return false;
+        }
+        // send caputre picture command to device
+        NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS();
+        stuSnapParams.Channel = channel;  			// channel
+        stuSnapParams.mode = 0;    			        // capture picture mode
+        stuSnapParams.Quality = 3;				    // picture quality
+        stuSnapParams.InterSnap = 0; 	            // timer capture picture time interval
+        stuSnapParams.CmdSerial = serial;  	        // request serial
+        IntByReference reserved = new IntByReference(0);
+        return NetSDKLib.NETSDK_INSTANCE.CLIENT_SnapPictureEx(this.m_hLoginHandle, stuSnapParams, reserved);
+    }
+
+    /**
+     * 开始预览
+     *
+     * @param channel
+     * @param stream
+     * @param realPlayWindow
+     * @return
+     */
+    public void startRealPlay(int channel, int stream, Panel realPlayWindow) {
+        this.m_hPlayHandle = netsdk.CLIENT_RealPlayEx(this.m_hLoginHandle, channel, Native.getComponentPointer(realPlayWindow), stream);
+
+        if(m_hPlayHandle.longValue() == 0) {
+            System.err.println("开始实时预览失败,错误码" + ToolKits.getErrorCodePrint());
+        } else {
+            System.out.println("Success to start realplay");
+        }
+        bRealPlay = true;
+    }
+
+    /**
+     * 停止预览
+     */
+    public void stopRealPlay() {
+        if(m_hPlayHandle.longValue() == 0) {
+            return;
+        }
+
+        boolean bRet = netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle);
+        if(bRet) {
+            m_hPlayHandle.setValue(0);
+        }
+
+        realPlayWindow.repaint();
+        bRealPlay = false;
+    }
+
+    /**
+     * 本地抓图
+     *
+     * @param channel
+     * @param cmdSerial
+     * @return
+     */
+    public synchronized boolean localCapturePicture(int channel, int cmdSerial) {
+        System.out.println("localCapturePicture:");
+        try {
+            this.startRealPlay(channel, 0, realPlayWindow);
+            if(!bRealPlay) {
+                return false;
+            }
+            Thread.sleep(2000);
+            Calendar calendar = Calendar.getInstance();
+            String strFileName = DHSavePath.getSavePath().getSaveCapturePath(String.valueOf(cmdSerial), calendar.getTime());
+            if (!netsdk.CLIENT_CapturePictureEx(this.m_hPlayHandle, strFileName, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) {
+                System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint());
+                return false;
+            } else {
+                System.out.println("CLIENT_CapturePicture success");
+                // 开始识别
+                Map<String, String> params = new HashMap<>();
+                params.put("strFileName", strFileName);
+                params.put("cmdSerial", Integer.valueOf(cmdSerial).toString());
+                HttpRequest.doPost(DHCaptureReceiveCB.url, JSON.toJSONString(params), "utf-8", "");
+
+                CameraHeartTask.cameraCapTime.put(Integer.valueOf(cmdSerial), System.currentTimeMillis());
+            }
+            return true;
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return false;
+        } finally {
+            this.stopRealPlay();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCaptureReceiveCB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCaptureReceiveCB.java
new file mode 100644
index 0000000..ece8dcc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHCaptureReceiveCB.java
@@ -0,0 +1,61 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.alibaba.fastjson.JSON;
+import com.iailab.module.data.common.utils.HttpRequest;
+import com.iailab.module.data.dev.task.CameraHeartTask;
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 设置抓图回调
+ *
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public class DHCaptureReceiveCB implements NetSDKLib.fSnapRev {
+
+    public static String url = "http://127.0.0.1:8080/iailab/api/recognition";
+
+    @Override
+    public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int revLen, int encodeType, int cmdSerial, Pointer dwUser) {
+        System.out.println("DHCaptureReceiveCB:");
+        Calendar calendar = Calendar.getInstance();
+//        calendar.set(Calendar.MONTH, 0);
+//        calendar.set(Calendar.SECOND, 0);
+        if (pBuf != null && revLen > 0) {
+            String strFileName = DHSavePath.getSavePath().getSaveCapturePath(String.valueOf(cmdSerial), calendar.getTime());
+            System.out.println("cmdSerial=" + cmdSerial);
+            System.out.println("strFileName=" + strFileName);
+
+            byte[] buf = pBuf.getByteArray(0, revLen);
+            ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
+            try {
+                BufferedImage bufferedImage = ImageIO.read(byteArrInput);
+                if (bufferedImage == null) {
+                    return;
+                }
+                ImageIO.write(bufferedImage, "jpg", new File(strFileName));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+
+            // 开始识别
+            Map<String, String> params = new HashMap<>();
+            params.put("strFileName", strFileName);
+            params.put("cmdSerial", Integer.valueOf(cmdSerial).toString());
+            HttpRequest.doPost(url, JSON.toJSONString(params), "utf-8", "");
+
+            CameraHeartTask.cameraCapTime.put(Integer.valueOf(cmdSerial), System.currentTimeMillis());
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHClientFactory.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHClientFactory.java
new file mode 100644
index 0000000..eb389ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHClientFactory.java
@@ -0,0 +1,106 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.iailab.module.data.dev.dto.DevLogDTO;
+import com.iailab.module.data.dev.dto.DevNvrDTO;
+import com.iailab.module.data.dev.entity.DevNvrEntity;
+import com.iailab.module.data.dev.enums.CameraStatusEnum;
+import com.iailab.module.data.dev.service.DevLogService;
+import com.iailab.module.data.dev.service.DevNvrService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年04月08日
+ */
+@Component
+public class DHClientFactory {
+
+    @Autowired
+    private DevNvrService devNvrService;
+
+    @Autowired
+    private DevLogService devLogService;
+
+    private Map<String, DHCapturePictureClient> clientMap = new ConcurrentHashMap<>();
+
+    public synchronized DHCapturePictureClient getClient(String nvrId) {
+        if (clientMap.containsKey(nvrId)) {
+            return clientMap.get(nvrId);
+        }
+
+        DHCapturePictureClient client = new DHCapturePictureClient();
+        if (!DHCapturePictureClient.isInit()) {
+            boolean bInit = client.initSDK();
+            DevLogDTO dto = new DevLogDTO();
+            dto.setCreateDate(new Date());
+            dto.setEvent("初始化SDK");
+            dto.setDevId("SDK");
+            dto.setContent(bInit ? "初始化SDK成功" : "初始化SDK失败");
+            devLogService.save(dto);
+        }
+        DevNvrDTO devNvrDTO = devNvrService.get(nvrId);
+        if (!client.isLogin()) {
+            boolean bLogin = client.login(devNvrDTO.getIp(), devNvrDTO.getPort(), devNvrDTO.getUsername(), devNvrDTO.getPassword());
+
+            DevLogDTO dto = new DevLogDTO();
+            dto.setCreateDate(new Date());
+            dto.setEvent("登录设备");
+            dto.setDevId(devNvrDTO.getIp());
+            dto.setContent(bLogin ? "登录成功" : "登录失败");
+            if (bLogin) {
+                devNvrService.setStatus(devNvrDTO.getIp(), CameraStatusEnum.ONLIEN.getCode());
+            } else {
+                devNvrService.setStatus(devNvrDTO.getIp(), CameraStatusEnum.OFFLINE.getCode());
+            }
+            devLogService.save(dto);
+        }
+        clientMap.put(nvrId, client);
+        return client;
+    }
+
+    public void reLogin(DHCapturePictureClient client, String nvrId) {
+        DevNvrDTO devNvrDTO = devNvrService.get(nvrId);
+        boolean bLogin = client.login(devNvrDTO.getIp(), devNvrDTO.getPort(), devNvrDTO.getUsername(), devNvrDTO.getPassword());
+        DevLogDTO dto = new DevLogDTO();
+        dto.setCreateDate(new Date());
+        dto.setEvent("登录设备");
+        dto.setDevId(devNvrDTO.getIp());
+        dto.setContent(bLogin ? "登录成功" : "登录失败");
+        if (bLogin) {
+            devNvrService.setStatus(devNvrDTO.getIp(), CameraStatusEnum.ONLIEN.getCode());
+        } else {
+            devNvrService.setStatus(devNvrDTO.getIp(), CameraStatusEnum.OFFLINE.getCode());
+        }
+        devLogService.save(dto);
+    }
+
+//    public void getNvrOnlineStatus(List<DevNvrEntity> nvrs) {
+//        nvrs.stream().forEach(nvr -> {
+//            DHCapturePictureClient client = getClient(nvr.getId().toString());
+//            if(!client.isLogin()) {
+//                reLogin(client, nvr.getId().toString());
+//            }
+//            boolean bLogin = client.login(nvr.getIp(), nvr.getPort(), nvr.getUsername(), nvr.getPassword());
+//            DevLogDTO dto = new DevLogDTO();
+//            dto.setCreateDate(new Date());
+//            dto.setEvent("登录设备");
+//            dto.setDevId(nvr.getIp());
+//            dto.setContent(bLogin ? "登录成功" : "登录失败");
+//            if (bLogin) {
+//                nvr.setStatus(CameraStatusEnum.ONLIEN.getCode());
+//                devNvrService.setStatus(nvr.getIp(), CameraStatusEnum.ONLIEN.getCode());
+//            } else {
+//                nvr.setStatus(CameraStatusEnum.OFFLINE.getCode());
+//                devNvrService.setStatus(nvr.getIp(), CameraStatusEnum.OFFLINE.getCode());
+//            }
+//            devLogService.save(dto);
+//        });
+//    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHSavePath.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHSavePath.java
new file mode 100644
index 0000000..21c2d29
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DHSavePath.java
@@ -0,0 +1,73 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.netsdk.lib.ToolKits;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public class DHSavePath {
+
+    private DHSavePath() {}
+
+    private static DHSavePath instance = new DHSavePath();
+
+    public final static String capturePath = "Z:/irs/Capture/";
+
+    public final static String modelPath = "Z:/irs/Model/";
+
+    public final static String capturePathUbuntu = "/home/dell/DLUT/irs/Capture/";
+
+    public final static String modelPathUbuntu = "/home/dell/DLUT/irs/Model/";
+
+    public static DHSavePath getSavePath() {
+        return instance;
+    }
+
+    /**
+     * 设置抓图保存路径
+     *
+     * @return
+     */
+    public String getSaveCapturePath(String channel, Date curDate) {
+        File path1 = new File(capturePath);
+        if (!path1.exists()) {
+            path1.mkdir();
+        }
+
+        File path2 = new File(capturePath + ToolKits.getDay() + "/" + channel + "/");
+        if (!path2.exists()) {
+            path2.mkdirs();
+        }
+
+        String strFileName = path2.getAbsolutePath() + "/" + ToolKits.getDate(curDate) + ".jpg";
+
+        return strFileName;
+    }
+
+    /**
+     * 设置模型输出图片保存路径
+     *
+     * @param cameraCode
+     * @param curDate
+     * @return
+     */
+    public String getSaveModelPath(String cameraCode, Date curDate) throws IOException {
+//        File path1 = new File(modelPath);
+//        if (!path1.exists()) {
+//            path1.mkdir();
+//        }
+
+        File path2 = new File(modelPath + ToolKits.getDay() + "/" + cameraCode + "/");
+//        if (!path2.exists()) {
+//            path2.mkdirs();
+//        }
+        //return path2.getAbsolutePath() + "/";
+        return path2.getAbsolutePath();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DisConnect.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DisConnect.java
new file mode 100644
index 0000000..a85eda0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/DisConnect.java
@@ -0,0 +1,34 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.alibaba.fastjson.JSON;
+import com.iailab.module.data.common.utils.HttpRequest;
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 断线回调
+ *
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public class DisConnect implements NetSDKLib.fDisConnect {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private String url = "http://127.0.0.1:8080/iailab/api/dis-connect";
+
+    @Override
+    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+        logger.info("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+        Map<String, String> params = new HashMap<>();
+        params.put("pchDVRIP", pchDVRIP);
+        params.put("nDVRPort", Integer.valueOf(nDVRPort).toString());
+        HttpRequest.doPost(url, JSON.toJSONString(params), "utf-8", "");
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/HaveReConnect.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/HaveReConnect.java
new file mode 100644
index 0000000..0308b00
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/HaveReConnect.java
@@ -0,0 +1,34 @@
+package com.iailab.module.data.dev.dahua;
+
+import com.alibaba.fastjson.JSON;
+import com.iailab.module.data.common.utils.HttpRequest;
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 重连回调
+ *
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public class HaveReConnect implements NetSDKLib.fHaveReConnect {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private String url = "http://127.0.0.1:8080/iailab/api/re-connect";
+
+    @Override
+    public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+        logger.info("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+        Map<String, String> params = new HashMap<>();
+        params.put("pchDVRIP", pchDVRIP);
+        params.put("nDVRPort", Integer.valueOf(nDVRPort).toString());
+        HttpRequest.doPost(url, JSON.toJSONString(params), "utf-8", "");
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/frame/DHCapturePictureFrame.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/frame/DHCapturePictureFrame.java
new file mode 100644
index 0000000..03640df
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dahua/frame/DHCapturePictureFrame.java
@@ -0,0 +1,61 @@
+package com.iailab.module.data.dev.dahua.frame;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import java.awt.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年04月15日
+ */
+public class DHCapturePictureFrame extends JFrame {
+    private static final long serialVersionUID = 1L;
+
+    public DHCapturePictureFrame(Panel realPlayWindow) {
+        setTitle(Res.string().getCapturePicture());
+        setLayout(new BorderLayout());
+        pack();
+        setSize(800, 560);
+        setResizable(false);
+        setLocationRelativeTo(null);
+
+        this.realPlayWindow = realPlayWindow;
+        realPanel = new RealPanel();
+        this.realPlayWindow.setEnabled(true);
+
+        add(realPanel, BorderLayout.CENTER);
+    }
+
+    /*
+     * realplay show and control panel
+     */
+    private class RealPanel extends JPanel {
+        private static final long serialVersionUID = 1L;
+
+        public RealPanel() {
+            BorderEx.set(this, Res.string().getRealplay(), 2);
+            setLayout(new BorderLayout());
+
+            realplayPanel = new JPanel();
+            add(realplayPanel, BorderLayout.CENTER);
+
+            /************ realplay panel **************/
+            realplayPanel.setLayout(new BorderLayout());
+            realplayPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+            //realPlayWindow = new Panel();
+            realPlayWindow.setBackground(Color.GRAY);
+            realplayPanel.add(realPlayWindow, BorderLayout.CENTER);
+
+            realPlayWindow.setEnabled(false);
+
+        }
+    }
+
+    private RealPanel realPanel;
+    private JPanel realplayPanel;
+    private Panel realPlayWindow;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/AlarmCameraDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/AlarmCameraDao.java
new file mode 100644
index 0000000..fac23b7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/AlarmCameraDao.java
@@ -0,0 +1,30 @@
+package com.iailab.module.data.dev.dao;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.data.dev.dto.AlarmCameraDTO;
+import com.iailab.module.data.dev.entity.AlarmCameraEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月09日
+ */
+@Mapper
+public interface AlarmCameraDao extends BaseDao<AlarmCameraEntity> {
+
+    IPage<AlarmCameraDTO> getPage(IPage<AlarmCameraEntity> page, @Param("params") Map<String, Object> params);
+
+    int updateEnableBatch(Map<String, Object> map);
+
+    List<AlarmCameraDTO> getList(Map<String, Object> params);
+
+    AlarmCameraDTO getByCameraCode(Integer cameraCode);
+
+    AlarmCameraDTO getByCameraId(String cameraId);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevCameraDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevCameraDao.java
new file mode 100644
index 0000000..6d8d381
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevCameraDao.java
@@ -0,0 +1,32 @@
+package com.iailab.module.data.dev.dao;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.data.dev.controller.admin.camera.vo.DevCameraPageReqVO;
+import com.iailab.module.data.dev.dto.DevCameraDTO;
+import com.iailab.module.data.dev.entity.DevCameraEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@TenantDS
+@Mapper
+public interface DevCameraDao extends BaseMapperX<DevCameraEntity> {
+
+    default PageResult<DevCameraEntity> selectPage(DevCameraPageReqVO pageReqVO) {
+        return selectPage(pageReqVO, new LambdaQueryWrapperX<DevCameraEntity>()
+                .eq(DevCameraEntity::getNvrId, pageReqVO.getNvrId())
+                .likeIfPresent(DevCameraEntity::getLocation, pageReqVO.getLocation())
+                .orderByDesc(DevCameraEntity::getId));
+    }
+
+    List<DevCameraDTO> apiCameraList();
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevImageDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevImageDao.java
new file mode 100644
index 0000000..b200e1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevImageDao.java
@@ -0,0 +1,14 @@
+package com.iailab.module.data.dev.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.data.dev.entity.DevImageEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@Mapper
+public interface DevImageDao extends BaseDao<DevImageEntity> {
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevLogDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevLogDao.java
new file mode 100644
index 0000000..eb76d1a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevLogDao.java
@@ -0,0 +1,14 @@
+package com.iailab.module.data.dev.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.data.dev.entity.DevLogEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+@Mapper
+public interface DevLogDao extends BaseDao<DevLogEntity> {
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevNvrDao.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevNvrDao.java
new file mode 100644
index 0000000..186cc22
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dao/DevNvrDao.java
@@ -0,0 +1,30 @@
+package com.iailab.module.data.dev.dao;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrPageReqVO;
+import com.iailab.module.data.dev.entity.DevNvrEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+@TenantDS
+@Mapper
+public interface DevNvrDao extends BaseMapperX<DevNvrEntity> {
+
+    default PageResult<DevNvrEntity> selectPage(DevNvrPageReqVO pageReqVO) {
+        return selectPage(pageReqVO, new LambdaQueryWrapperX<DevNvrEntity>()
+                .eqIfPresent(DevNvrEntity::getBrand, pageReqVO.getBrand())
+                .likeIfPresent(DevNvrEntity::getDevice, pageReqVO.getDevice())
+                .likeIfPresent(DevNvrEntity::getIp, pageReqVO.getIp())
+                .likeIfPresent(DevNvrEntity::getCode, pageReqVO.getCode())
+                .likeIfPresent(DevNvrEntity::getName, pageReqVO.getName())
+                .orderByDesc(DevNvrEntity::getId));
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/AlarmCameraDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/AlarmCameraDTO.java
new file mode 100644
index 0000000..956b217
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/AlarmCameraDTO.java
@@ -0,0 +1,72 @@
+package com.iailab.module.data.dev.dto;
+
+import com.iailab.framework.common.validation.group.AddGroup;
+import com.iailab.framework.common.validation.group.UpdateGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月09日
+ */
+@Data
+public class AlarmCameraDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Null(message="{id.null}", groups = AddGroup.class)
+    @NotNull(message="{id.require}", groups = UpdateGroup.class)
+    private String id;
+
+    private String cameraId;
+
+    private Integer cameraCode;
+
+    private Integer channel;
+
+    private String point;
+
+    private String location;
+
+    private Integer alarmStatus;
+
+    private Date alarmTime;
+
+    private String alarmMsg;
+
+    private Integer isEnable;
+
+    private Integer sort;
+
+    private Date lastTime;
+
+    private Integer dx;
+
+    private Integer dy;
+
+    private Integer isShow;
+
+    private Integer frequency;
+
+    private String modelId;
+
+    private String modelName;
+
+    private String descInfo;
+
+    private Date createDate;
+
+    private Integer alarmTotal;
+
+    private String pointName;
+
+    private String nvrId;
+
+    private String imageUrl;
+
+    private String captureType;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevCameraDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevCameraDTO.java
new file mode 100644
index 0000000..a4ed4a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevCameraDTO.java
@@ -0,0 +1,66 @@
+package com.iailab.module.data.dev.dto;
+
+import com.iailab.framework.common.validation.group.AddGroup;
+import com.iailab.framework.common.validation.group.UpdateGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@Data
+public class DevCameraDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Null(message="{id.null}", groups = AddGroup.class)
+    @NotNull(message="{id.require}", groups = UpdateGroup.class)
+    private String id;
+
+    private Integer code;
+
+    private String factory;
+
+    private String unit;
+
+    private String factoryName;
+
+    private String unitName;
+
+    private String brand;
+
+    private String point;
+
+    private String location;
+
+    private String nvrId;
+
+    private String ip;
+
+    private String port;
+
+    private Integer channel;
+    
+    private String captureType;
+
+    private String username;
+
+    private String password;
+
+    private Integer status;
+
+    private String remark;
+
+    private Long creator;
+
+    private Date createDate;
+
+    private Long updater;
+
+    private Date updateDate;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevImageDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevImageDTO.java
new file mode 100644
index 0000000..2ef5011
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevImageDTO.java
@@ -0,0 +1,32 @@
+package com.iailab.module.data.dev.dto;
+
+import com.iailab.framework.common.validation.group.AddGroup;
+import com.iailab.framework.common.validation.group.UpdateGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@Data
+public class DevImageDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Null(message="{id.null}", groups = AddGroup.class)
+    @NotNull(message="{id.require}", groups = UpdateGroup.class)
+    private String id;
+
+    private String cameraId;
+
+    private String imagePath;
+
+    private String imageUrl;
+
+    private Date createDate;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevLogDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevLogDTO.java
new file mode 100644
index 0000000..bdf7427
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevLogDTO.java
@@ -0,0 +1,44 @@
+package com.iailab.module.data.dev.dto;
+
+import com.iailab.framework.common.validation.group.AddGroup;
+import com.iailab.framework.common.validation.group.UpdateGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+@Data
+public class DevLogDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Null(message="{id.null}", groups = AddGroup.class)
+    @NotNull(message="{id.require}", groups = UpdateGroup.class)
+    private String id;
+
+    /**
+     * 设备ID
+     */
+    private String devId;
+
+    /**
+     * 事件
+     */
+    private String event;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevNvrDTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevNvrDTO.java
new file mode 100644
index 0000000..26f284e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/dto/DevNvrDTO.java
@@ -0,0 +1,99 @@
+package com.iailab.module.data.dev.dto;
+
+import com.iailab.framework.common.validation.group.AddGroup;
+import com.iailab.framework.common.validation.group.UpdateGroup;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+@Data
+public class DevNvrDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @Null(message="{id.null}", groups = AddGroup.class)
+    @NotNull(message="{id.require}", groups = UpdateGroup.class)
+    private String id;
+
+    /**
+     * 编码
+     */
+    private String code;
+
+    /**
+     * 品牌
+     */
+    private Integer brand;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * IP
+     */
+    private String ip;
+
+    /**
+     * 端口
+     */
+    private Integer port;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 设备类型
+     */
+    private String device;
+
+    /**
+     * 位置
+     */
+    private String position;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    private Date createDate;
+
+    /**
+     * 更新者
+     */
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/AlarmCameraEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/AlarmCameraEntity.java
new file mode 100644
index 0000000..706e74f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/AlarmCameraEntity.java
@@ -0,0 +1,114 @@
+package com.iailab.module.data.dev.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_alarm_camera")
+public class AlarmCameraEntity implements Serializable {
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * id
+   */
+  @TableId
+  private String id;
+
+  /**
+   * 摄像头ID
+   */
+  private String cameraId;
+
+  /**
+   * 预警状态(0:无排放,1:有排放,2,设备异常)
+   */
+  private Integer alarmStatus;
+
+  /**
+   * 报警时间
+   */
+  private Date alarmTime;
+
+  /**
+   * 报警内容
+   */
+  private String alarmMsg;
+
+  /**
+   * 是否启用(0:禁用,1:启用)
+   */
+  private Integer isEnable;
+
+  /**
+   * 排序
+   */
+  private Integer sort;
+
+  /**
+   * 最后报警
+   */
+  private Date lastTime;
+
+  /**
+   * 横坐标
+   */
+  private Integer dx;
+
+  /**
+   * 纵坐标
+   */
+  private Integer dy;
+
+  /**
+   * 是否显示
+   */
+  private Integer isShow;
+
+  /**
+   * 执行频率
+   */
+  private Integer frequency;
+
+  /**
+   * 模型ID
+   */
+  private String modelId;
+
+  /**
+   * 描述信息
+   */
+  private String descInfo;
+
+  /**
+   * 创建者
+   */
+  @TableField(fill = FieldFill.INSERT)
+  private Long creator;
+
+  /**
+   * 创建时间
+   */
+  @TableField(fill = FieldFill.INSERT)
+  private Date createDate;
+
+  /**
+   * 更新者
+   */
+  @TableField(fill = FieldFill.INSERT_UPDATE)
+  private Long updater;
+
+  /**
+   * 更新时间
+   */
+  @TableField(fill = FieldFill.INSERT_UPDATE)
+  private Date updateDate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DataEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DataEntity.java
new file mode 100644
index 0000000..6e4aa6c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DataEntity.java
@@ -0,0 +1,14 @@
+package com.iailab.module.data.dev.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class DataEntity {
+	
+	private Date timeStamp;
+
+    private Object dataValue;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevCameraEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevCameraEntity.java
new file mode 100644
index 0000000..1aba146
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevCameraEntity.java
@@ -0,0 +1,125 @@
+package com.iailab.module.data.dev.entity;
+
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_dev_camera")
+public class DevCameraEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 编码
+     */
+    private Integer code;
+
+    /**
+     * 厂部
+     */
+    private String factory;
+
+    /**
+     * 单元
+     */
+    private String unit;
+
+    /**
+     * 品牌
+     */
+    private String brand;
+
+    /**
+     * 监控点位
+     */
+    private String point;
+
+    /**
+     * 监控区域
+     */
+    private String location;
+
+    /**
+     * 录像机ID
+     */
+    private String nvrId;
+
+    /**
+     * IP
+     */
+    private String ip;
+
+    /**
+     * 端口
+     */
+    private String port;
+
+    /**
+     * 通道
+     */
+    private Integer channel;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 抓图方式
+     */
+    private String captureType;
+
+    /**
+     * 创建者
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long creator;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+
+    /**
+     * 更新者
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updater;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateDate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevImageEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevImageEntity.java
new file mode 100644
index 0000000..add20d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevImageEntity.java
@@ -0,0 +1,44 @@
+package com.iailab.module.data.dev.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_dev_image")
+public class DevImageEntity implements Serializable {
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * id
+   */
+  @TableId
+  private String id;
+
+  /**
+   * 摄像头ID
+   */
+  private String cameraId;
+
+  /**
+   * 图片路径
+   */
+  private String imagePath;
+
+  /**
+   * 图片地址
+   */
+  private String imageUrl;
+
+  /**
+   * 创建时间
+   */
+  private Date createDate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevLogEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevLogEntity.java
new file mode 100644
index 0000000..5793e31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevLogEntity.java
@@ -0,0 +1,44 @@
+package com.iailab.module.data.dev.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_dev_log")
+public class DevLogEntity implements Serializable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * id
+   */
+  @TableId
+  private Long id;
+
+  /**
+   * 设备ID
+   */
+  private String devId;
+
+  /**
+   * 事件
+   */
+  private String event;
+
+  /**
+   * 内容
+   */
+  private String content;
+
+  /**
+   * 创建时间
+   */
+  private Date createDate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevNvrEntity.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevNvrEntity.java
new file mode 100644
index 0000000..bf389c0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/entity/DevNvrEntity.java
@@ -0,0 +1,98 @@
+package com.iailab.module.data.dev.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_dev_nvr")
+public class DevNvrEntity implements Serializable {
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * id
+   */
+  @TableId
+  private String id;
+
+  /**
+   * 编码
+   */
+  private String code;
+
+  /**
+   * 品牌
+   */
+  private Integer brand;
+
+  /**
+   * 名称
+   */
+  private String name;
+
+  /**
+   * IP
+   */
+  private String ip;
+
+  /**
+   * 端口
+   */
+  private Integer port;
+
+  /**
+   * 用户名
+   */
+  private String username;
+
+  /**
+   * 密码
+   */
+  private String password;
+
+  /**
+   * 设备类型
+   */
+  private String device;
+
+  /**
+   * 位置
+   */
+  private String position;
+
+  /**
+   * 状态
+   */
+  private Integer status;
+
+  /**
+   * 备注
+   */
+  private String remark;
+
+  /**
+   * 创建者
+   */
+  private Long creator;
+
+  /**
+   * 创建时间
+   */
+  private Date createDate;
+
+  /**
+   * 更新者
+   */
+  private Long updater;
+
+  /**
+   * 更新时间
+   */
+  private Date updateDate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/AlarmStatusEnum.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/AlarmStatusEnum.java
new file mode 100644
index 0000000..438a23c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/AlarmStatusEnum.java
@@ -0,0 +1,32 @@
+package com.iailab.module.data.dev.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月12日
+ */
+@Getter
+@AllArgsConstructor
+public enum AlarmStatusEnum {
+
+    NORMAL(0,"无排放"),
+    POLLUTION(1,"有排放"),
+    EXCEPTION(2,"设备异常");
+
+    private Integer code;
+    private String desc;
+
+    public static AlarmStatusEnum getEumByCode(Integer code){
+        if(code == null) {return null;}
+
+        for(AlarmStatusEnum statusEnum: AlarmStatusEnum.values()) {
+            if(statusEnum.getCode().equals(code)) {
+                return statusEnum;
+            }
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CameraStatusEnum.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CameraStatusEnum.java
new file mode 100644
index 0000000..a95a2eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CameraStatusEnum.java
@@ -0,0 +1,20 @@
+package com.iailab.module.data.dev.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月30日
+ */
+@Getter
+@AllArgsConstructor
+public enum CameraStatusEnum {
+
+    ONLIEN(0,"在线"),
+    OFFLINE(1,"离线");
+
+    private Integer code;
+    private String desc;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CaptureTypeEnum.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CaptureTypeEnum.java
new file mode 100644
index 0000000..533a9f4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/enums/CaptureTypeEnum.java
@@ -0,0 +1,20 @@
+package com.iailab.module.data.dev.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年04月15日
+ */
+@Getter
+@AllArgsConstructor
+public enum CaptureTypeEnum {
+
+    REMOTE("remote","远程抓图"),
+    LOCAL("local","本地抓图");
+
+    private String code;
+    private String desc;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/package-info.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/package-info.java
new file mode 100644
index 0000000..3fc3f7a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/package-info.java
@@ -0,0 +1 @@
+package com.iailab.module.data.dev.hikvision;
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/CommonUtils.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/CommonUtils.java
new file mode 100644
index 0000000..ce93834
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/CommonUtils.java
@@ -0,0 +1,57 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class CommonUtils {
+    /**
+     *<p>获取当前日期<p>
+     *<p>格式yyyyMMdd<p>
+   */
+    public static String getCurrDate(){
+    	Date date=new Date(); 
+    	SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMdd"); 
+		String tDate = df1.format(date);   
+    	return tDate;
+    }
+    
+    /**
+     *<p>获取当前时间<p>
+     *<p>格式yyyyMMddHHmmss<p>
+   */
+    public static String getCurrDate2(){
+    	Date date=new Date(); 
+    	SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMddHHmmss"); 
+		String tDate = df1.format(date);   
+    	return tDate;
+    }
+    
+    /**
+     *<p>获取当前时间<p>
+     *<p>格式yyyy-MM-dd HH:mm:ss<p>
+   */
+    public static String getCurrDate3(){
+    	Date date=new Date(); 
+    	SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
+		String tDate = df1.format(date);   
+    	return tDate;
+    }
+    
+	  /**
+	   * 由年月日时分秒+3位随机数
+	   * 生成流水号
+	   * @return
+	   */
+	  public static Long Getnum(){
+		  String t = getCurrDate2();
+		  int x=(int)(Math.random()*900)+100;
+		  String serial = t + x;
+		  Long num = new Long(serial);
+		  return num;
+	  }
+	  
+	  //主方法测试
+	public static void main(String[] args) {
+		System.out.println(Getnum());
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HCNetSDK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HCNetSDK.java
new file mode 100644
index 0000000..ab369e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HCNetSDK.java
@@ -0,0 +1,10608 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import com.sun.jna.*;
+import com.sun.jna.examples.win32.W32API;
+import com.sun.jna.examples.win32.W32API.HWND;
+import com.sun.jna.ptr.ByteByReference;
+import com.sun.jna.ptr.IntByReference;
+import com.sun.jna.ptr.ShortByReference;
+
+import java.util.Arrays;
+import java.util.List;
+
+//SDK接口说明,HCNetSDK.dll
+public interface HCNetSDK extends Library {
+    /*** 宏定义 ***/
+    //常量
+
+    public static final int MAX_NAMELEN = 16;    //DVR本地登陆名
+    public static final int MAX_RIGHT = 32;    //设备支持的权限(1-12表示本地权限,13-32表示远程权限)
+    public static final int NAME_LEN = 32;    //用户名长度
+    public static final int PASSWD_LEN = 16;    //密码长度
+    public static final int SERIALNO_LEN = 48;   //序列号长度
+    public static final int MACADDR_LEN = 6;      //mac地址长度
+    public static final int MAX_ETHERNET = 2;   //设备可配以太网络
+    public static final int PATHNAME_LEN = 128;   //路径长度
+    public static final int MAX_TIMESEGMENT_V30 = 8;    //9000设备最大时间段数
+    public static final int MAX_TIMESEGMENT = 4;   //8000设备最大时间段数
+    public static final int MAX_SHELTERNUM = 4;   //8000设备最大遮挡区域数
+    public static final int MAX_DAYS = 7;      //每周天数
+    public static final int PHONENUMBER_LEN = 32;   //pppoe拨号号码最大长度
+    public static final int MAX_DISKNUM_V30 = 33;        //9000设备最大硬盘数/* 最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘) */
+    public static final int MAX_DISKNUM = 16;     //8000设备最大硬盘数
+    public static final int MAX_DISKNUM_V10 = 8;   //1.2版本之前版本
+    public static final int MAX_WINDOW_V30 = 32; //9000设备本地显示最大播放窗口数
+    public static final int MAX_WINDOW = 16;    //8000设备最大硬盘数
+    public static final int MAX_VGA_V30 = 4;     //9000设备最大可接VGA数
+    public static final int MAX_VGA = 1;    //8000设备最大可接VGA数
+    public static final int MAX_USERNUM_V30 = 32;  //9000设备最大用户数
+    public static final int MAX_USERNUM = 16;  //8000设备最大用户数
+    public static final int MAX_EXCEPTIONNUM_V30 = 32;  //9000设备最大异常处理数
+    public static final int MAX_EXCEPTIONNUM = 16;   //8000设备最大异常处理数
+    public static final int MAX_LINK = 6;    //8000设备单通道最大视频流连接数
+    public static final int MAX_DECPOOLNUM = 4;   //单路解码器每个解码通道最大可循环解码数
+    public static final int MAX_DECNUM = 4;    //单路解码器的最大解码通道数(实际只有一个,其他三个保留)
+    public static final int MAX_TRANSPARENTNUM = 2;   //单路解码器可配置最大透明通道数
+    public static final int MAX_CYCLE_CHAN = 16;   //单路解码器最大轮循通道数
+    public static final int MAX_DIRNAME_LENGTH = 80;   //最大目录长度
+    public static final int MAX_STRINGNUM_V30 = 8;        //9000设备最大OSD字符行数数
+    public static final int MAX_STRINGNUM = 4;   //8000设备最大OSD字符行数数
+    public static final int MAX_STRINGNUM_EX = 8;   //8000定制扩展
+    public static final int MAX_AUXOUT_V30 = 16;   //9000设备最大辅助输出数
+    public static final int MAX_AUXOUT = 4;      //8000设备最大辅助输出数
+    public static final int MAX_HD_GROUP = 16;   //9000设备最大硬盘组数
+    public static final int MAX_NFS_DISK = 8;    //8000设备最大NFS硬盘数
+    public static final int IW_ESSID_MAX_SIZE = 32;    //WIFI的SSID号长度
+    public static final int IW_ENCODING_TOKEN_MAX = 32;   //WIFI密锁最大字节数
+    public static final int MAX_SERIAL_NUM = 64;    //最多支持的透明通道路数
+    public static final int MAX_DDNS_NUMS = 10;   //9000设备最大可配ddns数
+    public static final int MAX_DOMAIN_NAME = 64;    /* 最大域名长度 */
+
+    public static final int MAX_EMAIL_ADDR_LEN = 48;  //最大email地址长度
+    public static final int MAX_EMAIL_PWD_LEN = 32;     //最大email密码长度
+    public static final int MAXPROGRESS = 100;  //回放时的最大百分率
+    public static final int MAX_SERIALNUM = 2;    //8000设备支持的串口数 1-232, 2-485
+    public static final int CARDNUM_LEN = 20;    //卡号长度
+    public static final int MAX_VIDEOOUT_V30 = 4;      //9000设备的视频输出数
+    public static final int MAX_VIDEOOUT = 2;      //8000设备的视频输出数
+    public static final int MAX_PRESET_V30 = 256;    /* 9000设备支持的云台预置点数 */
+    public static final int MAX_TRACK_V30 = 256;    /* 9000设备支持的云台轨迹数 */
+    public static final int MAX_CRUISE_V30 = 256;    /* 9000设备支持的云台巡航数 */
+    public static final int MAX_PRESET = 128;    /* 8000设备支持的云台预置点数 */
+    public static final int MAX_TRACK = 128;    /* 8000设备支持的云台轨迹数 */
+    public static final int MAX_CRUISE = 128;    /* 8000设备支持的云台巡航数 */
+    public static final int CRUISE_MAX_PRESET_NUMS = 32;    /* 一条巡航最多的巡航点 */
+    public static final int MAX_SERIAL_PORT = 8;    //9000设备支持232串口数
+    public static final int MAX_PREVIEW_MODE = 8;    /* 设备支持最大预览模式数目 1画面,4画面,9画面,16画面.... */
+    public static final int MAX_MATRIXOUT = 16;  /* 最大模拟矩阵输出个数 */
+    public static final int LOG_INFO_LEN = 11840; /* 日志附加信息 */
+    public static final int DESC_LEN = 16;    /* 云台描述字符串长度 */
+    public static final int PTZ_PROTOCOL_NUM = 200;   /* 9000最大支持的云台协议数 */
+    public static final int MAX_AUDIO = 1;    //8000语音对讲通道数
+    public static final int MAX_AUDIO_V30 = 2;   //9000语音对讲通道数
+    public static final int MAX_CHANNUM = 16;   //8000设备最大通道数
+    public static final int MAX_ALARMIN = 16;  //8000设备最大报警输入数
+    public static final int MAX_ALARMOUT = 4;    //8000设备最大报警输出数
+    //9000 IPC接入
+    public static final int MAX_ANALOG_CHANNUM = 32;    //最大32个模拟通道
+    public static final int MAX_ANALOG_ALARMOUT = 32;    //最大32路模拟报警输出
+    public static final int MAX_ANALOG_ALARMIN = 32;    //最大32路模拟报警输入
+    public static final int MAX_IP_ALARMIN_V40 = 4096;    //允许加入的最多报警输入数
+    public static final int MAX_IP_ALARMOUT_V40 = 4096;    //允许加入的最多报警输出数
+    public static final int MAX_ALARMOUT_V40 = (MAX_IP_ALARMOUT_V40 + MAX_ANALOG_ALARMOUT); //4128
+    public static final int MAX_ALARMIN_V40 = (MAX_IP_ALARMIN_V40 + MAX_ANALOG_ALARMOUT); //4128
+    public static final int MAX_CHANNUM_V40 = 512;
+    public static final int MAX_IP_DEVICE = 32;    //允许接入的最大IP设备数
+    public static final int MAX_IP_CHANNEL = 32;   //允许加入的最多IP通道数
+    public static final int MAX_IP_ALARMIN = 128;   //允许加入的最多报警输入数
+    public static final int MAX_IP_ALARMOUT = 64; //允许加入的最多报警输出数
+
+    /* 最大支持的通道数 最大模拟加上最大IP支持 */
+    public static final int MAX_CHANNUM_V30 = (MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL);//64
+    public static final int MAX_ALARMOUT_V30 = (MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT);//96
+    public static final int MAX_ALARMIN_V30 = (MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN);//160
+    public static final int MAX_IP_DEVICE_V40 = 64;
+    public static final int STREAM_ID_LEN = 32;
+
+    public static final int MAX_LICENSE_LEN = 16;
+    public static final int MAX_LICENSE_LEN_EX = 32; //车牌号最大长度
+    public static final int MAX_CARDNO_LEN = 48;     //卡号最大长度
+    public static final int VCA_MAX_POLYGON_POINT_NUM = 10;
+
+    public static final int MAX_ID_NUM_LEN = 32;  //最大身份证号长度
+    public static final int MAX_ID_NAME_LEN = 128;   //最大姓名长度
+    public static final int MAX_ID_ADDR_LEN = 280;   //最大住址长度
+    public static final int MAX_ID_ISSUING_AUTHORITY_LEN = 128; //最大签发机关长度
+    public static final int MAX_CARD_READER_NUM_512 = 512;  //最大读卡器数
+    public static final int ERROR_MSG_LEN = 32;   //下发错误信息
+    public static final int MAX_FACE_NUM = 2;    //最大人脸数
+    public static final int MAX_FINGER_PRINT_LEN = 768;  //最大指纹长度
+
+    public static final int DEV_TYPE_NAME_LEN = 24;      //设备类型名称长度
+    public static final int MAX_FACE_PIC_NUM = 30;      /*人脸子图个数*/
+    public static final int CARDNUM_LEN_V30 = 40;
+
+    public static final int MAX_NOTICE_NUMBER_LEN = 32;   //公告编号最大长度
+    public static final int MAX_NOTICE_THEME_LEN = 64;   //公告主题最大长度
+    public static final int MAX_NOTICE_DETAIL_LEN = 1024; //公告详情最大长度
+    public static final int MAX_NOTICE_PIC_NUM = 6;    //公告信息最大图片数量
+    public static final int MAX_DEV_NUMBER_LEN = 32;   //设备编号最大长度
+    public static final int LOCK_NAME_LEN = 32;  //锁名称
+
+    public static final int NET_SDK_EMPLOYEE_NO_LEN = 32;  //工号长度
+    public static final int NET_SDK_UUID_LEN = 36;  //UUID长度
+
+    public static final int MAX_INQUEST_CDRW_NUM = 4;     //最大刻录机数目
+    public static final int INQUEST_MESSAGE_LEN = 44;    //审讯重点标记信息长度
+    public static final int INQUEST_MAX_ROOM_NUM = 2;     //最大审讯室个数
+    public static final int MAX_RESUME_SEGMENT = 2;     //支持同时恢复的片段数目
+
+    public static final int SUPPORT_PD_NUM = 16;
+    public static final int SUPPORT_ARRAY_NUM = 8;
+    public static final int SUPPORT_VD_NUM = 128;
+    public static final int SUPPORT_PD_NUM_ = 16;
+    public static final int SUPPORT_PD_NUM_PARTTWO = 8;
+
+    public static final int CARDNUM_LEN_OUT = 32; //外部结构体卡号长度
+    public static final int GUID_LEN = 16;        //GUID长度
+
+    public static final int MAX_ROIDETECT_NUM = 8;    //支持的ROI区域数
+    public static final int MAX_LANERECT_NUM = 5;    //最大车牌识别区域数
+    public static final int MAX_FORTIFY_NUM = 10;   //最大布防个数
+    public static final int MAX_INTERVAL_NUM = 4;    //最大时间间隔个数
+    public static final int MAX_CHJC_NUM = 3;    //最大车辆省份简称字符个数
+    public static final int MAX_VL_NUM = 5;    //最大虚拟线圈个数
+    public static final int MAX_DRIVECHAN_NUM = 16;  //最大车道数
+    public static final int MAX_COIL_NUM = 3;    //最大线圈个数
+    public static final int MAX_SIGNALLIGHT_NUM = 6;   //最大信号灯个数
+    public static final int MAX_IOSPEED_GROUP_NUM = 4; //IO测速组个数
+    public static final int MAX_IOOUT_NUM = 4;  //最大IO输出口个数
+    public static final int MAX_IOIN_NUM = 8;  //最大IO输入口个数
+    public static final int MAX_RELAY_NUM = 12; //继电器控制设备最大数 2013-11-04
+    public static final int MAX_VEHICLE_TYPE_NUM = 8;  //车辆信息管控最大数2013-11-04
+    public static final int MAX_IOIN_NUMEX = 10; //最大IO输入口个数(扩展)
+    public static final int MAX_ITC_LANE_NUM = 6;  //最大车道个数
+    public static final int MAX_LANEAREA_NUM = 2;  //单车道最大区域个数
+    public static final int ITC_MAX_POLYGON_POINT_NUM = 20;    //检测区域最多支持20个点的多边形
+    public static final int MAX_ITC_SERIALCHECK_NUM = 8; //串口校验类型个数
+    public static final int MAX_LIGHT_NUM = 6; //最大交通灯数
+    public static final int MAX_VIDEO_INTERVAL_NUM = 2;  //最大抓拍间隔数
+    public static final int MAX_VIDEO_DETECT_LIGHT_NUM = 12;  //视频检测的最大检测区域
+    public static final int MAX_CALIB_RECOG_NUM = 2;  //标定区域个数
+    public static final int MAX_RS485_NUM = 12; //485口最大支持数
+    public static final int MAX_MOBILE_POLYGON_NUM = 3; //移动布控支持最大牌识区域个数
+    public static final int MAX_MOBILE_DETECTLINE_NUM = 3; //移动布控支持最大违规检测线个数
+    public static final int MAX_IOOUT_K_NUM = 8;  //K系列最大IO输出口个数
+
+    public static final int NET_SDK_MAX_FDID_LEN = 256; //人脸库ID最大长度
+    public static final int NET_SDK_MAX_PICID_LEN = 256; //人脸ID最大长度
+    public static final int NET_SDK_MAX_INDENTITY_KEY_LEN = 64; //交互操作口令长度
+
+    public static final int SEARCH_EVENT_INFO_LEN = 300;    //事件信息长度
+    public static final int SEARCH_EVENT_INFO_LEN_V40 = 800;
+    public static final int MAX_POS_KEYWORDS_NUM = 3; //支持关键字查找条数
+    public static final int MAX_POS_KEYWORD_LEN = 128; //每条关键字长度
+    public static final int INQUEST_CASE_LEN = 64;    //审讯信息长度
+
+    public static final int SEARCH_CASE_NO_LEN = 56;
+    public static final int SEARCH_CASE_NAME_LEN = 100;
+    public static final int SEARCH_LITIGANT_LEN = 32;
+    public static final int SEARCH_CHIEF_JUDGE_LEN = 32;
+    public static final int CASE_NO_RET_LEN = 52;
+    public static final int CASE_NAME_RET_LEN = 64;
+    public static final int LITIGANT_RET_LEN = 24;
+    public static final int CHIEF_JUDGE_RET_LEN = 24;
+    public static final int NET_SDK_CASETYPE_LEN = 32;
+    public static final int NET_SDK_MAX_TAPE_INDEX_LEN = 32;  //磁带编号最大长度
+    public static final int NET_SDK_MAX_FILE_LEN = 256;  //文件名最大长度
+    /******************************************************************/
+
+    /*******************
+     * 全局错误码 begin
+     **********************/
+    public static final int NET_DVR_NOERROR = 0;    //没有错误
+    public static final int NET_DVR_PASSWORD_ERROR = 1;    //用户名密码错误
+    public static final int NET_DVR_NOENOUGHPRI = 2;//权限不足
+    public static final int NET_DVR_NOINIT = 3;//没有初始化
+    public static final int NET_DVR_CHANNEL_ERROR = 4;    //通道号错误
+    public static final int NET_DVR_OVER_MAXLINK = 5;    //连接到DVR的客户端个数超过最大
+    public static final int NET_DVR_VERSIONNOMATCH = 6;    //版本不匹配
+    public static final int NET_DVR_NETWORK_FAIL_CONNECT = 7;//连接服务器失败
+    public static final int NET_DVR_NETWORK_SEND_ERROR = 8;    //向服务器发送失败
+    public static final int NET_DVR_NETWORK_RECV_ERROR = 9;    //从服务器接收数据失败
+    public static final int NET_DVR_NETWORK_RECV_TIMEOUT = 10;    //从服务器接收数据超时
+    public static final int NET_DVR_NETWORK_ERRORDATA = 11;    //传送的数据有误
+    public static final int NET_DVR_ORDER_ERROR = 12;    //调用次序错误
+    public static final int NET_DVR_OPERNOPERMIT = 13;    //无此权限
+    public static final int NET_DVR_COMMANDTIMEOUT = 14;    //DVR命令执行超时
+    public static final int NET_DVR_ERRORSERIALPORT = 15;    //串口号错误
+    public static final int NET_DVR_ERRORALARMPORT = 16;    //报警端口错误
+    public static final int NET_DVR_PARAMETER_ERROR = 17;//参数错误
+    public static final int NET_DVR_CHAN_EXCEPTION = 18;    //服务器通道处于错误状态
+    public static final int NET_DVR_NODISK = 19;    //没有硬盘
+    public static final int NET_DVR_ERRORDISKNUM = 20;    //硬盘号错误
+    public static final int NET_DVR_DISK_FULL = 21;    //服务器硬盘满
+    public static final int NET_DVR_DISK_ERROR = 22;//服务器硬盘出错
+    public static final int NET_DVR_NOSUPPORT = 23;//服务器不支持
+    public static final int NET_DVR_BUSY = 24;//服务器忙
+    public static final int NET_DVR_MODIFY_FAIL = 25;//服务器修改不成功
+    public static final int NET_DVR_PASSWORD_FORMAT_ERROR = 26;//密码输入格式不正确
+    public static final int NET_DVR_DISK_FORMATING = 27;    //硬盘正在格式化,不能启动操作
+    public static final int NET_DVR_DVRNORESOURCE = 28;    //DVR资源不足
+    public static final int NET_DVR_DVROPRATEFAILED = 29; //DVR操作失败
+    public static final int NET_DVR_OPENHOSTSOUND_FAIL = 30; //打开PC声音失败
+    public static final int NET_DVR_DVRVOICEOPENED = 31; //服务器语音对讲被占用
+    public static final int NET_DVR_TIMEINPUTERROR = 32; //时间输入不正确
+    public static final int NET_DVR_NOSPECFILE = 33;  //回放时服务器没有指定的文件
+    public static final int NET_DVR_CREATEFILE_ERROR = 34;    //创建文件出错
+    public static final int NET_DVR_FILEOPENFAIL = 35; //打开文件出错
+    public static final int NET_DVR_OPERNOTFINISH = 36; //上次的操作还没有完成
+    public static final int NET_DVR_GETPLAYTIMEFAIL = 37; //获取当前播放的时间出错
+    public static final int NET_DVR_PLAYFAIL = 38; //播放出错
+    public static final int NET_DVR_FILEFORMAT_ERROR = 39;//文件格式不正确
+    public static final int NET_DVR_DIR_ERROR = 40;    //路径错误
+    public static final int NET_DVR_ALLOC_RESOURCE_ERROR = 41;//资源分配错误
+    public static final int NET_DVR_AUDIO_MODE_ERROR = 42;    //声卡模式错误
+    public static final int NET_DVR_NOENOUGH_BUF = 43;    //缓冲区太小
+    public static final int NET_DVR_CREATESOCKET_ERROR = 44;    //创建SOCKET出错
+    public static final int NET_DVR_SETSOCKET_ERROR = 45;    //设置SOCKET出错
+    public static final int NET_DVR_MAX_NUM = 46;    //个数达到最大
+    public static final int NET_DVR_USERNOTEXIST = 47;    //用户不存在
+    public static final int NET_DVR_WRITEFLASHERROR = 48;//写FLASH出错
+    public static final int NET_DVR_UPGRADEFAIL = 49;//DVR升级失败
+    public static final int NET_DVR_CARDHAVEINIT = 50; //解码卡已经初始化过
+    public static final int NET_DVR_PLAYERFAILED = 51;    //调用播放库中某个函数失败
+    public static final int NET_DVR_MAX_USERNUM = 52; //设备端用户数达到最大
+    public static final int NET_DVR_GETLOCALIPANDMACFAIL = 53;//获得客户端的IP地址或物理地址失败
+    public static final int NET_DVR_NOENCODEING = 54;    //该通道没有编码
+    public static final int NET_DVR_IPMISMATCH = 55;    //IP地址不匹配
+    public static final int NET_DVR_MACMISMATCH = 56;//MAC地址不匹配
+    public static final int NET_DVR_UPGRADELANGMISMATCH = 57;//升级文件语言不匹配
+    public static final int NET_DVR_MAX_PLAYERPORT = 58;//播放器路数达到最大
+    public static final int NET_DVR_NOSPACEBACKUP = 59;//备份设备中没有足够空间进行备份
+    public static final int NET_DVR_NODEVICEBACKUP = 60;    //没有找到指定的备份设备
+    public static final int NET_DVR_PICTURE_BITS_ERROR = 61;    //图像素位数不符,限24色
+    public static final int NET_DVR_PICTURE_DIMENSION_ERROR = 62;//图片高*宽超限, 限128*256
+    public static final int NET_DVR_PICTURE_SIZ_ERROR = 63;    //图片大小超限,限100K
+    public static final int NET_DVR_LOADPLAYERSDKFAILED = 64;    //载入当前目录下Player Sdk出错
+    public static final int NET_DVR_LOADPLAYERSDKPROC_ERROR = 65;    //找不到Player Sdk中某个函数入口
+    public static final int NET_DVR_LOADDSSDKFAILED = 66;    //载入当前目录下DSsdk出错
+    public static final int NET_DVR_LOADDSSDKPROC_ERROR = 67;    //找不到DsSdk中某个函数入口
+    public static final int NET_DVR_DSSDK_ERROR = 68;    //调用硬解码库DsSdk中某个函数失败
+    public static final int NET_DVR_VOICEMONOPOLIZE = 69;    //声卡被独占
+    public static final int NET_DVR_JOINMULTICASTFAILED = 70;    //加入多播组失败
+    public static final int NET_DVR_CREATEDIR_ERROR = 71;    //建立日志文件目录失败
+    public static final int NET_DVR_BINDSOCKET_ERROR = 72;    //绑定套接字失败
+    public static final int NET_DVR_SOCKETCLOSE_ERROR = 73;    //socket连接中断,此错误通常是由于连接中断或目的地不可达
+    public static final int NET_DVR_USERID_ISUSING = 74;    //注销时用户ID正在进行某操作
+    public static final int NET_DVR_SOCKETLISTEN_ERROR = 75;    //监听失败
+    public static final int NET_DVR_PROGRAM_EXCEPTION = 76;    //程序异常
+    public static final int NET_DVR_WRITEFILE_FAILED = 77;    //写文件失败
+    public static final int NET_DVR_FORMAT_READONLY = 78;//禁止格式化只读硬盘
+    public static final int NET_DVR_WITHSAMEUSERNAME = 79;//用户配置结构中存在相同的用户名
+    public static final int NET_DVR_DEVICETYPE_ERROR = 80; /*导入参数时设备型号不匹配*/
+    public static final int NET_DVR_LANGUAGE_ERROR = 81; /*导入参数时语言不匹配*/
+    public static final int NET_DVR_PARAVERSION_ERROR = 82; /*导入参数时软件版本不匹配*/
+    public static final int NET_DVR_IPCHAN_NOTALIVE = 83; /*预览时外接IP通道不在线*/
+    public static final int NET_DVR_RTSP_SDK_ERROR = 84;    /*加载高清IPC通讯库StreamTransClient.dll失败*/
+    public static final int NET_DVR_CONVERT_SDK_ERROR = 85;    /*加载转码库失败*/
+    public static final int NET_DVR_IPC_COUNT_OVERFLOW = 86; /*超出最大的ip接入通道数*/
+    public static final int NET_PLAYM4_NOERROR = 500;    //no error
+    public static final int NET_PLAYM4_PARA_OVER = 501;//input parameter is invalid;
+    public static final int NET_PLAYM4_ORDER_ERROR = 502;//The order of the function to be called is error.
+    public static final int NET_PLAYM4_TIMER_ERROR = 503;//Create multimedia clock failed;
+    public static final int NET_PLAYM4_DEC_VIDEO_ERROR = 504;//Decode video data failed.
+    public static final int NET_PLAYM4_DEC_AUDIO_ERROR = 505;//Decode audio data failed.
+    public static final int NET_PLAYM4_ALLOC_MEMORY_ERROR = 506;    //Allocate memory failed.
+    public static final int NET_PLAYM4_OPEN_FILE_ERROR = 507;    //Open the file failed.
+    public static final int NET_PLAYM4_CREATE_OBJ_ERROR = 508;//Create thread or event failed
+    public static final int NET_PLAYM4_CREATE_DDRAW_ERROR = 509;//Create DirectDraw object failed.
+    public static final int NET_PLAYM4_CREATE_OFFSCREEN_ERROR = 510;//failed when creating off-screen surface.
+    public static final int NET_PLAYM4_BUF_OVER = 511;    //buffer is overflow
+    public static final int NET_PLAYM4_CREATE_SOUND_ERROR = 512;    //failed when creating audio device.
+    public static final int NET_PLAYM4_SET_VOLUME_ERROR = 513;//Set volume failed
+    public static final int NET_PLAYM4_SUPPORT_FILE_ONLY = 514;//The function only support play file.
+    public static final int NET_PLAYM4_SUPPORT_STREAM_ONLY = 515;//The function only support play stream.
+    public static final int NET_PLAYM4_SYS_NOT_SUPPORT = 516;//System not support.
+    public static final int NET_PLAYM4_FILEHEADER_UNKNOWN = 517;    //No file header.
+    public static final int NET_PLAYM4_VERSION_INCORRECT = 518;    //The version of decoder and encoder is not adapted.
+    public static final int NET_PALYM4_INIT_DECODER_ERROR = 519;    //Initialize decoder failed.
+    public static final int NET_PLAYM4_CHECK_FILE_ERROR = 520;    //The file data is unknown.
+    public static final int NET_PLAYM4_INIT_TIMER_ERROR = 521;    //Initialize multimedia clock failed.
+    public static final int NET_PLAYM4_BLT_ERROR = 522;//Blt failed.
+    public static final int NET_PLAYM4_UPDATE_ERROR = 523;//Update failed.
+    public static final int NET_PLAYM4_OPEN_FILE_ERROR_MULTI = 524; //openfile error, streamtype is multi
+    public static final int NET_PLAYM4_OPEN_FILE_ERROR_VIDEO = 525; //openfile error, streamtype is video
+    public static final int NET_PLAYM4_JPEG_COMPRESS_ERROR = 526; //JPEG compress error
+    public static final int NET_PLAYM4_EXTRACT_NOT_SUPPORT = 527;    //Don't support the version of this file.
+    public static final int NET_PLAYM4_EXTRACT_DATA_ERROR = 528;    //extract video data failed.
+    /*******************全局错误码 end**********************/
+    /*************************************************
+     * NET_DVR_IsSupport()返回值
+     * 1-9位分别表示以下信息(位与是TRUE)表示支持;
+     **************************************************/
+    public static final int NET_DVR_SUPPORT_DDRAW = 0x01;//支持DIRECTDRAW,如果不支持,则播放器不能工作;
+    public static final int NET_DVR_SUPPORT_BLT = 0x02;//显卡支持BLT操作,如果不支持,则播放器不能工作;
+    public static final int NET_DVR_SUPPORT_BLTFOURCC = 0x04;//显卡BLT支持颜色转换,如果不支持,播放器会用软件方法作RGB转换;
+    public static final int NET_DVR_SUPPORT_BLTSHRINKX = 0x08;//显卡BLT支持X轴缩小;如果不支持,系统会用软件方法转换;
+    public static final int NET_DVR_SUPPORT_BLTSHRINKY = 0x10;//显卡BLT支持Y轴缩小;如果不支持,系统会用软件方法转换;
+    public static final int NET_DVR_SUPPORT_BLTSTRETCHX = 0x20;//显卡BLT支持X轴放大;如果不支持,系统会用软件方法转换;
+    public static final int NET_DVR_SUPPORT_BLTSTRETCHY = 0x40;//显卡BLT支持Y轴放大;如果不支持,系统会用软件方法转换;
+    public static final int NET_DVR_SUPPORT_SSE = 0x80;//CPU支持SSE指令,Intel Pentium3以上支持SSE指令;
+    public static final int NET_DVR_SUPPORT_MMX = 0x100;//CPU支持MMX指令集,Intel Pentium3以上支持SSE指令;
+    /**********************
+     * 云台控制命令 begin
+     *************************/
+    public static final int LIGHT_PWRON = 2;    /* 接通灯光电源 */
+    public static final int WIPER_PWRON = 3;    /* 接通雨刷开关 */
+    public static final int FAN_PWRON = 4;    /* 接通风扇开关 */
+    public static final int HEATER_PWRON = 5;    /* 接通加热器开关 */
+    public static final int AUX_PWRON1 = 6;    /* 接通辅助设备开关 */
+    public static final int AUX_PWRON2 = 7;    /* 接通辅助设备开关 */
+    public static final int SET_PRESET = 8;    /* 设置预置点 */
+    public static final int CLE_PRESET = 9;    /* 清除预置点 */
+    public static final int ZOOM_IN = 11;    /* 焦距以速度SS变大(倍率变大) */
+    public static final int ZOOM_OUT = 12;    /* 焦距以速度SS变小(倍率变小) */
+    public static final int FOCUS_NEAR = 13; /* 焦点以速度SS前调 */
+    public static final int FOCUS_FAR = 14; /* 焦点以速度SS后调 */
+    public static final int IRIS_OPEN = 15; /* 光圈以速度SS扩大 */
+    public static final int IRIS_CLOSE = 16; /* 光圈以速度SS缩小 */
+    public static final int TILT_UP = 21;    /* 云台以SS的速度上仰 */
+    public static final int TILT_DOWN = 22;    /* 云台以SS的速度下俯 */
+    public static final int PAN_LEFT = 23;    /* 云台以SS的速度左转 */
+    public static final int PAN_RIGHT = 24;    /* 云台以SS的速度右转 */
+    public static final int UP_LEFT = 25;    /* 云台以SS的速度上仰和左转 */
+    public static final int UP_RIGHT = 26;    /* 云台以SS的速度上仰和右转 */
+    public static final int DOWN_LEFT = 27;    /* 云台以SS的速度下俯和左转 */
+    public static final int DOWN_RIGHT = 28;    /* 云台以SS的速度下俯和右转 */
+    public static final int PAN_AUTO = 29;    /* 云台以SS的速度左右自动扫描 */
+    public static final int FILL_PRE_SEQ = 30;    /* 将预置点加入巡航序列 */
+    public static final int SET_SEQ_DWELL = 31;    /* 设置巡航点停顿时间 */
+    public static final int SET_SEQ_SPEED = 32;    /* 设置巡航速度 */
+    public static final int CLE_PRE_SEQ = 33;/* 将预置点从巡航序列中删除 */
+    public static final int STA_MEM_CRUISE = 34;/* 开始记录轨迹 */
+    public static final int STO_MEM_CRUISE = 35;/* 停止记录轨迹 */
+    public static final int RUN_CRUISE = 36;    /* 开始轨迹 */
+    public static final int RUN_SEQ = 37;    /* 开始巡航 */
+    public static final int STOP_SEQ = 38;    /* 停止巡航 */
+    public static final int GOTO_PRESET = 39;    /* 快球转到预置点 */
+
+    /**********************云台控制命令 end*************************/
+    /*************************************************
+     * 回放时播放控制命令宏定义
+     * NET_DVR_PlayBackControl
+     * NET_DVR_PlayControlLocDisplay
+     * NET_DVR_DecPlayBackCtrl的宏定义
+     * 具体支持查看函数说明和代码
+     **************************************************/
+    public static final int NET_DVR_PLAYSTART = 1;//开始播放
+    public static final int NET_DVR_PLAYSTOP = 2;//停止播放
+    public static final int NET_DVR_PLAYPAUSE = 3;//暂停播放
+    public static final int NET_DVR_PLAYRESTART = 4;//恢复播放
+    public static final int NET_DVR_PLAYFAST = 5;//快放
+    public static final int NET_DVR_PLAYSLOW = 6;//慢放
+    public static final int NET_DVR_PLAYNORMAL = 7;//正常速度
+    public static final int NET_DVR_PLAYFRAME = 8;//单帧放
+    public static final int NET_DVR_PLAYSTARTAUDIO = 9;//打开声音
+    public static final int NET_DVR_PLAYSTOPAUDIO = 10;//关闭声音
+    public static final int NET_DVR_PLAYAUDIOVOLUME = 11;//调节音量
+    public static final int NET_DVR_PLAYSETPOS = 12;//改变文件回放的进度
+    public static final int NET_DVR_PLAYGETPOS = 13;//获取文件回放的进度
+    public static final int NET_DVR_PLAYGETTIME = 14;//获取当前已经播放的时间(按文件回放的时候有效)
+    public static final int NET_DVR_PLAYGETFRAME = 15;//获取当前已经播放的帧数(按文件回放的时候有效)
+    public static final int NET_DVR_GETTOTALFRAMES = 16;//获取当前播放文件总的帧数(按文件回放的时候有效)
+    public static final int NET_DVR_GETTOTALTIME = 17;//获取当前播放文件总的时间(按文件回放的时候有效)
+    public static final int NET_DVR_THROWBFRAME = 20;//丢B帧
+    public static final int NET_DVR_SETSPEED = 24;//设置码流速度
+    public static final int NET_DVR_KEEPALIVE = 25;//保持与设备的心跳(如果回调阻塞,建议2秒发送一次)
+    public static final int NET_DVR_SET_TRANS_TYPE = 32; //设置转码格式
+
+    //远程按键定义如下:
+    /* key value send to CONFIG program */
+    public static final int KEY_CODE_1 = 1;
+    public static final int KEY_CODE_2 = 2;
+    public static final int KEY_CODE_3 = 3;
+    public static final int KEY_CODE_4 = 4;
+    public static final int KEY_CODE_5 = 5;
+    public static final int KEY_CODE_6 = 6;
+    public static final int KEY_CODE_7 = 7;
+    public static final int KEY_CODE_8 = 8;
+    public static final int KEY_CODE_9 = 9;
+    public static final int KEY_CODE_0 = 10;
+    public static final int KEY_CODE_POWER = 11;
+    public static final int KEY_CODE_MENU = 12;
+    public static final int KEY_CODE_ENTER = 13;
+    public static final int KEY_CODE_CANCEL = 14;
+    public static final int KEY_CODE_UP = 15;
+    public static final int KEY_CODE_DOWN = 16;
+    public static final int KEY_CODE_LEFT = 17;
+    public static final int KEY_CODE_RIGHT = 18;
+    public static final int KEY_CODE_EDIT = 19;
+    public static final int KEY_CODE_ADD = 20;
+    public static final int KEY_CODE_MINUS = 21;
+    public static final int KEY_CODE_PLAY = 22;
+    public static final int KEY_CODE_REC = 23;
+    public static final int KEY_CODE_PAN = 24;
+    public static final int KEY_CODE_M = 25;
+    public static final int KEY_CODE_A = 26;
+    public static final int KEY_CODE_F1 = 27;
+    public static final int KEY_CODE_F2 = 28;
+
+    /* for PTZ control */
+    public static final int KEY_PTZ_UP_START = KEY_CODE_UP;
+    public static final int KEY_PTZ_UP_STO = 32;
+    public static final int KEY_PTZ_DOWN_START = KEY_CODE_DOWN;
+    public static final int KEY_PTZ_DOWN_STOP = 33;
+    public static final int KEY_PTZ_LEFT_START = KEY_CODE_LEFT;
+    public static final int KEY_PTZ_LEFT_STOP = 34;
+    public static final int KEY_PTZ_RIGHT_START = KEY_CODE_RIGHT;
+    public static final int KEY_PTZ_RIGHT_STOP = 35;
+    public static final int KEY_PTZ_AP1_START = KEY_CODE_EDIT;/* 光圈+ */
+    public static final int KEY_PTZ_AP1_STOP = 36;
+    public static final int KEY_PTZ_AP2_START = KEY_CODE_PAN;/* 光圈- */
+    public static final int KEY_PTZ_AP2_STOP = 37;
+    public static final int KEY_PTZ_FOCUS1_START = KEY_CODE_A;/* 聚焦+ */
+    public static final int KEY_PTZ_FOCUS1_STOP = 38;
+    public static final int KEY_PTZ_FOCUS2_START = KEY_CODE_M;/* 聚焦- */
+    public static final int KEY_PTZ_FOCUS2_STOP = 39;
+    public static final int KEY_PTZ_B1_START = 40;/* 变倍+ */
+    public static final int KEY_PTZ_B1_STOP = 41;
+    public static final int KEY_PTZ_B2_START = 42;/* 变倍- */
+    public static final int KEY_PTZ_B2_STOP = 43;
+    //9000新增
+    public static final int KEY_CODE_11 = 44;
+    public static final int KEY_CODE_12 = 45;
+    public static final int KEY_CODE_13 = 46;
+    public static final int KEY_CODE_14 = 47;
+    public static final int KEY_CODE_15 = 48;
+    public static final int KEY_CODE_16 = 49;
+    /*************************
+     * 参数配置命令 begin
+     *******************************/
+//用于NET_DVR_SetDVRConfig和NET_DVR_GetDVRConfig,注意其对应的配置结构
+    public static final int NET_DVR_GET_DEVICECFG = 100;    //获取设备参数
+    public static final int NET_DVR_SET_DEVICECFG = 101;    //设置设备参数
+    public static final int NET_DVR_GET_DEVICECFG_V40 = 1100; //获取扩展设备参数
+    public static final int NET_DVR_SET_DEVICECFG_V40 = 1101; //设置扩展设备参数
+    public static final int NET_DVR_GET_NETCFG = 102;    //获取网络参数
+    public static final int NET_DVR_SET_NETCFG = 103;    //设置网络参数
+    public static final int NET_DVR_GET_PICCFG = 104;    //获取图象参数
+    public static final int NET_DVR_SET_PICCFG = 105;    //设置图象参数
+    public static final int NET_DVR_GET_COMPRESSCFG = 106;    //获取压缩参数
+    public static final int NET_DVR_SET_COMPRESSCFG = 107;    //设置压缩参数
+    public static final int NET_DVR_GET_RECORDCFG = 108;    //获取录像时间参数
+    public static final int NET_DVR_SET_RECORDCFG = 109;    //设置录像时间参数
+    public static final int NET_DVR_GET_DECODERCFG = 110;    //获取解码器参数
+    public static final int NET_DVR_SET_DECODERCFG = 111;    //设置解码器参数
+    public static final int NET_DVR_GET_RS232CFG = 112;    //获取232串口参数
+    public static final int NET_DVR_SET_RS232CFG = 113;    //设置232串口参数
+    public static final int NET_DVR_GET_ALARMINCFG = 114;    //获取报警输入参数
+    public static final int NET_DVR_SET_ALARMINCFG = 115;    //设置报警输入参数
+    public static final int NET_DVR_GET_ALARMOUTCFG = 116;    //获取报警输出参数
+    public static final int NET_DVR_SET_ALARMOUTCFG = 117;    //设置报警输出参数
+    public static final int NET_DVR_GET_TIMECFG = 118;    //获取DVR时间
+    public static final int NET_DVR_SET_TIMECFG = 119;        //设置DVR时间
+    public static final int NET_DVR_GET_PREVIEWCFG = 120;    //获取预览参数
+    public static final int NET_DVR_SET_PREVIEWCFG = 121;    //设置预览参数
+    public static final int NET_DVR_GET_VIDEOOUTCFG = 122;    //获取视频输出参数
+    public static final int NET_DVR_SET_VIDEOOUTCFG = 123;    //设置视频输出参数
+    public static final int NET_DVR_GET_USERCFG = 124;    //获取用户参数
+    public static final int NET_DVR_SET_USERCFG = 125;    //设置用户参数
+    public static final int NET_DVR_GET_EXCEPTIONCFG = 126;    //获取异常参数
+    public static final int NET_DVR_SET_EXCEPTIONCFG = 127;    //设置异常参数
+    public static final int NET_DVR_GET_ZONEANDDST = 128;    //获取时区和夏时制参数
+    public static final int NET_DVR_SET_ZONEANDDST = 129;    //设置时区和夏时制参数
+    public static final int NET_DVR_GET_SHOWSTRING = 130;    //获取叠加字符参数
+    public static final int NET_DVR_SET_SHOWSTRING = 131;    //设置叠加字符参数
+    public static final int NET_DVR_GET_EVENTCOMPCFG = 132;    //获取事件触发录像参数
+    public static final int NET_DVR_SET_EVENTCOMPCFG = 133;    //设置事件触发录像参数
+    public static final int NET_DVR_GET_AUXOUTCFG = 140;    //获取报警触发辅助输出设置(HS设备辅助输出2006-02-28)
+    public static final int NET_DVR_SET_AUXOUTCFG = 141;    //设置报警触发辅助输出设置(HS设备辅助输出2006-02-28)
+    public static final int NET_DVR_GET_PREVIEWCFG_AUX = 142;    //获取-s系列双输出预览参数(-s系列双输出2006-04-13)
+    public static final int NET_DVR_SET_PREVIEWCFG_AUX = 143;    //设置-s系列双输出预览参数(-s系列双输出2006-04-13)
+    public static final int NET_DVR_GET_PICCFG_EX = 200;    //获取图象参数(SDK_V14扩展命令)
+    public static final int NET_DVR_SET_PICCFG_EX = 201;    //设置图象参数(SDK_V14扩展命令)
+    public static final int NET_DVR_GET_USERCFG_EX = 202;    //获取用户参数(SDK_V15扩展命令)
+    public static final int NET_DVR_SET_USERCFG_EX = 203;    //设置用户参数(SDK_V15扩展命令)
+    public static final int NET_DVR_GET_COMPRESSCFG_EX = 204;    //获取压缩参数(SDK_V15扩展命令2006-05-15)
+    public static final int NET_DVR_SET_COMPRESSCFG_EX = 205;    //设置压缩参数(SDK_V15扩展命令2006-05-15)
+    public static final int NET_DVR_GET_NETAPPCFG = 222;    //获取网络应用参数 NTP/DDNS/EMAIL
+    public static final int NET_DVR_SET_NETAPPCFG = 223;    //设置网络应用参数 NTP/DDNS/EMAIL
+    public static final int NET_DVR_GET_NTPCFG = 224;    //获取网络应用参数 NTP
+    public static final int NET_DVR_SET_NTPCFG = 225;    //设置网络应用参数 NTP
+    public static final int NET_DVR_GET_DDNSCFG = 226;    //获取网络应用参数 DDNS
+    public static final int NET_DVR_SET_DDNSCFG = 227;        //设置网络应用参数 DDNS
+    //对应NET_DVR_EMAILPARA
+    public static final int NET_DVR_GET_EMAILCFG = 228;    //获取网络应用参数 EMAIL
+    public static final int NET_DVR_SET_EMAILCFG = 229;    //设置网络应用参数 EMAIL
+    public static final int NET_DVR_GET_NFSCFG = 230;    /* NFS disk config */
+    public static final int NET_DVR_SET_NFSCFG = 231;    /* NFS disk config */
+    public static final int NET_DVR_GET_SHOWSTRING_EX = 238;    //获取叠加字符参数扩展(支持8条字符)
+    public static final int NET_DVR_SET_SHOWSTRING_EX = 239;    //设置叠加字符参数扩展(支持8条字符)
+    public static final int NET_DVR_GET_NETCFG_OTHER = 244;    //获取网络参数
+    public static final int NET_DVR_SET_NETCFG_OTHER = 245;    //设置网络参数
+    //对应NET_DVR_EMAILCFG结构
+    public static final int NET_DVR_GET_EMAILPARACFG = 250;    //Get EMAIL parameters
+    public static final int NET_DVR_SET_EMAILPARACFG = 251;    //Setup EMAIL parameters
+    public static final int NET_DVR_GET_DDNSCFG_EX = 274;//获取扩展DDNS参数
+    public static final int NET_DVR_SET_DDNSCFG_EX = 275;//设置扩展DDNS参数
+    public static final int NET_DVR_SET_PTZPOS = 292;    //云台设置PTZ位置
+    public static final int NET_DVR_GET_PTZPOS = 293;        //云台获取PTZ位置
+    public static final int NET_DVR_GET_PTZSCOPE = 294;//云台获取PTZ范围
+
+    public static final int NET_DVR_COMPLETE_RESTORE_CTRL = 3420;    //设置完全恢复出厂值
+    /***************************
+     * DS9000新增命令(_V30) begin
+     *****************************/
+//网络(NET_DVR_NETCFG_V30结构)
+    public static final int NET_DVR_GET_NETCFG_V30 = 1000;    //获取网络参数
+    public static final int NET_DVR_SET_NETCFG_V30 = 1001;    //设置网络参数
+    //图象(NET_DVR_PICCFG_V30结构)
+    public static final int NET_DVR_GET_PICCFG_V30 = 1002;    //获取图象参数
+    public static final int NET_DVR_SET_PICCFG_V30 = 1003;    //设置图象参数
+    public static final int NET_DVR_GET_PICCFG_V40 = 6179;   //获取图象参数
+    public static final int NET_DVR_SET_PICCFG_V40 = 6180;   //设置图象参数
+    public static final int NET_DVR_GET_AES_KEY = 6113;    //获取设备AES加密密钥
+    //录像时间(NET_DVR_RECORD_V30结构)
+    public static final int NET_DVR_GET_RECORDCFG_V30 = 1004;    //获取录像参数
+    public static final int NET_DVR_SET_RECORDCFG_V30 = 1005;    //设置录像参数
+    //用户(NET_DVR_USER_V30结构)
+    public static final int NET_DVR_GET_USERCFG_V30 = 1006;    //获取用户参数
+    public static final int NET_DVR_SET_USERCFG_V30 = 1007;    //设置用户参数
+    //9000DDNS参数配置(NET_DVR_DDNSPARA_V30结构)
+    public static final int NET_DVR_GET_DDNSCFG_V30 = 1010;    //获取DDNS(9000扩展)
+    public static final int NET_DVR_SET_DDNSCFG_V30 = 1011;    //设置DDNS(9000扩展)
+    //EMAIL功能(NET_DVR_EMAILCFG_V30结构)
+    public static final int NET_DVR_GET_EMAILCFG_V30 = 1012;//获取EMAIL参数
+    public static final int NET_DVR_SET_EMAILCFG_V30 = 1013;//设置EMAIL参数
+    //巡航参数 (NET_DVR_CRUISE_PARA结构)
+    public static final int NET_DVR_GET_CRUISE = 1020;
+    public static final int NET_DVR_SET_CRUISE = 1021;
+    //报警输入结构参数 (NET_DVR_ALARMINCFG_V30结构)
+    public static final int NET_DVR_GET_ALARMINCFG_V30 = 1024;
+    public static final int NET_DVR_SET_ALARMINCFG_V30 = 1025;
+    //报警输出结构参数 (NET_DVR_ALARMOUTCFG_V30结构)
+    public static final int NET_DVR_GET_ALARMOUTCFG_V30 = 1026;
+    public static final int NET_DVR_SET_ALARMOUTCFG_V30 = 1027;
+    //视频输出结构参数 (NET_DVR_VIDEOOUT_V30结构)
+    public static final int NET_DVR_GET_VIDEOOUTCFG_V30 = 1028;
+    public static final int NET_DVR_SET_VIDEOOUTCFG_V30 = 1029;
+    //叠加字符结构参数 (NET_DVR_SHOWSTRING_V30结构)
+    public static final int NET_DVR_GET_SHOWSTRING_V30 = 1030;
+    public static final int NET_DVR_SET_SHOWSTRING_V30 = 1031;
+    //异常结构参数 (NET_DVR_EXCEPTION_V30结构)
+    public static final int NET_DVR_GET_EXCEPTIONCFG_V30 = 1034;
+    public static final int NET_DVR_SET_EXCEPTIONCFG_V30 = 1035;
+    //串口232结构参数 (NET_DVR_RS232CFG_V30结构)
+    public static final int NET_DVR_GET_RS232CFG_V30 = 1036;
+    public static final int NET_DVR_SET_RS232CFG_V30 = 1037;
+    //压缩参数 (NET_DVR_COMPRESSIONCFG_V30结构)
+    public static final int NET_DVR_GET_COMPRESSCFG_V30 = 1040;
+    public static final int NET_DVR_SET_COMPRESSCFG_V30 = 1041;
+    //获取485解码器参数 (NET_DVR_DECODERCFG_V30结构)
+    public static final int NET_DVR_GET_DECODERCFG_V30 = 1042;    //获取解码器参数
+    public static final int NET_DVR_SET_DECODERCFG_V30 = 1043;    //设置解码器参数
+    //获取预览参数 (NET_DVR_PREVIEWCFG_V30结构)
+    public static final int NET_DVR_GET_PREVIEWCFG_V30 = 1044;    //获取预览参数
+    public static final int NET_DVR_SET_PREVIEWCFG_V30 = 1045;    //设置预览参数
+    //辅助预览参数 (NET_DVR_PREVIEWCFG_AUX_V30结构)
+    public static final int NET_DVR_GET_PREVIEWCFG_AUX_V30 = 1046;    //获取辅助预览参数
+    public static final int NET_DVR_SET_PREVIEWCFG_AUX_V30 = 1047;    //设置辅助预览参数
+    //IP接入配置参数 (NET_DVR_IPPARACFG结构)
+    public static final int NET_DVR_GET_IPPARACFG = 1048;    //获取IP接入配置信息
+    public static final int NET_DVR_SET_IPPARACFG = 1049;    //设置IP接入配置信息
+    //IP接入配置参数V40 (NET_DVR_IPPARACFG_V40结构)
+    public static final int NET_DVR_GET_IPPARACFG_V40 = 1062;    //获取IP接入配置信息
+    public static final int NET_DVR_SET_IPPARACFG_V40 = 1063;    //设置IP接入配置信息
+    //IP报警输入接入配置参数 (NET_DVR_IPALARMINCFG结构)
+    public static final int NET_DVR_GET_IPALARMINCFG = 1050;    //获取IP报警输入接入配置信息
+    public static final int NET_DVR_SET_IPALARMINCFG = 1051;   //设置IP报警输入接入配置信息
+    //IP报警输出接入配置参数 (NET_DVR_IPALARMOUTCFG结构)
+    public static final int NET_DVR_GET_IPALARMOUTCFG = 1052;   //获取IP报警输出接入配置信息
+    public static final int NET_DVR_SET_IPALARMOUTCFG = 1053;  //设置IP报警输出接入配置信息
+    //硬盘管理的参数获取 (NET_DVR_HDCFG结构)
+    public static final int NET_DVR_GET_HDCFG = 1054;    //获取硬盘管理配置参数
+    public static final int NET_DVR_SET_HDCFG = 1055;    //设置硬盘管理配置参数
+    //盘组管理的参数获取 (NET_DVR_HDGROUP_CFG结构)
+    public static final int NET_DVR_GET_HDGROUP_CFG = 1056;    //获取盘组管理配置参数
+    public static final int NET_DVR_SET_HDGROUP_CFG = 1057;    //设置盘组管理配置参数
+    //设备编码类型配置(NET_DVR_COMPRESSION_AUDIO结构)
+    public static final int NET_DVR_GET_COMPRESSCFG_AUD = 1058;     //获取设备语音对讲编码参数
+    public static final int NET_DVR_SET_COMPRESSCFG_AUD = 1059;     //设置设备语音对讲编码参数
+
+    public static final int NET_SDK_FINDMEDICALFILE = 3954;    //慧影科技智慧医疗查找录像文件
+    public static final int NET_SDK_FINDMEDICALPICTURE = 3955;    //慧影科技智慧医疗查找图片文件
+
+    public static final int NET_DVR_GET_RAPIDMOVE_DETECTION = 3539;    //获取快速运动侦测配置
+    public static final int NET_DVR_SET_RAPIDMOVE_DETECTION = 3540;    //设置快速运动侦测配置
+
+    public static final int NET_DVR_GET_RAPIDMOVE_TRIGGER = 3543;    //获取快速运动联动配置
+    public static final int NET_DVR_SET_RAPIDMOVE_TRIGGER = 3544;    //设置快速运动联动配置
+    public static final int NET_DVR_GET_RAPIDMOVE_SCHEDULE = 3545;    //获取快速运动的布防时间配置
+    public static final int NET_DVR_SET_RAPIDMOVE_SCHEDULE = 3546;    //设置快速运动的布防时间配置
+
+    public static final int NET_DVR_GET_PRESET_NAME = 3383; //获取预置点名称
+    public static final int NET_DVR_SET_PRESET_NAME = 3382; //设置预置点名称
+    public static final int NET_DVR_GET_RULECFG_V42 = 5049;  //获取行为分析参数(支持16条规则扩展)
+    public static final int NET_DVR_SET_RULECFG_V42 = 5050;  //设置行为分析参数(支持16条规则扩展)
+
+    //车牌识别(NET_VCA_PLATE_CFG);
+    public static final int NET_DVR_SET_PLATECFG = 150;//设置车牌识别参数
+
+    public static final int NET_DVR_GET_PLATECFG = 151;    //获取车牌识别参数
+    //行为对应(NET_VCA_RULECFG)
+    public static final int NET_DVR_SET_RULECFG = 152;    //设置行为分析规则
+    public static final int NET_DVR_GET_RULECFG = 153;//获取行为分析规则
+    //双摄像机标定参数(NET_DVR_LF_CFG)
+    public static final int NET_DVR_SET_LF_CFG = 160;//设置双摄像机的配置参数
+    public static final int NET_DVR_GET_LF_CFG = 161;//获取双摄像机的配置参数
+    //智能分析仪取流配置结构
+    public static final int NET_DVR_SET_IVMS_STREAMCFG = 162;    //设置智能分析仪取流参数
+    public static final int NET_DVR_GET_IVMS_STREAMCFG = 163;    //获取智能分析仪取流参数
+    //智能控制参数结构
+    public static final int NET_DVR_SET_VCA_CTRLCFG = 164; //设置智能控制参数
+    public static final int NET_DVR_GET_VCA_CTRLCFG = 165;     //获取智能控制参数
+    //屏蔽区域NET_VCA_MASK_REGION_LIST
+    public static final int NET_DVR_SET_VCA_MASK_REGION = 166;     //设置屏蔽区域参数
+    public static final int NET_DVR_GET_VCA_MASK_REGION = 167;     //获取屏蔽区域参数
+    //ATM进入区域 NET_VCA_ENTER_REGION
+    public static final int NET_DVR_SET_VCA_ENTER_REGION = 168; //设置进入区域参数
+    public static final int NET_DVR_GET_VCA_ENTER_REGION = 169;     //获取进入区域参数
+    //标定线配置NET_VCA_LINE_SEGMENT_LIST
+    public static final int NET_DVR_SET_VCA_LINE_SEGMENT = 170;     //设置标定线
+    public static final int NET_DVR_GET_VCA_LINE_SEGMENT = 171;     //获取标定线
+    // ivms屏蔽区域NET_IVMS_MASK_REGION_LIST
+    public static final int NET_DVR_SET_IVMS_MASK_REGION = 172;     //设置IVMS屏蔽区域参数
+    public static final int NET_DVR_GET_IVMS_MASK_REGION = 173;     //获取IVMS屏蔽区域参数
+    // ivms进入检测区域NET_IVMS_ENTER_REGION
+    public static final int NET_DVR_SET_IVMS_ENTER_REGION = 174; //设置IVMS进入区域参数
+    public static final int NET_DVR_GET_IVMS_ENTER_REGION = 175; //获取IVMS进入区域参数
+    public static final int NET_DVR_SET_IVMS_BEHAVIORCFG = 176;//设置智能分析仪行为规则参数
+    public static final int NET_DVR_GET_IVMS_BEHAVIORCFG = 177;    //获取智能分析仪行为规则参数
+    public static final int NET_DVR_GET_TRAVERSE_PLANE_DETECTION = 3360; //获取越界侦测配置
+    public static final int NET_DVR_SET_TRAVERSE_PLANE_DETECTION = 3361;
+    public static final int NET_DVR_GET_FIELD_DETECTION = 3362; //获取区域侦测配置
+    public static final int NET_DVR_SET_FIELD_DETECTION = 3363; //设置区域侦测配置
+
+    public static final int NET_DVR_GET_STREAM_INFO = 6023; //获取已添加流ID信息
+    public static final int NET_DVR_GET_STREAM_RECORD_STATUS = 6021; //获取流状态信息
+
+    public static final int NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST = 3124; //获取所有车辆禁止和允许名单信息
+    public static final int NET_DVR_VEHICLELIST_CTRL_START = 3133; //设置车辆禁止和允许名单信息(批量)
+    public static final int ENUM_SENDDATA = 0x0; //发送数据
+
+    public static final int NET_DVR_GET_LEDDISPLAY_CFG = 3673;
+    public static final int NET_DVR_SET_LEDDISPLAY_CFG = 3672;
+    public static final int NET_DVR_SET_VOICEBROADCAST_CFG = 3675;
+    public static final int NET_DVR_SET_CHARGE_ACCOUNTINFO = 3662;
+
+    public static final int NET_DVR_GET_TRAFFIC_DATA = 3141;   //长连接获取交通数据
+    public static final int NET_DVR_GET_TRAFFIC_FLOW = 3142;   //长连接获取交通流量
+
+    public static final int NET_DVR_GET_CCDPARAMCFG_EX = 3368;//获取前端参数(扩展)
+    public static final int NET_DVR_SET_CCDPARAMCFG_EX = 3369;//设置前端参数(扩展)
+    public static final int NET_DVR_GET_FOCUSMODECFG = 3305;//获取快球聚焦模式信息
+    public static final int NET_DVR_SET_FOCUSMODECFG = 3306;//设置快球聚焦模式信息
+
+    public static final int NET_DVR_GET_SUPPLEMENTLIGHT = 3728;  //获取内置补光灯配置协议
+    public static final int NET_DVR_SET_SUPPLEMENTLIGHT = 3729;  //设置内置补光灯配置协议
+
+    public static final int NET_DVR_GET_FACECONTRAST_TRIGGER = 3965;//获取人脸比对联动配置
+    public static final int NET_DVR_SET_FACECONTRAST_TRIGGER = 3966;//设置人脸比对联动配置
+
+    public static final int NET_DVR_GET_FACECONTRAST_SCHEDULE = 3968;//获取人脸比对布防时间配置
+    public static final int NET_DVR_SET_FACECONTRAST_SCHEDULE = 3969;//设置人脸比对布防时间配置
+
+    public static final int NET_DVR_INQUEST_GET_CDW_STATUS = 6350;  //获取审讯机刻录状态-长连接
+
+    public static final int NET_DVR_GET_REALTIME_THERMOMETRY = 3629; //实时温度检测
+    public static final int NET_DVR_GET_MANUALTHERM_INFO = 6706;     //手动测温实时获取
+    public static final int NET_DVR_GET_THERMOMETRY_MODE = 6765;//获取测温模式参数
+    public static final int NET_DVR_SET_THERMOMETRY_MODE = 6766;//设置测温模式参数
+    public static final int NET_DVR_GET_PTZABSOLUTEEX = 6696;
+    public static final int NET_DVR_GET_THERMOMETRY_PRESETINFO = 3624;  //获取测温预置点关联配置参数
+    public static final int NET_DVR_SET_THERMOMETRY_PRESETINFO = 3625;  //设置测温预置点关联配置参数
+    public static final int NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO = 23001;//手动获取测温规则温度信息
+    public static final int NET_DVR_SET_DEVSERVER_CFG = 3258;//设置模块服务配置
+
+    public static final int NET_DVR_GET_PHY_DISK_INFO = 6306;   //获取物理磁盘信息
+    public static final int NET_DVR_GET_WORK_STATUS = 6189;   //获取设备工作状态
+    public static final int NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION = 6164; //获取月历录像分布
+
+    public static final int NET_DVR_GET_CURTRIGGERMODE = 3130;   //获取设备当前触发模式
+    public static final int NET_ITC_GET_TRIGGERCFG = 3003;  //获取触发参数
+    public static final int NET_ITC_SET_TRIGGERCFG = 3004;  //设置触发参数
+    public static final int NET_ITC_GET_VIDEO_TRIGGERCFG = 3017;  //获取视频电警触发参数
+    public static final int NET_ITC_SET_VIDEO_TRIGGERCFG = 3018;  //设置视频电警触发参数
+
+    public static final int NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG = 3216;//远程获取多码流压缩参数
+    public static final int NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG = 3217;//远程设置多码流压缩参数
+
+    public static final int NET_DVR_GET_CMS_CFG = 2070;
+    public static final int NET_DVR_SET_CMS_CFG = 2071;
+
+    public static final int NET_DVR_GET_ALARM_INFO = 4193;  //获取报警事件数据
+    /***************************DS9000新增命令(_V30) end *****************************/
+
+    /*************************参数配置命令 end*******************************/
+    /*************************************人脸识别门禁一体机1.0 begin**************************************/
+    public static final int NET_DVR_GET_CARD_CFG = 2116; //获取卡参数
+    public static final int NET_DVR_SET_CARD_CFG = 2117; //设置卡参数
+    public static final int NET_DVR_GET_CARD_CFG_V50 = 2178;    //获取新卡参数(V50)
+    public static final int NET_DVR_SET_CARD_CFG_V50 = 2179;    //设置新卡参数(V50)
+    public static final int NET_DVR_GET_FACE_PARAM_CFG = 2507;    //获取人脸参数
+    public static final int NET_DVR_SET_FACE_PARAM_CFG = 2508;    //设置人脸参数
+    public static final int NET_DVR_DEL_FACE_PARAM_CFG = 2509;    //删除人脸参数
+    public static final int NET_DVR_CLEAR_ACS_PARAM = 2118; //清空门禁主机参数
+    public static final int NET_DVR_DEL_FINGERPRINT_CFG = 2152; //删除指纹参数
+    public static final int NET_DVR_GET_FINGERPRINT_CFG_V50 = 2183;    //获取指纹参数V50
+    public static final int NET_DVR_SET_FINGERPRINT_CFG_V50 = 2184;   //设置指纹参数V50
+    public static final int NET_DVR_DEL_FINGERPRINT_CFG_V50 = 2517;    //删除指纹参数V50
+    public static final int NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 = 2304;  //获取卡权限周计划参数V50
+    public static final int NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 = 2305;  //设置卡权限周计划参数V50
+    public static final int NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2322; //获取卡权限计划模板参数V50
+    public static final int NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 = 2323;//设置卡权限计划模板参数V50
+    public static final int NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE = 2107; //设置门状态计划模板参数
+    public static final int NET_DVR_GET_DOOR_CFG = 2108;    //获取门参数
+    public static final int NET_DVR_SET_DOOR_CFG = 2109;    //设置门参数
+    public static final int NET_DVR_GET_DOOR_STATUS_PLAN = 2110; //获取门状态计划参数
+    public static final int NET_DVR_SET_DOOR_STATUS_PLAN = 2111; //设置门状态计划参数
+    public static final int NET_DVR_GET_WEEK_PLAN_CFG = 2100; //获取门状态周计划参数
+    public static final int NET_DVR_SET_WEEK_PLAN_CFG = 2101; //设置门状态周计划参数
+    public static final int NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 = 2181;    //获取事件卡号联动配置参数(V50)
+    public static final int NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 = 2182;    //设置事件卡号联动配置参数(V50)
+    public static final int NET_DVR_CAPTURE_FACE_INFO = 2510;    //采集人脸信息
+    public static final int NET_DVR_CAPTURE_FINGERPRINT_INFO = 2504; //采集指纹信息
+    public static final int NET_DVR_GET_ACS_EVENT = 2514;//设备事件获取
+    public static final int NET_DVR_GET_CARD_READER_CFG_V50 = 2505;    //获取读卡器参数(V50)
+    public static final int NET_DVR_SET_CARD_READER_CFG_V50 = 2506;   //设置读卡器参数(V50)
+    public static final int NET_DVR_GET_REGISTER_INFO = 2511;    //登记信息获取
+    public static final int NET_DVR_GET_SMSRELATIVEPARA_V50 = 2512;   //获取短信相关参数
+    public static final int NET_DVR_SET_SMSRELATIVEPARA_V50 = 2513;    //设置短信相关参数
+    public static final int NET_DVR_GET_MULTI_CARD_CFG_V50 = 2515;    //获取多重卡参数V50
+    public static final int NET_DVR_SET_MULTI_CARD_CFG_V50 = 2516;    //设置多重卡参数V5
+    public static final int NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 = 2518;    //获取事件卡号联动配置参数(V51)
+    public static final int NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 = 2519;    //设置事件卡号联动配置参数(V51)
+
+    public static final int NET_DVR_SET_EXAM_INFO = 2530;    //考试信息下发
+    public static final int NET_DVR_SET_EXAMINEE_INFO = 2531;    //考生信息下发
+    public static final int NET_DVR_SEARCH_EXAM_COMPARE_RESULT = 2532;    //考试比对结果查询
+    public static final int NET_DVR_BULK_CHECK_FACE_PICTURE = 2533;    //批量校验人脸图片
+    public static final int NET_DVR_JSON_CONFIG = 2550;    //JSON透传数据
+    public static final int NET_DVR_FACE_DATA_RECORD = 2551;    //添加人脸数据到人脸库
+    public static final int NET_DVR_FACE_DATA_SEARCH = 2552;    //查询人脸库中的人脸数据
+    public static final int NET_DVR_FACE_DATA_MODIFY = 2553;    //修改人脸库中的人脸数据
+    public static final int NET_DVR_CAPTURE_DATA_SEARCH = 2554;    //查询离线采集数据集中数据
+    public static final int NET_DVR_SET_FORM_DATA = 2555;    //长连接设置表单数据
+    public static final int NET_DVR_GET_FORM_DATA = 2556;    //长连接获取表单数据
+    public static final int NET_DVR_GET_CARD = 2560;
+    public static final int NET_DVR_SET_CARD = 2561;
+    public static final int NET_DVR_GET_FACE = 2566;
+    public static final int NET_DVR_SET_FACE = 2567;
+    public static final int NET_DVR_DEL_CARD = 2562;
+    public static final int NET_DVR_GET_FINGERPRINT = 2563;
+    public static final int NET_DVR_SET_FINGERPRINT = 2564; //下发指纹
+    public static final int NET_DVR_DEL_FINGERPRINT = 2565;  //删除指纹
+    public static final int NET_DVR_GET_ACS_WORK_STATUS_V50 = 2180; //获取门禁主机工作状态
+    public static final int NET_DVR_GET_ACS_CFG = 2159; //获取门禁主机参数
+    public static final int NET_DVR_SET_ACS_CFG = 2160; //设置门禁主机参数
+    public static final int NET_DVR_BULK_UPLOAD_ID_BLOCKLIST = 2521;        //批量上传身份证禁止名单
+
+    /*************************************人脸识别门禁一体机1.0 end**************************************/
+    public static final int NET_DVR_SET_SENSOR_CFG = 1180;//设置模拟量参数
+    public static final int NET_DVR_GET_SENSOR_CFG = 1181;//获取模拟量参数
+    public static final int NET_DVR_SET_ALARMIN_PARAM = 1182;//设置报警输入参数
+    public static final int NET_DVR_GET_ALARMIN_PARAM = 1183;
+    ;//获取报警输入参数
+    public static final int NET_DVR_SET_ALARMOUT_PARAM = 1184;//设置报警输出参数
+    public static final int NET_DVR_GET_ALARMOUT_PARAM = 1185;//获取报警输出参数
+    public static final int NET_DVR_SET_SIREN_PARAM = 1186;//设置警号参数
+    public static final int NET_DVR_GET_SIREN_PARAM = 1187;//获取警号参数
+    public static final int NET_DVR_SET_ALARM_RS485CFG = 1188;//设置报警主机485参数
+    public static final int NET_DVR_GET_ALARM_RS485CFG = 1189;//获取报警主机485参数
+    public static final int NET_DVR_GET_ALARMHOST_MAIN_STATUS = 1190;//获取报警主机主要状态
+    public static final int NET_DVR_GET_ALARMHOST_OTHER_STATUS = 1191;//获取报警主机其他状态
+    public static final int NET_DVR_SET_ALARMHOST_ENABLECFG = 1192;//获取报警主机使能状态
+    public static final int NET_DVR_GET_ALARMHOST_ENABLECFG = 1193;//设置报警主机使能状态
+    public static final int NET_DVR_SET_ALARM_CAMCFG = 1194;//设置视频综合平台报警触发CAM操作配置
+    public static final int NET_DVR_GET_ALARM_CAMCFG = 1195;//设置视频综合平台报警触发CAM操作配置
+    public static final int NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG = 2055;// 设置报警主机485槽位参数
+    public static final int NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG = 2056;// 获取报警主机485槽位参数
+    public static final int NET_DVR_SET_VIDEOWALLDISPLAYMODE = 1730;//设置电视墙拼接模式
+    public static final int NET_DVR_GET_VIDEOWALLDISPLAYMODE = 1731;//获取电视墙拼接模式
+    public static final int NET_DVR_GET_VIDEOWALLDISPLAYNO = 1732;//获取设备显示输出号
+    public static final int NET_DVR_SET_VIDEOWALLDISPLAYPOSITION = 1733;//设置显示输出位置参数
+    public static final int NET_DVR_GET_VIDEOWALLDISPLAYPOSITION = 1734;//获取显示输出位置参数
+    public static final int NET_DVR_GET_VIDEOWALLWINDOWPOSITION = 1735;//获取电视墙窗口参数
+    public static final int NET_DVR_SET_VIDEOWALLWINDOWPOSITION = 1736;//设置电视墙窗口参数
+    public static final int NET_DVR_VIDEOWALLWINDOW_CLOSEALL = 1737;//电视墙关闭所有窗口
+    public static final int NET_DVR_SET_VIRTUALLED = 1738;//虚拟LED设置
+    public static final int NET_DVR_GET_VIRTUALLED = 1739;//虚拟LED获取
+    public static final int NET_DVR_GET_IMAGE_CUT_MODE = 1740;//获取图像切割模式
+    public static final int NET_DVR_SET_IMAGE_CUT_MODE = 1741;//设置图像切割模式
+    public static final int NET_DVR_GET_USING_SERIALPORT = 1742;//获取当前使用串口
+    public static final int NET_DVR_SET_USING_SERIALPORT = 1743;//设置当前使用串口
+    public static final int NET_DVR_SCENE_CONTROL = 1744;//场景控制
+    public static final int NET_DVR_GET_CURRENT_SCENE = 1745;//获取当前场景号
+    public static final int NET_DVR_GET_VW_SCENE_PARAM = 1746;//获取电视墙场景模式参数
+    public static final int NET_DVR_SET_VW_SCENE_PARAM = 1747;//设置电视墙场景模式参数
+    public static final int NET_DVR_DISPLAY_CHANNO_CONTROL = 1748;//电视墙显示编号控制
+    public static final int NET_DVR_GET_WIN_DEC_INFO = 1749;//获取窗口解码信息(批量)
+    public static final int NET_DVR_RESET_VIDEOWALLDISPLAYPOSITION = 1750;  //解除电视墙输出接口绑定
+    public static final int NET_DVR_SET_VW_AUDIO_CFG = 1752;  //设置音频切换参数
+    public static final int NET_DVR_GET_VW_AUDIO_CFG = 1753;   //获取音频切换参数
+    public static final int NET_DVR_GET_GBT28181_DECCHANINFO_CFG = 1754;   //获取GBT28181协议接入设备的解码通道信息
+    public static final int NET_DVR_SET_GBT28181_DECCHANINFO_CFG = 1755;  //设置GBT28181协议接入设备的解码通道信息
+    public static final int NET_DVR_SET_MAINBOARD_SERIAL = 1756; //设置主控板串口参数
+    public static final int NET_DVR_GET_MAINBOARD_SERIAL = 1757;//获取主控板串口参数
+    public static final int NET_DVR_GET_SUBBOARD_INFO = 1758; //获取子板信息
+    public static final int NET_DVR_GET_SUBBOARD_EXCEPTION = 1759; //获取异常子板异常信息
+    /*****************************电视墙 start****************************/
+    public static final int NET_DVR_MATRIX_WALL_SET = 9001;  //设置电视墙中屏幕参数
+    public static final int NET_DVR_MATRIX_WALL_GET = 9002; //获取电视墙中屏幕参数
+    public static final int NET_DVR_WALLWIN_GET = 9003;  //电视墙中获取窗口参数
+    public static final int NET_DVR_WALLWIN_SET = 9004;  //电视墙中设置窗口参数
+    public static final int NET_DVR_WALLWINPARAM_SET = 9005;
+    ;  //设置电视墙窗口相关参数
+    public static final int NET_DVR_WALLWINPARAM_GET = 9006; //获取电视墙窗口相关参数
+    public static final int NET_DVR_WALLSCENEPARAM_GET = 9007;  //设置场景模式参数
+    public static final int NET_DVR_WALLSCENEPARAM_SET = 9008;  //获取场景模式参数
+    public static final int NET_DVR_MATRIX_GETWINSTATUS = 9009;  //获取窗口解码状态
+    public static final int NET_DVR_GET_WINASSOCIATEDDEVINFO = 9010;  //电视墙中获取对应资源信息
+    public static final int NET_DVR_WALLOUTPUT_GET = 9011;  //电视墙中获取显示输出参数
+    public static final int NET_DVR_WALLOUTPUT_SET = 9012;  //电视墙中设置显示输出参数
+    public static final int NET_DVR_GET_UNITEDMATRIXSYSTEM = 9013;  //电视墙中获取对应资源
+    public static final int NET_DVR_GET_WALL_CFG = 9014;  //获取电视墙全局参数
+    public static final int NET_DVR_SET_WALL_CFG = 9015;  //设置电视墙全局参数
+    public static final int NET_DVR_CLOSE_ALL_WND = 9016;  //关闭所有窗口
+    public static final int NET_DVR_SWITCH_WIN_TOP = 9017;  //窗口置顶
+    public static final int NET_DVR_SWITCH_WIN_BOTTOM = 9018;  //窗口置底
+
+    public static final int NET_DVR_CLOSE_ALL_WND_V41 = 9019;  //电视墙关闭所有窗口v41(有多个电视墙)
+    public static final int NET_DVR_GET_WALL_WINDOW_V41 = 9020;  //获取电视墙中的窗口v41
+    public static final int NET_DVR_SET_WALL_WINDOW_V41 = 9021;  //设置电视墙中的窗口v41
+    public static final int NET_DVR_GET_CURRENT_SCENE_V41 = 9022;  //获取当前电视墙中正在使用的场景v41
+    public static final int NET_DVR_GET_WALL_SCENE_PARAM_V41 = 9023;  //获取当前电视墙中正在使用的场景v41
+    public static final int NET_DVR_SET_WALL_SCENE_PARAM_V41 = 9024;  //设置当前电视墙中正在使用的场景v41
+    public static final int NET_DVR_GET_MATRIX_LOGO_CFG = 9025;  //获取logo参数
+    public static final int NET_DVR_SET_MATRIX_LOGO_CFG = 9026;  //设置logo参数
+    public static final int NET_DVR_GET_WIN_LOGO_CFG = 9027;  //获取窗口logo参数
+    public static final int NET_DVR_SET_WIN_LOGO_CFG = 9028;  //设置窗口logo参数
+    public static final int NET_DVR_DELETE_LOGO = 9029;  //删除logo
+    public static final int NET_DVR_SET_DISPLAY_EFFECT_CFG = 9030;  //设置显示输出效果参数v41
+    public static final int NET_DVR_GET_DISPLAY_EFFECT_CFG = 9031;  //获取显示输出效果参数v41
+    public static final int NET_DVR_DEC_PLAY_REMOTE_FILE = 9032;  //解码播放远程文件
+    public static final int NET_DVR_DEC_PLAY_REMOTE_FILE_V50 = 9314;  //解码播放远程文件V50
+    public static final int NET_DVR_GET_WIN_ZOOM_STATUS = 9033;  //获取窗口电子放大状态
+    public static final int NET_DVR_GET_ALL_MATRIX_LOGOCFG = 9034;  //获取所有logo参数
+
+/*****************************电视墙 end******************************/
+
+    /*******************
+     * 查找文件和日志函数返回值
+     *************************/
+    public static final int NET_DVR_FILE_SUCCESS = 1000;    //获得文件信息
+    public static final int NET_DVR_FILE_NOFIND = 1001;    //没有文件
+    public static final int NET_DVR_ISFINDING = 1002;//正在查找文件
+    public static final int NET_DVR_NOMOREFILE = 1003;//查找文件时没有更多的文件
+    public static final int NET_DVR_FILE_EXCEPTION = 1004;//查找文件时异常
+    /*********************
+     * 回调函数类型 begin
+     ************************/
+    public static final int COMM_ALARM = 0x1100;    //8000报警信息主动上传
+    public static final int COMM_TRADEINFO = 0x1500;  //ATMDVR主动上传交易信息
+    public static final int COMM_ALARM_V30 = 0x4000;//9000报警信息主动上传
+    public static final int COMM_ALARM_V40 = 0x4007;
+    public static final int COMM_ALARM_RULE = 0x1102;//行为分析信息上传
+    public static final int COMM_ALARM_PDC = 0x1103;//客流量统计报警上传
+    public static final int COMM_UPLOAD_PLATE_RESULT = 0x2800;//交通抓拍结果上传
+    public static final int COMM_ITS_PLATE_RESULT = 0x3050;//交通抓拍的终端图片上传
+    public static final int COMM_IPCCFG = 0x4001;//9000设备IPC接入配置改变报警信息主动上传
+    public static final int COMM_ITS_PARK_VEHICLE = 0x3056;//停车场数据上传
+    public static final int COMM_VEHICLE_CONTROL_ALARM = 0x3059;//车辆报警上传
+    public static final int COMM_ALARM_TFS = 0x1113; //交通取证报警信息
+    public static final int COMM_ALARM_TPS_V41 = 0x1114; //交通事件报警信息扩展
+    public static final int COMM_ALARM_AID_V41 = 0x1115; //交通事件报警信息扩展
+    public static final int COMM_UPLOAD_FACESNAP_RESULT = 0x1112;  //人脸识别结果上传
+    public static final int COMM_SNAP_MATCH_ALARM = 0x2902;  //人脸比对结果上传
+    public static final int COMM_ALARM_ACS = 0x5002; //门禁主机报警信息
+    public static final int COMM_ID_INFO_ALARM = 0x5200; //门禁身份证刷卡信息
+    public static final int COMM_VCA_ALARM = 0x4993; //智能检测通用报警
+    public static final int COMM_ISAPI_ALARM = 0x6009;//ISAPI协议报警信息
+    public static final int COMM_ALARM_TPS_STATISTICS = 0x3082; //TPS统计过车数据上传
+    public static final int COMM_ALARM_TPS_REAL_TIME = 0x3081; //TPS实时过车数据上传
+    public static final int COMM_ALARMHOST_CID_ALARM = 0x1127;  //报告报警上传
+    public static final int COMM_SENSOR_VALUE_UPLOAD = 0x1120;  //模拟量数据实时上传
+    public static final int COMM_SENSOR_ALARM = 0x1121;  //模拟量报警上传
+    public static final int COMM_SWITCH_ALARM = 0x1122;     //开关量报警
+    public static final int COMM_ALARMHOST_EXCEPTION = 0x1123;  //报警主机故障报警
+    public static final int COMM_ALARMHOST_OPERATEEVENT_ALARM = 0x1124;  //操作事件报警上传
+    public static final int COMM_ALARMHOST_SAFETYCABINSTATE = 0x1125;    //防护舱状态
+    public static final int COMM_ALARMHOST_ALARMOUTSTATUS = 0x1126;     //报警输出口/警号状态
+    public static final int COMM_ALARMHOST_DATA_UPLOAD = 0x1129;     //报警数据上传
+
+    public static final int COMM_UPLOAD_VIDEO_INTERCOM_EVENT = 0x1132;  //可视对讲事件记录上传
+    public static final int COMM_ALARM_VIDEO_INTERCOM = 0x1133;  //可视对讲报警上传
+    public static final int COMM_THERMOMETRY_ALARM = 0x5212;  //温度报警上传
+    public static final int COMM_FIREDETECTION_ALARM = 0x4991;  //火点报警上传
+    public static final int COMM_THERMOMETRY_DIFF_ALARM = 0x5111; //温差报警
+    public static final int COMM_ALARM_SHIPSDETECTION = 0x4521; //船只检测报警
+    public static final int COMM_UPLOAD_AIOP_VIDEO = 0x4021; //设备支持AI开放平台接入,上传视频检测数据
+    public static final int COMM_UPLOAD_AIOP_PICTURE = 0x4022; //设备支持AI开放平台接入,上传图片检测数据
+    public static final int COMM_UPLOAD_AIOP_POLLING_SNAP = 0x4023; //设备支持AI开放平台接入,上传轮巡抓图图片检测数据 对应的结构体(NET_AIOP_POLLING_PICTURE_HEAD)
+    public static final int COMM_UPLOAD_AIOP_POLLING_VIDEO = 0x4024; //设备支持AI开放平台接入,上传轮巡视频检测数据 对应的结构体(NET_AIOP_POLLING_VIDEO_HEAD)
+    public static final int COMM_IPC_AUXALARM_RESULT = 0x2820; //PIR报警、无线报警、呼救报警信息
+    /*************
+     * 操作异常类型(消息方式, 回调方式(保留))
+     ****************/
+    public static final int EXCEPTION_EXCHANGE = 0x8000;//用户交互时异常
+    public static final int EXCEPTION_AUDIOEXCHANGE = 0x8001;//语音对讲异常
+    public static final int EXCEPTION_ALARM = 0x8002;//报警异常
+    public static final int EXCEPTION_PREVIEW = 0x8003;//网络预览异常
+    public static final int EXCEPTION_SERIAL = 0x8004;//透明通道异常
+    public static final int EXCEPTION_RECONNECT = 0x8005;    //预览时重连
+    public static final int EXCEPTION_ALARMRECONNECT = 0x8006;//报警时重连
+    public static final int EXCEPTION_SERIALRECONNECT = 0x8007;//透明通道重连
+    public static final int EXCEPTION_PLAYBACK = 0x8010;//回放异常
+    public static final int EXCEPTION_DISKFMT = 0x8011;//硬盘格式化
+    /********************
+     * 预览回调函数
+     *********************/
+    public static final int NET_DVR_SYSHEAD = 1;//系统头数据
+    public static final int NET_DVR_STREAMDATA = 2;//视频流数据(包括复合流和音视频分开的视频流数据)
+    public static final int NET_DVR_AUDIOSTREAMDATA = 3;//音频流数据
+    public static final int NET_DVR_STD_VIDEODATA = 4;//标准视频流数据
+    public static final int NET_DVR_STD_AUDIODATA = 5;//标准音频流数据
+    //回调预览中的状态和消息
+    public static final int NET_DVR_REALPLAYEXCEPTION = 111;//预览异常
+    public static final int NET_DVR_REALPLAYNETCLOSE = 112;//预览时连接断开
+    public static final int NET_DVR_REALPLAY5SNODATA = 113;//预览5s没有收到数据
+    public static final int NET_DVR_REALPLAYRECONNECT = 114;//预览重连
+    /********************
+     * 回放回调函数
+     *********************/
+    public static final int NET_DVR_PLAYBACKOVER = 101;//回放数据播放完毕
+    public static final int NET_DVR_PLAYBACKEXCEPTION = 102;//回放异常
+    public static final int NET_DVR_PLAYBACKNETCLOSE = 103;//回放时候连接断开
+    public static final int NET_DVR_PLAYBACK5SNODATA = 104;    //回放5s没有收到数据
+    /*********************
+     * 回调函数类型 end
+     ************************/
+//设备型号(DVR类型)
+    /* 设备类型 */
+    public static final int DVR = 1;            /*对尚未定义的dvr类型返回NETRET_DVR*/
+    public static final int ATMDVR = 2;        /*atm dvr*/
+    public static final int DVS = 3;            /*DVS*/
+    public static final int DEC = 4;            /* 6001D */
+    public static final int ENC_DEC = 5;            /* 6001F */
+    public static final int DVR_HC = 6;            /*8000HC*/
+    public static final int DVR_HT = 7;            /*8000HT*/
+    public static final int DVR_HF = 8;            /*8000HF*/
+    public static final int DVR_HS = 9;            /* 8000HS DVR(no audio) */
+    public static final int DVR_HTS = 10;         /* 8016HTS DVR(no audio) */
+    public static final int DVR_HB = 11;         /* HB DVR(SATA HD) */
+    public static final int DVR_HCS = 12;         /* 8000HCS DVR */
+    public static final int DVS_A = 13;         /* 带ATA硬盘的DVS */
+    public static final int DVR_HC_S = 14;         /* 8000HC-S */
+    public static final int DVR_HT_S = 15;         /* 8000HT-S */
+    public static final int DVR_HF_S = 16;         /* 8000HF-S */
+    public static final int DVR_HS_S = 17;         /* 8000HS-S */
+    public static final int ATMDVR_S = 18;         /* ATM-S */
+    public static final int LOWCOST_DVR = 19;            /*7000H系列*/
+    public static final int DEC_MAT = 20;         /*多路解码器*/
+    public static final int DVR_MOBILE = 21;            /* mobile DVR */
+    public static final int DVR_HD_S = 22;        /* 8000HD-S */
+    public static final int DVR_HD_SL = 23;            /* 8000HD-SL */
+    public static final int DVR_HC_SL = 24;            /* 8000HC-SL */
+    public static final int DVR_HS_ST = 25;            /* 8000HS_ST */
+    public static final int DVS_HW = 26;         /* 6000HW */
+    public static final int IPCAM = 30;            /*IP 摄像机*/
+    public static final int MEGA_IPCAM = 31;            /*X52MF系列,752MF,852MF*/
+    public static final int IPCAM_X62MF = 32;            /*X62MF系列可接入9000设备,762MF,862MF*/
+    public static final int IPDOME = 40;            /*IP标清快球*/
+    public static final int MEGA_IPDOME = 41;     /*IP高清快球*/
+    public static final int IPMOD = 50;            /*IP 模块*/
+    public static final int DS71XX_H = 71;            /* DS71XXH_S */
+    public static final int DS72XX_H_S = 72;            /* DS72XXH_S */
+    public static final int DS73XX_H_S = 73;            /* DS73XXH_S */
+    public static final int DS81XX_HS_S = 81;            /* DS81XX_HS_S */
+    public static final int DS81XX_HL_S = 82;            /* DS81XX_HL_S */
+    public static final int DS81XX_HC_S = 83;            /* DS81XX_HC_S */
+    public static final int DS81XX_HD_S = 84;            /* DS81XX_HD_S */
+    public static final int DS81XX_HE_S = 85;            /* DS81XX_HE_S */
+    public static final int DS81XX_HF_S = 86;            /* DS81XX_HF_S */
+    public static final int DS81XX_AH_S = 87;            /* DS81XX_AH_S */
+    public static final int DS81XX_AHF_S = 88;            /* DS81XX_AHF_S */
+    public static final int DS90XX_HF_S = 90;       /*DS90XX_HF_S*/
+    public static final int DS91XX_HF_S = 91;             /*DS91XX_HF_S*/
+    public static final int DS91XX_HD_S = 92;            /*91XXHD-S(MD)*/
+
+    /* 操作 */
+//主类型
+    public static final int MAJOR_OPERATION = 0x3;
+    //次类型
+    public static final int MINOR_START_DVR = 0x41; /* 开机 */
+    public static final int MINOR_STOP_DVR = 0x42;/* 关机 */
+    public static final int MINOR_STOP_ABNORMAL = 0x43;/* 异常关机 */
+    public static final int MINOR_REBOOT_DVR = 0x44;   /*本地重启设备*/
+    public static final int MINOR_LOCAL_LOGIN = 0x50; /* 本地登陆 */
+    public static final int MINOR_LOCAL_LOGOUT = 0x51; /* 本地注销登陆 */
+    public static final int MINOR_LOCAL_CFG_PARM = 0x52; /* 本地配置参数 */
+    public static final int MINOR_LOCAL_PLAYBYFILE = 0x53; /* 本地按文件回放或下载 */
+    public static final int MINOR_LOCAL_PLAYBYTIME = 0x54; /* 本地按时间回放或下载*/
+    public static final int MINOR_LOCAL_START_REC = 0x55; /* 本地开始录像 */
+    public static final int MINOR_LOCAL_STOP_REC = 0x56; /* 本地停止录像 */
+    public static final int MINOR_LOCAL_PTZCTRL = 0x57; /* 本地云台控制 */
+    public static final int MINOR_LOCAL_PREVIEW = 0x58;/* 本地预览 (保留不使用)*/
+    public static final int MINOR_LOCAL_MODIFY_TIME = 0x59;/* 本地修改时间(保留不使用) */
+    public static final int MINOR_LOCAL_UPGRADE = 0x5a;/* 本地升级 */
+    public static final int MINOR_LOCAL_RECFILE_OUTPUT = 0x5b;   /* 本地备份录象文件 */
+    public static final int MINOR_LOCAL_FORMAT_HDD = 0x5c;  /* 本地初始化硬盘 */
+    public static final int MINOR_LOCAL_CFGFILE_OUTPUT = 0x5d;  /* 导出本地配置文件 */
+    public static final int MINOR_LOCAL_CFGFILE_INPUT = 0x5e;  /* 导入本地配置文件 */
+    public static final int MINOR_LOCAL_COPYFILE = 0x5f;  /* 本地备份文件 */
+    public static final int MINOR_LOCAL_LOCKFILE = 0x60;  /* 本地锁定录像文件 */
+    public static final int MINOR_LOCAL_UNLOCKFILE = 0x61;   /* 本地解锁录像文件 */
+    public static final int MINOR_LOCAL_DVR_ALARM = 0x62;  /* 本地手动清除和触发报警*/
+    public static final int MINOR_IPC_ADD = 0x63;  /* 本地添加IPC */
+    public static final int MINOR_IPC_DEL = 0x64;  /* 本地删除IPC */
+    public static final int MINOR_IPC_SET = 0x65;  /* 本地设置IPC */
+    public static final int MINOR_LOCAL_START_BACKUP = 0x66;    /* 本地开始备份 */
+    public static final int MINOR_LOCAL_STOP_BACKUP = 0x67;/* 本地停止备份*/
+    public static final int MINOR_LOCAL_COPYFILE_START_TIME = 0x68;/* 本地备份开始时间*/
+    public static final int MINOR_LOCAL_COPYFILE_END_TIME = 0x69;    /* 本地备份结束时间*/
+    public static final int MINOR_REMOTE_LOGIN = 0x70;/* 远程登录 */
+    public static final int MINOR_REMOTE_LOGOUT = 0x71;/* 远程注销登陆 */
+    public static final int MINOR_REMOTE_START_REC = 0x72;/* 远程开始录像 */
+    public static final int MINOR_REMOTE_STOP_REC = 0x73;/* 远程停止录像 */
+    public static final int MINOR_START_TRANS_CHAN = 0x74;/* 开始透明传输 */
+    public static final int MINOR_STOP_TRANS_CHAN = 0x75; /* 停止透明传输 */
+    public static final int MINOR_REMOTE_GET_PARM = 0x76;/* 远程获取参数 */
+    public static final int MINOR_REMOTE_CFG_PARM = 0x77;/* 远程配置参数 */
+    public static final int MINOR_REMOTE_GET_STATUS = 0x78;/* 远程获取状态 */
+    public static final int MINOR_REMOTE_ARM = 0x79; /* 远程布防 */
+    public static final int MINOR_REMOTE_DISARM = 0x7a;/* 远程撤防 */
+    public static final int MINOR_REMOTE_REBOOT = 0x7b; /* 远程重启 */
+    public static final int MINOR_START_VT = 0x7c;/* 开始语音对讲 */
+    public static final int MINOR_STOP_VT = 0x7d;/* 停止语音对讲 */
+    public static final int MINOR_REMOTE_UPGRADE = 0x7e; /* 远程升级 */
+    public static final int MINOR_REMOTE_PLAYBYFILE = 0x7f; /* 远程按文件回放 */
+    public static final int MINOR_REMOTE_PLAYBYTIME = 0x80; /* 远程按时间回放 */
+    public static final int MINOR_REMOTE_PTZCTRL = 0x81; /* 远程云台控制 */
+    public static final int MINOR_REMOTE_FORMAT_HDD = 0x82;  /* 远程格式化硬盘 */
+    public static final int MINOR_REMOTE_STOP = 0x83;  /* 远程关机 */
+    public static final int MINOR_REMOTE_LOCKFILE = 0x84;/* 远程锁定文件 */
+    public static final int MINOR_REMOTE_UNLOCKFILE = 0x85;/* 远程解锁文件 */
+    public static final int MINOR_REMOTE_CFGFILE_OUTPUT = 0x86;   /* 远程导出配置文件 */
+    public static final int MINOR_REMOTE_CFGFILE_INTPUT = 0x87;   /* 远程导入配置文件 */
+    public static final int MINOR_REMOTE_RECFILE_OUTPUT = 0x88;   /* 远程导出录象文件 */
+    public static final int MINOR_REMOTE_DVR_ALARM = 0x89;    /* 远程手动清除和触发报警*/
+    public static final int MINOR_REMOTE_IPC_ADD = 0x8a;  /* 远程添加IPC */
+    public static final int MINOR_REMOTE_IPC_DEL = 0x8b;/* 远程删除IPC */
+    public static final int MINOR_REMOTE_IPC_SET = 0x8c; /* 远程设置IPC */
+    public static final int MINOR_REBOOT_VCA_LIB = 0x8d;        /*重启智能库*/
+
+    /*日志附加信息*/
+//主类型
+    public static final int MAJOR_INFORMATION = 0x4;   /*附加信息*/
+    //次类型
+    public static final int MINOR_HDD_INFO = 0xa1;/*硬盘信息*/
+    public static final int MINOR_SMART_INFO = 0xa2;   /*SMART信息*/
+    public static final int MINOR_REC_START = 0xa3;   /*开始录像*/
+    public static final int MINOR_REC_STOP = 0xa4;/*停止录像*/
+    public static final int MINOR_REC_OVERDUE = 0xa5;/*过期录像删除*/
+    public static final int MINOR_LINK_START = 0xa6; // ivms多路解码器等连接前端设备
+    public static final int MINOR_LINK_STOP = 0xa7;// ivms多路解码器等断开前端设备 
+    //当日志的主类型为MAJOR_OPERATION=03,次类型为MINOR_LOCAL_CFG_PARM=0x52或者MINOR_REMOTE_GET_PARM=0x76或者MINOR_REMOTE_CFG_PARM=0x77时,dwParaType:参数类型有效,其含义如下:
+    public static final int PARA_VIDEOOUT = 0x1;
+    public static final int PARA_IMAGE = 0x2;
+    public static final int PARA_ENCODE = 0x4;
+    public static final int PARA_NETWORK = 0x8;
+    public static final int PARA_ALARM = 0x10;
+    public static final int PARA_EXCEPTION = 0x20;
+    public static final int PARA_DECODER = 0x40; /*解码器*/
+    public static final int PARA_RS232 = 0x80;
+    public static final int PARA_PREVIEW = 0x100;
+    public static final int PARA_SECURITY = 0x200;
+    public static final int PARA_DATETIME = 0x400;
+    public static final int PARA_FRAMETYPE = 0x800;  /*帧格式*/
+    public static final int PARA_VCA_RULE = 0x1000;    //行为规则
+    //SDK_V222
+//智能设备类型
+    public static final int DS6001_HF_B = 60;//行为分析:DS6001-HF/B
+    public static final int DS6001_HF_P = 61;//车牌识别:DS6001-HF/P
+    public static final int DS6002_HF_B = 62;//双机跟踪:DS6002-HF/B
+    public static final int DS6101_HF_B = 63;//行为分析:DS6101-HF/B
+    public static final int IVMS_2000 = 64;//智能分析仪
+    public static final int DS9000_IVS = 65;//9000系列智能DVR
+    public static final int DS8004_AHL_A = 66;//智能ATM, DS8004AHL-S/A
+    public static final int DS6101_HF_P = 67;//车牌识别:DS6101-HF/P
+    //能力获取命令
+    public static final int VCA_DEV_ABILITY = 0x100;//设备智能分析的总能力
+    public static final int VCA_CHAN_ABILITY = 0x110;//行为分析能力
+    public static final int DEVICE_ABILITY_INFO = 0x011; //设备通用能力类型,具体能力根据发送的能力节点来区分
+    public static final int NET_DVR_CHECK_USER_STATUS = 20005; //检测设备是否在线
+    /**********************设备类型 end***********************/
+
+    /*************************************************
+     * 参数配置结构、参数(其中_V30为9000新增)
+     **************************************************/
+
+    /////////////////////////////////////////////////////////////////////////
+    //校时结构参数
+    public static class NET_DVR_TIME extends HIKSDKStructure {//校时结构参数
+        public int dwYear;        //年
+        public int dwMonth;        //月
+        public int dwDay;        //日
+        public int dwHour;        //时
+        public int dwMinute;        //分
+        public int dwSecond;        //秒
+
+        public String toString() {
+            return "NET_DVR_TIME.dwYear: " + dwYear + "\n" + "NET_DVR_TIME.dwMonth: \n" + dwMonth + "\n" + "NET_DVR_TIME.dwDay: \n" + dwDay + "\n" + "NET_DVR_TIME.dwHour: \n" + dwHour + "\n" + "NET_DVR_TIME.dwMinute: \n" + dwMinute + "\n" + "NET_DVR_TIME.dwSecond: \n" + dwSecond;
+        }
+
+        //用于列表中显示
+        public String toStringTime() {
+            return String.format("%02d/%02d/%02d%02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+
+        //存储文件名使用
+        public String toStringTitle() {
+            return String.format("Time%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+    }
+
+    public static class NET_DVR_SCHEDTIME extends HIKSDKStructure {
+        public byte byStartHour;    //开始时间
+        public byte byStartMin;
+        public byte byStopHour;            //结束时间
+        public byte byStopMin;
+
+
+    }
+
+    public static class NET_DVR_HANDLEEXCEPTION_V30 extends HIKSDKStructure {
+        public int dwHandleType;    /*处理方式,处理方式的"或"结果*//*0x00: 无响应*//*0x01: 监视器上警告*//*0x02: 声音警告*//*0x04: 上传中心*/    /*0x08: 触发报警输出*//*0x20: 触发抓图*/  //(JPEG定制)
+        public byte[] byRelAlarmOut = new byte[MAX_ALARMOUT_V30];  //报警触发的输出通道,报警触发的输出,为1表示触发该输出
+
+    }
+
+    //报警和异常处理结构(子结构)(多处使用)
+    public static class NET_DVR_HANDLEEXCEPTION extends HIKSDKStructure {
+        public int dwHandleType;            /*处理方式,处理方式的"或"结果*//*0x00: 无响应*//*0x01: 监视器上警告*//*0x02: 声音警告*//*0x04: 上传中心*/    /*0x08: 触发报警输出*//*0x20: 触发抓图*/  //(JPEG定制)
+        public byte[] byRelAlarmOut = new byte[MAX_ALARMOUT];  //报警触发的输出通道,报警触发的输出,为1表示触发该输出
+
+    }
+
+    //DVR设备参数
+    public static class NET_DVR_DEVICECFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sDVRName = new byte[NAME_LEN];     //DVR名称
+        public int dwDVRID;                 //DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
+        public int dwRecycleRecord;                 //是否循环录像,0:不是; 1:是
+        //以下不可更改
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];  //序列号
+        public int dwSoftwareVersion;                   //软件版本号,高16位是主版本,低16位是次版本
+        public int dwSoftwareBuildDate;                    //软件生成日期,0xYYYYMMDD
+        public int dwDSPSoftwareVersion;                //DSP软件版本,高16位是主版本,低16位是次版本
+        public int dwDSPSoftwareBuildDate;                // DSP软件生成日期,0xYYYYMMDD
+        public int dwPanelVersion;                // 前面板版本,高16位是主版本,低16位是次版本
+        public int dwHardwareVersion;            // 硬件版本,高16位是主版本,低16位是次版本
+        public byte byAlarmInPortNum;        //DVR报警输入个数
+        public byte byAlarmOutPortNum;        //DVR报警输出个数
+        public byte byRS232Num;            //DVR 232串口个数
+        public byte byRS485Num;            //DVR 485串口个数
+        public byte byNetworkPortNum;        //网络口个数
+        public byte byDiskCtrlNum;            //DVR 硬盘控制器个数
+        public byte byDiskNum;                //DVR 硬盘个数
+        public byte byDVRType;                //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
+        public byte byChanNum;                //DVR 通道个数
+        public byte byStartChan;            //起始通道号,例如DVS-1,DVR - 1
+        public byte byDecordChans;            //DVR 解码路数
+        public byte byVGANum;                //VGA口的个数
+        public byte byUSBNum;                //USB口的个数
+        public byte byAuxoutNum;            //辅口的个数
+        public byte byAudioNum;                    //语音口的个数
+        public byte byIPChanNum;            //最大数字通道数
+
+
+    }
+
+    //DVR设备参数
+    public static class NET_DVR_DEVICECFG_V40 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sDVRName = new byte[NAME_LEN];     //DVR名称
+        public int dwDVRID;                //DVR ID,用于遥控器 //V1.4(0-99), V1.5(0-255)
+        public int dwRecycleRecord;        //是否循环录像,0:不是; 1:是
+        //以下不可更改
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];  //序列号
+        public int dwSoftwareVersion;            //软件版本号,高16位是主版本,低16位是次版本
+        public int dwSoftwareBuildDate;            //软件生成日期,0xYYYYMMDD
+        public int dwDSPSoftwareVersion;            //DSP软件版本,高16位是主版本,低16位是次版本
+        public int dwDSPSoftwareBuildDate;        // DSP软件生成日期,0xYYYYMMDD
+        public int dwPanelVersion;                // 前面板版本,高16位是主版本,低16位是次版本
+        public int dwHardwareVersion;    // 硬件版本,高16位是主版本,低16位是次版本
+        public byte byAlarmInPortNum;        //DVR报警输入个数
+        public byte byAlarmOutPortNum;        //DVR报警输出个数
+        public byte byRS232Num;            //DVR 232串口个数
+        public byte byRS485Num;            //DVR 485串口个数
+        public byte byNetworkPortNum;        //网络口个数
+        public byte byDiskCtrlNum;            //DVR 硬盘控制器个数
+        public byte byDiskNum;                //DVR 硬盘个数
+        public byte byDVRType;                //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
+        public byte byChanNum;                //DVR 通道个数
+        public byte byStartChan;            //起始通道号,例如DVS-1,DVR - 1
+        public byte byDecordChans;            //DVR 解码路数
+        public byte byVGANum;                //VGA口的个数
+        public byte byUSBNum;                //USB口的个数
+        public byte byAuxoutNum;            //辅口的个数
+        public byte byAudioNum;            //语音口的个数
+        public byte byIPChanNum;            //最大数字通道数 低8位,高8位见byHighIPChanNum
+        public byte byZeroChanNum;            //零通道编码个数
+        public byte bySupport;        //能力,位与结果为0表示不支持,1表示支持,
+        public byte byEsataUseage;        //Esata的默认用途,0-默认备份,1-默认录像
+        public byte byIPCPlug;            //0-关闭即插即用,1-打开即插即用
+        public byte byStorageMode;        //0-盘组模式,1-磁盘配额, 2抽帧模式, 3-自动
+        public byte bySupport1;        //能力,位与结果为0表示不支持,1表示支持
+        public short wDevType;//设备型号
+        public byte[] byDevTypeName = new byte[DEV_TYPE_NAME_LEN];//设备型号名称
+        public byte bySupport2; //能力集扩展,位与结果为0表示不支持,1表示支持
+        //bySupport2 & 0x1, 表示是否支持扩展的OSD字符叠加(终端和抓拍机扩展区分)
+        public byte byAnalogAlarmInPortNum; //模拟报警输入个数
+        public byte byStartAlarmInNo;    //模拟报警输入起始号
+        public byte byStartAlarmOutNo;  //模拟报警输出起始号
+        public byte byStartIPAlarmInNo;  //IP报警输入起始号
+        public byte byStartIPAlarmOutNo; //IP报警输出起始号
+        public byte byHighIPChanNum;      //数字通道个数,高8位
+        public byte byEnableRemotePowerOn;//是否启用在设备休眠的状态下远程开机功能,0-不启用,1-启用
+        public short wDevClass; //设备大类备是属于哪个产品线,0 保留,1-50 DVR,51-100 DVS,101-150 NVR,151-200 IPC,65534 其他,具体分类方法见《设备类型对应序列号和类型值.docx》
+        public byte[] byRes2 = new byte[6];    //保留
+
+
+    }
+
+    public static class NET_DVR_IPADDR extends HIKSDKStructure {
+        public byte[] sIpV4 = new byte[16];
+        public byte[] byRes = new byte[128];
+
+        public String toString() {
+            return "NET_DVR_IPADDR.sIpV4: " + new String(sIpV4) + "\n" + "NET_DVR_IPADDR.byRes: " + new String(byRes) + "\n";
+        }
+
+
+    }
+
+
+    //网络数据结构(子结构)(9000扩展)
+    public static class NET_DVR_ETHERNET_V30 extends HIKSDKStructure {
+        public NET_DVR_IPADDR struDVRIP;
+        public NET_DVR_IPADDR struDVRIPMask;
+        public int dwNetInterface;
+        public short wDVRPort;
+        public short wMTU;
+        public byte[] byMACAddr = new byte[6];
+
+        public String toString() {
+            return "NET_DVR_ETHERNET_V30.struDVRIP: \n" + struDVRIP + "\n" + "NET_DVR_ETHERNET_V30.struDVRIPMask: \n" + struDVRIPMask + "\n" + "NET_DVR_ETHERNET_V30.dwNetInterface: " + dwNetInterface + "\n" + "NET_DVR_ETHERNET_V30.wDVRPort: " + wDVRPort + "\n" + "NET_DVR_ETHERNET_V30.wMTU: " + wMTU + "\n" + "NET_DVR_ETHERNET_V30.byMACAddr: " + new String(byMACAddr) + "\n";
+        }
+
+
+    }
+
+    public static class NET_DVR_ETHERNET extends HIKSDKStructure {//网络数据结构(子结构)
+        public byte[] sDVRIP = new byte[16];                    //DVR IP地址
+        public byte[] sDVRIPMask = new byte[16];                //DVR IP地址掩码
+        public int dwNetInterface;               //网络接口 1-10MBase-T 2-10MBase-T全双工 3-100MBase-TX 4-100M全双工 5-10M/100M自适应
+        public short wDVRPort;                        //端口号
+        public byte[] byMACAddr = new byte[MACADDR_LEN];        //服务器的物理地址
+
+
+    }
+
+    public static class NET_DVR_PPPOECFG extends HIKSDKStructure {//PPPoe
+        public int dwPPPoE;
+        public byte[] sPPPoEUser = new byte[32];
+        public byte[] sPPPoEPassword = new byte[16];
+        public NET_DVR_IPADDR struPPPoEIP;
+
+
+    }
+
+    public static class NET_DVR_NETCFG_V30 extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_ETHERNET_V30[] struEtherNet = new NET_DVR_ETHERNET_V30[2];
+        public NET_DVR_IPADDR[] struRes1 = new NET_DVR_IPADDR[2];
+        public NET_DVR_IPADDR struAlarmHostIpAddr;
+        public short[] wRes2 = new short[2];
+        public short wAlarmHostIpPort;
+        public byte byUseDhcp;
+        public byte byRes3;
+        public NET_DVR_IPADDR struDnsServer1IpAddr;
+        public NET_DVR_IPADDR struDnsServer2IpAddr;
+        public byte[] byIpResolver = new byte[64];
+        public short wIpResolverPort;
+        public short wHttpPortNo;
+        public NET_DVR_IPADDR struMulticastIpAddr;
+        public NET_DVR_IPADDR struGatewayIpAddr;
+        public NET_DVR_PPPOECFG struPPPoE;
+        public byte[] byRes = new byte[64];
+
+        public String toString() {
+            return "NET_DVR_NETCFG_V30.dwSize: " + dwSize + "\n" + "NET_DVR_NETCFG_V30.struEtherNet[0]: \n" + struEtherNet[0] + "\n" + "NET_DVR_NETCFG_V30.struAlarmHostIpAddr: \n" + struAlarmHostIpAddr + "\n" + "NET_DVR_NETCFG_V30.wAlarmHostIpPort: " + wAlarmHostIpPort + "\n" + "NET_DVR_NETCFG_V30.wHttpPortNo: " + wHttpPortNo + "\n" + "NET_DVR_NETCFG_V30.struGatewayIpAddr: \n" + struGatewayIpAddr + "\n";
+        }
+
+
+    }
+
+
+    public static class NET_DVR_NETCFG extends HIKSDKStructure {//网络配置结构
+        public int dwSize;
+        public NET_DVR_ETHERNET[] struEtherNet = new NET_DVR_ETHERNET[MAX_ETHERNET];        /* 以太网口 */
+        public byte[] sManageHostIP = new byte[16];            //远程管理主机地址
+        public short wManageHostPort;            //远程管理主机端口号
+        public byte[] sIPServerIP = new byte[16];           //IPServer服务器地址
+        public byte[] sMultiCastIP = new byte[16];          //多播组地址
+        public byte[] sGatewayIP = new byte[16];            //网关地址
+        public byte[] sNFSIP = new byte[16];                //NFS主机IP地址
+        public byte[] sNFSDirectory = new byte[PATHNAME_LEN];//NFS目录
+        public int dwPPPOE;                    //0-不启用,1-启用
+        public byte[] sPPPoEUser = new byte[NAME_LEN];        //PPPoE用户名
+        public byte[] sPPPoEPassword = new byte[PASSWD_LEN];// PPPoE密码
+        public byte[] sPPPoEIP = new byte[16];                //PPPoE IP地址(只读)
+
+
+    }
+
+    //通道图象结构
+    public static class NET_DVR_SCHEDTIMEWEEK extends HIKSDKStructure {
+        public NET_DVR_SCHEDTIME[] struAlarmTime = new NET_DVR_SCHEDTIME[8];
+
+
+    }
+
+    public static class byte96 extends HIKSDKStructure {
+        public byte[] byMotionScope = new byte[96];
+
+
+    }
+
+    public static class NET_DVR_MOTION_V30 extends HIKSDKStructure {//移动侦测(子结构)(9000扩展)
+        public byte96[] byMotionScope = new byte96[64];                        /*侦测区域,0-96位,表示64行,共有96*64个小宏块,为1表示是移动侦测区域,0-表示不是*/
+        public byte byMotionSensitive;                            /*移动侦测灵敏度, 0 - 5,越高越灵敏,oxff关闭*/
+        public byte byEnableHandleMotion;                        /* 是否处理移动侦测 0-否 1-是*/
+        public byte byPrecision;                            /* 移动侦测算法的进度: 0--16*16, 1--32*32, 2--64*64 ... */
+        public byte reservedData;
+        public NET_DVR_HANDLEEXCEPTION_V30 struMotionHandleType;            /* 处理方式 */
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; /*布防时间*/
+        public byte[] byRelRecordChan = new byte[64];                    /* 报警触发的录象通道*/
+
+
+    }
+
+    public static class NET_DVR_MOTION extends HIKSDKStructure {//移动侦测(子结构)
+        public byte[] byMotionScope = new byte[18 * 22];    /*侦测区域,共有22*18个小宏块,为1表示改宏块是移动侦测区域,0-表示不是*/
+        public byte byMotionSensitive;        /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
+        public byte byEnableHandleMotion;    /* 是否处理移动侦测 */
+        public byte[] reservedData = new byte[2];
+        public NET_DVR_HANDLEEXCEPTION strMotionHandleType;    /* 处理方式 */
+        public byte[] byRelRecordChan = new byte[MAX_CHANNUM]; //报警触发的录象通道,为1表示触发该通道
+
+
+    }
+
+    public static class NET_DVR_HIDEALARM_V30 extends HIKSDKStructure {//遮挡报警
+        public int dwEnableHideAlarm;                /* 是否启动遮挡报警 ,0-否,1-低灵敏度 2-中灵敏度 3-高灵敏度*/
+        public short wHideAlarmAreaTopLeftX;            /* 遮挡区域的x坐标 */
+        public short wHideAlarmAreaTopLeftY;            /* 遮挡区域的y坐标 */
+        public short wHideAlarmAreaWidth;                /* 遮挡区域的宽 */
+        public short wHideAlarmAreaHeight;                /*遮挡区域的高*/
+        public NET_DVR_HANDLEEXCEPTION_V30 strHideAlarmHandleType;    /* 处理方式 */
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];//布防时间
+
+
+    }
+
+    public static class NET_DVR_HIDEALARM extends HIKSDKStructure {//遮挡报警(子结构)  区域大小704*576
+        public int dwEnableHideAlarm;                /* 是否启动遮挡报警 ,0-否,1-低灵敏度 2-中灵敏度 3-高灵敏度*/
+        public short wHideAlarmAreaTopLeftX;            /* 遮挡区域的x坐标 */
+        public short wHideAlarmAreaTopLeftY;            /* 遮挡区域的y坐标 */
+        public short wHideAlarmAreaWidth;                /* 遮挡区域的宽 */
+        public short wHideAlarmAreaHeight;                /*遮挡区域的高*/
+        public NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType;    /* 处理方式 */
+
+
+    }
+
+    public static class NET_DVR_VILOST_V30 extends HIKSDKStructure {    //信号丢失报警(子结构)(9000扩展)
+        public byte byEnableHandleVILost;                         /* 是否处理信号丢失报警 */
+        public NET_DVR_HANDLEEXCEPTION_V30 strVILostHandleType;         /* 处理方式 */
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];//布防时间
+
+    }
+
+    public static class NET_DVR_VILOST extends HIKSDKStructure {    //信号丢失报警(子结构)
+        public byte byEnableHandleVILost;    /* 是否处理信号丢失报警 */
+        public NET_DVR_HANDLEEXCEPTION strVILostHandleType;    /* 处理方式 */
+
+    }
+
+    public static class NET_DVR_SHELTER extends HIKSDKStructure {  //遮挡区域(子结构)
+        public short wHideAreaTopLeftX;                /* 遮挡区域的x坐标 */
+        public short wHideAreaTopLeftY;                /* 遮挡区域的y坐标 */
+        public short wHideAreaWidth;                /* 遮挡区域的宽 */
+        public short wHideAreaHeight;                /* 遮挡区域的高*/
+
+
+    }
+
+    public static class NET_DVR_COLOR extends HIKSDKStructure {
+        public byte byBrightness;    /*亮度,0-255*/
+        public byte byContrast;        /*对比度,0-255*/
+        public byte bySaturation;    /*饱和度,0-255*/
+        public byte byHue;            /*色调,0-255*/
+
+
+    }
+
+    public static class NET_DVR_VICOLOR extends HIKSDKStructure {
+        public NET_DVR_COLOR[] struColor = new NET_DVR_COLOR[MAX_TIMESEGMENT_V30];/*图象参数(第一个有效,其他三个保留)*/
+        public NET_DVR_SCHEDTIME[] struHandleTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30];/*处理时间段(保留)*/
+
+
+    }
+
+    //信号丢失
+    public static class NET_DVR_VILOST_V40 extends HIKSDKStructure {
+        public int dwEnableVILostAlarm;                /* 是否启动信号丢失报警 ,0-否,1-是*/
+        /* 信号丢失触发报警输出 */
+        public int dwHandleType;        //异常处理,异常处理方式的"或"结果
+        /*0x00: 无响应*/
+        /*0x01: 监视器上警告*/
+        /*0x02: 声音警告*/
+        /*0x04: 上传中心*/
+        /*0x08: 触发报警输出*/
+        /*0x10: 触发JPRG抓图并上传Email*/
+        /*0x20: 无线声光报警器联动*/
+        /*0x40: 联动电子地图(目前只有PCNVR支持)*/
+        /*0x200: 抓图并上传FTP*/
+        /*0x1000:抓图上传到云*/
+        public int dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
+        public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; /*布防时间*/
+        public byte byVILostAlarmThreshold;    /*信号丢失报警阈值,当值低于阈值,认为信号丢失,取值0-99*/
+        public byte[] byRes = new byte[63]; //保留
+
+
+    }
+
+    public static class NET_DVR_DNMODE extends HIKSDKStructure {
+        public byte byObjectSize;//占比参数(0~100)
+        public byte byMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
+        public byte[] byRes = new byte[6];
+
+
+    }
+
+    public static class NET_DVR_MOTION_MULTI_AREAPARAM extends HIKSDKStructure {
+        public byte byAreaNo;//区域编号(IPC- 1~8)
+        public byte[] byRes = new byte[3];
+        public NET_VCA_RECT struRect = new NET_VCA_RECT();//单个区域的坐标信息(矩形) size = 16;
+        public NET_DVR_DNMODE struDayNightDisable = new NET_DVR_DNMODE();//关闭模式
+        public NET_DVR_DNMODE struDayModeParam = new NET_DVR_DNMODE();//白天模式
+        public NET_DVR_DNMODE struNightModeParam = new NET_DVR_DNMODE();//夜晚模式
+        public byte[] byRes1 = new byte[8];
+
+
+    }
+
+    public static final int MAX_MULTI_AREA_NUM = 24;
+
+    public static class NET_DVR_MOTION_MULTI_AREA extends HIKSDKStructure {
+        public byte byDayNightCtrl;//日夜控制 0~关闭,1~自动切换,2~定时切换(默认关闭)
+        public byte byAllMotionSensitive; /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭,全部区域的灵敏度范围*/
+        public byte[] byRes = new byte[2];//
+        public NET_DVR_SCHEDULE_DAYTIME struScheduleTime = new NET_DVR_SCHEDULE_DAYTIME();//切换时间  16
+        public NET_DVR_MOTION_MULTI_AREAPARAM[] struMotionMultiAreaParam = new NET_DVR_MOTION_MULTI_AREAPARAM[MAX_MULTI_AREA_NUM];//最大支持24个区域
+        public byte[] byRes1 = new byte[60];
+
+
+    }
+
+    public static class NET_DVR_MOTION_SINGLE_AREA extends HIKSDKStructure {
+        public byte[] byMotionScope = new byte[64 * 96];        /*侦测区域,0-96位,表示64行,共有96*64个小宏块,目前有效的是22*18,为1表示是移动侦测区域,0-表示不是*/
+        public byte byMotionSensitive;            /*移动侦测灵敏度, 0 - 5,越高越灵敏,0xff关闭*/
+        public byte[] byRes = new byte[3];
+
+
+    }
+
+    public static class NET_DVR_MOTION_MODE_PARAM extends HIKSDKStructure {
+        public NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea = new NET_DVR_MOTION_SINGLE_AREA(); //普通模式下的单区域设
+        public NET_DVR_MOTION_MULTI_AREA struMotionMultiArea = new NET_DVR_MOTION_MULTI_AREA(); //专家模式下的多区域设置
+
+
+    }
+
+    public static class NET_DVR_MOTION_V40 extends HIKSDKStructure {
+        public NET_DVR_MOTION_MODE_PARAM struMotionMode = new NET_DVR_MOTION_MODE_PARAM(); //(5.1.0新增)
+        public byte byEnableHandleMotion;        /* 是否处理移动侦测 0-否 1-是*/
+        public byte byEnableDisplay;    /*启用移动侦测高亮显示,0-否,1-是*/
+        public byte byConfigurationMode; //0~普通,1~专家(5.1.0新增)
+        public byte byKeyingEnable; //启用键控移动侦测 0-不启用,1-启用
+        /* 异常处理方式 */
+        public int dwHandleType;        //异常处理,异常处理方式的"或"结果
+        /*0x00: 无响应*/
+        /*0x01: 监视器上警告*/
+        /*0x02: 声音警告*/
+        /*0x04: 上传中心*/
+        /*0x08: 触发报警输出*/
+        /*0x10: 触发JPRG抓图并上传Email*/
+        /*0x20: 无线声光报警器联动*/
+        /*0x40: 联动电子地图(目前只有PCNVR支持)*/
+        /*0x200: 抓图并上传FTP*/
+        /*0x1000: 抓图上传到云*/
+        public int dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
+        public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; //实际触发的报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; /*布防时间*/
+        /*触发的录像通道*/
+        public int dwMaxRecordChanNum;   //设备支持的最大关联录像通道数-只读
+        public int[] dwRelRecordChan = new int[MAX_CHANNUM_V40];     /* 实际触发录像通道,按值表示,采用紧凑型排列,从下标0 - dwRelRecordChan -1有效,如果中间遇到0xffffffff,则后续无效*/
+        public byte byDiscardFalseAlarm; //启用去误报 0-无效,1-不启用,2-启用
+        public byte[] byRes = new byte[127]; //保留字节
+
+
+    }
+
+    public static class NET_DVR_RGB_COLOR extends HIKSDKStructure {
+        public byte byRed;      //RGB颜色三分量中的红色
+        public byte byGreen;    //RGB颜色三分量中的绿色
+        public byte byBlue;     //RGB颜色三分量中的蓝色
+        public byte byRes;       //保留
+
+
+    }
+
+    public static class NET_DVR_HIDEALARM_V40 extends HIKSDKStructure {
+        public int dwEnableHideAlarm;                /* 是否启动遮挡报警,0-否,1-低灵敏度,2-中灵敏度,3-高灵敏度*/
+        public short wHideAlarmAreaTopLeftX;            /* 遮挡区域的x坐标 */
+        public short wHideAlarmAreaTopLeftY;            /* 遮挡区域的y坐标 */
+        public short wHideAlarmAreaWidth;                /* 遮挡区域的宽 */
+        public short wHideAlarmAreaHeight;                /*遮挡区域的高*/
+        /* 信号丢失触发报警输出 */
+        public int dwHandleType;        //异常处理,异常处理方式的"或"结果
+        /*0x00: 无响应*/
+        /*0x01: 监视器上警告*/
+        /*0x02: 声音警告*/
+        /*0x04: 上传中心*/
+        /*0x08: 触发报警输出*/
+        /*0x10: 触发JPRG抓图并上传Email*/
+        /*0x20: 无线声光报警器联动*/
+        /*0x40: 联动电子地图(目前只有PCNVR支持)*/
+        /*0x200: 抓图并上传FTP*/
+        /*0x1000:抓图上传到云*/
+        public int dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数量
+        public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; /*触发报警输出号,按值表示,采用紧凑型排列,从下标0 - dwRelAlarmOut -1有效,如果中间遇到0xffffffff,则后续无效*/
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; /*布防时间*/
+        public byte[] byRes = new byte[64]; //保留
+
+
+    }//遮挡报警
+
+    public static class NET_DVR_PICCFG_V40 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sChanName = new byte[NAME_LEN];
+        public int dwVideoFormat;    /* 只读 视频制式 1-NTSC 2-PAL  */
+        public NET_DVR_VICOLOR struViColor = new NET_DVR_VICOLOR();//    图像参数按时间段设置
+        //显示通道名
+        public int dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示
+        public short wShowNameTopLeftX;                /* 通道名称显示位置的x坐标 */
+        public short wShowNameTopLeftY;                /* 通道名称显示位置的y坐标 */
+        //隐私遮挡
+        public int dwEnableHide;        /* 是否启动遮挡 ,0-否,1-是*/
+        public NET_DVR_SHELTER[] struShelter = new NET_DVR_SHELTER[MAX_SHELTERNUM];
+        //OSD
+        public int dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示
+        public short wOSDTopLeftX;                /* OSD的x坐标 */
+        public short wOSDTopLeftY;                /* OSD的y坐标 */
+        public byte byOSDType;                    /* OSD类型(主要是年月日格式) */
+        /* 0: XXXX-XX-XX 年月日 */
+        /* 1: XX-XX-XXXX 月日年 */
+        /* 2: XXXX年XX月XX日 */
+        /* 3: XX月XX日XXXX年 */
+        /* 4: XX-XX-XXXX 日月年*/
+        /* 5: XX日XX月XXXX年 */
+        /*6: xx/xx/xxxx(月/日/年) */
+        /*7: xxxx/xx/xx(年/月/日) */
+        /*8: xx/xx/xxxx(日/月/年)*/
+        public byte byDispWeek;                /* 是否显示星期 */
+        public byte byOSDAttrib;                /* OSD属性:透明,闪烁 */
+        /* 0: 不显示OSD */
+        /* 1: 透明,闪烁 */
+        /* 2: 透明,不闪烁 */
+        /* 3: 不透明,闪烁 */
+        /* 4: 不透明,不闪烁 */
+        public byte byHourOSDType;                /* OSD小时制:0-24小时制,1-12小时制 */
+        public byte byFontSize;      //16*16(中)/8*16(英),1-32*32(中)/16*32(英),2-64*64(中)/32*64(英)  3-48*48(中)/24*48(英) 4-24*24(中)/12*24(英) 5-96*96(中)/48*96(英) 6-128*128(中)/64*128(英) 7-80*80(中)/40*80(英) 8-112*112(中)/56*112(英) 0xff-自适应(adaptive)
+        public byte byOSDColorType;     //0-默认(黑白);1-自定义
+        public byte byAlignment;//对齐方式 0-自适应,1-右对齐, 2-左对齐,3-国标模式,4-全部右对齐(包含叠加字符、时间以及标题等所有OSD字符),5-全部左对齐(包含叠加字符、时间以及标题等所有OSD字符)
+        public byte byOSDMilliSecondEnable;//视频叠加时间支持毫秒;0~不叠加, 1-叠加
+        public NET_DVR_VILOST_V40 struVILost = new NET_DVR_VILOST_V40();  //视频信号丢失报警(支持组)
+        public NET_DVR_VILOST_V40 struAULost = new NET_DVR_VILOST_V40();  /*音频信号丢失报警(支持组)*/
+        public NET_DVR_MOTION_V40 struMotion = new NET_DVR_MOTION_V40();  //移动侦测报警(支持组)
+        public NET_DVR_HIDEALARM_V40 struHideAlarm = new NET_DVR_HIDEALARM_V40();  //遮挡报警(支持组)
+        public NET_DVR_RGB_COLOR struOsdColor = new NET_DVR_RGB_COLOR();//OSD颜色
+        public int dwBoundary; //边界值,左对齐,右对齐以及国标模式的边界值,0-表示默认值,单位:像素;在国标模式下,单位修改为字符个数(范围是,0,1,2)
+        public NET_DVR_RGB_COLOR struOsdBkColor = new NET_DVR_RGB_COLOR(); //自定义OSD背景色
+        public byte byOSDBkColorMode; //OSD背景色模式,0-默认,1-自定义OSD背景色
+        public byte byUpDownBoundary; //上下最小边界值选项,单位为字符个数(范围是,0,1,2),国标模式下无效。byAlignment=3该字段无效,通过dwBoundary进行边界配置,.byAlignment不等于3的情况下, byUpDownBoundary/byLeftRightBoundary配置成功后,dwBoundary值将不生效
+        public byte byLeftRightBoundary; //左右最小边界值选项,单位为字符个数(范围是,0,1,2), 国标模式下无效。byAlignment=3该字段无效,通过dwBoundary进行边界配置,.byAlignment不等于3的情况下, byUpDownBoundary/byLeftRightBoundary配置成功后,dwBoundary值将不生效
+        public byte[] byRes = new byte[113];
+
+
+    }
+
+    public static class NET_DVR_PICCFG_V30 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sChanName = new byte[NAME_LEN];
+        public int dwVideoFormat;                /* 只读 视频制式 1-NTSC 2-PAL*/
+        public NET_DVR_VICOLOR struViColor;        // 图像参数按时间段设置
+        public int dwShowChanName;               // 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
+        public short wShowNameTopLeftX;                /* 通道名称显示位置的x坐标 */
+        public short wShowNameTopLeftY;                /* 通道名称显示位置的y坐标 */
+        public NET_DVR_VILOST_V30 struVILost;      //视频信号丢失报警
+        public NET_DVR_VILOST_V30 struAULost;    /*音频信号丢失报警(保留)*/
+        public NET_DVR_MOTION_V30 struMotion;      //移动侦测
+        public NET_DVR_HIDEALARM_V30 struHideAlarm;//遮挡报警
+        public int dwEnableHide;                    /* 是否启动遮盖(区域大小704*576) ,0-否,1-是*/
+        public NET_DVR_SHELTER[] struShelter = new NET_DVR_SHELTER[4];
+        public int dwShowOsd;                //预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
+        public short wOSDTopLeftX;                /* OSD的x坐标 */
+        public short wOSDTopLeftY;                /* OSD的y坐标 */
+        public byte byOSDType;                    /* OSD类型(主要是年月日格式) */
+        public byte byDispWeek;                /* 是否显示星期 */
+        public byte byOSDAttrib;                /* OSD属性:透明,闪烁 */
+        public byte byHourOSDType;                /* OSD小时制:0-24小时制,1-12小时制 */
+        public byte[] byRes = new byte[64];
+
+
+    }
+
+    public static class NET_DVR_PICCFG_EX extends HIKSDKStructure {//通道图象结构SDK_V14扩展
+        public int dwSize;
+        public byte[] sChanName = new byte[NAME_LEN];
+        public int dwVideoFormat;    /* 只读 视频制式 1-NTSC 2-PAL*/
+        public byte byBrightness;    /*亮度,0-255*/
+        public byte byContrast;        /*对比度,0-255*/
+        public byte bySaturation;    /*饱和度,0-255 */
+        public byte byHue;                /*色调,0-255*/
+        //显示通道名
+        public int dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
+        public short wShowNameTopLeftX;                /* 通道名称显示位置的x坐标 */
+        public short wShowNameTopLeftY;                /* 通道名称显示位置的y坐标 */
+        //信号丢失报警
+        public NET_DVR_VILOST struVILost;
+        //移动侦测
+        public NET_DVR_MOTION struMotion;
+        //遮挡报警
+        public NET_DVR_HIDEALARM struHideAlarm;
+        //遮挡  区域大小704*576
+        public int dwEnableHide;        /* 是否启动遮挡 ,0-否,1-是*/
+        public NET_DVR_SHELTER[] struShelter = new NET_DVR_SHELTER[MAX_SHELTERNUM];
+        //OSD
+        public int dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
+        public short wOSDTopLeftX;                /* OSD的x坐标 */
+        public short wOSDTopLeftY;                /* OSD的y坐标 */
+        public byte byOSDType;                    /* OSD类型(主要是年月日格式) */
+        /* 0: XXXX-XX-XX 年月日 */
+        /* 1: XX-XX-XXXX 月日年 */
+        /* 2: XXXX年XX月XX日 */
+        /* 3: XX月XX日XXXX年 */
+        /* 4: XX-XX-XXXX 日月年*/
+        /* 5: XX日XX月XXXX年 */
+        public byte byDispWeek;                /* 是否显示星期 */
+        public byte byOSDAttrib;                /* OSD属性:透明,闪烁 */
+        /* 0: 不显示OSD */
+        /* 1: 透明,闪烁 */
+        /* 2: 透明,不闪烁 */
+        /* 3: 闪烁,不透明 */
+        /* 4: 不透明,不闪烁 */
+        public byte byHourOsdType;    //小时制:0表示24小时制,1-12小时制或am/pm
+
+
+    }
+
+
+    public static class NET_DVR_PICCFG extends HIKSDKStructure { //通道图象结构(SDK_V13及之前版本)
+        public int dwSize;
+        public byte[] sChanName = new byte[NAME_LEN];
+        public int dwVideoFormat;    /* 只读 视频制式 1-NTSC 2-PAL*/
+        public byte byBrightness;    /*亮度,0-255*/
+        public byte byContrast;        /*对比度,0-255*/
+        public byte bySaturation;    /*饱和度,0-255 */
+        public byte byHue;                /*色调,0-255*/
+        //显示通道名
+        public int dwShowChanName; // 预览的图象上是否显示通道名称,0-不显示,1-显示 区域大小704*576
+        public short wShowNameTopLeftX;                /* 通道名称显示位置的x坐标 */
+        public short wShowNameTopLeftY;                /* 通道名称显示位置的y坐标 */
+        //信号丢失报警
+        public NET_DVR_VILOST struVILost;
+        //移动侦测
+        public NET_DVR_MOTION struMotion;
+        //遮挡报警
+        public NET_DVR_HIDEALARM struHideAlarm;
+        //遮挡  区域大小704*576
+        public int dwEnableHide;        /* 是否启动遮挡 ,0-否,1-是*/
+        public short wHideAreaTopLeftX;                /* 遮挡区域的x坐标 */
+        public short wHideAreaTopLeftY;                /* 遮挡区域的y坐标 */
+        public short wHideAreaWidth;                /* 遮挡区域的宽 */
+        public short wHideAreaHeight;                /*遮挡区域的高*/
+        //OSD
+        public int dwShowOsd;// 预览的图象上是否显示OSD,0-不显示,1-显示 区域大小704*576
+        public short wOSDTopLeftX;                /* OSD的x坐标 */
+        public short wOSDTopLeftY;                /* OSD的y坐标 */
+        public byte byOSDType;                    /* OSD类型(主要是年月日格式) */
+        /* 0: XXXX-XX-XX 年月日 */
+        /* 1: XX-XX-XXXX 月日年 */
+        /* 2: XXXX年XX月XX日 */
+        /* 3: XX月XX日XXXX年 */
+        /* 4: XX-XX-XXXX 日月年*/
+        /* 5: XX日XX月XXXX年 */
+        byte byDispWeek;                /* 是否显示星期 */
+        byte byOSDAttrib;                /* OSD属性:透明,闪烁 */
+        /* 0: 不显示OSD */
+        /* 1: 透明,闪烁 */
+        /* 2: 透明,不闪烁 */
+        /* 3: 闪烁,不透明 */
+        /* 4: 不透明,不闪烁 */
+        public byte reservedData2;
+
+
+    }
+
+    public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_STREAM_INFO struStreamInfo = new NET_DVR_STREAM_INFO();
+        public int dwStreamType;
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_MULTI_STREAM_COMPRESSIONCFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwStreamType;
+        public NET_DVR_COMPRESSION_INFO_V30 struStreamPara = new NET_DVR_COMPRESSION_INFO_V30();
+        public byte[] byRes = new byte[80];
+    }
+
+    //码流压缩参数(子结构)(9000扩展)
+    public static class NET_DVR_COMPRESSION_INFO_V30 extends HIKSDKStructure {
+        public byte byStreamType;        //码流类型 0-视频流, 1-复合流
+        public byte byResolution;    //分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5(保留)16-VGA(640*480) 17-UXGA(1600*1200) 18-SVGA (800*600)19-HD720p(1280*720)20-XVGA  21-HD900p
+        public byte byBitrateType;        //码率类型 0:定码率,1:变码率
+        public byte byPicQuality;        //图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
+        public int dwVideoBitrate;    //视频码率 0-保留 1-16K 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048最高位(31位)置成1表示是自定义码流, 0-30位表示码流值。
+        public int dwVideoFrameRate;    //帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; V2.0版本中新加14-15; 15-18; 16-22;
+        public short wIntervalFrameI;  //I帧间隔
+        public byte byIntervalBPFrame;//0-BBP帧; 1-BP帧; 2-单P帧
+        public byte byENumber;        //E帧数量(保留)
+        public byte byVideoEncType;//视频编码类型 0 hik264;1标准h264; 2标准mpeg4;
+        public byte byAudioEncType;//音频编码类型 0 G722
+        public byte[] byres = new byte[10];
+
+
+    }
+
+    //通道压缩参数(9000扩展)
+    public static class NET_DVR_COMPRESSIONCFG_V30 extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara;    //录像 对应8000的普通
+        public NET_DVR_COMPRESSION_INFO_V30 struRes;   //保留 String[28];
+        public NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara;       //事件触发压缩参数
+        public NET_DVR_COMPRESSION_INFO_V30 struNetPara;               //网传(子码流)
+
+
+    }
+
+
+    public static class NET_DVR_COMPRESSION_INFO extends HIKSDKStructure {//码流压缩参数(子结构)
+        public byte byStreamType;        //码流类型0-视频流,1-复合流,表示压缩参数时最高位表示是否启用压缩参数
+        public byte byResolution;    //分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(车载专用)
+        public byte byBitrateType;        //码率类型0:变码率,1:定码率
+        public byte byPicQuality;        //图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
+        public int dwVideoBitrate;    //视频码率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
+        // 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
+        //最高位(31位)置成1表示是自定义码流, 0-30位表示码流值(MIN-32K MAX-8192K)。
+        public int dwVideoFrameRate;    //帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20;
+
+
+    }
+
+    public static class NET_DVR_COMPRESSIONCFG extends HIKSDKStructure {//通道压缩参数
+        public int dwSize;
+        public NET_DVR_COMPRESSION_INFO struRecordPara; //录像/事件触发录像
+        public NET_DVR_COMPRESSION_INFO struNetPara;    //网传/保留
+
+
+    }
+
+
+    public static class NET_DVR_COMPRESSION_INFO_EX extends HIKSDKStructure {//码流压缩参数(子结构)(扩展) 增加I帧间隔
+        public byte byStreamType;        //码流类型0-视频流, 1-复合流
+        public byte byResolution;    //分辨率0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(车载专用)
+        public byte byBitrateType;        //码率类型0:变码率,1:定码率
+        public byte byPicQuality;        //图象质量 0-最好 1-次好 2-较好 3-一般 4-较差 5-差
+        public int dwVideoBitrate;    //视频码率 0-保留 1-16K(保留) 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K
+        // 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K
+        //最高位(31位)置成1表示是自定义码流, 0-30位表示码流值(MIN-32K MAX-8192K)。
+        public int dwVideoFrameRate;    //帧率 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.0增加14-15, 15-18, 16-22;
+        public short wIntervalFrameI;  //I帧间隔
+        //2006-08-11 增加单P帧的配置接口,可以改善实时流延时问题
+        public byte byIntervalBPFrame;//0-BBP帧; 1-BP帧; 2-单P帧
+        public byte byENumber;//E帧数量
+
+
+    }
+
+    public static class NET_DVR_RECORDSCHED extends HIKSDKStructure //时间段录像参数配置(子结构)
+    {
+        public NET_DVR_SCHEDTIME struRecordTime = new NET_DVR_SCHEDTIME();
+        public byte byRecordType;    //0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警, 5:命令触发, 6: 智能录像
+        public byte[] reservedData = new byte[3];
+
+
+    }
+
+    public static class NET_DVR_RECORDDAY extends HIKSDKStructure //全天录像参数配置(子结构)
+    {
+        public short wAllDayRecord;                /* 是否全天录像 0-否 1-是*/
+        public byte byRecordType;                /* 录象类型 0:定时录像,1:移动侦测,2:报警录像,3:动测|报警,4:动测&报警 5:命令触发, 6: 智能录像*/
+        public byte reservedData;
+
+
+    }
+
+    public static class NET_DVR_RECORDSCHEDWEEK extends HIKSDKStructure {
+        public NET_DVR_RECORDSCHED[] struRecordSched = new NET_DVR_RECORDSCHED[MAX_TIMESEGMENT_V30];
+
+
+    }
+
+    public static class NET_DVR_RECORD_V30 extends HIKSDKStructure {    //通道录像参数配置(9000扩展)
+        public int dwSize;
+        public int dwRecord;                        /*是否录像 0-否 1-是*/
+        public NET_DVR_RECORDDAY[] struRecAllDay = new NET_DVR_RECORDDAY[MAX_DAYS];
+        public NET_DVR_RECORDSCHEDWEEK[] struRecordSched = new NET_DVR_RECORDSCHEDWEEK[MAX_DAYS];
+        public int dwRecordTime;                    /* 录象延时长度 0-5秒, 1-20秒, 2-30秒, 3-1分钟, 4-2分钟, 5-5分钟, 6-10分钟*/
+        public int dwPreRecordTime;                /* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */
+        public int dwRecorderDuration;                /* 录像保存的最长时间 */
+        public byte byRedundancyRec;    /*是否冗余录像,重要数据双备份:0/1*/
+        public byte byAudioRec;        /*录像时复合流编码时是否记录音频数据:国外有此法规*/
+        public byte[] byReserve = new byte[10];
+
+
+    }
+
+    public static class NET_DVR_RECORD extends HIKSDKStructure { //通道录像参数配置
+        public int dwSize;
+        public int dwRecord;  /*是否录像 0-否 1-是*/
+        public NET_DVR_RECORDDAY[] struRecAllDay = new NET_DVR_RECORDDAY[MAX_DAYS];
+        public NET_DVR_RECORDSCHEDWEEK[] struRecordSched = new NET_DVR_RECORDSCHEDWEEK[MAX_DAYS];
+        public int dwRecordTime;    /* 录象时间长度 0-5秒, 1-20秒, 2-30秒, 3-1分钟, 4-2分钟, 5-5分钟, 6-10分钟*/
+        public int dwPreRecordTime;    /* 预录时间 0-不预录 1-5秒 2-10秒 3-15秒 4-20秒 5-25秒 6-30秒 7-0xffffffff(尽可能预录) */
+
+
+    }
+
+    public static class NET_DVR_STATFRAME extends HIKSDKStructure { //单帧统计参数
+        public int dwRelativeTime;
+        public int dwAbsTime;  /*统计绝对时标*/
+        public byte[] byRes = new byte[92];
+
+
+    }
+
+    public static class NET_DVR_STATTIME extends HIKSDKStructure { //单帧统计参数
+        public NET_DVR_TIME tmStart;  //统计开始时间
+        public NET_DVR_TIME tmEnd;    //统计结束时间
+        public byte[] byRes = new byte[92];
+
+
+    }
+
+    public static class UNION_PDC_STATPARAM extends Union {
+        // public byte[] byLen = new byte[140];
+        public NET_DVR_STATFRAME struStatFrame;
+        public NET_DVR_STATTIME struStatTime;
+
+
+    }
+
+    public static class NET_DVR_PDC_ALRAM_INFO extends HIKSDKStructure { //通道录像参数配置
+        public int dwSize;
+        public byte byMode;  /*0-单帧统计结果,1-最小时间段统计结果*/
+        public byte byChannel;
+        public byte bySmart;         //专业智能返回0,Smart 返回 1
+        public byte byRes1;          // 保留字节
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();             //前端设备信息
+        public UNION_PDC_STATPARAM uStatModeParam = new UNION_PDC_STATPARAM();
+        public int dwLeaveNum;    /* 离开人数 */
+        public int dwEnterNum;    /* 进入人数 */
+        public byte byBrokenNetHttp;     //断网续传标志位,0-不是重传数据,1-重传数据
+        public byte byRes3;
+        public short wDevInfoIvmsChannelEx;     //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
+        public int dwPassingNum;        // 经过人数(进入区域后徘徊没有触发进入、离开的人数)
+
+
+        public byte[] byRes2 = new byte[32];
+
+        public void read() {
+            super.read();
+            switch (byMode) {
+                case 0:
+                    uStatModeParam.setType(NET_DVR_STATFRAME.class);
+                    break;
+                case 1:
+                    uStatModeParam.setType(NET_DVR_STATTIME.class);
+                    break;
+                default:
+                    break;
+            }
+            uStatModeParam.read();
+        }
+
+        public void write() {
+            super.write();
+            uStatModeParam.write();
+        }
+
+
+    }
+
+    //云台协议表结构配置
+    public static class NET_DVR_PTZ_PROTOCOL extends HIKSDKStructure {
+        public int dwType;               /*解码器类型值,从1开始连续递增*/
+        public byte[] byDescribe = new byte[DESC_LEN]; /*解码器的描述符,和8000中的一致*/
+
+
+    }
+
+    public static class NET_DVR_PTZCFG extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_PTZ_PROTOCOL[] struPtz = new NET_DVR_PTZ_PROTOCOL[PTZ_PROTOCOL_NUM];/*最大200中PTZ协议*/
+        public int dwPtzNum;           /*有效的ptz协议数目,从0开始(即计算时加1)*/
+        public byte[] byRes = new byte[8];
+
+
+    }
+
+    /***************************
+     * 云台类型(end)
+     ******************************/
+    public static class NET_DVR_DECODERCFG_V30 extends HIKSDKStructure {//通道解码器(云台)参数配置(9000扩展)
+        public int dwSize;
+        public int dwBaudRate;       //波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
+        public byte byDataBit;         // 数据有几位 0-5位,1-6位,2-7位,3-8位;
+        public byte byStopBit;         // 停止位 0-1位,1-2位;
+        public byte byParity;          // 校验 0-无校验,1-奇校验,2-偶校验;
+        public byte byFlowcontrol;     // 0-无,1-软流控,2-硬流控
+        public short wDecoderType;      //解码器类型, 0-YouLi,1-LiLin-1016,2-LiLin-820,3-Pelco-p,4-DM DynaColor,5-HD600,6-JC-4116,7-Pelco-d WX,8-Pelco-d PICO
+        public short wDecoderAddress;    /*解码器地址:0 - 255*/
+        public byte[] bySetPreset = new byte[MAX_PRESET_V30];        /* 预置点是否设置,0-没有设置,1-设置*/
+        public byte[] bySetCruise = new byte[MAX_CRUISE_V30];        /* 巡航是否设置: 0-没有设置,1-设置 */
+        public byte[] bySetTrack = new byte[MAX_TRACK_V30];            /* 轨迹是否设置,0-没有设置,1-设置*/
+
+
+    }
+
+    public static class NET_DVR_DECODERCFG extends HIKSDKStructure {//通道解码器(云台)参数配置
+        public int dwSize;
+        public int dwBaudRate;       //波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
+        public byte byDataBit;         // 数据有几位 0-5位,1-6位,2-7位,3-8位;
+        public byte byStopBit;         // 停止位 0-1位,1-2位;
+        public byte byParity;          // 校验 0-无校验,1-奇校验,2-偶校验;
+        public byte byFlowcontrol;     // 0-无,1-软流控,2-硬流控
+        public short wDecoderType;      //解码器类型, 0-YouLi,1-LiLin-1016,2-LiLin-820,3-Pelco-p,4-DM DynaColor,5-HD600,6-JC-4116,7-Pelco-d WX,8-Pelco-d PICO
+        public short wDecoderAddress;    /*解码器地址:0 - 255*/
+        public byte[] bySetPreset = new byte[MAX_PRESET];        /* 预置点是否设置,0-没有设置,1-设置*/
+        public byte[] bySetCruise = new byte[MAX_CRUISE];        /* 巡航是否设置: 0-没有设置,1-设置 */
+        public byte[] bySetTrack = new byte[MAX_TRACK];            /* 轨迹是否设置,0-没有设置,1-设置*/
+
+
+    }
+
+    public static class NET_DVR_PPPCFG_V30 extends HIKSDKStructure {//ppp参数配置(子结构)
+        public NET_DVR_IPADDR struRemoteIP;    //远端IP地址
+        public NET_DVR_IPADDR struLocalIP;        //本地IP地址
+        public byte[] sLocalIPMask = new byte[16];            //本地IP地址掩码
+        public byte[] sUsername = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public byte byPPPMode;                    //PPP模式, 0-主动,1-被动
+        public byte byRedial;                    //是否回拨 :0-否,1-是
+        public byte byRedialMode;                //回拨模式,0-由拨入者指定,1-预置回拨号码
+        public byte byDataEncrypt;                //数据加密,0-否,1-是
+        public int dwMTU;                    //MTU
+        public byte[] sTelephoneNumber = new byte[PHONENUMBER_LEN];   //电话号码
+
+
+    }
+
+    public static class NET_DVR_PPPCFG extends HIKSDKStructure {//ppp参数配置(子结构)
+        public byte[] sRemoteIP = new byte[16];                //远端IP地址
+        public byte[] sLocalIP = new byte[16];                //本地IP地址
+        public byte[] sLocalIPMask = new byte[16];            //本地IP地址掩码
+        public byte[] sUsername = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public byte byPPPMode;                    //PPP模式, 0-主动,1-被动
+        public byte byRedial;                    //是否回拨 :0-否,1-是
+        public byte byRedialMode;                //回拨模式,0-由拨入者指定,1-预置回拨号码
+        public byte byDataEncrypt;                //数据加密,0-否,1-是
+        public int dwMTU;                    //MTU
+        public byte[] sTelephoneNumber = new byte[PHONENUMBER_LEN];   //电话号码
+
+
+    }
+
+
+    public static class NET_DVR_SINGLE_RS232 extends HIKSDKStructure {//RS232串口参数配置(9000扩展)
+        public int dwBaudRate;   /*波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;*/
+        public byte byDataBit;     /* 数据有几位 0-5位,1-6位,2-7位,3-8位 */
+        public byte byStopBit;     /* 停止位 0-1位,1-2位 */
+        public byte byParity;      /* 校验 0-无校验,1-奇校验,2-偶校验 */
+        public byte byFlowcontrol; /* 0-无,1-软流控,2-硬流控 */
+        public int dwWorkMode;   /* 工作模式,0-232串口用于PPP拨号,1-232串口用于参数控制,2-透明通道 */
+
+
+    }
+
+    public static class NET_DVR_RS232CFG_V30 extends HIKSDKStructure {//RS232串口参数配置(9000扩展)
+        public int dwSize;
+        public NET_DVR_SINGLE_RS232 struRs232;/*目前只有第一个串口设置有效,所有设备都只支持一个串口,其他七个保留*/
+        public byte[] byRes = new byte[84];
+        public NET_DVR_PPPCFG_V30 struPPPConfig;/*ppp参数*/
+
+
+    }
+
+    public static class NET_DVR_RS232CFG extends HIKSDKStructure {//RS232串口参数配置
+        public int dwSize;
+        public int dwBaudRate;//波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200, 11-38400,12-57600,13-76800,14-115.2k;
+        public byte byDataBit;// 数据有几位 0-5位,1-6位,2-7位,3-8位;
+        public byte byStopBit;// 停止位 0-1位,1-2位;
+        public byte byParity;// 校验 0-无校验,1-奇校验,2-偶校验;
+        public byte byFlowcontrol;// 0-无,1-软流控,2-硬流控
+        public int dwWorkMode;// 工作模式,0-窄带传输(232串口用于PPP拨号),1-控制台(232串口用于参数控制),2-透明通道
+        public NET_DVR_PPPCFG struPPPConfig;
+
+
+    }
+
+    public static class NET_DVR_ALARMINCFG_V30 extends HIKSDKStructure {//报警输入参数配置(9000扩展)
+        public int dwSize;
+        public byte[] sAlarmInName = new byte[NAME_LEN];    /* 名称 */
+        public byte byAlarmType;                //报警器类型,0:常开,1:常闭
+        public byte byAlarmInHandle;            /* 是否处理 0-不处理 1-处理*/
+        public byte[] reservedData = new byte[2];
+        public NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType;    /* 处理方式 */
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];//布防时间
+        public byte[] byRelRecordChan = new byte[MAX_CHANNUM_V30]; //报警触发的录象通道,为1表示触发该通道
+        public byte[] byEnablePreset = new byte[MAX_CHANNUM_V30];        /* 是否调用预置点 0-否,1-是*/
+        public byte[] byPresetNo = new byte[MAX_CHANNUM_V30];            /* 调用的云台预置点序号,一个报警输入可以调用多个通道的云台预置点, 0xff表示不调用预置点。*/
+        public byte[] byEnablePresetRevert = new byte[MAX_CHANNUM_V30]; /* 是否恢复到调用预置点前的位置(保留) */
+        public short[] wPresetRevertDelay = new short[MAX_CHANNUM_V30];    /* 恢复预置点延时(保留) */
+        public byte[] byEnableCruise = new byte[MAX_CHANNUM_V30];        /* 是否调用巡航 0-否,1-是*/
+        public byte[] byCruiseNo = new byte[MAX_CHANNUM_V30];            /* 巡航 */
+        public byte[] byEnablePtzTrack = new byte[MAX_CHANNUM_V30];        /* 是否调用轨迹 0-否,1-是*/
+        public byte[] byPTZTrack = new byte[MAX_CHANNUM_V30];            /* 调用的云台的轨迹序号 */
+        public byte[] byRes = new byte[16];
+
+
+    }
+
+    public static class NET_DVR_ALARMINCFG extends HIKSDKStructure {//报警输入参数配置
+        public int dwSize;
+        public byte[] sAlarmInName = new byte[NAME_LEN];    /* 名称 */
+        public byte byAlarmType;    //报警器类型,0:常开,1:常闭
+        public byte byAlarmInHandle;    /* 是否处理 0-不处理 1-处理*/
+        public NET_DVR_HANDLEEXCEPTION struAlarmHandleType;    /* 处理方式 */
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];//布防时间
+        public byte[] byRelRecordChan = new byte[MAX_CHANNUM]; //报警触发的录象通道,为1表示触发该通道
+        public byte[] byEnablePreset = new byte[MAX_CHANNUM];        /* 是否调用预置点 0-否,1-是*/
+        public byte[] byPresetNo = new byte[MAX_CHANNUM];            /* 调用的云台预置点序号,一个报警输入可以调用多个通道的云台预置点, 0xff表示不调用预置点。*/
+        public byte[] byEnableCruise = new byte[MAX_CHANNUM];        /* 是否调用巡航 0-否,1-是*/
+        public byte[] byCruiseNo = new byte[MAX_CHANNUM];            /* 巡航 */
+        public byte[] byEnablePtzTrack = new byte[MAX_CHANNUM];        /* 是否调用轨迹 0-否,1-是*/
+        public byte[] byPTZTrack = new byte[MAX_CHANNUM];            /* 调用的云台的轨迹序号 */
+
+
+    }
+
+    public static class NET_DVR_ADDIT_POSITION extends HIKSDKStructure {//车载GPS信息结构(2007-12-27)
+        public byte[] sDevName = new byte[32];        /* 设备名称 */
+        public int dwSpeed;            /*速度*/
+        public int dwLongitude;        /* 经度*/
+        public int dwLatitude;       /* 纬度*/
+        public byte[] direction = new byte[2];   /* direction[0]:'E'or'W'(东经/西经), direction[1]:'N'or'S'(北纬/南纬) */
+        public byte[] res = new byte[2];              /* 保留位 */
+
+
+    }
+
+    public static class struRecordingHost extends HIKSDKStructure {
+        public byte bySubAlarmType;
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_TIME_EX struRecordEndTime = new NET_DVR_TIME_EX();
+    }
+
+    public static class struAlarmHardDisk extends HIKSDKStructure {
+        public int dwAlarmHardDiskNum;
+
+
+    }
+
+    public static class struAlarmChannel extends HIKSDKStructure {
+        public int dwAlarmChanNum;
+        public int dwPicLen;//Jpeg图片长度
+        public byte byPicURL; //图片数据采用URL方式 0-二进制图片数据,1-图片数据走URL方式
+        public byte byTarget; /*0-不区分识别目标,1-识别目标为人,2-识别目标为车*/
+        public byte[] byRes1 = new byte[2]; //保留
+        public Pointer pDataBuff; //报警图片或者图片URL
+    }
+
+    public static class struIOAlarm extends HIKSDKStructure {
+        public int dwAlarmInputNo;
+        public int dwTrigerAlarmOutNum;
+        public int dwTrigerRecordChanNum;
+
+
+    }
+
+    public static class NET_DVR_TIME_EX extends HIKSDKStructure {
+        public short wYear;
+        public byte byMonth;
+        public byte byDay;
+        public byte byHour;
+        public byte byMinute;
+        public byte bySecond;
+        public byte byRes;
+    }
+
+    public static class uStruAlarm extends Union {
+        public byte[] byUnionLen = new byte[116];
+        public struIOAlarm struioAlarm = new struIOAlarm();
+        public struAlarmHardDisk strualarmHardDisk = new struAlarmHardDisk();
+        public struAlarmChannel strualarmChannel = new struAlarmChannel();
+        public struRecordingHost strurecordingHost = new struRecordingHost();
+
+
+    }
+
+    public static class NET_DVR_ALRAM_FIXED_HEADER extends HIKSDKStructure {
+        public int dwAlarmType;
+        public NET_DVR_TIME_EX struAlarmTime = new NET_DVR_TIME_EX();
+        public uStruAlarm ustruAlarm = new uStruAlarm();
+        public Pointer pRes;
+        public byte byTimeDiffFlag;      /*时差字段是否有效  0-时差无效, 1-时差有效 */
+        public byte cTimeDifferenceH;         /*与UTC的时差(小时),-12 ... +14, +表示东区,,byTimeDiffFlag为1时有效*/
+        public byte cTimeDifferenceM;        /*与UTC的时差(分钟),-30, 30, 45, +表示东区,byTimeDiffFlag为1时有效*/
+        public byte byRes; //保留
+        public short wDevInfoIvmsChannel; //增加后端透传前端时的通道号
+        public byte[] byRes2 = new byte[2]; //保留
+    }
+
+    public static class NET_DVR_ALARMINFO_V40 extends HIKSDKStructure {
+        public NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader = new NET_DVR_ALRAM_FIXED_HEADER();
+        public Pointer pAlarmData;
+
+
+    }
+
+    public static class NET_DVR_ALARMINFO_V30 extends HIKSDKStructure {//上传报警信息(9000扩展)
+        public int dwAlarmType;/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-读写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问, 0xa-GPS定位信息(车载定制)*/
+        public int dwAlarmInputNumber;/*报警输入端口*/
+        public byte[] byAlarmOutputNumber = new byte[MAX_ALARMOUT_V30];/*触发的输出端口,为1表示对应输出*/
+        public byte[] byAlarmRelateChannel = new byte[MAX_CHANNUM_V30];/*触发的录像通道,为1表示对应录像, dwAlarmRelateChannel[0]对应第1个通道*/
+        public byte[] byChannel = new byte[MAX_CHANNUM_V30];/*dwAlarmType为2或3,6时,表示哪个通道,dwChannel[0]对应第1个通道*/
+        public byte[] byDiskNumber = new byte[MAX_DISKNUM_V30];/*dwAlarmType为1,4,5时,表示哪个硬盘, dwDiskNumber[0]对应第1个硬盘*/
+
+
+    }
+
+    public static class NET_DVR_ALARMINFO extends HIKSDKStructure {
+        public int dwAlarmType;/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-读写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问, 9-串口状态, 0xa-GPS定位信息(车载定制)*/
+        public int dwAlarmInputNumber;/*报警输入端口, 当报警类型为9时该变量表示串口状态0表示正常, -1表示错误*/
+        public int[] dwAlarmOutputNumber = new int[MAX_ALARMOUT];/*触发的输出端口,为1表示对应哪一个输出*/
+        public int[] dwAlarmRelateChannel = new int[MAX_CHANNUM];/*触发的录像通道,dwAlarmRelateChannel[0]为1表示第1个通道录像*/
+        public int[] dwChannel = new int[MAX_CHANNUM];/*dwAlarmType为2或3,6时,表示哪个通道,dwChannel[0]位对应第1个通道*/
+        public int[] dwDiskNumber = new int[MAX_DISKNUM];/*dwAlarmType为1,4,5时,表示哪个硬盘, dwDiskNumber[0]位对应第1个硬盘*/
+
+
+    }
+
+    public static class NET_DVR_ALARMINFO_EX extends HIKSDKStructure {//上传报警信息(杭州竞天定制 2006-07-28)
+        public int dwAlarmType;/*0-信号量报警,1-硬盘满,2-信号丢失,3-移动侦测,4-硬盘未格式化,5-读写硬盘出错,6-遮挡报警,7-制式不匹配, 8-非法访问*/
+        public int dwAlarmInputNumber;/*报警输入端口*/
+        public int[] dwAlarmOutputNumber = new int[MAX_ALARMOUT];/*报警输入端口对应的输出端口,哪一位为1表示对应哪一个输出*/
+        public int[] dwAlarmRelateChannel = new int[MAX_CHANNUM];/*报警输入端口对应的录像通道,哪一位为1表示对应哪一路录像,dwAlarmRelateChannel[0]对应第1个通道*/
+        public int[] dwChannel = new int[MAX_CHANNUM];/*dwAlarmType为2或3,6时,表示哪个通道,dwChannel[0]位对应第0个通道*/
+        public int[] dwDiskNumber = new int[MAX_DISKNUM];/*dwAlarmType为1,4,5时,表示哪个硬盘*/
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];  //序列号
+        public byte[] sRemoteAlarmIP = new byte[16];            //远程报警IP地址;
+
+
+    }
+
+    //////////////////////////////////////////////////////////////////////////////////////
+//IPC接入参数配置
+    public static class NET_DVR_IPDEVINFO extends HIKSDKStructure {/* IP设备结构 */
+        public int dwEnable;                    /* 该IP设备是否启用 */
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR();            /* IP地址 */
+        public short wDVRPort;                    /* 端口号 */
+        public byte[] byres = new byte[34];                /* 保留 */
+
+
+    }
+
+    public static class NET_DVR_IPCHANINFO extends HIKSDKStructure {/* IP通道匹配参数 */
+        public byte byEnable;                    /* 该通道是否启用 */
+        public byte byIPID;                    /* IP设备ID 取值1- MAX_IP_DEVICE */
+        public byte byChannel;                    /* 通道号 */
+        public byte[] byres = new byte[33];                    /* 保留 */
+
+
+    }
+
+    public static class NET_DVR_IPPARACFG extends HIKSDKStructure {/* IP接入配置结构 */
+        public int dwSize;                                        /* 结构大小 */
+        public NET_DVR_IPDEVINFO[] struIPDevInfo = new NET_DVR_IPDEVINFO[MAX_IP_DEVICE];    /* IP设备 */
+        public byte[] byAnalogChanEnable = new byte[MAX_ANALOG_CHANNUM];        /* 模拟通道是否启用,从低到高表示1-32通道,0表示无效 1有效 */
+        public NET_DVR_IPCHANINFO[] struIPChanInfo = new NET_DVR_IPCHANINFO[MAX_IP_CHANNEL];    /* IP通道 */
+
+
+    }
+
+    public class NET_DVR_IPDEVINFO_V31 extends HIKSDKStructure {
+        public byte byEnable;/* 该通道是否启用 */
+        public byte byProType;//协议类型(默认为私有协议),0- 私有协议,1- 松下协议,2- 索尼,更多协议通过NET_DVR_GetIPCProtoList获取。
+        public byte byEnableQuickAdd;//0-不支持快速添加;1-使用快速添加
+        public byte byRes1;//保留,置为0
+        public byte[] sUserName = new byte[HCNetSDK.NAME_LEN];//用户名
+        public byte[] sPassword = new byte[HCNetSDK.PASSWD_LEN];//密码
+        public byte[] byDomain = new byte[HCNetSDK.MAX_DOMAIN_NAME];//设备域名
+        public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR();//IP地址
+        public short wDVRPort;//端口号
+        public byte[] szDeviceID = new byte[32];
+        public byte[] byRes2 = new byte[2];//保留,置为0
+
+
+    }
+
+    public class NET_DVR_STREAM_MODE extends HIKSDKStructure {
+
+        public byte byGetStreamType;//取流方式:0- 直接从设备取流;1- 从流媒体取流;2- 通过IPServer获得IP地址后取流;
+        //3- 通过IPServer找到设备,再通过流媒体取设备的流; 4- 通过流媒体由URL去取流;5- 通过hiDDNS域名连接设备然后从设备取流
+        public byte[] byRes = new byte[3];//保留,置为0
+        public NET_DVR_GET_STREAM_UNION uGetStream = new NET_DVR_GET_STREAM_UNION();//不同取流方式联合体
+
+        public void read() {
+            super.read();
+            switch (byGetStreamType) {
+                case 0:
+                    uGetStream.setType(NET_DVR_IPCHANINFO.class);
+                    break;
+                case 6:
+                    uGetStream.setType(NET_DVR_IPCHANINFO_V40.class);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+
+    }
+
+    public class NET_DVR_IPSERVER_STREAM extends HIKSDKStructure {
+        public byte byEnable;
+        public byte[] byRes = new byte[3];
+        public NET_DVR_IPADDR struIPServer = new NET_DVR_IPADDR();
+        public short wPort;
+        public short wDvrNameLen;
+        public byte[] byDVRName = new byte[HCNetSDK.NAME_LEN];
+        public short wDVRSerialLen;
+        public short[] byRes1 = new short[2];
+        public byte[] byDVRSerialNumber = new byte[HCNetSDK.SERIALNO_LEN];
+        public byte[] byUserName = new byte[HCNetSDK.NAME_LEN];
+        public byte[] byPassWord = new byte[HCNetSDK.PASSWD_LEN];
+        public byte byChannel;
+        public byte[] byRes2 = new byte[11];
+
+
+    }
+
+    public class NET_DVR_STREAM_MEDIA_SERVER_CFG extends HIKSDKStructure {
+
+        public byte byValid;//是否启用流媒体服务器取流:0-不启用,非0-启用
+        public byte[] byRes1 = new byte[3];//保留,置为0
+        public NET_DVR_IPADDR struDevIP = new NET_DVR_IPADDR();//流媒体服务器的IP地址
+        public short wDevPort;//流媒体服务器端口
+        public byte byTransmitType;//传输协议类型:0-TCP,1-UDP
+        public byte[] byRes2 = new byte[69];
+
+
+    }
+
+    public class NET_DVR_DEV_CHAN_INFO extends HIKSDKStructure {
+        public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR();//设备IP地址
+        public short wDVRPort;//设备端口号
+        public byte byChannel;//通道号,目前设备的模拟通道号是从1开始的,对于9000等设备的IPC接入,数字通道号从33开始
+        public byte byTransProtocol;//传输协议类型:0-TCP,1-UDP,2-多播方式,3-RTP
+        public byte byTransMode;//传输码流模式:0-主码流,1-子码流
+        public byte byFactoryType;//前端设备厂家类型, 通过接口NET_DVR_GetIPCProtoList获取
+        public byte byDeviceType;//设备类型(视频综合平台使用):1- IPC,2- ENCODER
+        public byte byDispChan;//	显示通道号(智能配置使用),根据能力集决定使用解码通道还是显示通道
+        public byte bySubDispChan;//显示通道子通道号(智能配置时使用)
+        public byte byResolution;//分辨率:1- CIF,2- 4CIF,3- 720P,4- 1080P,5- 500W,用于多屏控制器,多屏控制器会根据该参数分配解码资源
+        public byte[] byRes = new byte[2];//保留,置为0
+        public byte[] byDomain = new byte[HCNetSDK.MAX_DOMAIN_NAME];//设备域名
+        public byte[] sUserName = new byte[HCNetSDK.NAME_LEN];//设备登陆帐号
+        public byte[] sPassword = new byte[HCNetSDK.PASSWD_LEN];//设备密码
+    }
+
+    public class NET_DVR_PU_STREAM_CFG extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg = new NET_DVR_STREAM_MEDIA_SERVER_CFG();
+        public NET_DVR_DEV_CHAN_INFO struDevChanInfo = new NET_DVR_DEV_CHAN_INFO();
+    }
+
+    public class NET_DVR_PU_STREAM_CFG_V41 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byStreamMode;/*取流模式,0-无效,1-通过IP或域名取流,2-通过URL取流,3-通过动态域名解析向设备取流*/
+        public byte byStreamEncrypt;  //是否进行码流加密处理,0-不支持,1-支持
+        public byte[] byRes1 = new byte[2];
+        public NET_DVR_DEC_STREAM_MODE uDecStreamMode;//取流信息
+        public int dwDecDelayTime;//解码延时时间,单位:毫秒
+        public byte[] sStreamPassword = new byte[STREAM_PASSWD_LEN];  //码流加密密码,需敏感信息加密
+        public byte[] byRes2 = new byte[48];
+    }
+
+
+    public class NET_DVR_DDNS_STREAM_CFG extends HIKSDKStructure {
+        public byte byEnable;
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_IPADDR struStreamServer = new NET_DVR_IPADDR();
+        public short wStreamServerPort;
+        public byte byStreamServerTransmitType;
+        public byte byRes2;
+        public NET_DVR_IPADDR struIPServer = new NET_DVR_IPADDR();
+        public short wIPServerPort;
+        public byte[] byRes3 = new byte[2];
+        public byte[] sDVRName = new byte[HCNetSDK.NAME_LEN];
+        public short wDVRNameLen;
+        public short wDVRSerialLen;
+        public byte[] sDVRSerialNumber = new byte[HCNetSDK.SERIALNO_LEN];
+        public byte[] sUserName = new byte[HCNetSDK.NAME_LEN];
+        public byte[] sPassWord = new byte[HCNetSDK.PASSWD_LEN];
+        public short wDVRPort;
+        public byte[] byRes4 = new byte[2];
+        public byte byChannel;
+        public byte byTransProtocol;
+        public byte byTransMode;
+        public byte byFactoryType;
+
+
+    }
+
+    public class NET_DVR_PU_STREAM_URL extends HIKSDKStructure {
+        public byte byEnable;//是否启用:0- 禁用,1- 启用
+        public byte[] strURL = new byte[240];//取流URL路径
+        public byte byTransPortocol;//传输协议类型:0-TCP,1-UDP
+        public short wIPID;//设备ID号,wIPID = iDevInfoIndex + iGroupNO*64 +1
+        public byte byChannel;//设备通道号
+        public byte[] byRes = new byte[7];//保留,置为0
+
+
+    }
+
+    public class NET_DVR_HKDDNS_STREAM extends HIKSDKStructure {
+        public byte byEnable;//是否启用
+        public byte[] byRes = new byte[3];//保留
+        public byte[] byDDNSDomain = new byte[64];//hiDDNS服务器地址
+        public short wPort;//hiDDNS端口,默认:80
+        public short wAliasLen;//别名长度
+        public byte[] byAlias = new byte[HCNetSDK.NAME_LEN];//别名
+        public short wDVRSerialLen;//序列号长度
+        public byte[] byRes1 = new byte[2];//保留
+        public byte[] byDVRSerialNumber = new byte[HCNetSDK.SERIALNO_LEN];//设备序列号
+        public byte[] byUserName = new byte[HCNetSDK.NAME_LEN];//设备登录用户名
+        public byte[] byPassWord = new byte[HCNetSDK.PASSWD_LEN];//设备登录密码
+        public byte byChannel;//设备通道号
+        public byte[] byRes2 = new byte[11];//保留
+
+
+    }
+
+    public class NET_DVR_IPCHANINFO_V40 extends HIKSDKStructure {
+
+        public byte byEnable;//IP通道在线状态,是一个只读的属性;
+        //0表示HDVR或者NVR设备的数字通道连接对应的IP设备失败,该通道不在线;1表示连接成功,该通道在线
+        public byte byRes1;//保留,置为0
+        public short wIPID;//IP设备ID
+        public int dwChannel;//IP设备的通道号,例如设备A(HDVR或者NVR设备)的IP通道01,对应的是设备B(DVS)里的通道04,则byChannel=4,如果前端接的是IPC则byChannel=1。
+        public byte byTransProtocol;//传输协议类型:0- TCP,1- UDP,2- 多播,0xff- auto(自动)
+        public byte byTransMode;//传输码流模式:0- 主码流,1- 子码流
+        public byte byFactoryType;//前端设备厂家类型
+        public byte[] byRes = new byte[241];//保留,置为0
+
+
+    }
+
+
+    public static class NET_DVR_GET_STREAM_UNION extends Union {
+        public NET_DVR_IPCHANINFO struChanInfo = new NET_DVR_IPCHANINFO(); /*IP通道信息*/
+        public NET_DVR_IPCHANINFO_V40 struIPChan = new NET_DVR_IPCHANINFO_V40(); //直接从设备取流(扩展)
+        public byte[] byUnionLen = new byte[492]; //直接从设备取流(扩展)
+
+
+    }
+
+    public static class NET_DVR_IPPARACFG_V40 extends HIKSDKStructure {/* IP接入配置结构V40 */
+        public int dwSize;   /* 结构大小 */
+        public int dwGroupNum;//设备支持的总组数(只读)。
+        public int dwAChanNum;//最大模拟通道个数(只读)
+        public int dwDChanNum;//数字通道个数(只读)
+        public int dwStartDChan;//起始数字通道(只读)
+        public byte[] byAnalogChanEnable = new byte[MAX_CHANNUM_V30]; //模拟通道资源是否启用,从低到高表示1-64通道:0-禁用,1-启用。
+        public NET_DVR_IPDEVINFO_V31[] struIPDevInfo = new NET_DVR_IPDEVINFO_V31[MAX_IP_DEVICE_V40];//IP设备信息,下标0对应设备IP ID为1
+        public NET_DVR_STREAM_MODE[] struStreamMode = new NET_DVR_STREAM_MODE[MAX_CHANNUM_V30];//取流模式
+        public byte[] byRes2 = new byte[20];//保留,置为0
+
+
+    }
+
+    public static class NET_DVR_IPALARMOUTINFO extends HIKSDKStructure {/* 报警输出参数 */
+        public byte byIPID;                    /* IP设备ID取值1- MAX_IP_DEVICE */
+        public byte byAlarmOut;                /* 报警输出号 */
+        public byte[] byRes = new byte[18];                    /* 保留 */
+
+
+    }
+
+    public static class NET_DVR_IPALARMOUTCFG extends HIKSDKStructure {/* IP报警输出配置结构 */
+        public int dwSize;                                    /* 结构大小 */
+        public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo = new NET_DVR_IPALARMOUTINFO[MAX_IP_ALARMOUT];/* IP报警输出 */
+
+
+    }
+
+    public static class NET_DVR_IPALARMININFO extends HIKSDKStructure {/* 报警输入参数 */
+        public byte byIPID;                    /* IP设备ID取值1- MAX_IP_DEVICE */
+        public byte byAlarmIn;                    /* 报警输入号 */
+        public byte[] byRes = new byte[18];                    /* 保留 */
+
+
+    }
+
+    public static class NET_DVR_IPALARMINCFG extends HIKSDKStructure {/* IP报警输入配置结构 */
+        public int dwSize;                                    /* 结构大小 */
+        public NET_DVR_IPALARMININFO[] struIPAlarmInInfo = new NET_DVR_IPALARMININFO[MAX_IP_ALARMIN];/* IP报警输入 */
+
+
+    }
+
+    public static class NET_DVR_IPALARMINFO extends HIKSDKStructure {//ipc alarm info
+        public NET_DVR_IPDEVINFO[] struIPDevInfo = new NET_DVR_IPDEVINFO[MAX_IP_DEVICE];            /* IP设备 */
+        public byte[] byAnalogChanEnable = new byte[MAX_ANALOG_CHANNUM];                /* 模拟通道是否启用,0-未启用 1-启用 */
+        public NET_DVR_IPCHANINFO[] struIPChanInfo = new NET_DVR_IPCHANINFO[MAX_IP_CHANNEL];            /* IP通道 */
+        public NET_DVR_IPALARMININFO[] struIPAlarmInInfo = new NET_DVR_IPALARMININFO[MAX_IP_ALARMIN];    /* IP报警输入 */
+        public NET_DVR_IPALARMOUTINFO[] struIPAlarmOutInfo = new NET_DVR_IPALARMOUTINFO[MAX_IP_ALARMOUT]; /* IP报警输出 */
+
+
+    }
+
+    public static class NET_DVR_SINGLE_HD extends HIKSDKStructure {//本地硬盘信息配置
+        public int dwHDNo;         /*硬盘号, 取值0~MAX_DISKNUM_V30-1*/
+        public int dwCapacity;     /*硬盘容量(不可设置)*/
+        public int dwFreeSpace;    /*硬盘剩余空间(不可设置)*/
+        public int dwHdStatus;     /*硬盘状态(不可设置) 0-正常, 1-未格式化, 2-错误, 3-SMART状态, 4-不匹配, 5-休眠*/
+        public byte byHDAttr;       /*0-默认, 1-冗余; 2-只读*/
+        public byte[] byRes1 = new byte[3];
+        public int dwHdGroup;      /*属于哪个盘组 1-MAX_HD_GROUP*/
+        public byte[] byRes2 = new byte[120];
+    }
+
+    public static class NET_DVR_HDCFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwHDCount;          /*硬盘数(不可设置)*/
+        public NET_DVR_SINGLE_HD[] struHDInfo = new NET_DVR_SINGLE_HD[MAX_DISKNUM_V30];//硬盘相关操作都需要重启才能生效;
+    }
+
+    public static class NET_DVR_SINGLE_HDGROUP extends HIKSDKStructure {//本地盘组信息配置
+        public int dwHDGroupNo;       /*盘组号(不可设置) 1-MAX_HD_GROUP*/
+        public byte[] byHDGroupChans = new byte[64]; /*盘组对应的录像通道, 0-表示该通道不录象到该盘组,1-表示录象到该盘组*/
+        public byte[] byRes = new byte[8];
+    }
+
+    public static class NET_DVR_HDGROUP_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwHDGroupCount;        /*盘组总数(不可设置)*/
+        public NET_DVR_SINGLE_HDGROUP[] struHDGroupAttr = new NET_DVR_SINGLE_HDGROUP[MAX_HD_GROUP];//硬盘相关操作都需要重启才能生效;
+    }
+
+    public static class NET_DVR_SCALECFG extends HIKSDKStructure {//配置缩放参数的结构
+        public int dwSize;
+        public int dwMajorScale;    /* 主显示 0-不缩放,1-缩放*/
+        public int dwMinorScale;    /* 辅显示 0-不缩放,1-缩放*/
+        public int[] dwRes = new int[2];
+    }
+
+    public static class NET_DVR_ALARMOUTCFG_V30 extends HIKSDKStructure {//DVR报警输出(9000扩展)
+        public int dwSize;
+        public byte[] sAlarmOutName = new byte[NAME_LEN];    /* 名称 */
+        public int dwAlarmOutDelay;    /* 输出保持时间(-1为无限,手动关闭) */
+        //0-5秒,1-10秒,2-30秒,3-1分钟,4-2分钟,5-5分钟,6-10分钟,7-手动
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmOutTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];/* 报警输出激活时间段 */
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_ALARMOUTCFG extends HIKSDKStructure {//DVR报警输出
+        public int dwSize;
+        public byte[] sAlarmOutName = new byte[NAME_LEN];    /* 名称 */
+        public int dwAlarmOutDelay;    /* 输出保持时间(-1为无限,手动关闭) */
+        //0-5秒,1-10秒,2-30秒,3-1分钟,4-2分钟,5-5分钟,6-10分钟,7-手动
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmOutTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];/* 报警输出激活时间段 */
+    }
+
+    public static class NET_DVR_PREVIEWCFG_V30 extends HIKSDKStructure {//DVR本地预览参数(9000扩展)
+        public int dwSize;
+        public byte byPreviewNumber;//预览数目,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 0xff:最大画面
+        public byte byEnableAudio;//是否声音预览,0-不预览,1-预览
+        public short wSwitchTime;//切换时间,0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s
+        public byte[][] bySwitchSeq = new byte[MAX_PREVIEW_MODE][MAX_WINDOW_V30];//切换顺序,如果lSwitchSeq[i]为 0xff表示不用
+        public byte[] byRes = new byte[24];
+    }
+
+    public static class NET_DVR_PREVIEWCFG extends HIKSDKStructure {//DVR本地预览参数
+        public int dwSize;
+        public byte byPreviewNumber;//预览数目,0-1画面,1-4画面,2-9画面,3-16画面,0xff:最大画面
+        public byte byEnableAudio;//是否声音预览,0-不预览,1-预览
+        public short wSwitchTime;//切换时间,0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s
+        public byte[] bySwitchSeq = new byte[MAX_WINDOW];//切换顺序,如果lSwitchSeq[i]为 0xff表示不用
+    }
+
+    public static class NET_DVR_VGAPARA extends HIKSDKStructure {//DVR视频输出
+        public short wResolution;                            /* 分辨率 */
+        public short wFreq;                                    /* 刷新频率 */
+        public int dwBrightness;                            /* 亮度 */
+    }
+
+    /*
+     * MATRIX输出参数结构
+     */
+    public static class NET_DVR_MATRIXPARA_V30 extends HIKSDKStructure {
+        public short[] wOrder = new short[MAX_ANALOG_CHANNUM];        /* 预览顺序, 0xff表示相应的窗口不预览 */
+        public short wSwitchTime;                    /* 预览切换时间 */
+        public byte[] res = new byte[14];
+    }
+
+    public static class NET_DVR_MATRIXPARA extends HIKSDKStructure {
+        public short wDisplayLogo;                        /* 显示视频通道号(保留) */
+        public short wDisplayOsd;                        /* 显示时间(保留) */
+    }
+
+    public static class NET_DVR_VOOUT extends HIKSDKStructure {
+        public byte byVideoFormat;                        /* 输出制式,0-PAL,1-NTSC */
+        public byte byMenuAlphaValue;                    /* 菜单与背景图象对比度 */
+        public short wScreenSaveTime;                    /* 屏幕保护时间 0-从不,1-1分钟,2-2分钟,3-5分钟,4-10分钟,5-20分钟,6-30分钟 */
+        public short wVOffset;                            /* 视频输出偏移 */
+        public short wBrightness;                        /* 视频输出亮度 */
+        public byte byStartMode;                        /* 启动后视频输出模式(0:菜单,1:预览)*/
+        public byte byEnableScaler;                    /* 是否启动缩放 (0-不启动, 1-启动)*/
+    }
+
+    public static class NET_DVR_VIDEOOUT_V30 extends HIKSDKStructure {//DVR视频输出(9000扩展)
+        public int dwSize;
+        public NET_DVR_VOOUT[] struVOOut = new NET_DVR_VOOUT[MAX_VIDEOOUT_V30];
+        public NET_DVR_VGAPARA[] struVGAPara = new NET_DVR_VGAPARA[MAX_VGA_V30];    /* VGA参数 */
+        public NET_DVR_MATRIXPARA_V30[] struMatrixPara = new NET_DVR_MATRIXPARA_V30[MAX_MATRIXOUT];        /* MATRIX参数 */
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_VIDEOOUT extends HIKSDKStructure {//DVR视频输出
+        public int dwSize;
+        public NET_DVR_VOOUT[] struVOOut = new NET_DVR_VOOUT[MAX_VIDEOOUT];
+        public NET_DVR_VGAPARA[] struVGAPara = new NET_DVR_VGAPARA[MAX_VGA];    /* VGA参数 */
+        public NET_DVR_MATRIXPARA struMatrixPara;        /* MATRIX参数 */
+    }
+
+    public static class NET_DVR_USER_INFO_V30 extends HIKSDKStructure {//单用户参数(子结构)(9000扩展)
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public byte[] byLocalRight = new byte[MAX_RIGHT];    /* 本地权限 */
+        /*数组0: 本地控制云台*/
+        /*数组1: 本地手动录象*/
+        /*数组2: 本地回放*/
+        /*数组3: 本地设置参数*/
+        /*数组4: 本地查看状态、日志*/
+        /*数组5: 本地高级操作(升级,格式化,重启,关机)*/
+        /*数组6: 本地查看参数 */
+        /*数组7: 本地管理模拟和IP camera */
+        /*数组8: 本地备份 */
+        /*数组9: 本地关机/重启 */
+        public byte[] byRemoteRight = new byte[MAX_RIGHT];/* 远程权限 */
+        /*数组0: 远程控制云台*/
+        /*数组1: 远程手动录象*/
+        /*数组2: 远程回放 */
+        /*数组3: 远程设置参数*/
+        /*数组4: 远程查看状态、日志*/
+        /*数组5: 远程高级操作(升级,格式化,重启,关机)*/
+        /*数组6: 远程发起语音对讲*/
+        /*数组7: 远程预览*/
+        /*数组8: 远程请求报警上传、报警输出*/
+        /*数组9: 远程控制,本地输出*/
+        /*数组10: 远程控制串口*/
+        /*数组11: 远程查看参数 */
+        /*数组12: 远程管理模拟和IP camera */
+        /*数组13: 远程关机/重启 */
+        public byte[] byNetPreviewRight = new byte[MAX_CHANNUM_V30];        /* 远程可以预览的通道 0-有权限,1-无权限*/
+        public byte[] byLocalPlaybackRight = new byte[MAX_CHANNUM_V30];        /* 本地可以回放的通道 0-有权限,1-无权限*/
+        public byte[] byNetPlaybackRight = new byte[MAX_CHANNUM_V30];        /* 远程可以回放的通道 0-有权限,1-无权限*/
+        public byte[] byLocalRecordRight = new byte[MAX_CHANNUM_V30];        /* 本地可以录像的通道 0-有权限,1-无权限*/
+        public byte[] byNetRecordRight = new byte[MAX_CHANNUM_V30];            /* 远程可以录像的通道 0-有权限,1-无权限*/
+        public byte[] byLocalPTZRight = new byte[MAX_CHANNUM_V30];            /* 本地可以PTZ的通道 0-有权限,1-无权限*/
+        public byte[] byNetPTZRight = new byte[MAX_CHANNUM_V30];            /* 远程可以PTZ的通道 0-有权限,1-无权限*/
+        public byte[] byLocalBackupRight = new byte[MAX_CHANNUM_V30];        /* 本地备份权限通道 0-有权限,1-无权限*/
+        public NET_DVR_IPADDR struUserIP;        /* 用户IP地址(为0时表示允许任何地址) */
+        public byte[] byMACAddr = new byte[MACADDR_LEN];    /* 物理地址 */
+        public byte byPriority;                /* 优先级,0xff-无,0--低,1--中,2--高 */
+        /*
+                                    无……表示不支持优先级的设置
+                                    低……默认权限:包括本地和远程回放,本地和远程查看日志和状态,本地和远程关机/重启
+                                    中……包括本地和远程控制云台,本地和远程手动录像,本地和远程回放,语音对讲和远程预览
+                                          本地备份,本地/远程关机/重启
+                                    高……管理员
+                                    */
+        public byte[] byRes = new byte[17];
+    }
+
+    public static class NET_DVR_USER_INFO_EX extends HIKSDKStructure {//单用户参数(SDK_V15扩展)(子结构)
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public int[] dwLocalRight = new int[MAX_RIGHT];    /* 权限 */
+        /*数组0: 本地控制云台*/
+        /*数组1: 本地手动录象*/
+        /*数组2: 本地回放*/
+        /*数组3: 本地设置参数*/
+        /*数组4: 本地查看状态、日志*/
+        /*数组5: 本地高级操作(升级,格式化,重启,关机)*/
+        public int dwLocalPlaybackRight;        /* 本地可以回放的通道 bit0 -- channel 1*/
+        public int[] dwRemoteRight = new int[MAX_RIGHT];    /* 权限 */
+        /*数组0: 远程控制云台*/
+        /*数组1: 远程手动录象*/
+        /*数组2: 远程回放 */
+        /*数组3: 远程设置参数*/
+        /*数组4: 远程查看状态、日志*/
+        /*数组5: 远程高级操作(升级,格式化,重启,关机)*/
+        /*数组6: 远程发起语音对讲*/
+        /*数组7: 远程预览*/
+        /*数组8: 远程请求报警上传、报警输出*/
+        /*数组9: 远程控制,本地输出*/
+        /*数组10: 远程控制串口*/
+        public int dwNetPreviewRight;        /* 远程可以预览的通道 bit0 -- channel 1*/
+        public int dwNetPlaybackRight;        /* 远程可以回放的通道 bit0 -- channel 1*/
+        public byte[] sUserIP = new byte[16];                /* 用户IP地址(为0时表示允许任何地址) */
+        public byte[] byMACAddr = new byte[MACADDR_LEN];    /* 物理地址 */
+    }
+
+    public static class NET_DVR_USER_INFO extends HIKSDKStructure {//单用户参数(子结构)
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public int[] dwLocalRight = new int[MAX_RIGHT];    /* 权限 */
+        /*数组0: 本地控制云台*/
+        /*数组1: 本地手动录象*/
+        /*数组2: 本地回放*/
+        /*数组3: 本地设置参数*/
+        /*数组4: 本地查看状态、日志*/
+        /*数组5: 本地高级操作(升级,格式化,重启,关机)*/
+        public int[] dwRemoteRight = new int[MAX_RIGHT];    /* 权限 */
+        /*数组0: 远程控制云台*/
+        /*数组1: 远程手动录象*/
+        /*数组2: 远程回放 */
+        /*数组3: 远程设置参数*/
+        /*数组4: 远程查看状态、日志*/
+        /*数组5: 远程高级操作(升级,格式化,重启,关机)*/
+        /*数组6: 远程发起语音对讲*/
+        /*数组7: 远程预览*/
+        /*数组8: 远程请求报警上传、报警输出*/
+        /*数组9: 远程控制,本地输出*/
+        /*数组10: 远程控制串口*/
+        public byte[] sUserIP = new byte[16];                /* 用户IP地址(为0时表示允许任何地址) */
+        public byte[] byMACAddr = new byte[MACADDR_LEN];    /* 物理地址 */
+    }
+
+    public static class NET_DVR_USER_V30 extends HIKSDKStructure {//DVR用户参数(9000扩展)
+        public int dwSize;
+        public NET_DVR_USER_INFO_V30[] struUser = new NET_DVR_USER_INFO_V30[MAX_USERNUM_V30];
+    }
+
+    public static class NET_DVR_USER_EX extends HIKSDKStructure {//DVR用户参数(SDK_V15扩展)
+        public int dwSize;
+        public NET_DVR_USER_INFO_EX[] struUser = new NET_DVR_USER_INFO_EX[MAX_USERNUM];
+    }
+
+    public static class NET_DVR_USER extends HIKSDKStructure {//DVR用户参数
+        public int dwSize;
+        public NET_DVR_USER_INFO[] struUser = new NET_DVR_USER_INFO[MAX_USERNUM];
+    }
+
+    public static class NET_DVR_EXCEPTION_V30 extends HIKSDKStructure {//DVR异常参数(9000扩展)
+        public int dwSize;
+        public NET_DVR_HANDLEEXCEPTION_V30[] struExceptionHandleType = new NET_DVR_HANDLEEXCEPTION_V30[MAX_EXCEPTIONNUM_V30];
+        /*数组0-盘满,1- 硬盘出错,2-网线断,3-局域网内IP 地址冲突,4-非法访问, 5-输入/输出视频制式不匹配, 6-行车超速(车载专用), 7-视频信号异常(9000)*/
+    }
+
+    public static class NET_DVR_EXCEPTION extends HIKSDKStructure {//DVR异常参数
+        public int dwSize;
+        public NET_DVR_HANDLEEXCEPTION[] struExceptionHandleType = new NET_DVR_HANDLEEXCEPTION[MAX_EXCEPTIONNUM];
+        /*数组0-盘满,1- 硬盘出错,2-网线断,3-局域网内IP 地址冲突,4-非法访问, 5-输入/输出视频制式不匹配, 6-行车超速(车载专用)*/
+    }
+
+    public static class NET_DVR_CHANNELSTATE_V30 extends HIKSDKStructure {//通道状态(9000扩展)
+        public byte byRecordStatic; //通道是否在录像,0-不录像,1-录像
+        public byte bySignalStatic; //连接的信号状态,0-正常,1-信号丢失
+        public byte byHardwareStatic;//通道硬件状态,0-正常,1-异常,例如DSP死掉
+        public byte byRes1;        //保留
+        public int dwBitRate;//实际码率
+        public int dwLinkNum;//客户端连接的个数
+        public NET_DVR_IPADDR[] struClientIP = new NET_DVR_IPADDR[MAX_LINK];//客户端的IP地址
+        public int dwIPLinkNum;//如果该通道为IP接入,那么表示IP接入当前的连接数
+        public byte byExceedMaxLink;        // 是否超出了单路6路连接数 0 - 未超出, 1-超出
+        public byte[] byRes = new byte[3];        // 保留字节
+        public int dwAllBitRate;      //所有实际码率之和
+        public int dwChannelNo;    //当前的通道号,0xffffffff表示无效
+    }
+
+    public static class NET_DVR_CHANNELSTATE extends HIKSDKStructure {//通道状态
+        public byte byRecordStatic; //通道是否在录像,0-不录像,1-录像
+        public byte bySignalStatic; //连接的信号状态,0-正常,1-信号丢失
+        public byte byHardwareStatic;//通道硬件状态,0-正常,1-异常,例如DSP死掉
+        public byte reservedData;        //保留
+        public int dwBitRate;//实际码率
+        public int dwLinkNum;//客户端连接的个数
+        public int[] dwClientIP = new int[MAX_LINK];//客户端的IP地址
+    }
+
+    public static class NET_DVR_DISKSTATE extends HIKSDKStructure {//硬盘状态
+        public int dwVolume;//硬盘的容量
+        public int dwFreeSpace;//硬盘的剩余空间
+        public int dwHardDiskStatic; //硬盘的状态,按位:1-休眠,2-不正常,3-休眠硬盘出错
+    }
+
+    public static class NET_DVR_WORKSTATE_V30 extends HIKSDKStructure {//DVR工作状态(9000扩展)
+        public int dwDeviceStatic;    //设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
+        public NET_DVR_DISKSTATE[] struHardDiskStatic = new NET_DVR_DISKSTATE[MAX_DISKNUM_V30];
+        public NET_DVR_CHANNELSTATE_V30[] struChanStatic = new NET_DVR_CHANNELSTATE_V30[MAX_CHANNUM_V30];//通道的状态
+        public byte[] byAlarmInStatic = new byte[MAX_ALARMIN_V30]; //报警端口的状态,0-没有报警,1-有报警
+        public byte[] byAlarmOutStatic = new byte[MAX_ALARMOUT_V30]; //报警输出端口的状态,0-没有输出,1-有报警输出
+        public int dwLocalDisplay;//本地显示状态,0-正常,1-不正常
+        public byte[] byAudioChanStatus = new byte[MAX_AUDIO_V30];//表示语音通道的状态 0-未使用,1-使用中, 0xff无效
+        public byte[] byRes = new byte[10];
+    }
+
+    public static class NET_DVR_WORKSTATE extends HIKSDKStructure {//DVR工作状态
+        public int dwDeviceStatic;    //设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
+        public NET_DVR_DISKSTATE[] struHardDiskStatic = new NET_DVR_DISKSTATE[MAX_DISKNUM];
+        public NET_DVR_CHANNELSTATE[] struChanStatic = new NET_DVR_CHANNELSTATE[MAX_CHANNUM];//通道的状态
+        public byte[] byAlarmInStatic = new byte[MAX_ALARMIN]; //报警端口的状态,0-没有报警,1-有报警
+        public byte[] byAlarmOutStatic = new byte[MAX_ALARMOUT]; //报警输出端口的状态,0-没有输出,1-有报警输出
+        public int dwLocalDisplay;//本地显示状态,0-正常,1-不正常
+    }
+
+    public static class NET_DVR_LOG_V30 extends HIKSDKStructure {//日志信息(9000扩展)
+        public NET_DVR_TIME strLogTime;
+        public int dwMajorType;    //主类型 1-报警; 2-异常; 3-操作; 0xff-全部
+        public int dwMinorType;//次类型 0-全部;
+        public byte[] sPanelUser = new byte[MAX_NAMELEN]; //操作面板的用户名
+        public byte[] sNetUser = new byte[MAX_NAMELEN];//网络操作的用户名
+        public NET_DVR_IPADDR struRemoteHostAddr;//??程主机地址
+        public int dwParaType;//参数类型
+        public int dwChannel;//通道号
+        public int dwDiskNumber;//硬盘号
+        public int dwAlarmInPort;//报警输入端口
+        public int dwAlarmOutPort;//报警输出端口
+        public int dwInfoLen;
+        public byte[] sInfo = new byte[LOG_INFO_LEN];
+    }
+
+    //日志信息
+    public static class NET_DVR_LOG extends HIKSDKStructure {
+        public NET_DVR_TIME strLogTime;
+        public int dwMajorType;    //主类型 1-报警; 2-异常; 3-操作; 0xff-全部
+        public int dwMinorType;//次类型 0-全部;
+        public byte[] sPanelUser = new byte[MAX_NAMELEN]; //操作面板的用户名
+        public byte[] sNetUser = new byte[MAX_NAMELEN];//网络操作的用户名
+        public byte[] sRemoteHostAddr = new byte[16];//远程主机地址
+        public int dwParaType;//参数类型
+        public int dwChannel;//通道号
+        public int dwDiskNumber;//硬盘号
+        public int dwAlarmInPort;//报警输入端口
+        public int dwAlarmOutPort;//报警输出端口
+    }
+
+    /************************
+     * DVR日志 end
+     ***************************/
+    public static class NET_DVR_ALARMOUTSTATUS_V30 extends HIKSDKStructure {//报警输出状态(9000扩展)
+        public byte[] Output = new byte[MAX_ALARMOUT_V30];
+    }
+
+    public static class NET_DVR_ALARMOUTSTATUS extends HIKSDKStructure {//报警输出状态
+        public byte[] Output = new byte[MAX_ALARMOUT];
+    }
+
+    public static class NET_DVR_TRADEINFO extends HIKSDKStructure {//交易信息
+        public short m_Year;
+        public short m_Month;
+        public short m_Day;
+        public short m_Hour;
+        public short m_Minute;
+        public short m_Second;
+        public byte[] DeviceName = new byte[24];    //设备名称
+        public int dwChannelNumer;    //通道号
+        public byte[] CardNumber = new byte[32];    //卡号
+        public byte[] cTradeType = new byte[12];    //交易类型
+        public int dwCash;            //交易金额
+    }
+
+    public static class NET_DVR_FRAMETYPECODE extends HIKSDKStructure {/*帧格式*/
+        public byte[] code = new byte[12];        /* 代码 */
+    }
+
+    public static class NET_DVR_FRAMEFORMAT_V30 extends HIKSDKStructure {//ATM参数(9000扩展)
+        public int dwSize;
+        public NET_DVR_IPADDR struATMIP;                /* ATM IP地址 */
+        public int dwATMType;                            /* ATM类型 */
+        public int dwInputMode;                        /* 输入方式	0-网络侦听 1-网络接收 2-串口直接输入 3-串口ATM命令输入*/
+        public int dwFrameSignBeginPos;                /* 报文标志位的起始位置*/
+        public int dwFrameSignLength;                    /* 报文标志位的长度 */
+        public byte[] byFrameSignContent = new byte[12];                /* 报文标志位的内容 */
+        public int dwCardLengthInfoBeginPos;            /* 卡号长度信息的起始位置 */
+        public int dwCardLengthInfoLength;                /* 卡号长度信息的长度 */
+        public int dwCardNumberInfoBeginPos;            /* 卡号信息的起始位置 */
+        public int dwCardNumberInfoLength;                /* 卡号信息的长度 */
+        public int dwBusinessTypeBeginPos;                /* 交易类型的起始位置 */
+        public int dwBusinessTypeLength;                /* 交易类型的长度 */
+        public NET_DVR_FRAMETYPECODE[] frameTypeCode = new NET_DVR_FRAMETYPECODE[10];    /* 类型 */
+        public short wATMPort;                            /* 卡号捕捉端口号(网络协议方式) (保留)0xffff表示该值无效*/
+        public short wProtocolType;                        /* 网络协议类型(保留) 0xffff表示该值无效*/
+        public byte[] byRes = new byte[24];
+    }
+
+    public static class NET_DVR_FRAMEFORMAT extends HIKSDKStructure {//ATM参数
+        public int dwSize;
+        public byte[] sATMIP = new byte[16];                        /* ATM IP地址 */
+        public int dwATMType;                        /* ATM类型 */
+        public int dwInputMode;                        /* 输入方式	0-网络侦听 1-网络接收 2-串口直接输入 3-串口ATM命令输入*/
+        public int dwFrameSignBeginPos;              /* 报文标志位的起始位置*/
+        public int dwFrameSignLength;                /* 报文标志位的长度 */
+        public byte[] byFrameSignContent = new byte[12];            /* 报文标志位的内容 */
+        public int dwCardLengthInfoBeginPos;            /* 卡号长度信息的起始位置 */
+        public int dwCardLengthInfoLength;            /* 卡号长度信息的长度 */
+        public int dwCardNumberInfoBeginPos;            /* 卡号信息的起始位置 */
+        public int dwCardNumberInfoLength;            /* 卡号信息的长度 */
+        public int dwBusinessTypeBeginPos;           /* 交易类型的起始位置 */
+        public int dwBusinessTypeLength;                /* 交易类型的长度 */
+        public NET_DVR_FRAMETYPECODE[] frameTypeCode = new NET_DVR_FRAMETYPECODE[10];/* 类型 */
+    }
+
+    public static class NET_DVR_FTPTYPECODE extends HIKSDKStructure {
+        public byte[] sFtpType = new byte[32];     /*客户定义的操作类型*/
+        public byte[] sFtpCode = new byte[8];      /*客户定义的操作类型的对应的码*/
+    }
+
+    public static class NET_DVR_FRAMEFORMAT_EX extends HIKSDKStructure {//ATM参数添加FTP上传参数, 俄罗斯银行定制, 2006-11-17
+        public int dwSize;
+        public byte[] sATMIP = new byte[16];                        /* ATM IP地址 */
+        public int dwATMType;                        /* ATM类型 */
+        public int dwInputMode;                        /* 输入方式	0-网络侦听 1-网络接收 2-串口直接输入 3-串口ATM命令输入*/
+        public int dwFrameSignBeginPos;              /* 报文标志位的起始位置*/
+        public int dwFrameSignLength;                /* 报文标志位的长度 */
+        public byte[] byFrameSignContent = new byte[12];            /* 报文标志位的内容 */
+        public int dwCardLengthInfoBeginPos;            /* 卡号长度信息的起始位置 */
+        public int dwCardLengthInfoLength;            /* 卡号长度信息的长度 */
+        public int dwCardNumberInfoBeginPos;            /* 卡号信息的起始位置 */
+        public int dwCardNumberInfoLength;            /* 卡号信息的长度 */
+        public int dwBusinessTypeBeginPos;           /* 交易类型的起始位置 */
+        public int dwBusinessTypeLength;                /* 交易类型的长度 */
+        public NET_DVR_FRAMETYPECODE[] frameTypeCode = new NET_DVR_FRAMETYPECODE[10];/* 类型 */
+        public byte[] sFTPIP = new byte[16];                        /* FTP IP */
+        public byte[] byFtpUsername = new byte[NAME_LEN];            /* 用户名 */
+        public byte[] byFtpPasswd = new byte[PASSWD_LEN];            /* 密码 */
+        public byte[] sDirName = new byte[NAME_LEN];                /*服务器目录名*/
+        public int dwATMSrvType;                        /*ATM服务器类型,0--wincor ,1--diebold*/
+        public int dwTimeSpace;                        /*取值为1.2.3.4.5.10*/
+        public NET_DVR_FTPTYPECODE[] sFtpTypeCodeOp = new NET_DVR_FTPTYPECODE[300];    /*新加的*/
+        public int dwADPlay;    /* 1 表示在播放广告,0 表示没有播放广告*/
+        public int dwNewPort;  //端口
+    }
+/****************************ATM(end)***************************/
+
+    /*****************************
+     * DS-6001D/F(begin)
+     ***************************/
+//DS-6001D Decoder
+    public static class NET_DVR_DECODERINFO extends HIKSDKStructure {
+        public byte[] byEncoderIP = new byte[16];        //解码设备连接的服务器IP
+        public byte[] byEncoderUser = new byte[16];        //解码设备连接的服务器的用户名
+        public byte[] byEncoderPasswd = new byte[16];    //解码设备连接的服务器的密码
+        public byte bySendMode;            //解码设备连接服务器的连接模式
+        public byte byEncoderChannel;        //解码设备连接的服务器的通道号
+        public short wEncoderPort;            //解码设备连接的服务器的端口号
+        public byte[] reservedData = new byte[4];        //保留
+    }
+
+    public static class NET_DVR_DECODERSTATE extends HIKSDKStructure {
+        public byte[] byEncoderIP = new byte[16];        //解码设备连接的服务器IP
+        public byte[] byEncoderUser = new byte[16];        //解码设备连接的服务器的用户名
+        public byte[] byEncoderPasswd = new byte[16];    //解码设备连接的服务器的密码
+        public byte byEncoderChannel;        //解码设备连接的服务器的通道号
+        public byte bySendMode;            //解码设备连接的服务器的连接模式
+        public short wEncoderPort;            //解码设备连接的服务器的端口号
+        public int dwConnectState;        //解码设备连接服务器的状态
+        public byte[] reservedData = new byte[4];        //保留
+    }
+
+    public static class NET_DVR_DECCHANINFO extends HIKSDKStructure {
+        public byte[] sDVRIP = new byte[16];                /* DVR IP地址 */
+        public short wDVRPort;                    /* 端口号 */
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public byte byChannel;                    /* 通道号 */
+        public byte byLinkMode;                /* 连接模式 */
+        public byte byLinkType;                /* 连接类型 0-主码流 1-子码流 */
+    }
+
+    public static class NET_DVR_DECINFO extends HIKSDKStructure {/*每个解码通道的配置*/
+        public byte byPoolChans;            /*每路解码通道上的循环通道数量, 最多4通道 0表示没有解码*/
+        public NET_DVR_DECCHANINFO[] struchanConInfo = new NET_DVR_DECCHANINFO[MAX_DECPOOLNUM];
+        public byte byEnablePoll;            /*是否轮巡 0-否 1-是*/
+        public byte byPoolTime;                /*轮巡时间 0-保留 1-10秒 2-15秒 3-20秒 4-30秒 5-45秒 6-1分钟 7-2分钟 8-5分钟 */
+    }
+
+    public static class NET_DVR_DECCFG extends HIKSDKStructure {/*整个设备解码配置*/
+        public int dwSize;
+        public int dwDecChanNum;        /*解码通道的数量*/
+        public NET_DVR_DECINFO[] struDecInfo = new NET_DVR_DECINFO[MAX_DECNUM];
+    }
+
+    //2005-08-01
+    public static class NET_DVR_PORTINFO extends HIKSDKStructure {/* 解码设备透明通道设置 */
+        public int dwEnableTransPort;    /* 是否启动透明通道 0-不启用 1-启用*/
+        public byte[] sDecoderIP = new byte[16];        /* DVR IP地址 */
+        public short wDecoderPort;            /* 端口号 */
+        public short wDVRTransPort;            /* 配置前端DVR是从485/232输出,1表示232串口,2表示485串口 */
+        public byte[] cReserve = new byte[4];
+    }
+
+    public static class NET_DVR_PORTCFG extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_PORTINFO[] struTransPortInfo = new NET_DVR_PORTINFO[MAX_TRANSPARENTNUM]; /* 数组0表示232 数组1表示485 */
+    }
+
+    /*https://jna.dev.java.net/javadoc/com/sun/jna/Union.html#setType(java.lang.Class)  see how to use the JNA Union*/
+    public static class NET_DVR_PLAYREMOTEFILE extends HIKSDKStructure {/* 控制网络文件回放 */
+        public int dwSize;
+        public byte[] sDecoderIP = new byte[16];        /* DVR IP地址 */
+        public short wDecoderPort;            /* 端口号 */
+        public short wLoadMode;                /* 回放下载模式 1-按名字 2-按时间 */
+        public byte[] byFile = new byte[100];
+
+        public static class mode_size extends Union {
+            public byte[] byFile = new byte[100];        // 回放的文件名
+
+            public static class bytime extends HIKSDKStructure {
+                public int dwChannel;
+                public byte[] sUserName = new byte[NAME_LEN];    //请求视频用户名
+                public byte[] sPassword = new byte[PASSWD_LEN];    // 密码
+                public NET_DVR_TIME struStartTime;    //按时间回放的开始时间
+                public NET_DVR_TIME struStopTime;    // 按时间回放的结束时间
+            }
+        }
+    }
+
+    public static class NET_DVR_DECCHANSTATUS extends HIKSDKStructure {/*当前设备解码连接状态*/
+        public int dwWorkType;        /*工作方式:1:轮巡、2:动态连接解码、3:文件回放下载 4:按时间回放下载*/
+        public byte[] sDVRIP = new byte[16];        /*连接的设备ip*/
+        public short wDVRPort;            /*连接端口号*/
+        public byte byChannel;            /* 通道号 */
+        public byte byLinkMode;        /* 连接模式 */
+        public int dwLinkType;        /*连接类型 0-主码流 1-子码流*/
+        public byte[] sUserName = new byte[NAME_LEN];    /*请求视频用户名*/
+        public byte[] sPassword = new byte[PASSWD_LEN];    /* 密码 */
+        public byte[] cReserve = new byte[52];
+
+        public static class objectInfo extends Union {
+            public static class userInfo extends HIKSDKStructure {
+                public byte[] sUserName = new byte[NAME_LEN];    //请求视频用户名
+                public byte[] sPassword = new byte[PASSWD_LEN];    // 密码
+                public byte[] cReserve = new byte[52];
+            }
+
+            public static class fileInfo extends HIKSDKStructure {
+                public byte[] fileName = new byte[100];
+            }
+
+            public static class timeInfo extends HIKSDKStructure {
+                public int dwChannel;
+                public byte[] sUserName = new byte[NAME_LEN];    //请求视频用户名
+                public byte[] sPassword = new byte[PASSWD_LEN];    // 密码
+                public NET_DVR_TIME struStartTime;        // 按时间回放的开始时间
+                public NET_DVR_TIME struStopTime;        //按时间回放的结束时间
+            }
+        }
+    }
+
+    public static class NET_DVR_DECSTATUS extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_DECCHANSTATUS[] struDecState = new NET_DVR_DECCHANSTATUS[MAX_DECNUM];
+    }
+
+    /*****************************
+     * DS-6001D/F(end)
+     ***************************/
+
+    public static class NET_DVR_SHOWSTRINGINFO extends HIKSDKStructure {//单字符参数(子结构)
+        public short wShowString;                // 预览的图象上是否显示字符,0-不显示,1-显示 区域大小704*576,单个字符的大小为32*32
+        public short wStringSize;                /* 该行字符的长度,不能大于44个字符 */
+        public short wShowStringTopLeftX;        /* 字符显示位置的x坐标 */
+        public short wShowStringTopLeftY;        /* 字符名称显示位置的y坐标 */
+        public byte[] sString = new byte[44];                /* 要显示的字符内容 */
+    }
+
+    //叠加字符(9000扩展)
+    public static class NET_DVR_SHOWSTRING_V30 extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_SHOWSTRINGINFO[] struStringInfo = new NET_DVR_SHOWSTRINGINFO[MAX_STRINGNUM_V30];                /* 要显示的字符内容 */
+    }
+
+    //叠加字符扩展(8条字符)
+    public static class NET_DVR_SHOWSTRING_EX extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_SHOWSTRINGINFO[] struStringInfo = new NET_DVR_SHOWSTRINGINFO[MAX_STRINGNUM_EX];                /* 要显示的字符内容 */
+    }
+
+    //叠加字符
+    public static class NET_DVR_SHOWSTRING extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_SHOWSTRINGINFO[] struStringInfo = new NET_DVR_SHOWSTRINGINFO[MAX_STRINGNUM];                /* 要显示的字符内容 */
+    }
+
+    /****************************
+     * DS9000新增结构(begin)
+     ******************************/
+
+/*
+EMAIL参数结构
+*/
+    public static class NET_DVR_SENDER extends HIKSDKStructure {
+        public byte[] sName = new byte[NAME_LEN];                /* 发件人姓名 */
+        public byte[] sAddress = new byte[MAX_EMAIL_ADDR_LEN];        /* 发件人地址 */
+    }
+
+    public static class NET_DVRRECEIVER extends HIKSDKStructure {
+        public byte[] sName = new byte[NAME_LEN];                /* 收件人姓名 */
+        public byte[] sAddress = new byte[MAX_EMAIL_ADDR_LEN];        /* 收件人地址 */
+    }
+
+    public static class NET_DVR_EMAILCFG_V30 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sAccount = new byte[NAME_LEN];                /* 账号*/
+        public byte[] sPassword = new byte[MAX_EMAIL_PWD_LEN];            /*密码 */
+        public NET_DVR_SENDER struSender;
+        public byte[] sSmtpServer = new byte[MAX_EMAIL_ADDR_LEN];    /* smtp服务器 */
+        public byte[] sPop3Server = new byte[MAX_EMAIL_ADDR_LEN];    /* pop3服务器 */
+        public NET_DVRRECEIVER[] struReceiver = new NET_DVRRECEIVER[3];                            /* 最多可以设置3个收件人 */
+        public byte byAttachment;                    /* 是否带附件 */
+        public byte bySmtpServerVerify;                /* 发送服务器要求身份验证 */
+        public byte byMailInterval;                 /* mail interval */
+        public byte[] res = new byte[77];
+    }
+
+    /*
+DVR实现巡航数据结构
+*/
+    public static class NET_DVR_CRUISE_PARA extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byPresetNo = new byte[CRUISE_MAX_PRESET_NUMS];        /* 预置点号 */
+        public byte[] byCruiseSpeed = new byte[CRUISE_MAX_PRESET_NUMS];    /* 巡航速度 */
+        public short[] wDwellTime = new short[CRUISE_MAX_PRESET_NUMS];        /* 停留时间 */
+        public byte[] byEnableThisCruise;                        /* 是否启用 */
+        public byte[] res = new byte[15];
+    }
+
+    /****************************
+     * DS9000新增结构(end)
+     ******************************/
+
+//时间点
+    public static class NET_DVR_TIMEPOINT extends HIKSDKStructure {
+        public int dwMonth;        //月 0-11表示1-12个月
+        public int dwWeekNo;        //第几周 0-第1周 1-第2周 2-第3周 3-第4周 4-最后一周
+        public int dwWeekDate;    //星期几 0-星期日 1-星期一 2-星期二 3-星期三 4-星期四 5-星期五 6-星期六
+        public int dwHour;        //小时	开始时间0-23 结束时间1-23
+        public int dwMin;        //分	0-59
+    }
+
+    //夏令时参数
+    public static class NET_DVR_ZONEANDDST extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byRes1 = new byte[16];            //保留
+        public int dwEnableDST;        //是否启用夏时制 0-不启用 1-启用
+        public byte byDSTBias;    //夏令时偏移值,30min, 60min, 90min, 120min, 以分钟计,传递原始数值
+        public byte[] byRes2 = new byte[3];
+        public NET_DVR_TIMEPOINT struBeginPoint;    //夏时制开始时间
+        public NET_DVR_TIMEPOINT struEndPoint;    //夏时制停止时间
+    }
+
+    //图片质量
+    public static class NET_DVR_JPEGPARA extends HIKSDKStructure {
+        /*注意:当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=D1抓图,
+	当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p
+	仅支持当前分辨率的抓图*/
+        public short wPicSize;                /* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/
+        public short wPicQuality;            /* 图片质量系数 0-最好 1-较好 2-一般 */
+    }
+
+    /* aux video out parameter */
+//辅助输出参数配置
+    public static class NET_DVR_AUXOUTCFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwAlarmOutChan;                       /* 选择报警弹出大报警通道切换时间:1画面的输出通道: 0:主输出/1:辅1/2:辅2/3:辅3/4:辅4 */
+        public int dwAlarmChanSwitchTime;                /* :1秒 - 10:10秒 */
+        public int[] dwAuxSwitchTime = new int[MAX_AUXOUT];            /* 辅助输出切换时间: 0-不切换,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s */
+        public byte[][] byAuxOrder = new byte[MAX_AUXOUT][MAX_WINDOW];    /* 辅助输出预览顺序, 0xff表示相应的窗口不预览 */
+    }
+
+    //ntp
+    public static class NET_DVR_NTPPARA extends HIKSDKStructure {
+        public byte[] sNTPServer = new byte[64];   /* Domain Name or IP addr of NTP server */
+        public short wInterval;         /* adjust time interval(hours) */
+        public byte byEnableNTP;    /* enable NPT client 0-no,1-yes*/
+        public byte cTimeDifferenceH; /* 与国际标准时间的 小时偏移-12 ... +13 */
+        public byte cTimeDifferenceM;/* 与国际标准时间的 分钟偏移0, 30, 45*/
+        public byte res1;
+        public short wNtpPort;         /* ntp server port 9000新增 设备默认为123*/
+        public byte[] res2 = new byte[8];
+    }
+
+    //ddns
+    public static class NET_DVR_DDNSPARA extends HIKSDKStructure {
+        public byte[] sUsername = new byte[NAME_LEN];  /* DDNS账号用户名/密码 */
+        public byte[] sPassword = new byte[PASSWD_LEN];
+        public byte[] sDomainName = new byte[64];       /* 域名 */
+        public byte byEnableDDNS;            /*是否应用 0-否,1-是*/
+        public byte[] res = new byte[15];
+    }
+
+    public static class NET_DVR_DDNSPARA_EX extends HIKSDKStructure {
+        public byte byHostIndex;                    /* 0-Hikvision DNS 1-Dyndns 2-PeanutHull(花生壳), 3-希网3322*/
+        public byte byEnableDDNS;                    /*是否应用DDNS 0-否,1-是*/
+        public short wDDNSPort;                        /* DDNS端口号 */
+        public byte[] sUsername = new byte[NAME_LEN];            /* DDNS用户名*/
+        public byte[] sPassword = new byte[PASSWD_LEN];            /* DDNS密码 */
+        public byte[] sDomainName = new byte[MAX_DOMAIN_NAME];    /* 设备配备的域名地址 */
+        public byte[] sServerName = new byte[MAX_DOMAIN_NAME];    /* DDNS 对应的服务器地址,可以是IP地址或域名 */
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_DDNS extends HIKSDKStructure {
+        public byte[] sUsername = new byte[NAME_LEN];            /* DDNS账号用户名*/
+        public byte[] sPassword = new byte[PASSWD_LEN];            /* 密码 */
+        public byte[] sDomainName = new byte[MAX_DOMAIN_NAME];    /* 设备配备的域名地址 */
+        public byte[] sServerName = new byte[MAX_DOMAIN_NAME];    /* DDNS协议对应的服务器地址,可以是IP地址或域名 */
+        public short wDDNSPort;                        /* 端口号 */
+        public byte[] byRes = new byte[10];
+    }
+
+    //9000扩展
+    public static class NET_DVR_DDNSPARA_V30 extends HIKSDKStructure {
+        public byte byEnableDDNS;
+        public byte byHostIndex;/* 0-Hikvision DNS(保留) 1-Dyndns 2-PeanutHull(花生壳) 3-希网3322 */
+        public byte[] byRes1 = new byte[2];
+        public NET_DVR_DDNS[] struDDNS = new NET_DVR_DDNS[MAX_DDNS_NUMS];//9000目前只支持前3个配置,其他配置保留
+        public byte[] byRes2 = new byte[16];
+    }
+
+    //email
+    public static class NET_DVR_EMAILPARA extends HIKSDKStructure {
+        public byte[] sUsername = new byte[64];  /* 邮件账号/密码 */
+        public byte[] sPassword = new byte[64];
+        public byte[] sSmtpServer = new byte[64];
+        public byte[] sPop3Server = new byte[64];
+        public byte[] sMailAddr = new byte[64];   /* email */
+        public byte[] sEventMailAddr1 = new byte[64];  /* 上传报警/异常等的email */
+        public byte[] sEventMailAddr2 = new byte[64];
+        public byte[] res = new byte[16];
+    }
+
+    public static class NET_DVR_NETAPPCFG extends HIKSDKStructure {//网络参数配置
+        public int dwSize;
+        public byte[] sDNSIp = new byte[16];                /* DNS服务器地址 */
+        public NET_DVR_NTPPARA struNtpClientParam;      /* NTP参数 */
+        public NET_DVR_DDNSPARA struDDNSClientParam;     /* DDNS参数 */
+        //NET_DVR_EMAILPARA struEmailParam;       /* EMAIL参数 */
+        public byte[] res = new byte[464];            /* 保留 */
+    }
+
+    public static class NET_DVR_SINGLE_NFS extends HIKSDKStructure {//nfs结构配置
+        public byte[] sNfsHostIPAddr = new byte[16];
+        public byte[] sNfsDirectory = new byte[PATHNAME_LEN];        // PATHNAME_LEN = 128
+    }
+
+    public static class NET_DVR_NFSCFG extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_SINGLE_NFS[] struNfsDiskParam = new NET_DVR_SINGLE_NFS[MAX_NFS_DISK];
+    }
+
+    //巡航点配置(HIK IP快球专用)
+    public static class NET_DVR_CRUISE_POINT extends HIKSDKStructure {
+        public byte PresetNum;    //预置点
+        public byte Dwell;        //停留时间
+        public byte Speed;        //速度
+        public byte Reserve;    //保留
+    }
+
+    public static class NET_DVR_CRUISE_RET extends HIKSDKStructure {
+        public NET_DVR_CRUISE_POINT[] struCruisePoint = new NET_DVR_CRUISE_POINT[32];            //最大支持32个巡航点
+    }
+
+    /************************************
+     * 多路解码器(begin)
+     ***************************************/
+//多路解码器扩展 added by zxy 2007-05-23
+    public static class NET_DVR_NETCFG_OTHER extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sFirstDNSIP = new byte[16];
+        public byte[] sSecondDNSIP = new byte[16];
+        public byte[] sRes = new byte[32];
+    }
+
+    public static class NET_DVR_MATRIX_DECINFO extends HIKSDKStructure {
+        public byte[] sDVRIP = new byte[16];                /* DVR IP地址 */
+        public short wDVRPort;                /* 端口号 */
+        public byte byChannel;                /* 通道号 */
+        public byte byTransProtocol;            /* 传输协议类型 0-TCP 1-UDP */
+        public byte byTransMode;                /* 传输码流模式 0-主码流 1-子码流*/
+        public byte[] byRes = new byte[3];
+        public byte[] sUserName = new byte[NAME_LEN];            /* 监控主机登陆帐号 */
+        public byte[] sPassword = new byte[PASSWD_LEN];            /* 监控主机密码 */
+    }
+
+    public static class NET_DVR_MATRIX_DYNAMIC_DEC extends HIKSDKStructure {//启动/停止动态解码
+        public int dwSize;
+        public NET_DVR_MATRIX_DECINFO struDecChanInfo;        /* 动态解码通道信息 */
+    }
+
+    public static class NET_DVR_MATRIX_DEC_CHAN_STATUS extends HIKSDKStructure {//2007-12-13 modified by zxy 修改多路解码器的NET_DVR_MATRIX_DEC_CHAN_STATUS结构
+        public int dwSize;//2008-1-16 modified by zxy dwIsLinked的状态由原来的0-未链接 1-连接修改成以下三种状态。
+        public int dwIsLinked;         /* 解码通道状态 0-休眠 1-正在连接 2-已连接 3-正在解码 */
+        public int dwStreamCpRate;     /* Stream copy rate, X kbits/second */
+        public byte[] cRes = new byte[64];        /* 保留 */
+    }
+//end 2007-12-13 modified by zxy
+
+    public static class NET_DVR_MATRIX_DEC_CHAN_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_MATRIX_DECINFO struDecChanInfo;        /* 解码通道信息 */
+        public int dwDecState;    /* 0-动态解码 1-循环解码 2-按时间回放 3-按文件回放 */
+        public NET_DVR_TIME StartTime;        /* 按时间回放开始时间 */
+        public NET_DVR_TIME StopTime;        /* 按时间回放停止时间 */
+        public byte[] sFileName = new byte[128];        /* 按文件回放文件名 */
+    }
+
+    //连接的通道配置 2007-11-05
+    public static class NET_DVR_MATRIX_DECCHANINFO extends HIKSDKStructure {
+        public int dwEnable;                    /* 是否启用 0-否 1-启用*/
+        public NET_DVR_MATRIX_DECINFO struDecChanInfo;        /* 轮循解码通道信息 */
+    }
+
+    //2007-11-05 新增每个解码通道的配置
+    public static class NET_DVR_MATRIX_LOOP_DECINFO extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPoolTime;            /*轮巡时间 */
+        public NET_DVR_MATRIX_DECCHANINFO[] struchanConInfo = new NET_DVR_MATRIX_DECCHANINFO[MAX_CYCLE_CHAN];
+    }
+
+    //2007-05-25  多路解码器数字矩阵配置
+//矩阵行信息 2007-12-28
+    public static class NET_DVR_MATRIX_ROW_ELEMENT extends HIKSDKStructure {
+        public byte[] sSurvChanName = new byte[128];            /* 监控通道名称,支持中文 */
+        public int dwRowNum;                /* 行号 */
+        public NET_DVR_MATRIX_DECINFO struDecChanInfo;        /* 矩阵行信息 */
+    }
+
+    public static class NET_DVR_MATRIX_ROW_INDEX extends HIKSDKStructure {
+        public byte[] sSurvChanName = new byte[128];            /* 监控通道名称,支持中文 */
+        public int dwRowNum;                /* 行号 */
+    }
+
+    //矩阵列信息 2007-12-28
+    public static class NET_DVR_MATRIX_COLUMN_ELEMENT extends HIKSDKStructure {
+        public int dwLocalDispChanNum;    /* 本地显示通道号 */
+        public int dwGlobalDispChanNum;    /* 全局显示通道号 */
+        public int dwRes;            /* 保留 */
+    }
+
+    public static class NET_DVR_MATRIX_GLOBAL_COLUMN_ELEMENT extends HIKSDKStructure {
+        public int dwConflictTag;        /* 冲突标记,0:无冲突,1:冲突 */
+        public int dwConflictGloDispChan;    /* 与之冲突的全局通道号 */
+        public NET_DVR_MATRIX_COLUMN_ELEMENT struColumnInfo;/* 矩阵列元素结构体 */
+    }
+
+    //手动查看 2007-12-28
+    public static class NET_DVR_MATRIX_ROW_COLUMN_LINK extends HIKSDKStructure {
+        public int dwSize;
+        /*
+         *	以下三个参数只需要指定其中一个便可指定数字矩阵里的某一行
+         *	所代表的远程监控通道。
+         *	如果指定了多个域并有冲突,设备将按照域的先后顺序为准取最先定义者。
+         */
+        public int dwRowNum;            /* -1代表无效域,大于0者方为有效的矩阵行号 */
+        public byte[] sSurvChanName = new byte[128];    /* 监控通道名,是否无效按字符串的有效性判断 */
+        public int dwSurvNum;            /* 监控通道号,按矩阵行列表的顺序指定,一般情况下与行号一致 */
+        /*
+         *	以下两项只需要指定其中一项便可,如果两项都有效默认选择第一项
+         */
+        public int dwGlobalDispChanNum;            /* 电视墙上的电视机编号 */
+        public int dwLocalDispChanNum;
+        /*
+         *	0代表播放即时码流,
+         *	1表示按时间回访远程监控设备的文件
+         *	2表示按文件名回访
+         */
+        public int dwTimeSel;
+        public NET_DVR_TIME StartTime;
+        public NET_DVR_TIME StopTime;
+        public byte[] sFileName = new byte[128];
+    }
+
+    public static class NET_DVR_MATRIX_PREVIEW_DISP_CHAN extends HIKSDKStructure {
+        public int dwSize;
+        public int dwGlobalDispChanNum;        /* 电视墙上的电视机编号 */
+        public int dwLocalDispChanNum;        /* 解码通道 */
+    }
+
+    public static class NET_DVR_MATRIX_LOOP_PLAY_SET extends HIKSDKStructure {//轮循功能 2007-12-28
+        public int dwSize;
+        /* 任意指定一个,-1为无效,如果都指定则以LocalDispChanNum为准 */
+        public int dwLocalDispChanNum;    /* 解码通道 */
+        public int dwGlobalDispChanNum;    /* 电视墙上的电视机编号 */
+        public int dwCycTimeInterval;    /* 轮循时间间隔 */
+    }
+
+    public static class NET_DVR_MATRIX_LOCAL_HOST_INFO extends HIKSDKStructure {//矩阵中心配置 2007-12-28
+        public int dwSize;
+        public int dwLocalHostProperty;    /* 本地主机类型 0-服务器 1-客户端*/
+        public int dwIsIsolated;        /* 本地主机是否独立于系统,0:联网,1:独立 */
+        public int dwLocalMatrixHostPort;    /* 本地主机访问端口 */
+        public byte[] byLocalMatrixHostUsrName = new byte[NAME_LEN];        /* 本地主机登录用户名 */
+        public byte[] byLocalMatrixHostPasswd = new byte[PASSWD_LEN];        /* 本地主机登录密码 */
+        public int dwLocalMatrixCtrlMedia;                /* 控制方式 0x1串口键盘控制 0x2网络键盘控制 0x4矩阵中心控制 0x8PC客户端控制*/
+        public byte[] sMatrixCenterIP = new byte[16];        /* 矩阵中心IP地址 */
+        public int dwMatrixCenterPort;        /* 矩阵中心端口号 */
+        public byte[] byMatrixCenterUsrName = new byte[NAME_LEN];    /* 矩阵中心登录用户名 */
+        public byte[] byMatrixCenterPasswd = new byte[PASSWD_LEN];    /* 矩阵中心登录密码 */
+    }
+
+    //2007-12-22
+    public static class TTY_CONFIG extends HIKSDKStructure {
+        public byte baudrate;    /* 波特率 */
+        public byte databits;        /* 数据位 */
+        public byte stopbits;        /* 停止位 */
+        public byte parity;        /* 奇偶校验位 */
+        public byte flowcontrol;    /* 流控 */
+        public byte[] res = new byte[3];
+    }
+
+    public static class NET_DVR_MATRIX_TRAN_CHAN_INFO extends HIKSDKStructure {
+        public byte byTranChanEnable;    /* 当前透明通道是否打开 0:关闭 1:打开 */
+        /*
+         *	多路解码器本地有1个485串口,1个232串口都可以作为透明通道,设备号分配如下:
+         *	0 RS485
+         *	1 RS232 Console
+         */
+        public byte byLocalSerialDevice;            /* Local serial device */
+        /*
+         *	远程串口输出还是两个,一个RS232,一个RS485
+         *	1表示232串口
+         *	2表示485串口
+         */
+        public byte byRemoteSerialDevice;            /* Remote output serial device */
+        public byte res1;                            /* 保留 */
+        public byte[] sRemoteDevIP = new byte[16];                /* Remote Device IP */
+        public short wRemoteDevPort;                /* Remote Net Communication Port */
+        public byte[] res2 = new byte[2];                        /* 保留 */
+        public TTY_CONFIG RemoteSerialDevCfg;
+    }
+
+    public static class NET_DVR_MATRIX_TRAN_CHAN_CONFIG extends HIKSDKStructure {
+        public int dwSize;
+        public byte by232IsDualChan; /* 设置哪路232透明通道是全双工的 取值1到MAX_SERIAL_NUM */
+        public byte by485IsDualChan; /* 设置哪路485透明通道是全双工的 取值1到MAX_SERIAL_NUM */
+        public byte[] res = new byte[2];    /* 保留 */
+        public NET_DVR_MATRIX_TRAN_CHAN_INFO[] struTranInfo = new NET_DVR_MATRIX_TRAN_CHAN_INFO[MAX_SERIAL_NUM];/*同时支持建立MAX_SERIAL_NUM个透明通道*/
+    }
+
+    //2007-12-24 Merry Christmas Eve...
+    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sDVRIP = new byte[16];        /* DVR IP地址 */
+        public short wDVRPort;            /* 端口号 */
+        public byte byChannel;            /* 通道号 */
+        public byte byReserve;
+        public byte[] sUserName = new byte[NAME_LEN];        /* 用户名 */
+        public byte[] sPassword = new byte[PASSWD_LEN];        /* 密码 */
+        public int dwPlayMode;    /* 0-按文件 1-按时间*/
+        public NET_DVR_TIME StartTime;
+        public NET_DVR_TIME StopTime;
+        public byte[] sFileName = new byte[128];
+    }
+
+
+    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPlayCmd;        /* 播放命令 见文件播放命令*/
+        public int dwCmdParam;        /* 播放命令参数 */
+    }
+
+    public static class NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public int dwCurMediaFileLen; /* 当前播放的媒体文件长度 */
+        public int dwCurMediaFilePosition; /* 当前播放文件的播放位置 */
+        public int dwCurMediaFileDuration; /* 当前播放文件的总时间 */
+        public int dwCurPlayTime; /* ½“前已经播放的时间 */
+        public int dwCurMediaFIleFrames; /* 当前播放文件的总帧数 */
+        public int dwCurDataType; /* 当前传输的数据类型,19-文件头,20-流数据, 21-播放结束标志 */
+        public byte[] res = new byte[72];
+    }
+
+    public static class NET_DVR_MATRIX_PASSIVEMODE extends HIKSDKStructure {
+        public short wTransProtol;        //传输协议,0-TCP, 1-UDP, 2-MCAST
+        public short wPassivePort;        //TCP,UDP时为TCP,UDP端口, MCAST时为MCAST端口
+        public NET_DVR_IPADDR struMcastIP;        //TCP,UDP时无效, MCAST时为多播地址
+        public byte  byStreamType;  //数据播放模式:1- 实时流,2- 文件流
+        public byte[] res = new byte[7];
+    }
+/************************************多路解码器(end)***************************************/
+
+
+    /************************************
+     * 拼控(Start)
+     ***************************************/
+
+
+    public static final int NET_DVR_GET_SUBWND_DECODE_OSD = 9183;  //获取子窗口解码OSD信息
+    public static final int NET_DVR_GET_SUBWND_DECODE_OSD_ALL = 9184;  //获取所有子窗口解码OSD信息
+    public static final int NET_DVR_SET_SUBWND_DECODE_OSD = 9185;  //设置子窗口解码OSD信息
+    public static final int NET_DVR_GET_SUBWND_DECODE_OSD_CAP = 9186;  //获取子窗口解码OSD信息能力集
+    public static final int NET_DVR_GET_DECODE_CHANNEL_OSD = 9187;  //获取解码通道OSD信息
+    public static final int NET_DVR_SET_DECODE_CHANNEL_OSD = 9188;  //设置解码通道OSD信息
+
+    public static final int MAX_PLAN_ACTION_NUM = 32;    //预案动作个数
+    public static final int DAYS_A_WEEK = 7;    //一周7天
+    public static final int MAX_PLAN_COUNT = 16;    //预案个数
+    public static final int MAX_LEN_OSD_CONTENT = 256;  //OSD信息最大长度
+    public static final int MAX_NUM_OSD_ONE_SUBWND = 8;  //单个子窗口支持的最大OSD数量
+    public static final int MAX_NUM_SPLIT_WND = 64; //单个窗口支持的最大分屏窗口数量(即子窗口数量)
+    public static final int MAX_NUM_OSD = 8;
+    public static final int MAX_CYCLE_CHAN_V30 = 64;      //最大轮巡通道数(扩展)
+    public static final int STREAM_PASSWD_LEN = 12;      //码流加密密钥最大长度
+
+    public static class NET_DVR_VIDEO_WALL_INFO extends HIKSDKStructure {
+        public int dwSize;
+        //窗口号:1字节墙号+1字节保留+2字节窗口号
+        public int dwWindowNo;
+        public int dwSceneNo;//场景号
+        public int dwDestWallNo; //目的墙号
+        public int dwDestSceneNo;//目的场景号
+        public byte[] byRes = new byte[12];
+    }
+
+    public static class NET_DVR_SCENE_CONTROL_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_VIDEO_WALL_INFO struVideoWallInfo; //电视墙信息
+        public int dwCmd; //场景控制命令,1-场景模式切换(如果要切换的是当前场景,则不进行切换),2-初始化场景(将此场景的配置清空,如果是当前场景,则同时对当前场景进行清屏操作),3-强制切换(无论是否是当前场景,强制切换),4-保存当前模式到某场景 5-删除场景 ,6-场景复制
+        public byte[] byRes = new byte[4];
+    }
+
+    public static class NET_DVR_BUF_INFO extends HIKSDKStructure {
+        public Pointer pBuf;
+        public int nLen;
+    }
+
+    public static class NET_DVR_IN_PARAM extends HIKSDKStructure {
+        public NET_DVR_BUF_INFO struCondBuf;
+        public NET_DVR_BUF_INFO struInParamBuf;
+        public int dwRecvTimeout;      //接收数据超时时间,单位:ms,置0采用接口默认超时
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_OUT_PARAM extends HIKSDKStructure {
+        public NET_DVR_BUF_INFO struOutBuf;
+        public Pointer lpStatusList;
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_RECTCFG_EX extends HIKSDKStructure {
+        public int dwXCoordinate; /*矩形左上角起始点X坐标*/
+        public int dwYCoordinate; /*矩形左上角Y坐标*/
+        public int dwWidth;       /*矩形宽度*/
+        public int dwHeight;      /*矩形高度*/
+        public byte[] byRes = new byte[4];
+
+    }
+
+    public static class NET_DVR_VIDEOWALLWINDOWPOSITION extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable;  //窗口使能,0-不使能,1-使能
+        public byte byWndOperateMode;  //窗口操作模式,0-统一坐标,1-分辨率坐标
+        public byte[] byRes1 = new byte[6];
+        public int dwWindowNo;//窗口号
+        public int dwLayerIndex;//窗口相对应的图层号,图层号到最大即置顶,置顶操作
+        public NET_DVR_RECTCFG_EX struRect; //目的窗口统一坐标(相对显示墙),获取或按统一坐标设置时有效
+        public NET_DVR_RECTCFG_EX struResolution; //目的窗口分辨率坐标,获取或按分辨率坐标设置有效
+        public int dwXCoordinate; //LED区域左上角X坐标(统一坐标),获取或按分辨率坐标设置有效
+        public int dwYCoordinate; //LED区域左上角Y坐标(统一坐标),获取或按分辨率坐标设置有效
+        public byte[] byRes2 = new byte[36];
+    }
+
+    public static class VIDEOWALLWINDOWPOSITION_ARRAY extends HIKSDKStructure {
+        public NET_DVR_VIDEOWALLWINDOWPOSITION[] strVideoWinPostion;
+
+        public VIDEOWALLWINDOWPOSITION_ARRAY(int iLen) {
+            strVideoWinPostion = new NET_DVR_VIDEOWALLWINDOWPOSITION[iLen];
+        }
+
+
+    }
+
+
+    public static class NET_DVR_WALLWINPARAM extends HIKSDKStructure {
+        public int dwSize;
+        public byte byTransparency; //使能透明度,0-关,非0-开
+        public byte byWinMode;//窗口分屏模式,能力集获取
+        public byte byEnableSpartan;//畅显使能,0-关,1-开
+        public byte byDecResource;  //为窗口分配的解码资源,1-D1,2-720P,3-1080P
+        public byte byWndShowMode; //窗口显示模式,0-此字段不用,1-子窗口模式,2-子窗口全屏模式
+        public byte byEnabledFeature; //是否启用场景特写,0-不启用,!0-启用
+        public byte byFeatureMode; //特写模式,启用场景特写时有效,0-无效,1-“1+5”模式
+        public byte byRes1;
+        public int dwAmplifyingSubWndNo; //全屏子窗口号(1字节墙号+1字节子窗口号+2字节窗口号)
+        //当byWndShowMode为2时有效,表示当前全屏显示的子窗口
+        public byte byWndTopKeep; //窗口置顶保持,0-不保持,1-保持
+        public byte byWndOpenKeep; //窗口打开保持,0-不保持,1-保持
+        public byte[] byRes = new byte[22];
+    }
+
+    public static class NET_DVR_PLAN_LIST extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPlanNums;            //设备输入信号源数量
+        public Pointer pBuffer;            //指向dwInputSignalNums个NET_DVR_PLAN_CFG结构大小的缓冲区
+        public byte byWallNo;            //墙号,从1开始
+        public byte[] byRes1 = new byte[2];
+        public int dwBufLen;            //所分配缓冲区长度,输入参数(大于等于dwInputSignalNums个NET_DVR_PLAN_CFG结构大小)
+        public byte[] byRes2 = new byte[64];
+    }
+
+    /*预案项信息*/
+    public static class NET_DVR_PLAN_INFO extends HIKSDKStructure {
+        public byte byValid;          // 该项是否有效
+        public byte byType;           // 见定义NET_DVR_PLAN_OPERATE_TYPE
+        public short wLayoutNo;      // 布局号
+        public byte byScreenStyle;    //屏幕型号,开关机所用,1是低亮,2是高亮
+        public byte byBaseMapType;  //底图类型,1-图片底图,2-超高清输入底图,底图切换时有效
+        public byte[] byRes1 = new byte[2];
+        public int dwDelayTime;      // 一个项的运行时间, 单位秒
+        public int dwSerialNo;        //串口号,屏幕控制时使用
+        public int dwBaseMapWndNo; //底图窗口号,底图切换时有效
+        public int dwBaseMapNo;   //底图号,底图切换时有效;底图类型为1时,此参数为图片序号,底图类型为2时此参数为超高清输入子系统输入号(1字节设备号+1字节子板号+2字节显示输入序号)
+        public byte[] byRes2 = new byte[20];
+    }
+
+    public static class NET_DVR_CYCLE_TIME extends HIKSDKStructure {
+        public byte byValid;
+        public byte[] byRes = new byte[3];
+        public NET_DVR_TIME_EX struTime = new NET_DVR_TIME_EX();
+    }
+
+    /*预案管理*/
+    public static class NET_DVR_PLAN_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte byValid;          // 该预案是否有效
+        public byte byWorkMode;      // 预案工作模式 1表示手动,2自动,3预案循环
+        public byte byWallNo;        //电视墙号,从1开始
+        public byte byPlanNo;    //预案号,获取预案列表时有效,0-无效或不支持
+        public byte[] byPlanName = new byte[NAME_LEN/*32*/]; //预案名称
+        public NET_DVR_TIME_EX struTime; // 工作模式为自动时使用
+        public NET_DVR_CYCLE_TIME[] struTimeCycle = new NET_DVR_CYCLE_TIME[DAYS_A_WEEK/*7*/]; /*循环时间,周期为一个星期,年、月、日三个参数不使用。如:struTimeCycle[0]中的byValid的值是1,表示星期天执行该预案。星期取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推*/
+        public int dwWorkCount;      // 预案内容执行次数
+        public NET_DVR_PLAN_INFO[] strPlanEntry = new NET_DVR_PLAN_INFO[MAX_PLAN_ACTION_NUM/*32*/];  // 预案执行的内容
+        public int dwPlanNo; //4字节预案号,客户端统一使用4字节的预案号,单字节的预案号不再使用
+        public byte[] byRes2 = new byte[60];
+    }
+
+    public static class NET_DVR_WALLSCENECFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sSceneName = new byte[NAME_LEN];    //场景名称
+        public byte byEnable;                //场景是否有效,0-无效,1-有效
+        public byte bySceneIndex;            //场景号,只能获取。获取所有场景时使用该参数
+        public byte[] byRes = new byte[78];
+    }
+
+    public static class NET_DVR_SUBWND_DECODE_OSD extends HIKSDKStructure {
+        public int dwSize = 0;
+        public int dwSubWndNo = 0; //子窗口号(4字节组合方式)
+        public int dwOSDNums = 0;  //该子窗口配置的OSD信息的个数
+        public NET_DVR_OSD_INFO[] struOSDList = new NET_DVR_OSD_INFO[MAX_NUM_OSD_ONE_SUBWND];  //OSD信息列表
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_OSD_INFO extends HIKSDKStructure {
+        public byte byEnabled = 1;  //是否使能,零-不使能,非零-使能
+        public byte byEnabledFlash = 0;  //是否闪烁,零-不闪烁,非零-闪烁
+        public byte byFontSize = 1;  //字体大小,1-大,2-中,3-小
+        public byte byTransparent = 0;  //透明度,取值范围0-100
+        public NET_DVR_RGB_COLOR struColor = new NET_DVR_RGB_COLOR();  //字体颜色
+        public short wCoordinateX = 0;  //OSD左上角X坐标
+        public short wCoordinateY = 0;  //OSD左上角Y坐标
+        public byte[] byContent = new byte[MAX_LEN_OSD_CONTENT];  //OSD信息
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_DEV_CHAN_INFO_EX extends HIKSDKStructure {
+        public byte byChanType;              //通道类型,0-普通通道,1-零通道,2-流ID,3-本地输入源,4-虚拟屏服务器通道,5-拼接通道,6-屏幕服务器,7-分布式网络源,8-多相机融合通道,9-网络输入源
+        public byte[] byStreamId = new byte[STREAM_ID_LEN]; //流ID,当byChanType=2、9时,该字段用于指定流或者网络ipc的ID号
+        public byte[] byRes1 = new byte[3];
+        public int dwChannel;  //通道号,通道类型为普通通道,零通道,本地输入源,虚拟屏服务器通道,拼接通道,屏幕服务器,分布式网络源时填此字段
+        public byte[] byRes2 = new byte[24];
+        public byte[] byAddress = new byte[MAX_DOMAIN_NAME];    //设备域名
+        public short wDVRPort;                 //端口号
+        public byte byChannel;                //通道号,dwChannel不为0时此字段无效
+        public byte byTransProtocol;        //传输协议类型0-TCP,1-UDP
+        public byte byTransMode;            //传输码流模式 0-主码流 1-子码流
+        public byte byFactoryType;            /*前端设备厂家类型,通过接口获取*/
+        public byte byDeviceType; //设备类型(视频综合平台智能板使用),1-解码器(此时根据视频综合平台能力集中byVcaSupportChanMode字段来决定是使用解码通道还是显示通道),2-编码器
+        public byte byDispChan;//显示通道号,智能配置使用
+        public byte bySubDispChan;//显示通道子通道号,智能配置时使用
+        public byte byResolution;    //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500w大屏控制器使用,大屏控制器会根据该参数分配解码资源
+        public byte[] byRes = new byte[2];
+        public byte[] sUserName = new byte[NAME_LEN];    //监控主机登陆帐号
+        public byte[] sPassword = new byte[PASSWD_LEN];    //监控主机密码
+    }
+
+    public static class NET_DVR_STREAM_MEDIA_SERVER extends HIKSDKStructure {
+        public byte byValid; //是否启用,0-否,1-是
+        public byte[] byRes1 = new byte[3];
+        public byte[] byAddress = new byte[MAX_DOMAIN_NAME];   //IP或者域名
+        public short wDevPort;            /*流媒体服务器端口*/
+        public byte byTransmitType;        /*传输协议类型 0-TCP,1-UDP*/
+        public byte[] byRes2 = new byte[5];
+    }
+
+    public static class NET_DVR_DEV_DDNS_INFO extends HIKSDKStructure {
+        public byte[] byDevAddress = new byte[MAX_DOMAIN_NAME];    //域名(IPServer或hiDDNS时可填序列号或者别名)
+        public byte byTransProtocol;        //传输协议类型0-TCP,1-UDP, 2-MCAST
+        public byte byTransMode;            //传输码流模式 0-主码流 1-子码流
+        public byte byDdnsType;         //域名服务器类型,0-IPServer 1-Dyndns 2-PeanutHull(花生壳),3- NO-IP, 4- hiDDNS
+        public byte byRes1;
+        public byte[] byDdnsAddress = new byte[MAX_DOMAIN_NAME];  //DDNS服务器地址
+        public short wDdnsPort;                 //DDNS服务器端口号
+        public byte byChanType;              //0-普通通道,1-零通道,2-流ID
+        public byte byFactoryType;            //前端设备厂家类型,通过接口获取
+        public int dwChannel; //通道号
+        public byte[] byStreamId = new byte[STREAM_ID_LEN]; //流ID
+        public byte[] sUserName = new byte[NAME_LEN];    //监控主机登陆帐号
+        public byte[] sPassword = new byte[PASSWD_LEN];    //监控主机密码
+        public short wDevPort;                //前端设备通信端口
+        public byte[] byRes2 = new byte[2];
+    }
+
+    public static class NET_DVR_DEC_STREAM_DEV_EX extends HIKSDKStructure {
+        public NET_DVR_STREAM_MEDIA_SERVER struStreamMediaSvrCfg = new NET_DVR_STREAM_MEDIA_SERVER();
+        public NET_DVR_DEV_CHAN_INFO_EX struDevChanInfo = new NET_DVR_DEV_CHAN_INFO_EX();
+    }
+
+    //DDNS方式取流
+    public static class NET_DVR_DEC_DDNS_DEV extends HIKSDKStructure {
+        public NET_DVR_DEV_DDNS_INFO struDdnsInfo;
+        public NET_DVR_STREAM_MEDIA_SERVER struMediaServer;
+    }
+
+    public static class NET_DVR_DEC_STREAM_MODE extends Union {
+        public NET_DVR_DEC_STREAM_DEV_EX struDecStreamDev = new NET_DVR_DEC_STREAM_DEV_EX();
+        public NET_DVR_PU_STREAM_URL struUrlInfo = new NET_DVR_PU_STREAM_URL();
+        public NET_DVR_DEC_DDNS_DEV struDdnsDecInfo = new NET_DVR_DEC_DDNS_DEV();
+        public byte[] byRes = new byte[300];
+    }
+
+    public static class NET_DVR_MATRIX_CHAN_INFO_V41 extends HIKSDKStructure {
+        public byte byEnable; //是否启用,0-否,1-是
+        public byte byStreamMode;/*取流模式,0-无效,1-通过IP或域名取流,2-通过URL取流,3-通过动态域名解析向设备取流*/
+        public byte[] byRes = new byte[2];
+        public NET_DVR_DEC_STREAM_MODE uDecStreamMode = new NET_DVR_DEC_STREAM_MODE();//取流信息
+    }
+
+    public static class NET_DVR_MATRIX_LOOP_DECINFO_V41 extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPoolTime;        /*轮巡间隔*/
+        public NET_DVR_MATRIX_CHAN_INFO_V41[] struchanConInfo = new NET_DVR_MATRIX_CHAN_INFO_V41[MAX_CYCLE_CHAN_V30];
+        public byte byStreamEncrypt;  //是否进行码流加密处理,0-不支持,1-支持
+        public byte[] byRes = new byte[3];
+        public byte[] sStreamPassword = new byte[STREAM_PASSWD_LEN];  //码流加密密码,需敏感信息加密
+    }
+
+    /************************************
+     * 拼控(End)
+     ***************************************/
+
+    public static class NET_DVR_EMAILCFG extends HIKSDKStructure {    /* 12 bytes */
+        public int dwSize;
+        public byte[] sUserName = new byte[32];
+        public byte[] sPassWord = new byte[32];
+        public byte[] sFromName = new byte[32];            /* Sender *///字符串中的第一个字符和最后一个字符不能是"@",并且字符串中要有"@"字符
+        public byte[] sFromAddr = new byte[48];            /* Sender address */
+        public byte[] sToName1 = new byte[32];            /* Receiver1 */
+        public byte[] sToName2 = new byte[32];            /* Receiver2 */
+        public byte[] sToAddr1 = new byte[48];            /* Receiver address1 */
+        public byte[] sToAddr2 = new byte[48];            /* Receiver address2 */
+        public byte[] sEmailServer = new byte[32];        /* Email server address */
+        public byte byServerType;            /* Email server type: 0-SMTP, 1-POP, 2-IMTP…*/
+        public byte byUseAuthen;            /* Email server authentication method: 1-enable, 0-disable */
+        public byte byAttachment;            /* enable attachment */
+        public byte byMailinterval;            /* mail interval 0-2s, 1-3s, 2-4s. 3-5s*/
+    }
+
+    public static class NET_DVR_COMPRESSIONCFG_NEW extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_COMPRESSION_INFO_EX struLowCompression;    //定šš时录像
+        public NET_DVR_COMPRESSION_INFO_EX struEventCompression;    //事件触发录像
+    }
+
+    //球机位置信息
+    public static class NET_DVR_PTZPOS extends HIKSDKStructure {
+        public short wAction;//获取时该字段无效
+        public short wPanPos;//水平参数
+        public short wTiltPos;//垂直参数
+        public short wZoomPos;//变倍参数
+    }
+
+    //球机范围信息
+    public static class NET_DVR_PTZSCOPE extends HIKSDKStructure {
+        public short wPanPosMin;//水平参数min
+        public short wPanPosMax;//水平参数max
+        public short wTiltPosMin;//垂直参数min
+        public short wTiltPosMax;//垂直参数max
+        public short wZoomPosMin;//变倍参数min
+        public short wZoomPosMax;//变倍参数max
+    }
+
+    public static class NET_DVR_PTZABSOLUTEEX_CFG extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public NET_PTZ_INFO struPTZCtrl = new NET_PTZ_INFO();//设备PTZF信息
+        public int dwFocalLen;//焦距范围:0-100000MM
+        public float fHorizontalSpeed;//水平转动速度:0.01-1000.00度/S
+        public float fVerticalSpeed;//垂直转动速度:0.01-1000.00度/S
+        /*镜头变倍配置类型;absoluteZoom:通过变倍参数进行配置,选择为该类型时struPTZCtrl中的fZoom参数生效。focalLen:通过焦距参数进行配置,选择为该类型时,dwFocalLen参数生效。*/
+        public byte byZoomType;// 镜头变倍配置类型0~ absoluteZoom,1~ focalLen
+        public byte[] byRes = new byte[123];
+    }
+
+    //rtsp配置 ipcamera专用
+    public static class NET_DVR_RTSPCFG extends HIKSDKStructure {
+        public int dwSize;         //长度
+        public short wPort;          //rtsp服务器侦听端口
+        public byte[] byReserve = new byte[54];  //预留
+    }
+
+    /********************************
+     * 接口参数结构(begin)
+     *********************************/
+
+//NET_DVR_Login()参数结构
+    public static class NET_DVR_DEVICEINFO extends HIKSDKStructure {
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];   //序列号
+        public byte byAlarmInPortNum;                //DVR报警输入个数
+        public byte byAlarmOutPortNum;                //DVR报警输出个数
+        public byte byDiskNum;                        //DVR硬盘个数
+        public byte byDVRType;                        //DVR类型, 1:DVR 2:ATM DVR 3:DVS ......
+        public byte byChanNum;                        //DVR 通道个数
+        public byte byStartChan;                    //起始通道号,例如DVS-1,DVR - 1
+    }
+
+    //NET_DVR_Login_V30()参数结构
+    public static class NET_DVR_DEVICEINFO_V30 extends HIKSDKStructure {
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];  //序列号
+        public byte byAlarmInPortNum;    //报警输入个数
+        public byte byAlarmOutPortNum;   //报警输出个数
+        public byte byDiskNum;           //硬盘个数
+        public byte byDVRType;         //设备类型, 1:DVR 2:ATM DVR 3:DVS ......
+        public byte byChanNum;         //模拟通道个数
+        public byte byStartChan;      //起始通道号,例如DVS-1,DVR - 1
+        public byte byAudioChanNum;    //语音通道数
+        public byte byIPChanNum;     //最大数字通道个数,低位
+        public byte byZeroChanNum;    //零通道编码个数 //2010-01-16
+        public byte byMainProto;      //主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp
+        public byte bySubProto;        //子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp
+        public byte bySupport;        //能力,位与结果为0表示不支持,1表示支持,
+        public byte bySupport1;        // 能力集扩充,位与结果为0表示不支持,1表示支持
+        public byte bySupport2; /*能力*/
+        public short wDevType;              //设备型号
+        public byte bySupport3; //能力集扩展
+        public byte byMultiStreamProto;//是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流,bit-8子码流
+        public byte byStartDChan;        //起始数字通道号,0表示无效
+        public byte byStartDTalkChan;    //起始数字对讲通道号,区别于模拟对讲通道号,0表示无效
+        public byte byHighDChanNum;        //数字通道个数,高位
+        public byte bySupport4;        //能力集扩展
+        public byte byLanguageType;// 支持语种能力,按位表示,每一位0-不支持,1-支持
+        //  byLanguageType 等于0 表示 老设备
+        //  byLanguageType & 0x1表示支持中文
+        //  byLanguageType & 0x2表示支持英文
+        public byte byVoiceInChanNum;   //音频输入通道数
+        public byte byStartVoiceInChanNo; //音频输入起始通道号 0表示无效
+        public byte bySupport5;
+        public byte bySupport6;   //能力
+        public byte byMirrorChanNum;    //镜像通道个数,<录播主机中用于表示导播通道>
+        public short wStartMirrorChanNo;  //起始镜像通道号
+        public byte bySupport7;   //能力
+        public byte byRes2;        //保留
+    }
+
+    public static final int NET_DVR_DEV_ADDRESS_MAX_LEN = 129;
+    public static final int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;
+    public static final int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64;
+
+    public static interface FLoginResultCallBack extends Callback {
+        public int invoke(int lUserID, int dwResult, NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser);
+    }
+
+    //NET_DVR_Login_V40()参数
+    public static class NET_DVR_USER_LOGIN_INFO extends HIKSDKStructure {
+        public byte[] sDeviceAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN];
+        public byte byUseTransport;
+        public short wPort;
+        public byte[] sUserName = new byte[NET_DVR_LOGIN_USERNAME_MAX_LEN];
+        public byte[] sPassword = new byte[NET_DVR_LOGIN_PASSWD_MAX_LEN];
+        public FLoginResultCallBack cbLoginResult;
+        public Pointer pUser;
+        public boolean bUseAsynLogin;
+        public byte byProxyType; //0:不使用代理,1:使用标准代理,2:使用EHome代理
+        public byte byUseUTCTime;    //0-不进行转换,默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间,SDK完成平台本地时间与设备时区的转换
+        public byte byLoginMode; //0-Private 1-ISAPI 2-自适应
+        public byte byHttps;    //0-不适用tls,1-使用tls 2-自适应
+        public int iProxyID;    //代理服务器序号,添加代理服务器信息时,相对应的服务器数组下表值
+        public byte byVerifyMode;  //认证方式,0-不认证,1-双向认证,2-单向认证;认证仅在使用TLS的时候生效;
+        public byte[] byRes2 = new byte[119];
+    }
+
+    //NET_DVR_Login_V40()参数
+    public static class NET_DVR_DEVICEINFO_V40 extends HIKSDKStructure {
+        public NET_DVR_DEVICEINFO_V30 struDeviceV30 = new NET_DVR_DEVICEINFO_V30();
+        public byte bySupportLock;
+        public byte byRetryLoginTime;
+        public byte byPasswordLevel;
+        public byte byRes1;
+        public int dwSurplusLockTime;
+        public byte byCharEncodeType;//字符编码类型:0- 无字符编码信息(老设备),1- GB2312(简体中文),2- GBK,3- BIG5(繁体中文),4- Shift_JIS(日文),5- EUC-KR(韩文),6- UTF-8,7- ISO8859-1,8- ISO8859-2,9- ISO8859-3,…,依次类推,21- ISO8859-15(西欧)
+        public byte bySupportDev5; //支持v50版本的设备参数获取,设备名称和设备类型名称长度扩展为64字节
+        public byte bySupport;  //能力集扩展,位与结果:0- 不支持,1- 支持
+        public byte byLoginMode; //登录模式 0-Private登录 1-ISAPI登录
+        public int dwOEMCode;
+        public int iResidualValidity;   //该用户密码剩余有效天数,单位:天,返回负值,表示密码已经超期使用,例如“-3表示密码已经超期使用3天”
+        public byte byResidualValidity; // iResidualValidity字段是否有效,0-无效,1-有效
+        public byte bySingleStartDTalkChan;    //独立音轨接入的设备,起始接入通道号,0-为保留字节,无实际含义,音轨通道号不能从0开始
+        public byte bySingleDTalkChanNums;    //独立音轨接入的设备的通道总数,0-表示不支持
+        public byte byPassWordResetLevel; //0-无效,1-管理员创建一个非管理员用户为其设置密码,该非管理员用户正确登录设备后要提示“请修改初始登录密码”,未修改的情况下,用户每次登入都会进行提醒;2-当非管理员用户的密码被管理员修改,该非管理员用户再次正确登录设备后,需要提示“请重新设置登录密码”,未修改的情况下,用户每次登入都会进行提醒。
+        public byte bySupportStreamEncrypt;  //能力集扩展,位与结果:0- 不支持,1- 支持 bySupportStreamEncrypt & 0x1:表示是否支持RTP/TLS取流 bySupportStreamEncrypt & 0x2:  表示是否支持SRTP/UDP取流 bySupportStreamEncrypt & 0x4:  表示是否支持SRTP/MULTICAST取流
+        public byte byMarketType;//0-无效(未知类型),1-经销型,2-行业型
+        public byte[] byRes2 = new byte[238];
+    }
+
+    //sdk网络环境枚举变量,用于远程升级
+    enum _SDK_NET_ENV {
+        LOCAL_AREA_NETWORK,
+        WIDE_AREA_NETWORK
+    }
+
+    //显示模式
+    enum DISPLAY_MODE {
+        NORMALMODE,
+        OVERLAYMODE
+    }
+
+    //发送模式
+    enum SEND_MODE {
+        PTOPTCPMODE,
+        PTOPUDPMODE,
+        MULTIMODE,
+        RTPMODE,
+        RESERVEDMODE
+    }
+
+    ;
+
+    //抓图模式
+    enum CAPTURE_MODE {
+        BMP_MODE,        //BMP模式
+        JPEG_MODE        //JPEG模式
+    }
+
+    ;
+
+    //实时声音模式
+    enum REALSOUND_MODE {
+        NONE,                   //SDK中无此模式,只是为了填补0这个位置
+        MONOPOLIZE_MODE,       //独占模式 1
+        SHARE_MODE        //共享模式 2
+    }
+
+    ;
+
+    //软解码预览参数
+    public static class NET_DVR_CLIENTINFO extends HIKSDKStructure {
+        public int lChannel;
+        public int lLinkMode;
+        public HWND hPlayWnd;
+        public String sMultiCastIP;
+    }
+
+    //预览V40接口
+    public static class NET_DVR_PREVIEWINFO extends HIKSDKStructure {
+        public int lChannel;//通道号
+        public int dwStreamType;    // 码流类型,0-主码流,1-子码流,2-码流3,3-码流4, 4-码流5,5-码流6,7-码流7,8-码流8,9-码流9,10-码流10
+        public int dwLinkMode;// 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-RTP/RTSP,5-RSTP/HTTP ,6- HRUDP(可靠传输) ,7-RTSP/HTTPS
+        public HWND hPlayWnd;//播放窗口的句柄,为NULL表示不播放图象
+        public int bBlocked;  //0-非阻塞取流, 1-阻塞取流, 如果阻塞SDK内部connect失败将会有5s的超时才能够返回,不适合于轮询取流操作.
+        public int bPassbackRecord; //0-不启用录像回传,1启用录像回传
+        public byte byPreviewMode;//预览模式,0-正常预览,1-延迟预览
+        public byte[] byStreamID = new byte[32];//流ID,lChannel为0xffffffff时启用此参数
+        public byte byProtoType; //应用层取流协议,0-私有协议,1-RTSP协议
+        public byte byRes1;
+        public byte byVideoCodingType; //码流数据编解码类型 0-通用编码数据 1-热成像探测器产生的原始数据(温度数据的加密信息,通过去加密运算,将原始数据算出真实的温度值)
+        public int dwDisplayBufNum; //播放库播放缓冲区最大缓冲帧数,范围1-50,置0时默认为1
+        public byte byNPQMode;    //NPQ是直连模式,还是过流媒体 0-直连 1-过流媒体
+        public byte[] byRes = new byte[215];
+    }
+
+    public static class NET_DVR_STREAM_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byID = new byte[32];
+        public int dwChannel;
+        public byte[] byRes = new byte[32];
+    }
+
+    //配置条件
+    public static class NET_DVR_CLOUDSTORAGE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;
+        public byte[] byRes1 = new byte[64];
+    }
+
+    public static class NET_DVR_STREAM_RECORD_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte byRecord;
+        public byte byOffLineRecord;
+        public byte[] byRes1 = new byte[2];
+        public int dwRelatedHD;
+        public byte[] byRes2 = new byte[8];
+    }
+
+    //SDK状态信息(9000新增)
+    public static class NET_DVR_SDKSTATE extends HIKSDKStructure {
+        public int dwTotalLoginNum;        //当前login用户数
+        public int dwTotalRealPlayNum;    //当前realplay路数
+        public int dwTotalPlayBackNum;    //当前回放或下载路数
+        public int dwTotalAlarmChanNum;    //当前建立报警通道路数
+        public int dwTotalFormatNum;        //当前硬盘格式化路数
+        public int dwTotalFileSearchNum;    //当前日志或文件搜索路数
+        public int dwTotalLogSearchNum;    //当前日志或文件搜索路数
+        public int dwTotalSerialNum;        //当前透明通道路数
+        public int dwTotalUpgradeNum;    //当前升级路数
+        public int dwTotalVoiceComNum;    //当前语音转发路数
+        public int dwTotalBroadCastNum;    //当前语音广播路数
+        public int[] dwRes = new int[10];
+    }
+
+    //SDK功能支持信息(9000新增)
+    public static class NET_DVR_SDKABL extends HIKSDKStructure {
+        public int dwMaxLoginNum;        //最大login用户数 MAX_LOGIN_USERS
+        public int dwMaxRealPlayNum;        //最大realplay路数 WATCH_NUM
+        public int dwMaxPlayBackNum;        //最大回放或下载路数 WATCH_NUM
+        public int dwMaxAlarmChanNum;    //最大建立报警通道路数 ALARM_NUM
+        public int dwMaxFormatNum;        //最大硬盘格式化路数 SERVER_NUM
+        public int dwMaxFileSearchNum;    //最大文件搜索路数 SERVER_NUM
+        public int dwMaxLogSearchNum;    //最大日志搜索路数 SERVER_NUM
+        public int dwMaxSerialNum;        //最大透明通道路数 SERVER_NUM
+        public int dwMaxUpgradeNum;        //最大升级路数 SERVER_NUM
+        public int dwMaxVoiceComNum;        //最大语音转发路数 SERVER_NUM
+        public int dwMaxBroadCastNum;    //最大语音广播路数 MAX_CASTNUM
+        public int[] dwRes = new int[10];
+    }
+
+    //报警设备信息
+    public static class NET_DVR_ALARMER extends HIKSDKStructure {
+        public byte byUserIDValid;                 /* userid是否有效 0-无效,1-有效 */
+        public byte bySerialValid;                 /* 序列号是否有效 0-无效,1-有效 */
+        public byte byVersionValid;                /* 版本号是否有效 0-无效,1-有效 */
+        public byte byDeviceNameValid;             /* 设备名字是否有效 0-无效,1-有效 */
+        public byte byMacAddrValid;                /* MAC地址是否有效 0-无效,1-有效 */
+        public byte byLinkPortValid;               /* login端口是否有效 0-无效,1-有效 */
+        public byte byDeviceIPValid;               /* 设备IP是否有效 0-无效,1-有效 */
+        public byte bySocketIPValid;               /* socket ip是否有效 0-无效,1-有效 */
+        public int lUserID;                       /* NET_DVR_Login()返回值, 布防时有效 */
+        public byte[] sSerialNumber = new byte[SERIALNO_LEN];    /* 序列号 */
+        public int dwDeviceVersion;                /* 版本信息 高16位表示主版本,低16位表示次版本*/
+        public byte[] sDeviceName = new byte[NAME_LEN];            /* 设备名字 */
+        public byte[] byMacAddr = new byte[MACADDR_LEN];        /* MAC地址 */
+        public short wLinkPort;                     /* link port */
+        public byte[] sDeviceIP = new byte[128];                /* IP地址 */
+        public byte[] sSocketIP = new byte[128];                /* 报警主动上传时的socket IP地址 */
+        public byte byIpProtocol;                  /* Ip协议 0-IPV4, 1-IPV6 */
+        public byte[] byRes2 = new byte[11];
+
+
+    }
+
+    //硬解码显示区域参数(子结构)
+    public static class NET_DVR_DISPLAY_PARA extends HIKSDKStructure {
+        public int bToScreen;
+        public int bToVideoOut;
+        public int nLeft;
+        public int nTop;
+        public int nWidth;
+        public int nHeight;
+        public int nReserved;
+    }
+
+    //硬解码预览参数
+    public static class NET_DVR_CARDINFO extends HIKSDKStructure {
+        public int lChannel;//通道号
+        public int lLinkMode; //最高位(31)为0表示主码流,为1表示子,0-30位表示码流连接方式:0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-电话线,5-128k宽带,6-256k宽带,7-384k宽带,8-512k宽带;
+        public String sMultiCastIP;
+        public NET_DVR_DISPLAY_PARA struDisplayPara;
+    }
+
+    //录象文件参数
+    public static class NET_DVR_FIND_DATA extends HIKSDKStructure {
+        public byte[] sFileName = new byte[100];//文件名
+        public NET_DVR_TIME struStartTime;//文件的开始时间
+        public NET_DVR_TIME struStopTime;//文件的结束时间
+        public int dwFileSize;//文件的大小
+    }
+
+    //录象文件参数(9000)
+    public static class NET_DVR_FINDDATA_V30 extends HIKSDKStructure {
+        public byte[] sFileName = new byte[100];//文件名
+        public NET_DVR_TIME struStartTime;//文件的开始时间
+        public NET_DVR_TIME struStopTime;//文件的结束时间
+        public int dwFileSize;//文件的大小
+        public byte[] sCardNum = new byte[32];
+        public byte byLocked;//9000设备支持,1表示此文件已经被锁定,0表示正常的文件
+        public byte[] byRes = new byte[3];
+    }
+
+    //录象文件参数(带卡号)
+    public static class NET_DVR_FINDDATA_CARD extends HIKSDKStructure {
+        public byte[] sFileName = new byte[100];//文件名
+        public NET_DVR_TIME struStartTime;//文件的开始时间
+        public NET_DVR_TIME struStopTime;//文件的结束时间
+        public int dwFileSize;//文件的大小
+        public byte[] sCardNum = new byte[32];
+    }
+
+    public static class NET_DVR_FILECOND_V40 extends HIKSDKStructure {
+        public int lChannel;
+        public int dwFileType;
+        public int dwIsLocked;
+        public int dwUseCardNo;//是否带ATM信息进行查询:0-不带ATM信息,1-按交易卡号查询,2-按交易类型查询,3-按交易金额查询,4-按卡号、交易类型及交易金额的组合查询 5-按课程名称查找,此时卡号表示课程名称
+        public byte[] sCardNumber = new byte[CARDNUM_LEN_OUT];
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME();
+        public NET_DVR_TIME struStopTime = new NET_DVR_TIME();
+        public byte byDrawFrame; //0:不抽帧,1:抽帧
+        public byte byFindType; //0:查询普通卷,1:查询存档卷
+        public byte byQuickSearch; //0:普通查询,1:快速(日历)查询
+        public byte bySpecialFindInfoType;    //专有查询条件类型 0-无效, 1-带ATM查询条件
+        public int dwVolumeNum;  //存档卷号
+        public byte[] byWorkingDeviceGUID = new byte[GUID_LEN];    //工作机GUID,通过获取N+1得到
+        public NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo = new NET_DVR_SPECIAL_FINDINFO_UNION();   //专有查询条件
+        public byte byStreamType;    //0-同一个时间段只返回一种录像,优先级顺序为:主码流、子码流、三码流,1-子码流,2-三码流,3-主码流,254-双码流搜索(优先返回主码流录像,没有主码流录像时返回子码流录像)
+        public byte byAudioFile;                //音频文件 0-非音频文件,1-音频文件
+        public byte[] byRes2 = new byte[30];    //保留
+    }
+
+    public static class NET_DVR_SPECIAL_FINDINFO_UNION extends Union {
+        public byte[] byLenth = new byte[8];
+        public NET_DVR_ATMFINDINFO struATMFindInfo = new NET_DVR_ATMFINDINFO();           //ATM查询
+    }
+
+    public static class NET_DVR_ATMFINDINFO extends HIKSDKStructure {
+        public byte byTransactionType;       //交易类型 0-全部,1-查询, 2-取款, 3-存款, 4-修改密码,5-转账, 6-无卡查询 7-无卡存款, 8-吞钞 9-吞卡 10-自定义
+        public byte[] byRes = new byte[3];    //保留
+        public int dwTransationAmount;     //交易金额 ;
+    }
+
+    //录像文件查找条件结构V50
+    public static class NET_DVR_FILECOND_V50 extends HIKSDKStructure {
+        public NET_DVR_STREAM_INFO struStreamID; //流ID或通道号
+        public NET_DVR_TIME_SEARCH_COND struStartTime = new NET_DVR_TIME_SEARCH_COND(); //开始时间
+        public NET_DVR_TIME_SEARCH_COND struStopTime = new NET_DVR_TIME_SEARCH_COND(); //结束时间
+        public byte byFindType; //0-查询普通卷,1-查询存档卷 2-查询N+1录像文件
+        public byte byDrawFrame; //是否抽帧 0-不抽帧 1-抽帧
+        public byte byQuickSearch; //0-普通查询,1-快速(日历)查询
+        public byte byStreamType; //0-主码流,1-子码流,2-3码流,0xff-全部
+        public int dwFileType; // 文件类型
+        public int dwVolumeNum; //存档卷号,byFindType为1时有效
+        public byte byIsLocked; //是否锁定 0-正常文件,1-锁定文件, 0xff表示所有文件
+        public byte byNeedCard; //是否需要查询卡,0-不需要 1-需要
+        public byte byOnlyAudioFile;        //音频文件 0-视频文件 1-音频文件
+        public byte bySpecialFindInfoType; //0-无效, 1-带ATM查询条件
+        public byte[] szCardNum = new byte[32];  //卡号,byNeedCard为1时有效
+        public byte[] szWorkingDeviceGUID = new byte[16]; //工作机GUID,通过获取N+1得到,byFindType为2时有效
+        public NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo = new NET_DVR_SPECIAL_FINDINFO_UNION(); //专有查询条件联合体
+        public int dwTimeout; //查找超时时间(指定NET_DVR_FindNextFile_V30/NET_DVR_FindNextFile_V40/NET_DVR_FindNextFile_V50接口的超时时间返回);单位:毫秒,不填写(默认为0时),接口行为跟以前一样 ;有效值:0, [5000 – 15000]
+        public byte[] byRes = new byte[252];
+    }
+
+    public static class NET_DVR_FINDDATA_V40 extends HIKSDKStructure {
+        public byte[] sFileName = new byte[100];//文件名
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME();//文件的开始时间
+        public NET_DVR_TIME struStopTime = new NET_DVR_TIME();//文件的结束时间
+        public int dwFileSize;//文件的大小
+        public byte[] sCardNum = new byte[32];
+        public byte byLocked;//9000设备支持,1表示此文件已经被锁定,0表示正常的文件
+        public byte byFileType;  //文件类型:0-定时录像,1-移动侦测 ,2-报警触发,
+        //3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像,7-震动报警,8-环境报警,9-智能报警,10-PIR报警,11-无线报警,12-呼救报警,14-智能交通事件
+        public byte byQuickSearch; //0:普通查询结果,1:快速(日历)查询结果
+        public byte byRes;
+        public int dwFileIndex; //文件索引号
+        public byte byStreamType;
+        public byte[] byRes1 = new byte[127];
+    }
+
+    public static class NET_DVR_TIME_SEARCH extends HIKSDKStructure {
+        public short wYear;        //年,设备OSD时间
+        public byte byMonth;        //月,设备OSD时间
+        public byte byDay;        //日,设备OSD时间
+        public byte byHour;        //时,设备OSD时间
+        public byte byMinute;    //分,设备OSD时间
+        public byte bySecond;    //秒,设备OSD时间
+        public byte cTimeDifferenceH;        //与国际标准时间的时差(小时),-12 ... +14
+        public byte cTimeDifferenceM;        //与国际标准时间的时差(分钟),-30, 0, 30, 45
+        public byte byLocalOrUTC;      //0-时差无效,设备本地时间,即设备OSD时间  1-时差有效
+        public short wMillisecond;      //毫秒,精度不够,默认为0
+    }
+
+    public static class NET_DVR_ADDRESS extends HIKSDKStructure {
+        public NET_DVR_IPADDR struIP = new NET_DVR_IPADDR(); //IP地址
+        public short wPort;    //端口号
+        public byte[] byRes = new byte[2];
+    }
+
+    public static class NET_DVR_FINDDATA_V50 extends HIKSDKStructure {
+        public byte[] sFileName = new byte[100];
+        public NET_DVR_TIME_SEARCH struStartTime = new NET_DVR_TIME_SEARCH();
+        public NET_DVR_TIME_SEARCH struStopTime = new NET_DVR_TIME_SEARCH();
+        public NET_DVR_ADDRESS struAddr = new NET_DVR_ADDRESS(); //片段所在的地址信息,集群回放时用到
+        public int dwFileSize; //文件大小
+        public byte byLocked; //文件是否被锁定,1-文件已锁定;0-文件未锁定
+        public byte byFileType; //文件类型,与V40相同
+        public byte byQuickSearch; //0- 普通查询结果,1- 快速(日历)查询结果
+        public byte byStreamType; //码流类型:0- 主码流,1- 子码流,2- 码流三
+        public int dwFileIndex; //文件索引号
+        public byte[] sCardNum = new byte[32]; //卡号
+        public int dwTotalLenH; // 对于大文件搜索,时间段内数据总长度,高32字节
+        public int dwTotalLenL; // 对于大文件搜索,时间段内数据总长度,低32字节
+        public byte byBigFileType;  // 0为普通片段搜索,1为大文件搜索
+        public byte[] byRes = new byte[247];
+    }
+
+    public static class NET_DVR_FILECOND extends HIKSDKStructure //录象文件查找条件结构
+    {
+        public int lChannel;//通道号
+        public int dwFileType;//录象文件类型0xff-全部,0-定时录像,1-移动侦测 ,2-报警触发,3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像
+        public int dwIsLocked;//是否锁定 0-正常文件,1-锁定文件, 0xff表示所有文件
+        public int dwUseCardNo;//是否使用卡号
+        public byte[] sCardNumber = new byte[32];//卡号
+        public NET_DVR_TIME struStartTime;//开始时间
+        public NET_DVR_TIME struStopTime;//结束时间
+    }
+
+    public static class NET_DVR_PLAYCOND extends HIKSDKStructure //回放或者下载信息结构体
+    {
+        public int dwChannel;//通道号
+        public NET_DVR_TIME struStartTime;
+        public NET_DVR_TIME struStopTime;
+        public byte byDrawFrame;  //0:不抽帧,1:抽帧
+        public byte byStreamType; //码流类型,0-主码流 1-子码流 2-码流三
+        public byte[] byStreamID = new byte[STREAM_ID_LEN];
+        public byte[] byRes = new byte[30];//保留
+    }
+
+    public static class NET_DVR_VOD_PARA extends HIKSDKStructure //回放或者下载信息结构体
+    {
+        public int dwSize;
+        public NET_DVR_STREAM_INFO struIDInfo;
+        public NET_DVR_TIME struBeginTime;
+        public NET_DVR_TIME struEndTime;
+        public HWND hWnd;
+        public byte byDrawFrame; //0:不抽帧,1:抽帧
+        public byte byVolumeType;  //0-普通录像卷  1-存档卷
+        public byte byVolumeNum;  //卷号,目前指存档卷号
+        public byte byStreamType;   //码流类型 0-主码流, 1-子码流,2-码流三
+        public int dwFileIndex;      //存档卷上的录像文件索引,搜索存档卷录像时返回的值
+        public byte byAudioFile;    //音频文件0-否,1-是
+        public byte byCourseFile;    //课程文件0-否,1-是
+        public byte byDownload;    //是否下载 0-否,1-是
+        public byte byOptimalStreamType;    //是否按最优码流类型回放 0-否,1-是(对于双码流设备,某一段时间内的录像文件与指定码流类型不同,则返回实际码流类型的录像)
+        public byte[] byRes2 = new byte[20];
+    }
+
+    //图片查找条件
+    public static class NET_DVR_FIND_PICTURE_PARAM extends HIKSDKStructure {
+        public int dwSize;         // 结构体大小
+        public int lChannel;       // 通道号
+        public byte byFileType;   //图片查找类型
+        public byte byNeedCard;     // 是否需要卡号
+        /*
+                           0-保留,1-澳,2-京,3-渝,4-闽,5-甘,6-粤,7-桂,
+                           8-贵,9-琼,10-冀,11-豫,12-黑,13-鄂,14-湘,
+                           15-吉,16-苏,17-赣,18-辽,19-蒙,20-宁,21-青,
+                           22-鲁,23-晋,24-陕,25-沪,26-川,27-台,28-津,
+                           29-藏,30-港,31-新,32-云,33-浙,34-皖,0xff-全部
+                           */
+        public byte byProvince;     //省份索引值
+        public byte byEventType;      // 事件类型:0保留,1-交通事件;2-违章取证;3-其他事件
+        public byte[] sCardNum = new byte[CARDNUM_LEN_V30];     // 卡号
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME();//查找图片的开始时间
+        public NET_DVR_TIME struStopTime = new NET_DVR_TIME();// 查找图片的结束时间
+        //ITC3.7 新增
+        public int dwTrafficType; //图片检索生效项 参考 VCA_OPERATE _TYPE
+        public int dwVehicleType; //车辆类型 参考 VCA_VEHICLE_TYPE
+        //违规检测类型参考 VCA_ILLEGAL_TYPE 当前不支持复选
+        public int dwIllegalType;
+        public byte byLaneNo;  //车道号(1~99)
+        public byte bySubHvtType;//0-保留,1-机动车(机动车子类型中支持车牌检索,省份检索),2-非机动车,3-行人
+        public byte[] byRes2 = new byte[2];
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];    //车牌号码
+        public byte byRegion;     // 区域索引值 0-保留,1-欧洲(Europe Region),2-俄语区域(Russian Region),3-欧洲&俄罗斯(EU&CIS), 4-中东(Middle East),0xff-所有
+        public byte byCountry;     // 国家索引值,参照:COUNTRY_INDEX
+        public byte byArea;  //地区
+        public byte byISO8601;  //是否是8601的时间格式,即时差字段是否有效0-时差无效,年月日时分秒为设备本地时间 1-时差有效
+        public byte cStartTimeDifferenceH;   //开始时间与UTC的时差(小时),-12 ... +14, 正数表示东时区
+        public byte cStartTimeDifferenceM;   //开始时间与UTC的时差(分钟),-30, 0, 30, 45,正数表示东时区
+        public byte cStopTimeDifferenceH;    //结束时间与UTC的时差(小时),-12 ... +14,正数表示东时区
+        public byte cStopTimeDifferenceM;    //结束时间与UTC的时差(分钟),-30, 0, 30, 45,正数表示东时区
+    }
+
+    public static class NET_DVR_FIND_PICTURE extends HIKSDKStructure {
+        public byte[] sFileName = new byte[PICTURE_NAME_LEN];//图片名
+        public NET_DVR_TIME struTime;//图片的时间
+        public int dwFileSize;//图片的大小
+        public byte[] sCardNum = new byte[CARDNUM_LEN_V30];    //卡号
+        public byte byPlateColor;//参考结构 VCA_PLATE_COLOR
+        public byte byVehicleLogo;//参考结构 VLR_VEHICLE_CLASS
+        public byte byEventSearchStatus; //连续图片表示同一查找结果的时候,0-表示后面没有图片信息,1-表示后面还有图片信息。总共图片信息包括最后一张状态为0的图片。
+        public byte byRecogResult;//识别结果参考结构VTR_RESULT
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];    //车牌号码
+        public byte[] byRes = new byte[12];
+    }
+
+
+    public class NET_DVR_FIND_PICTURE_V50 extends HIKSDKStructure {
+        public byte[] sFileName = new byte[PICTURE_NAME_LEN];//图片名
+        public NET_DVR_TIME struTime = new NET_DVR_TIME();//图片的时间
+        public int dwFileSize;//图片的大小
+        public byte[] sCardNum = new byte[CARDNUM_LEN_V30];    //卡号
+        public byte byPlateColor;//参考结构 VCA_PLATE_COLOR
+        public byte byVehicleLogo;//参考结构 VLR_VEHICLE_CLASS
+        public byte byFileType;  //文件类型, :0定时抓图1 移动侦测抓图 2 报警抓图3  报警 | 移动侦测抓图 4 报警 & 移动侦测抓图     6 手动抓图 ,9-智能图片,10- PIR报警,11- 无线报警,12- 呼救报警,    0xa 预览时截图,0xd 人脸侦测, 0xe 越界侦测,0xf 入侵区域侦测,0x10 场景变更侦测, 0x11-设备本地回放时截图, 0x12-智能侦测
+        public byte byRecogResult;//识别结果参考结构VTR_RESULT
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];    //车牌号码
+        public byte byEventSearchStatus; //连续图片表示同一查找结果的时候,0-表示后面没有图片信息,1-表示后面还有图片信息。总共图片信息包括最后一张状态为0的图片。
+        public NET_DVR_ADDRESS struAddr;        //图片所在的地址信息,图片下载时用到
+        public byte[] byRes = new byte[256];        //  保留字节
+        public NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //图片附件信息
+    }
+
+
+    public class NET_DVR_PIC_PARAM extends HIKSDKStructure {
+        public Pointer pDVRFileName;
+        public Pointer pSavedFileBuf;
+        public int dwBufLen;
+        public IntByReference lpdwRetLen;
+        public NET_DVR_ADDRESS struAddr;
+        public byte[] byRes = new byte[256];
+    }
+
+
+    //查找结果结构体
+    public static class NET_DVR_FIND_PICTURE_V40 extends HIKSDKStructure {
+        public byte[] sFileName = new byte[PICTURE_NAME_LEN];//图片名
+        public NET_DVR_TIME struTime = new NET_DVR_TIME();//图片的时间
+        public int dwFileSize;//图片的大小
+        public byte[] sCardNum = new byte[CARDNUM_LEN_V30];    //卡号
+        public byte byPlateColor;//参考结构 VCA_PLATE_COLOR
+        public byte byVehicleLogo;//参考结构 VLR_VEHICLE_CLASS
+        public byte byFileType;  //文件类型, :0定时抓图1 移动侦测抓图 2 报警抓图3  报警 | 移动侦测抓图 4 报警 & 移动侦测抓图     6 手动抓图 ,9-智能图片,10- PIR报警,11- 无线报警,12- 呼救报警,    0xa 预览时截图,0xd 人脸侦测, 0xe 越界侦测,0xf 入侵区域侦测,0x10 场景变更侦测, 0x11-设备本地回放时截图, 0x12-智能侦测, 0x32-防区报警, 0x33-紧急求助, 0x34-业务咨询
+        public byte byRecogResult;//识别结果参考结构VTR_RESULT
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];    //车牌号码
+        public byte byEventSearchStatus; //连续图片表示同一查找结果的时候,0-表示后面没有图片信息,1-表示后面还有图片信息。总共图片信息包括最后一张状态为0的图片。
+        public byte[] byRes = new byte[75];        //  保留字节
+        public NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //图片附件信息
+    }
+
+    public static class NET_DVR_FACE_EXTRA_INFO extends Union {
+        public NET_VCA_RECT[] struVcaRect = new NET_VCA_RECT[MAX_FACE_PIC_NUM];  //人脸子图坐标信息
+        public byte[] byRes = new byte[64];
+    }
+
+    //图片附件信息联合体
+    public static class NET_DVR_PIC_EXTRA_INFO_UNION extends Union {
+        public byte[] byUnionLen = new byte[544];   //联合体长度,无实际意义
+        public NET_DVR_FACE_EXTRA_INFO struFaceExtraInfo;   //人脸侦测信息
+    }
+
+    public static class NET_DVR_PACKET_INFO_EX extends Union {
+        public short wWidth;         //width
+        public short wHeight;        //height
+        public int dwTimeStamp;    //lower time stamp
+        public int dwTimeStampHigh;//higher time stamp
+        public int dwYear;            //year
+        public int dwMonth;         //month
+        public int dwDay;           //day
+        public int dwHour;          //hour
+        public int dwMinute;        //minute
+        public int dwSecond;        //second
+        public int dwMillisecond;   //millisecond
+        public int dwFrameNum;     //frame num
+        public int dwFrameRate;    //frame rate,当帧率小于0时,0x80000002:表示1/2帧率,同理可推0x80000010为1/16帧率
+        public int dwFlag;         //flag E帧标记
+        public int dwFilePos;      //file pos
+        public int dwPacketType;    //Packet type:0 -file head,1 -video I frame,2- video B frame, 3- video P frame, 10- audio packet, 11- private packet
+        public int dwPacketSize;   //packet size
+        public Pointer pPacketBuffer;  //packet buffer
+        public byte[] byRes1 = new byte[4];
+        public int dwPacketMode;   //打包方式:0-保留,1-FU_A打包方式
+        public byte[] byRes2 = new byte[16];
+        public int[] dwReserved = new int[6];    //reserved[0] 表示私有数据类型
+    }
+
+    //云台区域选择放大缩小(HIK 快球专用)
+    public static class NET_DVR_POINT_FRAME extends HIKSDKStructure {
+        public int xTop;     //方框起始点的x坐标
+        public int yTop;     //方框结束点的y坐标
+        public int xBottom;  //方框结束点的x坐标
+        public int yBottom;  //方框结束点的y坐标
+        public int bCounter; //保留
+    }
+
+    //语音对讲参数
+    public static class NET_DVR_COMPRESSION_AUDIO extends HIKSDKStructure {
+        public byte byAudioEncType;   //音频编码类型 0-G722; 1-G711
+        public byte[] byres = new byte[7];//这里保留音频的压缩参数
+    }
+
+    public static class NET_DVR_AUDIODEC_INFO extends HIKSDKStructure {
+        public int nchans;                         /* 声道数 */
+        public int sample_rate;                  /* 采样率 */
+        public int aacdec_profile;               /* 编码用的框架 */
+        public int[] reserved = new int[16];                 /* 保留 */
+    }
+
+    //音频解码
+    public static class NET_DVR_AUDIODEC_PROCESS_PARAM extends HIKSDKStructure {
+        public Pointer in_buf;                      /* 输入数据buf */
+        public Pointer out_buf;                     /* 输出数据buf */
+        public int in_data_size;                 /* 输入in_buf内数据byte数 */
+        public int proc_data_size;               /* 输出解码库处理in_buf中数据大小bytes */
+        public int out_frame_size;               /* 解码一帧后数据BYTE数 */
+        public NET_DVR_AUDIODEC_INFO dec_info = new NET_DVR_AUDIODEC_INFO();                     /* 输出解码信息 */
+        public int g726dec_reset;                /* 重置开关 */
+        public int g711_type;                    /* g711编码类型,0 - U law, 1- A law */
+        public int[] reserved = new int[16];                 /* 保留 */
+    }
+
+    public static class NET_DVR_AUDIOENC_INFO extends HIKSDKStructure {
+        public int in_frame_size;                /* 输入一帧数据大小(BYTES),由GetInfoParam函数返回         */
+        public int[] reserved = new int[16];                 /* 保留 */
+    }
+
+    //音频编码
+    public static class NET_DVR_AUDIOENC_PROCESS_PARAM extends HIKSDKStructure {
+        public Pointer in_buf;                      /* 输入buf */
+        public Pointer out_buf;                     /* 输出buf */
+        public int out_frame_size;               /* 编码一帧后的BYTE数 */
+        public int g726enc_reset;                /* 重置开关 */
+        public int g711_type;                    /* g711编码类型,0 - U law, 1- A law */
+        public int enc_mode;                     /* 音频编码模式,AMR编码配置 */
+        public int[] reserved = new int[16];                 /* 保留 */
+    }
+
+    //用于接收报警信息的缓存区
+    public static class RECV_ALARM extends HIKSDKStructure {
+        public byte[] RecvBuffer = new byte[4000];//此处的400应不小于最大报警报文长度
+    }
+
+    //布防参数
+    public static class NET_DVR_SETUPALARM_PARAM extends HIKSDKStructure {
+        public int dwSize;
+        public byte byLevel; //布防优先级,0-一等级(高),1-二等级(中),2-三等级(低)
+        public byte byAlarmInfoType; //上传报警信息类型(抓拍机支持),0-老报警信息(NET_DVR_PLATE_RESULT),1-新报警信息(NET_ITS_PLATE_RESULT)2012-9-28
+        public byte byRetAlarmTypeV40; //0--返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO, 1--设备支持NET_DVR_ALARMINFO_V40则返回NET_DVR_ALARMINFO_V40,不支持则返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO
+        public byte byRetDevInfoVersion; //CVR上传报警信息回调结构体版本号 0-COMM_ALARM_DEVICE, 1-COMM_ALARM_DEVICE_V40
+        public byte byRetVQDAlarmType; //VQD报警上传类型,0-上传报报警NET_DVR_VQD_DIAGNOSE_INFO,1-上传报警NET_DVR_VQD_ALARM
+        public byte byFaceAlarmDetection;
+        public byte bySupport;
+        public byte byBrokenNetHttp;
+        public short wTaskNo;    //任务处理号 和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构 NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应)
+        public byte byDeployType;    //布防类型:0-客户端布防,1-实时布防
+        public byte[] byRes1 = new byte[3];
+        public byte byAlarmTypeURL;//bit0-表示人脸抓拍报警上传(INTER_FACESNAP_RESULT);0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断,同时设备需要支持URL的相关服务,当前是”云存储“)
+        public byte byCustomCtrl;//Bit0- 表示支持副驾驶人脸子图上传: 0-不上传,1-上传,(注:只在公司内部8600/8200等平台开放)
+
+
+    }
+
+    public static class NET_DVR_SETUPALARM_PARAM_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byLevel; //布防优先级,0-一等级(高),1-二等级(中),2-三等级(低)
+        public byte byAlarmInfoType; //上传报警信息类型(抓拍机支持),0-老报警信息(NET_DVR_PLATE_RESULT),1-新报警信息(NET_ITS_PLATE_RESULT)2012-9-28
+        public byte byRetAlarmTypeV40; //0--返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO, 1--设备支持NET_DVR_ALARMINFO_V40则返回NET_DVR_ALARMINFO_V40,不支持则返回NET_DVR_ALARMINFO_V30或NET_DVR_ALARMINFO
+        public byte byRetDevInfoVersion; //CVR上传报警信息回调结构体版本号 0-COMM_ALARM_DEVICE, 1-COMM_ALARM_DEVICE_V40
+        public byte byRetVQDAlarmType; //VQD报警上传类型,0-上传报报警NET_DVR_VQD_DIAGNOSE_INFO,1-上传报警NET_DVR_VQD_ALARM
+        //1-表示人脸侦测报警扩展(INTER_FACE_DETECTION),0-表示原先支持结构(INTER_FACESNAP_RESULT)
+        public byte byFaceAlarmDetection;
+        //Bit0- 表示二级布防是否上传图片: 0-上传,1-不上传
+        //Bit1- 表示开启数据上传确认机制;0-不开启,1-开启
+        //Bit6- 表示雷达检测报警(eventType:radarDetection)是否开启实时上传;0-不开启,1-开启(用于web插件实时显示雷达目标轨迹)
+        public byte bySupport;
+        //断网续传类型
+        //bit0-车牌检测(IPC) (0-不续传,1-续传)
+        //bit1-客流统计(IPC)  (0-不续传,1-续传)
+        //bit2-热度图统计(IPC) (0-不续传,1-续传)
+        //bit3-人脸抓拍(IPC) (0-不续传,1-续传)
+        //bit4-人脸对比(IPC) (0-不续传,1-续传)
+        //bit5-JSON报警透传(IPC) (0-不续传,1-续传)
+        //bit6-热度图按人员停留时间统计数据上传事件(0-不续传,1-续传)
+        //bit7-热度图按人数统计数据上传事件的确认机制(0-不续传,1-续传)
+        public byte byBrokenNetHttp;
+        public short wTaskNo;    //任务处理号 和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构 NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应)
+        public byte byDeployType;    //布防类型:0-客户端布防,1-实时布防
+        public byte bySubScription;    //订阅,按位表示,未开启订阅不上报  //占位
+        //Bit7-移动侦测人车分类是否传图;0-不传图(V30上报),1-传图(V40上报)
+        public byte[] byRes1 = new byte[2];
+        public byte byAlarmTypeURL;//bit0-表示人脸抓拍报警上传(INTER_FACESNAP_RESULT);0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断,同时设备需要支持URL的相关服务,当前是”云存储“)
+        //bit1-表示EVENT_JSON中图片数据长传类型;0-表示二进制传输,1-表示URL传输(设备支持的情况下,设备支持能力根据具体报警能力集判断)
+        //bit2 - 人脸比对(报警类型为COMM_SNAP_MATCH_ALARM)中图片数据上传类型:0 - 二进制传输,1 - URL传输
+        //bit3 - 行为分析(报警类型为COMM_ALARM_RULE)中图片数据上传类型:0 - 二进制传输,1 - URL传输,本字段设备是否支持,对应软硬件能力集中<isSupportBehaviorUploadByCloudStorageURL>节点是否返回且为true
+        public byte byCustomCtrl;//Bit0- 表示支持副驾驶人脸子图上传: 0-不上传,1-上传
+        public byte[] byRes4 = new byte[128];
+    }
+
+
+    //区域框参数
+    public static class NET_VCA_RECT extends HIKSDKStructure {
+        public float fX;
+        public float fY;
+        public float fWidth;
+        public float fHeight;
+    }
+
+    //报警目标信息
+    public static class NET_VCA_TARGET_INFO extends HIKSDKStructure {
+        public int dwID;
+        public NET_VCA_RECT struRect;
+        public byte[] byRes = new byte[4];
+    }
+
+    //前端设备信息
+    public static class NET_VCA_DEV_INFO extends HIKSDKStructure {
+        public NET_DVR_IPADDR struDevIP;
+        public short wPort;
+        public byte byChannel;
+        public byte byIvmsChannel;
+    }
+
+    //事件规则信息
+    public static class NET_VCA_RULE_INFO extends HIKSDKStructure {
+        public byte byRuleID;
+        public byte byRes;
+        public short wEventTypeEx;
+        public byte[] byRuleName = new byte[NAME_LEN];
+        public int dwEventType;
+        public NET_VCA_EVENT_UNION uEventParam;
+
+        public void read() {
+            super.read();
+            switch (wEventTypeEx) {
+                case 1:
+                    uEventParam.setType(NET_VCA_TRAVERSE_PLANE.class);
+                    break;
+                case 2:
+                case 3:
+                    uEventParam.setType(NET_VCA_AREA.class);
+                    break;
+                default:
+                    break;
+            }
+            uEventParam.read();
+        }
+
+        public void write() {
+            super.write();
+            uEventParam.write();
+        }
+
+    }
+
+    //警戒规则参数联合体
+    public static class NET_VCA_EVENT_UNION extends Union {
+        public int[] uLen = new int[23];
+        public NET_VCA_TRAVERSE_PLANE struTraversePlane;
+        public NET_VCA_AREA struArea;
+    }
+
+    //穿越警戒面参数
+    public static class NET_VCA_TRAVERSE_PLANE extends HIKSDKStructure {
+        public NET_VCA_LINE struPlaneBottom;
+        public int dwCrossDirection;
+        public byte bySensitivity;
+        public byte byPlaneHeight;
+        public byte byDetectionTarget;/*检测目标:0- 所有目标,1- 人,2- 车   */
+        public byte[] byRes2 = new byte[37];
+    }
+
+    public static class NET_DVR_HANDLEEXCEPTION_V40 extends HIKSDKStructure {
+        public int dwHandleType;/*处理方式,各种异常处理方式的"或"结果,异常处理方式:
+                                    0x00: 无响应    0x01: 监视器上警告  0x02: 声音警告  0x04: 上传中心
+                                    0x08: 触发报警输出  0x10: Jpeg抓图并上传EMail
+                                    0x20: 无线声光报警器联动    0x40: 联动电子地图(目前仅PCNVR支持)
+                                    0x200:抓图并上传ftp    0x400: 虚焦侦测联动聚焦
+                                    0x800: PTZ联动跟踪(球机跟踪目标)
+                                    E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。 */
+        public int dwMaxRelAlarmOutChanNum;/*设备最大支持的触发报警输出通道数(只读) */
+        public int dwRelAlarmOutChanNum;/*已配置的触发的报警输出通道个数,决定dwRelAlarmOut取前多少个数组下标 */
+        public int[] dwRelAlarmOut = new int[MAX_CHANNUM_V30];/*触发报警输出通道,取数组前dwRelAlarmOutChanNum个值,
+                                        其值表示报警输出通道号(从1开始),初始值是0xfffffffff(不关联通道)。
+                                        例如,dwRelAlarmOutChanNum=5,则可以配置触发报警输出通道dwRelAlarmOut[0]~dwRelAlarmOut[4]。 */
+        public byte[] byRes = new byte[64]; /*保留,置为0 */
+    }
+
+    public static final int MAX_ALERTLINE_NUM = 8;
+
+    public static class NET_VCA_TRAVERSE_PLANE_DETECTION extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable;//使能
+        public byte byEnableDualVca;// 启用支持智能后检索 0-不启用,1-启用
+        public byte[] byRes1 = new byte[2];
+        public NET_VCA_TRAVERSE_PLANE[] struAlertParam = new NET_VCA_TRAVERSE_PLANE[MAX_ALERTLINE_NUM];  //警戒线参数
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmSched = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];
+        public NET_DVR_HANDLEEXCEPTION_V40 struHandleException;  //异常处理方式
+        public int dwMaxRelRecordChanNum;  //报警触发的录象通道 数(只读)最大支持数量
+        public int dwRelRecordChanNum;     //报警触发的录象通道 数 实际支持的数量
+        public int[] byRelRecordChan = new int[MAX_CHANNUM_V30];//触发录像的通道号
+        public NET_DVR_SCHEDTIME[] struHolidayTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30]; //假日布防时间
+        public byte[] byRes2 = new byte[100];
+    }
+
+    public static class NET_VCA_INTRUSION extends HIKSDKStructure {
+        public NET_VCA_POLYGON struRegion;//区域范围
+        public short wDuration;            //行为事件触发时间阈值: 1-120秒,建议5秒,判断是有效报警的时间  在ATM系统中触发文件阈值为 1-1000秒
+        public byte bySensitivity;        //灵敏度参数,范围[1-100]
+        public byte byRate;               //占比:区域内所有未报警目标尺寸目标占区域面积的比重,归一化为-;
+        /*
+    检测目标,可支持多选,具体定义为:
+    0~所有目标(表示不锁定检测目标,所有目标都将进行检测)
+    0x01 ~ 人,
+    0x02 ~ 车,
+    0x04 ~ 其他
+    */
+        public byte byDetectionTarget;
+        public byte byPriority;//优先级,0~低,1~中,2~高
+        public byte[] byRes = new byte[2];             //保留
+    }
+
+
+    //快速移动参数
+    public static class NET_VCA_RUN extends HIKSDKStructure {
+        public NET_VCA_POLYGON struRegion;//区域范围
+        public float fRunDistance;        //人快速移动最大距离, 范围: [0.1, 1.00] 像素模式 实际模式(1,20)m/s
+        public byte bySensitivity;            //灵敏度参数,范围[1,5]
+        public byte byMode;     // 0 像素模式  1 实际模式
+        /*
+    检测目标,可支持多选,具体定义为:
+    0~所有目标(表示不锁定检测目标,所有目标都将进行检测)
+    0x01 ~ 人,
+    0x02 ~ 车,,
+    0x04 ~ 其他,
+    该字段支持多选,按位取值,例如3表示1+2.
+    */
+        public byte byDetectionTarget;
+        public byte byRes;
+    }
+
+
+    //奔跑检测
+    public static class NET_VCA_RUNNING extends HIKSDKStructure {
+        public NET_VCA_POLYGON struRegion;  //区域范围
+        public int dwSpeed;      //奔跑速度,范围[1,10]
+        public short wDuration;      // 触发报警时间阈值
+        public byte byRunMode;    //奔跑模式,0-保留,1:单人奔跑,2:多人奔跑
+        public byte byRes;
+    }
+
+    //倒地参数
+    public static class NET_VCA_FALL_DOWN extends HIKSDKStructure {
+        public NET_VCA_POLYGON struRegion;//区域范围
+        public short wDuration;      /* 触发事件阈值 1-60s*/
+        public short bySensitivity;       /* 灵敏度参数,范围[1,5] */
+        public short byHeightThreshold; //高度阈值,范围[0,250],默认90,单位:厘米
+        public byte[] byRes = new byte[4];
+    }
+
+    public static final int MAX_INTRUSIONREGION_NUM = 8; //最大区域数数
+
+    public static class NET_VCA_FIELDDETECION extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable; //使能,是否开启
+        public byte byEnableDualVca;// 启用支持智能后检索 0-不启用,1-启用
+        public byte byEnableHumanMisinfoFilter;// 启用人体去误报 0-不启用,1-启用
+        public byte byEnableVehicleMisinfoFilter;// 启用车辆去误报 0-不启用,1-启用
+        public NET_VCA_INTRUSION[] struIntrusion = new NET_VCA_INTRUSION[MAX_INTRUSIONREGION_NUM];//每个区域的参数设置
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmSched = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS]; //布防时间
+        public NET_DVR_HANDLEEXCEPTION_V40 struHandleException;  //异常处理方式
+        public int dwMaxRelRecordChanNum;  //报警触发的录象通道 数(只读)最大支持数量
+        public int dwRelRecordChanNum;     //报警触发的录象通道 数 实际支持的数量
+        public int[] byRelRecordChan = new int[MAX_CHANNUM_V30];//触发录像通道
+        public NET_DVR_SCHEDTIME[] struHolidayTime = new NET_DVR_SCHEDTIME[MAX_TIMESEGMENT_V30]; //假日布防时间
+        public byte[] byRes2 = new byte[100];
+    }
+
+    public static class NET_DVR_CHANNEL_GROUP extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;
+        public int dwGroup;
+        public byte byID;
+        public byte[] byRes1 = new byte[3];
+        public int dwPositionNo;
+        public byte[] byRes = new byte[56];
+    }
+
+    //线结构参数
+    public static class NET_VCA_LINE extends HIKSDKStructure {
+        public NET_VCA_POINT struStart;
+        public NET_VCA_POINT struEnd;
+    }
+
+    //点坐标参数
+    public static class NET_VCA_POINT extends HIKSDKStructure {
+        public float fX;
+        public float fY;
+
+
+    }
+
+    //进入/离开区域参数
+    public static class NET_VCA_AREA extends HIKSDKStructure {
+        public NET_VCA_POLYGON struRegion;
+        public byte[] byRes = new byte[8];
+    }
+
+    //多边形结构体
+    public static class NET_VCA_POLYGON extends HIKSDKStructure {
+        public int dwPointNum;
+        public NET_VCA_POINT[] struPos = new NET_VCA_POINT[VCA_MAX_POLYGON_POINT_NUM];
+    }
+
+    public static class NET_VCA_SIZE_FILTER extends HIKSDKStructure {
+        public byte byActive;            //是否激活尺寸过滤器 0-否 非0-是
+        public byte byMode;         //过滤器模式SIZE_FILTER_MODE
+        public byte[] byRes = new byte[2];        //保留,置0
+        public NET_VCA_RECT struMiniRect;    //最小目标框,全0表示不设置
+        public NET_VCA_RECT struMaxRect;      //最大目标框,全0表示不设置
+    }
+
+
+    //尺寸过滤策略
+    public static class NET_VCA_FILTER_STRATEGY extends HIKSDKStructure {
+        public byte byStrategy;      //尺寸过滤策略 0 - 不启用 1-高度和宽度过滤,2-面积过滤
+        public byte[] byRes = new byte[11];       //保留
+    }
+
+    //行为分析报警
+    public static class NET_VCA_RULE_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public int dwRelativeTime;
+        public int dwAbsTime;
+        public NET_VCA_RULE_INFO struRuleInfo;
+        public NET_VCA_TARGET_INFO struTargetInfo;
+        public NET_VCA_DEV_INFO struDevInfo;
+        public int dwPicDataLen;
+        public byte byPicType;
+        public byte byRelAlarmPicNum; //关联通道报警图片数量
+        public byte bySmart;//IDS设备返回0(默认值),Smart Functiom Return 1
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public int dwAlarmID;     //报警ID,用以标识通道间关联产生的组合报警,0表示无效
+        public short wDevInfoIvmsChannelEx;     //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
+        public byte byRelativeTimeFlag;      //dwRelativeTime字段是否有效  0-无效, 1-有效,dwRelativeTime表示UTC时间
+        public byte byAppendInfoUploadEnabled; //附加信息上传使能 0-不上传 1-上传
+        public Pointer pAppendInfo;     //指向附加信息NET_VCA_APPEND_INFO的指针,byAppendInfoUploadEnabled为1时或者byTimeDiffFlag为1时有效
+        public Pointer pImage;
+    }
+
+    public static class NET_DVR_SYSTEM_TIME extends HIKSDKStructure {
+        public short wYear;           //年
+        public short wMonth;          //月
+        public short wDay;            //日
+        public short wHour;           //时
+        public short wMinute;      //分
+        public short wSecond;      //秒
+        public short wMilliSec;    //毫秒
+        public byte[] byRes = new byte[2];
+    }
+
+    //设备支持AI开放平台接入,上传视频检测数据
+    public static class NET_AIOP_VIDEO_HEAD extends HIKSDKStructure {
+        public int dwSize;      //dwSize = sizeof(NET_AIOP_VIDEO_HEAD)
+        public int dwChannel;    //设备分析通道的通道号;
+        public NET_DVR_SYSTEM_TIME struTime = new NET_DVR_SYSTEM_TIME();    //时间
+        public byte[] szTaskID = new byte[64];     //视频任务ID,来自于视频任务派发
+        public int dwAIOPDataSize;   //对应AIOPDdata数据长度
+        public int dwPictureSize;    //对应分析图片长度
+        public byte[] szMPID = new byte[64];        //检测模型包ID,用于匹配AIOP的检测数据解析;可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息;
+        public Pointer pBufferAIOPData;  //AIOPDdata数据
+        public Pointer pBufferPicture;//对应分析图片数据
+        public byte byPictureMode;//图片数据传输模式 0-二进制,1-武汉云云存储,当byPictureMode为0时pBufferPicture为二进制数据,当byPictureMode为1时pBufferPicture为武汉云URL
+        public byte[] byRes2 = new byte[3];//保留字节
+        public int dwPresetIndex; //预置点序号
+        public byte[] byRes = new byte[176];
+    }
+
+    //设备支持AI开放平台接入,上传图片检测数据
+    public static class NET_AIOP_PICTURE_HEAD extends HIKSDKStructure {
+        public int dwSize;           //dwSize = sizeof(NET_AIOP_PICTURE_HEAD)
+        public NET_DVR_SYSTEM_TIME struTime = new NET_DVR_SYSTEM_TIME();    //时间
+        public byte[] szPID = new byte[64];        //透传下发的图片ID,来自于图片任务派发
+        public int dwAIOPDataSize;   //对应AIOPDdata数据长度
+        public byte byStatus;         //状态值:0-成功,1-图片大小错误
+        public byte[] byRes1 = new byte[3];
+        public byte[] szMPID = new byte[64]; //检测模型包ID,用于匹配AIOP的检测数据解析;
+        public Pointer pBufferAIOPData;//AIOPDdata数据
+        public int dwPresetIndex; //预置点序号
+        public byte[] byRes = new byte[180];
+    }
+
+
+    public static class NET_DVR_AI_PICTUR_UPLOAD extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] szTaskID = new byte[64];   //任务id,strlen.max = 64,业务平台统一维护管理
+        public byte[] szPID = new byte[64];   //图片id,strlen.max = 64,业务平台统一维护管理
+        public byte[] byRes = new byte[128];
+    }
+
+    // AI开放平台接入轮询视频检测报警结构体。
+    public static class NET_AIOP_POLLING_SNAP_HEAD extends HIKSDKStructure {
+        public int dwSize;            //dwSize = sizeof(NET_AIOP_POLLING_SNAP_HEAD)
+        public int dwChannel;      //设备分析通道的通道号(走SDK协议);
+        public NET_DVR_SYSTEM_TIME struTime = new NET_DVR_SYSTEM_TIME();    //时间
+        public byte[] szTaskID = new byte[64];    //轮询抓图任务ID,来自于轮询抓图任务派发
+        public int dwAIOPDataSize;    //对应AIOPDdata数据长度
+        public int dwPictureSize;    //对应分析图片长度
+        public byte[] szMPID = new byte[64];       //检测模型包ID,用于匹配AIOP的检测数据解析;
+        public Pointer pBufferAIOPData;//AIOPDdata数据
+        public Pointer pBufferPicture;//分析图片数据
+        public byte byPictureMode;//图片数据传输模式 0-二进制,1-武汉云云存储,当byPictureMode为0时pBufferPicture为二进制数据,当byPictureMode为1时pBufferPicture为武汉云URL
+        public byte[] byRes2 = new byte[3];//保留字节
+        public int dwPresetIndex; //预置点序号
+        public byte[] byRes = new byte[176];
+    }
+
+    // AI开放平台接入轮询视频检测报警结构体。
+    public static class NET_AIOP_POLLING_VIDEO_HEAD extends HIKSDKStructure {
+        public int dwSize;            //dwSize = sizeof(NET_AIOP_POLLING_VIDEO_HEAD)
+        public int dwChannel;      //设备分析通道的通道号(走SDK协议);
+        public NET_DVR_SYSTEM_TIME struTime;    //时间
+        public byte[] szTaskID = new byte[64];    //轮询抓图任务ID,来自于轮询抓图任务派发
+        public int dwAIOPDataSize;    //对应AIOPDdata数据长度
+        public int dwPictureSize;    //对应分析图片长度
+        public byte[] szMPID = new byte[64]; //检测模型包ID,用于匹配AIOP的检测数据解析;
+        public Pointer pBufferAIOPData;//AIOPDdata数据
+        public Pointer pBufferPicture;//对应分析图片数据
+        public byte byPictureMode;//图片数据传输模式 0-二进制,1-武汉云云存储,当byPictureMode为0时pBufferPicture为二进制数据,当byPictureMode为1时pBufferPicture为武汉云URL
+        public byte[] byRes2 = new byte[3];//保留字节
+        public int dwPresetIndex; //预置点序号
+        public byte[] byRes = new byte[176];
+    }
+
+    //规则触发参数
+    public static class NET_VCA_RULE_TRIGGER_PARAM extends HIKSDKStructure {
+        public byte byTriggerMode;   //规则的触发方式,0- 不启用,1- 轨迹点 2- 目标面积
+        public byte byTriggerPoint;  //触发点,触发方式为轨迹点时有效 0- 中,1-上,2-下
+        public byte[] byRes1 = new byte[2];       //保留
+        public float fTriggerArea;    //触发目标面积百分比 [0,100],触发方式为目标面积时有效
+        public byte[] byRes2 = new byte[4];       //保留
+    }
+
+    public static class NET_VCA_ONE_RULE_V42 extends HIKSDKStructure {
+        public byte byActive;       //是否激活规则, 0-否,非0-是
+        public byte byEventPriority;//事件优先级 0-低,1-中,2-高
+        public byte[] byRes1 = new byte[4];           //保留,设置为0字段
+        public short wEventType;        //行为事件类型,参考VCA_RULE_EVENT_TYPE_EX
+        public byte[] byRuleName = new byte[NAME_LEN/*32*/];        //规则名称
+        public NET_VCA_EVENT_UNION uEventParam;            //行为分析事件参数
+        public NET_VCA_SIZE_FILTER struSizeFilter;          //尺寸过滤器
+        public NET_DVR_SCHEDTIMEWEEK[] struAlarmTime = new NET_DVR_SCHEDTIMEWEEK[MAX_DAYS];//布防时间
+        public NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*处理方式*/
+        //异常处理方式中报警输出号与组号绑定,即组号为0时,表示关联的报警输出号范围为1-64,当组号为1时,表示关联的报警输出号范围为65-128, 且是组内紧凑排列,如果遇到0xffffffff表示本组 当前的及组内后续的报警出号无效
+        public int[] dwRelRecordChan = new int[MAX_CHANNUM_V30];    /* 报警触发的录象通道(四字节的通道号,初始值是 0xffffffff)*/
+        //关联的录像通道号与组号绑定,即组号为0时,表示关联的通道号范围为1-64,当组号为1时,表示关联的通道号范围为65-128, 且是组内紧凑排列,如果遇到0xffffffff表示本组 当前的及组内后续的关联通道号无效
+        public short wAlarmDelay; //智能报警延时,0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s
+        public byte[] byRes2 = new byte[2];           //保留
+        public NET_VCA_FILTER_STRATEGY struFilterStrategy;  //尺寸过滤策略
+        public NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //规则触发参数
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_PTZ_POSITION extends HIKSDKStructure {
+        // 是否启用场景,在设置场景行为规则的时候该字段无效,在设置球机本地配置场景位置信息时作为使能位
+        public byte byEnable;
+        public byte[] byRes1 = new byte[3];  //保留
+        public byte[] byPtzPositionName = new byte[NAME_LEN]; //场景位置名称
+        public NET_DVR_PTZPOS struPtzPos; //ptz 坐标
+        public byte[] byRes2 = new byte[40];
+    }
+
+    //行为分析配置结构体
+    public static class NET_VCA_RULECFG_V42 extends HIKSDKStructure {
+        public int dwSize;             //结构图大小
+        public byte byPicProType;            //报警时图片处理方式 0-不处理 1-上传
+        public byte byUpLastAlarm;         //是否先上传最近一次的报警,0-否,1-是
+        public byte byPicRecordEnable;   //是否启用图片存储, 0-不启用, 1-启用
+        public byte byRes1;
+        public NET_DVR_JPEGPARA struPicParam;         //图片规格结构
+        public NET_VCA_ONE_RULE_V42[] struRule = new NET_VCA_ONE_RULE_V42[16];       /* 规则数组*/
+        public short[] wRelSnapChan = new short[3]; //关联抓图通道,当主通道报警时,同时会上传关联通道的抓拍图片,0表示不关联,其他值为关联通道号
+        public byte byTrackEnable; //是否启用跟踪
+        public byte byRes2;
+        public NET_DVR_PTZ_POSITION struPTZPosition;  //场景位置信息
+        public short wTrackDuration; //跟踪持续时间,单位s
+        public short wIntervalTime; //单次报警间隔时间(秒)[1-7200](ˆ默认为600)
+        public short wHeightLimit;//目标检测高度下限(厘米)[0-250](默认为80cm),小于此高度的目标将不作为目标进行检测
+        public byte[] byRes = new byte[58];//保留
+    }
+
+    public static final int CID_CODE_LEN = 4;
+    public static final int DEV_SERIAL_LEN = 9;
+    public static final int ACCOUNTNUM_LEN = 6;
+    public static final int ACCOUNTNUM_LEN_32 = 32;
+
+    public static class NET_DVR_CID_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] sCIDCode = new byte[CID_CODE_LEN/*4*/];    //CID事件号
+        public byte[] sCIDDescribe = new byte[NAME_LEN/*32*/];    //CID事件名
+        public NET_DVR_TIME_EX struTriggerTime = new NET_DVR_TIME_EX();            //触发报警的时间点
+        public NET_DVR_TIME_EX struUploadTime = new NET_DVR_TIME_EX();                //上传报警的时间点
+        public byte[] sCenterAccount = new byte[ACCOUNTNUM_LEN/*6*/];    //中心帐号
+        public byte byReportType;                    //见定义NET_DVR_ALARMHOST_REPORT_TYPE
+        public byte byUserType;                        //用户类型,0-网络用户 1-键盘用户,2-手机用户,3-系统用户
+        public byte[] sUserName = new byte[NAME_LEN/*32*/];        //网络用户用户名
+        public short wKeyUserNo;                        //键盘用户号    0xFFFF表示无效
+        public byte byKeypadNo;                        //键盘号        0xFF表示无效
+        public byte bySubSysNo;                        //子系统号        0xFF表示无效
+        public short wDefenceNo;                        //防区号        0xFFFF表示无效
+        public byte byVideoChanNo;                    //视频通道号    0xFF表示无效
+        public byte byDiskNo;                        //硬盘号        0xFF表示无效
+        public short wModuleAddr;                    //模块地址        0xFFFF表示无效
+        public byte byCenterType;                    //0-无效, 1-中心账号(长度6),2-扩展的中心账号(长度9)
+        public byte byRes1;
+        public byte[] sCenterAccountV40 = new byte[ACCOUNTNUM_LEN_32/*32*/];    //中心账号V40,使用此字段时sCenterAccount无效
+        public byte[] byDevSerialNo = new byte[DEV_SERIAL_LEN];   /*产品序列号*/
+        public byte byRepeaterNo;    //中继器号,为0无效
+        public short wRemoteCtrllerUserNo;    //遥控器用户号,为0无效
+        public int dwIOTChannelNo;    //IOT通道号
+        public byte[] byRes2 = new byte[12];
+    }
+
+    public static class NET_DVR_SENSOR_ALARM extends HIKSDKStructure {
+        public int dwSize;                // 结构体大小
+        public int dwAbsTime;            // 绝对时标信息  OSD显示信息
+        public byte[] byName = new byte[NAME_LEN];     // sensor 名称
+        public byte bySensorChannel;    // 模拟量通道
+        public byte byType;             // 模拟量类型
+        public byte byAlarmType;        // 1-上4、2-上3、3-上2、4-上1、5-下1、6-下2、7-下3、8-下4 和当前模式有关
+        // 例如当为1000时,有上1下1,2,3报警四种报警
+        public byte byAlarmMode;        //报警模式,五种,-HHHH、-HHHL、-HHLL、HLLL、-LLLL, 作为平台报警程度判断功能,即:1111(上上上上),1110(上上上下),1100(上上下下),1000(上下下下),0000(下下下下)
+        public float fValue;                // 但前模拟量的值
+        public float fOriginalValue; //原始电流电压值,保留小数点后三位,具体值表示电流还是电压根据NET_DVR_SENSOR_INFO的bySensorStandard类型
+        public byte[] byRes2 = new byte[28];            // 保留字节
+    }
+
+    //开关量报警上传
+    public static class NET_DVR_SWITCH_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byName = new byte[NAME_LEN];     // switch 名称
+        public short wSwitchChannel;     // 开关量通道, 0-255
+        public byte byAlarmType;        // 报警类型 0--正常,1--短路,2--断路,3-异常
+        public byte[] byRes = new byte[41];            // 保留字节
+    }
+
+    public static class NET_DVR_ALARMHOST_EXCEPTION_ALARM extends HIKSDKStructure {
+        public int dwSize;             // 结构体大小
+        // 异常参数  1-设备防拆报警 2-设备防拆后后恢复正常 3-主电源掉电报警 4-主电源掉电后恢复正常 5-内部通信故障报警
+        // 6-内部通信故障后恢复正常  7-电话线断线 8-电话线断线恢复 9-自检失败报警  10-自检失败后恢复正常
+        // 11蓄电池欠压  12蓄电池电压恢复正常,13-蓄电池故障;14-MBUS模块掉线;15-MBUS模块掉线恢复;16-键盘掉线;
+        //17-键盘掉线恢复;18-设备被移动;19-设备被移动复位  20-485外设线路断报警  21-485外设线路断后恢复正常
+        //25-子板1插上,26-子板1拔出, 27-子板2插上,28-子板2拔出
+        public int dwExceptionType;
+        public byte[] byRes = new byte[36];          // 保留
+    }
+
+
+    public static class NET_DVR_ALARMHOST_POINT_VALUE extends HIKSDKStructure {
+        public byte byChanType;        //接入类型,1-本地模拟量通道,2-本地开关量通道,3-485通道,4-网络通道
+        public byte byPointType;    //点类型,1-遥测(模拟量),2-遥信(开关量)
+        public byte[] byRes1 = new byte[2];        //保留
+        public int dwChanNo;        //485通道号,0xffffffff表示无效,通道类型为1时:表示本地模拟量通道号,通道类型为2时表示本地开关量通道号,通道类型为3时表示485通道号。
+        public int dwSubChanNo;    //槽位号, 0xffffffff表示无效,通道类型为3时使用
+        public int dwVariableNo;    //变量编号,0xffffffff表示无效
+        public int dwPointNo;        //104点号,0xffffffff表示无效
+        public int iValue;            //监测点的值,表示低32位
+        public int iValueEx;          //监测点的值,表示高32位
+        public byte[] byRes = new byte[12];
+    }
+
+    public static class NET_DVR_ALARMHOST_DATA_UNION extends HIKSDKStructure {
+        public byte[] byLength = new byte[40];
+        public NET_DVR_ALARMHOST_POINT_VALUE struPointValue;    //监测点实时数据
+    }
+
+    public static class NET_DVR_ALARMHOST_DATA_UPLOAD extends HIKSDKStructure {
+        public int dwSize;
+        public byte byDataType;        //数据类型,1-监测点实时数据上传
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_ALARMHOST_DATA_UNION struAlarmData;
+        public byte[] byRes2 = new byte[32];
+    }
+
+    //车牌识别结果子结构
+    public static class NET_DVR_PLATE_INFO extends HIKSDKStructure {
+        public byte byPlateType;                    //车牌类型
+        public byte byColor;                        //车牌颜色
+        public byte byBright;                        //车牌亮度
+        public byte byLicenseLen;                    //车牌字符个数
+        public byte byEntireBelieve;                //整个车牌的置信度,-100
+        public byte byRegion;                       // 区域索引值 0-保留,1-欧洲(EU),2-俄语区域(ER),3-欧洲&俄罗斯(EU&CIS) ,4-中东(ME),0xff-所有
+        public byte byCountry;                      // 国家索引值,参照枚举COUNTRY_INDEX(不支持"COUNTRY_ALL = 0xff, //ALL  全部")
+        public byte byArea;                         //区域(省份),各国家内部区域枚举,阿联酋参照 EMI_AREA
+        public byte byPlateSize;                    //车牌尺寸,0~未知,1~long, 2~short(中东车牌使用)
+        public byte byAddInfoFlag;
+        public short wCRIndex;//国家/地区索引,索引值参考_CR_ INDEX_
+        public byte[] byRes = new byte[12];   //保留
+        public byte[] sPlateCategory = new byte[8];//车牌附加信息, 即中东车牌中车牌号码旁边的小字信息,(目前只有中东地区支持)
+        public int dwXmlLen;                        //XML报警信息长度
+        public Pointer pXmlBuf;                      // XML报警信息指针,报警类型为 COMM_ITS_PLATE_RESUL时有效,其XML对应到EventNotificationAlert XML Block
+        public NET_VCA_RECT struPlateRect = new NET_VCA_RECT();        //车牌位置
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN];        //车牌号码,注:中东车牌需求把小字也纳入车牌号码,小字和车牌号中间用空格分隔
+        public byte[] byBelieve = new byte[MAX_LICENSE_LEN];    //各个识别字符的置信度,如检测到车牌"浙A12345", 置信度为,20,30,40,50,60,70,则表示"浙"字正确的可能性只有%,"A"字的正确的可能性是%
+    }
+
+    public static class NET_DVR_VEHICLE_INFO extends HIKSDKStructure {
+        public int dwIndex;          //车辆序号
+        public byte byVehicleType;    //车辆类型 0 表示其它车型,1 表示小型车,2 表示大型车 ,3表示行人触发 ,4表示二轮车触发 5表示三轮车触发(3.5Ver)
+        public byte byColorDepth;        //车身颜色深浅
+        public byte byColor;          //车身颜色,参考VCR_CLR_CLASS
+        /*雷达异常状态:
+    0~雷达正常,
+    1~雷达故障
+    2~雷达一直发送某一个相同速度值
+    3~雷达送出数据为0
+    4~雷达送出数据过大或者过小
+    */
+        public byte byRadarState;
+        public short wSpeed;           //单位km/h
+        public short wLength;          //前一辆车的车身长度
+        /*违规类型,0-正常,1-低速,2-超速,3-逆行,4-闯红灯,5-压车道线,6-不按导向,7-路口滞留,
+                            8-机占非,9-违法变道,10-不按车道 11-违反禁令,12-路口停车,13-绿灯停车, 14-未礼让行人(违法代码1357),
+    15-违章停车,16-违章掉头,17-占用应急车道,18-禁右,19-禁左,20-压黄线,21-未系安全带,22-行人闯红灯,23-加塞,24-违法使用远光灯,
+    25-驾驶时拨打接听手持电话,26-左转不让直行,27-右转不让左转,28-掉头不让直行,29-大弯小转, 30-闯绿灯,31-未带头盔,
+    32-非机动车载人,33-非机动车占用机动车道,34-非机动车打伞棚, 35-黑烟车, 36-鸣笛*/
+        public byte byIllegalType;
+        public byte byVehicleLogoRecog; //参考枚举类型 VLR_VEHICLE_CLASS
+        public byte byVehicleSubLogoRecog; //车辆品牌子类型识别;参考VSB_VOLKSWAGEN_CLASS等子类型枚举。
+        public byte byVehicleModel; //车辆子品牌年款,0-未知,参考"车辆子品牌年款.xlsx"
+        public byte[] byCustomInfo = new byte[16];  //自定义信息
+        public short wVehicleLogoRecog;  //车辆主品牌,参考"车辆主品牌.xlsx" (该字段兼容byVehicleLogoRecog);
+        public byte byIsParking;//是否停车 0-无效,1-停车,2-未停车
+        public byte byRes;//保留字节
+        public int dwParkingTime; //停车时间,单位:s
+        public byte[] byRes3 = new byte[8];
+    }
+
+    //手动抓拍
+    public static class NET_DVR_MANUALSNAP extends HIKSDKStructure {
+        public byte byOSDEnable;//0-不关闭(默认),1-关闭
+        public byte byLaneNo;//车道号, 范围为1-6,默认为1(抓拍机内部测试使用)
+        public byte byChannel;//通道号
+        public byte[] byRes = new byte[21]; //保留
+    }
+
+    //交通抓拍结果信息
+    public static class NET_DVR_PLATE_RESULT extends HIKSDKStructure {
+        public int dwSize;
+        public byte byResultType;
+        public byte byChanIndex;
+        public short wAlarmRecordID;
+        public int dwRelativeTime;
+        public byte[] byAbsTime = new byte[32];
+        public int dwPicLen;
+        public int dwPicPlateLen;
+        public int dwVideoLen;
+        public byte byTrafficLight;
+        public byte byPicNum;
+        public byte byDriveChan;
+        public byte byVehicleType;
+        public int dwBinPicLen;
+        public int dwCarPicLen;
+        public int dwFarCarPicLen;
+        public Pointer pBuffer3;
+        public Pointer pBuffer4;
+        public Pointer pBuffer5;
+        public byte[] byRes3 = new byte[8];
+        public NET_DVR_PLATE_INFO struPlateInfo;
+        public NET_DVR_VEHICLE_INFO struVehicleInfo;
+        public Pointer pBuffer1;
+        public Pointer pBuffer2;
+    }
+
+    public static class NET_DVR_TIME_V30 extends HIKSDKStructure {
+        public short wYear;
+        public byte byMonth;
+        public byte byDay;
+        public byte byHour;
+        public byte byMinute;
+        public byte bySecond;
+        public byte byRes;
+        public short wMilliSec;
+        public byte[] byRes1 = new byte[2];
+
+
+    }
+
+    public static class NET_ITS_PICTURE_INFO extends HIKSDKStructure {
+        public int dwDataLen;
+        public byte byType;
+        public byte byDataType;
+        public byte byCloseUpType;
+        public byte byPicRecogMode;
+        public int dwRedLightTime;
+        public byte[] byAbsTime = new byte[32];
+        public NET_VCA_RECT struPlateRect = new NET_VCA_RECT();
+        public NET_VCA_RECT struPlateRecgRect = new NET_VCA_RECT();
+        public Pointer pBuffer;
+        public int dwUTCTime;//UTC时间
+        public byte byCompatibleAblity;//兼容能力字段,按位表示,值:0- 无效,1- 有效
+        public byte byTimeDiffFlag;      /*时差字段是否有效  0-时差无效, 1-时差有效 */
+        public byte cTimeDifferenceH;         /*与UTC的时差(小时),-12 ... +14, +表示东区,,byTimeDiffFlag为1时有效*/
+        public byte cTimeDifferenceM;        /*与UTC的时差(分钟),-30, 30, 45, +表示东区,byTimeDiffFlag为1时有效*/
+        public byte[] byRes2 = new byte[4];
+    }
+
+    public static class NET_ITS_PLATE_RESULT extends HIKSDKStructure {
+        public int dwSize;
+        public int dwMatchNo;
+        public byte byGroupNum;
+        public byte byPicNo;
+        public byte bySecondCam;
+        public byte byFeaturePicNo;
+        public byte byDriveChan;
+        public byte byVehicleType;
+        public byte byDetSceneID;
+        public byte byVehicleAttribute;
+        public short wIllegalType;
+        public byte[] byIllegalSubType = new byte[8];
+        public byte byPostPicNo;
+        public byte byChanIndex;
+        public short wSpeedLimit;
+        public byte byChanIndexEx; //byChanIndexEx*256+byChanIndex表示真实通道号。
+        public byte byRes2;
+        public NET_DVR_PLATE_INFO struPlateInfo = new NET_DVR_PLATE_INFO();
+        public NET_DVR_VEHICLE_INFO struVehicleInfo = new NET_DVR_VEHICLE_INFO();
+        public byte[] byMonitoringSiteID = new byte[48];
+        public byte[] byDeviceID = new byte[48];
+        public byte byDir;
+        public byte byDetectType;
+        public byte byRelaLaneDirectionType;
+        public byte byCarDirectionType;
+        public int dwCustomIllegalType;
+        public Pointer pIllegalInfoBuf;
+        public byte byIllegalFromatType;
+        public byte byPendant;
+        public byte byDataAnalysis;
+        public byte byYellowLabelCar;
+        public byte byDangerousVehicles;
+        public byte byPilotSafebelt;
+        public byte byCopilotSafebelt;
+        public byte byPilotSunVisor;
+        public byte byCopilotSunVisor;
+        public byte byPilotCall;
+        public byte byBarrierGateCtrlType;
+        public byte byAlarmDataType;
+        public NET_DVR_TIME_V30 struSnapFirstPicTime = new NET_DVR_TIME_V30();
+        public int dwIllegalTime;
+        public int dwPicNum;
+        public NET_ITS_PICTURE_INFO[] struPicInfo = new NET_ITS_PICTURE_INFO[6];
+    }
+
+    public int MAX_PARKNO_LEN = 16; //车位编号长度
+    public int MAX_ID_LEN = 48; //编号最大长度
+
+    //停车场数据上传
+    public static class NET_ITS_PARK_VEHICLE extends HIKSDKStructure {
+        public int dwSize; //结构长度
+        public byte byGroupNum; //图片组数量(单次轮询抓拍的图片数量)
+        public byte byPicNo; //连拍的图片组上传图片序号(接收到图片组数量后,表示接收完成
+        //接收超时不足图片组数量时,根据需要保留或删除)
+        public byte byLocationNum; //单张图片所管理的车位数
+        public byte byParkError; //停车异常,0-正常 1 异常
+        public byte[] byParkingNo = new byte[MAX_PARKNO_LEN];//车位编号
+        public byte byLocationStatus; //车位车辆状态,0-无车,1有车
+        public byte bylogicalLaneNum;//逻辑车位号,0-3,一个相机最大能管4个车位 (0代表最左边,3代表最右边)
+        public short wUpLoadType;//第零位表示:0~轮训上传、1~变化上传
+        public byte[] byRes1 = new byte[4]; //保留字节
+        public int dwChanIndex; //通道号数字通道
+        public NET_DVR_PLATE_INFO struPlateInfo;  //车牌信息结构
+        public NET_DVR_VEHICLE_INFO struVehicleInfo; //车辆信息
+        public byte[] byMonitoringSiteID = new byte[MAX_ID_LEN]; //监测点编号
+        public byte[] byDeviceID = new byte[MAX_ID_LEN]; //设备编号
+        public int dwPicNum; //图片数量(与picGroupNum不同,代表本条信息附带的图片数量,图片信息由struVehicleInfoEx定义
+        public NET_ITS_PICTURE_INFO[] struPicInfo = new NET_ITS_PICTURE_INFO[2];  //图片信息,单张回调,最多2张图,由序号区分
+        public byte[] byRes2 = new byte[256];
+    }
+
+    public static class NET_DVR_SNAPCFG extends HIKSDKStructure {
+
+        public int dwSize;
+        public byte byRelatedDriveWay;//触发IO关联的车道号
+        public byte bySnapTimes; //线圈抓拍次数,0-不抓拍,非0-连拍次数,目前最大5次
+        public short wSnapWaitTime;  //抓拍等待时间,单位ms,取值范围[0,60000]
+        public short[] wIntervalTime = new short[MAX_INTERVAL_NUM];//连拍间隔时间,ms
+        public int dwSnapVehicleNum; //抓拍车辆序号。
+        public NET_DVR_JPEGPARA struJpegPara;//抓拍图片参数
+        public byte[] byRes2 = new byte[16];
+    }
+
+    // 道闸控制
+    public static class NET_DVR_BARRIERGATE_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel; //通道号
+        public byte byLaneNo;  //道闸号(0-表示无效值(设备需要做有效值判断),1-道闸1)
+        /*
+    若老的平台不支持byUnlock字段,该字段将赋值为0,通过“0-关闭道闸,1-开启道闸,2-停止道闸”中的任何一种操作皆可进行解锁。
+    若新平台支持byUnlock字段,需byUnlock字段赋值为1,并结合4~解锁道闸来进行解锁。byUnlock字段赋值为1后,“0-关闭道闸,1-开启道闸,2-停止道闸”操作将不可用于解锁。
+    */
+        public byte byBarrierGateCtrl;//0-关闭道闸,1-开启道闸,2-停止道闸 3-锁定道闸,4~解锁道闸
+        public byte byEntranceNo;//出入口编号 [1,8]
+        public byte byUnlock;//启用解锁使能,0~为不启用,1~启用
+        public byte[] byRes = new byte[12];
+    }
+
+
+    public static class NET_DVR_AGEGROUP_PARAM extends HIKSDKStructure {
+        public int dwTeenage;//少年(人数)
+        public int dwYouth;//青年(人数)
+        public int dwMidLife;//中年(人数)
+        public int dwElderly;//老年(人数)
+        public int dwChild;//儿童(人数)
+        public int dwAdolescent;//青少年(人数)
+        public int dwPrime;//壮年(人数)
+        public int dwMidage;//中老年(人数)
+        public byte[] byRes = new byte[48];
+    }
+
+    public static class NET_DVR_SEXGROUP_PARAM extends HIKSDKStructure {
+        public int dwMale;//男(人数)
+        public int dwFemale;//女(人数)
+        public byte[] byRes = new byte[64];
+    }
+
+    public static class NET_DVR_PROGRAM_INFO extends HIKSDKStructure {
+        public int dwProgramNo; //节目编号
+        public byte[] sProgramName = new byte[NAME_LEN]; //节目名称
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_FACECAPTURE_STATISTICS_RESULT extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_TIME_EX struStartTime;/*间隔开始时间*/
+        public NET_DVR_TIME_EX struEndTime;/*间隔结束时间*/
+        public byte byStatType;//数据类型统计:Bit0-年龄段有效,Bit1-性别有效,Bit2-人数有效
+        public byte[] byRes = new byte[7];
+        public int dwPeopleNum;//人数统计
+        public NET_DVR_AGEGROUP_PARAM struAgeGroupParam;//年龄段人数统计
+        public NET_DVR_SEXGROUP_PARAM struSexGroupParam;//性别人数统计
+        public NET_DVR_PROGRAM_INFO struProgramInfo;        //节目信息
+        public byte[] byRes1 = new byte[76];
+    }
+
+    //获取交通数据条件结构
+    public static class NET_DVR_TRAFFIC_DATA_QUERY_COND extends HIKSDKStructure {
+        public int dwSize;
+        /*
+       Bit0-通道有效
+       Bit1-时间有效
+       Bit2-车牌号有效
+       Bit3-车牌类型有效
+       Bit4-车牌颜色有效
+       Bit5-车身颜色有效
+       Bit6-车辆类型有效
+       Bit7-车辆品牌有效
+       Bit8-车道号有效
+       Bit9-监测方向有效
+       Bit10-最低速度有效
+       Bit11-最高速度有效
+       Bit12-数据类型有效
+       Bit13-布控方式类型有效
+       Bit14-违法取证有效
+       Bit15-事件类型有效
+       Bit16-取证类型有效
+       */
+        public int dwQueryCond;//查询条件 0表示无效,1表示有效
+        public int dwChannel;//默认是1([1~32],bit0表示通道1,依次类推bit31表示通道32)
+        public NET_DVR_TIME_V30 struStartTime;//开始时间
+        public NET_DVR_TIME_V30 struEndTime;//结束时间
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];//(设备支持模糊查询, GB2312编码)
+        /*
+       Bit0-未知(其他)
+       Bit1-标准民用车与军车
+       Bit2-02式民用车牌
+       Bit3-武警车
+       Bit4-警车
+       Bit5-民用车双行尾牌
+       Bit6-使馆车牌
+       Bit7-农用车
+       Bit8-摩托车
+       */
+        public int dwPlateType;//车牌类型(支持按位表示,可以复选)
+        /*
+       Bit0-未知(其他)
+       Bit1-黄色
+       Bit2-白色
+       Bit3-黑色
+       Bit4-绿色
+       Bit5-蓝色
+       */
+        public int dwPlateColor;//车牌颜色(支持按位表示,可以复选)
+        /*
+       Bit0-未ª知(其他)
+       Bit1-白色
+       Bit2-银色
+       Bit3-灰色
+       Bit4-黑色
+       Bit5-红色
+       Bit6-深蓝色
+       Bit7-蓝色
+       Bit8-黄色
+       Bit9-绿色
+       Bit10-棕色
+       Bit11-粉色
+       Bit12-紫色
+       Bit13-深灰色
+       */
+        public int dwVehicleColor;//车身颜色(支持按位表示,可以复选)
+        /*
+       Bit0-未知(其他)
+       Bit1-客车
+       Bit2-大货车
+       Bit3-轿车
+       Bit4-面包车
+       Bit5-小货车
+       Bit6-行人
+       Bit7-二轮车
+       Bit8-三轮车
+       Bit9-SUV/MPV
+       Bit10-中型客车
+       */
+        public int dwVehicleType;//车辆类型(支持按位表示,可以复选)
+        /**
+         * Bit0-其他(保留)
+         * Bit1-低速
+         * Bit2-超速
+         * Bit3-逆行
+         * Bit4-闯红灯
+         * Bit5-压车道线
+         * Bit6-不按导向
+         * Bit7-路口滞留
+         * Bit8-机占非
+         * Bit9-违法变道
+         * Bit10-不按车道
+         * Bit11-违反禁令
+         * Bit12-路口停车
+         * Bit13-绿灯停车
+         * Bit14-未礼让行人
+         * Bit15-违章停车
+         * Bit16-违章掉头
+         * Bit17-占用应急车道
+         * Bit18-未系安全带
+         */
+        public int dwIllegalType;
+        /**
+         * Bit0-其他(保留)
+         * Bit1-拥堵
+         * Bit2-停车
+         * Bit3-逆行
+         * Bit4-行人
+         * Bit5-抛洒物
+         * Bit6-烟雾
+         * Bit7-压线
+         * Bit8-禁止名单
+         * Bit9-超速
+         * Bit10-变道
+         * Bit11-掉头
+         * Bit12-机占非
+         * Bit13-加塞
+         */
+        public int dwEventType;
+        /**
+         * Bit0-其他(保留)
+         * Bit1-城市公路违法停车
+         * Bit2-高速公路违法停车
+         * Bit3-压线
+         * Bit4-逆行
+         * Bit5-违法变道
+         * Bit6-机占非
+         */
+        public int dwForensiceType;
+        public short wVehicleLogoRecog;  //车辆主品牌,参考"车辆主品牌.xlsx" (仅单选)
+        public byte byLaneNo;//车道号(0~255,0号车道 表示 车道号未知)
+        public byte byDirection;//监测方向,1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南
+        public short wMinSpeed;//最低速度(0~999)单位km/h
+        public short wMaxSpeed;//最高速度(0~999)单位km/h
+        public byte byDataType;//数据类型 0-卡口数据,1-违法数据,2-交通事件,3-取证数据 (仅单选)
+        public byte byExecuteCtrl;//布控 0-允许名单,1-禁止名单,0xff-其他
+        public byte[] byRes = new byte[254];
+    }
+
+    public static final int MAX_TRAFFIC_PICTURE_NUM = 8; //交通图片数量
+
+    //交通数据结构体
+    public static class NET_DVR_TRAFFIC_DATA_QUERY_RESULT extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;//默认是1([1~32])
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN/*16*/];
+        /*
+    Bit0-未知(其他)
+    Bit1-标准民用车与军车
+    Bit2-02式民用车牌
+    Bit3-武警车
+    Bit4-警车
+    Bit5-民用车双行尾牌
+    Bit6-使馆车牌
+    Bit7-农用车
+    Bit8-摩托车
+    */
+        public int dwPlateType;//车牌类型
+        /*
+    Bit0-未知(其他)
+    Bit1-黄色
+    Bit2-白色
+    Bit3-黑色
+    Bit4-绿色
+    Bit5-蓝色
+    */
+        public int dwPlateColor;//车牌颜色
+        /*
+    Bit0-未知(其他)
+    Bit1-白色
+    Bit2-银色
+    Bit3-灰色
+    Bit4-黑色
+    Bit5-红色
+    Bit6-深蓝色
+    Bit7-蓝色
+    Bit8-黄色
+    Bit9-绿色
+    Bit10-棕色
+    Bit11-粉色
+    Bit12-紫色
+    Bit13-深灰色
+    */
+        public int dwVehicleColor;//车身颜色
+        /*
+    Bit0-未知(其他)
+    Bit1-客车
+    Bit2-大货车
+    Bit3-轿车
+    Bit4-面包车
+    Bit5-小货车
+    Bit6-行人
+    Bit7-二轮车
+    Bit8-三轮车
+    Bit9-SUV/MPV
+    Bit10-中型客车
+    Bit11-机动车
+    Bit12-非机动车
+    Bit13-小型轿车
+    Bit14-微型轿车
+    Bit15-皮卡车
+    Bit16-集装箱卡车
+    Bit17-微卡,栏板卡
+    Bit18-渣土车
+    Bit19-吊车,工程车
+    Bit20-油罐车
+    Bit21-混凝土搅拌车
+    Bit22-平板拖车
+    Bit23-两厢轿车
+    Bit24-三厢轿车
+    Bit25-轿跑
+    Bit26-小型客车
+    */
+        public int dwVehicleType;//车辆类型
+        /**
+         * Bit0-其他(保留)
+         * Bit1-低速
+         * Bit2-超速
+         * Bit3-逆行
+         * Bit4-闯红灯
+         * Bit5-压车道线
+         * Bit6-不按导向
+         * Bit7-路口滞留
+         * Bit8-机占非
+         * Bit9-违法变道
+         * Bit10-不按车道
+         * Bit11-违反禁令
+         * Bit12-路口停车
+         * Bit13-绿灯停车
+         * Bit14-未礼让行人
+         * Bit15-违章停车
+         * Bit16-违章掉头
+         * Bit17-占用应急车道
+         * Bit18-未系安全带
+         */
+        public int dwIllegalType;
+        /**
+         * Bit0-其他(保留)
+         * Bit1-拥堵
+         * Bit2-停车
+         * Bit3-逆行
+         * Bit4-行人
+         * Bit5-抛洒物
+         * Bit6-烟雾
+         * Bit7-压线
+         * Bit8-禁止名单
+         * Bit9-超速
+         * Bit10-变道
+         * Bit11-掉头
+         * Bit12-机占非
+         * Bit13-加塞
+         */
+        public int dwEventType;
+        /**
+         * Bit0-其他(保留)
+         * Bit1-城市公路违法停车
+         * Bit2-高速公路违法停车
+         * Bit3-压线
+         * Bit4-逆行
+         * Bit5-违法变道
+         * Bit6-机占非
+         */
+        public int dwForensiceType;
+        public short wVehicleLogoRecog;  //车辆主品牌,参考"车辆主品牌.xlsx"
+        public byte byLaneNo;//车道号(0~255,0号车道 表示 车道号未知)
+        public byte byDirection;//监测方向,1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南
+        public short wSpeed;//速度(0~999)单位km/h
+        public byte byDataType;//数据类型: 0-卡口 1-违法 2-事件 3-取证
+        public byte[] byRes = new byte[253];
+        public NET_DVR_TRAFFIC_PICTURE_PARAM[] struTrafficPic = new NET_DVR_TRAFFIC_PICTURE_PARAM[MAX_TRAFFIC_PICTURE_NUM/*8*/];
+    }
+
+    //交通图片参数子结构
+    public static final int PICTURE_NAME_LEN = 64;
+
+    public static class NET_DVR_TRAFFIC_PICTURE_PARAM extends HIKSDKStructure {
+        public NET_DVR_TIME_V30 struRelativeTime = new NET_DVR_TIME_V30(); //抓拍相对时标
+        public NET_DVR_TIME_V30 struAbsTime = new NET_DVR_TIME_V30();  //抓拍绝对时标
+        public byte[] szPicName = new byte[PICTURE_NAME_LEN/*64*/];
+        public byte byPicType;//图片类型 0-车牌图,1-抓拍原图,2-合成图,3-特写图
+        public byte[] byRes = new byte[63];
+    }
+
+    public static class NET_DVR_VEHICLE_CONTROL_COND extends HIKSDKStructure {
+        public int dwChannel;
+        public int dwOperateType;
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN];
+        public byte[] sCardNo = new byte[48];
+        public byte byListType;
+        public byte[] byRes1 = new byte[3];
+        public int dwDataIndex;
+        public byte[] byRes = new byte[116];
+    }
+
+    public static class NET_DVR_VEHICLE_CONTROL_LIST_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;
+        public int dwDataIndex;
+        public byte[] sLicense = new byte[16];
+        public byte byListType;
+        public byte byPlateType;
+        public byte byPlateColor;
+        public byte[] byRes = new byte[21];
+        public byte[] sCardNo = new byte[48];
+        public NET_DVR_TIME_V30 struStartTime = new NET_DVR_TIME_V30();
+        public NET_DVR_TIME_V30 struStopTime = new NET_DVR_TIME_V30();
+        public byte[] sOperateIndex = new byte[32];
+        public byte[] byRes1 = new byte[224];
+    }
+
+    //车辆报警
+    public static class NET_DVR_VEHICLE_CONTROL_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public byte byListType;   //名单属性:0-允许名单,1-禁止名单,2-临时名单
+        public byte byPlateType;  //车牌类型
+        public byte byPlateColor;    //车牌颜色
+        public byte byRes1;
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN];//车牌号码
+        public byte[] sCardNo = new byte[MAX_CARDNO_LEN];  // 卡号
+        public NET_DVR_TIME_V30 struAlarmTime = new NET_DVR_TIME_V30(); //报警时间
+        public int dwChannel;          //设备通道号,如果直连的是IPC,则为ipc通道号;如果连的DVR\nvr,则为DVR\NVR的通道号
+        public int dwPicDataLen;   //图片数据大小,0表示无图片,不为0是表示后面带图片数据
+        public byte byPicType;    //图片类型,0-JPEG
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public byte[] byRes3 = new byte[2];
+        public Pointer pPicData;
+        public byte[] byRes2 = new byte[48];
+    }
+
+    public int MAX_LED_INFO_LEN = 512;
+    public int MAX_VOICE_INFO_LEN = 128;
+
+    //LED屏幕显示参数
+    public static class NET_DVR_LEDDISPLAY_CFG extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public byte[] sDisplayInfo = new byte[MAX_LED_INFO_LEN/*512*/]; // LED显示内容
+        public byte byDisplayMode;//显示方式:0~左移,1~右移,2~立即显示
+        public byte bySpeedType;//速度类型:0~快,1~中,2~慢
+        public byte byShowPlateEnable;//显示车牌使能,0~关闭,1~启用
+        public byte byRes1;
+        public int dwShowTime;//显示时长,1~60秒
+        public byte[] byRes = new byte[128];
+    }
+
+    //语音播报控制参数
+    public static class NET_DVR_VOICEBROADCAST_CFG extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public byte[] sInfo = new byte[MAX_VOICE_INFO_LEN/*128*/]; //语音播报内容
+        public byte byBroadcastNum;// 语音播报次数, 1~10次
+        public byte byIntervalTime;// 语音播报间隔时间,1~5s
+        public byte[] byRes = new byte[126];
+    }
+
+    //缴费金额信息
+    public static class NET_DVR_CHARGEACCOUNT_CFG extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public float fAccount;//实际收费金额
+        public byte[] byRes = new byte[128];
+    }
+
+    public static final int DOOR_NAME_LEN = 32;        //门名称
+    public static final int STRESS_PASSWORD_LEN = 8;   //胁迫密码长度
+    public static final int SUPER_PASSWORD_LEN = 8;    //胁迫密码长度
+    public static final int UNLOCK_PASSWORD_LEN = 8;   // 解除密码长度
+
+    public static class NET_DVR_DOOR_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byDoorName = new byte[DOOR_NAME_LEN]; //门名称
+        public byte byMagneticType; //门磁类型,0-常闭,1-常开
+        public byte byOpenButtonType; //开门按钮类型,0-常闭,1-常开
+        public byte byOpenDuration; //开门持续时间,1-255s(楼层继电器动作时间)
+        public byte byDisabledOpenDuration; //残障人士卡开门持续时间,1-255s
+        public byte byMagneticAlarmTimeout; //门磁检测超时报警时间,0-255s,0表示不报警
+        public byte byEnableDoorLock; //是否启用闭门回锁,0-否,1-是
+        public byte byEnableLeaderCard; //是否启用首卡常开功能,0-否,1-是
+        public byte byLeaderCardMode; //首卡模式,0-不启用首卡功能,1-首卡常开模式,2-首卡授权模式(使用了此字段,则byEnableLeaderCard无效)
+        public int dwLeaderCardOpenDuration; //首卡常开持续时间,1-1440min
+        public byte[] byStressPassword = new byte[STRESS_PASSWORD_LEN]; //胁迫密码
+        public byte[] bySuperPassword = new byte[SUPER_PASSWORD_LEN]; //超级密码
+        public byte[] byUnlockPassword = new byte[UNLOCK_PASSWORD_LEN];         //解除码NET_DVR_LOCAL_CONTROLLER_STATUS
+        public byte byUseLocalController; //只读,是否连接在就地控制器上,0-否,1-是
+        public byte byRes1;
+        public short wLocalControllerID; //只读,就地控制器序号,1-64,0代表未注册
+        public short wLocalControllerDoorNumber; //只读,就地控制器的门编号,1-4,0代表未注册
+        public short wLocalControllerStatus; //只读,就地控制器在线状态:0-离线,1-网络在线,2-环路1上的RS485串口1,3-环路1上的RS485串口2,4-环路2上的RS485串口1,5-环路2上的RS485串口2,6-环路3上的RS485串口1,7-环路3上的RS485串口2,8-环路4上的RS485串口1,9-环路4上的RS485串口2(只读)
+        public byte byLockInputCheck; //是否启用门锁输入检测(1字节,0不启用,1启用,默认不启用)
+        public byte byLockInputType; //门锁输入类型(1字节,0常闭,1常开,默认常闭)
+        public byte byDoorTerminalMode; //门相关端子工作模式(1字节,0防剪防短,1普通,默认防剪防短)
+        public byte byOpenButton; //是否启用开门按钮(1字节,0是,1否,默认是)
+        public byte byLadderControlDelayTime; //梯控访客延迟时间,1-255min
+        public byte[] byRes2 = new byte[43];
+    }
+
+    public static class NET_DVR_DOOR_STATUS_PLAN extends HIKSDKStructure {
+        public int dwSize;
+        public int dwTemplateNo; //计划模板编号,为0表示取消关联,恢复默认状态(普通状态)
+        public byte[] byRes = new byte[64];
+    }
+
+
+    public static class NET_DVR_EVENT_CARD_LINKAGE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwEventID; //事件ID
+        public short wLocalControllerID; //就地控制器序号[1,64]
+        public byte[] byRes = new byte[106];
+    }
+
+    public static final int MAX_ALARMHOST_ALARMIN_NUM = 512;//网络报警主机最大报警输入口数
+    public static final int MAX_ALARMHOST_ALARMOUT_NUM = 512;//网络报警主机最大报警输出口数
+
+    public static class NET_DVR_EVENT_CARD_LINKAGE_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;    //结构体大小
+        public byte byProMode;                          //联动方式,0-事件,1-卡号, 2-MAC地址
+        public byte[] byRes1 = new byte[3];
+        public int dwEventSourceID;                    //事件源ID,当主类型为设备事件时无效, 当主类型是门事件时为门编号;当主类型为读卡器事件时,为读卡器ID;当为报警输入事件时为防区报警输入ID或事件报警输入ID。0xffffffff表示联动全部
+        public NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo = new NET_DVR_EVETN_CARD_LINKAGE_UNION();  //联动方式参数
+        public byte[] byAlarmout = new byte[MAX_ALARMHOST_ALARMOUT_NUM];            //关联的报警输出号,按位表示,为0表示不关联,为1表示关联
+        public byte[] byRes2 = new byte[32];                         //保留
+        public byte[] byOpenDoor = new byte[MAX_DOOR_NUM_256];     //按位表示,是否联动开门,0-不联动,1-联动
+        public byte[] byCloseDoor = new byte[MAX_DOOR_NUM_256];    //按位表示,是否联动关门,0-不联动,1-联动
+        public byte[] byNormalOpen = new byte[MAX_DOOR_NUM_256];   //按位表示,是否联动常开,0-不联动,1-联动
+        public byte[] byNormalClose = new byte[MAX_DOOR_NUM_256];  //按位表示,是否联动常关,0-不联动,1-联动
+        public byte byMainDevBuzzer;                    //主机蜂鸣器   0-不联动,1-联动输出
+        public byte byCapturePic;                           //是否联动抓拍,0-不联动抓拍,1-联动抓拍
+        public byte byRecordVideo;                          //是否联动录像,0-不联动录像,1-联动录像
+        public byte[] byRes3 = new byte[29];                         //保留
+        public byte[] byReaderBuzzer = new byte[MAX_CARD_READER_NUM_512]; //联动读卡器蜂鸣器,按位表示,0-不联动,1-联动
+        public byte[] byAlarmOutClose = new byte[MAX_ALARMHOST_ALARMOUT_NUM];            //关联报警输出关闭,按字节表示,为0表示不关联,为1表示关联
+        public byte[] byAlarmInSetup = new byte[MAX_ALARMHOST_ALARMIN_NUM];  //关联防区布防,按字节表示,为0表示不关联,为1表示关联
+        public byte[] byAlarmInClose = new byte[MAX_ALARMHOST_ALARMIN_NUM];  //关联防区撤防,按字节表示,为0表示不关联,为1表示关联
+        public byte[] byRes = new byte[500];                           //保留
+    }
+
+    public static class NET_DVR_EVENT_LINKAGE_INFO extends HIKSDKStructure {
+        public short wMainEventType;                     //事件主类型,0-设备事件,1-报警输入事件,2-门事件,3-读卡器事件
+        public short wSubEventType;                      //事件次类型
+        public byte[] byRes = new byte[28];
+    }
+
+    public static class NET_DVR_EVETN_CARD_LINKAGE_UNION extends Union {
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];          //卡号
+        public NET_DVR_EVENT_LINKAGE_INFO struEventLinkage;                   //事件联动时参数
+        public byte[] byMACAddr = new byte[MACADDR_LEN];          //物理MAC地址
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+    }
+
+    //卡参数配置条件
+    public static class NET_DVR_CARD_CFG_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwCardNum;
+        public byte byCheckCardNo;
+        public byte[] ibyRes = new byte[31];
+    }
+
+    //获取卡参数的发送数据
+    public static class NET_DVR_CARD_CFG_SEND_DATA extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[32];
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class CARDRIGHTPLAN extends HIKSDKStructure {
+        public byte[] byRightPlan = new byte[4];
+    }
+
+    //卡参数
+    public static class NET_DVR_CARD_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwModifyParamType;
+        public byte[] byCardNo = new byte[32];
+        public byte byCardValid;
+        public byte byCardType;
+        public byte byLeaderCard;
+        public byte byRes1;
+        public int dwDoorRight;
+        public NET_DVR_VALID_PERIOD_CFG struValid;
+        public int dwBelongGroup;
+        public byte[] byCardPassword = new byte[8];
+        public CARDRIGHTPLAN[] byCardRightPlan = new CARDRIGHTPLAN[32];
+        public int dwMaxSwipeTime;
+        public int dwSwipeTime;
+        public short wRoomNumber;
+        public short wFloorNumber;
+        public byte[] byRes2 = new byte[20];
+    }
+
+    public int ACS_CARD_NO_LEN = 32;  //门禁卡号长度
+    public int MAX_GROUP_NUM_128 = 128; //最大群组数
+    public int MAX_DOOR_NUM_256 = 256; //最大门数
+    public int CARD_PASSWORD_LEN = 8;   //卡密码长度
+    public int MAX_CARD_READER_NUM = 64;  //最大读卡器数
+    public int MAX_DOOR_CODE_LEN = 8; //房间代码长度
+    public int MAX_LOCK_CODE_LEN = 8; //锁代码长度
+    public int MAX_CARD_RIGHT_PLAN_NUM = 4; //卡权限最大计划个数
+    public int MAX_CASE_SENSOR_NUM = 8;  //最大case sensor触发器数
+
+    public static class CARDRIGHTPLAN_WORD extends HIKSDKStructure {
+        public short[] wRightPlan = new short[MAX_CARD_RIGHT_PLAN_NUM];
+    }
+
+    public static class NET_DVR_CARD_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public int dwModifyParamType;//需要修改的卡参数,设置卡参数时有效,按位表示,每位代表一种参数,1为需要修改,0为不修改
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //卡号
+        public byte byCardValid; //卡是否有效,0-无效,1-有效(用于删除卡,设置时置为0进行删除,获取时此字段始终为1)
+        public byte byCardType; //卡类型,1-普通卡,2-残障人士卡,3-禁止名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,8-解除卡,9-员工卡,10-应急卡,11-应急管理卡,默认普通卡
+        public byte byLeaderCard; //是否为首卡,1-是,0-否
+        public byte byRes1;
+        public byte[] byDoorRight = new byte[MAX_DOOR_NUM_256]; //门权限(楼层权限),按位表示,1为有权限,0为无权限,从低位到高位表示对门1-N是否有权限
+        public NET_DVR_VALID_PERIOD_CFG struValid; //有效期参数
+        public byte[] byBelongGroup = new byte[MAX_GROUP_NUM_128]; //所属群组,按字节表示,1-属于,0-不属于
+        public byte[] byCardPassword = new byte[CARD_PASSWORD_LEN]; //卡密码
+        public CARDRIGHTPLAN_WORD[] wCardRightPlan = new CARDRIGHTPLAN_WORD[MAX_DOOR_NUM_256]; //卡权限计划,取值为计划模板编号,同个门不同计划模板采用权限或的方式处理
+        public int dwMaxSwipeTime; //最大刷卡次数,0为无次数限制(开锁次数)
+        public int dwSwipeTime; //已刷卡次数
+        public short wRoomNumber;  //房间号
+        public short wFloorNumber;   //层号
+        public int dwEmployeeNo;   //工号
+        public byte[] byName = new byte[NAME_LEN];   //姓名
+        public short wDepartmentNo;   //部门编号
+        public short wSchedulePlanNo;   //排班计划编号
+        public byte bySchedulePlanType;  //排班计划类型:0-无意义、1-个人、2-部门
+        public byte byRightType;  //下发权限类型:0-普通发卡权限、1-二维码权限、2-蓝牙权限(可视对讲设备二维码权限配置项:房间号、卡号(虚拟卡号)、最大刷卡次数(开锁次数)、有效期参数;蓝牙权限:卡号(萤石APP账号)、其他参数配置与普通发卡权限一致)
+        public byte[] byRes2 = new byte[2];
+        public int dwLockID;  //锁ID
+        public byte[] byLockCode = new byte[MAX_LOCK_CODE_LEN];    //锁代码
+        public byte[] byRoomCode = new byte[MAX_DOOR_CODE_LEN];  //房间代码
+        public int dwCardRight;      //卡权限
+        public int dwPlanTemplate;   //计划模板(每天)各时间段是否启用,按位表示,0--不启用,1-启用
+        public int dwCardUserId;    //持卡人ID
+        public byte byCardModelType;  //0-空,1- MIFARE S50,2- MIFARE S70,3- FM1208 CPU卡,4- FM1216 CPU卡,5-国密CPU卡,6-身份证,7- NFC
+        public byte[] byRes3 = new byte[83];
+    }
+
+    //有效期参数结构体
+    public static class NET_DVR_VALID_PERIOD_CFG extends HIKSDKStructure {
+        public byte byEnable;
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_TIME_EX struBeginTime;
+        public NET_DVR_TIME_EX struEndTime;
+        public byte byTimeType; //时间类型
+        public byte[] byRes2 = new byte[31];
+    }
+
+    //扩展结构体信息
+    public static class NET_DVR_ID_CARD_INFO_EXTEND extends HIKSDKStructure {
+        public byte byRemoteCheck; //是否需要远程核验(0-无效,1-不需要(默认),2-需要)
+        public byte byThermometryUnit; //测温单位(0-摄氏度(默认),1-华氏度,2-开尔文)
+        public byte byIsAbnomalTemperature; //人脸抓拍测温是否温度异常:1-是,0-否
+        public byte byRes2;
+        public float fCurrTemperature; //人脸温度(精确到小数点后一位)
+        public NET_VCA_POINT struRegionCoordinates = new NET_VCA_POINT(); //人脸温度坐标
+        public int dwQRCodeInfoLen; //二维码信息长度,不为0是表示后面带数据
+        public int dwVisibleLightDataLen; //热成像相机可见光图片长度,不为0是表示后面带数据
+        public int dwThermalDataLen; //热成像图片长度,不为0是表示后面带数据
+        public Pointer pQRCodeInfo; //二维码信息指针
+        public Pointer pVisibleLightData; //热成像相机可见光图片指针
+        public Pointer pThermalData; //热成像图片指针
+        public byte[] byRes = new byte[1024];
+    }
+
+    //身份证信息报警
+    public static class NET_DVR_ID_CARD_INFO_ALARM extends HIKSDKStructure {
+        public int dwSize;        //结构长度
+        public NET_DVR_ID_CARD_INFO struIDCardCfg = new NET_DVR_ID_CARD_INFO();//身份证信息
+        public int dwMajor; //报警主类型,参考宏定义
+        public int dwMinor; //报警次类型,参考宏定义
+        public NET_DVR_TIME_V30 struSwipeTime = new NET_DVR_TIME_V30(); //时间
+        public byte[] byNetUser = new byte[MAX_NAMELEN];//网络操作的用户名
+        public NET_DVR_IPADDR struRemoteHostAddr = new NET_DVR_IPADDR();//远程主机地址
+        public int dwCardReaderNo; //读卡器编号,为0无效
+        public int dwDoorNo; //门编号,为0无效
+        public int dwPicDataLen;   //图片数据大小,不为0是表示后面带数据
+        public Pointer pPicData;
+        public byte byCardType; //卡类型,1-普通卡,2-残障人士卡,3-禁止名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,8-解除卡,为0无效
+        public byte byDeviceNo;                             // 设备编号,为0时无效(有效范围1-255)
+        public byte byMask; //是否带口罩:0-保留,1-未知,2-不戴口罩,3-戴口罩
+        public byte byCurrentEvent; //是否为实时事件:0-无效,1-是(实时事件),2-否(离线事件)
+        public int dwFingerPrintDataLen;                  // 指纹数据大小,不为0是表示后面带数据
+        public Pointer pFingerPrintData;
+        public int dwCapturePicDataLen;                   // 抓拍图片数据大小,不为0是表示后面带数据
+        public Pointer pCapturePicData;
+        public int dwCertificatePicDataLen;   //证件抓拍图片数据大小,不为0是表示后面带数据
+        public Pointer pCertificatePicData;
+        public byte byCardReaderKind; //读卡器属于哪一类,0-无效,1-IC读卡器,2-身份证读卡器,3-二维码读卡器,4-指纹头
+        public byte[] byRes3 = new byte[2];
+        public byte byIDCardInfoExtend;    //pIDCardInfoExtend是否有效:0-无效,1-有效
+        public Pointer pIDCardInfoExtend;    //byIDCardInfoExtend为1时,表示指向一个NET_DVR_ID_CARD_INFO_EXTEND结构体
+        public int dwSerialNo; //事件流水号,为0无效
+        public byte[] byRes = new byte[168];
+    }
+
+    public static final int CARD_READER_DESCRIPTION = 32;            //读卡器描述
+
+    public static class NET_DVR_CARD_READER_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable; //是否使能,1-使能,0-不使能
+        public byte byCardReaderType; //读卡器类型,1-DS-K110XM/MK/C/CK,2-DS-K192AM/AMP,3-DS-K192BM/BMP,4-DS-K182AM/AMP,5-DS-K182BM/BMP,6-DS-K182AMF/ACF,7-韦根或485不在线,8- DS-K1101M/MK,9- DS-K1101C/CK,10- DS-K1102M/MK/M-A,11- DS-K1102C/CK,12- DS-K1103M/MK,13- DS-K1103C/CK,14- DS-K1104M/MK,15- DS-K1104C/CK,16- DS-K1102S/SK/S-A,17- DS-K1102G/GK,18- DS-K1100S-B,19- DS-K1102EM/EMK,20- DS-K1102E/EK,21- DS-K1200EF,22- DS-K1200MF,23- DS-K1200CF,24- DS-K1300EF,25- DS-K1300MF,26- DS-K1300CF,27- DS-K1105E,28- DS-K1105M,29- DS-K1105C,30- DS-K182AMF,31- DS-K196AMF,32-DS-K194AMP,33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C,35-DS-K1T105E/E-C/M/M-C/C/C-C,36-DS-K1T803F/F-M/F-S/F-E,37-DS-K1A801F/F-M/F-S/F-E,38-DS-K1107M/MK,39-DS-K1107E/EK,40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H
+        public byte byOkLedPolarity; //OK LED极性,0-阴极,1-阳极
+        public byte byErrorLedPolarity; //Error LED极性,0-阴极,1-阳极
+        public byte byBuzzerPolarity; //蜂鸣器极性,0-阴极,1-阳极
+        public byte bySwipeInterval; //重复刷卡间隔时间,单位:秒
+        public byte byPressTimeout;  //按键超时时间,单位:秒
+        public byte byEnableFailAlarm; //是否启用读卡失败超次报警,0-不启用,1-启用
+        public byte byMaxReadCardFailNum; //最大读卡失败次数
+        public byte byEnableTamperCheck;  //是否支持防拆检测,0-disable ,1-enable
+        public byte byOfflineCheckTime;  //掉线检测时间 单位秒
+        public byte byFingerPrintCheckLevel; //指纹识别等级,1-1/10误认率,2-1/100误认率,3-1/1000误认率,4-1/10000误认率,5-1/100000误认率,6-1/1000000误认率,7-1/10000000误认率,8-1/100000000误认率,9-3/100误认率,10-3/1000误认率,11-3/10000误认率,12-3/100000误认率,13-3/1000000误认率,14-3/10000000误认率,15-3/100000000误认率,16-Automatic Normal,17-Automatic Secure,18-Automatic More Secure(目前门禁不支持)
+        public byte byUseLocalController; //只读,是否连接在就地控制器上,0-否,1-是
+        public byte byRes1;
+        public short wLocalControllerID; //只读,就地控制器序号, byUseLocalController=1时有效,1-64,0代表未注册
+        public short wLocalControllerReaderID; //只读,就地控制器的读卡器ID,byUseLocalController=1时有效,0代表未注册
+        public short wCardReaderChannel; //只读,读卡器通信通道号,byUseLocalController=1时有效,0韦根或离线,1-RS485A,2-RS485B
+        public byte byFingerPrintImageQuality; //指纹图像质量,0-无效,1-低质量(V1),2-中等质量(V1),3-高质量(V1),4-最高质量(V1),5-低质量(V2),6-中等质量(V2),7-高质量(V2),8-最高质量(V2)
+        public byte byFingerPrintContrastTimeOut; //指纹对比超时时间,0-无效,范围1-20代表:1s-20s,0xff-无限大
+        public byte byFingerPrintRecogizeInterval; //指纹连续识别间隔,0-无效,范围1-10代表:1s-10s,0xff-无延迟
+        public byte byFingerPrintMatchFastMode; //指纹匹配快速模式,0-无效,范围1-5代表:快速模式1-快速模式5,0xff-自动
+        public byte byFingerPrintModuleSensitive; //指纹模组灵敏度,0-无效,范围1-8代表:灵敏度级别1-灵敏度级别8
+        public byte byFingerPrintModuleLightCondition; //指纹模组光线条件,0-无效,1-室外,2-室内
+        public byte byFaceMatchThresholdN; //人脸比对阀值,范围0-100
+        public byte byFaceQuality; //人脸质量,范围0-100
+        public byte byFaceRecogizeTimeOut; //人脸识别超时时间,范围1-20代表:1s-20s,0xff-无限大
+        public byte byFaceRecogizeInterval; //人脸连续识别间隔,0-无效,范围1-10代表:1s-10s,0xff-无延迟
+        public short wCardReaderFunction; //只读,读卡器种类,按位表示:第1位-指纹,第二位-人脸,第三位-指静脉
+        public byte[] byCardReaderDescription = new byte[CARD_READER_DESCRIPTION]; //读卡器描述
+        public short wFaceImageSensitometry; //只读,人脸图像曝光度,范围0-65535
+        public byte byLivingBodyDetect; //真人检测,0-无效,1-不启用,2-启用
+        public byte byFaceMatchThreshold1; //人脸1:1匹配阀值,范围0-100
+        public short wBuzzerTime; //蜂鸣时间,范围0s-5999s(0-代表长鸣)
+        public byte byFaceMatch1SecurityLevel; //人脸1:1识别安全等级,0-无效,1-一般,2-较强,3-极强
+        public byte byFaceMatchNSecurityLevel; //人脸1:N识别安全等级,0-无效,1-一般,2-较强,3-极强
+        public byte byEnvirMode;//人脸识别环境模式,0-无效,1-室内,2-其他;
+        public byte byLiveDetLevelSet;//活体检测阈值等级设置,0-无效,1-低,2-中,3-高;
+        public byte byLiveDetAntiAttackCntLimit;//活体检测防攻击次数, 0-无效,1-255次(客户端、设备统一次数限制,根据能力级限制);
+        public byte byEnableLiveDetAntiAttack;//活体检测防攻击使能,0-无效,1-不启用,2-启用
+        public byte bySupportDelFPByID;//只读,读卡器是否支持按手指ID删除指纹,0-无效,1-不支持,2-支持
+        public byte byFaceContrastMotionDetLevel;//人脸比对时移动侦测级别,0-无效,1-低,2-中,3-高,0xff-禁用
+        public byte byDayFaceMatchThresholdN; //白天人脸1:N匹配阀值,范围0-100
+        public byte byNightFaceMatchThresholdN; //夜晚人脸1:N匹配阀值,范围0-100
+        public byte byFaceRecogizeEnable; //人脸识别使能:0-无效,1-开启,2-关闭
+        public byte byBlockListMatchThreshold; //禁止名单匹配阀值,范围0-100
+        public byte byRes3;
+        public byte byDefaultVerifyMode; //只读,读卡器默认验证方式(出厂默认),1-休眠,2-刷卡+密码,3-刷卡,4-刷卡或密码,5-指纹,6-指纹+密码,7-指纹或刷卡,8-指纹+刷卡,9-指纹+刷卡+密码,10-人脸或指纹或刷卡或密码,11-人脸+指纹,12-人脸+密码,13-人脸+刷卡,14-人脸,15-工号+密码,16-指纹或密码,17-工号+指纹,18-工号+指纹+密码,19-人脸+指纹+刷卡,20-人脸+密码+指纹,21-工号+人脸,22-人脸或人脸+刷卡,23-指纹或人脸,24-刷卡或人脸或密码,25-刷卡或人脸,26-刷卡或人脸或指纹,27-刷卡或指纹或密码
+        public int dwFingerPrintCapacity;//只读,指纹容量
+        public int dwFingerPrintNum;//只读,已存在指纹数量
+        public byte byEnableFingerPrintNum;//只读,指纹容量使能:0-不使能,1-使能(只有当该字段为1-使能时,dwFingerPrintCapacity和dwFingerPrintNum才有效)
+        public byte[] byRes = new byte[231];
+    }
+
+    /****************
+     * 优化接口结构体定义开始
+     *************/
+
+    public static final int NET_SDK_CONFIG_STATUS_SUCCESS = 1000;
+    public static final int NET_SDK_CONFIG_STATUS_NEED_WAIT = 1001;
+    public static final int NET_SDK_CONFIG_STATUS_FINISH = 1002;
+    public static final int NET_SDK_CONFIG_STATUS_FAILED = 1003;
+    public static final int NET_SDK_CONFIG_STATUS_EXCEPTION = 1004;
+
+    public static final int NET_SDK_GET_NEXT_STATUS_SUCCESS = 1000;
+    public static final int NET_SDK_GET_NEXT_STATUS_NEED_WAIT = 1001;
+    public static final int NET_SDK_NEXT_STATUS__FINISH = 1002;
+    public static final int NET_SDK_GET_NEXT_STATUS_FAILED = 1003;
+
+    public static class NET_DVR_CARD_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwCardNum; //设置或获取卡数量,获取时置为0xffffffff表示获取所有卡信息
+        public byte[] byRes = new byte[64];
+    }
+
+    public static class NET_DVR_CARD_SEND_DATA extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //卡号
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_CARD_RECORD extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public byte byCardType;
+        public byte byLeaderCard;
+        public byte byUserType;
+        public byte byRes1;
+        public byte[] byDoorRight = new byte[MAX_DOOR_NUM_256];
+        public NET_DVR_VALID_PERIOD_CFG struValid = new NET_DVR_VALID_PERIOD_CFG();
+        public byte[] byBelongGroup = new byte[MAX_GROUP_NUM_128];
+        public byte[] byCardPassword = new byte[CARD_PASSWORD_LEN];
+        public short[] wCardRightPlan = new short[MAX_DOOR_NUM_256];
+        public int dwMaxSwipeTimes;
+        public int dwSwipeTimes;
+        public int dwEmployeeNo;
+        public byte[] byName = new byte[NAME_LEN];
+        //按位表示,0-无权限,1-有权限
+        //第0位表示:弱电报警
+        //第1位表示:开门提示音
+        //第2位表示:限制客卡
+        //第3位表示:通道
+        //第4位表示:反锁开门
+        //第5位表示:巡更功能
+        public int dwCardRight;
+        public byte[] byRes = new byte[256];
+    }
+
+    public static class NET_DVR_CARD_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public int dwErrorCode;
+        public byte byStatus; // 状态:0-失败,1-成功
+        public byte[] byRes = new byte[23];
+    }
+
+
+    public static class NET_DVR_FACE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public int dwFaceNum;
+        public int dwEnableReaderNo;
+        public byte[] byRes = new byte[124];
+    }
+
+    public static class NET_DVR_FACE_RECORD extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public int dwFaceLen;
+        public Pointer pFaceBuffer;
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_FACE_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public byte[] byErrorMsg = new byte[ERROR_MSG_LEN];
+        public int dwReaderNo;
+        public byte byRecvStatus;
+        public byte[] byRes = new byte[131];
+    }
+
+    public static class NET_DVR_FINGERPRINT_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwFingerprintNum;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public int dwEnableReaderNo;
+        public byte byFingerPrintID;
+        public byte[] byRes = new byte[131];
+    }
+
+    public static class NET_DVR_FINGERPRINT_RECORD extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];
+        public int dwFingerPrintLen;     //指纹数据长度
+        public int dwEnableReaderNo;     //需要下发指纹的读卡器编号
+        public byte byFingerPrintID;      //手指编号,有效值范围为1-10
+        public byte byFingerType;         //指纹类型  0-普通指纹,1-胁迫指纹
+        public byte[] byRes1 = new byte[30];
+        public byte[] byFingerData = new byte[MAX_FINGER_PRINT_LEN]; //指纹数据内容
+        public byte[] byRes = new byte[96];
+    }
+
+    public static class NET_DVR_FINGERPRINT_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号
+        public byte byCardReaderRecvStatus;  //指纹读卡器状态,按字节表示,0-失败,1-成功,2-该指纹模组不在线,3-重试或指纹质量差,4-内存已满,5-已存在该指纹,6-已存在该指纹ID,7-非法指纹ID,8-该指纹模组无需配置
+        public byte byFingerPrintID;     //手指编号,有效值范围为1-10
+        public byte byFingerType;       //指纹类型  0-普通指纹,1-胁迫指纹
+        public byte byRecvStatus;    //主机错误状态:0-成功,1-手指编号错误,2-指纹类型错误,3-卡号错误(卡号规格不符合设备要求),4-指纹未关联工号或卡号(工号或卡号字段为空),5-工号不存在,6-指纹数据长度为0,7-读卡器编号错误,8-工号错误
+        public byte[] byErrorMsg = new byte[ERROR_MSG_LEN]; //下发错误信息,当byCardReaderRecvStatus为5时,表示已存在指纹对应的卡号
+        public int dwCardReaderNo;   //当byCardReaderRecvStatus为5时,表示已存在指纹对应的指纹读卡器编号,可用于下发错误返回。0时表示无错误信息
+        public byte[] byRes = new byte[20];
+    }
+
+    public static class NET_DVR_CAPTURE_FINGERPRINT_COND extends HIKSDKStructure {
+        public int dwSize;
+        public byte byFingerPrintPicType;    //图片类型:0-无意义
+        public byte byFingerNo;              //手指编号,范围1-10
+        public byte[] byRes = new byte[126];
+    }
+
+    //
+    public static class NET_DVR_CAPTURE_FINGERPRINT_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwFingerPrintDataSize;    //指纹数据大小
+        public byte[] byFingerData = new byte[MAX_FINGER_PRINT_LEN];    //图片类型:0-无意义
+        public int dwFingerPrintPicSize;    //指纹图片大小,等于0时,代表无指纹图片数据
+        public Pointer pFingerPrintPicBuffer;       //指纹图片缓存
+        public byte byFingerNo;              //手指编号,范围1-10
+        public byte byFingerPrintQuality;    //指纹质量,范围1-100
+        public byte[] byRes = new byte[62];
+    }
+
+    public static class NET_DVR_FINGER_PRINT_INFO_CTRL_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byMode;          //删除方式,0-按卡号(人员ID)方式删除,1-按读卡器删除
+        public byte[] byRes1 = new byte[3];       //保留
+        public NET_DVR_DEL_FINGER_PRINT_MODE_V50 struProcessMode;  //处理方式
+        public byte[] byRes = new byte[64];          //保留
+    }
+
+    public static class NET_DVR_DEL_FINGER_PRINT_MODE_V50 extends Union {
+        public byte[] uLen = new byte[588];   //联合体长度
+        public NET_DVR_FINGER_PRINT_BYCARD_V50 struByCard;     //按卡号(人员ID)的方式删除
+        public NET_DVR_FINGER_PRINT_BYREADER_V50 struByReader;   //按读卡器的方式删除
+    }
+
+    public static class NET_DVR_FINGER_PRINT_BYREADER_V50 extends HIKSDKStructure {
+        public int dwCardReaderNo;  //按值表示,指纹读卡器编号
+        public byte byClearAllCard;  //是否删除所有卡的指纹信息,0-按卡号(人员ID)删除指纹信息,1-删除所有卡(人员ID)的指纹信息
+        public byte[] byRes1 = new byte[3];       //保留
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byRes = new byte[516];          //保留
+    }
+
+    public static class NET_DVR_FINGER_PRINT_BYCARD_V50 extends HIKSDKStructure {
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //指纹的读卡器信息,按位表示
+        public byte[] byFingerPrintID = new byte[10];        //需要删除的手指编号,按数组下标,值表示0-不删除,1-删除该指纹
+        public byte[] byRes1 = new byte[2];
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+    }
+
+    //人脸删除控制参数结构体
+    public static class NET_DVR_FACE_PARAM_CTRL extends HIKSDKStructure {
+        public int dwSize;
+        public byte byMode;          //删除方式,0-按卡号方式删除,1-按读卡器删除
+        public byte[] byRes1 = new byte[3];        //保留
+        public NET_DVR_DEL_FACE_PARAM_MODE struProcessMode = new NET_DVR_DEL_FACE_PARAM_MODE();  //处理方式
+        public byte[] byRes = new byte[64];          //保留
+
+        public void read() {
+            super.read();
+            switch (byMode) {
+                case 0:
+                    struProcessMode.setType(NET_DVR_FACE_PARAM_BYCARD.class);
+                    break;
+                case 1:
+                    struProcessMode.setType(NET_DVR_FACE_PARAM_BYREADER.class);
+                    break;
+                default:
+                    break;
+            }
+            struProcessMode.read();
+        }
+
+        public void write() {
+            super.write();
+            struProcessMode.write();
+        }
+    }
+
+    //指纹删除控制参数结构体
+    public static class NET_DVR_FINGER_PRINT_INFO_CTRL extends HIKSDKStructure {
+        public int dwSize;
+        public byte byMode;          //删除方式,0-按卡号方式删除,1-按读卡器删除
+        public byte[] byRes1 = new byte[3];        //保留
+        public NET_DVR_DEL_FINGER_PRINT_MODE struProcessMode = new NET_DVR_DEL_FINGER_PRINT_MODE();  //处理方式
+        public byte[] byRes = new byte[64];          //保留
+
+        public void read() {
+            super.read();
+            switch (byMode) {
+                case 0:
+                    struProcessMode.setType(NET_DVR_FINGER_PRINT_BYCARD.class);
+                    break;
+                case 1:
+                    struProcessMode.setType(NET_DVR_FINGER_PRINT_BYREADER.class);
+                    break;
+                default:
+                    break;
+            }
+            struProcessMode.read();
+        }
+
+        public void write() {
+            super.write();
+            struProcessMode.write();
+        }
+    }
+
+    public static class NET_DVR_DEL_FINGER_PRINT_MODE extends Union {
+        //	public byte[] uLen = new byte[588];   //联合体长度
+        public NET_DVR_FINGER_PRINT_BYCARD struByCard;     //按卡号的方式删除
+        public NET_DVR_FINGER_PRINT_BYREADER struByReader;   //按读卡器的方式删除
+    }
+
+    public static class NET_DVR_FINGER_PRINT_BYCARD extends HIKSDKStructure {
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //人脸关联的卡号
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //人脸的读卡器信息,按数组表示
+        public byte[] byFaceID = new byte[MAX_FACE_NUM];        //需要删除的人脸编号,按数组下标,值表示0-不删除,1-删除该人脸
+        public byte[] byRes1 = new byte[34];          //保留
+    }
+
+    public static class NET_DVR_FINGER_PRINT_BYREADER extends HIKSDKStructure {
+        public int dwCardReaderNo;  //按值表示,人脸读卡器编号
+        public byte byClearAllCard;  //是否删除所有卡的人脸信息,0-按卡号删除人脸信息,1-删除所有卡的人脸信息
+        public byte[] byRes1 = new byte[3];       //保留
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //人脸关联的卡号
+        public byte[] byRes = new byte[548];          //保留
+    }
+
+    //门禁主机参数
+    public static class NET_DVR_ACS_CFG extends HIKSDKStructure {
+        public int dwSize;            //结构体大小
+        public byte byRS485Backup;  //是否启用下行RS485通信备份功能,0-不启用,1-启用
+        public byte byShowCapPic;    //是否显示抓拍图片, 0-不显示,1-显示
+        public byte byShowCardNo;    //是否显示卡号,0-不显示,1-显示
+        public byte byShowUserInfo;  //是否显示用户信息,0-不显示,1-显示
+        public byte byOverlayUserInfo;//是否叠加用户信息,0-不叠加,1-叠加
+        public byte byVoicePrompt;  //是否启用语音提示,0-不启用,1-启用
+        public byte byUploadCapPic;     //联动抓拍是否上传图片,0-不上传,1-上传
+        public byte bySaveCapPic;    //是否保存抓拍图片,0-不保存,1-保存
+        public byte byInputCardNo;  //是否是否允许按键输入卡号,0-不允许,1-允许
+        public byte byEnableWifiDetect;  //是否启动wifi探针,0-不启动,1-启动
+        public byte byEnable3G4G;  //3G4G使能,0-不使能,1-使能
+        public byte byProtocol;//读卡器通信协议类型,0-私有协议(默认),1-OSDP协议
+        public byte[] byRes = new byte[500];
+    }
+
+    /**************
+     * 优化接口结构体定义结束
+     ***************************/
+    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwBlockListNum; //禁止名单数量
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_ID_CARD_INFO struIDCardCfg;  //身份证信息(该结构体中姓名和身份证号码为必填项,其他字段为选填项)
+        public byte byBlockListValid;   //身份证禁止名单是否有效:0-无效,1-有效(用于按身份证号码删除身份证禁止名单,该字段为0时代表删除)
+        public byte[] byRes = new byte[127];  //预留
+    }
+
+    public static class NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byIDNum = new byte[MAX_ID_NUM_LEN];   //身份证号码
+        public byte byStatus; //状态:0-无效,1-处理中,2-上传失败,3-成功
+        public byte[] byRes = new byte[63];
+    }
+
+    public static class REMOTECONFIGSTATUS extends HIKSDKStructure {
+        public byte[] byStatus = new byte[4];
+        public byte[] byErrorCode = new byte[4];
+    }
+
+
+    //开锁记录
+    public static class NET_DVR_UNLOCK_RECORD_INFO extends HIKSDKStructure {
+        public byte byUnlockType; //开锁方式,参考UNLOCK_TYPE_ENUM
+        public byte[] byRes1 = new byte[3]; //保留
+        public byte[] byControlSrc = new byte[NAME_LEN]; //操作发起源信息,刷卡开锁时为卡号,蓝牙开锁时为萤石的APP账号,二维码开锁时为访客的手机号,其余情况下为设备编号
+        public int dwPicDataLen; //图片数据长度
+        public Pointer pImage; //图片指针
+        public int dwCardUserID; //持卡人ID
+        public short nFloorNumber;//刷卡开锁时有效,为楼层号
+        public short wRoomNumber; //操作发起源附加信息,刷卡开锁时有效,为房间号,
+        public short wLockID; //(对于门口机,0-表示本机控制器上接的锁、1-表示外接控制器上接的锁)
+        public byte[] byRes2 = new byte[2];
+        public byte[] byLockName = new byte[LOCK_NAME_LEN]; //刷卡开锁时有效,锁名称,对应门参数配置中门名称
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byRes = new byte[136]; //保留
+    }
+
+    //公告信息阅读回执
+    public static class NET_DVR_NOTICEDATA_RECEIPT_INFO extends HIKSDKStructure {
+        public byte[] byNoticeNumber = new byte[MAX_NOTICE_NUMBER_LEN]; //公告编号
+        public byte[] byRes = new byte[224];  //保留
+    }
+
+    //认证记录(设备未实现)
+    public static class NET_DVR_AUTH_INFO extends HIKSDKStructure {
+        public byte byAuthResult; //认证结果:0-无效,1-认证成功,2-认证失败
+        public byte byAuthType; //认证方式:0-无效,1-指纹,2-人脸
+        public byte[] byRes1 = new byte[2]; //保留
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN/*32*/]; //卡号
+        public int dwPicDataLen; //图片数据长度(当认证方式byAuthType为人脸时有效)
+        public Pointer pImage; //图片指针(当认证方式byAuthType为人脸时有效)
+        public byte[] byRes = new byte[212];  //保留
+    }
+
+    //车牌信息上传
+    public static class NET_DVR_UPLOAD_PLATE_INFO extends HIKSDKStructure {
+        public byte[] sLicense = new byte[MAX_LICENSE_LEN];        //车牌号码
+        public byte byColor;                      //车牌颜色,参考结构VCA_PLATE_COLOR
+        public byte[] byRes = new byte[239];  //保留
+    }
+
+    public static class NET_DVR_SEND_CARD_INFO extends HIKSDKStructure {
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN/*32*/]; //卡号
+        public byte[] byRes = new byte[224];  //保留
+    }
+
+    //可视对讲事件记录信息联合体
+    public static class NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON extends Union {
+        public byte[] byLen = new byte[256]; //联合体大小
+        public NET_DVR_UNLOCK_RECORD_INFO struUnlockRecord = new NET_DVR_UNLOCK_RECORD_INFO(); //开锁记录
+        public NET_DVR_NOTICEDATA_RECEIPT_INFO struNoticedataReceipt = new NET_DVR_NOTICEDATA_RECEIPT_INFO(); //公告信息阅读回执
+        public NET_DVR_AUTH_INFO struAuthInfo = new NET_DVR_AUTH_INFO(); //认证记录(设备未实现)
+        public NET_DVR_UPLOAD_PLATE_INFO struUploadPlateInfo = new NET_DVR_UPLOAD_PLATE_INFO(); //车牌信息上传
+        public NET_DVR_SEND_CARD_INFO struSendCardInfo = new NET_DVR_SEND_CARD_INFO(); //门口机发卡,对应设备处于发卡状态,刷卡时上传该事件
+    }
+
+    //可视对讲事件记录
+    public static class NET_DVR_VIDEO_INTERCOM_EVENT extends HIKSDKStructure {
+        public int dwSize; //结构体大小
+        public NET_DVR_TIME_EX struTime = new NET_DVR_TIME_EX(); //时间
+        public byte[] byDevNumber = new byte[MAX_DEV_NUMBER_LEN]; //设备编号
+        public byte byEventType; //事件信息类型,1-开锁记录,2-公告信息阅读回执,3-认证记录,4-车牌信息上传,5非法卡刷卡事件,6-门口机发卡记录(需要启动门口机发卡功能,刷卡时才会上传该事件)
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public byte[] byRes1 = new byte[2]; //保留
+        public NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON uEventInfo = new NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON(); //事件信息,具体内容参考byEventType取值
+        public int dwIOTChannelNo;    //IOT通道号
+        public byte[] byRes2 = new byte[252]; //保留
+    }
+
+    public static class NET_DVR_CONTROL_GATEWAY extends HIKSDKStructure {
+        public int dwSize; //结构体大小
+        public int dwGatewayIndex; //门禁序号,从1开始
+        public byte byCommand; //操作命令,0-关闭,1-打开,2-常开(通道状态),3-恢复(普通状态)
+        public byte byLockType; //锁类型,0-普通(以前默认都为0),1-智能锁
+        public short wLockID; //锁ID,从1开始(远程开门口机锁时,0表示门口机本机控制器上接的锁、1表示外接控制器上接的锁)
+        public byte[] byControlSrc = new byte[NAME_LEN]; //操作发起源信息
+        public byte byControlType; //开锁类型,1-监视,2-通话
+        public byte[] byRes3 = new byte[3];
+        public byte[] byPassword = new byte[PASSWD_LEN];       //锁密码,当byLockType为智能锁时有效
+        public byte[] byRes2 = new byte[108]; //保留
+    }
+
+
+    //公告图片信息结构体
+    public static class NET_DVR_NOTICE_PIC extends HIKSDKStructure {
+        public Pointer pPicData; //图片指针
+        public int dwPicDataLen; //图片数据长度
+        public byte[] byRes = new byte[32]; //保留
+    }
+
+    //公告数据
+    public static class NET_DVR_NOTICE_DATA extends HIKSDKStructure {
+        public int dwSize; //结构体大小
+        public NET_DVR_TIME_EX struTime = new NET_DVR_TIME_EX(); //公告时间
+        public byte[] byNoticeNumber = new byte[MAX_NOTICE_NUMBER_LEN]; //公告编号
+        public byte[] byNoticeTheme = new byte[MAX_NOTICE_THEME_LEN];//公告主题
+        public byte[] byNoticeDetail = new byte[MAX_NOTICE_DETAIL_LEN]; //公告详情
+        public byte byLevel; //公告等级,1-广告类信息;2-物业信息;3-报警类信息;4-通知类信息
+        public byte byPicNum; //公告图片数量
+        public byte[] byRes1 = new byte[2]; //保留
+        public NET_DVR_NOTICE_PIC[] struNoticePic = new NET_DVR_NOTICE_PIC[MAX_NOTICE_PIC_NUM]; //公告图片
+        public byte[] byRes2 = new byte[128]; //保留
+    }
+
+    public static class NET_DVR_DATE extends HIKSDKStructure {
+        public short wYear;        //年
+        public byte byMonth;        //月
+        public byte byDay;        //日
+    }
+
+    //身份证信息
+    public static class NET_DVR_ID_CARD_INFO extends HIKSDKStructure {
+        public int dwSize;        //结构长度
+        public byte[] byName = new byte[MAX_ID_NAME_LEN];   //姓名
+        public NET_DVR_DATE struBirth; //出生日期
+        public byte[] byAddr = new byte[MAX_ID_ADDR_LEN];  //住址
+        public byte[] byIDNum = new byte[MAX_ID_NUM_LEN];   //身份证号码
+        public byte[] byIssuingAuthority = new byte[MAX_ID_ISSUING_AUTHORITY_LEN];  //签发机关
+        public NET_DVR_DATE struStartDate;  //有效开始日期
+        public NET_DVR_DATE struEndDate;  //有效截止日期
+        public byte byTermOfValidity;  //是否长期有效, 0-否,1-是(有效截止日期无效)
+        public byte bySex;  //性别,1-男,2-女
+        public byte byNation; //民族
+        public byte[] byRes = new byte[101];
+    }
+
+    public static class NET_DVR_ACS_EVENT_INFO_EXTEND_V20 extends HIKSDKStructure {
+        public byte byRemoteCheck; //是否需要远程核验(0-无效,1-不需要(默认),2-需要)
+        public byte byThermometryUnit; //测温单位(0-摄氏度(默认),1-华氏度,2-开尔文)
+        public byte byIsAbnomalTemperature; //人脸抓拍测温是否温度异常:1-是,0-否
+        public byte byRes2;
+        public float fCurrTemperature; //人脸温度(精确到小数点后一位)
+        public NET_VCA_POINT struRegionCoordinates = new NET_VCA_POINT(); //人脸温度坐标
+        public int dwQRCodeInfoLen; //二维码信息长度,不为0是表示后面带数据
+        public int dwVisibleLightDataLen; //热成像相机可见光图片长度,不为0是表示后面带数据
+        public int dwThermalDataLen; //热成像图片长度,不为0是表示后面带数据
+        public Pointer pQRCodeInfo; //二维码信息指针
+        public Pointer pVisibleLightData; //热成像相机可见光图片指针
+        public Pointer pThermalData; //热成像图片指针
+        public byte[] byRes = new byte[1024];
+
+
+    }
+
+    //门禁主机报警信息结构体
+    public static class NET_DVR_ACS_ALARM_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public int dwMajor; //报警主类型,参考宏定义
+        public int dwMinor; //报警次类型,参考宏定义
+        public NET_DVR_TIME struTime = new NET_DVR_TIME(); //时间
+        public byte[] sNetUser = new byte[MAX_NAMELEN];//网络操作的用户名
+        public NET_DVR_IPADDR struRemoteHostAddr = new NET_DVR_IPADDR();//远程主机地址
+        public NET_DVR_ACS_EVENT_INFO struAcsEventInfo = new NET_DVR_ACS_EVENT_INFO(); //详细参数
+        public int dwPicDataLen;   //图片数据大小,不为0是表示后面带数据
+        public Pointer pPicData;
+        public short wInductiveEventType; //归纳事件类型,0-无效,客户端判断该值为非0值后,报警类型通过归纳事件类型区分,否则通过原有报警主次类型(dwMajor、dwMinor)区分
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public byte byRes1;             //保留字节
+        public int dwIOTChannelNo;    //IOT通道号
+        public Pointer pAcsEventInfoExtend;    //byAcsEventInfoExtend为1时,表示指向一个NET_DVR_ACS_EVENT_INFO_EXTEND结构体
+        public byte byAcsEventInfoExtend;    //pAcsEventInfoExtend是否有效:0-无效,1-有效
+        public byte byTimeType; //时间类型:0-设备本地时间,1-UTC时间(struTime的时间)
+        public byte byRes2;             //保留字节
+        public byte byAcsEventInfoExtendV20;    //pAcsEventInfoExtendV20是否有效:0-无效,1-有效
+        public Pointer pAcsEventInfoExtendV20;    //byAcsEventInfoExtendV20为1时,表示指向一个NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体
+        public byte[] byRes = new byte[4];
+    }
+
+    //门禁主机事件信息
+    public static class NET_DVR_ACS_EVENT_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[32];
+        public byte byCardType;
+        public byte byAllowListNo;
+        public byte byReportChannel;
+        public byte byCardReaderKind;
+        public int dwCardReaderNo;
+        public int dwDoorNo;
+        public int dwVerifyNo;
+        public int dwAlarmInNo;
+        public int dwAlarmOutNo;
+        public int dwCaseSensorNo;
+        public int dwRs485No;
+        public int dwMultiCardGroupNo;
+        public short wAccessChannel;
+        public byte byDeviceNo;
+        public byte byDistractControlNo;
+        public int dwEmployeeNo;
+        public short wLocalControllerID;
+        public byte byInternetAccess;
+        public byte byType;
+        public byte[] byMACAddr = new byte[MACADDR_LEN]; //物理地址,为0无效
+        public byte bySwipeCardType;//刷卡类型,0-无效,1-二维码
+        public byte byMask; //是否带口罩:0-保留,1-未知,2-不戴口罩,3-戴口罩
+        public int dwSerialNo; //事件流水号,为0无效
+        public byte byChannelControllerID; //通道控制器ID,为0无效,1-主通道控制器,2-从通道控制器
+        public byte byChannelControllerLampID; //通道控制器灯板ID,为0无效(有效范围1-255)
+        public byte byChannelControllerIRAdaptorID; //通道控制器红外转接板ID,为0无效(有效范围1-255)
+        public byte byChannelControllerIREmitterID; //通道控制器红外对射ID,为0无效(有效范围1-255)
+        public byte byHelmet;//可选,是否戴安全帽:0-保留,1-未知,2-不戴安全, 3-戴安全帽
+        public byte[] byRes = new byte[3];
+    }
+
+    public static final int NET_DEV_NAME_LEN = 64;
+
+    public static class NET_DVR_ACS_EVENT_INFO_EXTEND extends HIKSDKStructure {
+        public int dwFrontSerialNo; //事件流水号,为0无效(若该字段为0,平台根据dwSerialNo判断是否丢失事件;若该字段不为0,平台根据该字段和dwSerialNo字段共同判断是否丢失事件)(主要用于解决报警订阅后导致dwSerialNo不连续的情况)
+        public byte byUserType; //人员类型:0-无效,1-普通人(主人),2-来宾(访客),3-禁止名单人,4-管理员
+        public byte byCurrentVerifyMode; //读卡器当前验证方式:0-无效,1-休眠,2-刷卡+密码,3-刷卡,4-刷卡或密码,5-指纹,6-指纹+密码,7-指纹或刷卡,8-指纹+刷卡,9-指纹+刷卡+密码,10-人脸或指纹或刷卡或密码,11-人脸+指纹,12-人脸+密码,13-人脸+刷卡,14-人脸,15-工号+密码,16-指纹或密码,17-工号+指纹,18-工号+指纹+密码,19-人脸+指纹+刷卡,20-人脸+密码+指纹,21-工号+人脸,22-人脸或人脸+刷卡,23-指纹或人脸,24-刷卡或人脸或密码,25-刷卡或人脸,26-刷卡或人脸或指纹,27-刷卡或指纹或密码
+        public byte byCurrentEvent; //是否为实时事件:0-无效,1-是(实时事件),2-否(离线事件)
+        public byte byPurePwdVerifyEnable; //设备是否支持纯密码认证, 0-不支持,1-支持
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)(对于设备来说,如果使用了工号(人员ID)字段,byEmployeeNo一定要传递,如果byEmployeeNo可转换为dwEmployeeNo,那么该字段也要传递;对于上层平台或客户端来说,优先解析byEmployeeNo字段,如该字段为空,再考虑解析dwEmployeeNo字段)
+        public byte byAttendanceStatus; //考勤状态:0-未定义,1-上班,2-下班,3-开始休息,4-结束休息,5-开始加班,6-结束加班
+        public byte byStatusValue; //考勤状态值
+        public byte[] byRes2 = new byte[2];
+        public byte[] byUUID = new byte[NET_SDK_UUID_LEN/*36*/]; //UUID(该字段仅在对接萤石平台过程中才会使用)
+        public byte[] byDeviceName = new byte[NET_DEV_NAME_LEN/*64*/];   //设备序列号
+        public byte[] byRes = new byte[24];
+
+    }
+
+    /*
+    门禁主机报警事件细节结构体
+     */
+    public static class NET_DVR_ACS_EVENT_DETAIL extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //卡号(mac地址),为0无效
+        public byte byCardType; //卡类型,1-普通卡,2-残障人士卡,3-禁止名单卡,4-巡更卡,5-胁迫卡,6-超级卡,7-来宾卡,8-解除卡,为0无效
+        public byte byAllowListNo; //允许名单单号,1-8,为0无效
+        public byte byReportChannel; //报告上传通道,1-布防上传,2-中心组1上传,3-中心组2上传,为0无效
+        public byte byCardReaderKind; //读卡器属于哪一类,0-无效,1-IC读卡器,2-身份证读卡器,3-二维码读卡器,4-指纹头
+        public int dwCardReaderNo; //读卡器编号,为0无效
+        public int dwDoorNo; //门编号(楼层编号),为0无效
+        public int dwVerifyNo; //多重卡认证序号,为0无效
+        public int dwAlarmInNo;  //报警输入号,为0无效
+        public int dwAlarmOutNo; //报警输出号,为0无效
+        public int dwCaseSensorNo; //事件触发器编号
+        public int dwRs485No;    //RS485通道号,为0无效
+        public int dwMultiCardGroupNo; //群组编号
+        public short wAccessChannel;    //人员通道号
+        public byte byDeviceNo; //设备编号,为0无效(有效范围1-255)
+        public byte byDistractControlNo;//分控器编号,为0无效
+        public int dwEmployeeNo; //工号,为0无效
+        public short wLocalControllerID; //就地控制器编号,0-门禁主机,1-64代表就地控制器
+        public byte byInternetAccess; //网口ID:(1-上行网口1,2-上行网口2,3-下行网口1)
+        public byte byType;     //防区类型,0:即时防区,1-24小时防区,2-延时防区 ,3-内部防区,4-钥匙防区 5-火警防区 6-周界防区 7-24小时无声防区  8-24小时辅助防区,9-24小时震动防区,10-门禁紧急开门防区,11-门禁紧急关门防区 0xff-无
+        public byte[] byMACAddr = new byte[MACADDR_LEN]; //物理地址,为0无效
+        public byte bySwipeCardType;//刷卡类型,0-无效,1-二维码
+        public byte byEventAttribute; //事件属性:0-未定义,1-合法认证,2-其它
+        public int dwSerialNo; //事件流水号,为0无效
+        public byte byChannelControllerID; //通道控制器ID,为0无效,1-主通道控制器,2-从通道控制器
+        public byte byChannelControllerLampID; //通道控制器灯板ID,为0无效(有效范围1-255)
+        public byte byChannelControllerIRAdaptorID; //通道控制器红外转接板ID,为0无效(有效范围1-255)
+        public byte byChannelControllerIREmitterID; //通道控制器红外对射ID,为0无效(有效范围1-255)
+        public int dwRecordChannelNum; //录像通道数目
+        public Pointer pRecordChannelData;//录像通道,大小为sizeof(DWORD)* dwRecordChannelNum
+        public byte byUserType; //人员类型:0-无效,1-普通人(主人),2-来宾(访客),3-禁止名单人,4-管理员
+        public byte byCurrentVerifyMode; //读卡器当前验证方式:0-无效,1-休眠,2-刷卡+密码,3-刷卡,4-刷卡或密码,5-指纹,6-指纹+密码,7-指纹或刷卡,8-指纹+刷卡,9-指纹+刷卡+密码,10-人脸或指纹或刷卡或密码,11-人脸+指纹,12-人脸+密码,
+        //13-人脸+刷卡,14-人脸,15-工号+密码,16-指纹或密码,17-工号+指纹,18-工号+指纹+密码,19-人脸+指纹+刷卡,20-人脸+密码+指纹,21-工号+人脸,22-人脸或人脸+刷卡,23-指纹或人脸,24-刷卡或人脸或密码,25-刷卡或人脸,26-刷卡或人脸或指纹,27-刷卡或指纹或密码
+        public byte byAttendanceStatus;  //考勤状态:0-未定义,1-上班,2-下班,3-开始休息,4-结束休息,5-开始加班,6-结束加班
+        public byte byStatusValue;  //考勤状态值
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)(对于设备来说,如果使用了工号(人员ID)字段,byEmployeeNo一定要传递,如果byEmployeeNo可转换为dwEmployeeNo,那么该字段也要传递;对于上层平台或客户端来说,优先解析byEmployeeNo字段,如该字段为空,再考虑解析dwEmployeeNo字段)
+        public byte byRes1; //保留
+        public byte byMask; //是否带口罩:0-保留,1-未知,2-不戴口罩,3-戴口罩
+        public byte byThermometryUnit; //测温单位(0-摄氏度(默认),1-华氏度,2-开尔文)
+        public byte byIsAbnomalTemperature; //人脸抓拍测温是否温度异常:1-是,0-否
+        public float fCurrTemperature; //人脸温度(精确到小数点后一位)
+        public NET_VCA_POINT struRegionCoordinates; //人脸温度坐标
+        public byte[] byRes = new byte[48];
+    }
+
+    /*
+    门禁主机报警事件配置结构体
+     */
+    public static class NET_DVR_ACS_EVENT_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwMajor; //报警主类型,参考宏定义
+        public int dwMinor; //报警次类型,参考宏定义
+        public NET_DVR_TIME struTime = new NET_DVR_TIME(); //时间
+        public byte[] sNetUser = new byte[MAX_NAMELEN];//网络操作的用户名
+        public NET_DVR_IPADDR struRemoteHostAddr;//远程主机地址
+        public NET_DVR_ACS_EVENT_DETAIL struAcsEventInfo; //详细参数
+        public int dwPicDataLen;   //图片数据大小,不为0是表示后面带数据
+        public Pointer pPicData;
+        public short wInductiveEventType; //归纳事件类型,0-无效,其他值参见2.2章节,客户端判断该值为非0值后,报警类型通过归纳事件类型区分,否则通过原有报警主次类型(dwMajor、dwMinor)区分
+        public byte byTimeType; //时间类型:0-设备本地时间(默认),1-UTC时间(struTime的时间)
+        public byte byRes1;
+        public int dwQRCodeInfoLen; //二维码信息长度,不为0是表示后面带数据
+        public int dwVisibleLightDataLen; //热成像相机可见光图片长度,不为0是表示后面带数据
+        public int dwThermalDataLen; //热成像图片长度,不为0是表示后面带数据
+        public Pointer pQRCodeInfo; //二维码信息指针
+        public Pointer pVisibleLightData; //热成像相机可见光图片指针
+        public Pointer pThermalData; //热成像图片指针
+        public byte[] byRes = new byte[36];
+    }
+
+    public static final int NET_SDK_MONITOR_ID_LEN = 64;
+
+    public static class NET_DVR_ACS_EVENT_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwMajor; //报警主类型,参考事件上传宏定义,0-全部
+        public int dwMinor; //报警次类型,参考事件上传宏定义,0-全部
+        public NET_DVR_TIME struStartTime; //开始时间
+        public NET_DVR_TIME struEndTime; //结束时间
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //卡号
+        public byte[] byName = new byte[NAME_LEN]; //持卡人姓名
+        public byte byPicEnable; //是否带图片,0-不带图片,1-带图片
+        public byte byTimeType; //时间类型:0-设备本地时间(默认),1-UTC时间(struStartTime和struEndTime的时间)
+        public byte[] byRes2 = new byte[2]; //保留
+        public int dwBeginSerialNo; //起始流水号(为0时默认全部)
+        public int dwEndSerialNo; //结束流水号(为0时默认全部)
+        public int dwIOTChannelNo; //IOT通道号,0-无效
+        public short wInductiveEventType; //归纳事件类型,0-无效,其他值参见2.2章节,客户端判断该值为非0值后,报警类型通过归纳事件类型区分,否则通过原有报警主次类型(dwMajor、dwMinor)区分
+        public byte bySearchType;      //搜索方式:0-保留,1-按事件源搜索(此时通道号为非视频通道号),2-按监控点ID搜索
+        public byte byEventAttribute; //事件属性:0-未定义,1-合法事件,2-其它
+        public byte[] szMonitorID = new byte[NET_SDK_MONITOR_ID_LEN/*64*/];          //监控点ID(由设备序列号、通道类型、编号组成,例如门禁点:设备序列号+“DOOR”+门编号)
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byRes = new byte[140]; //保留
+    }
+
+    public static class NET_DVR_ACS_WORK_STATUS_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byDoorLockStatus = new byte[MAX_DOOR_NUM_256]; //门锁状态(继电器开合状态),0-正常关,1-正常开,2-短路报警,3-断路报警,4-异常报警
+        public byte[] byDoorStatus = new byte[MAX_DOOR_NUM_256]; //门状态(楼层状态),1-休眠,2-常开状态(自由),3-常闭状态(禁用),4-普通状态(受控)
+        public byte[] byMagneticStatus = new byte[MAX_DOOR_NUM_256]; //门磁状态,0-正常关,1-正常开,2-短路报警,3-断路报警,4-异常报警
+        public byte[] byCaseStatus = new byte[MAX_CASE_SENSOR_NUM]; //事件触发器状态,0-无输入,1-有输入
+        public short wBatteryVoltage; //蓄电池电压值,实际值乘10,单位:伏特
+        public byte byBatteryLowVoltage; //蓄电池是否处于低压状态,0-否,1-是
+        public byte byPowerSupplyStatus; //设备供电状态,1-交流电供电,2-蓄电池供电
+        public byte byMultiDoorInterlockStatus; //多门互锁状态,0-关闭,1-开启
+        public byte byAntiSneakStatus; //反潜回状态,0-关闭,1-开启
+        public byte byHostAntiDismantleStatus; //主机防拆状态,0-关闭,1-开启
+        public byte byIndicatorLightStatus; //指示灯状态,0-掉线,1-在线
+        public byte[] byCardReaderOnlineStatus = new byte[MAX_CARD_READER_NUM_512]; //读卡器在线状态,0-不在线,1-在线
+        public byte[] byCardReaderAntiDismantleStatus = new byte[MAX_CARD_READER_NUM_512]; //读卡器防拆状态,0-关闭,1-开启
+        public byte[] byCardReaderVerifyMode = new byte[MAX_CARD_READER_NUM_512]; //读卡器当前验证方式,1-休眠,2-刷卡+密码,3-刷卡,4-刷卡或密码
+        public byte[] bySetupAlarmStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM];//报警输入口布防状态,0-对应报警输入口处于撤防状态,1-对应报警输入口处于布防状态
+        public byte[] byAlarmInStatus = new byte[MAX_ALARMHOST_ALARMIN_NUM]; //按位表示报警输入口报警状态,0-对应报警输入口当前无报警,1-对应报警输入口当前有报警
+        public byte[] byAlarmOutStatus = new byte[MAX_ALARMHOST_ALARMOUT_NUM]; //按位表示报警输出口状态,0-对应报警输出口无报警,1-对应报警输出口有报警
+        public int dwCardNum; //已添加的卡数量
+        public byte byFireAlarmStatus; //消防报警状态显示:0-正常、1-短路报警、2-断开报警
+        public byte byBatteryChargeStatus; //电池充电状态:0-无效;1-充电中;2-未充电
+        public byte byMasterChannelControllerStatus; //主通道控制器在线状态:0-无效;1-不在线;2-在线
+        public byte bySlaveChannelControllerStatus; //从通道控制器在线状态:0-无效;1-不在线;2-在线
+        public byte byAntiSneakServerStatus; //反潜回服务器状态:0-无效,1-未启用,2-正常,3-断开
+        public byte[] byRes3 = new byte[3];
+        public int dwAllowFaceNum; //已添加的允许名单人脸数量(通过能力集判断)
+        public int dwBlockFaceNum; //已添加的禁止名单人脸数量(通过能力集判断)
+        public byte[] byRes2 = new byte[108];
+    }
+
+    public static final int ACS_PARAM_DOOR_STATUS_WEEK_PLAN = 0x00000001;//门状态周计划参数
+    public static final int ACS_PARAM_VERIFY_WEEK_PALN = 0x00000002; //读卡器周计划参数
+    public static final int ACS_PARAM_CARD_RIGHT_WEEK_PLAN = 0x00000004; //卡权限周计划参数
+    public static final int ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN = 0x00000008; //门状态假日计划参数
+    public static final int ACS_PARAM_VERIFY_HOLIDAY_PALN = 0x00000010; //读卡器假日计划参数
+    public static final int ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN = 0x00000020; //卡权限假日计划参数
+    public static final int ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP = 0x00000040; //门状态假日组参数
+    public static final int ACS_PARAM_VERIFY_HOLIDAY_GROUP = 0x00000080;//读卡器验证方式假日组参数
+    public static final int ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP = 0x00000100; //卡权限假日组参数
+    public static final int ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE = 0x00000200;//门状态计划模板参数
+    public static final int ACS_PARAM_VERIFY_PALN_TEMPLATE = 0x00000400; //读卡器验证方式计划模板参数
+    public static final int ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE = 0x00000800; //卡权限计划模板参数
+    public static final int ACS_PARAM_CARD = 0x00001000; //卡参数
+    public static final int ACS_PARAM_GROUP = 0x00002000; //群组参数
+    public static final int ACS_PARAM_ANTI_SNEAK_CFG = 0x00004000; //反潜回参数
+    public static final int ACS_PAPAM_EVENT_CARD_LINKAGE = 0x00008000; //事件及卡号联动参数
+    public static final int ACS_PAPAM_CARD_PASSWD_CFG = 0x00010000; //密码开门使能参数
+    public static final int ACS_PARAM_PERSON_STATISTICS_CFG = 0x00020000; //人数统计参数
+    public static final int ACS_PARAM_BLOCKLIST_PICTURE = 0x00040000; //禁止名单图片参数
+    public static final int ACS_PARAM_ID_BLOCKLIST = 0x00080000; //身份证禁止名单参数
+    public static final int ACS_PARAM_EXAM_INFO = 0x00100000; //考试信息参数
+    public static final int ACS_PARAM_EXAMINEE_INFO = 0x00200000; //考生信息参数
+    public static final int ACS_PARAM_FAILED_FACE_INFO = 0x00400000; //升级设备人脸建模失败记录
+
+    public static class NET_DVR_ACS_PARAM_TYPE extends HIKSDKStructure {
+        public int dwSize;
+        public int dwParamType; //参数类型,按位表示
+
+        public short wLocalControllerID; //就地控制器序号[1,64],0代表门禁主机
+        public byte[] byRes = new byte[30];
+    }
+
+
+    public static class NET_DVR_FACE_PARAM_COND extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];    //人脸关联的卡号
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //人脸的读卡器是否有效,0-无效,1-有效
+        public int dwFaceNum;    //设置或获取人脸数量,获取时置为0xffffffff表示获取所有人脸信息
+        public byte byFaceID;     //人脸编号,有效值范围为1-2   0xff表示该卡所有人脸
+        public byte[] byRes = new byte[127];   //保留
+    }
+
+    public static class NET_DVR_FACE_PARAM_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN];    //人脸关联的卡号
+        public int dwFaceLen;    //人脸数据长度<DES加密处理>,设备端返回的即加密后的数据
+        public Pointer pFaceBuffer;  //人脸数据指针
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //需要下发人脸的读卡器,按数组表示,从低位到高位表示,0-不下发该读卡器,1-下发到该读卡器
+        public byte byFaceID;     //人脸编号,有效值范围为1-2
+        public byte byFaceDataType;   //人脸数据类型:0-模板(默认),1-图片
+        public byte[] byRes = new byte[126];
+    }
+
+    public static class NET_DVR_FACE_PARAM_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //人脸关联的卡号
+        public byte[] byCardReaderRecvStatus = new byte[MAX_CARD_READER_NUM_512];  //人脸读卡器状态,按字节表示,0-失败,1-成功,2-重试或人脸质量差,3-内存已满,4-已存在该人脸,5-非法人脸ID
+        public byte[] byErrorMsg = new byte[ERROR_MSG_LEN]; //下发错误信息,当byCardReaderRecvStatus为4时,表示已存在人脸对应的卡号
+        public int dwCardReaderNo;  //纹读卡器编号,可用于下发错误返回
+        public byte byTotalStatus;  //下发总的状态,0-当前人脸未下完所有读卡器,1-已下完所有读卡器(这里的所有指的是门禁主机往所有的读卡器下发了,不管成功与否)
+        public byte byFaceID;     //人脸编号,有效值范围为1-2
+        public byte[] byRes = new byte[130];
+    }
+
+    public static class NET_DVR_FACE_PARAM_BYCARD extends HIKSDKStructure {
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //人脸关联的卡号
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //人脸的读卡器信息,按数组表示
+        public byte[] byFaceID = new byte[MAX_FACE_NUM];        //需要删除的人脸编号,按数组下标,值表示0-不删除,1-删除该人脸
+        public byte[] byRes1 = new byte[42];          //保留
+    }
+
+    public static class NET_DVR_FACE_PARAM_BYREADER extends HIKSDKStructure {
+        public int dwCardReaderNo;  //按值表示,人脸读卡器编号
+        public byte byClearAllCard;  //是否删除所有卡的人脸信息,0-按卡号删除人脸信息,1-删除所有卡的人脸信息
+        public byte[] byRes1 = new byte[3];       //保留
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //人脸关联的卡号
+        public byte[] byRes = new byte[548];          //保留
+    }
+
+    public static class NET_DVR_DEL_FACE_PARAM_MODE extends Union {
+        public byte[] uLen = new byte[588];   //联合体长度
+        public NET_DVR_FACE_PARAM_BYCARD struByCard;     //按卡号的方式删除
+        public NET_DVR_FACE_PARAM_BYREADER struByReader;   //按读卡器的方式删除
+    }
+
+    public static class NET_DVR_CHECK_FACE_PICTURE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPictureNum; //图片数量
+        public byte byCheckTemplate; //0-校验图片是否合法(默认),1-校验图片和建模数据是否匹配
+        public byte[] byRes = new byte[127];
+    }
+
+    public static class NET_DVR_CHECK_FACE_PICTURE_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPictureNo; //图片编号
+        public int dwPictureLen; //图片长度(图片大小不超过200k)
+        public Pointer pPictureBuffer; //图片指针
+        public int dwFaceTemplateLen;  //人脸建模数据长度
+        public Pointer pFaceTemplateBuffer;   //人脸建模数据指针
+        public byte[] byRes = new byte[248];
+    }
+
+    public static class NET_DVR_CHECK_FACE_PICTURE_STATUS extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPictureNo; //图片编号
+        public byte byCheckStatus; //校验结果:0-无效,1-建模成功,2-建模失败,3-人脸模块通讯异常,4-图像无人脸,5-人脸朝上,6-人脸朝下,7-人脸偏左,8-人脸偏右,9-人脸顺时旋转,
+        //10 - 人脸逆时旋转,11-人眼间距小,12-人脸和模板匹配,13-人脸和模板不匹配,14-传输数据有误
+        public byte[] byRes = new byte[127];
+    }
+
+    public static class NET_DVR_FINGER_PRINT_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号
+        public int dwFingerPrintLen;    //指纹数据长度
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //需要下发指纹的读卡器,按数组表示,从低位到高位表示,0-不下发该读卡器,1-下发到该读卡器
+        public byte byFingerPrintID;     //手指编号,有效值范围为1-10
+        public byte byFingerType;       //指纹类型  0-普通指纹,1-胁迫指纹,2-巡更指纹,3-超级指纹,4-解除指纹
+        public byte[] byRes1 = new byte[30];
+        public byte[] byFingerData = new byte[MAX_FINGER_PRINT_LEN];        //指纹数据内容
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byLeaderFP = new byte[MAX_DOOR_NUM_256]; //对门是否有首次认证功能(按字节表示):0-无首次认证功能,1-有首次认证功能
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_FINGER_PRINT_STATUS_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号
+        public byte[] byCardReaderRecvStatus = new byte[MAX_CARD_READER_NUM_512];  //指纹读卡器状态,按字节表示,0-失败,1-成功,2-该指纹模组不在线,3-重试或指纹质量差,4-内存已满,5-已存在该指纹,6-已存在该指纹ID,7-非法指纹ID,8-该指纹模组无需配置,10-指纹读卡器版本过低(无法支持工号)
+        public byte byFingerPrintID;     //手指编号,有效值范围为1-10
+        public byte byFingerType;       //指纹类型  0-普通指纹,1-胁迫指纹,2-巡更指纹,3-超级指纹,4-解除指纹
+        public byte byTotalStatus;  //下发总的状态,0-当前指纹未下完所有读卡器,1-已下完所有读卡器(这里的所有指的是门禁主机往所有的读卡器下发了,不管成功与否)
+        public byte byRecvStatus;    //主机错误状态:0-成功,1-手指编号错误,2-指纹类型错误,3-卡号错误(卡号规格不符合设备要求),4-指纹未关联工号或卡号(工号或卡号字段为空),5-工号不存在,6-指纹数据长度为0,7-读卡器编号错误,8-工号错误
+        public byte[] byErrorMsg = new byte[ERROR_MSG_LEN]; //下发错误信息,当byCardReaderRecvStatus为5时,表示已存在指纹对应的卡号
+        public int dwCardReaderNo;  //当byCardReaderRecvStatus为5时,表示已存在指纹对应的指纹读卡器编号,可用于下发错误返回。0时表示无错误信息
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byErrorEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //下发错误信息,当byCardReaderRecvStatus为5时,表示已存在指纹对应的工号(人员ID)
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_FINGER_PRINT_INFO_COND_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //指纹关联的卡号(该字段获取时有效,设置时无效)
+        public byte[] byEnableCardReader = new byte[MAX_CARD_READER_NUM_512];  //指纹的读卡器是否有效,0-无效,1-有效
+        public int dwFingerPrintNum; //设置或获指纹数量,获取时置为0xffffffff表示获取所有指纹信息
+        public byte byFingerPrintID;     //手指编号,有效值范围为1-10   0xff表示该卡所有指纹
+        public byte byCallBackMode;     //设备回调方式,0-设备所有读卡器下完了返回,1-在时间段内下了部分也返回
+        public byte[] byRes2 = new byte[2];          //保留
+        public byte[] byEmployeeNo = new byte[NET_SDK_EMPLOYEE_NO_LEN]; //工号(人员ID)
+        public byte[] byRes1 = new byte[128];          //保留
+    }
+
+    public static class NET_DVR_GROUP_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable; //是否启用,0-不启用,1-启用
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_VALID_PERIOD_CFG struValidPeriodCfg = new NET_DVR_VALID_PERIOD_CFG(); //群组有效期参数
+        public byte[] byGroupName = new byte[32]; //群组名称
+        public byte[] byRes2 = new byte[32];
+    }
+
+    public static class NET_DVR_MULTI_CARD_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable;
+        public byte bySwipeIntervalTimeout;
+        public byte[] byRes1 = new byte[2];
+        public NET_DVR_MULTI_CARD_GROUP_CFG_V50[] struGroupCfg = (NET_DVR_MULTI_CARD_GROUP_CFG_V50[]) new NET_DVR_MULTI_CARD_GROUP_CFG_V50().toArray(20);
+        public byte[] byRes2 = new byte[32];
+    }
+
+    public static class NET_DVR_MULTI_CARD_GROUP_CFG_V50 extends HIKSDKStructure {
+        public byte byEnable;
+        public byte byEnableOfflineVerifyMode;
+        public byte[] byRes1 = new byte[2];
+        public int dwTemplateNo;
+        public NET_DVR_GROUP_COMBINATION_INFO_V50[] struGroupCombination = (NET_DVR_GROUP_COMBINATION_INFO_V50[]) new NET_DVR_GROUP_COMBINATION_INFO_V50().toArray(8);
+    }
+
+    public static class NET_DVR_GROUP_COMBINATION_INFO_V50 extends HIKSDKStructure {
+        public byte byEnable;
+        public byte byMemberNum;
+        public byte bySequenceNo;
+        public byte byRes;
+        public int dwGroupNo;
+    }
+
+
+    //自定义结构体,用于二维数组转换
+    public static class NET_DVR_SINGLE_PLAN_SEGMENT_WEEK extends HIKSDKStructure {
+        public NET_DVR_SINGLE_PLAN_SEGMENT[] struPlanCfgDay = new NET_DVR_SINGLE_PLAN_SEGMENT[MAX_TIMESEGMENT_V30]; //一天的计划参数
+    }
+
+    public static class NET_DVR_WEEK_PLAN_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable;  //是否使能,1-使能,0-不使能
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_SINGLE_PLAN_SEGMENT_WEEK[] struPlanCfg = new NET_DVR_SINGLE_PLAN_SEGMENT_WEEK[MAX_DAYS]; //周计划参数
+        public byte[] byRes2 = new byte[16];
+    }
+
+    public static class NET_DVR_SINGLE_PLAN_SEGMENT extends HIKSDKStructure {
+        public byte byEnable; //是否使能,1-使能,0-不使能
+        public byte byDoorStatus; //门状态模式(梯控模式),0-无效,1-常开状态(自由),2-常闭状态(禁用),3-普通状态(门状态计划使用)
+        public byte byVerifyMode; //验证方式,0-无效,1-刷卡,2-刷卡+密码(读卡器验证方式计划使用),3-刷卡,4-刷卡或密码(读卡器验证方式计划使用), 5-指纹,6-指纹+密码,7-指纹或刷卡,8-指纹+刷卡,9-指纹+刷卡+密码(无先后顺序),10-人脸或指纹或刷卡或密码,11-人脸+指纹,12-人脸+密码,
+        //13-人脸+刷卡,14-人脸,15-工号+密码,16-指纹或密码,17-工号+指纹,18-工号+指纹+密码,19-人脸+指纹+刷卡,20-人脸+密码+指纹,21-工号+人脸,22-人脸或人脸+刷卡
+        public byte[] byRes = new byte[5];
+        public NET_DVR_TIME_SEGMENT struTimeSegment; //时间段参数
+    }
+
+
+    public static class NET_DVR_TIME_SEGMENT extends HIKSDKStructure {
+        public NET_DVR_SIMPLE_DAYTIME struBeginTime; //开始时间点
+        public NET_DVR_SIMPLE_DAYTIME struEndTime;   //结束时间点
+    }
+
+    public static class NET_DVR_SIMPLE_DAYTIME extends HIKSDKStructure {
+        public byte byHour; //时
+        public byte byMinute; //分
+        public byte bySecond; //秒
+        public byte byRes;
+    }
+
+    public static class NET_DVR_WEEK_PLAN_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwWeekPlanNumber; //周计划编号
+        public short wLocalControllerID; //就地控制器序号[1,64]
+        public byte[] byRes = new byte[106];
+    }
+
+    public static final int TEMPLATE_NAME_LEN = 32;      //计划模板名称长度
+    public static final int MAX_HOLIDAY_GROUP_NUM = 16;  //计划模板最大假日组数
+
+    public static class NET_DVR_PLAN_TEMPLATE extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable; //是否启用,1-启用,0-不启用
+        public byte[] byRes1 = new byte[3];
+        public byte[] byTemplateName = new byte[TEMPLATE_NAME_LEN]; //模板名称
+        public int dwWeekPlanNo; //周计划编号,0为无效
+        public int[] dwHolidayGroupNo = new int[MAX_HOLIDAY_GROUP_NUM]; //假日组编号,就前填充,遇0无效
+        public byte[] byRes2 = new byte[32];
+    }
+
+    public static class NET_DVR_PLAN_TEMPLATE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwPlanTemplateNumber; //计划模板编号,从1开始,最大值从门禁能力集获取
+        public short wLocalControllerID; //就地控制器序号[1,64],0无效
+        public byte[] byRes = new byte[106];
+    }
+
+    public static class NET_DVR_CAPTURE_FACE_COND extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_FACE_FEATURE extends HIKSDKStructure {
+        public NET_VCA_RECT struFace; //人脸子图区域
+        public NET_VCA_POINT struLeftEye;    // 左眼坐标
+        public NET_VCA_POINT struRightEye;   // 右眼坐标
+        public NET_VCA_POINT struLeftMouth;  // 嘴左边坐标
+        public NET_VCA_POINT struRightMouth; // 嘴右边坐标
+        public NET_VCA_POINT struNoseTip;   // 鼻子坐标
+    }
+
+    public static class NET_DVR_CAPTURE_FACE_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwFaceTemplate1Size;  //人脸模板1数据大小,等于0时,代表无人脸模板1数据
+        public Pointer pFaceTemplate1Buffer; //人脸模板1数据缓存(不大于2.5k)
+        public int dwFaceTemplate2Size;  //人脸模板2数据大小,等于0时,代表无人脸模板2数据
+        public Pointer pFaceTemplate2Buffer; //人脸模板2数据缓存(不大于2.5K)
+        public int dwFacePicSize;        //人脸图片数据大小,等于0时,代表无人脸图片数据
+        public Pointer pFacePicBuffer;       //人脸图片数据缓存
+        public byte byFaceQuality1;        //人脸质量,范围1-100
+        public byte byFaceQuality2;        //人脸质量,范围1-100
+        public byte byCaptureProgress;    //采集进度,目前只有两种进度值:0-未采集到人脸,100-采集到人脸(只有在进度为100时,才解析人脸信息)
+        public byte byFacePicQuality;  //人脸图片中人脸质量
+        public int dwInfraredFacePicSize;   //红外人脸图片数据大小,等于0时,代表无人脸图片数据
+        public Pointer pInfraredFacePicBuffer;      //红外人脸图片数据缓存
+        public byte byInfraredFacePicQuality;  //红外人脸图片中人脸质量
+        public byte[] byRes1 = new byte[3];
+        public NET_DVR_FACE_FEATURE struFeature = new NET_DVR_FACE_FEATURE(); //人脸抠图特征信息
+        public byte[] byRes = new byte[56];
+    }
+
+    public static class NET_DVR_XML_CONFIG_INPUT extends HIKSDKStructure {
+        public int dwSize;
+        public Pointer lpRequestUrl;
+        public int dwRequestUrlLen;
+        public Pointer lpInBuffer;
+        public int dwInBufferSize;
+        public int dwRecvTimeOut;
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_STRING_POINTER extends HIKSDKStructure {
+        public byte[] byString;
+
+        public NET_DVR_STRING_POINTER(int iLen) {
+            byString = new byte[iLen];
+        }
+    }
+
+    public static class NET_DVR_XML_CONFIG_OUTPUT extends HIKSDKStructure {
+        public int dwSize;
+        public Pointer lpOutBuffer;
+        public int dwOutBufferSize;
+        public int dwReturnedXMLSize;
+        public Pointer lpStatusBuffer;
+        public int dwStatusSize;
+        public byte[] byRes = new byte[32];
+    }
+
+    //报警场景信息
+    public static class NET_DVR_SCENE_INFO extends HIKSDKStructure {
+        public int dwSceneID;              //场景ID, 0 - 表示该场景无效
+        public byte[] bySceneName = new byte[NAME_LEN];  //场景名称
+        public byte byDirection;            //监测方向 1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南,8-其它
+        public byte[] byRes1 = new byte[3];              //保留
+        public NET_DVR_PTZPOS struPtzPos;             //Ptz 坐标
+        public byte[] byRes2 = new byte[64];            //保留
+    }
+
+    // 方向结构体
+    public static class NET_DVR_DIRECTION extends HIKSDKStructure {
+        public NET_VCA_POINT struStartPoint = new NET_VCA_POINT();   // 方向起始点
+        public NET_VCA_POINT struEndPoint = new NET_VCA_POINT();     // 方向结束点
+    }
+
+    // 交通事件信息
+    public static class NET_DVR_AID_INFO extends HIKSDKStructure {
+        public byte byRuleID;   // 规则序号,为规则配置结构下标,0-16
+        public byte[] byRes1 = new byte[3];
+        public byte[] byRuleName = new byte[NAME_LEN]; //  规则名称
+        public int dwAIDType;  // 报警事件类型
+        public NET_DVR_DIRECTION struDirect = new NET_DVR_DIRECTION(); // 报警指向区域
+        public byte bySpeedLimit; //限速值,单位km/h[0,255]
+        public byte byCurrentSpeed; //当前速度值,单位km/h[0,255]
+        public byte byVehicleEnterState; //车辆出入状态:0- 无效,1- 驶入,2- 驶出
+        public byte byState; //0-变化上传,1-轮巡上传
+        public byte[] byParkingID = new byte[16]; //停车位编号
+        public int dwAIDTypeEx;  // 报警事件类型扩展,参考TRAFFIC_AID_TYPE_EX
+        public byte[] byRes2 = new byte[16];  // 保留字节
+    }
+
+    public int ILLEGAL_LEN = 32; //违法代码长度
+    public int MONITORSITE_ID_LEN = 48;//监测点编号长度
+    public int DEVICE_ID_LEN = 48;
+
+    //交通取证报警
+    public static class NET_DVR_TFS_ALARM extends HIKSDKStructure {
+        public int dwSize;                //结构体大小
+        public int dwRelativeTime;        //相对时标
+        public int dwAbsTime;               //绝对时标
+        public int dwIllegalType;         //违章类型,采用国标定义,当dwIllegalType值为0xffffffff时使用byIllegalCode
+        public int dwIllegalDuration;     //违法持续时间(单位:秒) = 抓拍最后一张图片的时间 - 抓拍第一张图片的时间
+        public byte[] byMonitoringSiteID = new byte[MONITORSITE_ID_LEN];//监测点编号(路口编号、内部编号)
+        public byte[] byDeviceID = new byte[DEVICE_ID_LEN];             //设备编号
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();           //前端设备信息
+        public NET_DVR_SCENE_INFO struSceneInfo = new NET_DVR_SCENE_INFO();         //场景信息
+        public NET_DVR_TIME_EX struBeginRecTime = new NET_DVR_TIME_EX();      //录像开始时间
+        public NET_DVR_TIME_EX struEndRecTime = new NET_DVR_TIME_EX();        //录像结束时间
+        public NET_DVR_AID_INFO struAIDInfo = new NET_DVR_AID_INFO();           //交通事件信息
+        public NET_DVR_PLATE_INFO struPlateInfo = new NET_DVR_PLATE_INFO();         //车牌信息
+        public NET_DVR_VEHICLE_INFO struVehicleInfo = new NET_DVR_VEHICLE_INFO();       //车辆信息
+        public int dwPicNum; //图片数量
+        public NET_ITS_PICTURE_INFO[] struPicInfo = new NET_ITS_PICTURE_INFO[8];        //图片信息,最多8张
+        public byte bySpecificVehicleType;     //具体车辆种类  参考识别结果类型VTR_RESULT
+        public byte byLaneNo;  //关联车道号
+        public byte[] byRes1 = new byte[2]; //保留
+        public NET_DVR_TIME_V30 struTime = new NET_DVR_TIME_V30();//手动跟踪定位,当前时间。
+        public int dwSerialNo;//序号;
+        public byte byVehicleAttribute;//车辆属性,按位表示,0- 无附加属性(普通车),bit1- 黄标车(类似年检的标志),bit2- 危险品车辆,值:0- 否,1- 是
+        public byte byPilotSafebelt;//0-表示未知,1-系安全带,2-不系安全带
+        public byte byCopilotSafebelt;//0-表示未知,1-系安全带,2-不系安全带
+        public byte byPilotSunVisor;//0-表示未知,1-不打开遮阳板,2-打开遮阳板
+        public byte byCopilotSunVisor;//0-表示未知, 1-不打开遮阳板,2-打开遮阳板
+        public byte byPilotCall;// 0-表示未知, 1-不打电话,2-打电话
+        public byte[] byRes2 = new byte[2]; //保留
+        public byte[] byIllegalCode = new byte[ILLEGAL_LEN/*32*/];//违法代码扩展,当dwIllegalType值为0xffffffff;使用这个值
+        public short wCountry; // 国家索引值,参照枚举COUNTRY_INDEX
+        public byte byRegion; //区域索引值,0-保留,1-欧洲(Europe Region),2-俄语区域(Russian Region),3-欧洲&俄罗斯(EU&CIS) , 4-中东(Middle East),0xff-所有
+        public byte byCrossLine;//是否压线停车(侧方停车),0-表示未知,1-不压线,2-压线
+        public byte[] byParkingSerialNO = new byte[16];//泊车位编号
+        public byte byCrossSpaces;//是否跨泊车位停车(侧方停车),0-表示未知,1-未跨泊车位停车,2-跨泊车位停车
+        public byte byAngledParking;//是否倾斜停车(侧方停车), 0-表示未知,1-未倾斜停车,2-倾斜停车
+        public byte byAlarmValidity;//报警置信度,可以输出驶入驶出的置信度,范围0-100;置信度越高,事件真实性越高
+        public byte byDoorsStatus;//车门状态 0-车门关闭 1-车门开启
+        public int dwXmlLen;//XML报警信息长度
+        public Pointer pXmlBuf; // XML报警信息指针,其XML对应到EventNotificationAlert XML Block
+        public byte byVehicleHeadTailStatus;//车头车尾状态 0-保留 1-车头 2-车尾
+        public byte byBrokenNetHttp;        //断网续传标志位,0-不重传数据,1-重传数据
+        public byte[] byRes = new byte[30]; //保留
+    }
+
+    public static class NET_ITS_OVERLAPCFG_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;
+        public int dwConfigMode; //配置模式,0-终端,1-前端(直连前端或终端接前端)
+        public byte byPicModeType;//0-表示小图(独立图),1-表示大图(合成图)
+        /*
+          0表示关联 抓拍MPR模式(多帧触发抓拍 IPC使用)
+          1 表示关联 抓拍 HVT 模式(混卡IPC使用)
+        */
+        public byte byRelateType;
+        public byte[] byRes = new byte[14];
+
+    }
+
+    //字符叠加每一条信息结构体
+    public static class NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 extends HIKSDKStructure {
+        public byte[] byRes1 = new byte[2];                   // 保留
+        public byte byItemType;       //类型,详见OVERLAP_ITEM_TYPE
+        public byte byChangeLineNum; //叠加项后的换行数[0-10](默认0)
+        public byte bySpaceNum;      //叠加项后的空格数[0-255](默认0)
+        public byte[] byRes2 = new byte[2];
+        public byte byEnablePos;  //是否启用坐标显示
+        public short wStartPosTop;    //起始上坐标,只对图片内部叠加有效[0~2448](默认0)
+        public short wStartPosLeft;    //起始左坐标,只对图片内部叠加有效[0~2448](默认0)
+        //自定义类型;与byItemType参数对应。可将byItemType参数类型自定义名称。若自定义内容为空,便默认以byItemType参数中的类型命名。
+        public byte[] byItemTypeCustom = new byte[32];
+        public byte[] byRes = new byte[8];
+
+    }
+
+    public int MAX_OVERLAP_ITEM_NUM = 50; //最大字符叠加种数
+
+    public static class NET_ITS_OVERLAP_ITEM_PARAM_V50 extends HIKSDKStructure {
+        public NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50[] struSingleItem = new NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50[MAX_OVERLAP_ITEM_NUM]; //单条字符参数
+        public int dwLinePercent;  //叠加行百分比(0-100),(默认100)
+        public int dwItemsStlye;   //叠加方式:0-横排,1-竖排(默认横排)
+        public short wStartPosTop;    //起始上坐标,只对图片内部叠加有效[0~2448](默认0)
+        public short wStartPosLeft;    //起始左坐标,只对图片内部叠加有效[0~2448](默认0)
+        public short wCharStyle;    //字体类型,0-宋体1-魏体(默认)
+        public short wCharSize;    //字符大小,0--16x16,1--32x32,2-48x48,3--64x64 (默认),8x128(Ver3.7)
+        public short wCharInterval;    //字符间距,[0~16],可设单位:像素(默认)
+        public byte[] byRes1 = new byte[2];
+        public int dwForeClorRGB;      //前景色的RGB值bit0-1:(B) bit2-3:(G) bit4-5:(G) (默认x00FFFFFF-白)
+        public int dwBackClorRGB; //背景色的RGB值,只对图片外叠加有效bit0-1:(B) bit2-3:(G) bit4-5:(G) (默认x00000000-黑)
+        public byte byColorAdapt;    //颜色是否自适应0-否1-是
+        //(Ver3.7 新增)
+        // 参数补零使能 0-补零, 1-不补零(详细注释)速度,限速值 不足3位补0
+        public byte byParamFillZeroEnble;
+        public byte byPlateLeftCornerEnable;// 车牌小图叠加左上角使能 0-不叠加, 1-叠加
+        public byte byRes2;
+        public short wStartSPicPosTop; //起始上坐标,只对图片内部叠加有效[0~2448](默认0)
+        public short wStartSPicPosLeft; //起始左坐标,只对图片内部叠加有效[0~2448](默认0)
+        //OSD叠加位置  0-图片内,1-图片上边缘,2-图片下边缘(合成图专用的是上边缘外)(V3.7)
+        public byte byOsdLocate;
+        public byte[] byRes = new byte[63];
+
+    }
+
+    //叠加项具体信息
+    public static class NET_ITS_OVERLAP_INFO_PARAM extends HIKSDKStructure {
+        public byte[] bySite = new byte[128];           //地点描述
+        public byte[] byRoadNum = new byte[32];  //路口编号
+        public byte[] byInstrumentNum = new byte[32];                //设备编号
+        public byte[] byDirection = new byte[32];        //方向编号
+        public byte[] byDirectionDesc = new byte[32];    //方向描述
+        public byte[] byLaneDes = new byte[32];        //车道描述
+        public byte[] byRes1 = new byte[32];     //保留
+        public byte[] byMonitoringSite1 = new byte[44];        //监测点1信息
+        public byte[] byMonitoringSite2 = new byte[32];        //监测点2信息
+        public byte[] byRes = new byte[64];        //保留
+    }
+
+    public static class NET_ITS_OVERLAP_CFG_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable; //是否启用,0-不启用,1-启用
+        public byte[] byRes1 = new byte[3];
+        public NET_ITS_OVERLAP_ITEM_PARAM_V50 struOverLapItemV50 = new NET_ITS_OVERLAP_ITEM_PARAM_V50(); //字符串参数
+        public NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo = new NET_ITS_OVERLAP_INFO_PARAM();  //字符串内容信息
+        public byte[] byRes = new byte[120];
+
+    }
+
+    //人体特征识别结果结构体
+    public static class NET_VCA_HUMAN_FEATURE extends HIKSDKStructure {
+        public byte byAgeGroup;    //年龄段,参见 HUMAN_AGE_GROUP_ENUM
+        public byte bySex;         //性别, 0-表示“未知”(算法不支持),1 – 男 , 2 – 女, 0xff-算法支持,但是没有识别出来
+        public byte byEyeGlass;    //是否戴眼镜 0-表示“未知”(算法不支持),1 – 不戴, 2 – 戴,0xff-算法支持,但是没有识别出来
+        //抓拍图片人脸年龄的使用方式,如byAge为15,byAgeDeviation为1,表示,实际人脸图片年龄的为14-16之间
+        public byte byAge;//年龄 0-表示“未知”(算法不支持),0xff-算法支持,但是没有识别出来
+        public byte byAgeDeviation;//年龄误差值
+        public byte byRes0;   //字段预留
+        public byte byMask;       //是否戴口罩 0-表示“未知”(算法不支持),1 – 不戴, 2 – 戴, 0xff-算法支持,但是没有识别出来
+        public byte bySmile;      //是否微笑 0-表示“未知”(算法不支持),1 – 不微笑, 2 – 微笑, 0xff-算法支持,但是没有识别出来
+        public byte byFaceExpression;    /* 表情,参见FACE_EXPRESSION_GROUP_ENUM*/
+        public byte byRes1;
+        public byte byRes2;
+        public byte byHat; // 帽子, 0-不支持,1-不戴帽子,2-戴帽子,0xff-unknow表示未知,算法支持未检出
+        public byte[] byRes = new byte[4];    //保留
+    }
+
+    //人脸抓拍附加信息结构体
+    public static class NET_VCA_FACESNAP_ADDINFO extends HIKSDKStructure {
+        //人脸矩形框,该坐标为人脸小图(头肩照)中人脸的坐标
+        public NET_VCA_RECT struFacePicRect = new NET_VCA_RECT();
+        public int iSwingAngle;//旋转角, -90~90度
+        public int iTiltAngle;//俯仰角, -90~90度
+        public int dwPupilDistance;//瞳距,范围为:最小值为10像素,最大值为当前分辨率宽度/1.6
+        public byte byBlockingState;//目标遮挡状态, 0-表示“未知”(算法不支持),1~无遮挡,2~瞬时轻度遮挡,3~持续轻度遮挡,4~严重遮挡
+        public byte byFaceSnapThermometryEnabled;//人脸抓拍测温使能 1-开启 0-关闭
+        public byte byIsAbnomalTemperature;//人脸抓拍测温是否温度异常 1-是 0-否
+        public byte byThermometryUnit;//测温单位: 0-摄氏度(℃),1-华氏度(℉),2-开尔文(K)
+        public NET_DVR_TIME_EX struEnterTime = new NET_DVR_TIME_EX();   // 最佳抓拍下进入时间
+        public NET_DVR_TIME_EX struExitTime = new NET_DVR_TIME_EX();    // 最佳抓拍下离开时间
+        public float fFaceTemperature; // 人脸温度( - 20.0℃~150.0℃,精确到小数点后1位)
+        public float fAlarmTemperature;// 测温报警警阈值(精确到小数点后1位)
+        public byte[] byRes = new byte[472];// 保留字节
+    }
+
+    //人脸抓拍结果
+    public static class NET_VCA_FACESNAP_RESULT extends HIKSDKStructure {
+        public int dwSize;             // 结构大小
+        public int dwRelativeTime;     // 相对时标
+        public int dwAbsTime;            // 绝对时标
+        public int dwFacePicID;       //人脸图ID
+        public int dwFaceScore;        //人脸评分,0-100
+        public NET_VCA_TARGET_INFO struTargetInfo = new NET_VCA_TARGET_INFO();//报警目标信息
+        public NET_VCA_RECT struRect = new NET_VCA_RECT();      //人脸子图区域
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();    //前端设备信息
+        public int dwFacePicLen;        //人脸子图的长度,为0表示没有图片,大于0表示有图片
+        public int dwBackgroundPicLen; //背景图的长度,为0表示没有图片,大于0表示有图片(保留)
+        public byte bySmart;            //IDS设备返回0(默认值),Smart Functiom Return 1
+        public byte byAlarmEndMark;//报警结束标记0-保留,1-结束标记(该字段结合人脸ID字段使用,表示该ID对应的下报警结束,主要提供给NVR使用,用于判断报警结束,提取识别图片数据中,清晰度最高的图片)
+        public byte byRepeatTimes;   //重复报警次数,0-无意义
+        public byte byUploadEventDataType;//人脸图片数据长传方式:0-二进制数据,1-URL
+        public NET_VCA_HUMAN_FEATURE struFeature = new NET_VCA_HUMAN_FEATURE();  //人体属性
+        public float fStayDuration;  //停留画面中时间(单位: 秒)
+        public byte[] sStorageIP = new byte[16];        //存储服务IP地址
+        public short wStoragePort;            //存储服务端口号
+        public short wDevInfoIvmsChannelEx;     //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
+        public byte byFacePicQuality;
+        public byte byUIDLen;     // 上传报警的标识长度
+        public byte byLivenessDetectionStatus;// 活体检测状态:0-保留,1-未知(检测失败),2-非真人人脸,3-真人人脸,4-未开启活体检测
+        /*附加信息标识位(即是否有NET_VCA_FACESNAP_ADDINFO结构体),0-无附加信息, 1-有附加信息。*/
+        public byte byAddInfo;
+        public Pointer pUIDBuffer;  //标识指针
+        //附加信息指针,指向NET_VCA_FACESNAP_ADDINFO结构体
+        public Pointer pAddInfoBuffer;
+        public byte byTimeDiffFlag;      /*时差字段是否有效  0-时差无效, 1-时差有效 */
+        public byte cTimeDifferenceH;         /*与UTC的时差(小时),-12 ... +14, +表示东区,,byTimeDiffFlag为1时有效*/
+        public byte cTimeDifferenceM;        /*与UTC的时差(分钟),-30, 30, 45, +表示东区,byTimeDiffFlag为1时有效*/
+        public byte byBrokenNetHttp;     //断网续传标志位,0-不是重传数据,1-重传数据
+        public Pointer pBuffer1;  //人脸子图的图片数据
+        public Pointer pBuffer2;  //背景图的图片数据(保留,通过查找背景图接口可以获取背景图)
+    }
+
+    //人脸抓拍信息
+    public static class NET_VCA_FACESNAP_INFO_ALARM extends HIKSDKStructure {
+        public int dwRelativeTime;     // 相对时标
+        public int dwAbsTime;            // 绝对时标
+        public int dwSnapFacePicID;       //抓拍人脸图ID
+        public int dwSnapFacePicLen;        //抓拍人脸子图的长度,为0表示没有图片,大于0表示有图片
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();        //前端设备信息
+        public byte byFaceScore;        //人脸评分,指人脸子图的质量的评分,0-100
+        public byte bySex;//性别,0-未知,1-男,2-女
+        public byte byGlasses;//是否带眼镜,0-未知,1-是,2-否
+        //抓拍图片人脸年龄的使用方式,如byAge为15,byAgeDeviation为1,表示,实际人脸图片年龄的为14-16之间
+        public byte byAge;//年龄
+        public byte byAgeDeviation;//年龄误差值
+        public byte byAgeGroup;//年龄段,详见HUMAN_AGE_GROUP_ENUM,若传入0xff表示未知
+        public byte byFacePicQuality;
+        public byte byRes1;              // 保留字节
+        public int dwUIDLen; // 上传报警的标识长度
+        public Pointer pUIDBuffer;  //标识指针
+        public float fStayDuration;  //停留画面中时间(单位: 秒)
+        public Pointer pBuffer1;  //抓拍人脸子图的图片数据
+    }
+
+    //籍贯参数
+    public static class NET_DVR_AREAINFOCFG extends HIKSDKStructure {
+        public short wNationalityID; //国籍
+        public short wProvinceID; //省
+        public short wCityID; //市
+        public short wCountyID; //县
+        public int dwCode; //国家标准的省份、城市、县级代码,当这个字段不为0的时候,使用这个值,新设备上传这个值表示籍贯参数,老设备这个值为0
+    }
+
+    //人员信息
+    public int MAX_HUMAN_BIRTHDATE_LEN = 10;
+
+    public static class NET_VCA_HUMAN_ATTRIBUTE extends HIKSDKStructure {
+        public byte bySex; //性别:0-男,1-女
+        public byte byCertificateType; //证件类型:0-身份证,1-警官证
+        public byte[] byBirthDate = new byte[MAX_HUMAN_BIRTHDATE_LEN]; //出生年月,如:201106
+        public byte[] byName = new byte[NAME_LEN]; //姓名
+        public NET_DVR_AREAINFOCFG struNativePlace = new NET_DVR_AREAINFOCFG(); //籍贯参数
+        public byte[] byCertificateNumber = new byte[NAME_LEN];  //证件号
+        public int dwPersonInfoExtendLen;// 人员标签信息扩展长度
+        public Pointer pPersonInfoExtend;  //人员标签信息扩展信息
+        public byte byAgeGroup;//年龄段,详见HUMAN_AGE_GROUP_ENUM,如传入0xff表示未知
+        public byte[] byRes2 = new byte[11];
+    }
+
+
+    //禁止名单报警信息
+    public static class NET_VCA_BLOCKLIST_INFO_ALARM extends HIKSDKStructure {
+        public NET_VCA_BLOCKLIST_INFO struBlockListInfo = new NET_VCA_BLOCKLIST_INFO(); //禁止名单基本信息
+        public int dwBlockListPicLen;       //禁止名单人脸子图的长度,为0表示没有图片,大于0表示有图片
+        public int dwFDIDLen;// 人脸库ID长度
+        public Pointer pFDID;  //人脸库Id指针
+        public int dwPIDLen;// 人脸库图片ID长度
+        public Pointer pPID;  //人脸库图片ID指针
+        public short wThresholdValue; //人脸库阈值[0,100]
+        public byte[] byRes = new byte[2];              // 保留字节
+        public Pointer pBuffer1;  //禁止名单人脸子图的图片数据
+    }
+
+    //禁止名单信息
+    public static class NET_VCA_BLOCKLIST_INFO extends HIKSDKStructure {
+        public int dwSize;   //结构大小
+        public int dwRegisterID;  //名单注册ID号(只读)
+        public int dwGroupNo; //分组号
+        public byte byType; //黑允许名单标志:0-全部,1-允许名单,2-禁止名单
+        public byte byLevel; //禁止名单等级,0-全部,1-低,2-中,3-高
+        public byte[] byRes1 = new byte[2];  //保留
+        public NET_VCA_HUMAN_ATTRIBUTE struAttribute = new NET_VCA_HUMAN_ATTRIBUTE();  //人员信息
+        public byte[] byRemark = new byte[NAME_LEN]; //备注信息
+        public int dwFDDescriptionLen;//人脸库描述数据长度
+        public Pointer pFDDescriptionBuffer;//人脸库描述数据指针
+        public int dwFCAdditionInfoLen;//抓拍库附加信息长度
+        public Pointer pFCAdditionInfoBuffer;//抓拍库附加信息数据指针(FCAdditionInfo中包含相机PTZ坐标)
+        public byte[] byRes2 = new byte[4];
+    }
+
+
+    //禁止名单比对结果报警上传
+    public static class NET_VCA_FACESNAP_MATCH_ALARM extends HIKSDKStructure {
+        public int dwSize;             // 结构大小
+        public float fSimilarity; //相似度,[0.001,1]
+        public NET_VCA_FACESNAP_INFO_ALARM struSnapInfo = new NET_VCA_FACESNAP_INFO_ALARM(); //抓拍信息
+        public NET_VCA_BLOCKLIST_INFO_ALARM struBlockListInfo = new NET_VCA_BLOCKLIST_INFO_ALARM(); //禁止名单信息
+        public byte[] sStorageIP = new byte[16];        //存储服务IP地址
+        public short wStoragePort;            //存储服务端口号
+        public byte byMatchPicNum; //匹配图片的数量,0-保留(老设备这个值默认0,新设备这个值为0时表示后续没有匹配的图片信息)
+        public byte byPicTransType;//图片数据传输方式: 0-二进制;1-url
+        public int dwSnapPicLen;//设备识别抓拍图片长度
+        public Pointer pSnapPicBuffer;//设备识别抓拍图片指针
+        public NET_VCA_RECT struRegion = new NET_VCA_RECT();//目标边界框,设备识别抓拍图片中,人脸子图坐标
+        public int dwModelDataLen;//建模数据长度
+        public Pointer pModelDataBuffer;// 建模数据指针
+        public byte byModelingStatus;// 建模状态
+        public byte byLivenessDetectionStatus;//活体检测状态:0-保留,1-未知(检测失败),2-非真人人脸,3-真人人脸,4-未开启活体检测
+        public byte cTimeDifferenceH;         /*与UTC的时差(小时),-12 ... +14, +表示东区,0xff无效*/
+        public byte cTimeDifferenceM;      	/*与UTC的时差(分钟),-30, 30, 45, +表示东区,0xff无效*/
+        public byte byMask;                //抓拍图是否戴口罩,0-保留,1-未知,2-不戴口罩,3-戴口罩
+        public byte bySmile;               //抓拍图是否微笑,0-保留,1-未知,2-不微笑,3-微笑
+        public byte byContrastStatus;      //比对结果,0-保留,1-比对成功,2-比对失败
+        public byte byBrokenNetHttp;     //断网续传标志位,0-不是重传数据,1-重传数据
+    }
+
+    //交通事件报警(扩展)
+    public static class NET_DVR_AID_ALARM_V41 extends HIKSDKStructure {
+        public int dwSize;              //结构长度
+        public int dwRelativeTime;        //相对时标
+        public int dwAbsTime;            //绝对时标
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();            //前端设备信息
+        public NET_DVR_AID_INFO struAIDInfo = new NET_DVR_AID_INFO();         //交通事件信息
+        public NET_DVR_SCENE_INFO struSceneInfo = new NET_DVR_SCENE_INFO();       //场景信息
+        public int dwPicDataLen;        //图片长度
+        public Pointer pImage;             //指向图片的指针
+        // 0-数据直接上传; 1-云存储服务器URL(3.7Ver)原先的图片数据变成URL数据,图片长度变成URL长度
+        public byte byDataType;
+        public byte byLaneNo;  //关联车道号
+        public short wMilliSecond;        //时标毫秒
+        //监测点编号(路口编号、内部编号)
+        public byte[] byMonitoringSiteID = new byte[MONITORSITE_ID_LEN/*48*/];
+        public byte[] byDeviceID = new byte[DEVICE_ID_LEN/*48*/];//设备编号
+        public int dwXmlLen;//XML报警信息长度
+        public Pointer pXmlBuf;// XML报警信息指针,其XML对应到EventNotificationAlert XML Block
+        public byte byTargetType;// 检测的目标类型,0~未知,1~行人、2~二轮车、3~三轮车(行人检测中返回)
+        public byte byRuleID;//规则ID,1-4,当congestion事件配置了规则区域时返回
+        public short wDevInfoIvmsChannelEx;     //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
+        public byte byBrokenNetHttp; // 断网续传标志位,0-不重传数据,1-重传数据
+        public byte[] byRes = new byte[3]; // 保留字节
+        public int dwPlateSmallPicDataLen;      //车牌小图图片长度
+        public Pointer pPlateSmallImage;  // //指向车牌小图的指针
+    }
+
+
+    //交通统计信息报警(扩展)
+    public static class NET_DVR_TPS_ALARM_V41 extends HIKSDKStructure {
+        public int dwSize;          // 结构体大小
+        public int dwRelativeTime;  // 相对时标
+        public int dwAbsTime;       // 绝对时标
+        public NET_VCA_DEV_INFO struDevInfo;     // 前端设备信息
+        public NET_DVR_TPS_INFO_V41 struTPSInfo;     // 交通参数统计信息
+        //监测点编号(路口编号、内部编号)
+        public byte[] byMonitoringSiteID = new byte[MONITORSITE_ID_LEN/*48*/];
+        public byte[] byDeviceID = new byte[DEVICE_ID_LEN/*48*/];//设备编号
+        public int dwStartTime;  // 开始统计时间
+        public int dwStopTime;    // 结束统计时间
+        public byte[] byRes = new byte[24];      // 保留
+    }
+
+    public static class NET_DVR_LANE_PARAM_V41 extends HIKSDKStructure {
+        public byte[] byRuleName = new byte[NAME_LEN]; // 车道规则名称
+        public byte byRuleID;             // 规则序号,为规则配置结构下标,0-7
+        public byte byLaneType;             // 车道上行或下行
+        public byte byTrafficState;       // 车道的交通状态,0-无效,1-畅通,2-拥挤,3-堵塞
+        public byte byLaneNo;            //车道号
+        public int dwVaryType;           // 车道交通参数变化类型参照  TRAFFIC_DATA_VARY_TYPE_EX_ENUM,按位区分
+        public int dwTpsType;            // 数据变化类型标志,表示当前上传的统计参数中,哪些数据有效,参照ITS_TPS_TYPE,按位区分
+        public int dwLaneVolume;         // 车道流量,统计有多少车子通过
+        public int dwLaneVelocity;       // 车道速度,公里计算
+        public int dwTimeHeadway;       // 车头时距,以秒计算
+        public int dwSpaceHeadway;       // 车头间距,以米来计算
+        public float fSpaceOccupyRation;   // 车道占有率,百分比计算(空间上)
+        public float fTimeOccupyRation;    // 时间占有率,百分比计算
+        public int dwLightVehicle;       // 小型车数量
+        public int dwMidVehicle;         // 中型车数量
+        public int dwHeavyVehicle;       // 重型车数量
+        public NET_DVR_LANE_QUEUE struLaneQueue;        // 车道队列长度
+        public NET_VCA_POINT struRuleLocation;     // 规则位置虚拟线圈的中心
+        public int dwOversizeVehicle;    // 大型车数量
+        public byte[] byRes2 = new byte[60];           // 保留
+    }
+
+    public int MAX_TPS_RULE = 8;     // 最大参数规则数目
+
+    public static class NET_DVR_TPS_INFO_V41 extends HIKSDKStructure {
+        public int dwLanNum;          // 交通参数的车道数目
+        public NET_DVR_LANE_PARAM_V41[] struLaneParam = new NET_DVR_LANE_PARAM_V41[MAX_TPS_RULE];
+        public int dwSceneID;//场景ID
+        public byte[] byRes = new byte[28];         //保留
+    }
+
+    // 车道队列结构体
+    public static class NET_DVR_LANE_QUEUE extends HIKSDKStructure {
+        public NET_VCA_POINT struHead;       //队列头
+        public NET_VCA_POINT struTail;       //队列尾
+        public int dwLength;      //实际队列长度 单位为米 [0-500]
+    }
+
+    //TPS统计过车数据上传
+    public static class NET_DVR_TPS_STATISTICS_INFO extends HIKSDKStructure {
+        public int dwSize;          // 结构体大小
+        public int dwChan;//通道号
+        public NET_DVR_TPS_STATISTICS_PARAM struTPSStatisticsInfo;// 交通参数统计信息
+        public byte[] byRes = new byte[128];      // 保留
+    }
+
+
+    // 交通参数统计信息
+    public static class NET_DVR_TPS_STATISTICS_PARAM extends HIKSDKStructure {
+        public byte byStart;          // 开始码
+        public byte byCMD;         // 命令号, 08-定时成组数据指令
+        public byte[] byRes = new byte[2];        // 预留字节
+        public short wDeviceID;      // 设备ID
+        public short wDataLen;       // 数据长度
+        public byte byTotalLaneNum;  // 有效车道总数
+        public byte[] byRes1 = new byte[15];
+        public NET_DVR_TIME_V30 struStartTime;    //统计开始时间
+        public int dwSamplePeriod;    //统计时间,单位秒
+        public NET_DVR_TPS_LANE_PARAM[] struLaneParam = new NET_DVR_TPS_LANE_PARAM[8];
+    }
+
+    //统计信息
+    public static class NET_DVR_TPS_LANE_PARAM extends HIKSDKStructure {
+        public byte byLane;             // 对应车道号
+        public byte bySpeed;             // 车道过车平均速度
+        public byte[] byRes = new byte[2];             // 保留
+        public int dwLightVehicle;      // 小型车数量
+        public int dwMidVehicle;        // 中型车数量
+        public int dwHeavyVehicle;      // 重型车数量
+        public int dwTimeHeadway;      // 车头时距,以秒计算
+        public int dwSpaceHeadway;     // 车头间距,以米来计算
+        public float fSpaceOccupyRation; // 空间占有率,百分比计算,浮点数*1000
+        public float fTimeOccupyRation;  // 时间占有率,百分比计算,浮点数*1000
+        public byte[] byRes1 = new byte[16];               // 保留
+    }
+
+    //TPS实时过车数据上传
+    public static class NET_DVR_TPS_REAL_TIME_INFO extends HIKSDKStructure {
+        public int dwSize;          // 结构体大小
+        public int dwChan;//通道号
+        public NET_DVR_TIME_V30 struTime;    //检测时间
+        public NET_DVR_TPS_PARAM struTPSRealTimeInfo;// 交通参数统计信息
+        public Pointer pAddInfoBuffer;
+        /*附加信息标识(即是否有NET_DVR_TPS_ADDINFO结构体),0-无附加信息, 1-有附加信息。*/
+        public byte byAddInfoFlag;
+        public byte[] byRes1 = new byte[3];      // 保留
+        public int dwDeviceIDEx;   // 设备ID扩展
+        public byte[] byRes = new byte[8];       // 保留
+    }
+
+    //实时信息
+    public static class NET_DVR_TPS_PARAM extends HIKSDKStructure {
+        public byte byStart;          // 开始码
+        public byte byCMD;         // 命令号,01-进入指令,02-离开指令,03-拥堵状态指令(为03时,只有byLaneState和byQueueLen有效),04-多线圈状态(为04时,wLoopState和wStateMask有效,表示byLane车道上多个线圈的过车状态)
+        public short wSpaceHeadway;        //车头间距,以米来计算
+        public short wDeviceID;      // 设备ID
+        public short wDataLen;       // 数据长度
+        public byte byLane;         // 对应车道号
+        public byte bySpeed;        // 对应车速(KM/H)
+        public byte byLaneState;     // 车道状态;0-无状态,1-畅通,2-拥挤,3-堵塞
+        public byte byQueueLen;       // 堵塞状态下排队长度(比如50米)
+        public short wLoopState;         //线圈状态,第几位表示几号线圈状态。状态1-到达,0-离开,线圈编号从镜头由近到远依次增大,用户在解析时优先解析车道号,再解析线圈号,单个车道的线圈号是唯一的。
+        public short wStateMask;         //线圈状态掩码,掩码位为1对应wLoopState状态位有效,为0表示无效
+        public int dwDownwardFlow;     //当前车道 从上到下车流量
+        public int dwUpwardFlow;       //当前车道 从下到上车流量
+        public byte byJamLevel;         //拥堵等级,当byLaneState为3时有效,1-轻度,2-中度,3-重度
+        public byte byVehicleDirection; //0-未知,1-由上而下,2-由下而上
+        public byte byJamFlow;          //拥堵新增流量,每新增一辆车就上报一次累计车辆的信息
+        public byte byChannelizationLane;         //渠化车道号(渠化表示,车道数量变化的情况,一般为路口车道的数目)
+        public byte byVehicleType; //车型识别:0- 未知,1- 客车(大型),2- 货车(大型),3- 轿车(小型),4- 非机动车
+        public byte[] byRes1 = new byte[5];        //保留
+        public short wTimeHeadway;        // 车头时距,以秒计算
+    }
+
+    public static class NET_DVR_TIME_SEARCH_COND extends HIKSDKStructure {
+        public short wYear; //年
+        public byte byMonth; //月
+        public byte byDay; //日
+        public byte byHour; //时
+        public byte byMinute; //分
+        public byte bySecond; //秒
+        public byte byLocalOrUTC; //0-时差无效,设备本地时间,即设备OSD时间  1-时差有效
+        public short wMillisecond;       //毫秒,精度不够,默认为0
+        public byte cTimeDifferenceH;   //与UTC的时差(小时),-12 ... +14,+表示东区,byLocalOrUTC为1时有效
+        public byte cTimeDifferenceM;   //与UTC的时差(分钟),-30, 0, 30, 45,+表示东区,byLocalOrUTC为1时有效
+    }
+
+    //事件搜索条件
+    public static class NET_DVR_SEARCH_EVENT_PARAM extends HIKSDKStructure {
+        public short wMajorType;        //0-移动侦测,1-报警输入, 2-智能事件 5-pos录像 7-门禁事件, 8-非视频联动事件
+        public short wMinorType;       //搜索次类型- 根据主类型变化,0xffff表示全部
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME();    //搜索的开始时间,停止时间: 同时为(0, 0) 表示从最早的时间开始,到最后,最前面的4000个事件
+        public NET_DVR_TIME struEndTime = new NET_DVR_TIME();    //搜索的结束时间
+        public byte byLockType;      // 0xff-全部,0-未锁,1-锁定
+        public byte byValue;        //0-按位表示,1-按值表示
+        public byte[] byRes = new byte[130];        // 保留
+        public UNION_EVENT_PARAM uSeniorParam = new UNION_EVENT_PARAM();
+    }
+
+    public static class UNION_EVENT_PARAM extends Union {
+        public byte[] byLen = new byte[SEARCH_EVENT_INFO_LEN];
+        public EVENT_INQUESTPARAM struInquestParam = new EVENT_INQUESTPARAM();
+    }
+
+    //审讯事件搜索条件
+    public static class EVENT_INQUESTPARAM extends HIKSDKStructure {
+        public byte byRoomIndex;    //审讯室编号,按值表示,从1开始
+        public byte[] byRes1 = new byte[3];
+        public byte[] sInquestInfo = new byte[INQUEST_CASE_LEN];
+        public byte[] byRes2 = new byte[232];     //保留
+    }
+
+    //事件搜索条件
+    public static class NET_DVR_SEARCH_EVENT_PARAM_V50 extends HIKSDKStructure {
+        public short wMajorType;            //0-移动侦测,1-报警输入, 2-智能事件 5-pos录像 7-门禁事件, 8-非视频联动事件
+        public short wMinorType;            //搜索次类型- 根据主类型变化,0xffff表示全部
+        public NET_DVR_TIME_SEARCH_COND struStartTime = new NET_DVR_TIME_SEARCH_COND();    //搜索的开始时间,停止时间: 同时为(0, 0) 表示从最早的时间开始,到最后,最前面的4000个事件
+        public NET_DVR_TIME_SEARCH_COND struEndTime = new NET_DVR_TIME_SEARCH_COND();    //搜索的结束时间
+        public byte byLockType;        // 0xff-全部,0-未锁,1-锁定
+        public byte byQuickSearch;        // 是否启用快速查询,0-不启用,1-启用(快速查询不会返回文件大小,仅对设备数据库进行查询,避免频繁唤醒硬盘)
+        public byte[] byRes = new byte[254];        // 保留
+        public UNION_EVENT_PARAM_V50 uSeniorParam = new UNION_EVENT_PARAM_V50();
+    }
+
+    public static class UNION_EVENT_PARAM_V50 extends Union {
+        public byte[] byLen = new byte[SEARCH_EVENT_INFO_LEN_V40/*800*/];
+        public EVENT_ALARMPARAM_V50 struAlarmParam = new EVENT_ALARMPARAM_V50();
+        public EVENT_MOTIONPARAM_V50 struMotionParam = new EVENT_MOTIONPARAM_V50();
+        public EVENT_VCAPARAM_V50 struVcaParam = new EVENT_VCAPARAM_V50();
+        public EVENT_INQUESTPARAM_V50 struInquestParam = new EVENT_INQUESTPARAM_V50();
+        public EVENT_VCADETECTPARAM_V50 struVCADetect = new EVENT_VCADETECTPARAM_V50();
+        public EVENT_STREAMIDPARAM_V50 struStreamIDParam = new EVENT_STREAMIDPARAM_V50();
+        public EVENT_POSPARAM_V50 struPosAlarm = new EVENT_POSPARAM_V50();
+        public EVENT_TRIALPARAM_V50 struTrialParam = new EVENT_TRIALPARAM_V50();
+        public EVENT_ACSPARAM_V50 struACSAlarm = new EVENT_ACSPARAM_V50();
+        public EVENT_IOTPARAM_V50 struIOTAlarm = new EVENT_IOTPARAM_V50();
+    }
+
+    public static class EVENT_ALARMPARAM_V50 extends HIKSDKStructure {
+        /*报警输入号,按值表示,采用紧凑型排列,0xffff表示后续无效*/
+        public short[] wAlarmInNo = new short[128];
+        public byte[] byRes = new byte[544]; //保留
+    }
+
+    //移动侦测
+    public static class EVENT_MOTIONPARAM_V50 extends HIKSDKStructure {
+        /* 移动侦测通道,按值表示 ,采用紧凑型排列,0xffff表示后续无效*/
+        public short[] wMotDetChanNo = new short[MAX_CHANNUM_V30];
+        public byte[] byRes = new byte[672];                /*保留*/
+    }
+
+    //行为分析
+    public static class EVENT_VCAPARAM_V50 extends HIKSDKStructure {
+        //行为分析对应的通道,按值表示,采用紧凑型排列,0xffff表示后续无效
+        public short[] wChanNo = new short[MAX_CHANNUM_V30];
+        public byte byRuleID;      //行为分析类型,规则0xff表示全部,从0开始
+        public byte byDriverBehaviortType;  //司机驾驶行为类型:0-保留、1-抽烟、2-接打电话、3-疲劳驾驶、4-分神提醒、5-驾驶员异常、6-未系安全带、7-红外阻断墨镜
+        public byte byADASType;  //高级辅助驾驶类型:0-保留、1-前向碰撞、2-车道偏离、3-盲区检测、4-车距检测、5-行人防撞、6-急加速、7-急减速、8-急左转弯、9-急右转弯、10-车辆翻车、11-未礼让行人
+        public byte byGSensorType;  // G-Sensor事件:0-保留、1-急加速、2-急减速、3-急左转弯、4-急右转弯、5-车辆翻车、6-车辆碰撞
+        public byte bySensorInType;  // Sensor-In行为:0-保留、1-刹车、2-左转、3-右转、4-倒车
+        public byte[] byRes = new byte[667];     /*保留*/
+    }
+
+    //审讯事件搜索条件
+    public static class EVENT_INQUESTPARAM_V50 extends HIKSDKStructure {
+        public byte byRoomIndex;    //审讯室编号,从1开始
+        public byte[] byRes = new byte[799];     //保留
+    }
+
+    //智能侦测查找条件 ,通道号按值表示
+    public static class EVENT_VCADETECTPARAM_V50 extends HIKSDKStructure {
+        public byte byAll;  //查找全部通道,0-否,此时dwChanNo参数有效,
+        //1-查找全部通道,此时dwChanNo参数无效。
+        public byte[] byRes1 = new byte[3];
+        public short[] wChanNo = new short[MAX_CHANNUM_V30];// 触发通道号,按值表示,0xffff无效,且后续数据也表示无效值
+        public byte[] byRes = new byte[668];
+    }
+
+    public static class EVENT_STREAMIDPARAM_V50 extends HIKSDKStructure {
+        public NET_DVR_STREAM_INFO struIDInfo = new NET_DVR_STREAM_INFO(); // 流id信息,72字节长
+        public int dwCmdType;  // 外部触发类型,NVR接入云存储使用
+        public byte byBackupVolumeNum; //存档卷号,CVR使用
+        public byte[] byRes1 = new byte[3];
+        public byte[] byArchiveLabel = new byte[64]; //存档标签,CVR使用
+        public byte[] byRes = new byte[656];
+    }
+
+    //pos录像
+    public static class EVENT_POSPARAM_V50 extends HIKSDKStructure {
+        public short[] wChannel = new short[MAX_CHANNUM_V30];        //通道,按值表示,紧凑型排列,遇到0xffff时表示数组后续值无效
+        public byte byAllChan;        //是否查找全部通道,0-否,此时wChannel有效,1-全部通道,此时wChannel无效
+        public byte byCaseSensitive;      //0-不区分大小写, 1-区分大小写
+        public byte byCombinateMode;  //关键字组合方式,0-或,1-与
+        public byte byRes1;              //保留
+        public byte[] sKeyWord = new byte[MAX_POS_KEYWORDS_NUM * MAX_POS_KEYWORD_LEN];
+        //关键字查找时的条件
+        public byte[] byRes = new byte[284];          //保留
+    }
+
+    public static class EVENT_TRIALPARAM_V50 extends HIKSDKStructure {
+        public byte[] byCaseNo = new byte[SEARCH_CASE_NO_LEN];
+        public byte[] byCaseName = new byte[SEARCH_CASE_NAME_LEN];
+        public byte[] byLitigant1 = new byte[SEARCH_LITIGANT_LEN];
+        public byte[] byLitigant2 = new byte[SEARCH_LITIGANT_LEN];
+        public byte[] byChiefJudge = new byte[SEARCH_CHIEF_JUDGE_LEN];
+        public byte byCaseType;
+        public byte[] byRes = new byte[547];
+    }
+
+    //门禁事件搜索条件
+    public static class EVENT_ACSPARAM_V50 extends HIKSDKStructure {
+        public int dwMajor; //报警主类型(与事件上传主类型一致,0代表全部)
+        public int dwMinor; //报警次类型(与事件上传主类型一致,0代表全部)
+        public byte[] byCardNo = new byte[ACS_CARD_NO_LEN]; //卡号
+        public byte[] byName = new byte[NAME_LEN/*32*/]; //姓名
+        public byte[] byMACAddr = new byte[MACADDR_LEN]; //物理MAC地址
+        public byte[] byRes = new byte[722];
+    }
+
+    //非视频联动事件搜索条件
+    public static class EVENT_IOTPARAM_V50 extends HIKSDKStructure {
+        public short wDeviceType;            //设备类型,0-海康门禁主机,1-海康可视对讲设备, 2-海康报警主机(预留) 3-GJD报警主机 4-Luminite报警主机, 5-OPTEX报警主机,6-cameraDetector模拟相机传感器设备
+        public short wEventType;            //搜索次类型- 根据主类型变化,0xffff表示全部
+        public short[] wChannel = new short[MAX_CHANNUM_V30/*64*/];        //通道号,按值表示,紧凑型排列,遇到0xffff时表示数组后续值无效
+        public byte byAllChan;        //是否查找全部通道,0-否,此时wChannel有效,1-全部通道,此时wChannel无效
+        public byte byCaseSensitive;      //0-不区分大小写, 1-区分大小写
+        public byte byCombinateMode;  //关键字组合方式,0-或,1-与
+        public byte bySearchType;      //搜索方式:0-按视频源搜索(此时通道号为视频通道号)
+        public byte[] sKeyWord = new byte[MAX_POS_KEYWORDS_NUM * MAX_POS_KEYWORD_LEN];//关键字查找时的条件
+        public short wZoneNo;      //防区号,仅当设备类型为海康报警主机,次类型为防区(wEventType为1)时有效
+        public byte[] byRes = new byte[278];   //保留
+    }
+
+    //查找返回结果
+    public static class NET_DVR_SEARCH_EVENT_RET extends HIKSDKStructure {
+        public short wMajorType;            //主类型
+        public short wMinorType;            //次类型
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME();    //事件开始的时间
+        public NET_DVR_TIME struEndTime = new NET_DVR_TIME();   //事件停止的时间
+        public byte[] byChan = new byte[MAX_CHANNUM_V30];
+        public byte[] byChanEx = new byte[32];   //关联通道,按位表示,使用该字段后byChan可以不使用
+        public byte[] byRes = new byte[4];
+        public UNION_EVENT_RET uSeniorRet = new UNION_EVENT_RET();
+    }
+
+    public static class UNION_EVENT_RET extends Union {
+        public byte[] byLen = new byte[304];
+        public EVENT_ALARMSTRET struAlarmRet = new EVENT_ALARMSTRET();
+        public EVENT_INQUESTRET struInquestRet = new EVENT_INQUESTRET();
+    }
+
+    //报警输入结果
+    public static class EVENT_ALARMSTRET extends HIKSDKStructure {
+
+        public int dwAlarmInNo;     //报警输入号
+        public byte[] byRes = new byte[SEARCH_EVENT_INFO_LEN];
+    }
+
+    //审讯事件
+    public static class EVENT_INQUESTRET extends HIKSDKStructure {
+        public byte byRoomIndex;     //审讯室编号,从1开始
+        public byte byDriveIndex;    //刻录机编号,从1开始
+        public byte[] byRes1 = new byte[6];       //保留
+        public int dwSegmentNo;     //本片断在本次审讯中的序号,从1开始
+        public short wSegmetSize;     //本片断的大小, 单位M
+        public short wSegmentState;   //本片断状态 0 刻录正常,1 刻录异常,2 不刻录审讯
+        public byte[] byRes2 = new byte[288];     //保留
+
+        @Override
+        protected List<String> getFieldOrder() {
+            // TODO Auto-generated method stub
+            return Arrays.asList("byRoomIndex", "byDriveIndex", "byRes1", "dwSegmentNo", "wSegmetSize", "wSegmentState", "byRes2");
+        }
+    }
+
+    //查找返回结果
+    public static class NET_DVR_SEARCH_EVENT_RET_V50 extends HIKSDKStructure {
+        public short wMajorType;            //主类型
+        public short wMinorType;            //次类型
+        public NET_DVR_TIME_SEARCH struStartTime = new NET_DVR_TIME_SEARCH();    //事件开始的时间
+        public NET_DVR_TIME_SEARCH struEndTime = new NET_DVR_TIME_SEARCH();   //事件停止的时间,脉冲事件时和开始时间一样
+        public NET_DVR_ADDRESS struAddr = new NET_DVR_ADDRESS();  //片段所在的地址信息,集群回放时用到
+        public short[] wChan = new short[MAX_CHANNUM_V40/*512*/];    //触发的通道号,0xffff表示后续无效
+        public byte[] byRes = new byte[256];
+        public UNION_EVENT_RET_V50 uSeniorRet = new UNION_EVENT_RET_V50();
+    }
+
+    public static class UNION_EVENT_RET_V50 extends Union {
+        public byte[] byLen = new byte[800];
+        public EVENT_ALARMRET_V50 struAlarmRet = new EVENT_ALARMRET_V50();
+        public EVENT_MOTIONRET_V50 struMotionRet = new EVENT_MOTIONRET_V50();
+        public EVENT_VCARET_V50 struVcaRet = new EVENT_VCARET_V50();
+        public EVENT_INQUESTRET_V50 struInquestRet = new EVENT_INQUESTRET_V50();
+        public EVENT_STREAMIDRET_V50 struStreamIDRet = new EVENT_STREAMIDRET_V50();
+        public EVENT_POSRET_V50 struPosRet = new EVENT_POSRET_V50();
+        public EVENT_TRIALRET_V50 struTrialRet = new EVENT_TRIALRET_V50();
+        public EVENT_IOTRET_V50 struIOTRet = new EVENT_IOTRET_V50();
+    }
+
+    //报警输入结果
+    public static class EVENT_ALARMRET_V50 extends HIKSDKStructure {
+        public int dwAlarmInNo;     //报警输入号
+        public byte[] byRes = new byte[796];
+    }
+
+    //移动侦测结果
+    public static class EVENT_MOTIONRET_V50 extends HIKSDKStructure {
+        public int dwMotDetNo;    //移动侦测通道
+        public byte[] byRes = new byte[796];
+    }
+
+    //行为分析结果
+    public static class EVENT_VCARET_V50 extends HIKSDKStructure {
+        public int dwChanNo;                    //触发事件的通道号
+        public byte byRuleID;                    //规则ID
+        public byte[] byRes1 = new byte[3];                    //保留
+        public byte[] byRuleName = new byte[NAME_LEN];        //规则名称
+        public NET_VCA_EVENT_UNION uEvent = new NET_VCA_EVENT_UNION();     //行为事件参数
+        public byte[] byRes = new byte[668];                    //保留
+    }
+
+    //审讯事件
+    public static class EVENT_INQUESTRET_V50 extends HIKSDKStructure {
+        public byte byRoomIndex;     //审讯室编号,从1开始
+        public byte byDriveIndex;    //刻录机编号,从1开始
+        public byte[] byRes1 = new byte[6];       //保留
+        public int dwSegmentNo;     //本片断在本次审讯中的序号,从1开始
+        public short wSegmetSize;     //本片断的大小, 单位M
+        public short wSegmentState;   //本片断状态 0 刻录正常,1 刻录异常,2 不刻录审讯
+        public byte[] byRes2 = new byte[784];     //保留
+    }
+
+    //流id录像查询结果
+    public static class EVENT_STREAMIDRET_V50 extends HIKSDKStructure {
+        public int dwRecordType;    //录像类型 0-定时录像 1-移动侦测 2-报警录像 3-报警|移动侦测 4-报警&移动侦测 5-命令触发 6-手动录像 7-震动报警 8-环境触发 9-智能报警 10-回传录像
+        public int dwRecordLength;    //录像大小
+        public byte byLockFlag;    // 锁定标志 0:没锁定 1:锁定
+        public byte byDrawFrameType;    // 0:非抽帧录像 1:抽帧录像
+        public byte byPosition;// 文件所在存储位置:0-阵列上,1-带库机位上,可以直接下载,2-磁带库内,需要把磁盘切换到机位上,3-不在磁带库中,需要把磁盘插到磁带库中
+        public byte byRes1;
+        public byte[] byFileName = new byte[NAME_LEN];     //文件名
+        public int dwFileIndex;            // 存档卷上的文件索引
+        public byte[] byTapeIndex = new byte[NET_SDK_MAX_TAPE_INDEX_LEN];  //文件所在磁带编号
+        public byte[] byFileNameEx = new byte[NET_SDK_MAX_FILE_LEN/*256*/]; //文件名扩展
+        public byte[] byRes = new byte[464];
+    }
+
+    //POS录像查询结果
+    public static class EVENT_POSRET_V50 extends HIKSDKStructure {
+        public int dwChanNo;        //触发产生pos事件的通道
+        public byte[] byRes = new byte[796];
+    }
+
+    public static class EVENT_TRIALRET_V50 extends HIKSDKStructure {
+        public byte byRoomIndex;     //审讯室编号,从1开始
+        public byte byDriveIndex;    //刻录机编号,从1开始
+        public short wSegmetSize;     //本片断的大小, 单位M
+        public int dwSegmentNo;    //本片断在本次审讯中的序号,从1开始
+        public byte bySegmentState;   //本片断状态,0-刻录正常,1-刻录异常,2-不刻录审讯
+        public byte byCaseType; //案件类型;0-全部、1-刑事案件、2-民事案件
+        public byte[] byRes = new byte[2];
+        public byte[] byCaseNo = new byte[CASE_NO_RET_LEN];  //案件编号
+        public byte[] byCaseName = new byte[CASE_NAME_RET_LEN]; //案件名称;
+        public byte[] byLitigant1 = new byte[LITIGANT_RET_LEN]; //当事人1;
+        public byte[] byLitigant2 = new byte[LITIGANT_RET_LEN]; //当事人2;
+        public byte[] byChiefJudge = new byte[CHIEF_JUDGE_RET_LEN];//审判长
+        public byte[] byRes1 = new byte[600];
+    }
+
+    //非视频通道查询结果
+    public static class EVENT_IOTRET_V50 extends HIKSDKStructure {
+        public int dwChanNo;        //触发产生事件的通道号(事件源通道)
+        public byte[] byRes = new byte[796];
+    }
+
+    public static class NET_DVR_INQUEST_RESUME_SEGMENT extends HIKSDKStructure {
+        public NET_DVR_TIME struStartTime = new NET_DVR_TIME(); //事件起始时间
+        public NET_DVR_TIME struStopTime = new NET_DVR_TIME();  //事件终止时间
+        public byte byRoomIndex;         //审讯室编号,从1开始
+        public byte byDriveIndex;        //刻录机编号,从1开始
+        public short wSegmetSize;         //本片断的大小, 单位M
+        public int dwSegmentNo;         //本片断在本次审讯中的序号,从1开始
+        public byte[] byRes = new byte[24];           //保留
+    }
+
+    public static class NET_DVR_INQUEST_RESUME_EVENT extends HIKSDKStructure {
+        public int dwResumeNum;       //需恢复的事件个数
+        public NET_DVR_INQUEST_RESUME_SEGMENT[] struResumeSegment = new NET_DVR_INQUEST_RESUME_SEGMENT[MAX_RESUME_SEGMENT];
+        public byte byResumeMode;        //恢复模式,0-单光盘恢复,1-双光盘恢复
+        public byte[] byRes = new byte[199];        //保留
+    }
+
+    //报警信息查询条件结构体
+    public static class NET_DVR_ALARM_SEARCH_COND extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_TIME_SEARCH_COND strStartTime; //开始时间,时间为空则代表不通过时间筛选。
+        public NET_DVR_TIME_SEARCH_COND strStopTime;  //结束时间, 时间为空则代表不通过时间筛选。
+        /*
+  	报警命令,该字段值与报警布防类型相同,目前支持:
+  	COMM_VCA_ALARM 	0x4993  智能检测报警
+  	COMM_UPLOAD_FACESNAP_RESULT    0x1112  人脸识别结果上传
+  	COMM_SNAP_MATCH_ALAR    0x2902  人脸比对结果上传
+	 */
+        public int dwAlarmComm;   //若该命令为空这代表不进行报警命令过滤。
+        public byte[] sAlarmUID = new byte[64];   //UID标识(上传报警时设备返回的UID标识,64字节的长度,可以使用时间(精确到毫秒)加上随即数的方式组成),为空则代表不区分UID
+        public byte[] byRes = new byte[128];
+    }
+
+    //报警信息查询结果结构体
+    public static class NET_DVR_ALARM_SEARCH_RESULT extends HIKSDKStructure {
+        public int dwSize;
+        /*
+  	报警命令,该字段值与报警布防类型相同,目前支持:
+  	COMM_VCA_ALARM 	0x4993    智能检测报警
+  	COMM_UPLOAD_FACESNAP_RESULT    0x1112  人脸识别结果上传
+  	COMM_SNAP_MATCH_ALARM   0x2902 人脸比对结果上传
+	 */
+        public int dwAlarmComm;
+        /*
+  	报警信息,该字段值与报警信息相同,目前支持:
+  	当COMM_VCA_ALARM时,该报警信息为JSON报文
+  	当COMM_UPLOAD_FACESNAP_RESULT时,该报警信息为NET_VCA_FACESNAP_RESULT
+  	当COMM_SNAP_MATCH_ALARM—¶,该报警信息为NET_VCA_FACESNAP_MATCH_ALARM
+	 */
+        public int dwAlarmLen;//报警信息,即pAlarmInfo指针指向的数据长度
+        public Pointer pAlarmInfo;
+        public NET_DVR_ALARMER struAlarmer = new NET_DVR_ALARMER();
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class NET_DVR_ALARM_ISAPI_INFO extends HIKSDKStructure {
+        public Pointer pAlarmData;           // 报警数据(参见下表)
+        public int dwAlarmDataLen;   // 报警数据长度
+        public byte byDataType;        // 0-invalid,1-xml,2-json
+        public byte byPicturesNumber;  // 图片数量
+        public byte[] byRes = new byte[2];
+        public Pointer pPicPackData;         // 图片变长部分
+        //(byPicturesNumber个{NET_DVR_ALARM_ISAPI_PICDATA};)
+        public byte[] byRes1 = new byte[32];
+    }
+
+    public static class NET_DVR_LOCAL_GENERAL_CFG extends HIKSDKStructure {
+        public byte byExceptionCbDirectly;    //0-通过线程池异常回调,1-直接异常回调给上层
+        public byte byNotSplitRecordFile;     //回放和预览中保存到本地录像文件不切片 0-默认切片,1-不切片
+        public byte byResumeUpgradeEnable;    //断网续传升级使能,0-关闭(默认),1-开启
+        public byte byAlarmJsonPictureSeparate;   //控制JSON透传报警数据和图片是否分离,0-不分离,1-分离(分离后走COMM_ISAPI_ALARM回调返回)
+        public byte[] byRes = new byte[4];      //保留
+        public long i64FileSize;      //单位:Byte
+        public int dwResumeUpgradeTimeout;       //断网续传重连超时时间,单位毫秒
+        public byte[] byRes1 = new byte[236];    //预留
+
+    }
+
+    public static class NET_DVR_LOCAL_TCP_PORT_BIND_CFG extends HIKSDKStructure {
+        public short wLocalBindTcpMinPort;            //本地绑定Tcp最小端口
+        public short wLocalBindTcpMaxPort;            //本地绑定Tcp最大端口
+        public byte[] byRes = new byte[60];                        //保留
+    }
+
+
+    public static class NET_DVR_LOCAL_CHECK_DEV extends HIKSDKStructure {
+        public int dwCheckOnlineTimeout;     //巡检时间间隔,单位ms  最小值为30s,最大值120s。为0时,表示用默认值(120s)
+        public int dwCheckOnlineNetFailMax;  //由于网络原因失败的最大累加次数;超过该值SDK才回调用户异常,为0时,表示使用默认值1
+        public byte[] byRes = new byte[256];
+    }
+
+    public static final int MAX_FILE_PATH_LEN = 256; //文件路径长度
+
+    public static class NET_DVR_ALARM_ISAPI_PICDATA extends HIKSDKStructure {
+        public int dwPicLen;
+        public byte byPicType;  //图片格式: 1- jpg
+        public byte[] byRes = new byte[3];
+        public byte[] szFilename = new byte[MAX_FILE_PATH_LEN];
+        public Pointer pPicData; // 图片数据
+    }
+
+    public static class NET_DVR_FOCUSMODE_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte byFocusMode;  /* 聚焦模式,0-自动,1-手动,2-半自动 */
+        public byte byAutoFocusMode; /* 自动聚焦模式,0-关,1-模式A,2-模式B,3-模式AB,4-模式C 自动聚焦模式,需要在聚焦模式为自动时才显示*/
+        public short wMinFocusDistance; /* 最小聚焦距离,单位CM,  0-自动,0xffff-无穷远 */
+        public byte byZoomSpeedLevel;  /* 变倍速度,为实际取值,1-3 */
+        public byte byFocusSpeedLevel; /* 聚焦速度,为实际取值,1-3 */
+        public byte byOpticalZoom;        /* 光学变倍,0-255 */
+        public byte byDigtitalZoom;        /* 数字变倍,0-255 */
+        public float fOpticalZoomLevel; /* 光学变倍(倍率值) [1,32], 最小间隔0.5 ,内部设备交互的时候*1000 */
+        public int dwFocusPos;/* dwFocusPos 是focus值(聚焦值),范围为[0x1000,0xC000],这个值是sony坐标值,使用这个值是为了对外统一,保证不同的镜头对外focus值都转换在这个范围内 (手动聚焦模式下下应用)*/
+        public byte byFocusDefinitionDisplay;// 聚焦清晰度显示,0~不显示,1~显示, 开启会在码流上显示当前镜头目标的清晰度值,用于帮助客户调焦使相机抓拍能够达到最清晰的效果,该清晰度越大代表着越清晰,清晰度范围为:0~100.0000
+        public byte byFocusSensitivity; //聚焦灵敏度,范围[0,2],聚焦模式为自动、半自动时生效
+        public byte[] byRes1 = new byte[2];
+        public int dwRelativeFocusPos;//相对focus值,其低16位表示聚焦值,0~4000;高16位代表当前聚焦值获取时的温度值
+        public byte[] byRes = new byte[48];
+    }
+
+    public static class NET_DVR_SERIALSTART_V40 extends HIKSDKStructure {
+        public int dwSize;         //结构体大小
+        public int dwSerialType;    //串口号(1-232串口,2-485串口)
+        public byte bySerialNum;   //串口编号
+        public byte[] byRes = new byte[255];
+
+
+    }
+
+    public static class NET_DVR_PRESET_NAME extends HIKSDKStructure {
+        public int dwSize;
+        public short wPresetNum;   //预置点编号
+        public byte[] byRes1 = new byte[2]; //字节对齐
+        public byte[] byName = new byte[NAME_LEN];
+        public short wPanPos;  //水平参数 如果获取到的数据大于360默认减去360
+        public short wTiltPos; //垂直参数 如果获取到的数据大于360默认减去360
+        public short wZoomPos; //变倍参数如果获取到的数据大于360默认减去360
+        public byte[] byRes = new byte[58];
+    }
+
+    //Sensor信息
+    public static class NET_DVR_SENSOR_PARAM extends HIKSDKStructure {
+        public byte bySensorType;//SensorType:0-CCD,1-CMOS
+        public byte[] byRes = new byte[31];
+        public float fHorWidth;//水平宽度 精确到小数点后两位 *10000
+        public float fVerWidth;//垂直宽度 精确到小数点后两位 *10000
+        public float fFold;//zoom=1没变时的焦距 精确到小数点后两位 *100
+    }
+
+    //球机位置信息
+    public static class NET_DVR_PTZPOS_PARAM extends HIKSDKStructure {
+        public float fPanPos;//水平参数,精确到小数点后1位
+        public float fTiltPos;//垂直参数,精确到小数点后1位
+        public float fZoomPos;//变倍参数,精确到小数点后1位
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_LLI_PARAM extends HIKSDKStructure {
+        public float fSec;//秒[0.000000,60.000000]
+        public byte byDegree;//度:纬度[0,90] 经度[0,180]
+        public byte byMinute;//分[0,59]
+        public byte[] byRes = new byte[6];
+    }
+
+    //GIS信息上传
+    public static class NET_DVR_GIS_UPLOADINFO extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public int dwRelativeTime; //相对时标
+        public int dwAbsTime; //绝对时标
+        public NET_VCA_DEV_INFO struDevInfo = new NET_VCA_DEV_INFO();//前端设备
+        public float fAzimuth;//电子罗盘的方位信息;方位角[0.00°,360.00°)
+        public byte byLatitudeType;//纬度类型,0-北纬,1-南纬
+        public byte byLongitudeType;// 经度类型,0-东度,1-西度
+        public byte[] byRes1 = new byte[2];
+        public NET_DVR_LLI_PARAM struLatitude = new NET_DVR_LLI_PARAM();     /*纬度*/
+        public NET_DVR_LLI_PARAM struLongitude = new NET_DVR_LLI_PARAM();   /*经度*/
+        public float fHorizontalValue;//水平视场角,精确到小数点后面两位
+        public float fVerticalValue;//垂直视场角,精确到小数点后面两位
+        public float fVisibleRadius;//当前可视半径,精确到小数点后面两位
+        public float fMaxViewRadius;//最大可视半径,精确到小数点后面0位(预留处理)
+        public NET_DVR_SENSOR_PARAM struSensorParam;//Sensor信息
+        public NET_DVR_PTZPOS_PARAM struPtzPos; //ptz坐标
+        public byte[] byRes = new byte[256];
+    }
+
+    public static class NET_DVR_DAYTIME extends HIKSDKStructure {
+        public byte byHour;//0~24
+        public byte byMinute;//0~60
+        public byte bySecond;//0~60
+        public byte byRes;
+        public short wMilliSecond; //0~1000
+        public byte[] byRes1 = new byte[2];
+    }
+
+    public static class NET_DVR_SCHEDULE_DAYTIME extends HIKSDKStructure {
+        public NET_DVR_DAYTIME struStartTime; //开始时间
+        public NET_DVR_DAYTIME struStopTime; //结束时间
+    }
+
+    public static class NET_DVR_BUILTIN_SUPPLEMENTLIGHT extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public byte byMode;//补光灯模式 0-定时,1-开启,2-关闭,3-自动(非光敏,算法画面识别)
+        public byte byBrightnessLimit;//亮度限制[0,100]
+        public byte bySupplementLightMode;//补光灯类型,0~白光模式,1~混合模式
+        public byte byMixedLightRegulatMode;//混合补光灯亮度调节模式,0~自动,1~手动,当bySupplementLightMode = 1时生效
+        public byte byLrLightBrightness;//红外亮度控制[0,100],当byMixedLightRegulatMode = 1时生效。
+        public byte byHighLrLightBrightness;// 远光红外光亮度配置[0,100],当byMixedLightRegulatMode = 1时生效
+        public byte byHighBrightnessLimit;// 远光白光亮度配置[0,100],当byMixedLightRegulatMode = 1时生效
+        public byte byLowLrLightBrightness;// 近光红外光亮度配置[0,100],当byMixedLightRegulatMode = 1时生效
+        public NET_DVR_SCHEDULE_DAYTIME struSchedTime;//定时时间段
+        public byte byLowBrightnessLimit;//近光白光亮度配置[0,100],当byMixedLightRegulatMode = 1时生效
+        public byte byWhiteLightBrightness;// 白光灯亮度
+        public byte[] byRes1 = new byte[254];
+    }
+
+    public static class NET_DVR_HANDLEEXCEPTION_V41 extends HIKSDKStructure {
+        public int dwHandleType;        //异常处理,异常处理方式的"或"结果
+        /*0x00: 无响应*/
+        /*0x01: 监视器上警告*/
+        /*0x02: 声音警告*/
+        /*0x04: 上传中心*/
+        /*0x08: 触发报警输出*/
+        /*0x10: 触发JPRG抓图并上传Email*/
+        /*0x20: 无线声光报警器联动*/
+        /*0x40: 联动电子地图(目前只有PCNVR支持)*/
+        /*0x200: 抓图并上传FTP*/
+        /*0x400: 虚交侦测 联动 聚焦模式(提供可配置项,原先设备自动完成)IPC5.1.0*/
+        /*0x800: PTZ联动跟踪(球机跟踪目标)*/
+        /*0x4000:白光灯报警*/
+        /*0x10000:短信报警*/
+        public int dwMaxRelAlarmOutChanNum; //触发的报警输出通道数(只读)最大支持数
+        public int[] dwRelAlarmOut = new int[MAX_ALARMOUT_V40]; //触发报警通道
+        public byte[] byRes = new byte[64];           //保留
+    }
+
+    public static class NET_DVR_PRESETCHAN_INFO extends HIKSDKStructure {
+        public int dwEnablePresetChan;    /*启用预置点的通道, 0xfffffff表示不调用预置点*/
+        public int dwPresetPointNo;        /*调用预置点通道对应的预置点序号, 0xfffffff表示不调用预置点。*/
+    }
+
+    public static class NET_DVR_CRUISECHAN_INFO extends HIKSDKStructure {
+        public int dwEnableCruiseChan;    /*启用巡航的通道*/
+        public int dwCruiseNo;        /*巡航通道对应的巡航编号, 0xfffffff表示无效*/
+    }
+
+    public static class NET_DVR_PTZTRACKCHAN_INFO extends HIKSDKStructure {
+        public int dwEnablePtzTrackChan;    /*启用云台轨迹的通道*/
+        public int dwPtzTrackNo;        /*云台轨迹通道对应的编号, 0xfffffff表示无效*/
+    }
+
+    public static class NET_DVR_EVENT_TRIGGER extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public NET_DVR_HANDLEEXCEPTION_V41 struHandleException;     //异常处理方式
+        public int[] dwRelRecordChan = new int[MAX_CHANNUM_V40]; //实际触发录像通道,按值表示,采用紧凑型排列,从下标0开始顺序读取,中间遇到0xffffffff则后续无效。
+        public NET_DVR_PRESETCHAN_INFO[] struPresetChanInfo = new NET_DVR_PRESETCHAN_INFO[MAX_CHANNUM_V40]; //启用的预置点信息
+        public NET_DVR_CRUISECHAN_INFO[] struCruiseChanInfo = new NET_DVR_CRUISECHAN_INFO[MAX_CHANNUM_V40]; //启用巡航功能通道的信息
+        public NET_DVR_PTZTRACKCHAN_INFO[] struPtzTrackInfo = new NET_DVR_PTZTRACKCHAN_INFO[MAX_CHANNUM_V40]; //调用云台轨迹的通道信息
+        public byte byDirection;//触发方向:0-保留;1-全部;2-正向;3-反向
+        public byte[] byRes2 = new byte[255];
+    }
+
+    public static class NET_DVR_FACELIB_GUARD_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;  //通道号
+        public byte[] szFDID = new byte[68];//人脸库的ID
+        public byte[] byRes = new byte[128];
+    }
+
+    //导入人脸数据条件
+    public static class NET_DVR_FACELIB_COND extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] szFDID = new byte[NET_SDK_MAX_FDID_LEN/*256*/];//人脸库ID
+        public byte byConcurrent;//设备并发处理 0-不开启,1-开始
+        public byte byCover;//是否覆盖式导入 0-否,1-是
+        public byte byCustomFaceLibID;//FDID是否是自定义,0-不是,1-是;
+        public byte byPictureSaveMode;//上传原图保存模式,0-保存,1-不保存;
+        public byte[] byIdentityKey = new byte[NET_SDK_MAX_INDENTITY_KEY_LEN/*64*/];//交互操作口令
+        public byte[] byRes = new byte[60];
+    }
+
+    public static class NET_DVR_SEND_PARAM_IN extends HIKSDKStructure {
+        public Pointer pSendData;             //发送的缓冲区,PicURL == 1 的时候,内存中存储的是 URL 字符串,byUploadModeling == 1 的时候,内存中存储的是 建模base64加密数据
+        public int dwSendDataLen;         //发送数据长度,PicURL == 1 的时候,表示的 URL 字符串的长度,byUploadModeling == 1 的时候,表示为建模数据base64后的加密长度
+        public NET_DVR_TIME_V30 struTime = new NET_DVR_TIME_V30();   //图片时间
+        public byte byPicType;              //图片格式,1-jpg,2-bmp,3-png,4-SWF,5-GIF
+        public byte byPicURL;               //图片数据采用URL方式 0-二进制图片数据,1-图片数据走URL方式
+        /*是否上传建模数据;
+    0-	二进制图片数据方式(pSendData指向二进制图片数据, dwPicDataLen为图片二进制数据长度),
+    1-	直接上传建模数据(pSendData指向建模base64加密数据, dwPicDataLen为建模数据base64后的加密长度)。
+    注:建模数据采用base64加密方式,选择为建模数据上传后,byPicURL 无需。
+    当”/ISAPI/Intelligent/channels/<ID>/faceContrast/capabilities”能力中返回isSupportUploadModeling能力节点时,支持上传建模数据. */
+        public byte byUploadModeling;
+        public byte byRes1;
+        public int dwPicMangeNo;           //图片管理号
+        public byte[] sPicName = new byte[NAME_LEN];     //图片名称
+        public int dwPicDisplayTime;       //图片播放时长,单位秒
+        public Pointer pSendAppendData;       //发送图片的附加信息缓冲区,对应FaceAppendData 的XML描述;
+        public int dwSendAppendDataLen;    //发送图片的附加信息数据长度  FaceAppendData  XML的长度;
+        public byte[] byRes = new byte[192];
+    }
+
+    public static class NET_DVR_INQUEST_ROOM extends HIKSDKStructure {
+        public byte byRoomIndex;     //审讯室编号
+        public byte byFileType;        //0-审讯文件,1-开庭上传文件
+        public byte[] byRes = new byte[22];       //保留
+    }
+
+    public static class NET_DVR_INQUEST_CDRW_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public int dwNum;                       //刻录机的数量
+        public int[] dwRwSelectPara = new int[MAX_CHANNUM_V30];// 是否选中该光驱
+        public int dwModeSelect;                //0表示循环刻录模式  1表示并行刻录模式(默认模式)
+        public byte[] byRes = new byte[24];                   //保留
+        public int dwStartCDRW;                 //DVR 本地已经开始刻录
+        public int dwHdExcp;                    //硬盘有异 常
+        public int dwInterval;                  //时间间隔,10分钟(0)、20分钟(1)、30分钟(2)
+        public byte[] sLable = new byte[64];                  //光盘名称
+    }
+
+    public static class NET_DVR_INQUEST_CDRW_STATUS extends HIKSDKStructure {
+        /*运行状态:0-审讯开始,
+     1-审讯过程中刻录,2-审讯停止,
+     3-刻录审讯文件,
+     4-备份(事后备份和本地备份)
+     5-空闲
+     6-初始化硬盘
+     7-恢复审讯*/
+        public int dwType;
+        public NET_DVR_INQUEST_CDRW[] strCDRWNum = new NET_DVR_INQUEST_CDRW[MAX_INQUEST_CDRW_NUM];   //数组0表示刻录机1
+        public NET_DVR_TIME_EX struInquestStartTime = new NET_DVR_TIME_EX();        //审讯开始的时间点
+        public byte[] byRes = new byte[16];             //保留
+    }
+
+    public static class NET_DVR_INQUEST_CDRW extends HIKSDKStructure {
+        public int dwEnable;            //刻录机状态是否有效,0-无效,1-有效
+        public int dwStatus;            /*当dwType=0时, 0-光盘正常,1-无光盘或光盘异常,
+                                                            当dwType=1或2时,0-刻录正常,1-无光盘或光盘异常,2-光盘已封盘(81不支持),3-光盘空间不足, 4-异常导致审讯终止(81不支持)
+                                                            当dwType=3时, 0-刻录正常,1-无光盘或光盘异常,2-光盘已封盘(81不支持),3-光盘空间不足
+                                                            当dwType=4时,0-刻录正常,1-无光盘或光盘异常,2-光盘已封盘(81不支持),3-光盘空间不足
+                                                            当dwType=5时,0-光盘正常, 1-无光盘或光盘异常,2-光盘已封盘(81不支持)
+                                                            当dwType=6或7时, 0-刻录正常, 1-无光盘或光盘异常, 2-光盘已封盘(81不支持), 3-光盘空间不足*/
+        public int dwVolumn;      //光盘容量,单位M
+        public int dwFreeSpace;   //光盘剩余容量,单位M
+        public int dwTimeLeft;     // 光盘剩余时间,单位秒
+        public byte byCDType;         // 光盘类型
+        public byte[] byRes = new byte[3];      //保留字节
+    }
+
+    //实时温度检测条件参数
+    public static class NET_DVR_REALTIME_THERMOMETRY_COND extends HIKSDKStructure {
+        public int dwSize; /*结构体大小*/
+        public int dwChan; /*通道号,从1开始,0xffffffff代表获取全部通道*/
+        public byte byRuleID;/*规则ID,0代表获取全部规则,具体规则ID从1开始*/
+        public byte byMode;  //长连接模式:0- 保留(兼容不支持该功能的老设备),1- 定时模式,2- 温差模式
+        public short wInterval; //上传间隔(仅温差模式支持),取值范围:1-3600 秒,填0则默认3600S上传一次
+        public byte[] byRes2 = new byte[60];
+    }
+
+    //点测温实时信息
+    public static class NET_DVR_POINT_THERM_CFG extends HIKSDKStructure {
+        public float fTemperature;
+        public NET_VCA_POINT struPoint;
+        public byte[] byRes = new byte[120];
+    }
+
+    //框/线测温实时信息
+    public static class NET_DVR_LINEPOLYGON_THERM_CFG extends HIKSDKStructure {
+        public float fMaxTemperature;
+        public float fMinTemperature;
+        public float fAverageTemperature;
+        public float fTemperatureDiff;
+        public NET_VCA_POLYGON struRegion;
+        public byte[] byRes = new byte[32];
+    }
+
+    //实时温度信息
+    public static class NET_DVR_THERMOMETRY_UPLOAD extends HIKSDKStructure {
+        public int dwSize; /* 结构体大小 */
+        public int dwRelativeTime;
+        public int dwAbsTime;
+        public byte[] szRuleName = new byte[NAME_LEN];
+        public byte byRuleID;/* 规则ID,0代表获取全部规则,具体规则ID从1开始 */
+        public byte byRuleCalibType;
+        public short wPresetNo;
+        public NET_DVR_POINT_THERM_CFG struPointThermCfg;
+        public NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg;
+        public byte byThermometryUnit;
+        public byte byDataType;
+        public byte byRes1;
+        public byte bySpecialPointThermType;
+        public float fCenterPointTemperature;
+        public float fHighestPointTemperature;
+        public float fLowestPointTemperature;
+        public NET_VCA_POINT struHighestPoint;
+        public NET_VCA_POINT struLowestPoint;
+        public byte byIsFreezedata;
+        public byte[] byRes = new byte[95];
+    }
+
+    public static class NET_PTZ_INFO extends HIKSDKStructure {
+        public float fPan;
+        public float fTilt;
+        public float fZoom;
+        public int dwFocus;// 聚焦参数,聚焦范围:归一化0-100000
+        public byte[] byRes = new byte[4];
+    }
+
+    //测温模式配置
+    public static class NET_DVR_THERMOMETRY_MODE extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public byte byMode;//测温模式,0~普通模式,1~专家模式
+        public byte byThermometryROIEnabled; //测温ROI使能 0-保留 1-不开启 2-开启(基于互斥兼容考虑)
+        public byte[] byRes = new byte[62];
+    }
+
+    public static class NET_DVR_THERMOMETRY_COND extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public int dwChannel;
+        public short wPresetNo;//0-保留
+        public byte[] byRes = new byte[62];
+    }
+
+    public static class NET_DVR_THERMOMETRY_PRESETINFO_PARAM extends HIKSDKStructure {
+        public byte byEnabled;  //是否使能:0- 否,1- 是
+        public byte byRuleID;//规则ID 0-表示无效,从1开始 (list内部判断数据有效性)
+        public short wDistance;//距离(m)[0, 10000]
+        public float fEmissivity;//发射率(发射率 精确到小数点后两位)[0.01, 1.00](即:物体向外辐射能量的本领)
+        public byte byDistanceUnit;//距离单位: 0-米(m),1-英尺(feet),2-厘米(centimeter)
+        public byte[] byRes = new byte[2];
+        public byte byReflectiveEnabled;//反射温度使能:0- 否,1- 是
+        public float fReflectiveTemperature;//反射温度 精确到小数后2位
+        public byte[] szRuleName = new byte[NAME_LEN/*32*/];//规则名称
+        public byte byemissivityMode; //发射率配置类型 1-粗糙,2-较粗糙,3-较光滑, 4-光滑, 0xff-自定义
+        public byte[] byRes1 = new byte[62];
+        public byte byRuleCalibType;//规则标定类型 0-点,1-框,2-线
+        public NET_VCA_POINT struPoint = new NET_VCA_POINT();//点测温坐标(当规则标定类型为"点"的时候生效)
+        public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON();//区域、线(当规则标定类型为"框"或者"线"的时候生效)
+    }
+
+    public static class NET_DVR_THERMOMETRY_PRESETINFO extends HIKSDKStructure {
+        public int dwSize;//结构体大小
+        public short wPresetNo;//0-保留
+        public byte[] byRes = new byte[2];
+        public NET_DVR_THERMOMETRY_PRESETINFO_PARAM[] struPresetInfo = new NET_DVR_THERMOMETRY_PRESETINFO_PARAM[40];
+    }
+
+    //温度报警(检测温度和配置温度比较报警)
+    public static class NET_DVR_THERMOMETRY_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;//通道号
+        public byte byRuleID;//规则ID
+        public byte byThermometryUnit;//测温单位: 0-摄氏度(℃),1-华氏度(℉),2-开尔文(K)
+        public short wPresetNo; //预置点号
+        public NET_PTZ_INFO struPtzInfo = new NET_PTZ_INFO();//ptz坐标信息
+        public byte byAlarmLevel;//0-预警 1-报警
+        public byte byAlarmType;/*报警类型 0-最高温度 1-最低温度 2-平均温度 3-温差 4-温度突升 5-温度突降*/
+        public byte byAlarmRule;//0-大于,1-小于
+        public byte byRuleCalibType;//规则标定类型 0-点,1-框,2线
+        public NET_VCA_POINT struPoint = new NET_VCA_POINT();//点测温坐标(当规则标定类型为点的时候生效)
+        public NET_VCA_POLYGON struRegion = new NET_VCA_POLYGON();//区域(当规则标定类型为框的时候生效)
+        public float fRuleTemperature;/*配置规则温度,精确到小数点后一位(-40-1000),(浮点数+100) */
+        public float fCurrTemperature;/*当前温度,精确到小数点后一位(-40-1000),(浮点数+100) */
+        public int dwPicLen;//可见光图片长度
+        public int dwThermalPicLen;//热成像图片长度
+        public int dwThermalInfoLen;//热成像附加信息长度
+        public Pointer pPicBuff; ///可见光图片指针
+        public Pointer pThermalPicBuff;// 热成像图片指针
+        public Pointer pThermalInfoBuff; //热成像附加信息指针
+        public NET_VCA_POINT struHighestPoint = new NET_VCA_POINT();//线、框测温最高温度位置坐标(当规则标定类型为线、框的时候生效)
+        public float fToleranceTemperature;/* 容差温度,精确到小数点后一位(-40-1000),(浮点数+100) */
+        public int dwAlertFilteringTime;//温度预警等待时间 单位秒 范围为0-200秒,默认为0秒
+        public int dwAlarmFilteringTime;//温度报警等待时间 单位秒 范围为0-200秒,默认为0秒
+        public int dwTemperatureSuddenChangeCycle;//温度突变记录周期,单位秒
+        public float fTemperatureSuddenChangeValue;//温度突变值,精确到小数点后一位(大于0)
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public byte[] byRes = new byte[39];
+    }
+
+    //温差报警
+    public static class NET_DVR_THERMOMETRY_DIFF_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;//通道号
+        public byte byAlarmID1;//规则AlarmID1
+        public byte byAlarmID2;//规则AlarmID2
+        public short wPresetNo; //预置点号
+        public byte byAlarmLevel;//0-预警 1-报警
+        public byte byAlarmType;/*报警类型 0-最高温度 1-最低温度 2-平均温度*/
+        public byte byAlarmRule;//0-大于,1-小于
+        public byte byRuleCalibType;//规则标定类型 0-点,1-框,2线
+        public NET_VCA_POINT[] struPoint = (NET_VCA_POINT[]) new NET_VCA_POINT().toArray(2);//点测温坐标(当规则标定类型为点的时候生效)数组下标0代表着AlarmID1,数组下标1代表着AlarmID2.
+        public NET_VCA_POLYGON[] struRegion = (NET_VCA_POLYGON[]) new NET_VCA_POLYGON().toArray(2);//区域(当规则标定类型为框的时候生效)数组下标0代表着AlarmID1,数组下标1代表着AlarmID2.
+        float fRuleTemperatureDiff;/*配置规则温差,精确到小数点后一位(-40-1000))*/
+        float fCurTemperatureDiff;/*当前温差,精确到小数点后一位(-40-1000),(浮点数+100) */
+        NET_PTZ_INFO struPtzInfo;//ptz坐标信息
+        public int dwPicLen;//可见光图片长度
+        public int dwThermalPicLen;//热成像图片长度
+        public int dwThermalInfoLen;//热成像附加信息长度
+        public Pointer pPicBuff; ///可见光图片指针
+        public Pointer pThermalPicBuff;// 热成像图片指针
+        public Pointer pThermalInfoBuff; //热成像附加信息指针
+        public byte byThermometryUnit;//测温单位: 0-摄氏度(℃),1-华氏度(℉),2-开尔文(K)
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public byte[] byRes1 = new byte[2];
+        float fToleranceTemperature;/*容差温度,精确到小数点后一位(-40-1000),(浮点数+100) */
+        public int dwAlarmFilteringTime;//温度报警等待时间 单位秒 范围为0-200秒,默认为0秒
+        public int dwVisibleChannel; //可见光通道通道号
+        public byte[] byRes = new byte[48];
+    }
+
+    //船只检测报警上传
+    public static class NET_DVR_SHIPSDETECTION_ALARM extends HIKSDKStructure {
+        public int dwSize;
+        public NET_VCA_DEV_INFO struDevInfo;   //设备信息
+        public int dwRelativeTime; //相对时标
+        public int dwAbsTime; //绝对时标
+        public byte byShipsNum; //船只数;(正跨越检测线的船只数)
+        public byte byShipsNumHead;//船只数;(船头检测船只数)
+        public byte byShipsNumEnd; //船只数;(船尾检测船只数)
+        public byte byPicTransType;        //图片数据传输方式: 0-二进制;1-url
+        public NET_DVR_SHIPSINFO[] struShipInfo = (NET_DVR_SHIPSINFO[]) new NET_DVR_SHIPSINFO().toArray(MAX_SHIPS_NUM); /*20*///船只信息;最大支持20艘
+        public int dwPicLen;//可见光图片长度
+        public int dwThermalPicLen;//热成像图片长度
+        public Pointer pPicBuffer;    //可见光图片数据指针
+        public Pointer pThermalPicBuffer;    //热成像图片数据指针
+        public short wDevInfoIvmsChannelEx;     //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
+        public byte byTimeDiffFlag;      /*时差字段是否有效  0-时差无效, 1-时差有效 */
+        public byte cTimeDifferenceH;         /*与UTC的时差(小时),-12 ... +14, +表示东区,,byTimeDiffFlag为1时有效*/
+        public byte cTimeDifferenceM;        /*与UTC的时差(分钟),-30, 30, 45, +表示东区,byTimeDiffFlag为1时有效*/
+        public byte bySID;//场景ID
+        public byte[] byRes1 = new byte[2];
+        public byte[] szSceneName = new byte[NAME_LEN];//场景名称,不超过32字符
+        public byte[] byRes = new byte[216];
+    }
+
+    public static final int MAX_SHIPS_NUM = 20;   //船只检测最大船只数
+
+    //船只信息
+    public static class NET_DVR_SHIPSINFO extends HIKSDKStructure {
+        public float fShipsLength; //船只长度;1~1000.0m,精确到小数点后一位
+        public float fShipsHeight; //船只高度;1~1000.0m,精确到小数点后一位
+        public float fShipsWidth;  //船只宽度;1~1000.0m,精确到小数点后一位
+        public float fShipsSpeed;  //船只速度;1~1000.0m/s,精确到小数点后一位
+        public byte byShipsDirection;//船只方向;0~up,1~down,2~left,3~right
+        public byte byShipsDetState;//船只检测状态;0~正跨越检测线,1~船头检测,2~船尾检测
+        public byte byTriggerLineID;//检测线ID
+        public byte[] byRes = new byte[61];
+        public NET_VCA_POLYGON struShipsRect; //船只区域,归一化值,相对于大图(可见光图、热成像图)的分辨率
+    }
+
+    public static class NET_DVR_ARRAY_LIST extends HIKSDKStructure {
+        public int dwSize;     // 结构体大小
+        public int dwCount;    // 阵列个数
+        public NET_DVR_ARRAY_INFO[] struArrayInfo = new NET_DVR_ARRAY_INFO[SUPPORT_ARRAY_NUM];
+    }
+
+    public static class NET_DVR_BGA_INFO extends HIKSDKStructure {
+        public byte byBga;  // 后台任务及类型
+        public byte byBgaState;           /*函数返回值--后台任务状态*/
+        public short wBgaPercentage;     /*函数返回值--后台任务执行百分比*/
+        public byte[] byRes = new byte[4];  // 保留字节
+    }
+
+    // 阵列信息
+    public static class NET_DVR_ARRAY_INFO extends HIKSDKStructure {
+        public short wArrayID; // 阵列ID
+        public byte byRaidMode; // raid模式  参照RAID_MODE
+        public byte byStatus;  // 0-在线 1-磁盘丢失 2-下线 3-降级 4-异常 5-次正常 6-外来盘  7-已删除 8-SMART状态异常 0xff-不存在
+        public int dwHCapacity; // 阵列容量高32位
+        public int dwLCapacity; // 阵列容量低32位
+        public int dwHFreeSpace;   // 阵列剩余空间高32位
+        public int dwLFreeSpace;   // 阵列剩余空间高32位
+        public byte[] byArrayName = new byte[MAX_NAMELEN]; // 阵列名称
+        public byte byPDCount;  // 物理磁盘数目
+        public byte bySpareCount;   // 热备数目
+        public byte[] byRes1 = new byte[2];
+        public short[] wPDSlots = new short[SUPPORT_PD_NUM];    // 物理磁盘索引
+        public short[] wSparePDSlots = new short[SUPPORT_PD_NUM];    // 热备磁盘索引
+        public NET_DVR_BGA_INFO struBgaInfo;    // 后台任务运行状态
+        public short[] wPDSlotsPartTwo = new short[SUPPORT_PD_NUM_PARTTWO];  //物理磁盘索引扩展,0表示无效
+        public short[] wSparePDSlotsPartTwo = new short[SUPPORT_PD_NUM_PARTTWO];    // 热备磁盘索引扩展,0表示无效
+        public byte[] byRes2 = new byte[48]; // 保留字节
+    }
+
+    //物理磁盘
+    public static class NET_DVR_PHY_DISK_INFO extends HIKSDKStructure {
+        public short wPhySlot;         // 硬盘槽位
+        public byte byType;         // 硬盘信息;0 普通,1全局热备,2-阵列热备 3-阵列盘
+        public byte byStatus;       // 硬盘状态;  0-正常 1-降级 2-已删除 3-磁盘丢失 4-下线 5-次正常 6-外来 7-异常 8-SMART状态异常 9-休眠 10-有坏块 0xff-不存在
+        public byte[] byMode = new byte[40];   // 硬盘类型 字符串
+        public int dwHCapacity;    //  磁盘总量高32位 单位kb
+        public int dwLCapacity;    //  磁盘总量低32位
+        public byte[] byArrrayName = new byte[MAX_NAMELEN];
+        public short wArrayID;          // 所属阵列ID
+        public byte byArrayInformation;   // 是否含有阵列信息:0 否,1是
+        public byte[] byRes = new byte[101];         // 保留字节
+    }
+
+    public static class NET_DVR_WORKSTATE_V40 extends HIKSDKStructure {
+        public int dwSize;            //结构体大小
+        public int dwDeviceStatic;      //设备的状态,0-正常,1-CPU占用率太高,超过85%,2-硬件错误,例如串口死掉
+        public NET_DVR_DISKSTATE[] struHardDiskStatic = new NET_DVR_DISKSTATE[MAX_DISKNUM_V30];   //硬盘状态,一次最多只能获取33个硬盘信息
+        public NET_DVR_CHANNELSTATE_V30[] struChanStatic = new NET_DVR_CHANNELSTATE_V30[MAX_CHANNUM_V40/*512*/];//通道的状态,从前往后顺序排列
+        public int[] dwHasAlarmInStatic = new int[MAX_ALARMIN_V40]; //有报警的报警输入口,按值表示,按下标值顺序排列,值为0xffffffff时当前及后续值无效
+        public int[] dwHasAlarmOutStatic = new int[MAX_ALARMOUT_V40]; //有报警输出的报警输出口,按值表示,按下标值顺序排列,值为0xffffffff时当前及后续值无效
+        public int dwLocalDisplay;            //本地显示状态,0-正常,1-不正常
+        public byte[] byAudioInChanStatus = new byte[MAX_AUDIO_V30/*2*/];        //按位表示语音通道的状态 0-未使用,1-使用中,第0位表示第1个语音通道
+        public byte[] byRes1 = new byte[2];
+        public float fHumidity;    //传感器获知的湿度,范围:0.0 ~100.0
+        public float fTemperature;    //传感器获知的温度,范围:-20.0 ~ 90.0
+        public byte[] byRes = new byte[116];                 //保留
+    }
+
+    public static class NET_DVR_GETWORKSTATE_COND extends HIKSDKStructure {
+        public int dwSize;  //结构体长度
+        public byte byFindHardByCond; /*0-查找全部磁盘(但一次最多只能查找33个),此时dwFindHardStatusNum无效*/
+        public byte byFindChanByCond;  /*0-查找全部通道,此时dwFindChanNum无效*/
+        public byte[] byRes1 = new byte[2];//保留
+        public int[] dwFindHardStatus = new int[MAX_DISKNUM_V30/*33*/]; /*要查找的硬盘号,按值表示,该值采用顺序排列, 遇到0xffffffff则认为后续无效 */
+        public int[] dwFindChanNo = new int[MAX_CHANNUM_V40/*512*/]; /*要查找的通道号,按值表示,该值采用顺序排列, 遇到0xffffffff则认为后续无效 */
+        public byte[] byRes = new byte[64]; //保留
+    }
+
+    //多边型结构体
+    public static class NET_ITC_POLYGON extends HIKSDKStructure {
+        public int dwPointNum; //有效点 大于等于3,若是3点在一条线上认为是无效区域,线交叉认为是无效区域
+        public NET_VCA_POINT[] struPos = new NET_VCA_POINT[ITC_MAX_POLYGON_POINT_NUM]; //多边形边界点,最多20个
+    }
+
+    public static class CUSTOM_uRegion extends Union {
+        public NET_VCA_RECT struRect = new NET_VCA_RECT();
+        public NET_ITC_POLYGON struPolygon = new NET_ITC_POLYGON();
+    }
+
+    public static class NET_ITC_PLATE_RECOG_REGION_PARAM extends HIKSDKStructure {
+        public byte byMode; //区域类型,0-矩形,1-多边形
+        public byte[] byRes1 = new byte[3];
+        public CUSTOM_uRegion uRegion = new CUSTOM_uRegion();
+        public byte[] byRes = new byte[16];    //保留
+    }
+
+    //单组IO测速参数
+    public static class NET_ITC_SINGLE_IOSPEED_PARAM extends HIKSDKStructure {
+        public byte byEnable; //是否启用,0-不启用,1-启用
+        public byte byTrigCoil1; //第一线圈关联IO,0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6
+        public byte byCoil1IOStatus;//第一线圈IO输入口状态,0-下降沿(默认),1-上升沿,2-上升沿和下降沿,3-高电平,4-低电平
+        public byte byTrigCoil2; //第二线圈关联IO,0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6
+        public byte byCoil2IOStatus;//第二线圈IO输入口状态,0-下降沿(默认),1-上升沿,2-上升沿和下降沿,3-高电平,4-低电平
+        public byte byRelatedDriveWay;//关联的车道号
+        public byte byTimeOut;//超时时间(默认10),单位s
+        public byte byRelatedIOOutEx;//第0位表示IO输出口1,以此类推,0-不关联,1-关联 支持关联到8个(兼容byRelatedIOOut字段)
+        public int dwDistance;//线圈距离(默认1000),单位:厘米
+        public byte byCapSpeed;//起拍速度(默认30),单位km/h
+        public byte bySpeedLimit;//限速值(默认60),单位km/h
+        public byte bySpeedCapEn; //是否启用超速抓拍,0-否,1-是
+        public byte bySnapTimes1; //线圈1抓拍次数(默认不抓拍),0-不抓拍,非0-连拍次数,最大5次
+        public byte bySnapTimes2; //线圈2抓拍次数(默认1),0-不抓拍,非0-连拍次数,最大5次
+        public byte byBigCarSpeedLimit; //大车车速限制值
+        public byte byBigCarSignSpeed;//标志限速(大车),单位km/h(3.7Ver)
+        public byte byIntervalType;    //间隔类型(默认按时间),0-时间起效,1-距离起效
+        public short[] wInterval1 = new short[MAX_INTERVAL_NUM];//线圈1连拍间隔时间(单位ms)或连拍间隔距离(单位分米),当byIntervalType为0时,表示间隔时间,当byIntervalType为1时,表示距离
+        public short[] wInterval2 = new short[MAX_INTERVAL_NUM];//线圈2连拍间隔时间(单位ms)或连拍间隔距离(单位分米),当byIntervalType为0时,表示间隔时间,当byIntervalType为1时,表示距离
+        public byte[] byRelatedIOOut = new byte[MAX_IOOUT_NUM]; //关联的IO输出口(可以同时关联多个),数组0表示IO输出口1,数组1表示IO输出口2,以此类推,0-不关联,1-关联
+        public byte byFlashMode;   //闪光灯闪烁模式,0-同时闪,1-轮流闪
+        public byte byLaneType;   //车道类型,0-未配置、1-高速公路、2-城市快速路、0xff-其他道路
+        public byte byCarSignSpeed;//标志限速,单位km/h(3.7Ver)
+        public byte byUseageType; //车道用途类型,详见ITC_LANE_USEAGE_TYPE
+        public NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new NET_ITC_PLATE_RECOG_REGION_PARAM[MAX_LANEAREA_NUM]; //牌识参数(可用牌识区域1个,保留一个)
+        //关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
+        //该参数为车道方向参数,与关联车道号对应,确保车道唯一性。
+        public byte byRelaLaneDirectionType;
+        public byte byLowSpeedLimit;                        //小车限底速值,单位km/h
+        public byte byBigCarLowSpeedLimit;                //大车限底速值,单位km/h
+        public byte byLowSpeedCapEn;                 //是否启用低速抓拍,0-否,1-是
+        public byte byEmergencyCapEn;                //是否启用应急车道抓拍,0-否,1-是
+        public byte[] byRes = new byte[27];
+    }
+
+    //牌识参数
+    public static class NET_ITC_PLATE_RECOG_PARAM extends HIKSDKStructure {
+        public byte[] byDefaultCHN = new byte[MAX_CHJC_NUM]; /*设备运行省份的汉字简写*/
+        public byte byEnable; //是否启用该区域牌识,0-否,1-是
+        public int dwRecogMode;
+        /*识别的类型,
+     bit0-背向识别:0-正向车牌识别,1-背向识别(尾牌识别) ;
+     bit1-大车牌识别或小车牌识别:0-小车牌识别,1-大车牌识别 ;
+     bit2-车身颜色识别:0-不采用车身颜色识别,在背向识别或小车牌识别时禁止启用,1-车身颜色识别;
+     bit3-农用车识别:0-不采用农用车识别,1-农用车识别;
+     bit4-模糊识别:0-不采用模糊识别,1-模糊识别;
+     bit5-帧定位或场定位:0-帧定位,1-场定位;
+     bit6-帧识别或场识别:0-帧识别,1-场识别;
+     bit7-晚上或白天:0-白天,1-晚上
+     bit8-摩托车识别:0-不采用摩托车识别,1-摩托车识别;
+     bit9-场景模式:0-电警/多帧,1-卡口;
+     bit10-微小车牌:0-不启用,1-启用微小车牌识别(像素60~80)
+     bit11-安全带检测:0-不启用,1-启用安全带检测
+     bit12-民航车牌识别: 0-不启用,1-开启民航车牌识别
+     bit13-车牌过渡倾斜处理: 0-不启用,1-开启过渡倾斜处理(PRS)
+     bit14-超大车牌识别: 0-不启用,1-开启超大车牌识别(PRS)
+     bit15-遮阳板检测:0-不启用,1-启用遮阳板检测
+     bit16-黄标车检测:0-不启用,1-启用黄标车检测
+     bit17-危险品车辆检测:0-不启用,1-启用危险品车辆检测
+     bit18-使馆车牌识别:0-不启用,1-启用使馆车牌识别
+     bit19-车辆子品牌识别:0-不启用,1-启用车辆子品牌识别
+     bit20-打电话识别:0-不启用,1-启用
+     bit21-车窗悬挂物识别:0-不启用,1-启用
+     */
+        public byte byVehicleLogoRecog;//车标识别 0-不启用,1-启用
+        /*
+     0-保留,1-澳,2-京,3-渝,4-闽,5-甘,6-粤,7-桂,8-贵,9-琼,10-冀,11-豫,
+     12-黑,13-鄂,14-湘,15-吉,16-苏,17-赣,18-辽,19-蒙,20-宁,21-青,22-鲁,
+     23-晋,24-陕,25-沪,26-川,27-台,28-津,29-藏,30-港,31-新,32-云,33-浙,
+     34-皖,0xff-全部
+     */
+        public byte byProvince;//省份索引值
+        public byte byRegion;// 区域索引值 0-保留,1-欧洲,2-俄语区域, 3-欧洲&俄罗斯(EU&CIS),4-中东(Middle East)
+        public byte byCountry;//国家索引,参照枚举COUNTRY_INDEX(不支持“COUNTRY_ALL = 0xff,//ALL 全部”)
+        public short wPlatePixelWidthMin;//车牌像素识别宽度最小值(单位是像素)当前推荐范围[130,500]
+        public short wPlatePixelWidthMax;//车牌像素识别宽度最大值(单位是像素)当前推荐范围[130,500]
+        public byte[] byRes = new byte[24];
+    }
+
+    //卡口IO测速参数
+    public static class NET_ITC_POST_IOSPEED_PARAM extends HIKSDKStructure {
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //牌识参数
+        public NET_ITC_SINGLE_IOSPEED_PARAM[] struSingleIOSpeed = new NET_ITC_SINGLE_IOSPEED_PARAM[MAX_IOSPEED_GROUP_NUM]; //单个IO测速组参数
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_GEOGLOCATION extends HIKSDKStructure {
+        public int[] iRes = new int[2]; /*保留*/
+        public int dwCity; /*城市,详见PROVINCE_CITY_IDX */
+    }
+
+    public static class NET_ITC_INTERVAL_PARAM extends HIKSDKStructure {
+        public byte byIntervalType;    //间隔类型(默认按时间),0-时间起效,1-距离起效
+        public byte[] byRes1 = new byte[3];
+        public short[] wInterval = new short[MAX_INTERVAL_NUM];//连拍间隔时间(单位ms)或连拍间隔距离(单位分米),当byIntervalType为0时,表示间隔时间,当byIntervalType为1时,表示距离
+        public byte[] byRes = new byte[8];
+    }
+
+    public static class NET_ITC_VTLANE_PARAM extends HIKSDKStructure {
+        public byte byRelatedDriveWay;//关联的车道号
+        public byte bySpeedCapEn; //是否启用超速抓拍,0-否,1-是
+        public byte bySignSpeed;//标志限速,单位km/h
+        public byte bySpeedLimit;//限速值,单位km/h
+        public byte bySnapTimes; //抓拍次数(默认1),0-不抓拍,非0-连拍次数,最大5
+        public byte byBigCarSignSpeed;///*大车标志限速,单位km/h*/
+        public byte byBigCarSpeedLimit;/*大车限速值,单位km/h*/
+        public byte byRelatedIOOutEx;//第0位表示IO输出口1,以此类推,0-不关联,1-关联 支持关联到8个(兼容byRelatedIOOut字段)
+        public NET_ITC_INTERVAL_PARAM struInterval = new NET_ITC_INTERVAL_PARAM(); //抓拍间隔参数
+        public byte[] byRelatedIOOut = new byte[MAX_IOOUT_NUM]; //关联的IO输出口,可以同时关联多个
+        public byte byFlashMode;   //闪光灯闪烁模式,0-同时闪,1-轮流闪
+        public byte byLowSpeedLimit;/*限低速,单位km/h*/
+        public byte byBigCarLowSpeedLimit; /*大车限低速,单位km/h*/
+        //关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
+        //该参数为车道方向参数,与关联车道号对应,确保车道唯一性。
+        public byte byRelaLaneDirectionType;
+        public NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new NET_ITC_PLATE_RECOG_REGION_PARAM[MAX_LANEAREA_NUM]; //车道牌识参数
+        public NET_VCA_LINE struLine = new NET_VCA_LINE(); //车道线
+    }
+
+    public static class NET_ITC_VTCOIL_INFO extends HIKSDKStructure {
+        public NET_VCA_RECT struLaneRect = new NET_VCA_RECT();  /*虚拟线圈区域*/
+        public byte byTrigFlag; //触发标志,0-车头触发;1-车尾触发;2-车头/车尾都触发
+        public byte byTrigSensitive;  //触发灵敏度,1-100
+        public byte[] byRelatedIOOut = new byte[MAX_IOOUT_NUM]; //关联的IO输出口(可以同时关联多个),数组0表示IO输出口1,数组1表示IO输出口2,以此类推,0-不关联,1-关联
+        public byte byFlashMode;   //闪光灯闪烁模式,0-同时闪,1-轮流闪
+        public byte byLaneType;   //车道类型,0-未配置、1-高速公路、2-城市快速路、0xff-其他道路
+        public byte byEnableRadar; //是否启用雷达测速,0-否,1-是
+        public NET_ITC_VTLANE_PARAM struLane = new NET_ITC_VTLANE_PARAM(); //关联的车道参数
+        //车道用途类型,详见ITC_LANE_USEAGE_TYPE,使用1和8两种类型(3.7Ver)
+        public byte byUseageType;
+        //车辆行驶方向,详见ITC_LANE_CAR_DRIVE_DIRECT(3.7Ver)
+        public byte byCarDriveDirect;
+        public byte[] byRes = new byte[30];
+    }
+
+    public static class NET_ITC_RADAR_PARAM extends HIKSDKStructure {
+        public byte byRadarType;    //雷达类型,0-无雷达,1-安道雷雷达,2-奥利维亚,3-川速微波4,雷达接IO扩展盒(此参数在卡口虚拟线圈、混行卡口界面中使用,卡口RS485雷达不使用),0xff-其它类型
+        public byte byLevelAngle;   //与水平线所成角度,默认为25°(0到90度)
+        public short wRadarSensitivity; //雷达灵敏度
+        public short wRadarSpeedValidTime;//雷达速度有效时间(0~2000] ,0表示不支持
+        public byte[] byRes1 = new byte[2];
+        public float fLineCorrectParam;//线性矫正参数[0.0~2.0]
+        public int iConstCorrectParam;//常量矫正参数[-100~100]
+        public byte[] byRes2 = new byte[8];
+    }
+
+    //卡口虚拟线圈触发参数
+    public static class NET_ITC_POST_VTCOIL_PARAM extends HIKSDKStructure {
+        public byte byRelatedLaneNum;//关联的车道个数
+        public byte byIsDisplay; //视频中是否显示虚拟线圈,0-不显示,1-显示
+        public byte byLoopPos; //晚间触发线圈的偏向(默认10)
+        public byte byPolarLenType; /*偏振镜类型,0:不加偏振镜;1:加施耐德偏振镜。*/
+        public byte byDayAuxLightMode; /*白天辅助照明模式,0:无辅助照明;1:LED灯照明;2:闪光灯照明*/
+        public byte byVideoLaneNO; //视频参考亮度的参考车道号
+        public byte byVideoLowTh; /*视†频参考亮度低阈值初始化值(默认40)*/
+        public byte byVideoHighTh; /*视频参考亮度高阈值初始化值(默认55)*/
+        public byte byRecordMode; //录像标志:0-不录像,1-录像
+        public byte bySnapMode;//抓拍模式:0-频闪模式;1-爆闪模式
+        /*测速方式:0-不测速,0x1-雷达测速,0x2-视频测速*/
+        public byte bySpeedDetector;
+        public byte byRes2;
+        public short wResolutionX;/* 设备当前分辨率宽*/
+        public short wResolutionY;/* 设备当前分辨率高*/
+        public int dwDayInitExp; /*视频白天曝光时间的初始值2000*/
+        public int dwDayMaxExp; /*视频白天曝光时间的最大值20000*/
+        public int dwNightExp; /*晚间视频曝光时间的设置值3000*/
+        public int dwSnapExp; /*抓拍曝光时间*/
+        public byte byDayInitGain; /*视频白天增益的初始值200*/
+        public byte byDayMaxGain; /*视频白天增益的最大值400*/
+        public byte byNightGain; /*晚间视频增益*/
+        public byte bySnapGain; /*抓拍增益*/
+        public int dwSceneMode; //场景模式, 详见SCENE_MODE
+        public NET_DVR_GEOGLOCATION struGeogLocation = new NET_DVR_GEOGLOCATION(); //地址位置(默认浙江)
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new NET_ITC_PLATE_RECOG_PARAM(); //牌识参数
+        public NET_ITC_VTCOIL_INFO[] struVtCoil = new NET_ITC_VTCOIL_INFO[MAX_VL_NUM]; //虚拟线圈参数
+        public NET_ITC_RADAR_PARAM struRadar = new NET_ITC_RADAR_PARAM();  //雷达参数
+        public NET_VCA_LINE struLine = new NET_VCA_LINE(); //右车道线
+        //违规检测类型,按位表示,详见ITC_VIOLATION_DETECT_TYPE,0-不启用,1-启用(3.7Ver)
+        public int dwVioDetectType;
+        public byte byDebugMode; /*调试模式,0-不启用,1-启用*/
+        public byte[] byRes = new byte[11];
+    }
+
+    //车道属性参数结构
+    public static class NET_ITC_LANE_LOGIC_PARAM extends HIKSDKStructure {
+        public byte byUseageType;     //车道用途类型,详见ITC_LANE_USEAGE_TYPE
+        public byte byDirectionType;  //车道方向类型,详见ITC_LANE_DIRECTION_TYPE
+        public byte byCarDriveDirect; //车辆行驶方向,详见ITC_LANE_CAR_DRIVE_DIRECT
+        public byte[] byRes = new byte[33];        //保留
+    }
+
+    //视频电警线结构
+    public static class NET_ITC_LINE extends HIKSDKStructure {
+        public NET_VCA_LINE struLine = new NET_VCA_LINE(); //线参数
+        public byte byLineType; //线类型,详见ITC_LINE_TYPE
+        public byte[] byRes = new byte[7];
+    }
+
+    public static class NET_ITC_SNAPMODE_PARAM extends HIKSDKStructure {
+        public byte byVehicleCapMode;//机动车抓拍模式,0-频闪模式;1-爆闪模式
+        public byte byNoVehicleCapMode;//非机动车抓拍模式,0-频闪模式;1-爆闪模式
+        public byte byPasserCapMode;//行人抓拍模式,0-频闪模式;1-爆闪模式
+        public byte[] byRes = new byte[29];
+    }
+
+    //size = 128
+    public static class NET_ITC_HVT_EC_PARAM extends HIKSDKStructure {
+        public int dwCapShutter;            //抓拍快门0~65535
+        public short wCapGain;            //抓拍增益0~100
+        public byte[] byRes = new byte[2];
+        public int dwDayTimeVideoShutter;    //白天曝光时间最大值
+        public short wDayTimeVideoGain;        //白天增益最大值
+        public short wNightVideoGain;            //晚上增益最大值
+        public short wNightVideoShutter;        //晚上曝光时间最大值
+        public byte[] byRes1 = new byte[108];
+    }
+
+    public static class NET_ITC_LANE_HVT_PARAM extends HIKSDKStructure {
+        public byte byLaneNO; //关联的车道号 1~255(用于叠加和上传)
+        public byte bySignSpeed;    //标志限速,单位km/h 0~255  70
+        public byte bySpeedLimit;    //限速值,单位km/h 0~255    80 实际起效
+        public byte byBigCarSignSpeed;///*大车标志限速,单位km/h*/
+        public byte byBigCarSpeedLimit;/*大车限速值,单位km/h*/
+        public byte bySpeedCapEn; //是否启用超速抓拍,0-否,1-是
+        public byte byCaptureCount;//抓拍张数1~5(正常)
+        public byte byRelatedIOOut;    /*关联的IO输出口(可以同时关联多个),按位表示IO输出口,第0位表示IO输出口1,以此类推,0-不关联,1-关联*/
+        public byte byFlashMode;        /*闪光灯闪烁模式,0-同时闪,1-轮流闪*/
+        public byte byEnableRadar; //是否启用雷达测速,0-否,1-是
+        public byte byChangeLaneEnable;   //违章变道抓拍使能,0-关闭,1-开启
+        public byte byChangeLaneCapNo;    //违章变道抓拍张数2-3
+        public int dwCapTarget;    //抓拍类型 bit0 表示机动车 bit1 表示非机动车 bit2 表示行人 0~表示不选择 1~表示选择
+        public NET_ITC_INTERVAL_PARAM struInterval; //抓拍间隔参数
+        public byte[] byRes3 = new byte[24];
+        public NET_ITC_LANE_LOGIC_PARAM struLane; //车道属性,用byUseageType和byCarDriveDirect
+        public NET_ITC_LINE struLeftLaneLine;          //左车道线,线类型为虚线、实线、单黄线和双黄线
+        public NET_ITC_LINE struRightLaneLine;          //右车道线,线类型为虚线、实线、单黄线和双黄线
+        public NET_ITC_POLYGON struPlateRecog;         //牌识区域参数
+        public NET_ITC_POLYGON struTraceArea;          //视频触发焦点区域
+        public NET_VCA_LINE struForwardTrigLine;      //正向触发线:一条线段,关心端点位置,目前只支持水平配置,接口按线段的两个端点保存。(一般配置为正向车辆的最佳触发位置)
+        public NET_VCA_LINE struBackwardTrigLine;     //背向触发线:一条线段,关心端点位置,目前只支持水平配置,接口按线段的两个端点保存(一般配置为背向车辆的最佳触发位置)
+        public NET_VCA_LINE struLeftTrigLine;          //左边触发线:一条线段,关心端点位置,目前只支持垂直配置,接口按线段的两个端点保存(一般配置为从左边进入车辆的最佳触发位置)
+        public NET_VCA_LINE struRightTrigLine;          //右边触发线:一条线段,关心端点位置,目前只支持垂直配置,接口按线段的两个端点保存(一般配置为从右边进入车辆的最佳触发位置)
+        public byte[] byRes4 = new byte[60];
+    }
+
+    public static class NET_ITC_POST_HVT_PARAM extends HIKSDKStructure {
+        public byte byLaneNum;//识别的车道个数,1-6
+        public byte bySceneMode;//0-未知1-城区道路;2-小区出入口
+        public byte byRoadExpBright;//路面期望亮度(视频曝光参数调整的依据之一。在无机动车时,依据此亮度期望值,调整视频曝光参数)
+        public byte byPlateExpBright;//车牌期望亮度(视频曝光参数调整的依据之一。在有机动车通过并识别到车牌时,依据此亮度期望值,对视频曝光参数调整)
+        public NET_ITC_POLYGON struDetectArea;                    //视频检测区域
+        public NET_ITC_SNAPMODE_PARAM struCapMode = new NET_ITC_SNAPMODE_PARAM();//抓拍模式
+        public NET_ITC_HVT_EC_PARAM struEcParam = new NET_ITC_HVT_EC_PARAM();    //曝光控制参数
+        public NET_ITC_LANE_HVT_PARAM[] struLaneParam = new NET_ITC_LANE_HVT_PARAM[MAX_ITC_LANE_NUM]; //单车道属性
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new NET_ITC_PLATE_RECOG_PARAM();    //牌识参数
+        public NET_DVR_GEOGLOCATION struGeogLocation = new NET_DVR_GEOGLOCATION();    //地址位置(默认浙江)
+        public byte[] byRes = new byte[324];
+    }
+
+    //抓拍机4.0新增
+    public static class NET_ITC_LANE_HVT_PARAM_V50 extends HIKSDKStructure {
+        public byte byLaneNO;        //关联的车道号1~255(用于叠加和上传)
+        public byte byFlashMode;    //闪光灯闪烁模式,0-同时闪,1-轮流闪
+        public byte bySignSpeed;    //小车标志限高速,单位km/h
+        public byte bySpeedLimit;    //小车限高速值,单位km/h
+        public byte bySignLowSpeed;    //小车标志限底速,单位km/h
+        public byte byLowSpeedLimit;    //小车限底速值,单位km/h
+        public byte byBigCarSignSpeed;    //大车标志限高速,单位km/h(新交规)
+        public byte byBigCarSpeedLimit;    //大车限高速值,单位km/h(新交规)
+        public byte byBigCarSignLowSpeed;    //大车标志限底速,单位km/h
+        public byte byBigCarLowSpeedLimit;    //大车限底速值,单位km/h
+        public byte bySnapTimes;    //卡口抓拍张数,1~3
+        public byte byDriveLineSnapTime;// 压线抓拍张数 1~3
+        public byte byHighSpeedSnapTime;// 超高速抓拍张数1~3
+        public byte byLowSpeedSnapTime;// 超低速抓拍张数1~3
+        public byte byBanSnapTime;// 违反禁令抓拍张数  1~3
+        public byte byReverseSnapTime;//逆行抓拍张数  1~3
+        public byte byRelatedDriveWay;                //关联车道号,用于匹配车检器
+        public byte byLaneType;   //车道类型,0-未配置、1-高速公路、2-城市快速路、0xff-其他道路
+        //关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
+        //该参数为车道方向参数,与关联车道号byRelatedDriveWay对应,确保车道唯一性。
+        public byte byRelaLaneDirectionType;
+        public byte[] byRes1 = new byte[27];
+        public byte byChangeLaneEnable;   //违章变道抓拍使能,0-关闭,1-开启
+        public byte byChangeLaneCapNo;    //违章变道抓拍张数2-3
+        //目前仅使用第一个车道的,以后可能会扩展为多车道分别配置
+        //类型, 按位表示,0-不启用,1-启用参考 ITC_VIOLATION_DETECT_TYPE
+        public int dwVioDetectType;
+        public int dwRelatedIOOut;  //关联的IO输出口(可以同时关联多个),按位表示IO输出口,第0位表示IO输出口1,以此类推,0-不关联,1-关联
+        public NET_ITC_LINE struTrigLine; //触发线,目前仅使用第一个车道的,以后可能会扩展为多车道分别配置
+        public NET_ITC_LINE struLineLeft;                //左车道线
+        public NET_ITC_POLYGON struPlateRecog;       //牌识区域
+        public NET_ITC_LANE_LOGIC_PARAM struLane;   //车道属性,用byUseageType和byCarDriveDirect
+        public NET_ITC_INTERVAL_PARAM struInterval;//抓拍间隔参数(20byte)
+        public byte[] byRes2 = new byte[280];
+    }
+
+    public static class NET_ITC_POST_HVT_PARAM_V50 extends HIKSDKStructure {
+        public byte byLaneNum;    //识别的车道个数,1-6
+        public byte byCapType;        //抓拍类型,0-机、非、人(默认),1-机动车
+        public byte byCapMode;    //抓拍方式,0-视频抽帧,1-打断抓拍,2-混合模式,
+        public byte bySecneMode;    //场景模式,0-城区道路(默认),1-小区出入口,2-高速公路
+        public byte bySpeedMode;  //测速模式,0-无测速,1-雷达测速,2-视频测速
+        public byte byLineRuleEffect; //触发规则线有效性,每一位代表一条触发线,0-无效;1-有效。bit0-左触发线;bit1-右触发线;bit2-视频检测区域
+        public byte[] byRes1 = new byte[78];
+        public NET_ITC_LINE struLeftTrigLine;    //左触发线(一条垂直线)
+        public NET_ITC_LINE struRigtTrigLine;    //右触发线(一条垂直线)
+        public NET_ITC_LINE struLaneBoundaryLine;        //车道边界线(最右边车道的右车道线)
+        public NET_ITC_POLYGON struDetectArea;    //视频检测区域
+        public NET_DVR_GEOGLOCATION struGeogLocation; //地理位置(默认浙江省)计算时区
+        public NET_ITC_LANE_HVT_PARAM_V50[] struLaneParam = new NET_ITC_LANE_HVT_PARAM_V50[MAX_ITC_LANE_NUM/*6*/]; //单车道属性
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog;    //牌识参数
+        public byte[] byRes2 = new byte[260];
+    }
+
+
+    public static class NET_ITC_LANE_PARAM extends HIKSDKStructure {
+        public byte byEnable; //是否启用该车道,0-不启用,1-启用
+        public byte byRelatedDriveWay;//关联的车道号
+        public short wDistance; //线圈距离,计算速度
+        public short wTrigDelayTime; //触发延迟时间(默认200),单位:毫秒
+        public byte byTrigDelayDistance; //触发延迟距离(默认0),单位:分米
+        public byte bySpeedCapEn; //是否启用超速抓拍,0-否,1-是
+        public byte bySignSpeed;//标志限速,单位km/h
+        public byte bySpeedLimit;//限速值,单位km/h
+        public byte bySnapTimes; //抓拍次数(默认1),0-不抓拍,非0-连拍次数,最大5
+        public byte byOverlayDriveWay; //OSD叠加的车道号
+        public NET_ITC_INTERVAL_PARAM struInterval; //抓拍间隔参数
+        public byte[] byRelatedIOOut = new byte[MAX_IOOUT_NUM]; //关联的IO输出口,可以同时关联多个
+        public byte byFlashMode;   //闪光灯闪烁模式,0-同时闪,1-轮流闪
+        public byte byCartSignSpeed;//标志限速(大车),单位km/h
+        public byte byCartSpeedLimit;//限速值(大车),单位km/h
+        public byte byRelatedIOOutEx;//第0位表示IO输出口1,以此类推,0-不关联,1-关联 支持关联到8个(兼容byRelatedIOOut字段)
+        public NET_ITC_PLATE_RECOG_REGION_PARAM[] struPlateRecog = new NET_ITC_PLATE_RECOG_REGION_PARAM[MAX_LANEAREA_NUM]; //车道牌识参数
+        public byte byLaneType;   //车道类型,0-未配置、1-高速公路、2-城市快速路、0xff-其他道路
+        public byte byUseageType; //车道用途类型,详见ITC_LANE_USEAGE_TYPE
+        //关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
+        //该参数为车道方向参数,与关联车道号对应,确保车道唯一性。
+        public byte byRelaLaneDirectionType;
+        public byte byLowSpeedLimit;                    //小车限底速值,单位km/h
+        public byte byBigCarLowSpeedLimit;                //大车限底速值,单位km/h
+        public byte byLowSpeedCapEn;                   //是否启用低速抓拍,0-否,1-是
+        public byte byEmergencyCapEn;                 //是否启用应急车道抓拍,0-否,1-是
+        public byte[] byRes = new byte[9];
+    }
+
+    //卡口RS485车检器触发参数
+    public static class NET_ITC_POST_RS485_PARAM extends HIKSDKStructure {
+        public byte byRelatedLaneNum;//关联的车道个数
+        public byte byTriggerSpareMode; //触发备用模式,0-默认,1-卡口虚拟线圈模式,2-卡口混合车道模式
+        public byte byFaultToleranceTime;//容错时间(单位:分钟),用于检测车检器是否正常的最大时间
+        public byte byRes1;
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new NET_ITC_PLATE_RECOG_PARAM(); //牌识参数
+        public NET_ITC_LANE_PARAM[] struLane = new NET_ITC_LANE_PARAM[MAX_ITC_LANE_NUM]; //关联的车道参数
+        public byte[] byRes = new byte[32];
+    }
+
+    //卡口RS485雷达触发参数
+    public static class NET_ITC_POST_RS485_RADAR_PARAM extends HIKSDKStructure {
+        public byte byRelatedLaneNum;//关联的车道个数
+        public byte[] byRes1 = new byte[3];
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog = new NET_ITC_PLATE_RECOG_PARAM(); //牌识参数
+        public NET_ITC_LANE_PARAM[] struLane = new NET_ITC_LANE_PARAM[MAX_ITC_LANE_NUM]; //关联的车道参数
+        public NET_ITC_RADAR_PARAM struRadar = new NET_ITC_RADAR_PARAM();  //雷达参数
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_ITC_TRIGGER_PARAM_UNION extends Union {
+        public int[] uLen = new int[1070];            //参数
+        public NET_ITC_POST_IOSPEED_PARAM struIOSpeed = new NET_ITC_POST_IOSPEED_PARAM();    //(卡口)IO测速参数
+        //	public NET_ITC_POST_SINGLEIO_PARAM     struSingleIO = new NET_ITC_POST_SINGLEIO_PARAM();   //(卡口)单IO参数
+        public NET_ITC_POST_RS485_PARAM struPostRs485 = new NET_ITC_POST_RS485_PARAM();  //(卡口)RS485车检器参数
+        public NET_ITC_POST_RS485_RADAR_PARAM struPostRadar = new NET_ITC_POST_RS485_RADAR_PARAM();  //(卡口)RS485雷达参数
+        public NET_ITC_POST_VTCOIL_PARAM struVtCoil = new NET_ITC_POST_VTCOIL_PARAM();     //(卡口)虚拟线圈参数
+        public NET_ITC_POST_HVT_PARAM struHvt = new NET_ITC_POST_HVT_PARAM();        //(卡口)混行卡口参数
+        //	public NET_ITC_EPOLICE_IOTL_PARAM      struIOTL = new NET_ITC_EPOLICE_IOTL_PARAM();        //(电警)IO红绿灯参数
+//	public NET_ITC_EPOLICE_RS485_PARAM     struEpoliceRs485 = new NET_ITC_EPOLICE_RS485_PARAM(); //(电警)RS485车检器触发参数
+//	public NET_ITC_EPOLICE_RS485_PARAM     struPERs485 = new NET_ITC_EPOLICE_RS485_PARAM();    //(卡式电警)RS485车检器触发参数
+//	public NET_ITC_POST_MPR_PARAM          struPostMpr = new NET_ITC_POST_MPR_PARAM();    //多帧检测触发(MPR)
+//	public NET_DVR_VIA_VTCOIL_PARAM        struViaVtCoil = new NET_DVR_VIA_VTCOIL_PARAM();  //(VIA)视频检测参数
+//	public NET_ITC_POST_IMT_PARAM          struPostImt = new NET_ITC_POST_IMT_PARAM();//智慧监控触发
+//	public NET_ITC_POST_PRS_PARAM          struPostPrs = new NET_ITC_POST_PRS_PARAM();//视频检测触发
+//	public NET_IPC_POST_HVT_PARAM          struIpcHvt = new NET_IPC_POST_HVT_PARAM();//(IPC) 混行卡口参数
+        public NET_ITC_POST_HVT_PARAM_V50 struHvtV50 = new NET_ITC_POST_HVT_PARAM_V50();  /*(卡口)混行卡口参数V50*/
+//	public NET_ITC_POST_MOBILE_PARAM       struPostMobile = new NET_ITC_POST_MOBILE_PARAM();// 移动交通触发模式
+//	public NET_ITC_NOCOMITY_PEDESTRIAN_PARAM struNoComityPed = new NET_ITC_NOCOMITY_PEDESTRIAN_PARAM();//不礼让行人参数
+//	public NET_ITC_REDLIGHT_PEDESTRIAN_PARAM struRedLightPed = new NET_ITC_REDLIGHT_PEDESTRIAN_PARAM();//行人闯红灯参数
+    }
+
+    //单个触发参数结构
+    public static class NET_ITC_SINGLE_TRIGGERCFG extends HIKSDKStructure {
+        public byte byEnable;    //是否启用该触发模式,0-否,1-是
+        public byte[] byRes1 = new byte[3];
+        public int dwTriggerType; //触发类型,详见ITC_TRIGGERMODE_TYPE
+        public NET_ITC_TRIGGER_PARAM_UNION uTriggerParam = new NET_ITC_TRIGGER_PARAM_UNION(); //触发参数
+        public byte[] byRes = new byte[64];
+    }
+
+    //触发参数结构
+    public static class NET_ITC_TRIGGERCFG extends HIKSDKStructure {
+        public int dwSize;            //结构长度
+        public NET_ITC_SINGLE_TRIGGERCFG struTriggerParam;  //单个触发参数
+        public byte[] byRes = new byte[32];
+    }
+
+    //单个IO接入信号灯参数
+    public static class NET_ITC_SINGLE_IO_LIGHT_PARAM extends HIKSDKStructure {
+        public byte byLightType; //交通灯导向类型,0-左转灯,1-直行灯,2-右转灯
+        public byte byRelatedIO; //关联的IO口号
+        public byte byRedLightState; //红灯电平状态,0-高电平红灯,1-低电平红灯
+        public byte[] byRes = new byte[17];
+    }
+
+    //IO接入信号灯参数
+    public static class NET_ITC_IO_LIGHT_PARAM extends HIKSDKStructure {
+        public NET_ITC_SINGLE_IO_LIGHT_PARAM[] struIOLight = new NET_ITC_SINGLE_IO_LIGHT_PARAM[MAX_LIGHT_NUM]; //单个IO接入信号灯参数
+        public byte[] byRes = new byte[8];
+    }
+
+    //单个485接入信号灯参数
+    public static class NET_ITC_SINGLE_RS485_LIGHT_PARAM extends HIKSDKStructure {
+        public byte byLightType; //交通灯导向类型,0-左转灯,1-直行灯,2-右转灯
+        public byte byRelatedLightChan; //关联的红绿灯检测器通道号
+        public byte byInputLight;    //接入的信号灯类型,0-接红灯,1-接绿灯
+        public byte byRelatedYLightChan; //关联的黄灯检测器通道号
+        public byte[] byRes = new byte[16];
+    }
+
+    //485接入信号灯参数
+    public static class NET_ITC_RS485_LIGHT_PARAM extends HIKSDKStructure {
+        public NET_ITC_SINGLE_RS485_LIGHT_PARAM[] struRS485Light = new NET_ITC_SINGLE_RS485_LIGHT_PARAM[MAX_LIGHT_NUM]; //单个485接入信号灯参数
+        public byte[] byRes = new byte[8];
+    }
+
+    public static class NET_POS_PARAM extends HIKSDKStructure {
+        public short wLeft;
+        public short wTop;
+        public short wRight;
+        public short wBottom;
+    }
+
+    //单组视频检测交通信号灯参数结构
+    public static class NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM extends HIKSDKStructure {
+        public byte byLightNum; //交通灯个数
+        public byte byStraightLight; //是否有直行标志灯,0-否 ,1-是
+        public byte byLeftLight; //是否有左转标志灯,0-否,1-是
+        public byte byRightLight; //是否有右转标志灯,0-否,1-是
+        public byte byRedLight;//是否有红灯,0-否,1-是
+        public byte byGreenLight; //是否有绿灯,0-否,1-是
+        public byte byYellowLight; //是否有黄灯,0-否,1-是
+        public byte byYellowLightTime;//取值范围(0~10s)(ITC3.7Ver)
+        public NET_POS_PARAM struLightRect; //交通灯区域
+        public byte[] byRes = new byte[24];
+    }
+
+    //视频检测交通信号灯参数结构(最大可有12个区域检测,488字节)
+    public static class NET_ITC_VIDEO_DETECT_LIGHT_PARAM extends HIKSDKStructure {
+        public NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM[] struTrafficLight = new NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM[MAX_VIDEO_DETECT_LIGHT_NUM]; //单个视频检测信号灯参数
+        public byte[] byRes = new byte[8];
+    }
+
+    //交通信号灯接入参数
+    public static class NET_ITC_LIGHT_ACCESSPARAM_UNION extends Union {
+        public int[] uLen = new int[122];
+        public NET_ITC_IO_LIGHT_PARAM struIOLight; //IO接入信号灯参数
+        public NET_ITC_RS485_LIGHT_PARAM struRS485Light; //485接入信号灯参数
+        public NET_ITC_VIDEO_DETECT_LIGHT_PARAM struVideoDelectLight; //视频检测信号灯参数
+    }
+
+    //交通信号灯参数结构
+    public static class NET_ITC_TRAFFIC_LIGHT_PARAM extends HIKSDKStructure {
+        public byte bySource; //交通信号灯接入源,0-IO接入,1-RS485接入
+        public byte[] byRes1 = new byte[3];
+        public NET_ITC_LIGHT_ACCESSPARAM_UNION struLightAccess = new NET_ITC_LIGHT_ACCESSPARAM_UNION();//信号灯接入参数
+        public byte[] byRes = new byte[32];
+    }
+
+    //违规检测参数结构
+    public static class NET_ITC_VIOLATION_DETECT_PARAM extends HIKSDKStructure {
+        public int dwVioDetectType; //违规检测类型, 按位表示, 详见ITC_VIOLATION_DETECT_TYPE ,0-不启用,1-启用
+        public byte byDriveLineSnapTimes; //压车道线抓拍张数,2-3
+        public byte byReverseSnapTimes; //逆行抓拍,2-3
+        public short wStayTime; //机占非停留时间(该时间后抓拍),单位s
+        public byte byNonDriveSnapTimes;//机占非抓拍张数2-3
+        public byte byChangeLaneTimes;//违法变道抓拍张数 2-3
+        public byte bybanTimes;//违法禁令抓拍张数2-3
+        public byte byDriveLineSnapSen;// 压线灵敏度(0~100)(3.7Ver)
+        public short wSnapPosFixPixel; //第2,3张抓拍位置最小偏移(违反信号灯时起效)(单位:像素) 命名需改进
+        public byte bySpeedTimes;//违法超速抓拍张数2-3(3.8Ver)
+        public byte byTurnAroundEnable;//违章掉头使能 0~关闭 1~开启
+        public byte byThirdPlateRecogTime;//第三张牌识时间 0~180s
+        public byte byPostSnapTimes;//卡口抓拍张数,1-2张
+        public byte[] byRes1 = new byte[18];
+        public short wStopLineDis;  //电警第2张违规图片与停止线的最短距离,[0,300]单位(像素)
+        public byte[] byRes = new byte[14];
+    }
+
+    //违规检测线参数结构
+    public static class NET_ITC_VIOLATION_DETECT_LINE extends HIKSDKStructure {
+        public NET_ITC_LINE struLaneLine = new NET_ITC_LINE(); //车道线参数
+        public NET_ITC_LINE struStopLine = new NET_ITC_LINE(); //停止线参数
+        public NET_ITC_LINE struRedLightLine = new NET_ITC_LINE(); //闯红灯触发线参数
+        public NET_ITC_LINE struCancelLine = new NET_ITC_LINE(); //直行触发位置取消线
+        public NET_ITC_LINE struWaitLine = new NET_ITC_LINE(); //待行区停止线参数
+        public NET_ITC_LINE[] struRes = new NET_ITC_LINE[8];
+    }
+
+    //单个车道视频电警触发参数结构
+    public static class NET_ITC_LANE_VIDEO_EPOLICE_PARAM extends HIKSDKStructure {
+        public byte byLaneNO; //关联的车道号
+        public byte bySensitivity; //线圈灵敏度,[1,100]
+        public byte byEnableRadar;//启用雷达测试0-不启用,1-启用
+        //关联车道方向类型,参考ITC_RELA_LANE_DIRECTION_TYPE
+        //该参数为车道方向参数,与关联车道号对应,确保车道唯一性。
+        public byte byRelaLaneDirectionType;
+        public NET_ITC_LANE_LOGIC_PARAM struLane; //车道参数
+        public NET_ITC_VIOLATION_DETECT_PARAM struVioDetect; //违规检测参数
+        public NET_ITC_VIOLATION_DETECT_LINE struLine; //违规检测线
+        public NET_ITC_POLYGON struPlateRecog; //牌识区域参数
+        public byte byRecordEnable;//闯红灯周期录像标志,0-不录像,1-录像
+        public byte byRecordType;//闯红灯录像类型,0-预录,1-延时录像
+        public byte byPreRecordTime;//闯红灯录像片段预录时间(默认0),单位:秒
+        public byte byRecordDelayTime;//闯红灯录像片段延时时间(默认0),单位:秒
+        public byte byRecordTimeOut;//闯红灯周期录像超时时间(秒)
+        public byte byCarSpeedLimit; //车速限制值,单位km/h
+        public byte byCarSignSpeed;//标志限速,单位km/h
+        public byte bySnapPicPreRecord; //抓拍图片预录时间点;0-默认值(第二张图片),1-第一张图片,2-第二张图片,3-第三张图片
+        public NET_ITC_INTERVAL_PARAM struInterval;//抓拍间隔参数(20byte)
+        public byte[] byRes = new byte[36];
+    }
+
+    //视频电警触发参数结构
+    public static class NET_ITC_VIDEO_EPOLICE_PARAM extends HIKSDKStructure {
+        public byte byEnable;    //是否启用,0-不启用,1-启用
+        public byte byLaneNum; //识别的车道个数
+        public byte byLogicJudge;//闯红灯违规判断逻辑,设置值为:0-按方向,1-按车道
+        public byte byRes1;
+        public NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //牌识参数
+        public NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight; //交通信号灯参数
+        public NET_ITC_LANE_VIDEO_EPOLICE_PARAM[] struLaneParam = new NET_ITC_LANE_VIDEO_EPOLICE_PARAM[MAX_ITC_LANE_NUM]; //单车道参数
+        public NET_ITC_LINE struLaneBoundaryLine; //车道边界线(最右边车道的边界线)
+        public NET_ITC_LINE struLeftLine; //左转弯分界线
+        public NET_ITC_LINE struRightLine; //右转弯分界线
+        public NET_ITC_LINE struTopZebraLine; //上部斑马线
+        public NET_ITC_LINE struBotZebraLine; //下部斑马线
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_CURTRIGGERMODE extends HIKSDKStructure {
+        public int dwSize;
+        public int dwTriggerType; //触发类型,详见ITC_TRIGGERMODE_TYPE
+        public byte[] byRes = new byte[24];
+    }
+
+    public static class NET_ITC_VIDEO_TRIGGER_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;
+        public int dwTriggerMode; //视频触发模式类型,详见ITC_TRIGGERMODE_TYPE
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_ITC_VIDEO_TRIGGER_PARAM_UNION extends Union {
+        public int[] uLen = new int[1150];
+        public NET_ITC_VIDEO_EPOLICE_PARAM struVideoEP = new NET_ITC_VIDEO_EPOLICE_PARAM(); //视频电警参数
+    }
+
+    public static class NET_ITC_VIDEO_TRIGGER_PARAM extends HIKSDKStructure {
+        public int dwSize;
+        public int dwMode; //触发模式,详见ITC_TRIGGERMODE_TYPE
+        public NET_ITC_VIDEO_TRIGGER_PARAM_UNION uVideoTrigger = new NET_ITC_VIDEO_TRIGGER_PARAM_UNION(); //触发模式参数
+        public byte[] byRes = new byte[32];
+    }
+
+    public static class NET_DVR_CMS_PARAM extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_IPADDR struAddr = new NET_DVR_IPADDR();                    // 平台服务器IP
+        public short wServerPort;                   // 平台服务器侦听端口,
+        public byte bySeverProtocolType;            //平台协议类型 1-私有,2-Ehome
+        public byte byStatus;                         //设备注册到该平台的状态,1-未注册,2-已注册
+        public byte[] sDeviceId = new byte[NAME_LEN/*32*/];     //设备ID,由平台提供
+        public byte[] sPassWord = new byte[PASSWD_LEN];  //密码
+        /*********
+         * IPC5.1.7 新增参数 Begin 2014-03-21
+         ***********/
+        public byte[] sPlatformEhomeVersion = new byte[NAME_LEN];//平台EHOME协议版本
+        /*********
+         * IPC5.1.7 新增参数 end 2014-03-21
+         ***********/
+        public byte byNetWork;                //网络类型:0- 无意义,1-自动,2-有线网络优先,3-有线网络,4-3G网络(无线网络),5-有线网络1,6-有线网络2
+        public byte byAddressType;            //0 - 无意义, 1 - ipv4/ipv6地址,2 - 域名
+        public byte byProtocolVersion;            //协议版本 0 - 无意义, 1 – v2.0,2 – v4.0,3-v2.6
+        public byte byRes1;
+        public byte[] sDomainName = new byte[MAX_DOMAIN_NAME/*64*/]; //平台服务器域名,byAddressType为2时有效
+        public byte byEnable;      //0-关闭,1-开启
+        public byte[] byRes = new byte[139];          // 保留字节
+    }
+
+    //设置完全获取出厂值
+    public static class NET_DVR_COMPLETE_RESTORE_INFO extends HIKSDKStructure {
+        public int dwSize; //结构体长度
+        public int dwChannel; //通道号
+        public byte[] byRes = new byte[64];
+    }
+
+    public static class NET_DVR_STD_ABILITY extends HIKSDKStructure {
+        public Pointer lpCondBuffer;    //[in]条件参数(码字格式),例如通道号等.可以为NULL
+        public int dwCondSize;        //[in] dwCondSize指向的内存大小
+        public Pointer lpOutBuffer;    //[out]输出参数(XML格式),不为NULL
+        public int dwOutSize;        //[in] lpOutBuffer指向的内存大小
+        public Pointer lpStatusBuffer;    //[out]返回的状态参数(XML格式),获取成功时不会赋值,如果不需要,可以置NULL
+        public int dwStatusSize;    //[in] lpStatusBuffer指向的内存大小
+        public int dwRetSize;        //[out]获取到的数据长度(lpOutBuffer或者lpStatusBuffer指向的实际数据长度)
+        public byte[] byRes = new byte[32];        //保留字节
+    }
+
+    public static class NET_DVR_STD_CONFIG extends HIKSDKStructure {
+        public Pointer lpCondBuffer;        //[in]条件参数(结构体格式),例如通道号等.可以为NULL
+        public int dwCondSize;            //[in] lpCondBuffer指向的内存大小
+        public Pointer lpInBuffer;            //[in]输入参数(结构体格式),设置时不为NULL,获取时为NULL
+        public int dwInSize;            //[in] lpInBuffer指向的内存大小
+        public Pointer lpOutBuffer;        //[out]输出参数(结构体格式),获取时不为NULL,设置时为NULL
+        public int dwOutSize;            //[in] lpOutBuffer指向的内存大小
+        public Pointer lpStatusBuffer;        //[out]返回的状态参数(XML格式),获取成功时不会赋值,如果不需要,可以置NULL
+        public int dwStatusSize;        //[in] lpStatusBuffer指向的内存大小
+        public Pointer lpXmlBuffer;    //[in/out]byDataType = 1时有效,xml格式数据
+        public int dwXmlSize;      //[in/out]lpXmlBuffer指向的内存大小,获取时同时作为输入和输出参数,获取成功后会修改会实际长度,设置时表示实际长度,而不是整个内存大小
+        public byte byDataType;     //[in]输入/输出参数类型,0-使用结构体类型lpInBuffer/lpOutBuffer有效,1-使用XML类型lpXmlBuffer有效
+        public byte[] byRes = new byte[23];
+    }
+
+    public static final int NET_SDK_MAX_FILE_PATH = 256;//路径长度
+
+    public static class NET_DVR_LOCAL_SDK_PATH extends HIKSDKStructure {
+        public byte[] sPath = new byte[NET_SDK_MAX_FILE_PATH];//组件库地址
+        public byte[] byRes = new byte[128];
+    }
+
+    public static class BYTE_ARRAY extends HIKSDKStructure {
+        public byte[] byValue;
+
+        public BYTE_ARRAY(int iLen) {
+            byValue = new byte[iLen];
+        }
+    }
+
+    public static class INT_ARRAY extends HIKSDKStructure {
+        public int[] intValue;
+
+        public INT_ARRAY(int iLen) {
+            intValue = new int[iLen];
+        }
+    }
+
+    public static class INTRef_ARRAY extends HIKSDKStructure {
+        public IntByReference[] intValue;
+
+        public INTRef_ARRAY(int iLen) {
+            intValue = new IntByReference[iLen];
+        }
+    }
+
+
+    public static class NET_DVR_JSON_DATA_CFG extends HIKSDKStructure {
+        public int dwSize;                        //结构体大小
+        public Pointer lpJsonData;                //JSON报文
+        public int dwJsonDataSize;                //JSON报文大小
+        public Pointer lpPicData;                //图片内容
+        public int dwPicDataSize;                //图片内容大小
+        public int lpInfraredFacePicBuffer;        //红外人脸图片数据缓存
+        public Pointer dwInfraredFacePicSize;    //红外人脸图片数据大小,等于0时,代表无人脸图片数据(当JSON报文为当ResponseStatus(JSON)报文时,该字段无意义;当Inbound Data(JSON)报文中没有infraredFaceURL时,该字段需要带上二进制图片内容)
+        public byte[] byRes = new byte[248];
+    }
+
+    public static class CallBack_USER extends HIKSDKStructure {
+        public byte[] byDeviceID = new byte[16];
+        public byte[] byCardNo = new byte[32];
+        public byte[] byDevIP = new byte[16];
+    }
+
+
+    public static class NET_DVR_CAMERAPARAMCFG_EX extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_VIDEOEFFECT struVideoEffect = new NET_DVR_VIDEOEFFECT();/*亮度、对比度、饱和度、锐度、色调配置*/
+        public NET_DVR_GAIN struGain = new NET_DVR_GAIN();/*自动增益*/
+        public NET_DVR_WHITEBALANCE struWhiteBalance = new NET_DVR_WHITEBALANCE();/*白平衡*/
+        public NET_DVR_EXPOSURE struExposure = new NET_DVR_EXPOSURE(); /*曝光控制*/
+        public NET_DVR_GAMMACORRECT struGammaCorrect = new NET_DVR_GAMMACORRECT();/*Gamma校正*/
+        public NET_DVR_WDR struWdr = new NET_DVR_WDR();/*宽动态*/
+        public NET_DVR_DAYNIGHT struDayNight = new NET_DVR_DAYNIGHT();/*日夜转换*/
+        public NET_DVR_BACKLIGHT struBackLight = new NET_DVR_BACKLIGHT();/*背光补偿*/
+        public NET_DVR_NOISEREMOVE struNoiseRemove = new NET_DVR_NOISEREMOVE();/*数字降噪*/
+        public byte byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/
+        /*
+    0-自动光圈,
+    1-手动光圈,
+    2-P-Iris1,
+    3-Union 3-9mm F1.6-2.7 (T5280-PQ1) [IPC5.1.7]
+    4-Union 2.8-12mm F1.6-2.7 (T5289-PQ1) [IPC5.1.7]
+    5-HIK 3.8-16mm F1.5(HV3816P-8MPIR)
+    6-HIK 11-40mm F1.7 (HV1140P-8MPIR)
+    7-HIK 2.7-12mm F1.2(TV2712P-MPIR)
+    8- MZ5721D-12MPIR
+    9- MZ1555D-12MPIR
+    10- MZ5721D-12MPIR(RS485)
+    11- MZ1555D-12MPIR(RS485)
+    */
+        public byte byIrisMode;
+        public byte byMirror;  /* 镜像:0 off,1- leftright,2- updown,3-center 4-Auto*/
+        public byte byDigitalZoom;  /*数字缩放:0 dsibale  1 enable*/
+        public byte byDeadPixelDetect;   /*坏点检测,0 dsibale  1 enable*/
+        public byte byBlackPwl;/*黑电平补偿 ,  0-255*/
+        public byte byEptzGate;// EPTZ开关变量:0-不启用电子云台,1-启用电子云台
+        public byte byLocalOutputGate;//本地输出开关变量0-本地输出关闭1-本地BNC输出打开 2-HDMI输出关闭
+        //20-HDMI_720P50输出开
+        //21-HDMI_720P60输出开
+        //22-HDMI_1080I60输出开
+        //23-HDMI_1080I50输出开
+        //24-HDMI_1080P24输出开
+        //25-HDMI_1080P25输出开
+        //26-HDMI_1080P30输出开
+        //27-HDMI_1080P50输出开
+        //28-HDMI_1080P60输出开
+        public byte byCoderOutputMode;//编码器fpga输出模式0直通3像素搬家
+        public byte byLineCoding; //是否开启行编码:0-否,1-是
+        public byte byDimmerMode; //调光模式:0-半自动,1-自动
+        public byte byPaletteMode; //调色板:0-白热,1-黑热,2-调色板2,…,8-调色板8, 9-融合1,10-彩虹,11-融合2,12-铁红1,13-铁红2,14-深褐色,15-色彩1,16-色彩2,17-冰火,18-雨,19-红热,20-绿热,21-深蓝,22-色彩3
+        public byte byEnhancedMode; //增强方式(探测物体周边):0-不增强,1-1,2-2,3-3,4-4
+        public byte byDynamicContrastEN;    //动态对比度增强 0-1
+        public byte byDynamicContrast;    //动态对比度 0-100
+        public byte byJPEGQuality;    //JPEG图像质量 0-100
+        public NET_DVR_CMOSMODECFG struCmosModeCfg = new NET_DVR_CMOSMODECFG();//CMOS模式下前端参数配置,镜头模式从能力集获取
+        public byte byFilterSwitch; //滤波开关:0-不启用,1-启用
+        public byte byFocusSpeed; //镜头调焦速度:0-10
+        public byte byAutoCompensationInterval; //定时自动快门补偿:1-120,单位:分钟
+        public byte bySceneMode;  //场景模式:0-室外,1-室内,2-默认,3-弱光
+        public NET_DVR_DEFOGCFG struDefogCfg = new NET_DVR_DEFOGCFG();//透雾参数
+        public NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization = new NET_DVR_ELECTRONICSTABILIZATION();//电子防抖
+        public NET_DVR_CORRIDOR_MODE_CCD struCorridorMode = new NET_DVR_CORRIDOR_MODE_CCD();//走廊模式
+        public byte byExposureSegmentEnable; //0~不启用,1~启用  曝光时间和增益呈阶梯状调整,比如曝光往上调整时,先提高曝光时间到中间值,然后提高增益到中间值,再提高曝光到最大值,最后提高增益到最大值
+        public byte byBrightCompensate;//亮度增强 [0~100]
+        /*
+    0-关闭、1-640*480@25fps、2-640*480@30ps、3-704*576@25fps、4-704*480@30fps、5-1280*720@25fps、6-1280*720@30fps、
+    7-1280*720@50fps、8-1280*720@60fps、9-1280*960@15fps、10-1280*960@25fps、11-1280*960@30fps、
+    12-1280*1024@25fps、13--1280*1024@30fps、14-1600*900@15fps、15-1600*1200@15fps、16-1920*1080@15fps、
+    17-1920*1080@25fps、18-1920*1080@30fps、19-1920*1080@50fps、20-1920*1080@60fps、21-2048*1536@15fps、22-2048*1536@20fps、
+    23-2048*1536@24fps、24-2048*1536@25fps、25-2048*1536@30fps、26-2560*2048@25fps、27-2560*2048@30fps、
+    28-2560*1920@7.5fps、29-3072*2048@25fps、30-3072*2048@30fps、31-2048*1536@12.5、32-2560*1920@6.25、
+    33-1600*1200@25、34-1600*1200@30、35-1600*1200@12.5、36-1600*900@12.5、37-1280*960@12.5fps、38-800*600@25fps、39-800*600@30fps40、
+    4000*3000@12.5fps、41-4000*3000@15fps、42-4096*2160@20fps、43-3840*2160@20fps 、44-960*576@25fps、45-960*480@30fps、46-752*582@25fps、
+    47-768*494@30fps、48-2560*1440@25fps、49-2560*1440@30fps 、50-720P@100fps、51-720P@120fps、52-2048*1536@50fps、53-2048*1536@60fps、
+    54-3840*2160@25fps、55-3840*2160@30fps、56-4096*2160@25fps、57-4096*2160@30fps 、58-1280*1024@50fps、59-1280*1024@60fps、
+    60-3072*2048@50fps、61-3072*2048@60fps、62-3072*1728@25fps、63-3072*1728@30fps、64-3072*1728@50fps、65-3072*1728@60fps、66-336*256@50fps、67-336*256@60fps、
+    68-384*288@50fps、69-384*288@60fps 、70- 640 * 512@50fps 、71- 640 * 512@60fps、72-2592*1944@25fps、73-2592*1944@30fps、74-2688*1536@25fps、75-2688*1536@30fps
+    76-2592*1944@20fps、77-2592*1944@15fps、78-2688*1520@20fps、79-2688*1520@15fps、80-2688*1520@25fps、81-2688*1520@30fps、82- 2720*2048@25fps、 83- 2720*2048@30fps、
+    84-336*256@25fps、85- 384*288@25fps、86-640*512@25fps、87-1280*960@50fps、88-1280*960@60fps、89-1280*960@100fps、90-1280*960@120fps、91-4000*3000@20fps、
+    92-1920*1200@25fps、93-1920*1200@30fps、94-2560*1920@25fps、95-2560*1920@20fps、96-2560*1920@30fps、97-1280*1920@25fps、98-1280*1920@30fps
+    99-4000*3000@24fps、100-4000*3000@25fps、101-4000*3000@10fps、102- 384*288@30fps、103-2560*1920@15fps、104-2400*3840@25fps、105-1200*1920@25fps
+    106-4096*1800@30fps、107-3840*1680@30fps、108-2560*1120@30fps、109-704*320@30fps、110-1280*560@30fps、111-4096*1800@25fps、112-3840*1680@25fps
+    113-2560*1120@25fps、114-704*320@25fps、115-1280*560@25fps、116-2400*3840@24fps、117-3840*2400@24fps、118-3840*2400@25fps、119-2560*1920@12.5fps
+    120-2560*2048@12fps、121-2560*2048@15fps、122-2560*1536@25fps、123-2560*1536@30fps、124-2256*2048@25fps、125-2256*2048@30fps、126-2592*2592@12.5fps、127-2592*2592@15fps、
+    128 - 640*512@30fps、129-2048*1520@30fps、130-2048*1520@25fps、131-3840*2160@24fps、132-2592*1520@25fps、133-2592*1520@30fps、134-2592*1536@25fps、135-2592*1536@30fps
+    136-640*960@25fps、137-640*960@24fps、142-2992*2192@25fps、143-2992*2192@30fps、144-3008*2160@25fps、145-3008*2160@30fps、146-3072*1728@20fps、147-2560*1440@20fps、
+    148-2160*3840@25fps、149-2160*3840@30fps、150-7008*1080@25fps、151-7008*1080@30fps、152-3072*2048@20fps、153-1536*864@25fps、154-2560*1920@24fps、155-2400*3840@30fps、
+    156-3840*2400@30fps、157-3840*2160@15fps
+    158-384*288@8.3fps、159-640*512@8.3fps、160-160*120@8.3fps、161-1024*768@8.3fps、162-640*480@8.3fps、163-3840*2160@12.5fps、164-2304*1296@30fps、165-2304*1296@25fps、
+    166-2560*1440@24fps、167-2688*1512@25fps、168-2688*1512@30fps、169-2688*1512@50fps、170-2688*1512@60fps、171-1536*864@30fps、172-2560*1440@50fps、173-2560*1440@60fps、
+    174-2048*2048@25fps、175-2048*2048@30fps、176-4000*3060@20fps、177-3060*3060@25fps、178-3060*3060@30fps、179-3000*3000@25fps、180-3000*3000@30fps、181-8160*3616@30fps、
+    182-8160*3616@25fps、183-3000*3000@20fps、184-3000*3000@15fps、185-3000*3000@12.5fps、186-5472*3648@25fps、187-5472*3648@30fps、188-7680*4320@25fps、189-7680*4320@30fps、
+    190-8160*2400@25fps、191-8160*2400@30fps、192-5520*2400@25fps、193-5520*2400@30fps、194-2560*1440@15fps、195-1944*1212@24fps、196-1944*1212@25fps、197-3456*1920@30fps、
+    198-4800*2688@25fps、199-4800*2688@30fps、200-6480*1080@25fps、201-6480*1080@30fps、202-8640*1440@25fps、203-8640*1440@30fps、204-3456*1920@25fps、205-2688*1520@50fps、
+    206-2688*1520@60fps、207-4976*1452@25fps、208-4976*1452@30fps、 209-3200*1800@25fps、210-3200*1800@30fps、211-5472*3648@24fps、212-1920*1080@12.5fps、213-2944*1656@20fps、
+    214-1920*1080@24fps、215-4800*1600@25fps、216-4800*1600@30fps、217-2560*1440@12.5fps、218-6560*3690@1fps、219-5120*1400@20fps*/
+        public byte byCaptureModeN; //视频输入模式(N制)
+        public byte byCaptureModeP; //视频输入模式(P制)
+        public NET_DVR_SMARTIR_PARAM struSmartIRParam = new NET_DVR_SMARTIR_PARAM(); //红外放过爆配置信息
+        public NET_DVR_PIRIS_PARAM struPIrisParam = new NET_DVR_PIRIS_PARAM();//PIris配置信息对应byIrisMode字段从2-PIris1开始生效
+        //2014-02-25 新增参数
+        public NET_DVR_LASER_PARAM_CFG struLaserParam = new NET_DVR_LASER_PARAM_CFG();    //激光参数
+        public NET_DVR_FFC_PARAM struFFCParam = new NET_DVR_FFC_PARAM();
+        public NET_DVR_DDE_PARAM struDDEParam = new NET_DVR_DDE_PARAM();
+        public NET_DVR_AGC_PARAM struAGCParam = new NET_DVR_AGC_PARAM();
+        public byte byLensDistortionCorrection;//镜头畸变校正 0-关闭,1-开启
+        public byte byDistortionCorrectionLevel;//畸变校正等级:0-保留;1-等级一;2-等级二;3-等级三;255-自定义
+        public byte byCalibrationAccurateLevel;// 畸变校正强度[0-100]
+        public byte byZoomedInDistantViewLevel;//远端放大等级[0-100]
+        public NET_DVR_SNAP_CAMERAPARAMCFG struSnapCCD = new NET_DVR_SNAP_CAMERAPARAMCFG(); //抓拍机CCD参数,只用于抓拍机
+        public NET_DVR_OPTICAL_DEHAZE struOpticalDehaze = new NET_DVR_OPTICAL_DEHAZE();//光学透雾参数
+        public NET_DVR_THERMOMETRY_AGC struThermAGC = new NET_DVR_THERMOMETRY_AGC();//测温AGC配置
+        public byte byFusionMode;//双光谱视频融合模式,0~热成像模式,1~融合模式,2~画中画模式,3~可见光模式, 4~融合黑白模式, 5~融合彩色模式-草地,6~融合彩色模式-荒地,7~融合彩色模式-雪地,8~融合彩色模式-海洋,9~融合彩色模式-城市
+        public byte byHorizontalFOV;//水平视场角[0-100]
+        public byte byVerticalFOV;//垂直视场角[0-100]
+        public byte byBrightnessSuddenChangeSuppression;//亮度突变抑制0-关闭,1-开启
+        public byte byGPSEnabled;//GPS开关使能,0-关,1-开
+        public byte[] byRes2 = new byte[155];
+    }
+
+
+    public static class NET_DVR_VIDEOEFFECT extends HIKSDKStructure {
+        public byte byBrightnessLevel; /*0-100*/
+        public byte byContrastLevel; /*0-100*/
+        public byte bySharpnessLevel; /*0-100*/
+        public byte bySaturationLevel; /*0-100*/
+        public byte byHueLevel; /*0-100,(保留)*/
+        public byte byEnableFunc; //使能,按位表示,bit0-SMART IR(防过曝),bit1-低照度,bit2-强光抑制使能,0-否,1-是
+        public byte byLightInhibitLevel; //强光抑制等级,[1-3]表示等级
+        public byte byGrayLevel; //灰度值域,0-[0-255],1-[16-235]
+    }
+
+
+    public static class NET_DVR_GAIN extends HIKSDKStructure {
+        public byte byGainLevel; /*增益:0-100*/
+        public byte byGainUserSet; /*用户自定义增益;0-100,对于抓拍机,是CCD模式下的抓拍增益*/
+        public byte[] byRes = new byte[2];
+        public int dwMaxGainValue;/*最大增益值,单位dB*/
+    }
+
+    public static class NET_DVR_WHITEBALANCE extends HIKSDKStructure {
+        public byte byWhiteBalanceMode; /*0-手动白平衡(MWB),1-自动白平衡1(AWB1),2-自动白平衡2 (AWB2),3-自动控制改名为锁定白平衡(Locked WB),
+    4-室外(Indoor),5-室内(Outdoor)6-日光灯(Fluorescent Lamp),7-钠灯(Sodium Lamp),
+    8-自动跟踪(Auto-Track)9-一次白平衡(One Push),10-室外自动(Auto-Outdoor),
+    11-钠灯自动 (Auto-Sodiumlight),12-水银灯(Mercury Lamp),13-自动白平衡(Auto),
+14-白炽灯 (IncandescentLamp),15-暖光灯(Warm Light Lamp),16-自然光(Natural Light) */
+        public byte byWhiteBalanceModeRGain; /*手动白平衡时有效,手动白平衡 R增益*/
+        public byte byWhiteBalanceModeBGain; /*手动白平衡时有效,手动白平衡 B增益*/
+        public byte[] byRes = new byte[5];
+    }
+
+    public static class NET_DVR_EXPOSURE extends HIKSDKStructure {
+        public byte byExposureMode; /*0 手动曝光 1自动曝光*/
+        public byte byAutoApertureLevel; /* 自动光圈灵敏度, 0-10 */
+        public byte[] byRes = new byte[2];
+        public int dwVideoExposureSet; /* 自定义视频曝光时间(单位us)*//*注:自动曝光时该值为曝光最慢值 新增20-1s(1000000us)*/
+        public int dwExposureUserSet; /* 自定义曝光时间,在抓拍机上应用时,CCD模式时是抓拍快门速度*/
+        public int dwRes;
+    }
+
+    public static class NET_DVR_GAMMACORRECT extends HIKSDKStructure {
+        public byte byGammaCorrectionEnabled; /*0 dsibale  1 enable*/
+        public byte byGammaCorrectionLevel; /*0-100*/
+        public byte[] byRes = new byte[6];
+    }
+
+
+    public static class NET_DVR_WDR extends HIKSDKStructure {
+        public byte byWDREnabled; /*宽动态:0 dsibale  1 enable 2 auto*/
+        public byte byWDRLevel1; /*0-F*/
+        public byte byWDRLevel2; /*0-F*/
+        public byte byWDRContrastLevel; /*0-100*/
+        public byte[] byRes = new byte[16];
+    }
+
+    public static class NET_DVR_DAYNIGHT extends HIKSDKStructure {
+        public byte byDayNightFilterType; /*日夜切换:0-白天,1-夜晚,2-自动,3-定时,4-报警输入触发, 5-自动模式2(无光敏),6-黑光,7-黑光自动,8-黑光定时*/
+        public byte bySwitchScheduleEnabled; /*0 dsibale  1 enable,(保留)*/
+        //定时模式参数
+        public byte byBeginTime; /*开始时间(小时),0-23*/
+        public byte byEndTime; /*结束时间(小时),0-23*/
+        //模式2
+        public byte byDayToNightFilterLevel; //0-7
+        public byte byNightToDayFilterLevel; //0-7
+        public byte byDayNightFilterTime;//(60秒)
+        //定时模式参数
+        public byte byBeginTimeMin; //开始时间(分),0-59
+        public byte byBeginTimeSec; //开始时间(秒),0-59
+        public byte byEndTimeMin; //结束时间(分),0-59
+        public byte byEndTimeSec; //结束时间(秒),0-59
+        //报警输入触发模式参数
+        public byte byAlarmTrigState; //报警输入触发状态,0-白天,1-夜晚
+    }
+
+    public static class NET_DVR_BACKLIGHT extends HIKSDKStructure {
+        public byte byBacklightMode; /*背光补偿:0 off 1 UP、2 DOWN、3 LEFT、4 RIGHT、5MIDDLE、6自定义,10-开,11-自动,12-多区域背光补偿*/
+        public byte byBacklightLevel; /*0x0-0xF*/
+        public byte[] byRes1 = new byte[2];
+        public int dwPositionX1; //(X坐标1)
+        public int dwPositionY1; //(Y坐标1)
+        public int dwPositionX2; //(X坐标2)
+        public int dwPositionY2; //(Y坐标2)
+        public byte[] byRes2 = new byte[4];
+    }
+
+
+    public static class NET_DVR_NOISEREMOVE extends HIKSDKStructure {
+        public byte byDigitalNoiseRemoveEnable; /*0-不启用,1-普通模式数字降噪,2-专家模式数字降噪*/
+        public byte byDigitalNoiseRemoveLevel; /*普通模式数字降噪级别:0x0-0xF*/
+        public byte bySpectralLevel;       /*专家模式下空域强度:0-100*/
+        public byte byTemporalLevel;   /*专家模式下时域强度:0-100*/
+        public byte byDigitalNoiseRemove2DEnable;         /* 抓拍帧2D降噪,0-不启用,1-启用 */
+        public byte byDigitalNoiseRemove2DLevel;            /* 抓拍帧2D降噪级别,0-100 */
+        public byte[] byRes = new byte[2];
+    }
+
+
+    public static class NET_DVR_CMOSMODECFG extends HIKSDKStructure {
+        public byte byCaptureMod;   //抓拍模式:0-抓拍模式1;1-抓拍模式2
+        public byte byBrightnessGate;//亮度阈值
+        public byte byCaptureGain1;   //抓拍增益1,0-100
+        public byte byCaptureGain2;   //抓拍增益2,0-100
+        public int dwCaptureShutterSpeed1;//抓拍快门速度1
+        public int dwCaptureShutterSpeed2;//抓拍快门速度2
+        public byte[] byRes = new byte[4];
+    }
+
+    public static class NET_DVR_DEFOGCFG extends HIKSDKStructure {
+        public byte byMode; //模式,0-不启用,1-自动模式,2-常开模式
+        public byte byLevel; //等级,0-100
+        public byte[] byRes = new byte[6];
+    }
+
+    public static class NET_DVR_CMOSMODCFG extends HIKSDKStructure {
+        public byte byCaptureMod;   //抓拍模式:0-抓拍模式1;1-抓拍模式2
+        public byte byBrightnessGate;//亮度阈值
+        public byte byCaptureGain1;   //抓拍增益1,0-100
+        public byte byCaptureGain2;   //抓拍增益2,0-100
+        public int dwCaptureShutterSpeed1;//抓拍快门速度1
+        public int dwCaptureShutterSpeed2;//抓拍快门速度2
+        public byte[] byRes = new byte[4];
+    }
+
+    public static class NET_DVR_ELECTRONICSTABILIZATION extends HIKSDKStructure {
+        public byte byEnable;//使能 0- 不启用,1- 启用
+        public byte byLevel; //等级,0-100
+        public byte[] byRes = new byte[6];
+    }
+
+    public static class NET_DVR_CORRIDOR_MODE_CCD extends HIKSDKStructure {
+        public byte byEnableCorridorMode; //是否启用走廊模式 0~不启用, 1~启用
+        public byte[] byRes = new byte[11];
+    }
+
+    public static class NET_DVR_SMARTIR_PARAM extends HIKSDKStructure {
+        public byte byMode;//0~手动,1~自动
+        public byte byIRDistance;//红外距离等级(等级,距离正比例)level:1~100 默认:50(手动模式下增加)
+        public byte byShortIRDistance;// 近光灯距离等级(1~100)
+        public byte byLongIRDistance;// 远光灯距离等级(1~100)
+    }
+
+    public static class NET_DVR_PIRIS_PARAM extends HIKSDKStructure {
+        public byte byMode;//0-自动,1-手动
+        public byte byPIrisAperture;//红外光圈大小等级(等级,光圈大小正比例)level:1~100 默认:50(手动模式下增加)
+        public byte[] byRes = new byte[6];
+    }
+
+    public static class NET_DVR_LASER_PARAM_CFG extends HIKSDKStructure {
+        public byte byControlMode;        //控制模式            0-无效,1-自动,2-手动 默认自动
+        public byte bySensitivity;        //激光灯灵敏度        0-100 默认50
+        public byte byTriggerMode;        //激光灯触发模式    0-无效,1-机芯触发,2-光敏触发 默认机芯触发
+        public byte byBrightness;        //控制模式为手动模式下有效;激光灯亮度        0-255 默认100
+        public byte byAngle;            //激光灯角度        0-无效,范围1-36  默认12,激光灯照射范围为一个圆圈,调节激光角度是调节这个圆的半径的大小
+        public byte byLimitBrightness;  //控制模式为自动模式下有效;激光灯亮度限制 0~100 (新增)2014-01-26
+        public byte byEnabled;         //手动控制激光灯使能 0-关闭,1-启动
+        public byte byIllumination;     //激光灯强度配置0~100
+        public byte byLightAngle;       //补光角度 0~100
+        public byte[] byRes = new byte[7];           //保留
+    }
+
+    public static class NET_DVR_FFC_PARAM extends HIKSDKStructure {
+        //1-Schedule Mode,2-Temperature Mode, 3-Off
+        public byte byMode;
+        //(时间:按能力显示,单位分钟,选项有10,20,30,40,50,60,120,180,240)
+        public byte byRes1;
+        public short wCompensateTime; //定时模式下生效
+        public byte[] byRes2 = new byte[4];
+    }
+
+    public static class NET_DVR_DDE_PARAM extends HIKSDKStructure {
+        public byte byMode;//1-Off,2-Normal Mode,3-Expert Mode
+        public byte byNormalLevel;//普通模式等级范围[1,100],普通模式下生效
+        public byte byExpertLevel;//专家模式等级范围[1,100],专家模式下生效
+        public byte[] byRes = new byte[5];
+    }
+
+    public static class NET_DVR_AGC_PARAM extends HIKSDKStructure {
+        public byte bySceneType;//1-Normal Sence,2-Highlight Sence,3-Manual Sence
+        public byte byLightLevel;//亮度等级[1,100];手动模式下生效
+        public byte byGainLevel; //增益等级[1,100];手动模式下生效
+        public byte[] byRes = new byte[5];
+    }
+
+    public static class NET_DVR_SNAP_CAMERAPARAMCFG extends HIKSDKStructure {
+        public byte byWDRMode;   // 宽动态模式;0~关闭,1~数字宽动态 2~宽动态
+        public byte byWDRType;    // 宽动态切换模式; 0~强制启用,1~按时间启用,2~按亮度启用
+        public byte byWDRLevel;   // 宽动态等级,0~6索引对应1-7,默认索引2(即3级);
+        public byte byRes1;
+        public NET_DVR_TIME_EX struStartTime = new NET_DVR_TIME_EX(); //开始宽动态时间
+        public NET_DVR_TIME_EX struEndTime = new NET_DVR_TIME_EX(); //结束宽动态时间
+        public byte byDayNightBrightness; //日夜转换亮度阈值,0-100,默认50;
+        //记忆色增强
+        public byte byMCEEnabled;//记忆色增强使能,true:开启,false:关闭
+        public byte byMCELevel;//记忆色增强强度,0~100,默认值50
+        //自动对比度
+        public byte byAutoContrastEnabled;//自动对比度使能,true:开启,false:关闭
+        public byte byAutoContrastLevel;//自动对比等级(0-100),默认50
+        //细节增强
+        public byte byLSEDetailEnabled;//细节增强使能,true:开启,false:关闭
+        public byte byLSEDetailLevel;//细节增强等级(0-100),默认50
+        // License Plate Definition Enhancement车牌增强
+        public byte byLPDEEnabled;//车牌增强使能,true:开启,false:关闭
+        public byte byLPDELevel;//车牌增强等级(0-100),默认50
+        //对比度增强
+        public byte byLseEnabled; //对比度增强使能,true:开启,false:关闭
+        public byte byLseLevel; //对比度增强等级(0-100),默认0
+        public byte byLSEHaloLevel;//光晕抑制等级。范围 0-100,默认0
+        public byte byLseType; //对比度增强切换模式; 0~强制启用,1~按时间启用,2~按亮度启用(该字段可同时控制byLseLevel、byLSEHaloLevel两个参数)
+        public byte[] byRes2 = new byte[3];
+        public NET_DVR_TIME_EX struLSEStartTime = new NET_DVR_TIME_EX(); //开始对比度增强时间(当byLseType为1时生效)
+        public NET_DVR_TIME_EX struLSEEndTime = new NET_DVR_TIME_EX(); //结束对比度增强时间(当byLseType为1时生效)
+        public byte byLightLevel;//为亮度等级参数(0-100),默认0,(当byLseType为2时生效)
+        //车牌对比度
+        public byte byPlateContrastLevel;//车牌对比度等级,0~100,默认0
+        //车牌饱和度
+        public byte byPlateSaturationLevel;//车牌饱和度等级,0~100,默认0
+        public byte[] byRes = new byte[9];
+    }
+
+    public static class NET_DVR_OPTICAL_DEHAZE extends HIKSDKStructure {
+        public byte byEnable; //0~不启用光学透雾,1~启用光学透雾
+        public byte[] byRes = new byte[7];
+    }
+
+    public static class NET_DVR_THERMOMETRY_AGC extends HIKSDKStructure {
+        public byte byMode;//AGC模式,0~无效,1~自动,2~手动
+        public byte byRes1[] = new byte[3];
+        public int iHighTemperature;//最高温度,范围为:-273~9999摄氏度(1~手动模式下生效)
+        public int iLowTemperature;//最低温度,范围为:-273~9999摄氏度(1~手动模式下生效)
+        public byte[] byRes = new byte[8];
+    }
+
+    public static class NET_DVR_CHECK_DEV_STATE extends HIKSDKStructure {
+        public int dwTimeout;      //定时检测设备工作状态,单位ms,为0时,表示使用默认值(30000)。最小值为1000
+        public DEV_WORK_STATE_CB fnStateCB;
+        Pointer pUserData;
+        public byte[] byRes = new byte[60];
+    }
+
+    public static class NET_DVR_FLOW_INFO extends HIKSDKStructure {
+        public int dwSize;             //结构大小
+        public int dwSendFlowSize;     //发送流量大小,单位kbps
+        public int dwRecvFlowSize;     //接收流量大小,单位kbps
+        public byte[] byRes = new byte[20];           //保留
+    }
+
+    public static class NET_DVR_AES_KEY_INFO extends HIKSDKStructure {
+        public byte[] sAESKey = new byte[16];        /*码流加密密钥*/
+        public byte[] byRes = new byte[64];          /*保留字节*/
+    }
+
+    public static class NET_DVR_ALARM_RS485CFG extends HIKSDKStructure {
+        public int dwSize;                 // 结构体大小
+        public byte[] sDeviceName = new byte[NAME_LEN];  // 前端设备名称
+        public short wDeviceType;            // 前端设备类型,通过NET_DVR_GetDeviceTypeList获取
+        public short wDeviceProtocol;        // 前端设备协议 通过获取协议列表获取
+        public int dwBaudRate;             //波特率(bps),0-50,1-75,2-110,3-150,4-300,5-600,6-1200,7-2400,8-4800,9-9600,10-19200,11-38400,12-57600,13-76800,14-115.2k
+        public byte byDataBit;              // 数据有几位:0-5位,1-6位,2-7位,3-8位
+        public byte byStopBit;              // 停止位:0-1位,1-2位
+        public byte byParity;               //是否校验:0-无校验,1-奇校验,2-偶校验
+        public byte byFlowcontrol;           // 是否流控:0-无,1-软流控,2-硬流控
+        public byte byDuplex;                // 0 - 半双工1- 全双工  只有通道1可以是全双工其他都只能是半双工
+        public byte byWorkMode;                // 工作模式 0-控制台 1-透明通道,2-梯控,3-读卡器,4-门禁安全模块,0xfe-自定义,0xff-禁用
+        public byte byChannel;                //485通道号
+        public byte bySerialType;            //串口类型: 0--485, 1--232
+        public byte byMode;                 //模式 0-连接读卡器 1-连接客户端 2-连接扩展模块 3-连接门禁主机 4-连接梯控主机  0xff-禁用
+        public byte byOutputDataType;  //0-无效,1-输出卡号,2-输出工号
+        public byte byAddress;               //串口地址
+        public byte[] byRes = new byte[33];              // 保留字节
+    }
+
+    public static class NET_DVR_ALARMHOST_RS485_SLOT_CFG extends HIKSDKStructure {
+        public int dwSize;              // 结构体大小
+        public byte[] sDeviceName = new byte[NAME_LEN];      // 前端设备名称
+        public short wDeviceType;            // 前端设备类型ALARM_FRONT_DEVICE _TYPE
+        public byte wDeviceProtocol;     // 前端设备协议 通过获取协议列表获取
+        public short wAddress;            //设备地址
+        public byte byChannel;          //485通道号
+        public byte bySlotChan;         //槽位号
+        public byte[] byRes = new byte[60];          // 保留字节
+    }
+
+
+    public static class NET_DVR_VIDEOWALLDISPLAYPOSITION extends HIKSDKStructure {
+        public int dwSize;
+        public byte byEnable;
+        public byte byCoordinateType;//坐标类型。0-基准坐标,1-实际坐标
+        public byte[] byRes1 = new byte[2];
+        //墙号,1字节墙号(高字节,对于合码器设备,为合码通道号)+3字节保留
+        public int dwVideoWallNo;
+        public int dwDisplayNo;//显示输出号
+        //坐标须为基准坐标的整数倍(1920*1920),宽度和高度值不用设置,即为基准值
+        public NET_DVR_RECTCFG_EX struRectCfg;
+        public byte[] byRes2 = new byte[64];
+    }
+
+    public static final int MAX_DISPLAY_NUM = 512; //最大显示输出个数
+
+    public static class NET_DVR_DISPLAYCFG extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_DISPLAYPARAM[] struDisplayParam = new NET_DVR_DISPLAYPARAM[MAX_DISPLAY_NUM];
+        public byte[] byRes2 = new byte[128];
+    }
+
+    public static class NET_DVR_DISPLAYPARAM extends HIKSDKStructure {
+        public int dwDisplayNo;
+        public byte byDispChanType;
+        public byte[] byRes = new byte[11];
+    }
+
+    public static class NET_DVR_WALLOUTPUTPARAM extends HIKSDKStructure {
+        public int dwSize;
+        public int dwResolution; //分辨率
+        public NET_DVR_VIDEOEFFECT struRes;
+        public byte byVideoFormat; //视频制式,见VIDEO_STANDARD
+        public byte byDisplayMode;/*输出连接模式,1-BNC,2-VGA,3-HDMI,4-DVI,5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVI自适应,0xff-无效*/
+        public byte byBackgroundColor; //背景色,0-无效,不支持背景色,1-红,2-绿,3-蓝,4-黄,5-紫,6-青,7-黑,8-白,0xff-自定义
+        public byte byUseEDIDResolution; //是否使用EDID分辨率,0-不使用,1-使用
+        public short wLEDWidth;     //LED屏输出分辨率宽
+        public short wLEDHeight;    //LED屏输出分辨率高
+        public NET_DVR_RGB_COLOR struBackColor;//背景色,byBackgroundColor为0xff时有效
+        public byte byLinkStatus;//输出口连接状态,0-无效,1-接入显示器,2-未接入显示器
+        public byte[] byRes2 = new byte[51];
+    }
+
+    public static class WALLOUTPUTPARAM_ARRAY extends HIKSDKStructure {
+        public NET_DVR_WALLOUTPUTPARAM[] strWalloutputParm;
+
+        public WALLOUTPUTPARAM_ARRAY(int iLen) {
+            strWalloutputParm = new NET_DVR_WALLOUTPUTPARAM[iLen];
+        }
+
+    }
+
+
+    /***
+     * API函数声明,详细说明见API手册
+     ***/
+    public static interface FRealDataCallBack_V30 extends Callback {
+        public void invoke(int lRealHandle, int dwDataType,
+                           ByteByReference pBuffer, int dwBufSize, Pointer pUser);
+    }
+
+    public static interface FMSGCallBack extends Callback {
+        public void invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser);
+    }
+
+    public static interface FMSGCallBack_V31 extends Callback {
+        public boolean invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser);
+    }
+
+    public static interface FMessCallBack extends Callback {
+        public boolean invoke(int lCommand, String sDVRIP, String pBuf, int dwBufLen);
+    }
+
+    public static interface FMessCallBack_EX extends Callback {
+        public boolean invoke(int lCommand, int lUserID, String pBuf, int dwBufLen);
+    }
+
+    public static interface FMessCallBack_NEW extends Callback {
+        public boolean invoke(int lCommand, String sDVRIP, String pBuf, int dwBufLen, short dwLinkDVRPort);
+    }
+
+    public static interface FMessageCallBack extends Callback {
+        public boolean invoke(int lCommand, String sDVRIP, String pBuf, int dwBufLen, int dwUser);
+    }
+
+    public static interface FExceptionCallBack extends Callback {
+        public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser);
+    }
+
+    public static interface FDrawFun extends Callback {
+        public void invoke(int lRealHandle, W32API.HDC hDc, int dwUser);
+    }
+
+    public static interface FStdDataCallBack extends Callback {
+        public void invoke(int lRealHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FPlayDataCallBack extends Callback {
+        public void invoke(int lPlayHandle, int dwDataType, ByteByReference pBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FPlayESCallBack extends Callback {
+        public void invoke(int lPlayHandle, NET_DVR_PACKET_INFO_EX struPackInfo, Pointer pUser);
+    }
+
+    public static interface FVoiceDataCallBack extends Callback {
+        public void invoke(int lVoiceComHandle, Pointer pRecvDataBuffer, int dwBufSize, byte byAudioFlag, int dwUser);
+    }
+
+    public static interface FVoiceDataCallBack_V30 extends Callback {
+        public void invoke(int lVoiceComHandle, Pointer pRecvDataBuffer, int dwBufSize, byte byAudioFlag, Pointer pUser);
+    }
+
+    public static interface FVoiceDataCallBack_MR extends Callback {
+        public void invoke(int lVoiceComHandle, Pointer pRecvDataBuffer, int dwBufSize, byte byAudioFlag, int dwUser);
+    }
+
+    public static interface FVoiceDataCallBack_MR_V30 extends Callback {
+        public void invoke(int lVoiceComHandle, Pointer pRecvDataBuffer, int dwBufSize, byte byAudioFlag, Pointer pUser);
+    }
+
+    public static interface FVoiceDataCallBack2 extends Callback {
+        public void invoke(String pRecvDataBuffer, int dwBufSize, Pointer pUser);
+    }
+
+    public static interface FSerialDataCallBack extends Callback {
+        public void invoke(int lSerialHandle, String pRecvDataBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FRowDataCallBack extends Callback {
+        public void invoke(int lUserID, String sIPAddr, int lRowAmout, String pRecvDataBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FColLocalDataCallBack extends Callback {
+        public void invoke(int lUserID, String sIPAddr, int lColumnAmout, String pRecvDataBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FColGlobalDataCallBack extends Callback {
+        public void invoke(int lUserID, String sIPAddr, int lColumnAmout, String pRecvDataBuffer, int dwBufSize, int dwUser);
+    }
+
+    public static interface FJpegdataCallBack extends Callback {
+        public int invoke(int lCommand, int lUserID, String sDVRIP, String sJpegName, String pJpegBuf, int dwBufLen, int dwUser);
+    }
+
+    public static interface FPostMessageCallBack extends Callback {
+        public int invoke(int dwType, int lIndex);
+    }
+
+    public static interface DEV_WORK_STATE_CB extends Callback {
+        public boolean invoke(Pointer pUserdata, int iUserID, NET_DVR_WORKSTATE_V40 lpWorkState);
+    }
+
+    public static interface FLOWTESTCALLBACK extends Callback {
+        public void invoke(int lFlowHandle, NET_DVR_FLOW_INFO pFlowInfo,
+                           Pointer pUser);
+    }
+
+
+    boolean NET_DVR_Init();
+
+    boolean NET_DVR_Cleanup();
+
+    static boolean NET_DVR_SetSDKInitCfg(int enumType, Pointer lpInBuff) {
+		return true;
+	}
+
+    boolean NET_DVR_SetSDKLocalCfg(int enumType, Pointer lpInBuff);
+
+    boolean NET_DVR_GetSDKLocalCfg(int enumType, Pointer lpOutBuff);
+
+    boolean NET_DVR_SetDVRMessage(int nMessage, int hWnd);
+
+    //NET_DVR_SetDVRMessage的扩展
+    boolean NET_DVR_SetExceptionCallBack_V30(int nMessage, int hWnd, FExceptionCallBack fExceptionCallBack, Pointer pUser);
+
+    boolean NET_DVR_SetDVRMessCallBack(FMessCallBack fMessCallBack);
+
+    boolean NET_DVR_SetDVRMessCallBack_EX(FMessCallBack_EX fMessCallBack_EX);
+
+
+    //2007-04-16增加查询结果带卡号的文件查找
+    int NET_DVR_FindNextFile_Card(int lFindHandle, NET_DVR_FINDDATA_CARD lpFindData);
+
+    int NET_DVR_FindFile_Card(int lUserID, int lChannel, int dwFileType, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime);
+
+    boolean NET_DVR_LockFileByName(int lUserID, String sLockFileName);
+
+    boolean NET_DVR_UnlockFileByName(int lUserID, String sUnlockFileName);
+
+    int NET_DVR_PlayBackByName(int lUserID, String sPlayBackFileName, HWND hWnd);
+
+    int NET_DVR_PlayBackByTime(int lUserID, int lChannel, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, HWND hWnd);
+
+    int NET_DVR_PlayBackByTime_V40(int lUserID, NET_DVR_VOD_PARA pVodPara);
+
+    boolean NET_DVR_PlayBackControl(int lPlayHandle, int dwControlCode, int dwInValue, IntByReference LPOutValue);
+
+    boolean NET_DVR_PlayBackControl_V40(int lPlayHandle, int dwControlCode, Pointer lpInBuffer, int dwInLen, Pointer lpOutBuffer, IntByReference lpOutLen);
+
+    boolean NET_DVR_StopPlayBack(int lPlayHandle);
+
+    boolean NET_DVR_SetPlayDataCallBack(int lPlayHandle, FPlayDataCallBack fPlayDataCallBack, int dwUser);
+
+    boolean NET_DVR_SetPlayBackESCallBack(int lPlayHandle, FPlayESCallBack fPlayESCallBack, Pointer pUser);
+
+    boolean NET_DVR_PlayBackSaveData(int lPlayHandle, String sFileName);
+
+    boolean NET_DVR_StopPlayBackSave(int lPlayHandle);
+
+    boolean NET_DVR_GetPlayBackOsdTime(int lPlayHandle, NET_DVR_TIME lpOsdTime);
+
+    boolean NET_DVR_PlayBackCaptureFile(int lPlayHandle, String sFileName);
+
+    int NET_DVR_GetFileByName(int lUserID, String sDVRFileName, byte[] sSavedFileName);
+
+    int NET_DVR_GetFileByTime(int lUserID, int lChannel, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, String sSavedFileName);
+
+    int NET_DVR_GetFileByTime_V40(int lUserID, String sSavedFileName, NET_DVR_PLAYCOND pDownloadCond);
+
+    boolean NET_DVR_StopGetFile(int lFileHandle);
+
+    int NET_DVR_GetDownloadPos(int lFileHandle);
+
+    int NET_DVR_GetPlayBackPos(int lPlayHandle);
+
+    //图片查找
+    int NET_DVR_FindPicture(int lUserID, NET_DVR_FIND_PICTURE_PARAM pFindParam);
+
+    int NET_DVR_FindNextPicture_V50(int lFindHandle, NET_DVR_FIND_PICTURE_V50 lpFindData);
+
+    int NET_DVR_FindNextPicture(int lFindHandle, NET_DVR_FIND_PICTURE lpFindData);
+
+    boolean NET_DVR_CloseFindPicture(int lFindHandle);
+
+    boolean NET_DVR_GetPicture_V50(int lUserID, NET_DVR_PIC_PARAM lpPicParam);
+
+    boolean NET_DVR_SetDVRMessCallBack_NEW(FMessCallBack_NEW fMessCallBack_NEW);
+
+
+    boolean NET_DVR_SetDVRMessageCallBack(FMessageCallBack fMessageCallBack, int dwUser);
+
+    boolean NET_DVR_SetDVRMessageCallBack_V30(FMSGCallBack fMessageCallBack, Pointer pUser);
+
+    boolean NET_DVR_SetDVRMessageCallBack_V31(FMSGCallBack_V31 fMessageCallBack, Pointer pUser);
+
+    boolean NET_DVR_SetDVRMessageCallBack_V50(int iIndex, FMSGCallBack_V31 fMessageCallBack, Pointer pUser);
+
+    boolean NET_DVR_SetConnectTime(int dwWaitTime, int dwTryTimes);
+
+    boolean NET_DVR_SetReconnect(int dwInterval, boolean bEnableRecon);
+
+    int NET_DVR_GetSDKVersion();
+
+    int NET_DVR_GetSDKBuildVersion();
+
+    int NET_DVR_IsSupport();
+
+    boolean NET_DVR_StartListen(String sLocalIP, short wLocalPort);
+
+    boolean NET_DVR_StopListen();
+
+    int NET_DVR_StartListen_V30(String sLocalIP, short wLocalPort, FMSGCallBack_V31 DataCallBack, Pointer pUserData);
+
+    boolean NET_DVR_StopListen_V30(int lListenHandle);
+
+    int NET_DVR_Login(String sDVRIP, short wDVRPort, String sUserName, String sPassword, NET_DVR_DEVICEINFO lpDeviceInfo);
+
+    int NET_DVR_Login_V30(String sDVRIP, short wDVRPort, String sUserName, String sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
+
+    int NET_DVR_Login_V40(NET_DVR_USER_LOGIN_INFO pLoginInfo, NET_DVR_DEVICEINFO_V40 lpDeviceInfo);
+
+    boolean NET_DVR_Logout(NativeLong lUserID);
+
+    boolean NET_DVR_Logout_V30(int lUserID);
+
+    int NET_DVR_GetLastError();
+
+    String NET_DVR_GetErrorMsg(IntByReference pErrorNo);
+
+    boolean NET_DVR_SetShowMode(int dwShowType, int colorKey);
+
+    boolean NET_DVR_GetDVRIPByResolveSvr(String sServerIP, short wServerPort, String sDVRName, short wDVRNameLen, String sDVRSerialNumber, short wDVRSerialLen, String sGetIP);
+
+    boolean NET_DVR_GetDVRIPByResolveSvr_EX(String sServerIP, short wServerPort, String sDVRName, short wDVRNameLen, String sDVRSerialNumber, short wDVRSerialLen, String sGetIP, IntByReference dwPort);
+
+    //预览相关接口
+    int NET_DVR_RealPlay(int lUserID, NET_DVR_CLIENTINFO lpClientInfo);
+
+    int NET_DVR_RealPlay_V30(int lUserID, NET_DVR_CLIENTINFO lpClientInfo, FRealDataCallBack_V30 fRealDataCallBack_V30, Pointer pUser, boolean bBlocked);
+
+    int NET_DVR_RealPlay_V40(int lUserID, NET_DVR_PREVIEWINFO lpPreviewInfo, FRealDataCallBack_V30 fRealDataCallBack_V30, Pointer pUser);
+
+    boolean NET_DVR_StopRealPlay(int lRealHandle);
+
+    boolean NET_DVR_RigisterDrawFun(int lRealHandle, FDrawFun fDrawFun, int dwUser);
+
+    boolean NET_DVR_SetPlayerBufNumber(int lRealHandle, int dwBufNum);
+
+    boolean NET_DVR_ThrowBFrame(int lRealHandle, int dwNum);
+
+    boolean NET_DVR_SetAudioMode(int dwMode);
+
+    boolean NET_DVR_OpenSound(int lRealHandle);
+
+    boolean NET_DVR_CloseSound();
+
+    boolean NET_DVR_OpenSoundShare(int lRealHandle);
+
+    boolean NET_DVR_CloseSoundShare(int lRealHandle);
+
+    boolean NET_DVR_Volume(int lRealHandle, short wVolume);
+
+    boolean NET_DVR_SaveRealData(int lRealHandle, String sFileName);
+
+    boolean NET_DVR_StopSaveRealData(int lRealHandle);
+
+    boolean NET_DVR_SetRealDataCallBack(int lRealHandle, FRowDataCallBack fRealDataCallBack, int dwUser);
+
+    boolean NET_DVR_SetStandardDataCallBack(int lRealHandle, FStdDataCallBack fStdDataCallBack, int dwUser);
+
+    boolean NET_DVR_CapturePicture(int lRealHandle, String sPicFileName);//bmp
+
+    //动态生成I帧
+    boolean NET_DVR_MakeKeyFrame(int lUserID, int lChannel);//主码流
+
+    boolean NET_DVR_MakeKeyFrameSub(int lUserID, int lChannel);//子码流
+
+    //云台控制相关接口
+    boolean NET_DVR_PTZControl(int lRealHandle, int dwPTZCommand, int dwStop);
+
+    boolean NET_DVR_PTZControl_Other(int lUserID, int lChannel, int dwPTZCommand, int dwStop);
+
+    boolean NET_DVR_TransPTZ(int lRealHandle, String pPTZCodeBuf, int dwBufSize);
+
+    boolean NET_DVR_TransPTZ_Other(int lUserID, int lChannel, String pPTZCodeBuf, int dwBufSize);
+
+    boolean NET_DVR_PTZPreset(int lRealHandle, int dwPTZPresetCmd, int dwPresetIndex);
+
+    boolean NET_DVR_PTZPreset_Other(int lUserID, int lChannel, int dwPTZPresetCmd, int dwPresetIndex);
+
+    boolean NET_DVR_TransPTZ_EX(int lRealHandle, String pPTZCodeBuf, int dwBufSize);
+
+    boolean NET_DVR_PTZControl_EX(int lRealHandle, int dwPTZCommand, int dwStop);
+
+    boolean NET_DVR_PTZPreset_EX(int lRealHandle, int dwPTZPresetCmd, int dwPresetIndex);
+
+    boolean NET_DVR_PTZCruise(int lRealHandle, int dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, short wInput);
+
+    boolean NET_DVR_PTZCruise_Other(int lUserID, int lChannel, int dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, short wInput);
+
+    boolean NET_DVR_PTZCruise_EX(int lRealHandle, int dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, short wInput);
+
+    boolean NET_DVR_PTZTrack(int lRealHandle, int dwPTZTrackCmd);
+
+    boolean NET_DVR_PTZTrack_Other(int lUserID, int lChannel, int dwPTZTrackCmd);
+
+    boolean NET_DVR_PTZTrack_EX(int lRealHandle, int dwPTZTrackCmd);
+
+    boolean NET_DVR_PTZControlWithSpeed(int lRealHandle, int dwPTZCommand, int dwStop, int dwSpeed);
+
+    boolean NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, int dwPTZCommand, int dwStop, int dwSpeed);
+
+    boolean NET_DVR_PTZControlWithSpeed_EX(int lRealHandle, int dwPTZCommand, int dwStop, int dwSpeed);
+
+    boolean NET_DVR_GetPTZCruise(int lUserID, int lChannel, int lCruiseRoute, NET_DVR_CRUISE_RET lpCruiseRet);
+
+    boolean NET_DVR_PTZMltTrack(int lRealHandle, int dwPTZTrackCmd, int dwTrackIndex);
+
+    boolean NET_DVR_PTZMltTrack_Other(int lUserID, int lChannel, int dwPTZTrackCmd, int dwTrackIndex);
+
+    boolean NET_DVR_PTZMltTrack_EX(int lRealHandle, int dwPTZTrackCmd, int dwTrackIndex);
+
+    //文件查找与回放
+    int NET_DVR_FindFile(int lUserID, int lChannel, int dwFileType, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime);
+
+    int NET_DVR_FindNextFile(int lFindHandle, NET_DVR_FIND_DATA lpFindData);
+
+    boolean NET_DVR_FindClose(int lFindHandle);
+
+    int NET_DVR_FindNextFile_V30(int lFindHandle, NET_DVR_FINDDATA_V30 lpFindData);
+
+    int NET_DVR_FindFile_V30(int lUserID, NET_DVR_FILECOND pFindCond);
+
+    int NET_DVR_FindFile_V40(int lUserID, NET_DVR_FILECOND_V40 pFindCond);
+
+    int NET_DVR_FindNextFile_V40(int lFindHandle, NET_DVR_FINDDATA_V40 lpFindData);
+
+    int NET_DVR_FindFile_V50(int lUserID, NET_DVR_FILECOND_V50 pFindCond);
+
+    int NET_DVR_FindNextFile_V50(int lFindHandle, NET_DVR_FINDDATA_V50 lpFindData);
+
+    boolean NET_DVR_FindClose_V30(int lFindHandle);
+
+    //按事件查找
+    int NET_DVR_FindFileByEvent(int lUserID, NET_DVR_SEARCH_EVENT_PARAM lpSearchEventParam);
+
+    int NET_DVR_FindNextEvent(int lSearchHandle, NET_DVR_SEARCH_EVENT_RET lpSearchEventRet);
+
+    int NET_DVR_FindFileByEvent_V50(int lUserID, NET_DVR_SEARCH_EVENT_PARAM_V50 lpSearchEventParam);
+
+    int NET_DVR_FindNextEvent_V50(int lFindHandle, NET_DVR_SEARCH_EVENT_RET_V50 lpSearchEventRet);
+
+
+    //升级
+    int NET_DVR_Upgrade(int lUserID, String sFileName);
+
+    int NET_DVR_GetUpgradeState(int lUpgradeHandle);
+
+    int NET_DVR_GetUpgradeProgress(int lUpgradeHandle);
+
+    boolean NET_DVR_CloseUpgradeHandle(int lUpgradeHandle);
+
+    boolean NET_DVR_SetNetworkEnvironment(int dwEnvironmentLevel);
+
+    //远程格式化硬盘
+    int NET_DVR_FormatDisk(int lUserID, int lDiskNumber);
+
+    boolean NET_DVR_GetFormatProgress(int lFormatHandle, IntByReference pCurrentFormatDisk, IntByReference pCurrentDiskPos, IntByReference pFormatStatic);
+
+    boolean NET_DVR_CloseFormatHandle(int lFormatHandle);
+
+    //报警
+    int NET_DVR_SetupAlarmChan(int lUserID);
+
+    boolean NET_DVR_CloseAlarmChan(int lAlarmHandle);
+
+    int NET_DVR_SetupAlarmChan_V30(int lUserID);
+
+    int NET_DVR_SetupAlarmChan_V41(int lUserID, NET_DVR_SETUPALARM_PARAM lpSetupParam);
+
+    int NET_DVR_SetupAlarmChan_V50(int iUserID, NET_DVR_SETUPALARM_PARAM_V50 lpSetupParam, Pointer pSub, int dwSubSize);
+
+    boolean NET_DVR_CloseAlarmChan_V30(int lAlarmHandle);
+
+    //语音对讲
+    int NET_DVR_StartVoiceCom(int lUserID, FVoiceDataCallBack fVoiceDataCallBack, int dwUser);
+
+    int NET_DVR_StartVoiceCom_V30(int lUserID, int dwVoiceChan, boolean bNeedCBNoEncData, FVoiceDataCallBack_V30 fVoiceDataCallBack, Pointer pUser);
+
+    boolean NET_DVR_SetVoiceComClientVolume(int lVoiceComHandle, short wVolume);
+
+    boolean NET_DVR_StopVoiceCom(int lVoiceComHandle);
+
+    //语音转发
+    int NET_DVR_StartVoiceCom_MR(int lUserID, FVoiceDataCallBack_MR fVoiceDataCallBack, int dwUser);
+
+    int NET_DVR_StartVoiceCom_MR_V30(int lUserID, int dwVoiceChan, FVoiceDataCallBack_MR_V30 fVoiceDataCallBack, Pointer pUser);
+
+    boolean NET_DVR_VoiceComSendData(int lVoiceComHandle, byte[] pSendBuf, int dwBufSize);
+
+    //语音广播
+    boolean NET_DVR_ClientAudioStart();
+
+    boolean NET_DVR_ClientAudioStart_V30(FVoiceDataCallBack2 fVoiceDataCallBack2, Pointer pUser);
+
+    boolean NET_DVR_ClientAudioStop();
+
+    boolean NET_DVR_AddDVR(int lUserID);
+
+    int NET_DVR_AddDVR_V30(int lUserID, int dwVoiceChan);
+
+    boolean NET_DVR_DelDVR(int lUserID);
+
+    boolean NET_DVR_DelDVR_V30(int lVoiceHandle);
+
+    ////////////////////////////////////////////////////////////
+//透明通道设置
+    int NET_DVR_SerialStart(int lUserID, int lSerialPort, FSerialDataCallBack fSerialDataCallBack, int dwUser);
+
+    public static interface FSerialDataCallBack_V40 extends Callback {
+        public void invoke(int lSerialHandle, int lCHannel, byte[] pRecvDataBuffer, int dwBufSize, Pointer pUser);
+    }
+
+    int NET_DVR_SerialStart_V40(int lUserID, Pointer lpInBuffer, int dwInBufferSize, FSerialDataCallBack_V40 fSerialDataCallBack_V40, Pointer pUser);
+
+    //485作为透明通道时,需要指明通道号,因为不同通道号485的设置可以不同(比如波特率)
+    boolean NET_DVR_SerialSend(int lSerialHandle, int lChannel, byte[] pSendBuf, int dwBufSize);
+
+    boolean NET_DVR_SerialStop(int lSerialHandle);
+
+    boolean NET_DVR_SendTo232Port(int lUserID, String pSendBuf, int dwBufSize);
+
+    boolean NET_DVR_SendToSerialPort(int lUserID, int dwSerialPort, int dwSerialIndex, String pSendBuf, int dwBufSize);
+
+    //Win64、Linux32、Linux64
+    Pointer NET_DVR_InitG722Encoder(NET_DVR_AUDIOENC_INFO enc_info);
+
+    boolean NET_DVR_EncodeG722Frame(Pointer handle, NET_DVR_AUDIOENC_PROCESS_PARAM param);
+
+    void NET_DVR_ReleaseG722Encoder(Pointer pEncodeHandle);
+
+    Pointer NET_DVR_InitG722Decoder();
+
+    boolean NET_DVR_DecodeG722Frame(Pointer handle, NET_DVR_AUDIODEC_PROCESS_PARAM param);
+
+    void NET_DVR_ReleaseG722Decoder(Pointer pDecHandle);
+
+    //G711: Win64、Linux32、Linux64
+    Pointer NET_DVR_InitG711Encoder(Pointer enc_info); //NET_DVR_AUDIOENC_INFO
+
+    boolean NET_DVR_EncodeG711Frame(Pointer handle, NET_DVR_AUDIOENC_PROCESS_PARAM p_enc_proc_param);
+
+    boolean NET_DVR_ReleaseG711Encoder(Pointer pEncodeHandle);
+
+    Pointer NET_DVR_InitG711Decoder();
+
+    boolean NET_DVR_DecodeG711Frame(Pointer handle, NET_DVR_AUDIODEC_PROCESS_PARAM p_dec_proc_param);
+
+    boolean NET_DVR_ReleaseG711Decoder(Pointer pDecHandle);
+
+    //远程控制本地显示
+    boolean NET_DVR_ClickKey(int lUserID, int lKeyIndex);
+
+    //远程控制设备端手动录像
+    boolean NET_DVR_StartDVRRecord(int lUserID, int lChannel, int lRecordType);
+
+    boolean NET_DVR_StopDVRRecord(int lUserID, int lChannel);
+
+    //解码卡
+    boolean NET_DVR_InitDevice_Card(IntByReference pDeviceTotalChan);
+
+    boolean NET_DVR_ReleaseDevice_Card();
+
+    boolean NET_DVR_InitDDraw_Card(int hParent, int colorKey);
+
+    boolean NET_DVR_ReleaseDDraw_Card();
+
+    int NET_DVR_RealPlay_Card(int lUserID, NET_DVR_CARDINFO lpCardInfo, int lChannelNum);
+
+    boolean NET_DVR_ResetPara_Card(int lRealHandle, NET_DVR_DISPLAY_PARA lpDisplayPara);
+
+    boolean NET_DVR_RefreshSurface_Card();
+
+    boolean NET_DVR_ClearSurface_Card();
+
+    boolean NET_DVR_RestoreSurface_Card();
+
+    boolean NET_DVR_OpenSound_Card(int lRealHandle);
+
+    boolean NET_DVR_CloseSound_Card(int lRealHandle);
+
+    boolean NET_DVR_SetVolume_Card(int lRealHandle, short wVolume);
+
+    boolean NET_DVR_AudioPreview_Card(int lRealHandle, boolean bEnable);
+
+    int NET_DVR_GetCardLastError_Card();
+
+    Pointer NET_DVR_GetChanHandle_Card(int lRealHandle);
+
+    boolean NET_DVR_CapturePicture_Card(int lRealHandle, String sPicFileName);
+
+    //获取解码卡序列号此接口无效,改用GetBoardDetail接口获得(2005-12-08支持)
+    boolean NET_DVR_GetSerialNum_Card(int lChannelNum, IntByReference pDeviceSerialNo);
+
+    //日志
+    int NET_DVR_FindDVRLog(int lUserID, int lSelectMode, int dwMajorType, int dwMinorType, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime);
+
+    int NET_DVR_FindNextLog(int lLogHandle, NET_DVR_LOG lpLogData);
+
+    boolean NET_DVR_FindLogClose(int lLogHandle);
+
+    int NET_DVR_FindDVRLog_V30(int lUserID, int lSelectMode, int dwMajorType, int dwMinorType, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, boolean bOnlySmart);
+
+    int NET_DVR_FindNextLog_V30(int lLogHandle, NET_DVR_LOG_V30 lpLogData);
+
+    boolean NET_DVR_FindLogClose_V30(int lLogHandle);
+
+    //截止2004年8月5日,共113个接口
+//ATM DVR
+    int NET_DVR_FindFileByCard(int lUserID, int lChannel, int dwFileType, int nFindType, String sCardNumber, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime);
+//截止2004年10月5日,共116个接口
+
+    //2023-04-28 lirm
+    boolean NET_DVR_CaptureJPEGPicture(NativeLong nlUserID, NativeLong nChannel, NET_DVR_JPEGPARA lpJpegPara, String path);
+
+    //JPEG抓图到内存
+    boolean NET_DVR_CaptureJPEGPicture_NEW(int lUserID, int lChannel, NET_DVR_JPEGPARA lpJpegPara, Pointer sJpegPicBuffer, int dwPicSize, IntByReference lpSizeReturned);
+
+    //带全屏测温数据的设备抓图
+    boolean NET_DVR_CaptureJPEGPicture_WithAppendData(int lUserID, int iChannelNum, NET_DVR_JPEGPICTURE_WITH_APPENDDATA m_strJpegWithAppendData);
+
+    //2006-02-16
+    int NET_DVR_GetRealPlayerIndex(int lRealHandle);
+
+    int NET_DVR_GetPlayBackPlayerIndex(int lPlayHandle);
+
+    //2006-08-28 704-640 缩放配置
+    boolean NET_DVR_SetScaleCFG(int lUserID, int dwScale);
+
+    boolean NET_DVR_GetScaleCFG(int lUserID, IntByReference lpOutScale);
+
+    boolean NET_DVR_SetScaleCFG_V30(int lUserID, NET_DVR_SCALECFG pScalecfg);
+
+    boolean NET_DVR_GetScaleCFG_V30(int lUserID, NET_DVR_SCALECFG pScalecfg);
+
+    //2006-08-28 ATM机端口设置
+    boolean NET_DVR_SetATMPortCFG(int lUserID, short wATMPort);
+
+    boolean NET_DVR_GetATMPortCFG(int lUserID, ShortByReference LPOutATMPort);
+
+    //2006-11-10 支持显卡辅助输出
+    boolean NET_DVR_InitDDrawDevice();
+
+    boolean NET_DVR_ReleaseDDrawDevice();
+
+    int NET_DVR_GetDDrawDeviceTotalNums();
+
+    boolean NET_DVR_SetDDrawDevice(int lPlayPort, int nDeviceNum);
+
+    boolean NET_DVR_PTZSelZoomIn(int lRealHandle, NET_DVR_POINT_FRAME pStruPointFrame);
+
+    boolean NET_DVR_PTZSelZoomIn_EX(int lUserID, int lChannel, NET_DVR_POINT_FRAME pStruPointFrame);
+
+    boolean NET_DVR_FocusOnePush(int lUserID, int lChannel);
+
+    //解码设备DS-6001D/DS-6001F
+    boolean NET_DVR_StartDecode(int lUserID, int lChannel, NET_DVR_DECODERINFO lpDecoderinfo);
+
+    boolean NET_DVR_StopDecode(int lUserID, int lChannel);
+
+    boolean NET_DVR_GetDecoderState(int lUserID, int lChannel, NET_DVR_DECODERSTATE lpDecoderState);
+
+    //2005-08-01
+    boolean NET_DVR_SetDecInfo(int lUserID, int lChannel, NET_DVR_DECCFG lpDecoderinfo);
+
+    boolean NET_DVR_GetDecInfo(int lUserID, int lChannel, NET_DVR_DECCFG lpDecoderinfo);
+
+    boolean NET_DVR_SetDecTransPort(int lUserID, NET_DVR_PORTCFG lpTransPort);
+
+    boolean NET_DVR_GetDecTransPort(int lUserID, NET_DVR_PORTCFG lpTransPort);
+
+    boolean NET_DVR_DecPlayBackCtrl(int lUserID, int lChannel, int dwControlCode, int dwInValue, IntByReference LPOutValue, NET_DVR_PLAYREMOTEFILE lpRemoteFileInfo);
+
+    boolean NET_DVR_StartDecSpecialCon(int lUserID, int lChannel, NET_DVR_DECCHANINFO lpDecChanInfo);
+
+    boolean NET_DVR_StopDecSpecialCon(int lUserID, int lChannel, NET_DVR_DECCHANINFO lpDecChanInfo);
+
+    boolean NET_DVR_DecCtrlDec(int lUserID, int lChannel, int dwControlCode);
+
+    boolean NET_DVR_DecCtrlScreen(int lUserID, int lChannel, int dwControl);
+
+    boolean NET_DVR_GetDecCurLinkStatus(int lUserID, int lChannel, NET_DVR_DECSTATUS lpDecStatus);
+
+    //多路解码器
+//2007-11-30 V211支持以下接口 //11
+    boolean NET_DVR_MatrixStartDynamic(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_DYNAMIC_DEC lpDynamicInfo);
+
+    boolean NET_DVR_MatrixStopDynamic(int lUserID, int dwDecChanNum);
+
+    boolean NET_DVR_MatrixGetDecChanInfo(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_DEC_CHAN_INFO lpInter);
+
+    boolean NET_DVR_MatrixSetLoopDecChanInfo(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_LOOP_DECINFO lpInter);
+
+    boolean NET_DVR_MatrixGetLoopDecChanInfo(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_LOOP_DECINFO lpInter);
+
+    boolean NET_DVR_MatrixSetLoopDecChanEnable(int lUserID, int dwDecChanNum, int dwEnable);
+
+    boolean NET_DVR_MatrixGetLoopDecChanEnable(int lUserID, int dwDecChanNum, IntByReference lpdwEnable);
+
+    boolean NET_DVR_MatrixGetLoopDecEnable(int lUserID, IntByReference lpdwEnable);
+
+    boolean NET_DVR_MatrixSetDecChanEnable(int lUserID, int dwDecChanNum, int dwEnable);
+
+    boolean NET_DVR_MatrixGetDecChanEnable(int lUserID, int dwDecChanNum, IntByReference lpdwEnable);
+
+    boolean NET_DVR_MatrixGetDecChanStatus(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_DEC_CHAN_STATUS lpInter);
+
+    boolean NET_DVR_MatrixStartDynamic_V41(int lUserID, int dwDecChanNum, Pointer lpDynamicInfo);
+
+    boolean NET_DVR_MatrixGetLoopDecChanInfo_V41(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_LOOP_DECINFO_V41 lpOuter);
+
+    boolean NET_DVR_MatrixSetLoopDecChanInfo_V41(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_LOOP_DECINFO_V41 lpInter);
+    int NET_DVR_MatrixStartPassiveDecode(int lUserID, int dwDecChanNum, Pointer lpPassiveMode);
+    boolean NET_DVR_MatrixSendData(int lPassiveHandle, Pointer pSendBuf, int dwBufSize);
+    boolean NET_DVR_MatrixStopPassiveDecode(int lPassiveHandle);
+
+    //2007-12-22 增加支持接口 //18
+    boolean NET_DVR_MatrixSetTranInfo(int lUserID, NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
+
+    boolean NET_DVR_MatrixGetTranInfo(int lUserID, NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
+
+    boolean NET_DVR_MatrixSetRemotePlay(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_DEC_REMOTE_PLAY lpInter);
+
+    boolean NET_DVR_MatrixSetRemotePlayControl(int lUserID, int dwDecChanNum, int dwControlCode, int dwInValue, IntByReference LPOutValue);
+
+    boolean NET_DVR_MatrixGetRemotePlayStatus(int lUserID, int dwDecChanNum, NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS lpOuter);
+
+    //end
+    boolean NET_DVR_RefreshPlay(int lPlayHandle);
+
+    //恢复默认值
+    boolean NET_DVR_RestoreConfig(int lUserID);
+
+    //保存参数
+    boolean NET_DVR_SaveConfig(int lUserID);
+
+    //重启
+    boolean NET_DVR_RebootDVR(int lUserID);
+
+    //关闭DVR
+    boolean NET_DVR_ShutDownDVR(int lUserID);
+
+    //参数配置 begin
+    boolean NET_DVR_GetDeviceConfig(int lUserID, int dwCommand, int dwCount, Pointer lpInBuffer, int dwInBufferSize, Pointer lpStatusList, Pointer lpOutBuffer, int dwOutBufferSize);
+
+    boolean NET_DVR_SetDeviceConfig(int lUserID, int dwCommand, int dwCount, Pointer lpInBuffer, int dwInBufferSize, Pointer lpStatusList, Pointer lpInParamBuffer, int dwInParamBufferSize);
+
+    boolean NET_DVR_SetDeviceConfigEx(int lUserID, int dwCommand, int dwCount, Pointer lpInParam, Pointer lpOutParam);
+
+    boolean NET_DVR_GetDVRConfig(int lUserID, int dwCommand, int lChannel, Pointer lpOutBuffer, int dwOutBufferSize, IntByReference lpBytesReturned);
+
+    boolean NET_DVR_SetDVRConfig(int lUserID, int dwCommand, int lChannel, Pointer lpInBuffer, int dwInBufferSize);
+
+    boolean NET_DVR_GetSTDConfig(int lUserID, int dwCommand, NET_DVR_STD_CONFIG lpConfigParam);
+
+    boolean NET_DVR_SetSTDConfig(int lUserID, int dwCommand, NET_DVR_STD_CONFIG lpConfigParam);
+
+    boolean NET_DVR_GetDVRWorkState_V30(int lUserID, NET_DVR_WORKSTATE_V30 lpWorkState);
+
+    boolean NET_DVR_GetDVRWorkState(int lUserID, NET_DVR_WORKSTATE lpWorkState);
+
+    boolean NET_DVR_SetVideoEffect(int lUserID, int lChannel, int dwBrightValue, int dwContrastValue, int dwSaturationValue, int dwHueValue);
+
+    boolean NET_DVR_GetVideoEffect(int lUserID, int lChannel, IntByReference pBrightValue, IntByReference pContrastValue, IntByReference pSaturationValue, IntByReference pHueValue);
+
+    boolean NET_DVR_ClientGetframeformat(int lUserID, NET_DVR_FRAMEFORMAT lpFrameFormat);
+
+    boolean NET_DVR_ClientSetframeformat(int lUserID, NET_DVR_FRAMEFORMAT lpFrameFormat);
+
+    boolean NET_DVR_ClientGetframeformat_V30(int lUserID, NET_DVR_FRAMEFORMAT_V30 lpFrameFormat);
+
+    boolean NET_DVR_ClientSetframeformat_V30(int lUserID, NET_DVR_FRAMEFORMAT_V30 lpFrameFormat);
+
+    boolean NET_DVR_GetAlarmOut_V30(int lUserID, NET_DVR_ALARMOUTSTATUS_V30 lpAlarmOutState);
+
+    boolean NET_DVR_GetAlarmOut(int lUserID, NET_DVR_ALARMOUTSTATUS lpAlarmOutState);
+
+    boolean NET_DVR_SetAlarmOut(int lUserID, int lAlarmOutPort, int lAlarmOutStatic);
+
+    //视频参数调节
+    boolean NET_DVR_ClientSetVideoEffect(int lRealHandle, int dwBrightValue, int dwContrastValue, int dwSaturationValue, int dwHueValue);
+
+    boolean NET_DVR_ClientGetVideoEffect(int lRealHandle, IntByReference pBrightValue, IntByReference pContrastValue, IntByReference pSaturationValue, IntByReference pHueValue);
+
+    //配置文件
+    boolean NET_DVR_GetConfigFile(int lUserID, String sFileName);
+
+    boolean NET_DVR_SetConfigFile(int lUserID, String sFileName);
+
+    boolean NET_DVR_GetConfigFile_V30(int lUserID, String sOutBuffer, int dwOutSize, IntByReference pReturnSize);
+
+    boolean NET_DVR_GetConfigFile_EX(int lUserID, String sOutBuffer, int dwOutSize);
+
+    boolean NET_DVR_SetConfigFile_EX(int lUserID, String sInBuffer, int dwInSize);
+
+    //启用日志文件写入接口
+    boolean NET_DVR_SetLogToFile(int bLogEnable, String strLogDir, boolean bAutoDel);
+
+    boolean NET_DVR_GetSDKState(NET_DVR_SDKSTATE pSDKState);
+
+    boolean NET_DVR_GetSDKAbility(NET_DVR_SDKABL pSDKAbl);
+
+    boolean NET_DVR_GetPTZProtocol(int lUserID, NET_DVR_PTZCFG pPtzcfg);
+
+    //前面板锁定
+    boolean NET_DVR_LockPanel(int lUserID);
+
+    boolean NET_DVR_UnLockPanel(int lUserID);
+
+    boolean NET_DVR_SetRtspConfig(int lUserID, int dwCommand, NET_DVR_RTSPCFG lpInBuffer, int dwInBufferSize);
+
+    boolean NET_DVR_GetRtspConfig(int lUserID, int dwCommand, NET_DVR_RTSPCFG lpOutBuffer, int dwOutBufferSize);
+
+    boolean NET_DVR_ContinuousShoot(int lUserID, NET_DVR_SNAPCFG lpInter);
+
+    boolean NET_DVR_ManualSnap(int lUserID, NET_DVR_MANUALSNAP lpInter, NET_DVR_PLATE_RESULT lpOuter);
+
+    public static interface FRemoteConfigCallBack extends Callback {
+        public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData);
+    }
+
+    int NET_DVR_StartRemoteConfig(int lUserID, int dwCommand, Pointer lpInBuffer, int dwInBufferLen, FRemoteConfigCallBack cbStateCallBack, Pointer pUserData);
+
+    boolean NET_DVR_SendRemoteConfig(int lHandle, int dwDataType, Pointer pSendBuf, int dwBufSize);
+
+    int NET_DVR_GetNextRemoteConfig(int lHandle, Pointer lpOutBuff, int dwOutBuffSize);
+
+    int NET_DVR_SendWithRecvRemoteConfig(int lHandle, Pointer lpInBuff, int dwInBuffSize, Pointer lpOutBuff, int dwOutBuffSize, IntByReference dwOutDataLen);
+
+    boolean NET_DVR_StopRemoteConfig(int lHandle);
+
+    boolean NET_DVR_RemoteControl(int lUserID, int dwCommand, Pointer lpInBuffer, int dwInBufferSize);
+
+    boolean NET_DVR_STDXMLConfig(int lUserID, NET_DVR_XML_CONFIG_INPUT lpInputParam, NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);
+
+    boolean NET_DVR_GetSTDAbility(int lUserID, int dwAbilityType, NET_DVR_STD_ABILITY lpAbilityParam);
+
+    boolean NET_DVR_GetDeviceAbility(int lUserID, int dwAbilityType, Pointer pInBuf, int dwInLength, Pointer pOutBuf, int dwOutLength);
+
+    boolean NET_DVR_ControlGateway(int lUserID, int lGatewayIndex, int dwStaic);
+
+    boolean NET_DVR_InquestStartCDW_V30(int lUserID, NET_DVR_INQUEST_ROOM lpInquestRoom, boolean bNotBurn);
+
+    boolean NET_DVR_InquestStopCDW_V30(int lUserID, NET_DVR_INQUEST_ROOM lpInquestRoom, boolean bCancelWrite);
+
+    boolean NET_DVR_GetArrayList(int lUserID, NET_DVR_ARRAY_LIST lpArrayList);
+
+    int NET_DVR_InquestResumeEvent(int lUserID, NET_DVR_INQUEST_RESUME_EVENT lpResumeEvent);
+
+    boolean NET_DVR_InquestGetResumeProgress(int lHandle, IntByReference pState);
+
+    boolean NET_DVR_InquestStopResume(int lHandle);
+
+    boolean NET_DVR_GetLocalIP(byte[] strIP, IntByReference pValidNum, boolean pEnableBind);
+
+    boolean NET_DVR_SetValidIP(int dwIPIndex, boolean bEnableBind);
+
+    boolean NET_DVR_AlarmHostAssistantControl(int lUserID, int dwType, int dwNumber, int dwCmdParam);
+
+    boolean NET_DVR_GetPlanList(int lUserID, int dwDevNum, NET_DVR_PLAN_LIST lpPlanList);
+
+    int NET_DVR_UploadFile_V40(int lUserID, int dwUploadType, Pointer lpInBuffer, int dwInBufferSize, String sFileName, Pointer lpOutBuffer, int dwOutBufferSize);
+
+    int NET_DVR_UploadSend(int lUploadHandle, NET_DVR_SEND_PARAM_IN pstruSendParamIN, Pointer lpOutBuffer);
+
+    int NET_DVR_GetUploadState(int lUploadHandle, Pointer pProgress);
+
+    boolean NET_DVR_GetUploadResult(int lUploadHandle, Pointer lpOutBuffer, int dwOutBufferSize);
+
+    boolean NET_DVR_UploadClose(int lUploadHandle);
+
+    int NET_DVR_StartNetworkFlowTest(int lUserID, NET_DVR_FLOW_TEST_PARAM pFlowTest, FLOWTESTCALLBACK fFlowTestCallback, Pointer pUser);
+
+    boolean NET_DVR_StopNetworkFlowTest(int lHandle);
+
+    boolean NET_DVR_InquiryRecordTimeSpan(int lUserID, int dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY lpInquiry, NET_DVR_RECORD_TIME_SPAN lpResult);
+
+    boolean NET_DVR_StartGetDevState(NET_DVR_CHECK_DEV_STATE pParams);
+
+    //gps相关结构定义
+    public static class TimeSegParam extends HIKSDKStructure {
+        //GPS数据查找起始时间
+        public NET_DVR_TIME struBeginTime;
+        //GPS数据查找结束时间
+        public NET_DVR_TIME struEndTime;
+        //GPS点时间间隔,单位:秒
+        public int dwInterval;
+        //保留
+        public byte[] byRes = new byte[76];
+    }
+
+    //按时间点查询
+    public static class TimePointParam extends HIKSDKStructure {
+        //GPS数据查找时间点
+        public NET_DVR_TIME struTimePoint;
+        //保留
+        public byte[] byRes = new byte[104];
+    }
+
+    public static class GpsDataParamUion extends Union {
+        //按时间段查询
+        public TimeSegParam timeSeg = new TimeSegParam();
+        //按时间点查询
+        public TimePointParam timePoint = new TimePointParam();
+    }
+
+    //gps查询参数定义
+    public static class NET_DVR_GET_GPS_DATA_PARAM extends HIKSDKStructure {
+        //查找方式:0- 按时间段查找GPS数据,1- 按时间点查找GPS数据
+        public int dwCmdType;
+        public GpsDataParamUion gpsDataParam;
+
+        public void read() {
+            super.read();
+            switch (dwCmdType) {
+                case 0:
+                    gpsDataParam.setType(TimeSegParam.class);
+                    break;
+                case 1:
+                    gpsDataParam.setType(TimePointParam.class);
+                    break;
+                default:
+                    break;
+            }
+            gpsDataParam.read();
+        }
+
+        public void write() {
+            super.write();
+            gpsDataParam.write();
+        }
+    }
+
+    //gps数据结构定义
+    public static class NET_DVR_GPS_INFO extends HIKSDKStructure {
+        public byte[] byDirection = new byte[2];
+        public byte bySvs;
+        public byte byLocateMode;
+        public short wHDOP;
+        public short wHeight;
+        public int dwLatitude;
+        public int dwLongitude;
+        public int dwVehicleSpeed;
+        public int dwVehicleDirection;
+        public byte[] byRes = new byte[8];
+    }
+
+    //gps返回数据结构定义
+    public static class NET_DVR_GPS_DATA extends HIKSDKStructure {
+        public NET_DVR_GPS_INFO struGPSInfo;
+        public NET_DVR_TIME struTime;
+        public byte[] byRes = new byte[12];
+    }
+
+    public static interface fGPSDataCallback extends Callback {
+        public void invoke(int nHandle, int dwState, Pointer lpBuffer, int dwBufLen, Pointer pUser);
+    }
+
+    int NET_DVR_GetVehicleGpsInfo(int lUserID, NET_DVR_GET_GPS_DATA_PARAM lpGPSDataParam, fGPSDataCallback cbGPSDataCallBack, Pointer pUser);
+
+    /**
+     * 热成像相关
+     */
+    //设备抓图附加全屏测温数据结构体
+    public static class NET_DVR_JPEGPICTURE_WITH_APPENDDATA extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChannel;//通道号
+        public int dwJpegPicLen;//Jpeg图片长度
+        public Pointer pJpegPicBuff;//Jpeg图片指针
+        public int dwJpegPicWidth;  // 图像宽度
+        public int dwJpegPicHeight;  //图像高度
+        public int dwP2PDataLen;//全屏测温数据长度
+        public Pointer pP2PDataBuff; //全屏测温数据指针
+        public byte byIsFreezedata;//是否数据冻结 0-否 1-是
+        public byte[] byRes = new byte[255];
+    }
+
+
+    public static class DATE_TIME extends HIKSDKStructure {
+        public short year;             /*APP->DSP 年*/
+        public short month;            /*APP->DSP 月*/
+        public short dayOfWeek;        /*APP->DSP 0:星期日-6:星期六*/
+        public short day;              /*APP->DSP 日*/
+        public short hour;             /*APP->DSP 小时*/
+        public short minute;           /*APP->DSP 分钟*/
+        public short second;           /*APP->DSP 秒*/
+        public short milliSecond;      /*APP->DSP 毫秒*/
+    }
+
+    //全屏测温数据解析
+    public static class STREAM_RT_DATA_INFO_S extends HIKSDKStructure {
+        public int u32RTDataType; // 1-14bit裸数据; 2-全屏测温结果数据; 3-YUV数据
+        public int u32FrmNum;
+        public int u32StdStamp; //DSP相对时间戳
+        public DATE_TIME stTime; //绝对时间戳
+        public int u32Width;
+        public int u32Height;
+        public int u32Len;
+        public int u32Fps;
+        public int u32Chan;
+    }
+
+    public static class STREAM_FS_SUPPLE_INFO_TEMP extends HIKSDKStructure {
+        public int u32TmDataMode;      /* 0为4字节,1为2字节 */
+        public int u32TmScale;         /* 测温缩放比例 */
+        public int u32TmOffset;        /* 测温偏移量,当前固定为0 */
+        public int byIsFreezedata;      /*是否是冻结数据,1:冻结,0:非冻结*/
+    }
+
+    public static class STREAM_FARME_INFO_TEMP extends HIKSDKStructure {
+        public int u32MagicNo;        //0x70827773  "FRMI"的ascii码
+        public int u32HeaderSize;     //结构体长度
+        public int u32StreamType;     //数据类型: h264/h265, JPEG, Audio, MetaData, RTData: 参见 STREAM_TYPE_E
+        public int u32StreamLen;      //数据长度
+        public STREAM_RT_DATA_INFO_S stRTDataInfo;
+        public STREAM_FS_SUPPLE_INFO_TEMP stFsSuppleInfo;
+        public int[] res = new int[12];
+        public int u32CrcVal; //结构体校验码 对结构体前面数据进行校验
+    }
+
+    //测温规则温度信息
+    public static class NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO extends HIKSDKStructure {
+        public float fMaxTemperature;
+        public float fMinTemperature;
+        public float fAverageTemperature;
+        public NET_VCA_POINT struHighestPoint;
+        public NET_VCA_POINT struLowestPoint;
+        public byte byIsFreezedata;
+        public byte[] byRes = new byte[15];
+    }
+
+    public static class REMOTECONFIGSTATUS_THERMOMETRY extends HIKSDKStructure {
+        public byte[] byStatus = new byte[4];
+        public byte[] byErrorCode = new byte[4];
+    }
+
+    public static class NET_DVR_FIREDETECTION_ALARM extends HIKSDKStructure {
+        public int dwSize; //结构体大小
+        public int dwRelativeTime; //相对时标
+        public int dwAbsTime; //绝对时标
+        public NET_VCA_DEV_INFO struDevInfo; //前端设备信息
+        public short wPanPos;
+        public short wTiltPos;
+        public short wZoomPos;
+        public byte byPicTransType; //图片数据传输方式: 0-二进制;1-url
+        public byte byRes1;
+        public int dwPicDataLen; //报警抓拍图片长度
+        public Pointer pBuffer; //数据指针
+        public NET_VCA_RECT struRect; //火点框
+        public NET_VCA_POINT struPoint; //火点框内最高温度点坐标
+        public short wFireMaxTemperature; //火点最高温度[300℃~4000℃]
+        public short wTargetDistance; //目标距离[100m ~ 10000m]
+        public byte byStrategyType; //策略类型;0~任意报警,1~协同报警,2~多系统报警,3~指定火点报警,4~指定烟雾报警
+        public byte byAlarmSubType; //报警子类型。0~火点检测报警,1~烟雾检测报警,2~烟火报警
+        /*是否启用PTZ坐标扩展,
+        0~不启用,PTZ坐标值以wPanPos、wTiltPos、wZoomPos为准。
+        1~启用,PTZ坐标值以struPtzPosEx为准。但是新老PTZ都需返回。struPtzPosEx的值需转化为wPanPos、wTiltPos、wZoomPos值。
+        */
+        public byte byPTZPosExEnable;
+        public byte byRes2;
+        public NET_PTZ_INFO struPtzPosEx; // ptz坐标扩展(支持高精度PTZ值,精确到小数点后三位)
+        public int dwVisiblePicLen; // 可见光图片长度
+        public Pointer pVisiblePicBuf; // 可见光图片数据指针
+        // pSmokeBuf参数当byAlarmSubType报警子类型为1(烟雾检测报警)、2(烟火报警)时生效。
+        public Pointer pSmokeBuf; //烟雾检测报警数据指针,指向一个NET_DVR_SMOKEDETECTION_ALARM结构体
+        public short wDevInfoIvmsChannelEx; //与NET_VCA_DEV_INFO里的byIvmsChannel含义相同,能表示更大的值。老客户端用byIvmsChannel能继续兼容,但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
+        public byte byRes3;
+        public byte byFireScanWaitMode; //火点扫描等待模式 0-自动   1-手动
+        public int dwVisibleChannel; //可见光通道通道号
+        public byte byTimeDiffFlag; //时差字段是否有效  0-时差无效, 1-时差有效
+        public char cTimeDifferenceH; //与UTC的时差(小时),-12 ... +14, +表示东区,,byTimeDiffFlag为1时有效
+        public char cTimeDifferenceM; //与UTC的时差(分钟),-30, 30, 45, +表示东区,byTimeDiffFlag为1时有效
+        public byte[] byRes = new byte[49];
+    }
+
+    //模块服务配置结构体
+    public static class NET_DVR_DEVSERVER_CFG extends HIKSDKStructure {
+        public int dwSize; //结构体大小
+        public byte byIrLampServer; //红外灯设置:0- 禁用,1- 启用
+        public byte bytelnetServer; //telnet设置:0- 禁用,1- 启用
+        public byte byABFServer;    //ABF设置:0- 启用,1- 禁用,请注意此处参数取值0、1和其他参数取值含义不同
+        public byte byEnableLEDStatus; //状态指示灯控制:0- 禁用,1- 启用
+        public byte byEnableAutoDefog; //自动除雾控制:0- 启用,1- 禁用,请注意此处参数取值0、1和其他参数取值含义不同
+        public byte byEnableSupplementLight; //补光灯控制:0- 启用,1- 禁用,请注意此处参数取值0、1和其他参数取值含义不同
+        public byte byEnableDeicing; //除冰功能:0- 关闭,1- 开启
+        public byte byEnableVisibleMovementPower; //可见光机芯电源开关(低功耗模式下有效):0- 关闭,1- 开启
+        public byte byEnableThermalMovementPower; //热成像机芯电源开关(低功耗模式下有效):0- 关闭,1- 开启
+        public byte byEnablePtzPower; //云台电源开关(低功耗模式下有效):0- 关闭,1- 开启
+        public byte byPowerSavingControl; //低功耗策略:0- 保留,1- 休眠模式,2-低功耗模式(低功耗模式下,可见光机芯电源、热成像机芯电源、云台电源控制生效)
+        public byte byCaptureWithSupplimentLightEnabled; //启用抓拍补光使能 0-关闭,1-开启
+        public byte[] byRes = new byte[244]; //保留,置为0
+    }
+
+    public static final int MAX_UPLOADFILE_URL_LEN = 240;
+    public static final int IMPORT_DATA_TO_FACELIB = 39; //导入人脸数据(人脸图片+图片附件信息 到设备人脸库)
+
+    public static class NET_DVR_UPLOAD_FILE_RET extends HIKSDKStructure {
+
+        public byte[] sUrl = new byte[MAX_UPLOADFILE_URL_LEN];   //url
+        public byte[] byRes = new byte[260];
+    }
+
+    public static class NET_DVR_FLOW_TEST_PARAM extends HIKSDKStructure {
+        public int dwSize;              //结构大小
+        public int lCardIndex;         //网卡索引
+        public int dwInterval;         //设备上传流量时间间隔, 单位:100ms
+        public byte[] byRes = new byte[8];           //保留字节
+    }
+
+    public static class NET_DVR_RECORD_TIME_SPAN_INQUIRY extends HIKSDKStructure {
+        public int dwSize;    //结构体大小
+        public byte byType;     //0 正常音视频录像, 1图片通道录像, 2ANR通道录像, 3抽帧通道录像
+        public byte[] byRes = new byte[63];
+    }
+
+    public static class NET_DVR_RECORD_TIME_SPAN extends HIKSDKStructure {
+        public int dwSize;        //结构体大小
+        public NET_DVR_TIME strBeginTime;  //开始时间
+        public NET_DVR_TIME strEndTime;    //结束时间
+        public byte byType;        //0 正常音视频录像, 1图片通道录像, 2ANR通道录像, 3抽帧通道录像
+        public byte[] byRes = new byte[35];    //保留
+    }
+
+    /*
+     * 月历录像分布查询条件结构体
+     */
+    public static class NET_DVR_MRD_SEARCH_PARAM extends HIKSDKStructure {
+        public int dwSize;            // 结构体大小
+        public NET_DVR_STREAM_INFO struStreamInfo = new NET_DVR_STREAM_INFO();    // 监控点
+        public short wYear;              // 年
+        public byte byMonth;            // 月
+        public byte byDrawFrame;    // 0-不抽帧 1-抽帧
+        public byte byStreamType;   //0-主码流 1-子码流
+        public byte byLocalOrUTC;    //0-设备本地时区  1-UTC
+        public byte[] byRes = new byte[30];
+    }
+
+    /*
+     * 月历录像分布查询结果结构体
+     */
+    public static class NET_DVR_MRD_SEARCH_RESULT extends HIKSDKStructure {
+
+        public int dwSize;   // 结构体大小
+        public byte[] byRecordDistribution = new byte[32];   // 录像分布,byRecordDistribution[0]=1表示1日存在录像,byRecordDistribution[0]=0表示没有录像,byRecordDistribution[1]表示2日,以此类推
+        public byte[] byHasEventRecode = new byte[31];      //事件录像 0-无事件录像,1-有事件录像
+        public byte byRes;     //保留
+    }
+
+    public static final int NET_DVR_GET_GISINFO = 3711;
+    //GIS信息
+
+    public static class NET_DVR_GIS_INFO extends HIKSDKStructure {
+        public int dwSize;
+        public float fAzimuth;
+        public float fHorizontalValue;
+        public float fVerticalValue;
+        public float fVisibleRadius;
+        public float fMaxViewRadius;
+        public byte byLatitudeType;
+        public byte byLongitudeType;
+        public byte byPTZPosExEnable;
+        public byte byRes1;
+        public NET_DVR_LLI_PARAM struLatitude = new NET_DVR_LLI_PARAM();
+        public NET_DVR_LLI_PARAM struLongitude = new NET_DVR_LLI_PARAM();
+        public NET_DVR_PTZPOS_PARAM struPtzPos = new NET_DVR_PTZPOS_PARAM();
+        public NET_DVR_SENSOR_PARAM struSensorParam = new NET_DVR_SENSOR_PARAM();
+        public NET_PTZ_INFO struPtzPosEx = new NET_PTZ_INFO();
+        public float fMinHorizontalValue;
+        public float fMaxHorizontalValue;
+        public float fMinVerticalValue;
+        public float fMaxVerticalValue;
+        public byte[] byRes = new byte[220];
+    }
+
+    //GBT28181协议的设备编码通道配置
+    public static class NET_DVR_GBT28181_CHANINFO_CFG extends HIKSDKStructure {
+        public int dwSize;
+        public byte[] szVideoChannelNumID = new byte[64];//设备视频通道编码ID:64字节字符串,仅限数字
+        public byte[] byRes = new byte[256];
+    }
+
+    // 巡航路径配置条件结构体
+    public static class NET_DVR_CRUISEPOINT_COND extends HIKSDKStructure {
+        public int dwSize;
+        public int dwChan;
+        public short wRouteNo;
+        public byte[] byRes = new byte[30];
+    }
+
+    // 巡航路径配置结构体
+    public static class NET_DVR_CRUISEPOINT_V40 extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_CRUISEPOINT_PARAM[] struCruisePoint = (NET_DVR_CRUISEPOINT_PARAM[]) new NET_DVR_CRUISEPOINT_PARAM().toArray(128);
+        public byte[] byRes = new byte[64];
+    }
+
+    // 巡航路径配置结构体
+    public static class NET_DVR_CRUISEPOINT_V50 extends HIKSDKStructure {
+        public int dwSize;
+        public NET_DVR_CRUISEPOINT_PARAM[] struCruisePoint = (NET_DVR_CRUISEPOINT_PARAM[]) new NET_DVR_CRUISEPOINT_PARAM().toArray(256);
+        public byte[] byRes = new byte[64];
+    }
+
+    // 巡航点参数结构体
+    public static class NET_DVR_CRUISEPOINT_PARAM extends HIKSDKStructure {
+        public short wPresetNo;
+        public short wDwell;
+        public byte bySpeed;
+        public byte bySupport256PresetNo;
+        public byte[] byRes = new byte[6];
+    }
+
+}
+
+//播放库函数声明,PlayCtrl.dll
+interface PlayCtrl extends Library {
+    public static final int STREAME_REALTIME = 0;
+    public static final int STREAME_FILE = 1;
+
+    boolean PlayM4_GetPort(IntByReference nPort);
+
+    boolean PlayM4_OpenStream(int nPort, ByteByReference pFileHeadBuf, int nSize, int nBufPoolSize);
+
+    boolean PlayM4_InputData(int nPort, ByteByReference pBuf, int nSize);
+
+    boolean PlayM4_CloseStream(int nPort);
+
+    boolean PlayM4_SetStreamOpenMode(int nPort, int nMode);
+
+    boolean PlayM4_Play(int nPort, HWND hWnd);
+
+    boolean PlayM4_Stop(int nPort);
+
+    boolean PlayM4_SetSecretKey(int nPort, int lKeyType, String pSecretKey, int lKeyLen);
+
+    boolean PlayM4_GetPictureSize(int nPort, IntByReference pWidth, IntByReference pHeight);
+
+    boolean PlayM4_GetJPEG(int nPort, Pointer pBitmap, int nBufSize, IntByReference pBmpSize);
+
+    int PlayM4_GetLastError(int nPort);
+
+    boolean PlayM4_SetDecCallBackExMend(int nPort, DecCallBack decCBFun, Pointer pDest, int nDestSize, int nUser);
+
+    public static interface DecCallBack extends Callback {
+        void invoke(int nPort, Pointer pBuf, int nSize, FRAME_INFO pFrameInfo, int nReserved1, int nReserved2);
+    }
+
+    public class FRAME_INFO extends HIKSDKStructure {
+        public int nWidth;                   /* 画面宽,单位像素。如果是音频数据,则为音频声道数 */
+        public int nHeight;                     /* 画面高,单位像素。如果是音频数据,则为样位率 */
+        public int nStamp;                           /* 时标信息,单位毫秒 */
+        public int nType;                            /* 数据类型,T_AUDIO16, T_RGB32, T_YV12 */
+        public int nFrameRate;                /* 编码时产生的图像帧率,如果是音频数据则为采样率 */
+        public int dwFrameNum;                      /* 帧号 */
+    }
+
+}
+
+//windows gdi接口,gdi32.dll in system32 folder, 在设置遮挡区域,移动侦测区域等情况下使用
+interface GDI32 extends W32API {
+    GDI32 INSTANCE = (GDI32) Native.loadLibrary("gdi32", GDI32.class, DEFAULT_OPTIONS);
+
+    public static final int TRANSPARENT = 1;
+
+    int SetBkMode(HDC hdc, int i);
+
+    HANDLE CreateSolidBrush(int icolor);
+}
+
+//windows user32接口,user32.dll in system32 folder, 在设置遮挡区域,移动侦测区域等情况下使用
+interface USER32 extends W32API {
+
+    USER32 INSTANCE = (USER32) Native.loadLibrary("user32", USER32.class, DEFAULT_OPTIONS);
+
+    public static final int BF_LEFT = 0x0001;
+    public static final int BF_TOP = 0x0002;
+    public static final int BF_RIGHT = 0x0004;
+    public static final int BF_BOTTOM = 0x0008;
+    public static final int BDR_SUNKENOUTER = 0x0002;
+    public static final int BF_RECT = (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM);
+
+    boolean DrawEdge(HDC hdc, com.sun.jna.examples.win32.GDI32.RECT qrc, int edge, int grfFlags);
+
+    int FillRect(HDC hDC, com.sun.jna.examples.win32.GDI32.RECT lprc, HANDLE hbr);
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKDevice.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKDevice.java
new file mode 100644
index 0000000..c466133
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKDevice.java
@@ -0,0 +1,266 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import com.alibaba.fastjson.JSONException;
+import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
+import com.sun.jna.Platform;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PreDestroy;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class HIKDevice {
+
+	// 接口的实例,通过接口实例调用外部dll/so的函数
+	public static HCNetSDK hCNetSDK = null;
+
+    // 用户登录返回句柄
+    public static int lUserID;  
+    //构造函数
+    public HIKDevice(){
+    	if (hCNetSDK == null) {
+            synchronized (HCNetSDK.class) {
+                try {
+                	if (Platform.isWindows()) {
+            			hCNetSDK = (HCNetSDK) Native.loadLibrary(MessageCode.HIK_WIN_PATH, HCNetSDK.class);
+            		}
+            		if (Platform.isLinux()) {
+            			hCNetSDK = (HCNetSDK) Native.loadLibrary(MessageCode.HIK_LINUX_PATH, HCNetSDK.class);
+            		}
+                } catch (Exception ex) {
+                    log.error("SdkInitService-init-hCNetSDK-error");
+                }
+            }
+        }
+    }
+	/**
+	 * 初始化资源配置
+	 */
+	public int initDevices(){
+		System.out.println("进入构造函数");
+        // 初始化SDK
+        boolean initSuc = hCNetSDK.NET_DVR_Init();
+        if (initSuc != true) {
+            System.out.println("初始化失败");
+            return 1;
+        }
+        // 设置连接时间与重连时间
+        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+        System.out.println("初始化SDK资源完成");
+		return 0;
+	}
+
+    //销毁函数
+    @PreDestroy
+    public void destroy() throws Exception {
+        hCNetSDK.NET_DVR_Cleanup();
+    }
+    
+    /*
+   	 * 功能:登录设备
+   	 * 参数:
+   	 *      deviceIP-设备局域网IP地址
+   	 *      devicePort-设备SDK服务端口
+   	 *      userName-用户名
+   	 *      passWord-密码
+   	 * */
+//	public String loginDevice() throws JSONException {
+//		if (!getDeviceStatus()) {
+//			int init = initDevices();
+//			if (init == 1) {
+//				return "初始化失败";
+//			}
+//			ArrayList<String> list = mZnfxCodeService.getDriverInfo("driverinfo");
+//			if (list != null && list.size() > 0) {
+//				String driverip = list.get(0);
+//				String driverport = list.get(1);
+//				String username = list.get(2);
+//				String password = list.get(3);
+//				String returnVal = Login_V40(driverip, Short.parseShort(driverport), username, password);
+//				System.out.println(returnVal);
+//				return returnVal;
+//			} else {
+//				return "获取设备信息失败!";
+//			}
+//		}
+//		else
+//		{
+//			String result = captureJPEGPicture();
+//			System.out.println(result);
+//			return result;
+//		}
+//
+//	}
+
+    /**
+    *
+    * @param m_sDeviceIP 设备ip地址
+    * @param wPort       端口号,设备网络SDK登录默认端口8000
+    * @param m_sUsername 用户名
+    * @param m_sPassword 密码
+    */
+   public String Login_V40(String m_sDeviceIP,short wPort,String m_sUsername,String m_sPassword) {
+       /* 注册 */
+       // 设备登录信息
+       HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+       // 设备信息
+       HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+       m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+       System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+       m_strLoginInfo.wPort =wPort ;
+       m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+       System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+       m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+       System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+       // 是否异步登录:false- 否,true- 是
+       m_strLoginInfo.bUseAsynLogin = false; 
+       // write()调用后数据才写入到内存中
+       m_strLoginInfo.write();  
+
+       lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+       if (lUserID == -1) {
+//    	   updateZnfxPostalStatus(PostalStatus.ABNORMAL.value());
+//    	   mZnfxPostalStatusService.changeStatus(MessageCode.POSTAL_STATUS_TYPE_CAMERA, PostalStatus.ABNORMAL.value());
+    	   
+           System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
+           return "登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError();
+       } else {
+           System.out.println("登录成功!");
+           // read()后,结构体中才有对应的数据 
+           m_strDeviceInfo.read();  
+//           updateZnfxPostalStatus(PostalStatus.NORMAL.value());
+//           mZnfxPostalStatusService.changeStatus(MessageCode.POSTAL_STATUS_TYPE_CAMERA, PostalStatus.NORMAL.value());
+           
+   			String result = captureJPEGPicture();
+           
+           return result;
+       }
+   }
+
+	//注销设备
+    public String logoutDevice()
+    {
+        NativeLong nlUserID = new NativeLong(lUserID);
+        if (!hCNetSDK.NET_DVR_Logout(nlUserID))
+        {
+            System.out.println("注销失败,设备ID:"+ nlUserID.intValue() + "错误码:"+hCNetSDK.NET_DVR_GetLastError());
+            return "{\"result\":\"loginDevice Fail\",\"userID\":"+nlUserID.intValue()+",\"errorCode\":"+hCNetSDK.NET_DVR_GetLastError()+"}";
+        }else{
+            System.out.println("注销成功,设备ID:"+ nlUserID.intValue());
+            return "{\"result\":\"logoutDevice Success\",\"userID\":"+nlUserID.intValue()+",\"errorCode\":0}";
+        }
+    }
+	/**
+	 * 设备抓图(无预览)
+	 * 单帧设备抓取保存的图片为JPG,具体注意问题需要详细查看【设备网络sdk使用手册】
+	 * @return
+	 */
+	public String captureJPEGPicture()
+	{
+//			ArrayList<String> list = mZnfxCodeService.getDriverInfo("driverpic");
+			List<String> list = new ArrayList<>();
+			list.add("tlChannel");
+			list.add("tlPicSize");
+			list.add("tlPicQuality");
+	   	    if (list != null && list.size() > 0) {
+	   			int tlChannel = Integer.parseInt(list.get(0));
+	   			int tlPicSize = Integer.parseInt(list.get(1));
+	   			int tlPicQuality = Integer.parseInt(list.get(2));
+
+	   			NativeLong nlUserID = new NativeLong(lUserID);
+	   			NativeLong nChannel = new NativeLong(tlChannel);
+	   			HCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new HCNetSDK.NET_DVR_JPEGPARA();
+	   			lpJpegPara.wPicSize = (short)tlPicSize;
+	   			lpJpegPara.wPicQuality = (short)tlPicQuality;
+	   			// 参数必须写入到结构体,否则在保存图片的时候异常图片
+	   			lpJpegPara.write();
+	   			String tFiledirName = CommonUtils.getCurrDate();//yyyyMMdd
+	   			// 创建文件名称
+	   			String tDatePath = MessageCode.DvrPicSavePath+"/"+tFiledirName;
+	   			// 判断文件夹是否创建
+	   			File tFile = new File(tDatePath);
+	   			if (!tFile.exists()){
+	   				tFile.mkdirs();
+	   			}
+	   			String tDate = CommonUtils.getCurrDate2();//yyyyMMddHHmmss
+	   			// 文件名称
+	   			String tImageName = tDate  +".png";
+	   			// 全路径
+	   			String tPath = tDatePath+"/"+tImageName;
+	   			// 开始抓图
+	   			if (!hCNetSDK.NET_DVR_CaptureJPEGPicture(nlUserID, nChannel, lpJpegPara, tPath))
+	   			{
+	   				return "失败编码:"+hCNetSDK.NET_DVR_GetLastError() ;
+	   			}else {
+	   				Long tImageId = CommonUtils.Getnum();//生成流水号
+//	   				saveZnfxImageInfo(tFiledirName,tImageName,tPath,tImageId);
+
+	   				return "success>>>>>>>>>>>" + tImageName;
+	   			}
+	   	    }
+	   	    else
+	   	    {
+	   	    	return "login fail>>>>>>>>>>>";
+	   	    }
+	}
+	/**
+     * 检查设备是否在线
+     * @return
+     */
+	private boolean getDeviceStatus() {
+		boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(lUserID, 20005, null, 0);
+//		if (!isOnLine) {
+////			updateZnfxPostalStatus(PostalStatus.ABNORMAL.value()); //离线
+////			insertZnfxPostalStatusLog(PostalStatus.ABNORMAL.value());
+//			mZnfxPostalStatusService.changeStatus(MessageCode.POSTAL_STATUS_TYPE_CAMERA, PostalStatus.ABNORMAL.value());
+//			return false;
+//		} else {
+//			mZnfxPostalStatusService.changeStatus(MessageCode.POSTAL_STATUS_TYPE_CAMERA, PostalStatus.NORMAL.value());
+////			updateZnfxPostalStatus(PostalStatus.NORMAL.value());//在线
+//		}
+		return true;
+	}
+//	/**
+//	 * 更新摄像头通讯状态
+//	 * @param status
+//	 */
+//	private void updateZnfxPostalStatus(String status) {
+//		 ZnfxPostalStatusDTO tEntity = new ZnfxPostalStatusDTO();
+//		 tEntity.setId(1);
+//		 tEntity.setStatus(status);
+//	  	 tEntity.setTime(CommonUtils.getCurrDate3());
+//	  	 mZnfxPostalStatusService.update(tEntity);
+//
+//	}
+//	private void insertZnfxPostalStatusLog(String status) {
+//		Calendar calendar = Calendar.getInstance();
+//        calendar.set(Calendar.MILLISECOND, 0);
+//        calendar.set(Calendar.SECOND, 0);
+//        Date runTime = calendar.getTime();
+//		 ZnfxPostalStatusLogEntity tEntity = new ZnfxPostalStatusLogEntity();
+//	  	 tEntity.setType(MessageCode.POSTAL_STATUS_TYPE_CAMERA);
+//		 tEntity.setStatus(status);
+//	  	 tEntity.setTime(runTime);
+//	  	 mZnfxPostalStatusLogService.insert(tEntity);
+//	}
+//
+//	private void saveZnfxImageInfo(String tFiledirName, String tImageName, String tPath, Long tImageId) {
+//		ZnfxImageInfoDTO tZnfxImageInfoDTO = new ZnfxImageInfoDTO();
+//    	String tImagepath = "/" + tFiledirName + "/" + tImageName;
+//    	tZnfxImageInfoDTO.setImageid(tImageId);
+//		tZnfxImageInfoDTO.setCameraCode(MessageCode.POSTAL_STATUS_TYPE_CAMERA);
+//    	tZnfxImageInfoDTO.setImagePath(tImagepath);//图片相对路径
+//    	tZnfxImageInfoDTO.setAbsImagePath(tPath);//图片绝对路径
+//    	tZnfxImageInfoDTO.setCreateTime(new Date());
+//    	mZnfxImageInfoService.save(tZnfxImageInfoDTO);
+//	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKSDKStructure.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKSDKStructure.java
new file mode 100644
index 0000000..5a1bee4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/HIKSDKStructure.java
@@ -0,0 +1,26 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import com.sun.jna.Structure;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+
+public class HIKSDKStructure extends Structure {
+	protected List<String> getFieldOrder() {
+		List<String> fieldOrderList = new ArrayList<String>();
+		for (Class<?> cls = getClass(); !cls.equals(HIKSDKStructure.class); cls = cls.getSuperclass()) {
+			Field[] fields = cls.getDeclaredFields();
+			int modifiers;
+			for (Field field : fields) {
+				modifiers = field.getModifiers();
+				if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
+					continue;
+				}
+				fieldOrderList.add(field.getName());
+			}
+		}
+		return fieldOrderList;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/MessageCode.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/MessageCode.java
new file mode 100644
index 0000000..32b80f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/MessageCode.java
@@ -0,0 +1,79 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+
+public class MessageCode {
+	
+	public static final  String DvrPicSavePath = "D:/hk-project/dvr-pic";//海康威视抓取图片上传路径
+//	public static final  String DvrPicSavePath = "D:/DLUT/dvr-pic";//海康威视抓取图片上传路径
+
+	public static final  String JsonSavePath = "D:/hk-project/json";//海康威视抓取图片上传路径
+//	public static final  String JsonSavePath = "D:/DLUT/json";//海康威视抓取图片上传路径
+	
+	public static final String HIK_WIN_PATH = "hikvision/win64/HCNetSDK.dll";
+//	public static final String HIK_WIN_PATH = "D:\\DLUT\\lib\\HCNetSDK.dll";
+
+	public static final String ModelCode = "Image_feature";//模型代码
+
+	public static final String POSTAL_STATUS_TYPE_CHANNEL = "SimulationServer";
+
+	public static final String POSTAL_STATUS_TYPE_CAMERA = "driverinfo";
+	
+	public static final Integer Granularity = 60; //时间粒度
+	
+	public static final String model_foam_out  = "foam_diasoge";//起泡剂、捕收剂用量输出key
+
+	public static final String model_texture  = "texture";//泡沫纹理的六个数值 asm (能量), entr(熵), idm(逆方差), cor(相关性), con(对比度), autocor(自相关性)
+
+	public static final String model_img_size  = "img_size";
+
+	public static final String ZNFX_CODE_IMAGEPATH = "imagepath";
+
+	public static final String ZNFX_CODE_NGINX = "nginx";
+
+	public static final String ZNFX_CODE_MODEL = "model";
+
+	public static final String ZNFX_CODE_MODEL_PATH = "path";
+
+	public static final String ZNFX_CODE_MODEL_START = "start";
+
+	public static final String In_ControlModel_PointNo = "1000"; //控制模式
+
+	public static final String In_density_PointNo = "1001"; //入料浓度
+
+	public static final String In_flow_PointNo = "1002"; //入料流量
+
+	public static final String Amount_Qpj_PointNo = "2001"; //起泡剂用量反馈
+
+	public static final String Amount_Bsj_PointNo = "2002"; //捕收剂用量反馈
+	
+	public static final String Qpj_Level_PointNo = "2003"; //起泡剂桶液位
+
+	public static final String Bsj_Level_PointNo = "2004"; //捕收剂桶液位
+
+	public static final String Ash_Jm_PointNo  = "3001";//精煤灰分值
+
+	public static final String Ash_Wm_PointNo  = "3002";//尾煤灰分值
+
+    public static final String Set_Ash_Jm_PointNo  = "3003";//精煤灰分控制点
+
+    public static final String Set_Ash_Wm_PointNo  = "3004";//尾煤灰分控制点
+
+	public static final String RESULT_IMAGE_FILE_PATH  = "image_file_path";//尾煤灰分值
+
+	public static final String HIK_LINUX_PATH = "/sda2/iailab/iailab-platform/iailab-data/lib/libhcnetsdk.so";
+//	public static final String HIK_LINUX_PATH = "hikvision/linux64/libhcnetsdk.so";
+
+	public static final Integer granularity = 20; //时间粒度
+	
+	public static final Integer  TIME_SECOND = 13; //时间类别
+	
+	public static final Integer  TIME_HOUR = 10; //时间类别
+	
+	public static final Integer SCHEDULEDCLEANDAYS = -10; //定时任务清理10天之前数据
+	
+	public static final String SCHEDULEDCLEANRATE = "0 0/30 * * * ?"; //定时任务清理半小时一次
+	
+	public static final String SCHEDULEDCLEANIMAGERATE = "0 0 12 * * ? "; //定时任务清理截图每天中午12点触发 
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/PythonUtil.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/PythonUtil.java
new file mode 100644
index 0000000..d73523c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/PythonUtil.java
@@ -0,0 +1,42 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2023年01月11日 11:03:00
+ */
+@Slf4j
+public class PythonUtil {
+
+    public static List<String> execPy(String[] command) {
+        List<String> lines = new ArrayList<>();
+        try {
+            Process proc = Runtime.getRuntime().exec(command);
+            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(),"GBK"));
+            String line = null;
+
+            while ((line = in.readLine()) != null) {
+                log.info(line);
+                lines.add(line);
+            }
+            // 0表示成功,1表示远程调用失败,2表示python脚本出错
+            int waitFor = proc.waitFor();
+            log.info("waitFor=" + waitFor);
+            if (waitFor != 0) {
+                throw new Exception("调用python失败");
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.error(ex.getMessage());
+            log.error("运行python异常!command=" + command.toString());
+        }
+        return lines;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/ResponseUtil.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/ResponseUtil.java
new file mode 100644
index 0000000..9d67962
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/ResponseUtil.java
@@ -0,0 +1,69 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 响应操作结果
+ * <pre>
+ *  {
+ *      errno: 错误码,
+ *      errmsg:错误消息,
+ *      data:  响应数据
+ *  }
+ * </pre>
+ *
+ * <p>
+ * 错误码:
+ * <ul>
+ * <li> 0,成功;
+ * <li> 4xx,前端错误,说明前端开发者需要重新了解后端接口使用规范:
+ * <ul>
+ * <li> 401,参数错误,即前端没有传递后端需要的参数;
+ * <li> 402,参数值错误,即前端传递的参数值不符合后端接收范围。
+ * </ul>
+ * <li> 5xx,后端错误,除501外,说明后端开发者应该继续优化代码,尽量避免返回后端错误码:
+ * <ul>
+ * <li> 501,验证失败,即后端要求用户登录;
+ * <li> 502,系统内部错误,即没有合适命名的后端内部错误;
+ * <li> 503,业务不支持,即后端虽然定义了接口,但是还没有实现功能;
+ * <li> 504,更新数据失效,即后端采用了乐观锁更新,而并发更新时存在数据更新失效;
+ * <li> 505,更新数据失败,即后端数据库更新失败(正常情况应该更新成功)。
+ * </ul>
+ * <li> 6xx,小商城后端业务错误码,
+ * 具体见litemall-admin-api模块的AdminResponseCode。
+ * <li> 7xx,管理后台后端业务错误码,
+ * 具体见litemall-wx-api模块的WxResponseCode。
+ * </ul>
+ */
+public class ResponseUtil {
+    public static Object ok() {
+        Map<String, Object> obj = new HashMap<String, Object>();
+        obj.put("errno", 0);
+        obj.put("errmsg", "成功");
+        return obj;
+    }
+
+    public static Object ok(Object data) {
+        Map<String, Object> obj = new HashMap<String, Object>();
+        obj.put("errno", 0);
+        obj.put("errmsg", "成功");
+        obj.put("data", data);
+        return obj;
+    }
+
+    public static Object fail() {
+        Map<String, Object> obj = new HashMap<String, Object>();
+        obj.put("errno", -1);
+        obj.put("errmsg", "错误");
+        return obj;
+    }
+
+    public static Object fail(String errmsg) {
+        Map<String, Object> obj = new HashMap<String, Object>();
+        obj.put("errno", 1);
+        obj.put("errmsg", "错误");
+        obj.put("data", errmsg);
+        return obj;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/UnzipUtils.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/UnzipUtils.java
new file mode 100644
index 0000000..3e8a8ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/hikvision/utils/UnzipUtils.java
@@ -0,0 +1,103 @@
+package com.iailab.module.data.dev.hikvision.utils;
+
+import java.io.*;
+import java.nio.charset.Charset;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2023年05月25日 15:28:00
+ */
+public class UnzipUtils {
+    /**
+     * 解压zip压缩文件到指定目录
+     *
+     * @param zipPath zip压缩文件绝对路径
+     * @param descDir 指定的解压目录
+     */
+    public static void unzipFile(String zipPath, String descDir) throws IOException {
+        try {
+            File zipFile = new File(zipPath);
+            if (!zipFile.exists()) {
+                throw new IOException("要解压的压缩文件不存在");
+            }
+            File pathFile = new File(descDir);
+            if (!pathFile.exists()) {
+                pathFile.mkdirs();
+            }
+            unzipWithStream(zipPath, descDir);
+        } catch (Exception e) {
+            throw new IOException(e);
+        }
+    }
+
+    /**
+     * 解压
+     *
+     * @param zipPath
+     * @param descDir
+     */
+    public static void unzipWithStream(String zipPath, String descDir) {
+        try (ZipFile zipFile = new ZipFile(zipPath, Charset.forName("GBK"))) {
+            Enumeration e = zipFile.entries();
+            while (e.hasMoreElements()) {
+                ZipEntry zipEntry = (ZipEntry)e.nextElement();
+                String zipEntryNameStr = zipEntry.getName();
+                String zipEntryName = zipEntryNameStr;
+                /*if (zipEntryNameStr.contains("/")) {
+                    String str1 = zipEntryNameStr.substring(0, zipEntryNameStr.indexOf("/"));
+                    zipEntryName = zipEntryNameStr.substring(str1.length() + 1);
+                }*/
+                String outPath = (descDir + zipEntryName).replace("\\\\", "/");
+                File outFile = new File(outPath.substring(0, outPath.lastIndexOf('/')));
+                if (!outFile.exists()) {
+                    outFile.mkdirs();
+                }
+                if (new File(outPath).isDirectory()) {
+                    continue;
+                }
+                writeFile(outPath, zipFile.getInputStream(zipEntry));
+            }
+            System.out.println("======解压成功=======");
+        } catch (IOException e) {
+            System.out.println("压缩包处理异常,异常信息{}" + e);
+        }
+    }
+
+    /**
+     * 将流写到文件中
+     *
+     * @param filePath
+     * @param zipInputStream
+     */
+    public static void writeFile(String filePath, InputStream zipInputStream) throws IOException {
+        try (OutputStream outputStream = new FileOutputStream(filePath)) {
+            byte[] bytes = new byte[4096];
+            int len;
+            while ((len = zipInputStream.read(bytes)) != -1) {
+                outputStream.write(bytes, 0, len);
+            }
+        } catch (IOException ex) {
+            System.out.println("解压文件时,写出到文件出错");
+        } finally {
+            zipInputStream.close();
+        }
+    }
+
+    /**
+     * 测试方法
+     *
+     * @param args
+     * @throws IOException
+     */
+    public static void test(String[] args) throws IOException {
+
+        String zipPath = "D:/test/测试文件.zip";
+        String descDir = "D:/test/解压/";
+
+        unzipFile(zipPath, descDir);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/AlarmCameraService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/AlarmCameraService.java
new file mode 100644
index 0000000..2e4f56c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/AlarmCameraService.java
@@ -0,0 +1,24 @@
+package com.iailab.module.data.dev.service;
+
+
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.dev.dto.AlarmCameraDTO;
+import com.iailab.module.data.dev.entity.AlarmCameraEntity;
+import com.iailab.module.data.dev.enums.AlarmStatusEnum;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月09日
+ */
+public interface AlarmCameraService extends BaseService<AlarmCameraEntity> {
+
+    List<AlarmCameraDTO> list(Map<String, Object> params);
+
+    void updateStatus(Integer cameraCode, AlarmStatusEnum alarmStatusEnum);
+
+    AlarmCameraDTO getByCameraCode(Integer cameraCode);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevCameraService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevCameraService.java
new file mode 100644
index 0000000..8d4f616
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevCameraService.java
@@ -0,0 +1,42 @@
+package com.iailab.module.data.dev.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.dev.controller.admin.camera.vo.DevCameraPageReqVO;
+import com.iailab.module.data.dev.dto.DevCameraDTO;
+import com.iailab.module.data.dev.entity.DevCameraEntity;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+public interface DevCameraService extends BaseService<DevCameraEntity> {
+
+    PageResult<DevCameraDTO> getPage(DevCameraPageReqVO cameraPageReqVO);
+
+    List<DevCameraDTO> list(@Valid DevCameraPageReqVO cameraPageReqVO);
+
+    List<DevCameraDTO> apiCameraList(Map<String, Object> params);
+
+    DevCameraDTO get(String id);
+
+    void save(DevCameraDTO dto);
+
+    void update(DevCameraDTO dto);
+
+    void delete(String[] ids);
+
+    Long cheack(DevCameraDTO dto);
+
+    List<DevCameraDTO> getByNVRId(String nvrId);
+
+    DevCameraDTO getByCode(Integer code);
+
+    List<String> getLocation();
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevImageService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevImageService.java
new file mode 100644
index 0000000..c763787
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevImageService.java
@@ -0,0 +1,36 @@
+package com.iailab.module.data.dev.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.dev.dto.DevImageDTO;
+import com.iailab.module.data.dev.entity.DataEntity;
+import com.iailab.module.data.dev.entity.DevImageEntity;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+public interface DevImageService extends BaseService<DevImageEntity> {
+
+    PageData<DevImageDTO> page(Map<String, Object> params);
+
+    DevImageDTO get(String id);
+
+    List<DataEntity> getValueList(String cameraId, Date startTime, Date endTime);
+
+    void save(DevImageDTO dto);
+
+    void update(DevImageDTO dto);
+
+    void delete(String[] ids);
+
+    String getUrl(String cameraId, String imagePath);
+
+    DevImageDTO get(String cameraId, Date createDate);
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevLogService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevLogService.java
new file mode 100644
index 0000000..2fed008
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevLogService.java
@@ -0,0 +1,29 @@
+package com.iailab.module.data.dev.service;
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.dev.dto.DevLogDTO;
+import com.iailab.module.data.dev.entity.DevLogEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public interface DevLogService extends BaseService<DevLogEntity> {
+
+    PageData<DevLogDTO> page(Map<String, Object> params);
+
+    List<DevLogDTO> list(Map<String, Object> params);
+
+    DevLogDTO get(String id);
+
+    void save(DevLogDTO dto);
+
+    void update(DevLogDTO dto);
+
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevNvrService.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevNvrService.java
new file mode 100644
index 0000000..5d4f4fa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/DevNvrService.java
@@ -0,0 +1,41 @@
+package com.iailab.module.data.dev.service;
+
+
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.BaseService;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrPageReqVO;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrSaveReqVO;
+import com.iailab.module.data.dev.dto.DevNvrDTO;
+import com.iailab.module.data.dev.entity.DevNvrEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月06日
+ */
+public interface DevNvrService extends BaseService<DevNvrEntity> {
+
+    PageResult<DevNvrDTO> getPage(DevNvrPageReqVO pageReqVO);
+
+    List<DevNvrDTO> list(Map<String, Object> params);
+
+    DevNvrDTO get(String id);
+
+    DevNvrDTO getByCode(String code);
+
+    String save(DevNvrSaveReqVO saveReqVO);
+
+    String update(DevNvrSaveReqVO saveReqVO);
+
+    void delete(Long id);
+
+//    Long cheack(DevNvrDTO dto);
+
+    DevNvrDTO getByIp(String ip);
+
+    void setStatus(String ip, Integer status);
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/AlarmCameraServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/AlarmCameraServiceImpl.java
new file mode 100644
index 0000000..c4e66e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/AlarmCameraServiceImpl.java
@@ -0,0 +1,44 @@
+package com.iailab.module.data.dev.service.impl;
+
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.module.data.dev.dao.AlarmCameraDao;
+import com.iailab.module.data.dev.dto.AlarmCameraDTO;
+import com.iailab.module.data.dev.entity.AlarmCameraEntity;
+import com.iailab.module.data.dev.enums.AlarmStatusEnum;
+import com.iailab.module.data.dev.service.AlarmCameraService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月09日
+ */
+@Slf4j
+@Service
+public class AlarmCameraServiceImpl extends BaseServiceImpl<AlarmCameraDao, AlarmCameraEntity> implements AlarmCameraService {
+
+
+    @Override
+    public void updateStatus(Integer cameraCode, AlarmStatusEnum alarmStatusEnum) {
+        AlarmCameraDTO alarmCamera = this.getByCameraCode(cameraCode);
+        AlarmCameraEntity entity = new AlarmCameraEntity();
+        entity.setId(alarmCamera.getId());
+        entity.setAlarmStatus(alarmStatusEnum.getCode());
+        baseDao.updateById(entity);
+
+    }
+
+    @Override
+    public List<AlarmCameraDTO> list(Map<String, Object> params) {
+        List<AlarmCameraDTO> list = baseDao.getList(params);
+        return list;
+    }
+
+    @Override
+    public AlarmCameraDTO getByCameraCode(Integer cameraCode) {
+        return baseDao.getByCameraCode(cameraCode);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevCameraServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevCameraServiceImpl.java
new file mode 100644
index 0000000..d07b9d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevCameraServiceImpl.java
@@ -0,0 +1,129 @@
+package com.iailab.module.data.dev.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.constant.Constant;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.dev.controller.admin.camera.vo.DevCameraPageReqVO;
+import com.iailab.module.data.dev.dao.DevCameraDao;
+import com.iailab.module.data.dev.dto.DevCameraDTO;
+import com.iailab.module.data.dev.entity.DevCameraEntity;
+import com.iailab.module.data.dev.service.DevCameraService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@Service
+public class DevCameraServiceImpl extends BaseServiceImpl<DevCameraDao, DevCameraEntity> implements DevCameraService {
+
+    @Resource
+    private DevCameraDao devCameraDao;
+
+    @Override
+    public PageResult<DevCameraDTO> getPage(DevCameraPageReqVO cameraPageReqVO) {
+        PageResult<DevCameraEntity> pageResult = devCameraDao.selectPage(cameraPageReqVO);
+        return BeanUtils.toBean(pageResult, DevCameraDTO.class);
+    }
+
+    @Override
+    public List<DevCameraDTO> list(@Valid DevCameraPageReqVO cameraPageReqVO) {
+        QueryWrapper<DevCameraEntity> queryWrapper = getWrapper(cameraPageReqVO);
+        queryWrapper.orderByDesc(Constant.CREATE_DATE);
+        List<DevCameraEntity> list = baseDao.selectList(queryWrapper);
+        return ConvertUtils.sourceToTarget(list, DevCameraDTO.class);
+    }
+
+    @Override
+    public List<DevCameraDTO> apiCameraList(Map<String, Object> params) {
+        return baseDao.apiCameraList();
+    }
+
+    @Override
+    public List<DevCameraDTO> getByNVRId(String nvrId) {
+        QueryWrapper<DevCameraEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("nvr_id", nvrId).orderByAsc("channel");
+        List<DevCameraEntity> list = baseDao.selectList(queryWrapper);
+        return ConvertUtils.sourceToTarget(list, DevCameraDTO.class);
+    }
+
+    @Override
+    public DevCameraDTO get(String id) {
+        DevCameraEntity entity = baseDao.selectById(id);
+
+        return ConvertUtils.sourceToTarget(entity, DevCameraDTO.class);
+    }
+
+    @Override
+    public DevCameraDTO getByCode(Integer code) {
+        QueryWrapper<DevCameraEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("code", code);
+        DevCameraEntity entity = baseDao.selectOne(wrapper);
+
+        return ConvertUtils.sourceToTarget(entity, DevCameraDTO.class);
+    }
+
+    private QueryWrapper<DevCameraEntity> getWrapper(DevCameraPageReqVO cameraPageReqVO){
+        String location = cameraPageReqVO.getLocation();
+        QueryWrapper<DevCameraEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(location), "location", location);
+        return wrapper;
+    }
+
+    @Override
+    public void save(DevCameraDTO dto) {
+        DevCameraEntity entity = ConvertUtils.sourceToTarget(dto, DevCameraEntity.class);
+        entity.setCreateDate(new Date());
+        insert(entity);
+    }
+
+    @Override
+    public void update(DevCameraDTO dto) {
+        DevCameraEntity entity = ConvertUtils.sourceToTarget(dto, DevCameraEntity.class);
+        entity.setUpdateDate(new Date());
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public Long cheack(DevCameraDTO dto) {
+        String id = dto.getId();
+        Integer code = dto.getCode();
+        QueryWrapper<DevCameraEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.ne(StringUtils.isNotBlank(id), "id", id);
+        queryWrapper.and(wrapper -> wrapper.eq("code", code));
+        return baseDao.selectCount(queryWrapper);
+    }
+
+    @Override
+    public List<String> getLocation() {
+        QueryWrapper<DevCameraEntity> wrapper = new QueryWrapper<>();
+        List<DevCameraEntity> devCameraEntities = baseDao.selectList(wrapper);
+        List<String> locations = new ArrayList<>();
+        if(ObjectUtils.isNotEmpty(devCameraEntities)) {
+            devCameraEntities.stream().forEach(cameraEntity -> {
+                locations.add(cameraEntity.getLocation());
+            });
+        }
+        return locations;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevImageServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevImageServiceImpl.java
new file mode 100644
index 0000000..356914e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevImageServiceImpl.java
@@ -0,0 +1,134 @@
+package com.iailab.module.data.dev.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.constant.Constant;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.dev.dao.DevImageDao;
+import com.iailab.module.data.dev.dto.DevImageDTO;
+import com.iailab.module.data.dev.entity.DataEntity;
+import com.iailab.module.data.dev.entity.DevImageEntity;
+import com.iailab.module.data.dev.service.DevImageService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年02月27日
+ */
+@Service
+public class DevImageServiceImpl extends BaseServiceImpl<DevImageDao, DevImageEntity> implements DevImageService {
+
+    @Override
+    public PageData<DevImageDTO> page(Map<String, Object> params) {
+        IPage<DevImageEntity> page = baseDao.selectPage(
+                getPage(params, Constant.CREATE_DATE, false),
+                getWrapper(params)
+        );
+        return getPageData(page, DevImageDTO.class);
+    }
+
+    @Override
+    public DevImageDTO get(String id) {
+        DevImageEntity entity = baseDao.selectById(id);
+
+        return ConvertUtils.sourceToTarget(entity, DevImageDTO.class);
+    }
+
+    private QueryWrapper<DevImageEntity> getWrapper(Map<String, Object> params){
+        String cameraId = (String)params.get("cameraId");
+        String startTime = (String)params.get("startTime");
+        String endTime = (String)params.get("endTime");
+
+        QueryWrapper<DevImageEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(cameraId), "camera_id", cameraId)
+                .ge(StringUtils.isNotBlank(startTime), "create_date", startTime)
+                .le(StringUtils.isNotBlank(endTime), "create_date", endTime);
+
+        return wrapper;
+    }
+
+    @Override
+    public List<DataEntity> getValueList(String cameraId, Date startTime, Date endTime) {
+        QueryWrapper<DevImageEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq( "camera_id", cameraId)
+                .ge( "create_date", startTime)
+                .le( "create_date", endTime)
+                .orderByAsc("create_date");
+        List<DataEntity> result = new ArrayList<>();
+        List<DevImageEntity> list = baseDao.selectList(wrapper);
+        if (CollectionUtils.isEmpty(list)) {
+            return result;
+        }
+        list.forEach(item -> {
+            DataEntity dataEntity = new DataEntity();
+            dataEntity.setDataValue(item.getImagePath());
+            dataEntity.setTimeStamp(item.getCreateDate());
+            result.add(dataEntity);
+        });
+        return result;
+    }
+
+    @Override
+    public String getUrl(String cameraId, String imagePath) {
+        String result = "";
+        QueryWrapper<DevImageEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq( "camera_id", cameraId)
+                .eq( "image_path", imagePath)
+                .orderByDesc("create_date");
+        List<DevImageEntity> devImageEntities = baseDao.selectList(wrapper);
+        DevImageEntity entity = new DevImageEntity();
+        if (ObjectUtils.isNotEmpty(devImageEntities)) {
+            entity = devImageEntities.get(0);
+        }
+        if (entity != null) {
+            return entity.getImageUrl();
+        }
+        return result;
+    }
+
+    @Override
+    public void save(DevImageDTO dto) {
+        DevImageEntity entity = ConvertUtils.sourceToTarget(dto, DevImageEntity.class);
+
+        //保存菜单
+        insert(entity);
+    }
+
+    @Override
+    public void update(DevImageDTO dto) {
+        DevImageEntity entity = ConvertUtils.sourceToTarget(dto, DevImageEntity.class);
+
+        //更新菜单
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        //删除菜单
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+    @Override
+    public DevImageDTO get(String cameraId, Date createDate) {
+        QueryWrapper<DevImageEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq( "camera_id", cameraId)
+                .eq( "create_date", createDate);
+        DevImageEntity entity = new DevImageEntity();
+        List<DevImageEntity> devImageEntities = baseDao.selectList(wrapper);
+        if (ObjectUtils.isNotEmpty(devImageEntities)) {
+            entity = devImageEntities.get(0);
+        }
+        return ConvertUtils.sourceToTarget(entity, DevImageDTO.class);
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevLogServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevLogServiceImpl.java
new file mode 100644
index 0000000..ece34f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevLogServiceImpl.java
@@ -0,0 +1,84 @@
+package com.iailab.module.data.dev.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.constant.Constant;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.dev.dao.DevLogDao;
+import com.iailab.module.data.dev.dto.DevLogDTO;
+import com.iailab.module.data.dev.entity.DevLogEntity;
+import com.iailab.module.data.dev.service.DevLogService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月07日
+ */
+@Service
+public class DevLogServiceImpl extends BaseServiceImpl<DevLogDao, DevLogEntity> implements DevLogService {
+
+    @Override
+    public PageData<DevLogDTO> page(Map<String, Object> params) {
+        IPage<DevLogEntity> page = baseDao.selectPage(
+                getPage(params, Constant.CREATE_DATE, false),
+                getWrapper(params)
+        );
+        return getPageData(page, DevLogDTO.class);
+    }
+
+    @Override
+    public List<DevLogDTO> list(Map<String, Object> params) {
+        QueryWrapper<DevLogEntity> queryWrapper = getWrapper(params);
+        queryWrapper.orderByDesc(Constant.CREATE_DATE);
+        List<DevLogEntity> list = baseDao.selectList(queryWrapper);
+        return ConvertUtils.sourceToTarget(list, DevLogDTO.class);
+    }
+
+    @Override
+    public DevLogDTO get(String id) {
+        DevLogEntity entity = baseDao.selectById(id);
+
+        return ConvertUtils.sourceToTarget(entity, DevLogDTO.class);
+    }
+
+    private QueryWrapper<DevLogEntity> getWrapper(Map<String, Object> params){
+        String code = (String)params.get("code");
+        String location = (String)params.get("location");
+        Integer status = params.get("status") == null ? null : Integer.parseInt(params.get("status").toString());
+
+        QueryWrapper<DevLogEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(code), "code", code)
+                .like(StringUtils.isNotBlank(location), "location", location)
+                .eq(status != null, "status", status);
+
+        return wrapper;
+    }
+
+    @Override
+    public void save(DevLogDTO dto) {
+        DevLogEntity entity = ConvertUtils.sourceToTarget(dto, DevLogEntity.class);
+
+        insert(entity);
+    }
+
+    @Override
+    public void update(DevLogDTO dto) {
+        DevLogEntity entity = ConvertUtils.sourceToTarget(dto, DevLogEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevNvrServiceImpl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevNvrServiceImpl.java
new file mode 100644
index 0000000..e90be76
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/service/impl/DevNvrServiceImpl.java
@@ -0,0 +1,144 @@
+package com.iailab.module.data.dev.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iailab.framework.common.constant.Constant;
+import com.iailab.framework.common.page.PageData;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.service.impl.BaseServiceImpl;
+import com.iailab.framework.common.util.object.BeanUtils;
+import com.iailab.framework.common.util.object.ConvertUtils;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrPageReqVO;
+import com.iailab.module.data.dev.controller.admin.nvr.vo.DevNvrSaveReqVO;
+import com.iailab.module.data.dev.dahua.DHCapturePictureClient;
+import com.iailab.module.data.dev.dahua.DHClientFactory;
+import com.iailab.module.data.dev.dao.DevNvrDao;
+import com.iailab.module.data.dev.dto.DevNvrDTO;
+import com.iailab.module.data.dev.entity.DevNvrEntity;
+import com.iailab.module.data.dev.service.DevNvrService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年03月07日
+ */
+@Service
+public class DevNvrServiceImpl extends BaseServiceImpl<DevNvrDao, DevNvrEntity> implements DevNvrService {
+
+    @Resource
+    private DevNvrDao devNvrDao;
+
+    @Resource
+    private DHClientFactory dhClientFactory;
+
+    @Override
+    public PageResult<DevNvrDTO> getPage(DevNvrPageReqVO pageReqVO) {
+        PageResult<DevNvrEntity> pageResult = devNvrDao.selectPage(pageReqVO);
+//        List<DevNvrEntity> list = pageResult.getList();
+//        dhClientFactory.getNvrOnlineStatus(list);
+        return BeanUtils.toBean(pageResult, DevNvrDTO.class);
+    }
+
+    @Override
+    public List<DevNvrDTO> list(Map<String, Object> params) {
+        QueryWrapper<DevNvrEntity> queryWrapper = getWrapper(params);
+        queryWrapper.orderByDesc(Constant.CREATE_DATE);
+        List<DevNvrEntity> list = baseDao.selectList(queryWrapper);
+        return ConvertUtils.sourceToTarget(list, DevNvrDTO.class);
+    }
+
+    @Override
+    public DevNvrDTO get(String id) {
+        DevNvrEntity entity = baseDao.selectById(id);
+
+        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
+    }
+
+    @Override
+    public DevNvrDTO getByIp(String ip) {
+        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("ip", ip);
+        DevNvrEntity entity = baseDao.selectOne(wrapper);
+
+        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
+    }
+
+    @Override
+    public DevNvrDTO getByCode(String code) {
+        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("code", code);
+        DevNvrEntity entity = baseDao.selectOne(wrapper);
+
+        return ConvertUtils.sourceToTarget(entity, DevNvrDTO.class);
+    }
+
+    private QueryWrapper<DevNvrEntity> getWrapper(Map<String, Object> params) {
+        String code = (String) params.get("code");
+        String location = (String) params.get("location");
+        String nvrId = (String) params.get("nvrId");
+        Integer status = params.get("status") == null ? null : Integer.parseInt(params.get("status").toString());
+
+        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
+        wrapper.like(StringUtils.isNotBlank(code), "code", code)
+                .like(StringUtils.isNotBlank(location), "location", location)
+                .eq(StringUtils.isNotBlank(nvrId), "nvr_id", nvrId)
+                .eq(status != null, "status", status);
+
+        return wrapper;
+    }
+
+    @Override
+    public String save(DevNvrSaveReqVO saveReqVO) {
+        DevNvrEntity entity = BeanUtils.toBean(saveReqVO, DevNvrEntity.class);
+        entity.setCreateDate(new Date());
+        insert(entity);
+        return entity.getId();
+    }
+
+    @Override
+    public String update(DevNvrSaveReqVO saveReqVO) {
+        DevNvrEntity entity = BeanUtils.toBean(saveReqVO, DevNvrEntity.class);
+        entity.setCreateDate(new Date());
+        updateById(entity);
+        return entity.getId();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(Long id) {
+        devNvrDao.deleteById(id);
+    }
+
+//    @Override
+//    public Long cheack(DevNvrDTO dto) {
+//        Long id = dto.getId();
+//        String code = dto.getCode();
+//        String name = dto.getName();
+//        QueryWrapper<DevNvrEntity> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.ne(StringUtils.isNotBlank(id.toString()), "id", id);
+//        queryWrapper.and(wrapper -> wrapper.eq("code", code).or().
+//                eq(StringUtils.isNotBlank(name), "name", name));
+//        return baseDao.selectCount(queryWrapper);
+//    }
+
+    @Override
+    public void setStatus(String ip, Integer status) {
+        QueryWrapper<DevNvrEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("ip", ip);
+        DevNvrEntity entity = new DevNvrEntity();
+        entity.setIp(ip);
+        entity.setStatus(status);
+        baseDao.update(entity, wrapper);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/CameraHeartTask.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/CameraHeartTask.java
new file mode 100644
index 0000000..5a17aa0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/CameraHeartTask.java
@@ -0,0 +1,64 @@
+package com.iailab.module.data.dev.task;
+
+import com.iailab.module.data.dev.dto.AlarmCameraDTO;
+import com.iailab.module.data.dev.enums.AlarmStatusEnum;
+import com.iailab.module.data.dev.service.AlarmCameraService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author PanZhibao
+ * @Description
+ * @createTime 2024年04月08日
+ */
+@Component("cameraHeartTask")
+public class CameraHeartTask implements ITask {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    public static Map<Integer, Long> cameraCapTime = new ConcurrentHashMap<>();
+
+    private long EXP_TIME = 1000 * 60 * 3;
+
+    @Autowired
+    private AlarmCameraService alarmCameraService;
+
+    @Override
+    public void run(String params){
+        logger.info("CameraHeartTask定时任务正在执行,参数为:{}", params);
+        try {
+            List<AlarmCameraDTO> alarmCameraList = alarmCameraService.list(new HashMap<>());
+            if (CollectionUtils.isEmpty(alarmCameraList)) {
+                return;
+            }
+            alarmCameraList.forEach(item -> {
+                if (!cameraCapTime.containsKey(item.getCameraCode())) {
+                    cameraCapTime.put(item.getCameraCode(), 0L);
+                }
+            });
+            if (CollectionUtils.isEmpty(cameraCapTime)) {
+                return;
+            }
+            cameraCapTime.forEach((k, v) -> {
+                if ((v + EXP_TIME) < System.currentTimeMillis()) {
+                    logger.info("EXCEPTION CODE=" + k);
+                    alarmCameraService.updateStatus(k, AlarmStatusEnum.EXCEPTION);
+                }
+            });
+
+            logger.info("CameraHeartTask定时任务执行完成:" + LocalDateTime.now());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            logger.info("CameraHeartTask定时任务失败时间:" + LocalDateTime.now());
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/ITask.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/ITask.java
new file mode 100644
index 0000000..9f917c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/dev/task/ITask.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2018 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.iailab.module.data.dev.task;
+
+/**
+ * 定时任务接口,所有定时任务都要实现该接口
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+public interface ITask {
+
+    /**
+     * 执行定时任务接口
+     *
+     * @param params   参数,多参数使用JSON数据
+     */
+    void run(String params);
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Base64.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Base64.java
new file mode 100644
index 0000000..f1f0b66
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Base64.java
@@ -0,0 +1,553 @@
+/*
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+
+// Base64解码 使用1.8版本源码  鉴于1.8部分特性1.6版本使用不到 故只保留能使用到的代码 其余删除 
+package com.netsdk.common;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+
+/**
+ * This class consists exclusively of static methods for obtaining
+ * encoders and decoders for the Base64 encoding scheme. The
+ * implementation of this class supports the following types of Base64
+ * as specified in
+ * <a href="http://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a> and
+ *
+ * <ul>
+ * <li><a name="basic"><b>Basic</b></a>
+ * <p> Uses "The Base64 Alphabet" as specified in Table 1 of
+ *     RFC 4648 and RFC 2045 for encoding and decoding operation.
+ *     The encoder does not add any line feed (line separator)
+ *     character. The decoder rejects data that contains characters
+ *     outside the base64 alphabet.</p></li>
+ *
+ * <p> Unless otherwise noted, passing a {@code null} argument to a
+ * method of this class will cause a {@link NullPointerException
+ * NullPointerException} to be thrown.
+ *
+ * @author  Xueming Shen
+ * @since   1.8
+ */
+
+public class Base64 {
+
+    private Base64() {}
+
+    /**
+     * Returns a {@link Encoder} that encodes using the
+     * <a href="#basic">Basic</a> type base64 encoding scheme.
+     *
+     * @return  A Base64 encoder.
+     */
+    public static Encoder getEncoder() {
+         return Encoder.RFC4648;
+    }
+
+    /**
+     * This class implements an encoder for encoding byte data using
+     * the Base64 encoding scheme as specified in RFC 4648 and RFC 2045.
+     *
+     * <p> Instances of {@link Encoder} class are safe for use by
+     * multiple concurrent threads.
+     *
+     * <p> Unless otherwise noted, passing a {@code null} argument to
+     * a method of this class will cause a
+     * {@link NullPointerException NullPointerException} to
+     * be thrown.
+     *
+     * @see     Decoder
+     * @since   1.8
+     */
+    public static class Encoder {
+
+        private final byte[] newline;
+        private final int linemax;
+        private final boolean isURL;
+        private final boolean doPadding;
+
+        private Encoder(boolean isURL, byte[] newline, int linemax, boolean doPadding) {
+            this.isURL = isURL;
+            this.newline = newline;
+            this.linemax = linemax;
+            this.doPadding = doPadding;
+        }
+
+        /**
+         * This array is a lookup table that translates 6-bit positive integer
+         * index values into their "Base64 Alphabet" equivalents as specified
+         * in "Table 1: The Base64 Alphabet" of RFC 2045 (and RFC 4648).
+         */
+        private static final char[] toBase64 = {
+            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+            'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+            'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
+        };
+
+        /**
+         * It's the lookup table for "URL and Filename safe Base64" as specified
+         * in Table 2 of the RFC 4648, with the '+' and '/' changed to '-' and
+         * '_'. This table is used when BASE64_URL is specified.
+         */
+        private static final char[] toBase64URL = {
+            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+            'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+            'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'
+        };
+
+        static final Encoder RFC4648 = new Encoder(false, null, -1, true);
+
+        private final int outLength(int srclen) {
+            int len = 0;
+            if (doPadding) {
+                len = 4 * ((srclen + 2) / 3);
+            } else {
+                int n = srclen % 3;
+                len = 4 * (srclen / 3) + (n == 0 ? 0 : n + 1);
+            }
+            if (linemax > 0)                                  // line separators
+                len += (len - 1) / linemax * newline.length;
+            return len;
+        }
+
+        /**
+         * Encodes all bytes from the specified byte array into a newly-allocated
+         * byte array using the {@link Base64} encoding scheme. The returned byte
+         * array is of the length of the resulting bytes.
+         *
+         * @param   src
+         *          the byte array to encode
+         * @return  A newly-allocated byte array containing the resulting
+         *          encoded bytes.
+         */
+        public byte[] encode(byte[] src) {
+            int len = outLength(src.length);          // dst array size
+            byte[] dst = new byte[len];
+            int ret = encode0(src, 0, src.length, dst);
+            if (ret != dst.length)
+                 return Arrays.copyOf(dst, ret);
+            return dst;
+        }
+
+        /**
+         * Encodes all bytes from the specified byte array using the
+         * {@link Base64} encoding scheme, writing the resulting bytes to the
+         * given output byte array, starting at offset 0.
+         *
+         * <p> It is the responsibility of the invoker of this method to make
+         * sure the output byte array {@code dst} has enough space for encoding
+         * all bytes from the input byte array. No bytes will be written to the
+         * output byte array if the output byte array is not big enough.
+         *
+         * @param   src
+         *          the byte array to encode
+         * @param   dst
+         *          the output byte array
+         * @return  The number of bytes written to the output byte array
+         *
+         * @throws  IllegalArgumentException if {@code dst} does not have enough
+         *          space for encoding all input bytes.
+         */
+        public int encode(byte[] src, byte[] dst) {
+            int len = outLength(src.length);         // dst array size
+            if (dst.length < len)
+                throw new IllegalArgumentException(
+                    "Output byte array is too small for encoding all input bytes");
+            return encode0(src, 0, src.length, dst);
+        }
+
+        /**
+         * Encodes the specified byte array into a String using the {@link Base64}
+         * encoding scheme.
+         *
+         * <p> In other words, an invocation of this method has exactly the same
+         * effect as invoking
+         * {@code new String(encode(src), StandardCharsets.ISO_8859_1)}.
+         *
+         * @param   src
+         *          the byte array to encode
+         * @return  A String containing the resulting Base64 encoded characters
+         */
+        @SuppressWarnings("deprecation")
+        public String encodeToString(byte[] src) {
+            byte[] encoded = encode(src);
+            return new String(encoded, 0, 0, encoded.length);
+        }
+
+        /**
+         * Returns an encoder instance that encodes equivalently to this one,
+         * but without adding any padding character at the end of the encoded
+         * byte data.
+         *
+         * <p> The encoding scheme of this encoder instance is unaffected by
+         * this invocation. The returned encoder instance should be used for
+         * non-padding encoding operation.
+         *
+         * @return an equivalent encoder that encodes without adding any
+         *         padding character at the end
+         */
+        public Encoder withoutPadding() {
+            if (!doPadding)
+                return this;
+            return new Encoder(isURL, newline, linemax, false);
+        }
+
+        private int encode0(byte[] src, int off, int end, byte[] dst) {
+            char[] base64 = isURL ? toBase64URL : toBase64;
+            int sp = off;
+            int slen = (end - off) / 3 * 3;
+            int sl = off + slen;
+            if (linemax > 0 && slen  > linemax / 4 * 3)
+                slen = linemax / 4 * 3;
+            int dp = 0;
+            while (sp < sl) {
+                int sl0 = Math.min(sp + slen, sl);
+                for (int sp0 = sp, dp0 = dp ; sp0 < sl0; ) {
+                    int bits = (src[sp0++] & 0xff) << 16 |
+                               (src[sp0++] & 0xff) <<  8 |
+                               (src[sp0++] & 0xff);
+                    dst[dp0++] = (byte)base64[(bits >>> 18) & 0x3f];
+                    dst[dp0++] = (byte)base64[(bits >>> 12) & 0x3f];
+                    dst[dp0++] = (byte)base64[(bits >>> 6)  & 0x3f];
+                    dst[dp0++] = (byte)base64[bits & 0x3f];
+                }
+                int dlen = (sl0 - sp) / 3 * 4;
+                dp += dlen;
+                sp = sl0;
+                if (dlen == linemax && sp < end) {
+                    for (byte b : newline){
+                        dst[dp++] = b;
+                    }
+                }
+            }
+            if (sp < end) {               // 1 or 2 leftover bytes
+                int b0 = src[sp++] & 0xff;
+                dst[dp++] = (byte)base64[b0 >> 2];
+                if (sp == end) {
+                    dst[dp++] = (byte)base64[(b0 << 4) & 0x3f];
+                    if (doPadding) {
+                        dst[dp++] = '=';
+                        dst[dp++] = '=';
+                    }
+                } else {
+                    int b1 = src[sp++] & 0xff;
+                    dst[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)];
+                    dst[dp++] = (byte)base64[(b1 << 2) & 0x3f];
+                    if (doPadding) {
+                        dst[dp++] = '=';
+                    }
+                }
+            }
+            return dp;
+        }
+    }
+
+    /**
+     * Returns a {@link Decoder} that decodes using the
+     * <a href="#basic">Basic</a> type base64 encoding scheme.
+     *
+     * @return  A Base64 decoder.
+     */
+    public static Decoder getDecoder() {
+        return Decoder.RFC4648;
+    }
+    /**
+     * This class implements a decoder for decoding byte data using the
+     * Base64 encoding scheme as specified in RFC 4648 and RFC 2045.
+     *
+     * <p> The Base64 padding character {@code '='} is accepted and
+     * interpreted as the end of the encoded byte data, but is not
+     * required. So if the final unit of the encoded byte data only has
+     * two or three Base64 characters (without the corresponding padding
+     * character(s) padded), they are decoded as if followed by padding
+     * character(s). If there is a padding character present in the
+     * final unit, the correct number of padding character(s) must be
+     * present, otherwise {@code IllegalArgumentException} (
+     * {@code IOException} when reading from a Base64 stream) is thrown
+     * during decoding.
+     *
+     * <p> Instances of {@link Decoder} class are safe for use by
+     * multiple concurrent threads.
+     *
+     * <p> Unless otherwise noted, passing a {@code null} argument to
+     * a method of this class will cause a
+     * {@link NullPointerException NullPointerException} to
+     * be thrown.
+     *
+     * @see     Encoder
+     * @since   1.8
+     */
+    public static class Decoder {
+
+        private final boolean isURL;
+        private final boolean isMIME;
+
+        private Decoder(boolean isURL, boolean isMIME) {
+            this.isURL = isURL;
+            this.isMIME = isMIME;
+        }
+
+        /**
+         * Lookup table for decoding unicode characters drawn from the
+         * "Base64 Alphabet" (as specified in Table 1 of RFC 2045) into
+         * their 6-bit positive integer equivalents.  Characters that
+         * are not in the Base64 alphabet but fall within the bounds of
+         * the array are encoded to -1.
+         *
+         */
+        private static final int[] fromBase64 = new int[256];
+        static {
+            Arrays.fill(fromBase64, -1);
+            for (int i = 0; i < Encoder.toBase64.length; i++)
+                fromBase64[Encoder.toBase64[i]] = i;
+            fromBase64['='] = -2;
+        }
+
+        /**
+         * Lookup table for decoding "URL and Filename safe Base64 Alphabet"
+         * as specified in Table2 of the RFC 4648.
+         */
+        private static final int[] fromBase64URL = new int[256];
+
+        static {
+            Arrays.fill(fromBase64URL, -1);
+            for (int i = 0; i < Encoder.toBase64URL.length; i++)
+                fromBase64URL[Encoder.toBase64URL[i]] = i;
+            fromBase64URL['='] = -2;
+        }
+
+        static final Decoder RFC4648         = new Decoder(false, false);
+        static final Decoder RFC4648_URLSAFE = new Decoder(true, false);
+        static final Decoder RFC2045         = new Decoder(false, true);
+
+        /**
+         * Decodes all bytes from the input byte array using the {@link Base64}
+         * encoding scheme, writing the results into a newly-allocated output
+         * byte array. The returned byte array is of the length of the resulting
+         * bytes.
+         *
+         * @param   src
+         *          the byte array to decode
+         *
+         * @return  A newly-allocated byte array containing the decoded bytes.
+         *
+         * @throws  IllegalArgumentException
+         *          if {@code src} is not in valid Base64 scheme
+         */
+        public byte[] decode(byte[] src) {
+            byte[] dst = new byte[outLength(src, 0, src.length)];
+            int ret = decode0(src, 0, src.length, dst);
+            if (ret != dst.length) {
+                dst = Arrays.copyOf(dst, ret);
+            }
+            return dst;
+        }
+
+        public byte[] decode(String src) {
+            return decode(src.getBytes(Charset.forName("ISO-8859-1")));
+        }
+
+        /**
+         * Decodes all bytes from the input byte array using the {@link Base64}
+         * encoding scheme, writing the results into the given output byte array,
+         * starting at offset 0.
+         *
+         * <p> It is the responsibility of the invoker of this method to make
+         * sure the output byte array {@code dst} has enough space for decoding
+         * all bytes from the input byte array. No bytes will be be written to
+         * the output byte array if the output byte array is not big enough.
+         *
+         * <p> If the input byte array is not in valid Base64 encoding scheme
+         * then some bytes may have been written to the output byte array before
+         * IllegalargumentException is thrown.
+         *
+         * @param   src
+         *          the byte array to decode
+         * @param   dst
+         *          the output byte array
+         *
+         * @return  The number of bytes written to the output byte array
+         *
+         * @throws  IllegalArgumentException
+         *          if {@code src} is not in valid Base64 scheme, or {@code dst}
+         *          does not have enough space for decoding all input bytes.
+         */
+        public int decode(byte[] src, byte[] dst) {
+            int len = outLength(src, 0, src.length);
+            if (dst.length < len)
+                throw new IllegalArgumentException(
+                        "Output byte array is too small for decoding all input bytes");
+            return decode0(src, 0, src.length, dst);
+        }
+
+        /**
+         * Decodes all bytes from the input byte buffer using the {@link Base64}
+         * encoding scheme, writing the results into a newly-allocated ByteBuffer.
+         *
+         * <p> Upon return, the source buffer's position will be updated to
+         * its limit; its limit will not have been changed. The returned
+         * output buffer's position will be zero and its limit will be the
+         * number of resulting decoded bytes
+         *
+         * <p> {@code IllegalArgumentException} is thrown if the input buffer
+         * is not in valid Base64 encoding scheme. The position of the input
+         * buffer will not be advanced in this case.
+         *
+         * @param   buffer
+         *          the ByteBuffer to decode
+         *
+         * @return  A newly-allocated byte buffer containing the decoded bytes
+         *
+         * @throws  IllegalArgumentException
+         *          if {@code src} is not in valid Base64 scheme.
+         */
+        public ByteBuffer decode(ByteBuffer buffer) {
+            int pos0 = buffer.position();
+            try {
+                byte[] src;
+                int sp, sl;
+                if (buffer.hasArray()) {
+                    src = buffer.array();
+                    sp = buffer.arrayOffset() + buffer.position();
+                    sl = buffer.arrayOffset() + buffer.limit();
+                    buffer.position(buffer.limit());
+                } else {
+                    src = new byte[buffer.remaining()];
+                    buffer.get(src);
+                    sp = 0;
+                    sl = src.length;
+                }
+                byte[] dst = new byte[outLength(src, sp, sl)];
+                return ByteBuffer.wrap(dst, 0, decode0(src, sp, sl, dst));
+            } catch (IllegalArgumentException iae) {
+                buffer.position(pos0);
+                throw iae;
+            }
+        }
+
+        private int outLength(byte[] src, int sp, int sl) {
+            int[] base64 = isURL ? fromBase64URL : fromBase64;
+            int paddings = 0;
+            int len = sl - sp;
+            if (len == 0)
+                return 0;
+            if (len < 2) {
+                if (isMIME && base64[0] == -1)
+                    return 0;
+                throw new IllegalArgumentException(
+                        "Input byte[] should at least have 2 bytes for base64 bytes");
+            }
+            if (isMIME) {
+                // scan all bytes to fill out all non-alphabet. a performance
+                // trade-off of pre-scan or Arrays.copyOf
+                int n = 0;
+                while (sp < sl) {
+                    int b = src[sp++] & 0xff;
+                    if (b == '=') {
+                        len -= (sl - sp + 1);
+                        break;
+                    }
+                    if ((b = base64[b]) == -1)
+                        n++;
+                }
+                len -= n;
+            } else {
+                if (src[sl - 1] == '=') {
+                    paddings++;
+                    if (src[sl - 2] == '=')
+                        paddings++;
+                }
+            }
+            if (paddings == 0 && (len & 0x3) !=  0)
+                paddings = 4 - (len & 0x3);
+            return 3 * ((len + 3) / 4) - paddings;
+        }
+
+        private int decode0(byte[] src, int sp, int sl, byte[] dst) {
+            int[] base64 = isURL ? fromBase64URL : fromBase64;
+            int dp = 0;
+            int bits = 0;
+            int shiftto = 18;       // pos of first byte of 4-byte atom
+            while (sp < sl) {
+                int b = src[sp++] & 0xff;
+                if ((b = base64[b]) < 0) {
+                    if (b == -2) {         // padding byte '='
+                        // =     shiftto==18 unnecessary padding
+                        // x=    shiftto==12 a dangling single x
+                        // x     to be handled together with non-padding case
+                        // xx=   shiftto==6&&sp==sl missing last =
+                        // xx=y  shiftto==6 last is not =
+                        if (shiftto == 6 && (sp == sl || src[sp++] != '=') ||
+                                shiftto == 18) {
+                            throw new IllegalArgumentException(
+                                    "Input byte array has wrong 4-byte ending unit");
+                        }
+                        break;
+                    }
+                    if (isMIME)    // skip if for rfc2045
+                        continue;
+                    else
+                        throw new IllegalArgumentException(
+                                "Illegal base64 character " +
+                                        Integer.toString(src[sp - 1], 16));
+                }
+                bits |= (b << shiftto);
+                shiftto -= 6;
+                if (shiftto < 0) {
+                    dst[dp++] = (byte)(bits >> 16);
+                    dst[dp++] = (byte)(bits >>  8);
+                    dst[dp++] = (byte)(bits);
+                    shiftto = 18;
+                    bits = 0;
+                }
+            }
+            // reached end of byte array or hit padding '=' characters.
+            if (shiftto == 6) {
+                dst[dp++] = (byte)(bits >> 16);
+            } else if (shiftto == 0) {
+                dst[dp++] = (byte)(bits >> 16);
+                dst[dp++] = (byte)(bits >>  8);
+            } else if (shiftto == 12) {
+                // dangling single "x", incorrectly encoded.
+                throw new IllegalArgumentException(
+                        "Last unit does not have enough valid bits");
+            }
+            // anything left is invalid, if is not MIME.
+            // if MIME, ignore all non-base64 character
+            while (sp < sl) {
+                if (isMIME && base64[src[sp++]] < 0)
+                    continue;
+                throw new IllegalArgumentException(
+                        "Input byte array has incorrect ending byte at " + sp);
+            }
+            return dp;
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/BorderEx.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/BorderEx.java
new file mode 100644
index 0000000..91dc7f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/BorderEx.java
@@ -0,0 +1,17 @@
+package com.netsdk.common;
+
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.border.Border;
+
+/*
+ * 边框设置
+ */
+public class BorderEx {
+	public static void set(JComponent object, String title, int width) {
+		Border innerBorder = BorderFactory.createTitledBorder(title);
+	    Border outerBorder = BorderFactory.createEmptyBorder(width, width, width, width);
+	    object.setBorder(BorderFactory.createCompoundBorder(outerBorder, innerBorder));	 
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/CaseMenu.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/CaseMenu.java
new file mode 100644
index 0000000..7a573ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/CaseMenu.java
@@ -0,0 +1,93 @@
+package com.netsdk.common;
+
+import java.lang.reflect.Method;
+import java.util.NoSuchElementException;
+import java.util.Scanner;
+import java.util.Vector;
+
+public class CaseMenu {
+	
+	public static class Item {
+		private Object object;
+		private String itemName;
+		private String methodName;
+		
+		public Item(Object object, String itemName, String methodName) {
+			super();
+			this.object = object;
+			this.itemName = itemName;
+			this.methodName = methodName;
+		}
+
+		public Object getObject() {
+			return object;
+		}
+
+		public String getItemName() {
+			return itemName;
+		}
+
+		public String getMethodName() {
+			return methodName;
+		}
+	}
+	
+	private Vector<Item> items;
+
+	public CaseMenu() {
+		super();
+		items = new Vector<Item>();
+	}
+	
+	public void addItem(Item item) {
+		items.add(item);
+	}
+	
+	private void showItem() {
+		final String format = "%2d\t%-20s\n";
+		int index = 0; 
+		System.out.printf(format, index++, "exit App");
+		for (Item item : items) {
+			System.out.printf(format, index++, item.getItemName());
+		}
+		System.out.println("Please input a item index to invoke the method:");
+	}
+	
+	public void run() {
+		Scanner scanner = new Scanner(System.in);
+		while(true) {			
+			showItem();			
+			try {		
+				int input = Integer.parseInt(scanner.nextLine());
+
+				if (input <= 0 ) {
+					System.err.println("input <= 0 || scanner.nextLine() == null");
+//					scanner.close();
+//					System.exit(0);
+					break;
+				}
+					
+				if (input < 0 || input > items.size()) {
+					System.err.println("Input Error Item Index.");
+					continue;
+				}
+				
+				Item item = items.get(input - 1);
+				Class<?> itemClass = item.getObject().getClass();
+				Method method = itemClass.getMethod(item.getMethodName());
+				method.invoke(item.getObject());
+			} catch (NoSuchElementException e) {
+//				scanner.close();
+//				System.exit(0);
+				break;
+			} catch (NumberFormatException e) {
+				System.err.println("Input Error NumberFormat.");
+				continue;
+			} catch (Exception e) {
+				e.printStackTrace();
+			} 
+		}
+		
+		scanner.close();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButton.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButton.java
new file mode 100644
index 0000000..0042702
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButton.java
@@ -0,0 +1,625 @@
+package com.netsdk.common;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.SwingConstants;
+import javax.swing.UIManager;
+import javax.swing.border.LineBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * 时间选择器, 年月日-时分秒
+ */
+public class DateChooserJButton extends JButton {
+	private static final long serialVersionUID = 1L;
+	
+    int startYear = 1980; // 默认【最小】显示年份
+    int lastYear = 2050; // 默认【最大】显示年份
+    
+    private DateChooser dateChooser = null;
+    private String preLabel = "";
+    private String originalText = null;
+    private SimpleDateFormat sdf = null;
+    
+    private JSpinner yearSpin;
+    private JSpinner monthSpin;
+    private JSpinner daySpin;
+    private JSpinner hourSpin;
+    private JSpinner minuteSpin;
+    private JSpinner secondSpin;
+    
+    public DateChooserJButton() {
+        this(getNowDate());   
+        
+		try {
+	        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+	    } catch (Exception e) {
+	    	e.printStackTrace();
+	    } 
+    }
+
+    public DateChooserJButton(String dateString) {
+        this();     
+    	
+        setText(getDefaultDateFormat(), dateString);
+        //保存原始是日期时间
+        initOriginalText(dateString);
+    }
+
+    public DateChooserJButton(SimpleDateFormat df, String dateString) {
+        this();
+        setText(df, dateString);
+
+        //记忆当前的日期格式化器
+        this.sdf = df;
+
+        //记忆原始日期时间
+        Date originalDate = null;
+        try {
+            originalDate = df.parse(dateString);
+        } catch (ParseException ex) {
+            originalDate = getNowDate();
+        }
+        initOriginalText(originalDate);
+    }
+
+    public DateChooserJButton(Date date) {
+        this("", date);
+        //记忆原始日期时间
+        initOriginalText(date);
+    }
+
+    public DateChooserJButton(String preLabel, Date date) {
+        if (preLabel != null) {
+            this.preLabel = preLabel;
+        }
+        setDate(date);
+        //记忆原始是日期时间
+        initOriginalText(date);
+
+        setBorder(null);
+        setCursor(new Cursor(Cursor.HAND_CURSOR));
+        super.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                if (dateChooser == null) {
+                    dateChooser = new DateChooser();
+                }
+
+                dateChooser.showDateChooser();          
+            }
+        });
+    }
+    
+    public DateChooserJButton(int startYear, int lastYear) {
+        this();
+        this.startYear = startYear;
+        this.lastYear = lastYear;
+    }
+
+    private static Date getNowDate() {
+        return Calendar.getInstance().getTime();
+    }
+
+    private static SimpleDateFormat getDefaultDateFormat() {
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    }
+
+    /**
+     * 得到当前使用的日期格式化器
+     * @return 日期格式化器
+     */
+    public SimpleDateFormat getCurrentSimpleDateFormat(){
+        if(this.sdf != null){
+            return sdf;
+        }else{
+            return getDefaultDateFormat();
+        }
+    }
+
+
+    //保存原始是日期时间
+    private void initOriginalText(String dateString) {
+        this.originalText = dateString;
+    }
+
+    //保存原始是日期时间
+    private void initOriginalText(Date date) {
+        this.originalText = preLabel + getDefaultDateFormat().format(date);
+    }
+
+    /** 
+     * 得到当前记忆的原始日期时间
+     * @return 当前记忆的原始日期时间(未修改前的日期时间)
+     */
+    public String getOriginalText() {
+        return originalText;
+    }
+
+    // 覆盖父类的方法
+    @Override
+    public void setText(String s) {
+        Date date;
+        try {
+            date = getDefaultDateFormat().parse(s);
+        } catch (ParseException e) {
+            date = getNowDate();
+        }
+        setDate(date);
+        initOriginalText(date);
+    }
+
+    public void setText(SimpleDateFormat df, String s) {
+        Date date;
+        try {
+            date = df.parse(s);
+        } catch (ParseException e) {
+            date = getNowDate();
+        }
+        setDate(date);
+        initOriginalText(date);
+    }
+
+    public void setDate(Date date) {
+        super.setText(preLabel + getDefaultDateFormat().format(date));
+    }
+
+    public Date getDate() {
+        String dateString = getText().substring(preLabel.length());
+        try {
+            SimpleDateFormat currentSdf = getCurrentSimpleDateFormat();
+            return currentSdf.parse(dateString);
+        } catch (ParseException e) {
+            return getNowDate();
+        }
+    }
+
+    /**  
+     * 覆盖父类的方法使之无效
+     * @param listener 响应监听器
+     */
+    @Override
+    public void addActionListener(ActionListener listener) {
+    }
+
+    /**
+     * 内部类,主要是定义一个JPanel,然后把日历相关的所有内容填入本JPanel,
+     * 然后再创建一个JDialog,把本内部类定义的JPanel放入JDialog的内容区
+     */
+    private class DateChooser extends JPanel implements MouseListener, ChangeListener {
+    	private static final long serialVersionUID = 1L;
+    	
+        JLabel yearLabel;
+        JLabel monthLabel;
+        JLabel dayLabel;
+        JLabel hourLabel;
+        JLabel minuteLabel;
+        JLabel secondLabel;
+        
+        int width = 485; // 界面宽度
+        int height = 230; // 界面高度
+        Color backGroundColor = Color.gray; // 底色
+        // 月历表格配色----------------//
+        Color palletTableColor = Color.white; // 日历表底色
+        Color todayBackColor = Color.orange; // 今天背景色
+        Color weekFontColor = Color.blue; // 星期文字色
+        Color dateFontColor = Color.black; // 日期文字色
+        Color weekendFontColor = Color.red; // 周末文字色
+        // 控制条配色------------------//
+        Color controlLineColor = Color.pink; // 控制条底色
+        Color controlTextColor = Color.white; // 控制条标签文字色
+        
+        /** 点击DateChooserButton时弹出的对话框,日历内容在这个对话框内 */
+        JDialog dialog;
+        JLabel[][] daysLabels = new JLabel[6][7];
+
+        DateChooser() {
+            setLayout(new BorderLayout());
+            setBorder(new LineBorder(backGroundColor, 2));
+            setBackground(backGroundColor);
+
+            JPanel topYearAndMonth = createYearAndMonthPanal();
+            add(topYearAndMonth, BorderLayout.NORTH);
+            JPanel centerWeekAndDay = createWeekAndDayPanal();
+            add(centerWeekAndDay, BorderLayout.CENTER);
+            JPanel buttonBarPanel = createButtonBarPanel();
+            this.add(buttonBarPanel, BorderLayout.SOUTH);
+        }
+
+        private JPanel createYearAndMonthPanal() {
+            Calendar c = getCalendar();
+            int currentYear = c.get(Calendar.YEAR);
+            int currentMonth = c.get(Calendar.MONTH) + 1;
+            int currentDay = c.get(Calendar.DAY_OF_MONTH);
+            int currentHour = c.get(Calendar.HOUR_OF_DAY);
+            int currentMinute = c.get(Calendar.MINUTE);
+            int currentSecond = c.get(Calendar.SECOND);
+
+            JPanel result = new JPanel();
+            result.setLayout(new FlowLayout());
+            result.setBackground(controlLineColor);
+
+            yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear, lastYear, 1));
+            yearSpin.setPreferredSize(new Dimension(48, 20));
+            yearSpin.setName("Year");
+            yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
+            yearSpin.addChangeListener(this);
+            result.add(yearSpin);
+
+            yearLabel = new JLabel(Res.string().getYear());
+            yearLabel.setForeground(controlTextColor);
+            result.add(yearLabel);
+
+            monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1));
+            monthSpin.setPreferredSize(new Dimension(35, 20));
+            monthSpin.setName("Month");
+            monthSpin.addChangeListener(this);
+            result.add(monthSpin);
+
+            monthLabel = new JLabel(Res.string().getMonth());
+            monthLabel.setForeground(controlTextColor);
+            result.add(monthLabel);
+
+            //如果这里要能够选择,会要判断很多东西,比如每个月分别由多少日,以及闰年问题.所以,就干脆把Enable设为false
+            daySpin = new JSpinner(new SpinnerNumberModel(currentDay, 1, 31, 1));
+            daySpin.setPreferredSize(new Dimension(35, 20));
+            daySpin.setName("Day");
+            daySpin.addChangeListener(this);
+            daySpin.setEnabled(false);
+            result.add(daySpin);
+
+            dayLabel = new JLabel(Res.string().getDay());
+            dayLabel.setForeground(controlTextColor);
+            result.add(dayLabel);
+
+            hourSpin = new JSpinner(new SpinnerNumberModel(currentHour, 0, 23, 1));
+            hourSpin.setPreferredSize(new Dimension(35, 20));
+            hourSpin.setName("Hour");
+            hourSpin.addChangeListener(this);
+            result.add(hourSpin);
+
+            hourLabel = new JLabel(Res.string().getHour());
+            hourLabel.setForeground(controlTextColor);
+            result.add(hourLabel);
+
+            minuteSpin = new JSpinner(new SpinnerNumberModel(currentMinute, 0, 59, 1));
+            minuteSpin.setPreferredSize(new Dimension(35, 20));
+            minuteSpin.setName("Minute");
+            minuteSpin.addChangeListener(this);
+            result.add(minuteSpin);
+
+            minuteLabel = new JLabel(Res.string().getMinute());
+            minuteLabel.setForeground(controlTextColor);
+            result.add(minuteLabel);
+
+            secondSpin = new JSpinner(new SpinnerNumberModel(currentSecond, 0, 59, 1));
+            secondSpin.setPreferredSize(new Dimension(35, 20));
+            secondSpin.setName("Second");
+            secondSpin.addChangeListener(this);
+            result.add(secondSpin);
+
+            secondLabel = new JLabel(Res.string().getSecond());
+            secondLabel.setForeground(controlTextColor);
+            result.add(secondLabel);
+
+            return result;
+        }
+
+        private JPanel createWeekAndDayPanal() {
+        	Res.string().getWeek();
+            JPanel result = new JPanel();
+            // 设置固定字体,以免调用环境改变影响界面美观
+            result.setFont(new Font("宋体", Font.PLAIN, 12));
+            result.setLayout(new GridLayout(7, 7));
+            result.setBackground(Color.white);
+            JLabel cell;
+
+            for (int i = 0; i < 7; i++) {
+                cell = new JLabel(Res.string().getWeek()[i]);
+                cell.setHorizontalAlignment(JLabel.RIGHT);
+                if (i == 0 || i == 6) {
+                    cell.setForeground(weekendFontColor);
+                } else {
+                    cell.setForeground(weekFontColor);
+                }
+                result.add(cell);
+            }
+
+//            int actionCommandId = 0;
+            for (int i = 0; i < 6; i++) {
+                for (int j = 0; j < 7; j++) {
+                    JLabel numberLabel = new JLabel();
+                    numberLabel.setBorder(null);
+                    numberLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+//                    numberLabel.setActionCommand(String.valueOf(actionCommandId));
+                    numberLabel.addMouseListener(this);
+                    numberLabel.setBackground(palletTableColor);
+                    numberLabel.setForeground(dateFontColor);
+                    if (j == 0 || j == 6) {
+                    	numberLabel.setForeground(weekendFontColor);
+                    } else {
+                    	numberLabel.setForeground(dateFontColor);
+                    }
+                    daysLabels[i][j] = numberLabel;
+                    result.add(numberLabel);
+//                    actionCommandId++;
+                }
+            }
+
+            return result;
+        }
+
+        /** 得到DateChooserButton的当前text,本方法是为按钮事件匿名类准备的。 */
+        public String getTextOfDateChooserButton() {
+            return getText();
+        }
+
+        /** 恢复DateChooserButton的原始日期时间text,本方法是为按钮事件匿名类准备的。 */
+        public void restoreTheOriginalDate() {
+            String originalText = getOriginalText();
+            setText(originalText);
+        }
+
+        private JPanel createButtonBarPanel() {
+            JPanel panel = new JPanel();
+            panel.setLayout(new GridLayout(1, 2));
+
+            JButton ok = new JButton(Res.string().getConfirm());
+            ok.addActionListener(new ActionListener() {
+
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    //记忆原始日期时间
+                    initOriginalText(getTextOfDateChooserButton());
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+                }
+            });
+            panel.add(ok);
+
+            JButton cancel = new JButton(Res.string().getCancel());
+            cancel.addActionListener(new ActionListener() {
+
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    //恢复原始的日期时间
+                    restoreTheOriginalDate();     
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+                }
+            });
+
+            panel.add(cancel);
+            return panel;
+        }
+
+        private JDialog createDialog() {
+            JDialog result = new JDialog();
+            result.setTitle(Res.string().getDateChooser());
+            result.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+            result.getContentPane().add(this, BorderLayout.CENTER);
+            result.pack();
+            result.setSize(width, height);
+            result.setModal(true);  
+            
+            result.addWindowListener(new WindowAdapter() {
+    	    	public void windowClosing(WindowEvent e) {
+    	    	     //恢复原始的日期时间
+                    restoreTheOriginalDate();     
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+    	    	}
+            });
+            
+            return result;
+        }
+
+        void showDateChooser() {
+            if (dialog == null) {
+                dialog = createDialog();
+            }
+            dialog.setLocationRelativeTo(null);
+            flushWeekAndDay();
+            dialog.setVisible(true);
+        }
+
+        private Calendar getCalendar() {
+            Calendar result = Calendar.getInstance();
+            result.setTime(getDate());
+            return result;
+        }
+
+        private int getSelectedYear() {
+            return ((Integer) yearSpin.getValue()).intValue();
+        }
+
+        private int getSelectedMonth() {
+            return ((Integer) monthSpin.getValue()).intValue();
+        }
+
+        private int getSelectedHour() {
+            return ((Integer) hourSpin.getValue()).intValue();
+        }
+
+        private int getSelectedMinite() {
+            return ((Integer) minuteSpin.getValue()).intValue();
+        }
+
+        private int getSelectedSecond() {
+            return ((Integer) secondSpin.getValue()).intValue();
+        }
+
+        private void dayColorUpdate(boolean isOldDay) {
+            Calendar c = getCalendar();
+            int day = c.get(Calendar.DAY_OF_MONTH);
+            c.set(Calendar.DAY_OF_MONTH, 1);
+            int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK);
+            int i = actionCommandId / 7;
+            int j = actionCommandId % 7;
+            if (isOldDay) {
+            	daysLabels[i][j].setForeground(dateFontColor);
+            } else {
+            	daysLabels[i][j].setForeground(todayBackColor);
+            }
+        }
+
+        private void flushWeekAndDay() {     
+            Calendar c = getCalendar();
+            c.set(Calendar.DAY_OF_MONTH, 1);
+            int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
+            int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK);
+            for (int i = 0; i < 6; i++) {
+                for (int j = 0; j < 7; j++) {
+                    String s = "";
+                    if (dayNo >= 1 && dayNo <= maxDayNo) {
+                        s = String.valueOf(dayNo);
+                    }
+                    daysLabels[i][j].setText(s);
+                    dayNo++;
+                }
+            }
+
+            // 打开日历时,根据按钮的时间,设置日历的时间
+            String[] date1 = getText().split(" ")[0].split("-");
+            String[] date2 = getText().split(" ")[1].split(":");
+
+            yearSpin.setValue(new Integer(date1[0]));
+            monthSpin.setValue(new Integer(date1[1]));
+            daySpin.setValue(new Integer(date1[2]));
+            hourSpin.setValue(new Integer(date2[0]));
+            minuteSpin.setValue(new Integer(date2[1]));
+            secondSpin.setValue(new Integer(date2[2]));
+
+            // 重置日历天的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	for(int j = 0; j < 7; j++) {
+            		if(!daysLabels[i][j].getText().equals("")) {
+            			daysLabels[i][j].setForeground(Color.BLACK);
+            		}
+            	}
+            }
+            
+            // 重置日历星期六、星期日的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	if(!daysLabels[i][0].getText().equals("")) {
+            		daysLabels[i][0].setForeground(weekendFontColor);
+            	}
+            	if(!daysLabels[i][6].getText().equals("")) {
+            		daysLabels[i][6].setForeground(weekendFontColor);
+            	}
+            }
+            
+            // 设置当天的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	for(int j = 0; j < 7; j++) {
+            		if(daysLabels[i][j].getText().equals(date1[2])) {
+            			daysLabels[i][j].setForeground(todayBackColor);
+            		}
+            	}
+            }
+
+            dayColorUpdate(false);
+        }
+
+        /**
+         * 选择日期时的响应事件
+         */
+        @Override
+        public void stateChanged(ChangeEvent e) {
+            JSpinner source = (JSpinner) e.getSource();
+            Calendar c = getCalendar();
+            if (source.getName().equals("Hour")) {
+                c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
+                setDate(c.getTime());
+                return;
+            }
+            if (source.getName().equals("Minute")) {
+                c.set(Calendar.MINUTE, getSelectedMinite());
+                setDate(c.getTime());
+                return;
+            }
+            if (source.getName().equals("Second")) {
+                c.set(Calendar.SECOND, getSelectedSecond());
+                setDate(c.getTime());
+                return;
+            }
+
+            dayColorUpdate(true);
+
+            if (source.getName().equals("Year")) {
+                c.set(Calendar.YEAR, getSelectedYear());
+            } else if (source.getName().equals("Month")) {
+                c.set(Calendar.MONTH, getSelectedMonth() - 1);
+            }
+            setDate(c.getTime());
+            flushWeekAndDay();
+        }
+
+        /**
+         * 选择日期时的响应事件
+         */
+		@Override
+		public void mouseClicked(MouseEvent e) {
+            JLabel source = (JLabel) e.getSource();
+            if (source.getText().length() == 0) {
+                return;
+            }
+            dayColorUpdate(true);
+            source.setForeground(todayBackColor);
+            int newDay = Integer.parseInt(source.getText());
+            Calendar c = getCalendar();
+            c.set(Calendar.DAY_OF_MONTH, newDay);
+            setDate(c.getTime());
+            //把daySpin中的值也变了
+            daySpin.setValue(Integer.valueOf(newDay));
+		}
+
+		@Override
+		public void mouseEntered(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mouseExited(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mousePressed(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mouseReleased(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButtonEx.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButtonEx.java
new file mode 100644
index 0000000..e84c091
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DateChooserJButtonEx.java
@@ -0,0 +1,587 @@
+package com.netsdk.common;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.SwingConstants;
+import javax.swing.UIManager;
+import javax.swing.border.LineBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * 时间选择器, 年月日
+ */
+public class DateChooserJButtonEx extends JButton {
+	private static final long serialVersionUID = 1L;
+	
+    int startYear = 1980; // 默认【最小】显示年份
+    int lastYear = 2050; // 默认【最大】显示年份
+    
+    private DateChooser dateChooser = null;
+    private String preLabel = "";
+    private String originalText = null;
+    private SimpleDateFormat sdf = null;
+    
+    private JSpinner yearSpin;
+    private JSpinner monthSpin;
+    private JSpinner daySpin;
+    private JSpinner hourSpin;
+    private JSpinner minuteSpin;
+    private JSpinner secondSpin;
+    
+    public DateChooserJButtonEx() {
+        this(getNowDate());   
+        
+		try {
+	        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+	    } catch (Exception e) {
+	    	e.printStackTrace();
+	    } 
+    }
+
+    public DateChooserJButtonEx(String dateString) {
+        this();     
+    	
+        setText(getDefaultDateFormat(), dateString);
+        //保存原始是日期时间
+        initOriginalText(dateString);
+    }
+
+    public DateChooserJButtonEx(SimpleDateFormat df, String dateString) {
+        this();
+        setText(df, dateString);
+
+        //记忆当前的日期格式化器
+        this.sdf = df;
+
+        //记忆原始日期时间
+        Date originalDate = null;
+        try {
+            originalDate = df.parse(dateString);
+        } catch (ParseException ex) {
+            originalDate = getNowDate();
+        }
+        initOriginalText(originalDate);
+    }
+
+    public DateChooserJButtonEx(Date date) {
+        this("", date);
+        //记忆原始日期时间
+        initOriginalText(date);
+    }
+
+    public DateChooserJButtonEx(String preLabel, Date date) {
+        if (preLabel != null) {
+            this.preLabel = preLabel;
+        }
+        setDate(date);
+        //记忆原始是日期时间
+        initOriginalText(date);
+
+        setBorder(null);
+        setCursor(new Cursor(Cursor.HAND_CURSOR));
+        super.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                if (dateChooser == null) {
+                    dateChooser = new DateChooser();
+                }
+
+                dateChooser.showDateChooser();          
+            }
+        });
+    }
+    
+    public void setStartYear(int startYear) {
+        this.startYear = startYear;
+    }
+    
+    public void setLastYear(int lastYear) {
+        this.lastYear = lastYear;
+    }
+
+    private static Date getNowDate() {
+        return Calendar.getInstance().getTime();
+    }
+
+    private static SimpleDateFormat getDefaultDateFormat() {
+        return new SimpleDateFormat("yyyy-MM-dd");
+    }
+
+    /**
+     * 得到当前使用的日期格式化器
+     * @return 日期格式化器
+     */
+    public SimpleDateFormat getCurrentSimpleDateFormat(){
+        if(this.sdf != null){
+            return sdf;
+        }else{
+            return getDefaultDateFormat();
+        }
+    }
+
+
+    //保存原始是日期时间
+    private void initOriginalText(String dateString) {
+        this.originalText = dateString;
+    }
+
+    //保存原始是日期时间
+    private void initOriginalText(Date date) {
+        this.originalText = preLabel + getDefaultDateFormat().format(date);
+    }
+
+    /** 
+     * 得到当前记忆的原始日期时间
+     * @return 当前记忆的原始日期时间(未修改前的日期时间)
+     */
+    public String getOriginalText() {
+        return originalText;
+    }
+
+    // 覆盖父类的方法
+    @Override
+    public void setText(String s) {
+        Date date;
+        try {
+            date = getDefaultDateFormat().parse(s);
+        } catch (ParseException e) {
+            date = getNowDate();
+        }
+        setDate(date);
+        initOriginalText(date);
+    }
+
+    public void setText(SimpleDateFormat df, String s) {
+        Date date;
+        try {
+            date = df.parse(s);
+        } catch (ParseException e) {
+            date = getNowDate();
+        }
+        setDate(date);
+        initOriginalText(date);
+    }
+
+    public void setDate(Date date) {
+        super.setText(preLabel + getDefaultDateFormat().format(date));
+    }
+
+    public Date getDate() {
+        String dateString = getText().substring(preLabel.length());
+        try {
+            SimpleDateFormat currentSdf = getCurrentSimpleDateFormat();
+            return currentSdf.parse(dateString);
+        } catch (ParseException e) {
+            return getNowDate();
+        }
+    }
+
+    /**  
+     * 覆盖父类的方法使之无效
+     * @param listener 响应监听器
+     */
+    @Override
+    public void addActionListener(ActionListener listener) {
+    }
+
+    /**
+     * 内部类,主要是定义一个JPanel,然后把日历相关的所有内容填入本JPanel,
+     * 然后再创建一个JDialog,把本内部类定义的JPanel放入JDialog的内容区
+     */
+    private class DateChooser extends JPanel implements MouseListener, ChangeListener {
+    	private static final long serialVersionUID = 1L;
+    	
+        JLabel yearLabel;
+        JLabel monthLabel;
+        JLabel dayLabel;
+        
+        int width = 485; // 界面宽度
+        int height = 230; // 界面高度
+        Color backGroundColor = Color.gray; // 底色
+        // 月历表格配色----------------//
+        Color palletTableColor = Color.white; // 日历表底色
+        Color todayBackColor = Color.orange; // 今天背景色
+        Color weekFontColor = Color.blue; // 星期文字色
+        Color dateFontColor = Color.black; // 日期文字色
+        Color weekendFontColor = Color.red; // 周末文字色
+        // 控制条配色------------------//
+        Color controlLineColor = Color.pink; // 控制条底色
+        Color controlTextColor = Color.white; // 控制条标签文字色
+        
+        /** 点击DateChooserButton时弹出的对话框,日历内容在这个对话框内 */
+        JDialog dialog;
+        JLabel[][] daysLabels = new JLabel[6][7];
+
+        DateChooser() {
+            setLayout(new BorderLayout());
+            setBorder(new LineBorder(backGroundColor, 2));
+            setBackground(backGroundColor);
+
+            JPanel topYearAndMonth = createYearAndMonthPanal();
+            add(topYearAndMonth, BorderLayout.NORTH);
+            JPanel centerWeekAndDay = createWeekAndDayPanal();
+            add(centerWeekAndDay, BorderLayout.CENTER);
+            JPanel buttonBarPanel = createButtonBarPanel();
+            this.add(buttonBarPanel, BorderLayout.SOUTH);
+        }
+
+        private JPanel createYearAndMonthPanal() {
+            Calendar c = getCalendar();
+            int currentYear = c.get(Calendar.YEAR);
+            int currentMonth = c.get(Calendar.MONTH) + 1;
+            int currentDay = c.get(Calendar.DAY_OF_MONTH);
+
+            JPanel result = new JPanel();
+            result.setLayout(new FlowLayout());
+            result.setBackground(controlLineColor);
+
+            yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear, lastYear, 1));
+            yearSpin.setPreferredSize(new Dimension(48, 20));
+            yearSpin.setName("Year");
+            yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
+            yearSpin.addChangeListener(this);
+            result.add(yearSpin);
+
+            yearLabel = new JLabel(Res.string().getYear());
+            yearLabel.setForeground(controlTextColor);
+            result.add(yearLabel);
+
+            monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1));
+            monthSpin.setPreferredSize(new Dimension(35, 20));
+            monthSpin.setName("Month");
+            monthSpin.addChangeListener(this);
+            result.add(monthSpin);
+
+            monthLabel = new JLabel(Res.string().getMonth());
+            monthLabel.setForeground(controlTextColor);
+            result.add(monthLabel);
+
+            //如果这里要能够选择,会要判断很多东西,比如每个月分别由多少日,以及闰年问题.所以,就干脆把Enable设为false
+            daySpin = new JSpinner(new SpinnerNumberModel(currentDay, 1, 31, 1));
+            daySpin.setPreferredSize(new Dimension(35, 20));
+            daySpin.setName("Day");
+            daySpin.addChangeListener(this);
+            daySpin.setEnabled(false);
+            result.add(daySpin);
+
+            dayLabel = new JLabel(Res.string().getDay());
+            dayLabel.setForeground(controlTextColor);
+            result.add(dayLabel);      
+
+            return result;
+        }
+
+        private JPanel createWeekAndDayPanal() {
+        	Res.string().getWeek();
+            JPanel result = new JPanel();
+            // 设置固定字体,以免调用环境改变影响界面美观
+            result.setFont(new Font("宋体", Font.PLAIN, 12));
+            result.setLayout(new GridLayout(7, 7));
+            result.setBackground(Color.white);
+            JLabel cell;
+
+            for (int i = 0; i < 7; i++) {
+                cell = new JLabel(Res.string().getWeek()[i]);
+                cell.setHorizontalAlignment(JLabel.RIGHT);
+                if (i == 0 || i == 6) {
+                    cell.setForeground(weekendFontColor);
+                } else {
+                    cell.setForeground(weekFontColor);
+                }
+                result.add(cell);
+            }
+
+//            int actionCommandId = 0;
+            for (int i = 0; i < 6; i++) {
+                for (int j = 0; j < 7; j++) {
+                    JLabel numberLabel = new JLabel();
+                    numberLabel.setBorder(null);
+                    numberLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+//                    numberLabel.setActionCommand(String.valueOf(actionCommandId));
+                    numberLabel.addMouseListener(this);
+                    numberLabel.setBackground(palletTableColor);
+                    numberLabel.setForeground(dateFontColor);
+                    if (j == 0 || j == 6) {
+                    	numberLabel.setForeground(weekendFontColor);
+                    } else {
+                    	numberLabel.setForeground(dateFontColor);
+                    }
+                    daysLabels[i][j] = numberLabel;
+                    result.add(numberLabel);
+//                    actionCommandId++;
+                }
+            }
+
+            return result;
+        }
+
+        /** 得到DateChooserButton的当前text,本方法是为按钮事件匿名类准备的。 */
+        public String getTextOfDateChooserButton() {
+            return getText();
+        }
+
+        /** 恢复DateChooserButton的原始日期时间text,本方法是为按钮事件匿名类准备的。 */
+        public void restoreTheOriginalDate() {
+            String originalText = getOriginalText();
+            setText(originalText);
+        }
+
+        private JPanel createButtonBarPanel() {
+            JPanel panel = new JPanel();
+            panel.setLayout(new GridLayout(1, 2));
+
+            JButton ok = new JButton(Res.string().getConfirm());
+            ok.addActionListener(new ActionListener() {
+
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    //记忆原始日期时间
+                    initOriginalText(getTextOfDateChooserButton());
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+                }
+            });
+            panel.add(ok);
+
+            JButton cancel = new JButton(Res.string().getCancel());
+            cancel.addActionListener(new ActionListener() {
+
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    //恢复原始的日期时间
+                    restoreTheOriginalDate();     
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+                }
+            });
+
+            panel.add(cancel);
+            return panel;
+        }
+
+        private JDialog createDialog() {
+            JDialog result = new JDialog();
+            result.setTitle(Res.string().getDateChooser());
+            result.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+            result.getContentPane().add(this, BorderLayout.CENTER);
+            result.pack();
+            result.setSize(width, height);
+            result.setModal(true);  
+            
+            result.addWindowListener(new WindowAdapter() {
+    	    	public void windowClosing(WindowEvent e) {
+    	    	     //恢复原始的日期时间
+                    restoreTheOriginalDate();     
+                    //隐藏日历对话框
+                    dialog.setVisible(false);
+    	    	}
+            });
+            
+            return result;
+        }
+
+        void showDateChooser() {
+            if (dialog == null) {
+                dialog = createDialog();
+            }
+            dialog.setLocationRelativeTo(null);
+            flushWeekAndDay();
+            dialog.setVisible(true);
+        }
+
+        private Calendar getCalendar() {
+            Calendar result = Calendar.getInstance();
+            result.setTime(getDate());
+            return result;
+        }
+
+        private int getSelectedYear() {
+            return ((Integer) yearSpin.getValue()).intValue();
+        }
+
+        private int getSelectedMonth() {
+            return ((Integer) monthSpin.getValue()).intValue();
+        }
+
+        private int getSelectedHour() {
+            return ((Integer) hourSpin.getValue()).intValue();
+        }
+
+        private int getSelectedMinite() {
+            return ((Integer) minuteSpin.getValue()).intValue();
+        }
+
+        private int getSelectedSecond() {
+            return ((Integer) secondSpin.getValue()).intValue();
+        }
+
+        private void dayColorUpdate(boolean isOldDay) {
+            Calendar c = getCalendar();
+            int day = c.get(Calendar.DAY_OF_MONTH);
+            c.set(Calendar.DAY_OF_MONTH, 1);
+            int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK);
+            int i = actionCommandId / 7;
+            int j = actionCommandId % 7;
+            if (isOldDay) {
+            	daysLabels[i][j].setForeground(dateFontColor);
+            } else {
+            	daysLabels[i][j].setForeground(todayBackColor);
+            }
+        }
+
+        private void flushWeekAndDay() {     
+            Calendar c = getCalendar();
+            c.set(Calendar.DAY_OF_MONTH, 1);
+            int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
+            int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK);
+            for (int i = 0; i < 6; i++) {
+                for (int j = 0; j < 7; j++) {
+                    String s = "";
+                    if (dayNo >= 1 && dayNo <= maxDayNo) {
+                        s = String.valueOf(dayNo);
+                    }
+                    daysLabels[i][j].setText(s);
+                    dayNo++;
+                }
+            }
+
+            // 打开日历时,根据按钮的时间,设置日历的时间
+            String[] date1 = getText().split(" ")[0].split("-");
+
+            yearSpin.setValue(new Integer(date1[0]));
+            monthSpin.setValue(new Integer(date1[1]));
+            daySpin.setValue(new Integer(date1[2]));
+
+            // 重置日历天的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	for(int j = 0; j < 7; j++) {
+            		if(!daysLabels[i][j].getText().equals("")) {
+            			daysLabels[i][j].setForeground(Color.BLACK);
+            		}
+            	}
+            }
+            
+            // 重置日历星期六、星期日的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	if(!daysLabels[i][0].getText().equals("")) {
+            		daysLabels[i][0].setForeground(weekendFontColor);
+            	}
+            	if(!daysLabels[i][6].getText().equals("")) {
+            		daysLabels[i][6].setForeground(weekendFontColor);
+            	}
+            }
+            
+            // 设置当天的数字颜色
+            for(int i = 0; i < 6; i++) {
+            	for(int j = 0; j < 7; j++) {
+            		if(daysLabels[i][j].getText().equals(date1[2])) {
+            			daysLabels[i][j].setForeground(todayBackColor);
+            		}
+            	}
+            }
+
+            dayColorUpdate(false);
+        }
+
+        /**
+         * 选择日期时的响应事件
+         */
+        @Override
+        public void stateChanged(ChangeEvent e) {
+            JSpinner source = (JSpinner) e.getSource();
+            Calendar c = getCalendar();
+            if (source.getName().equals("Hour")) {
+                c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
+                setDate(c.getTime());
+                return;
+            }
+            if (source.getName().equals("Minute")) {
+                c.set(Calendar.MINUTE, getSelectedMinite());
+                setDate(c.getTime());
+                return;
+            }
+            if (source.getName().equals("Second")) {
+                c.set(Calendar.SECOND, getSelectedSecond());
+                setDate(c.getTime());
+                return;
+            }
+
+            dayColorUpdate(true);
+
+            if (source.getName().equals("Year")) {
+                c.set(Calendar.YEAR, getSelectedYear());
+            } else if (source.getName().equals("Month")) {
+                c.set(Calendar.MONTH, getSelectedMonth() - 1);
+            }
+            setDate(c.getTime());
+            flushWeekAndDay();
+        }
+
+        /**
+         * 选择日期时的响应事件
+         */
+		@Override
+		public void mouseClicked(MouseEvent e) {
+            JLabel source = (JLabel) e.getSource();
+            if (source.getText().length() == 0) {
+                return;
+            }
+            dayColorUpdate(true);
+            source.setForeground(todayBackColor);
+            int newDay = Integer.parseInt(source.getText());
+            Calendar c = getCalendar();
+            c.set(Calendar.DAY_OF_MONTH, newDay);
+            setDate(c.getTime());
+            //把daySpin中的值也变了
+            daySpin.setValue(Integer.valueOf(newDay));
+		}
+
+		@Override
+		public void mouseEntered(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mouseExited(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mousePressed(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		@Override
+		public void mouseReleased(MouseEvent arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DeviceManagerListener.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DeviceManagerListener.java
new file mode 100644
index 0000000..a10343c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/DeviceManagerListener.java
@@ -0,0 +1,5 @@
+package com.netsdk.common;
+
+public interface DeviceManagerListener {
+	void onDeviceManager(String deviceId, String username, String password);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ErrorCode.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ErrorCode.java
new file mode 100644
index 0000000..28f41b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ErrorCode.java
@@ -0,0 +1,872 @@
+package com.netsdk.common;
+
+import com.netsdk.lib.LastError;
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 登录设备设备错误状态
+ */
+public class ErrorCode {
+
+	/**
+	 * 登录设备设备错误状态中英文
+	 * @param err 接口CLIENT_GetLastError返回, error code: (0x80000000|" + (LoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff) +")
+	 * @return
+	 */
+	public static String getErrorCode(int err) {
+		String msg = "";
+		switch(err) {
+		case LastError.NET_NOERROR:  // 0  没有错误
+			msg = Res.string().getBundle().getString("NET_ERROR"); 
+			break;
+		case LastError.NET_ERROR:  // -1  未知错误
+			msg = Res.string().getBundle().getString("NET_ERROR"); 
+			break;
+		case LastError.NET_SYSTEM_ERROR: // (0x80000000|1) Windows系统出错
+			msg = Res.string().getBundle().getString("NET_SYSTEM_ERROR"); 
+			break;
+		case LastError.NET_NETWORK_ERROR: // (0x80000000|2) 网络错误,可能是因为网络超时
+			msg = Res.string().getBundle().getString("NET_NETWORK_ERROR"); 
+			break;
+		case LastError.NET_DEV_VER_NOMATCH: // (0x80000000|3) 设备协议不匹配
+			msg = Res.string().getBundle().getString("NET_DEV_VER_NOMATCH"); 
+			break;
+		case LastError.NET_INVALID_HANDLE: // (0x80000000|4) 句柄无效
+			msg = Res.string().getBundle().getString("NET_INVALID_HANDLE"); 
+			break;
+		case LastError.NET_OPEN_CHANNEL_ERROR: // (0x80000000|5) 打开通道失败
+			msg = Res.string().getBundle().getString("NET_OPEN_CHANNEL_ERROR"); 
+			break;
+		case LastError.NET_CLOSE_CHANNEL_ERROR: // (0x80000000|6) 关闭通道失败
+			msg = Res.string().getBundle().getString("NET_CLOSE_CHANNEL_ERROR"); 
+			break;
+		case LastError.NET_ILLEGAL_PARAM: // (0x80000000|7) 用户参数不合法
+			msg = Res.string().getBundle().getString("NET_ILLEGAL_PARAM"); 
+			break;
+		case LastError.NET_SDK_INIT_ERROR: // (0x80000000|8) SDK初始化出错
+			msg = Res.string().getBundle().getString("NET_SDK_INIT_ERROR"); 
+			break;
+		case LastError.NET_SDK_UNINIT_ERROR: // (0x80000000|9) SDK清理出错
+			msg = Res.string().getBundle().getString("NET_SDK_UNINIT_ERROR"); 
+			break;
+		case LastError.NET_RENDER_OPEN_ERROR: // (0x80000000|10) 申请render资源出错
+			msg = Res.string().getBundle().getString("NET_RENDER_OPEN_ERROR"); 
+			break;
+		case LastError.NET_DEC_OPEN_ERROR: // (0x80000000|11) 打开解码库出错
+			msg = Res.string().getBundle().getString("NET_DEC_OPEN_ERROR"); 
+			break;
+		case LastError.NET_DEC_CLOSE_ERROR: // (0x80000000|12) 关闭解码库出错
+			msg = Res.string().getBundle().getString("NET_DEC_CLOSE_ERROR"); 
+			break;
+		case LastError.NET_MULTIPLAY_NOCHANNEL: // (0x80000000|13) 多画面预览中检测到通道数为0
+			msg = Res.string().getBundle().getString("NET_MULTIPLAY_NOCHANNEL"); 
+			break;
+		case LastError.NET_TALK_INIT_ERROR: // (0x80000000|14) 录音库初始化失败
+			msg = Res.string().getBundle().getString("NET_TALK_INIT_ERROR"); 
+			break; 
+		case LastError.NET_TALK_NOT_INIT:  // (0x80000000|15) 录音库未经初始化
+			msg = Res.string().getBundle().getString("NET_TALK_NOT_INIT"); 
+			break;
+		case LastError.NET_TALK_SENDDATA_ERROR: // (0x80000000|16) 发送音频数据出错
+			msg = Res.string().getBundle().getString("NET_TALK_SENDDATA_ERROR"); 
+			break;
+		case LastError.NET_REAL_ALREADY_SAVING: // (0x80000000|17) 实时数据已经处于保存状态
+			msg = Res.string().getBundle().getString("NET_REAL_ALREADY_SAVING"); 
+			break;
+		case LastError.NET_NOT_SAVING: // (0x80000000|18) 未保存实时数据
+			msg = Res.string().getBundle().getString("NET_NOT_SAVING"); 
+			break;
+		case LastError.NET_OPEN_FILE_ERROR: // (0x80000000|19) 打开文件出错
+			msg = Res.string().getBundle().getString("NET_OPEN_FILE_ERROR"); 
+			break;
+		case LastError.NET_PTZ_SET_TIMER_ERROR: // (0x80000000|20) 启动云台控制定时器失败
+			msg = Res.string().getBundle().getString("NET_PTZ_SET_TIMER_ERROR"); 
+			break;
+		case LastError.NET_RETURN_DATA_ERROR: // (0x80000000|21) 对返回数据的校验出错
+			msg = Res.string().getBundle().getString("NET_RETURN_DATA_ERROR"); 
+			break;
+		case LastError.NET_INSUFFICIENT_BUFFER: // (0x80000000|22) 没有足够的缓存
+			msg = Res.string().getBundle().getString("NET_INSUFFICIENT_BUFFER"); 
+			break;
+		case LastError.NET_NOT_SUPPORTED: // (0x80000000|23) 当前SDK未支持该功能
+			msg = Res.string().getBundle().getString("NET_NOT_SUPPORTED"); 
+			break;
+		case LastError.NET_NO_RECORD_FOUND: // (0x80000000|24) 查询不到录像
+			msg = Res.string().getBundle().getString("NET_NO_RECORD_FOUND"); 
+			break;
+		case LastError.NET_NOT_AUTHORIZED: // (0x80000000|25) 无操作权限
+			msg = Res.string().getBundle().getString("NET_NOT_AUTHORIZED"); 
+			break;
+		case LastError.NET_NOT_NOW: // (0x80000000|26) 暂时无法执行
+			msg = Res.string().getBundle().getString("NET_NOT_NOW"); 
+			break;
+		case LastError.NET_NO_TALK_CHANNEL: // (0x80000000|27) 未发现对讲通道
+			msg = Res.string().getBundle().getString("NET_NO_TALK_CHANNEL"); 
+			break;
+		case LastError.NET_NO_AUDIO: // (0x80000000|28) 未发现音频
+			msg = Res.string().getBundle().getString("NET_NO_AUDIO"); 
+			break;
+		case LastError.NET_NO_INIT: // (0x80000000|29) 网络SDK未经初始化
+			msg = Res.string().getBundle().getString("NET_NO_INIT"); 
+			break;
+		case LastError.NET_DOWNLOAD_END: // (0x80000000|30) 下载已结束
+			msg = Res.string().getBundle().getString("NET_DOWNLOAD_END"); 
+			break;
+		case LastError.NET_EMPTY_LIST: // (0x80000000|31) 查询结果为空
+			msg = Res.string().getBundle().getString("NET_EMPTY_LIST"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SYSATTR: // (0x80000000|32) 获取系统属性配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SYSATTR"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SERIAL: // (0x80000000|33) 获取序列号失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SERIAL"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_GENERAL: // (0x80000000|34) 获取常规属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_GENERAL"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_DSPCAP: // (0x80000000|35) 获取DSP能力描述失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DSPCAP"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_NETCFG: // (0x80000000|36) 获取网络配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_NETCFG"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_CHANNAME: // (0x80000000|37) 获取通道名称失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_CHANNAME"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_VIDEO: // (0x80000000|38) 获取视频属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEO"); 
+			break; 
+		case LastError.NET_ERROR_GETCFG_RECORD: // (0x80000000|39) 获取录象配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_RECORD"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_PRONAME: // (0x80000000|40) 获取解码器协议名称失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_PRONAME"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_FUNCNAME: // (0x80000000|41)  获取232串口功能名称失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_FUNCNAME"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_485DECODER: // (0x80000000|42) 获取解码器属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_485DECODER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_232COM:   // (0x80000000|43) 获取232串口配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_232COM"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_ALARMIN:  // (0x80000000|44) 获取外部报警输入配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ALARMIN"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_ALARMDET: // (0x80000000|45) 获取动态检测报警失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ALARMDET"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SYSTIME: // (0x80000000|46) 获取设备时间失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SYSTIME"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_PREVIEW: // (0x80000000|47) 获取预览参数失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_PREVIEW"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_AUTOMT: // (0x80000000|48) 获取自动维护配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_AUTOMT"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_VIDEOMTRX: // (0x80000000|49) 获取视频矩阵配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEOMTRX"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_COVER:  // (0x80000000|50) 获取区域遮挡配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_COVER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_WATERMAKE: // (0x80000000|51) 获取图象水印配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WATERMAKE"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_MULTICAST: // (0x80000000|52) 获取配置失败位置:组播端口按通道配置
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MULTICAST"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_GENERAL:  // (0x80000000|55) 修改常规属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_GENERAL"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_NETCFG:  // (0x80000000|56) 改网络配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_NETCFG"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_CHANNAME: // (0x80000000|57) 修改通道名称失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_CHANNAME"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_VIDEO:  // (0x80000000|58) 修改视频属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEO"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_RECORD: // (0x80000000|59) 修改录象配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_RECORD"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_485DECODER: // (0x80000000|60) 修改解码器属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_485DECODER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_232COM:  // (0x80000000|61) 修改232串口配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_232COM"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_ALARMIN: // (0x80000000|62) 修改外部输入报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ALARMIN"); 
+			break; 
+		case LastError.NET_ERROR_SETCFG_ALARMDET: // (0x80000000|63)  修改动态检测报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ALARMDET"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_SYSTIME: // (0x80000000|64) 修改设备时间失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SYSTIME"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_PREVIEW: // (0x80000000|65) 修改预览参数失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_PREVIEW"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_AUTOMT: // (0x80000000|66) 修改自动维护配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_AUTOMT"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_VIDEOMTRX: // (0x80000000|67) 修改视频矩阵配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEOMTRX"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_COVER:  // (0x80000000|68) 修改区域遮挡配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_COVER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_WATERMAKE: // (0x80000000|69) 修改图象水印配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WATERMAKE"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_WLAN:  // (0x80000000|70) 修改无线网络信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WLAN"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_WLANDEV: // (0x80000000|71) 选择无线网络设备失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_WLANDEV"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_REGISTER: // (0x80000000|72) 修改主动注册参数配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_REGISTER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_CAMERA:  // (0x80000000|73) 修改摄像头属性配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_CAMERA"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_INFRARED: // (0x80000000|74)  修改红外报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_INFRARED"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_SOUNDALARM: // (0x80000000|75) 修改音频报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SOUNDALARM"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_STORAGE:  // (0x80000000|76) 修改存储位置配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_STORAGE"); 
+			break;
+		case LastError.NET_AUDIOENCODE_NOTINIT:  // (0x80000000|77) 音频编码接口没有成功初始化
+			msg = Res.string().getBundle().getString("NET_AUDIOENCODE_NOTINIT"); 
+			break;
+		case LastError.NET_DATA_TOOLONGH:  // (0x80000000|78) 数据过长
+			msg = Res.string().getBundle().getString("NET_DATA_TOOLONGH"); 
+			break;
+		case LastError.NET_UNSUPPORTED:  // (0x80000000|79) 备不支持该操作
+			msg = Res.string().getBundle().getString("NET_UNSUPPORTED"); 
+			break;
+		case LastError.NET_DEVICE_BUSY:  // (0x80000000|80) 设备资源不足
+			msg = Res.string().getBundle().getString("NET_DEVICE_BUSY"); 
+			break;
+		case LastError.NET_SERVER_STARTED: // (0x80000000|81) 服务器已经启动
+			msg = Res.string().getBundle().getString("NET_SERVER_STARTED"); 
+			break;
+		case LastError.NET_SERVER_STOPPED: // (0x80000000|82) 服务器尚未成功启动
+			msg = Res.string().getBundle().getString("NET_SERVER_STOPPED"); 
+			break;
+		case LastError.NET_LISTER_INCORRECT_SERIAL: // (0x80000000|83) 输入序列号有误
+			msg = Res.string().getBundle().getString("NET_LISTER_INCORRECT_SERIAL"); 
+			break;
+		case LastError.NET_QUERY_DISKINFO_FAILED:  // (0x80000000|84) 获取硬盘信息失败
+			msg = Res.string().getBundle().getString("NET_QUERY_DISKINFO_FAILED"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SESSION:  // (0x80000000|85) 获取连接Session信息
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SESSION"); 
+			break;
+		case LastError.NET_USER_FLASEPWD_TRYTIME: // (0x80000000|86) 输入密码错误超过限制次数
+			msg = Res.string().getBundle().getString("NET_USER_FLASEPWD_TRYTIME"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_PASSWORD:  // (0x80000000|100) 密码不正确
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_PASSWORD"); 
+			break; 
+		case LastError.NET_LOGIN_ERROR_USER:  // (0x80000000|101) 帐户不存在
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_USER"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_TIMEOUT:  // (0x80000000|102) 等待登录返回超时
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_TIMEOUT"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_RELOGGIN: // (0x80000000|103) 帐号已登录
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_RELOGGIN"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_LOCKED:  // (0x80000000|104) 帐号已被锁定
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_LOCKED"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_BLACKLIST: // (0x80000000|105) 帐号已被列为禁止名单
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_BLACKLIST"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_BUSY:  // (0x80000000|106) 资源不足,系统忙
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_BUSY"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_CONNECT:  // (0x80000000|107) 登录设备超时,请检查网络并重试
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_CONNECT"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_NETWORK: // (0x80000000|108)  网络连接失败
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_NETWORK"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_SUBCONNECT: // (0x80000000|109) 登录设备成功,但无法创建视频通道,请检查网
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_SUBCONNECT"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_MAXCONNECT:  // (0x80000000|110) 超过最大连接数
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_MAXCONNECT"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_PROTOCOL3_ONLY: // (0x80000000|111) 只支持3代协议
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_PROTOCOL3_ONLY"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_UKEY_LOST:  // (0x80000000|112) 插入U盾或U盾信息错误
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_UKEY_LOST"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_NO_AUTHORIZED: // (0x80000000|113) 客户端IP地址没有登录权限
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_NO_AUTHORIZED"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_USER_OR_PASSOWRD:  // (0x80000000|117) 账号或密码错误 
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_USER_OR_PASSOWRD"); 
+			break;
+		case LastError.NET_LOGIN_ERROR_DEVICE_NOT_INIT:  // (0x80000000|118) 设备尚未初始化,不能登录,请先初始化设备
+			msg = Res.string().getBundle().getString("NET_LOGIN_ERROR_DEVICE_NOT_INIT"); 
+			break;
+		case LastError.NET_RENDER_SOUND_ON_ERROR:  // (0x80000000|120) Render库打开音频出错
+			msg = Res.string().getBundle().getString("NET_RENDER_SOUND_ON_ERROR"); 
+			break;
+		case LastError.NET_RENDER_SOUND_OFF_ERROR: // (0x80000000|121) Render库关闭音频出错
+			msg = Res.string().getBundle().getString("NET_RENDER_SOUND_OFF_ERROR"); 
+			break;
+		case LastError.NET_RENDER_SET_VOLUME_ERROR: // (0x80000000|122) Render库控制音量出错
+			msg = Res.string().getBundle().getString("NET_RENDER_SET_VOLUME_ERROR"); 
+			break;
+		case LastError.NET_RENDER_ADJUST_ERROR:  // (0x80000000|123) Render库设置画面参数出错
+			msg = Res.string().getBundle().getString("NET_RENDER_ADJUST_ERROR"); 
+			break;
+		case LastError.NET_RENDER_PAUSE_ERROR: // (0x80000000|124) Render库暂停播放出错
+			msg = Res.string().getBundle().getString("NET_RENDER_PAUSE_ERROR"); 
+			break;
+		case LastError.NET_RENDER_SNAP_ERROR:  // (0x80000000|125) Render库抓图出错
+			msg = Res.string().getBundle().getString("NET_RENDER_SNAP_ERROR"); 
+			break;
+		case LastError.NET_RENDER_STEP_ERROR:  // (0x80000000|126) Render库步进出错
+			msg = Res.string().getBundle().getString("NET_RENDER_STEP_ERROR"); 
+			break;
+		case LastError.NET_RENDER_FRAMERATE_ERROR:  // (0x80000000|127) Render库设置帧率出错
+			msg = Res.string().getBundle().getString("NET_RENDER_FRAMERATE_ERROR"); 
+			break;
+		case LastError.NET_RENDER_DISPLAYREGION_ERROR: // (0x80000000|128) Render库设置显示区域出错
+			msg = Res.string().getBundle().getString("NET_RENDER_DISPLAYREGION_ERROR"); 
+			break;
+		case LastError.NET_RENDER_GETOSDTIME_ERROR: // (0x80000000|129) Render库获取当前播放时间出错
+			msg = Res.string().getBundle().getString("NET_RENDER_GETOSDTIME_ERROR"); 
+			break;
+		case LastError.NET_GROUP_EXIST: // (0x80000000|140) 组名已存在
+			msg = Res.string().getBundle().getString("NET_GROUP_EXIST"); 
+			break;
+		case LastError.NET_GROUP_NOEXIST: // (0x80000000|141) 组名不存在
+			msg = Res.string().getBundle().getString("NET_GROUP_NOEXIST"); 
+			break;
+		case LastError.NET_GROUP_RIGHTOVER: // (0x80000000|142) 组的权限超出权限列表范围
+			msg = Res.string().getBundle().getString("NET_GROUP_RIGHTOVER"); 
+			break;
+		case LastError.NET_GROUP_HAVEUSER: // (0x80000000|143) 组下有用户,不能删除
+			msg = Res.string().getBundle().getString("NET_GROUP_HAVEUSER"); 
+			break;
+		case LastError.NET_GROUP_RIGHTUSE: // (0x80000000|144) 组的某个权限被用户使用,不能出除
+			msg = Res.string().getBundle().getString("NET_GROUP_RIGHTUSE"); 
+			break;
+		case LastError.NET_GROUP_SAMENAME: // (0x80000000|145) 新组名同已有组名重复
+			msg = Res.string().getBundle().getString("NET_GROUP_SAMENAME"); 
+			break; 
+		case LastError.NET_USER_EXIST:  // (0x80000000|146) 用户已存在
+			msg = Res.string().getBundle().getString("NET_USER_EXIST"); 
+			break;
+		case LastError.NET_USER_NOEXIST: // (0x80000000|147) 用户不存在
+			msg = Res.string().getBundle().getString("NET_USER_NOEXIST"); 
+			break; 
+		case LastError.NET_USER_RIGHTOVER: // (0x80000000|148) 用户权限超出组权限
+			msg = Res.string().getBundle().getString("NET_USER_RIGHTOVER"); 
+			break;
+		case LastError.NET_USER_PWD: // (0x80000000|149) 保留帐号,不容许修改密码
+			msg = Res.string().getBundle().getString("NET_USER_PWD"); 
+			break;
+		case LastError.NET_USER_FLASEPWD: // (0x80000000|150) 密码不正确
+			msg = Res.string().getBundle().getString("NET_USER_FLASEPWD"); 
+			break;
+		case LastError.NET_USER_NOMATCHING: // (0x80000000|151)  密码不匹配
+			msg = Res.string().getBundle().getString("NET_USER_NOMATCHING"); 
+			break;
+		case LastError.NET_USER_INUSE: // (0x80000000|152)  账号正在使用中
+			msg = Res.string().getBundle().getString("NET_USER_INUSE"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_ETHERNET: // (0x80000000|300) 获取网卡配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_ETHERNET"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_WLAN: // (0x80000000|301) 获取无线网络信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WLAN"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_WLANDEV:  // (0x80000000|302) 获取无线网络设备失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_WLANDEV"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_REGISTER: // (0x80000000|303) 获取主动注册参数失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_REGISTER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_CAMERA: // (0x80000000|304) 获取摄像头属性失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_CAMERA"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_INFRARED: // (0x80000000|305) 获取红外报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_INFRARED"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SOUNDALARM: // (0x80000000|306)  获取音频报警配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SOUNDALARM"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_STORAGE:  // (0x80000000|307)  获取存储位置配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_STORAGE"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_MAIL:  // (0x80000000|308) 获取邮件配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MAIL"); 
+			break;
+		case LastError.NET_CONFIG_DEVBUSY: // (0x80000000|309) 暂时无法设置
+			msg = Res.string().getBundle().getString("NET_CONFIG_DEVBUSY"); 
+			break;
+		case LastError.NET_CONFIG_DATAILLEGAL: // (0x80000000|310) 配置数据不合法
+			msg = Res.string().getBundle().getString("NET_CONFIG_DATAILLEGAL"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_DST: // (0x80000000|311) 获取夏令时配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DST"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_DST: // (0x80000000|312) 设置夏令时配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_DST"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_VIDEO_OSD: // (0x80000000|313) 获取视频OSD叠加配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEO_OSD"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_VIDEO_OSD:  // (0x80000000|314) 设置视频OSD叠加配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEO_OSD"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_GPRSCDMA:  // (0x80000000|315) 获取CDMA\GPRS网络配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_GPRSCDMA"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_GPRSCDMA: // (0x80000000|316) 设置CDMA\GPRS网络配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_GPRSCDMA"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_IPFILTER: // (0x80000000|317) 获取IP过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_IPFILTER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_IPFILTER: // (0x80000000|318) 设置IP过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_IPFILTER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_TALKENCODE: // (0x80000000|319) 获取语音对讲编码配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_TALKENCODE"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_TALKENCODE: // (0x80000000|320) 设置语音对讲编码配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_TALKENCODE"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_RECORDLEN: // (0x80000000|321) 获取录像打包长度配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_RECORDLEN"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_RECORDLEN: // (0x80000000|322) 设置录像打包长度配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_RECORDLEN"); 
+			break;
+		case LastError.NET_DONT_SUPPORT_SUBAREA: // (0x80000000|323) 不支持网络硬盘分区
+			msg = Res.string().getBundle().getString("NET_DONT_SUPPORT_SUBAREA"); 
+			break;
+		case LastError.NET_ERROR_GET_AUTOREGSERVER: // (0x80000000|324) 获取设备上主动注册服务器信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_AUTOREGSERVER"); 
+			break;
+		case LastError.NET_ERROR_CONTROL_AUTOREGISTER: // (0x80000000|325) 主动注册重定向注册错误
+			msg = Res.string().getBundle().getString("NET_ERROR_CONTROL_AUTOREGISTER"); 
+			break;
+		case LastError.NET_ERROR_DISCONNECT_AUTOREGISTER: // (0x80000000|326) 断开主动注册服务器错误
+			msg = Res.string().getBundle().getString("NET_ERROR_DISCONNECT_AUTOREGISTER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_MMS: // (0x80000000|327) 获取mms配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MMS"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_MMS: // (0x80000000|328) 设置mms配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_MMS"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_SMSACTIVATION: // (0x80000000|329) 获取短信激活无线连接配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_SMSACTIVATION"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_SMSACTIVATION: // (0x80000000|330) 设置短信激活无线连接配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_SMSACTIVATION"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_DIALINACTIVATION: // (0x80000000|331) 获取拨号激活无线连接配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_DIALINACTIVATION"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_DIALINACTIVATION: // (0x80000000|332) 设置拨号激活无线连接配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_DIALINACTIVATION"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_VIDEOOUT: // (0x80000000|333) 查询视频输出参数配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_VIDEOOUT"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_VIDEOOUT: // (0x80000000|334) 设置视频输出参数配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_VIDEOOUT"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_OSDENABLE: // (0x80000000|335) 获取osd叠加使能配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_OSDENABLE"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_OSDENABLE: // (0x80000000|336) 设置osd叠加使能配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_OSDENABLE"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_ENCODERINFO: // (0x80000000|337) 设置数字通道前端编码接入配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_ENCODERINFO"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_TVADJUST: // (0x80000000|338) 获取TV调节配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_TVADJUST"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_TVADJUST: // (0x80000000|339) 设置TV调节配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_TVADJUST"); 
+			break;
+		case LastError.NET_ERROR_CONNECT_FAILED: // (0x80000000|340) 请求建立连接失败
+			msg = Res.string().getBundle().getString("NET_ERROR_CONNECT_FAILED"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_BURNFILE: // (0x80000000|341) 请求刻录文件上传失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_BURNFILE"); 
+			break;
+		case LastError.NET_ERROR_SNIFFER_GETCFG: // (0x80000000|342) 获取抓包配置信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SNIFFER_GETCFG"); 
+			break;
+		case LastError.NET_ERROR_SNIFFER_SETCFG: // (0x80000000|343) 设置抓包配置信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SNIFFER_SETCFG"); 
+			break;
+		case LastError.NET_ERROR_DOWNLOADRATE_GETCFG: // (0x80000000|344) 查询下载限制信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_DOWNLOADRATE_GETCFG"); 
+			break;
+		case LastError.NET_ERROR_DOWNLOADRATE_SETCFG: // (0x80000000|345) 设置下载限制信息失败
+			msg = Res.string().getBundle().getString("NET_ERROR_DOWNLOADRATE_SETCFG"); 
+			break;
+		case LastError.NET_ERROR_SEARCH_TRANSCOM:  // (0x80000000|346) 查询串口参数失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SEARCH_TRANSCOM"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_POINT: // (0x80000000|347) 获取预制点信息错误
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_POINT"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_POINT: // (0x80000000|348) 设置预制点信息错误
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_POINT"); 
+			break;
+		case LastError.NET_SDK_LOGOUT_ERROR:  // (0x80000000|349) SDK没有正常登出设备
+			msg = Res.string().getBundle().getString("NET_SDK_LOGOUT_ERROR"); 
+			break;
+		case LastError.NET_ERROR_GET_VEHICLE_CFG: // (0x80000000|350) 获取车载配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_VEHICLE_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_VEHICLE_CFG: // (0x80000000|351) 设置车载配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_VEHICLE_CFG"); 
+			break;
+		case LastError.NET_ERROR_GET_ATM_OVERLAY_CFG: // (0x80000000|352) 获取atm叠加配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_ATM_OVERLAY_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_ATM_OVERLAY_CFG: // (0x80000000|353) 设置atm叠加配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_ATM_OVERLAY_CFG"); 
+			break;
+		case LastError.NET_ERROR_GET_ATM_OVERLAY_ABILITY: // (0x80000000|354) 获取atm叠加能力失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_ATM_OVERLAY_ABILITY"); 
+			break;
+		case LastError.NET_ERROR_GET_DECODER_TOUR_CFG: // (0x80000000|355) 获取解码器解码轮巡配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_DECODER_TOUR_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_DECODER_TOUR_CFG: // (0x80000000|356) 设置解码器解码轮巡配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_DECODER_TOUR_CFG"); 
+			break;
+		case LastError.NET_ERROR_CTRL_DECODER_TOUR: // (0x80000000|357) 控制解码器解码轮巡失败
+			msg = Res.string().getBundle().getString("NET_ERROR_CTRL_DECODER_TOUR"); 
+			break;
+		case LastError.NET_GROUP_OVERSUPPORTNUM:  // (0x80000000|358) 超出设备支持最大用户组数目
+			msg = Res.string().getBundle().getString("NET_GROUP_OVERSUPPORTNUM"); 
+			break;
+		case LastError.NET_USER_OVERSUPPORTNUM: // (0x80000000|359) 超出设备支持最大用户数目
+			msg = Res.string().getBundle().getString("NET_USER_OVERSUPPORTNUM"); 
+			break;
+		case LastError.NET_ERROR_GET_SIP_CFG:  // (0x80000000|368) 获取SIP配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_SIP_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_SIP_CFG:  // (0x80000000|369) 设置SIP配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_SIP_CFG"); 
+			break;
+		case LastError.NET_ERROR_GET_SIP_ABILITY: // (0x80000000|370) 获取SIP能力失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_SIP_ABILITY"); 
+			break;
+		case LastError.NET_ERROR_GET_WIFI_AP_CFG: // (0x80000000|371) 获取WIFI ap配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_WIFI_AP_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_WIFI_AP_CFG: // (0x80000000|372) 设置WIFI ap配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_WIFI_AP_CFG"); 
+			break;
+		case LastError.NET_ERROR_GET_DECODE_POLICY: // (0x80000000|373) 获取解码策略配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_DECODE_POLICY"); 
+			break;
+		case LastError.NET_ERROR_SET_DECODE_POLICY: // (0x80000000|374) 设置解码策略配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_DECODE_POLICY"); 
+			break;
+		case LastError.NET_ERROR_TALK_REJECT: // (0x80000000|375) 拒绝对讲
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_REJECT"); 
+			break;
+		case LastError.NET_ERROR_TALK_OPENED: // (0x80000000|376) 对讲被其他客户端打开
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_OPENED"); 
+			break;
+		case LastError.NET_ERROR_TALK_RESOURCE_CONFLICIT: // (0x80000000|377) 资源冲突
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_RESOURCE_CONFLICIT"); 
+			break;
+		case LastError.NET_ERROR_TALK_UNSUPPORTED_ENCODE: // (0x80000000|378) 不支持的语音编码格式
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_UNSUPPORTED_ENCODE"); 
+			break;
+		case LastError.NET_ERROR_TALK_RIGHTLESS:  // (0x80000000|379) 无权限
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_RIGHTLESS"); 
+			break;
+		case LastError.NET_ERROR_TALK_FAILED:  // (0x80000000|380) 请求对讲失败
+			msg = Res.string().getBundle().getString("NET_ERROR_TALK_FAILED"); 
+			break;
+		case LastError.NET_ERROR_GET_MACHINE_CFG: // (0x80000000|381) 获取机器相关配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_MACHINE_CFG"); 
+			break;
+		case LastError.NET_ERROR_SET_MACHINE_CFG: // (0x80000000|382) 设置机器相关配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_MACHINE_CFG"); 
+			break;
+		case LastError.NET_ERROR_GET_DATA_FAILED: // (0x80000000|383) 设备无法获取当前请求数据
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_DATA_FAILED"); 
+			break;
+		case LastError.NET_ERROR_MAC_VALIDATE_FAILED: // (0x80000000|384) MAC地址验证失败
+			msg = Res.string().getBundle().getString("NET_ERROR_MAC_VALIDATE_FAILED"); 
+			break;
+		case LastError.NET_ERROR_GET_INSTANCE:  // (0x80000000|385) 获取服务器实例失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_INSTANCE"); 
+			break;
+		case LastError.NET_ERROR_JSON_REQUEST: // (0x80000000|386) 生成的json字符串错误
+			msg = Res.string().getBundle().getString("NET_ERROR_JSON_REQUEST"); 
+			break;
+		case LastError.NET_ERROR_JSON_RESPONSE: // (0x80000000|387) 响应的json字符串错误
+			msg = Res.string().getBundle().getString("NET_ERROR_JSON_RESPONSE"); 
+			break;
+		case LastError.NET_ERROR_VERSION_HIGHER: // (0x80000000|388) 协议版本低于当前使用的版本
+			msg = Res.string().getBundle().getString("NET_ERROR_VERSION_HIGHER"); 
+			break;
+		case LastError.NET_SPARE_NO_CAPACITY: // (0x80000000|389) 热备操作失败, 容量不足
+			msg = Res.string().getBundle().getString("NET_SPARE_NO_CAPACITY"); 
+			break;
+		case LastError.NET_ERROR_SOURCE_IN_USE: // (0x80000000|390) 显示源被其他输出占用
+			msg = Res.string().getBundle().getString("NET_ERROR_SOURCE_IN_USE"); 
+			break;
+		case LastError.NET_ERROR_REAVE: // (0x80000000|391) 高级用户抢占低级用户资源
+			msg = Res.string().getBundle().getString("NET_ERROR_REAVE"); 
+			break;
+		case LastError.NET_ERROR_NETFORBID: // (0x80000000|392) 禁止入网
+			msg = Res.string().getBundle().getString("NET_ERROR_NETFORBID"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_MACFILTER: // (0x80000000|393) 获取MAC过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_MACFILTER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_MACFILTER: // (0x80000000|394) 设置MAC过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_MACFILTER"); 
+			break;
+		case LastError.NET_ERROR_GETCFG_IPMACFILTER: // (0x80000000|395) 获取IP/MAC过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GETCFG_IPMACFILTER"); 
+			break;
+		case LastError.NET_ERROR_SETCFG_IPMACFILTER: // (0x80000000|396) 设置IP/MAC过滤配置失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SETCFG_IPMACFILTER"); 
+			break;
+		case LastError.NET_ERROR_OPERATION_OVERTIME: // (0x80000000|397) 当前操作超时
+			msg = Res.string().getBundle().getString("NET_ERROR_OPERATION_OVERTIME"); 
+			break;
+		case LastError.NET_ERROR_SENIOR_VALIDATE_FAILED: // (0x80000000|398) 高级校验失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SENIOR_VALIDATE_FAILED"); 
+			break;
+		case LastError.NET_ERROR_DEVICE_ID_NOT_EXIST: // (0x80000000|399) 设备ID不存在
+			msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_ID_NOT_EXIST"); 
+			break;
+		case LastError.NET_ERROR_UNSUPPORTED:  // (0x80000000|400) 不支持当前操作
+			msg = Res.string().getBundle().getString("NET_ERROR_UNSUPPORTED"); 
+			break;
+		case LastError.NET_ERROR_PROXY_DLLLOAD: // (0x80000000|401) 代理库加载失败
+			msg = Res.string().getBundle().getString("NET_ERROR_PROXY_DLLLOAD"); 
+			break;
+		case LastError.NET_ERROR_PROXY_ILLEGAL_PARAM: // (0x80000000|402) 代理用户参数不合法
+			msg = Res.string().getBundle().getString("NET_ERROR_PROXY_ILLEGAL_PARAM"); 
+			break;
+		case LastError.NET_ERROR_PROXY_INVALID_HANDLE: // (0x80000000|403) 代理句柄无效
+			msg = Res.string().getBundle().getString("NET_ERROR_PROXY_INVALID_HANDLE"); 
+			break;
+		case LastError.NET_ERROR_PROXY_LOGIN_DEVICE_ERROR: // (0x80000000|404) 代理登入前端设备失败
+			msg = Res.string().getBundle().getString("NET_ERROR_PROXY_LOGIN_DEVICE_ERROR"); 
+			break;
+		case LastError.NET_ERROR_PROXY_START_SERVER_ERROR: // (0x80000000|405) 启动代理服务失败
+			msg = Res.string().getBundle().getString("NET_ERROR_PROXY_START_SERVER_ERROR"); 
+			break;
+		case LastError.NET_ERROR_SPEAK_FAILED: // (0x80000000|406) 请求喊话失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SPEAK_FAILED"); 
+			break;
+		case LastError.NET_ERROR_NOT_SUPPORT_F6: // (0x80000000|407) 设备不支持此F6接口调用
+			msg = Res.string().getBundle().getString("NET_ERROR_NOT_SUPPORT_F6"); 
+			break;
+		case LastError.NET_ERROR_CD_UNREADY: // (0x80000000|408) 光盘未就绪
+			msg = Res.string().getBundle().getString("NET_ERROR_CD_UNREADY"); 
+			break;
+		case LastError.NET_ERROR_DIR_NOT_EXIST: // (0x80000000|409) 目录不存在
+			msg = Res.string().getBundle().getString("NET_ERROR_DIR_NOT_EXIST"); 
+			break;
+		case LastError.NET_ERROR_UNSUPPORTED_SPLIT_MODE: // (0x80000000|410) 设备不支持的分割模式
+			msg = Res.string().getBundle().getString("NET_ERROR_UNSUPPORTED_SPLIT_MODE"); 
+			break;
+		case LastError.NET_ERROR_OPEN_WND_PARAM: // (0x80000000|411) 开窗参数不合法
+			msg = Res.string().getBundle().getString("NET_ERROR_OPEN_WND_PARAM"); 
+			break;
+		case LastError.NET_ERROR_LIMITED_WND_COUNT: // (0x80000000|412) 开窗数量超过限制
+			msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_WND_COUNT"); 
+			break;
+		case LastError.NET_ERROR_UNMATCHED_REQUEST: // (0x80000000|413) 请求命令与当前模式不匹配
+			msg = Res.string().getBundle().getString("NET_ERROR_UNMATCHED_REQUEST"); 
+			break;
+		case LastError.NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR: // (0x80000000|414) Render库启用高清图像内部调整策略出错
+			msg = Res.string().getBundle().getString("NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR"); 
+			break;
+		case LastError.NET_ERROR_UPGRADE_FAILED: // (0x80000000|415) 设备升级失败
+			msg = Res.string().getBundle().getString("NET_ERROR_UPGRADE_FAILED"); 
+			break;
+		case LastError.NET_ERROR_NO_TARGET_DEVICE: // (0x80000000|416) 找不到目标设备
+			msg = Res.string().getBundle().getString("NET_ERROR_NO_TARGET_DEVICE"); 
+			break;
+		case LastError.NET_ERROR_NO_VERIFY_DEVICE: // (0x80000000|417) 找不到验证设备
+			msg = Res.string().getBundle().getString("NET_ERROR_NO_VERIFY_DEVICE"); 
+			break;
+		case LastError.NET_ERROR_CASCADE_RIGHTLESS: // (0x80000000|418) 无级联权限
+			msg = Res.string().getBundle().getString("NET_ERROR_CASCADE_RIGHTLESS"); 
+			break;
+		case LastError.NET_ERROR_LOW_PRIORITY: // (0x80000000|419) 低优先级
+			msg = Res.string().getBundle().getString("NET_ERROR_LOW_PRIORITY"); 
+			break;
+		case LastError.NET_ERROR_REMOTE_REQUEST_TIMEOUT: // (0x80000000|420) 远程设备请求超时
+			msg = Res.string().getBundle().getString("NET_ERROR_REMOTE_REQUEST_TIMEOUT"); 
+			break;
+		case LastError.NET_ERROR_LIMITED_INPUT_SOURCE: // (0x80000000|421) 输入源超出最大路数限制
+			msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_INPUT_SOURCE"); 
+			break;
+		case LastError.NET_ERROR_SET_LOG_PRINT_INFO: // (0x80000000|422) 设置日志打印失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SET_LOG_PRINT_INFO"); 
+			break;
+		case LastError.NET_ERROR_PARAM_DWSIZE_ERROR: // (0x80000000|423) 入参的dwsize字段出错
+			msg = Res.string().getBundle().getString("NET_ERROR_PARAM_DWSIZE_ERROR"); 
+			break;
+		case LastError.NET_ERROR_LIMITED_MONITORWALL_COUNT: // (0x80000000|424) 电视墙数量超过上限
+			msg = Res.string().getBundle().getString("NET_ERROR_LIMITED_MONITORWALL_COUNT"); 
+			break;
+		case LastError.NET_ERROR_PART_PROCESS_FAILED: // (0x80000000|425) 部分过程执行失败
+			msg = Res.string().getBundle().getString("NET_ERROR_PART_PROCESS_FAILED"); 
+			break;
+		case LastError.NET_ERROR_TARGET_NOT_SUPPORT: // (0x80000000|426) 该功能不支持转发
+			msg = Res.string().getBundle().getString("NET_ERROR_TARGET_NOT_SUPPORT"); 
+			break;
+		case LastError.NET_ERROR_VISITE_FILE: // (0x80000000|510) 访问文件失败
+			msg = Res.string().getBundle().getString("NET_ERROR_VISITE_FILE"); 
+			break;
+		case LastError.NET_ERROR_DEVICE_STATUS_BUSY: // (0x80000000|511) 设备忙
+			msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_STATUS_BUSY"); 
+			break;
+		case LastError.NET_USER_PWD_NOT_AUTHORIZED: // (0x80000000|512)修改密码无权限
+			msg = Res.string().getBundle().getString("NET_USER_PWD_NOT_AUTHORIZED"); 
+			break;
+		case LastError.NET_USER_PWD_NOT_STRONG: // (0x80000000|513) 密码强度不够
+			msg = Res.string().getBundle().getString("NET_USER_PWD_NOT_STRONG"); 
+			break;
+		case LastError.NET_ERROR_NO_SUCH_CONFIG: // (0x80000000|514) 没有对应的配置
+			msg = Res.string().getBundle().getString("NET_ERROR_NO_SUCH_CONFIG"); 
+			break;
+		case LastError.NET_ERROR_AUDIO_RECORD_FAILED: // (0x80000000|515) 录音失败
+			msg = Res.string().getBundle().getString("NET_ERROR_AUDIO_RECORD_FAILED"); 
+			break;
+		case LastError.NET_ERROR_SEND_DATA_FAILED: // (0x80000000|516) 数据发送失败
+			msg = Res.string().getBundle().getString("NET_ERROR_SEND_DATA_FAILED"); 
+			break;
+		case LastError.NET_ERROR_OBSOLESCENT_INTERFACE: // (0x80000000|517) 废弃接口
+			msg = Res.string().getBundle().getString("NET_ERROR_OBSOLESCENT_INTERFACE"); 
+			break;
+		case LastError.NET_ERROR_INSUFFICIENT_INTERAL_BUF: // (0x80000000|518) 内部缓冲不足
+			msg = Res.string().getBundle().getString("NET_ERROR_INSUFFICIENT_INTERAL_BUF"); 
+			break;
+		case LastError.NET_ERROR_NEED_ENCRYPTION_PASSWORD: // (0x80000000|519) 修改设备ip时,需要校验密码
+			msg = Res.string().getBundle().getString("NET_ERROR_NEED_ENCRYPTION_PASSWORD"); 
+			break;
+		case LastError.NET_ERROR_NOSUPPORT_RECORD: // (0x80000000|520) 设备不支持此记录集
+			msg = Res.string().getBundle().getString("NET_ERROR_NOSUPPORT_RECORD"); 
+			break;
+		case LastError.NET_ERROR_SERIALIZE_ERROR: // (0x80000000|1010) 数据序列化错误
+			msg = Res.string().getBundle().getString("NET_ERROR_SERIALIZE_ERROR"); 
+			break;
+		case LastError.NET_ERROR_DESERIALIZE_ERROR: // (0x80000000|1011) 数据反序列化错误
+			msg = Res.string().getBundle().getString("NET_ERROR_DESERIALIZE_ERROR"); 
+			break;
+		case LastError.NET_ERROR_LOWRATEWPAN_ID_EXISTED: // (0x80000000|1012) 该无线ID已存在
+			msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_EXISTED"); 
+			break;
+		case LastError.NET_ERROR_LOWRATEWPAN_ID_LIMIT: // (0x80000000|1013) 无线ID数量已超限
+			msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_LIMIT"); 
+			break;
+		case LastError.NET_ERROR_LOWRATEWPAN_ID_ABNORMAL: // (0x80000000|1014) 无线异常添加
+			msg = Res.string().getBundle().getString("NET_ERROR_LOWRATEWPAN_ID_ABNORMAL"); 
+			break;
+		case LastError.NET_ERROR_ENCRYPT: // (0x80000000|1015) 加密数据失败
+			msg = Res.string().getBundle().getString("NET_ERROR_ENCRYPT"); 
+			break;
+		case LastError.NET_ERROR_PWD_ILLEGAL: // (0x80000000|1016) 新密码不合规范
+			msg = Res.string().getBundle().getString("NET_ERROR_PWD_ILLEGAL"); 
+			break;
+		case LastError.NET_ERROR_DEVICE_ALREADY_INIT: // (0x80000000|1017) 设备已经初始化
+			msg = Res.string().getBundle().getString("NET_ERROR_DEVICE_ALREADY_INIT"); 
+			break;
+		case LastError.NET_ERROR_SECURITY_CODE: // (0x80000000|1018) 安全码错误
+			msg = Res.string().getBundle().getString("NET_ERROR_SECURITY_CODE"); 
+			break;
+		case LastError.NET_ERROR_SECURITY_CODE_TIMEOUT: // (0x80000000|1019) 安全码超出有效期
+			msg = Res.string().getBundle().getString("NET_ERROR_SECURITY_CODE_TIMEOUT"); 
+			break;
+		case LastError.NET_ERROR_GET_PWD_SPECI: // (0x80000000|1020) 获取密码规范失败
+			msg = Res.string().getBundle().getString("NET_ERROR_GET_PWD_SPECI"); 
+			break;
+		case LastError.NET_ERROR_NO_AUTHORITY_OF_OPERATION: // (0x80000000|1021) 无权限进行该操作
+			msg = Res.string().getBundle().getString("NET_ERROR_NO_AUTHORITY_OF_OPERATION"); 
+			break;
+		case LastError.NET_ERROR_DECRYPT: // (0x80000000|1022) 解密数据失败
+			msg = Res.string().getBundle().getString("NET_ERROR_DECRYPT"); 
+			break;
+		case LastError.NET_ERROR_2D_CODE: // (0x80000000|1023) 2D code校验失败
+			msg = Res.string().getBundle().getString("NET_ERROR_2D_CODE"); 
+			break;
+		case LastError.NET_ERROR_INVALID_REQUEST: // (0x80000000|1024) 非法的RPC请求
+			msg = Res.string().getBundle().getString("NET_ERROR_INVALID_REQUEST"); 
+			break;
+		case LastError.NET_ERROR_PWD_RESET_DISABLE: // (0x80000000|1025) 密码重置功能已关闭
+			msg = Res.string().getBundle().getString("NET_ERROR_PWD_RESET_DISABLE"); 
+			break;
+		case LastError.NET_ERROR_PLAY_PRIVATE_DATA: // (0x80000000|1026) 显示私有数据,比如规则框等失败
+			msg = Res.string().getBundle().getString("NET_ERROR_PLAY_PRIVATE_DATA"); 
+			break;
+		case LastError.NET_ERROR_ROBOT_OPERATE_FAILED: // (0x80000000|1027) 机器人操作失败
+			msg = Res.string().getBundle().getString("NET_ERROR_ROBOT_OPERATE_FAILED"); 
+			break;
+		case LastError.NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT: // (0x80000000|1028) 图片大小超限
+			msg = Res.string().getBundle().getString("NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT"); 
+			break;
+		case LastError.NET_ERROR_USERID_INVALID: // (0x80000000|1029) 用户ID不存在
+			msg = Res.string().getBundle().getString("NET_ERROR_USERID_INVALID"); 
+			break;
+		case LastError.NET_ERROR_EXTRACTFEATURE_FAILED: // (0x80000000|1030) 照片特征值提取失败
+			msg = Res.string().getBundle().getString("NET_ERROR_EXTRACTFEATURE_FAILED"); 
+			break;
+		case LastError.NET_ERROR_PHOTO_EXIST: // (0x80000000|1031) 照片已存在
+			msg = Res.string().getBundle().getString("NET_ERROR_PHOTO_EXIST"); 
+			break;
+		case LastError.NET_ERROR_PHOTO_OVERFLOW: // (0x80000000|1032) 照片数量超过上限
+			msg = Res.string().getBundle().getString("NET_ERROR_PHOTO_OVERFLOW"); 
+			break;
+		case LastError.NET_ERROR_CHANNEL_ALREADY_OPENED: // (0x80000000|1033) 通道已经打开
+			msg = Res.string().getBundle().getString("NET_ERROR_CHANNEL_ALREADY_OPENED"); 
+			break;
+		case LastError.NET_ERROR_CREATE_SOCKET: // (0x80000000|1034) 创建套接字失败
+			msg = Res.string().getBundle().getString("NET_ERROR_CREATE_SOCKET"); 
+			break;
+		case LastError.NET_ERROR_CHANNEL_NUM: // (0x80000000|1035) 通道号错误
+			msg = Res.string().getBundle().getString("NET_ERROR_CHANNEL_NUM"); 
+			break;
+		case LastError.NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED: // (0x80000000|1051) 组ID超过最大值
+			msg = Res.string().getBundle().getString("NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED"); 
+			break;
+		default:
+	    	msg = Res.string().getBundle().getString("NET_ERROR");
+			break;
+		}
+		return msg;
+	}
+				
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskCommonQueue.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskCommonQueue.java
new file mode 100644
index 0000000..ed4403c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskCommonQueue.java
@@ -0,0 +1,79 @@
+package com.netsdk.common;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingDeque;
+
+public class EventTaskCommonQueue {
+
+    // 设置一个队列,容量看情况改
+    private final int MAX_TASK_COUNT = 10000;   // 队列容量
+    private final LinkedBlockingDeque<EventTaskHandler> eventTasks = new LinkedBlockingDeque<EventTaskHandler>(MAX_TASK_COUNT);
+
+    // 起一个线程池
+    private final int MAX_THREAD_COUNT = 10;    // 线程池容量
+    private ExecutorService eventQueueService = Executors.newFixedThreadPool(MAX_THREAD_COUNT);
+
+    // 用于检验服务运行状态
+    private volatile boolean running = true;
+
+    // 用于查看当前线程状态
+    private Future<?> eventQueueThreadStatus;
+
+    // 初始化
+    public void init() {
+        eventQueueThreadStatus = eventQueueService.submit(new Thread(new Runnable() {
+            @Override
+            public void run() {
+                while (running) {
+                    try {
+                        EventTaskHandler task = eventTasks.take();      //开始一个任务
+                        try {
+                            task.eventTaskProcess();    // 主要的运行函数
+                        } catch (Exception e) {
+                            System.err.println("任务处理发生错误");   // error
+                        }
+                    } catch (InterruptedException e) {
+                        System.err.println("任务已意外停止");   // error
+                        running = false;
+                    }
+                }
+            }
+        }, "Event call back thread init"));
+    }
+
+    // 向队列添加新的任务
+    public boolean addEvent(EventTaskHandler eventHandler) {
+        if (!running) {
+            System.out.println("任务已停止");   // warning
+            return false;
+        }
+        boolean success = eventTasks.offer(eventHandler);
+        if (!success) {
+            // 队列已满,无法再添加
+            System.out.println("添加到事件队列失败");
+        }
+        return success;
+    }
+
+
+    // 手动启动服务
+    public void activeService() {
+        running = true;
+        if (eventQueueService.isShutdown()) {
+            eventQueueService = Executors.newFixedThreadPool(MAX_THREAD_COUNT);;
+            init();
+            System.out.println("线程池已关闭,重新初始化线程池及任务");
+        }
+        if (eventQueueThreadStatus.isDone()) {
+            init();
+            System.out.println("线程池任务结束,重新初始化任务");
+        }
+    }
+
+    // 手动关闭服务
+    public void destroy() {
+        running = false;
+        eventQueueService.shutdownNow();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskHandler.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskHandler.java
new file mode 100644
index 0000000..90c4b1b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/EventTaskHandler.java
@@ -0,0 +1,6 @@
+package com.netsdk.common;
+
+public interface EventTaskHandler {
+
+    void eventTaskProcess();
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/FunctionList.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/FunctionList.java
new file mode 100644
index 0000000..7bd495c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/FunctionList.java
@@ -0,0 +1,366 @@
+package com.netsdk.common;
+
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.border.EmptyBorder;
+import com.netsdk.demo.frame.*;
+import com.netsdk.demo.frame.Attendance.Attendance;
+import com.netsdk.demo.frame.AutoRegister.AutoRegister;
+import com.netsdk.demo.frame.TargetRecognition.NewLatticeScreen;
+import com.netsdk.demo.frame.Gate.Gate;
+import com.netsdk.demo.frame.TargetRecognition.TargetRecognition;
+import com.netsdk.demo.frame.ThermalCamera.ThermalCamera;
+import com.netsdk.demo.frame.scada.SCADADemo;
+import com.netsdk.demo.frame.vto.VTODemo;
+
+/**
+ * 功能列表界面
+ */
+public class FunctionList extends JFrame {
+	private static final long serialVersionUID = 1L;
+
+	public FunctionList() {
+		setTitle(Res.string().getFunctionList());
+		setLayout(new BorderLayout());
+		pack();
+		setSize(450, 300);
+		setResizable(false);
+		setLocationRelativeTo(null);
+
+		add(new FunctionPanel(), BorderLayout.CENTER);
+
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				dispose();
+				System.exit(0);
+			}
+		});
+	}
+
+	public class FunctionPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public FunctionPanel() {
+			setLayout(new GridLayout(9, 2));
+
+			setBorder(new EmptyBorder(30, 50, 0, 50));
+
+			faceRecognitionBtn = new JButton(Res.string().getTargetRecognition());
+			gateBtn = new JButton(Res.string().getGate());
+			capturePictureBtn = new JButton(Res.string().getCapturePicture());
+			realPlayBtn = new JButton(Res.string().getRealplay());
+			itsEventBtn = new JButton(Res.string().getITSEvent());
+			downloadBtn = new JButton(Res.string().getDownloadRecord());
+			talkBtn = new JButton(Res.string().getTalk());
+			deviceSearchAndInitBtn = new JButton(Res.string().getDeviceSearchAndInit());
+			ptzBtn = new JButton(Res.string().getPTZ());
+			deviceCtlBtn = new JButton(Res.string().getDeviceControl());
+			alarmListenBtn = new JButton(Res.string().getAlarmListen());
+			autoRegisterBtn = new JButton(Res.string().getAutoRegister());
+			attendanceBtn = new JButton(Res.string().getAttendance());
+			thermalCameraBtn = new JButton(Res.string().getThermalCamera());
+			matrixScreenBtn = new JButton(Res.string().getmatrixScreen());
+			humanNumberStatisticBtn = new JButton(Res.string().getHumanNumberStatistic());
+			vtoBtn = new JButton(Res.string().getVTO());
+
+			SCADABtn = new JButton(Res.string().getSCADA());
+
+			trafficAllowListBtn = new JButton(Res.string().getTrafficAllowList());
+
+
+			add(gateBtn);
+			add(faceRecognitionBtn);
+			add(deviceSearchAndInitBtn);
+			add(ptzBtn);
+			add(realPlayBtn);
+			add(capturePictureBtn);
+			add(talkBtn);
+			add(itsEventBtn);
+			add(downloadBtn);
+			add(deviceCtlBtn);
+			add(alarmListenBtn);
+			add(autoRegisterBtn);
+			//add(attendanceBtn);
+			add(thermalCameraBtn);
+			add(matrixScreenBtn);
+			add(humanNumberStatisticBtn);
+			add(vtoBtn);
+			add(SCADABtn);
+			add(trafficAllowListBtn);
+			gateBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							Gate.main(null);
+						}
+					});
+				}
+			});
+
+			faceRecognitionBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							TargetRecognition.main(null);
+						}
+					});
+				}
+			});
+
+
+			capturePictureBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							CapturePicture.main(null);
+						}
+					});
+				}
+			});
+
+			realPlayBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							RealPlay.main(null);
+						}
+					});
+				}
+			});
+
+			downloadBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							DownLoadRecord.main(null);
+						}
+					});
+				}
+			});
+
+			talkBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							Talk.main(null);
+						}
+					});
+				}
+			});
+
+			itsEventBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							TrafficEvent.main(null);
+						}
+					});
+				}
+			});
+
+			deviceSearchAndInitBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							DeviceSearchAndInit.main(null);
+						}
+					});
+				}
+			});
+
+			ptzBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							PTZControl.main(null);
+						}
+					});
+				}
+			});
+
+			deviceCtlBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							DeviceControl.main(null);
+						}
+					});
+				}
+			});
+
+			alarmListenBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							AlarmListen.main(null);
+						}
+					});
+				}
+			});
+
+			autoRegisterBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							AutoRegister.main(null);
+						}
+					});
+				}
+			});
+
+			attendanceBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							Attendance.main(null);
+						}
+					});
+				}
+			});
+
+			thermalCameraBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							ThermalCamera.main(null);
+						}
+					});
+				}
+			});
+
+			
+			  matrixScreenBtn.addActionListener(new ActionListener() {
+				  @Override public void actionPerformed(ActionEvent e) {
+					  SwingUtilities.invokeLater(new Runnable() { 
+						  public void run() 
+						  { 
+							   dispose();
+							   NewLatticeScreen.main(null);					           
+					           } 
+						  });
+					  }
+					  });			  
+			  
+			  
+			  humanNumberStatisticBtn.addActionListener(new ActionListener() {
+			  
+			  @Override public void actionPerformed(ActionEvent e) {
+			  SwingUtilities.invokeLater(new Runnable() { 
+				  public void run() 
+				  { 
+					   dispose();			           
+			           HumanNumberStatistic.main(null);
+			           } 
+				  });
+			  }
+			  });
+			  vtoBtn.addActionListener(new ActionListener() {
+				  @Override
+				  public void actionPerformed(ActionEvent e) {
+					  SwingUtilities.invokeLater(new Runnable() {
+						  @Override
+						  public void run() {
+							  dispose();
+							  VTODemo.main(null);
+						  }
+					  });
+				  }
+			  });
+
+			SCADABtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					SwingUtilities.invokeLater(new Runnable() {
+						@Override
+						public void run() {
+							dispose();
+							SCADADemo.main(null);
+						}
+					});
+				}
+			});
+			
+			trafficAllowListBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							dispose();
+							TrafficAllowList.main(null);
+						}
+					});
+				}
+			});
+			 
+
+		}
+
+		/*
+		 * 功能列表组件
+		 */
+		private JButton faceRecognitionBtn;
+		private JButton capturePictureBtn;
+		private JButton realPlayBtn;
+		private JButton downloadBtn;
+		private JButton itsEventBtn;
+		private JButton talkBtn;
+		private JButton deviceSearchAndInitBtn;
+		private JButton ptzBtn;
+		private JButton deviceCtlBtn;
+		private JButton alarmListenBtn;
+		private JButton autoRegisterBtn;
+		private JButton attendanceBtn;
+		private JButton gateBtn;
+		private JButton thermalCameraBtn;
+		private JButton matrixScreenBtn;
+		private JButton humanNumberStatisticBtn;
+		private JButton vtoBtn;
+
+		/**
+		 * 动环主机按钮
+		 */
+		private JButton SCADABtn;
+
+		/**
+		 *	允许名单注册
+		 */
+		private JButton trafficAllowListBtn;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ListPictureShowDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ListPictureShowDialog.java
new file mode 100644
index 0000000..dd67310
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/ListPictureShowDialog.java
@@ -0,0 +1,35 @@
+package com.netsdk.common;
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JDialog;
+
+/*
+ * 智能交通列表双击展示图片框架
+ */
+public class ListPictureShowDialog extends JDialog {
+	private static final long serialVersionUID = 1L;
+	public ListPictureShowDialog() {
+	    setLayout(new BorderLayout());
+	    setModal(true);   
+	    pack();
+	    setSize(800, 600);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+
+	    
+	    listPanel = new PaintPanel();
+	    add(listPanel, BorderLayout.CENTER);
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();		
+	    	}
+	    });
+	}
+	
+	public PaintPanel listPanel;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/LoginPanel.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/LoginPanel.java
new file mode 100644
index 0000000..43eca61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/LoginPanel.java
@@ -0,0 +1,115 @@
+package com.netsdk.common;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionListener;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.netsdk.lib.ToolKits;
+
+/*
+ * 登陆面板
+ */
+public class LoginPanel extends JPanel {
+	private static final long serialVersionUID = 1L;
+	
+	//登陆参数
+	private String s_strIp		   = "172.32.100.88";/*"172.23.12.17";*/ //"192.168.7.61";
+	private Integer s_nPort        = new Integer("37777");
+	private String s_strUser       = "admin";
+	private String s_strPassword   = "admin123";
+	
+	public LoginPanel() {
+		BorderEx.set(this, Res.string().getLogin(), 2);
+		setLayout(new FlowLayout());
+
+		////////////////////////////////
+		loginBtn = new JButton(Res.string().getLogin());
+		logoutBtn = new JButton(Res.string().getLogout());
+		ipLabel = new JLabel(Res.string().getDeviceIp());
+		portLabel = new JLabel(" " + Res.string().getPort());
+		nameLabel = new JLabel(" " + Res.string().getUserName());
+		passwordLabel = new JLabel(" " + Res.string().getPassword());
+		ipTextArea = new JTextField(s_strIp);
+		nameTextArea = new JTextField(s_strUser);
+		passwordTextArea = new JPasswordField(s_strPassword);
+		portTextArea = new JTextField(s_nPort.toString());
+	    
+	    add(ipLabel);
+	    add(ipTextArea);
+	    add(portLabel);
+	    add(portTextArea);
+	    add(nameLabel);
+	    add(nameTextArea);
+	    add(passwordLabel);
+	    add(passwordTextArea);
+	    add(loginBtn);
+	    add(logoutBtn);
+	    
+	    ipTextArea.setPreferredSize(new Dimension(90, 20)); 
+	    nameTextArea.setPreferredSize(new Dimension(90, 20));
+	    passwordTextArea.setPreferredSize(new Dimension(90, 20));
+	    portTextArea.setPreferredSize(new Dimension(90, 20));
+		    
+	    loginBtn.setPreferredSize(new Dimension(80, 20)); 
+	    logoutBtn.setPreferredSize(new Dimension(80, 20)); 
+	    ToolKits.limitTextFieldLength(portTextArea, 6);
+	    
+	    logoutBtn.setEnabled(false);	
+	}
+
+	public void addLoginBtnActionListener(ActionListener e) {
+		loginBtn.addActionListener(e);
+	}
+	
+	public void addLogoutBtnActionListener(ActionListener e) {
+		logoutBtn.addActionListener(e);
+	}
+	
+	public void setButtonEnable(boolean bln) {
+		loginBtn.setEnabled(!bln);
+		logoutBtn.setEnabled(bln);
+	}
+	
+	public boolean checkLoginText() {
+		if(ipTextArea.getText().equals("")) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputDeviceIP(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(portTextArea.getText().equals("")) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputDevicePort(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(nameTextArea.getText().equals("")) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputUsername(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(new String(passwordTextArea.getPassword()).equals("")) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputPassword(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		return true;
+	}
+	
+	public JLabel nameLabel;
+	public JLabel passwordLabel;
+	public JLabel ipLabel;
+	public JLabel portLabel;
+	
+	public JTextField ipTextArea;
+	public JTextField portTextArea;
+	public JTextField nameTextArea;
+	public JPasswordField passwordTextArea;	
+	
+	public JButton loginBtn;
+	public JButton logoutBtn;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/PaintPanel.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/PaintPanel.java
new file mode 100644
index 0000000..b431bcb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/PaintPanel.java
@@ -0,0 +1,35 @@
+package com.netsdk.common;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Image;
+
+import javax.swing.JPanel;
+
+/*
+ * 带背景的绘图面板
+ */
+public class PaintPanel extends JPanel {
+	private static final long serialVersionUID = 1L;
+	private Image image; //背景图片	
+	
+	public PaintPanel() {
+		super();
+		setOpaque(true); //非透明
+		setLayout(null);
+		setBackground(Color.GRAY);
+		setForeground(new Color(0, 0, 0));
+	}
+	
+	//设置图片的方法
+	public void setImage(Image image) {
+		this.image = image;
+	}
+	
+	protected void paintComponent(Graphics g) {    //重写绘制组件外观
+		if(image != null) {
+			g.drawImage(image, 0, 0, getWidth(), getHeight(), this);//绘制图片与组件大小相同
+		}
+		super.paintComponent(g); // 执行超类方法
+	}	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Res.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Res.java
new file mode 100644
index 0000000..317a0fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/Res.java
@@ -0,0 +1,2882 @@
+package com.netsdk.common;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+
+public final class Res {
+	
+	private static ResourceBundle bundle;
+	
+	private Res() {
+		switchLanguage(LanguageType.Chinese);
+	}
+
+	private static class StringBundleHolder {
+		private static Res instance = new Res();
+	}
+	
+	public static Res string() {
+		return StringBundleHolder.instance;
+	}
+	
+	public static enum LanguageType {
+		English,
+		Chinese
+	}
+	
+	public ResourceBundle getBundle() {
+		return bundle;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Switch between Chinese and English
+	 * \else
+	 * 中英文切换
+	 * \endif
+	 */
+	public void switchLanguage(LanguageType type) {
+		switch(type) {
+			case Chinese:
+				bundle = ResourceBundle.getBundle("res", new Locale("zh", "CN"));
+				break;
+			case English:
+				bundle = ResourceBundle.getBundle("res", new Locale("en", "US"));
+				break;
+			default:
+				break;
+		}
+	}
+	
+	public String getSwitchLanguage() {
+		return bundle.getString("SWITCH_LANGUAGE");
+	}
+	
+	public String getRealplay() {
+		return bundle.getString("REALPLAY");
+	}
+	
+	public String getMultiRealplay() {
+		return bundle.getString("MULTIREALPLAY");
+	}
+	
+	public String getDownloadRecord() {
+		return bundle.getString("DOWNLOAD_RECORD");
+	}
+	
+	public String getITSEvent() {
+		return bundle.getString("ITS_EVENT");
+	}
+	
+	public String getOnline() {
+		return bundle.getString("ONLINE");
+	}
+	
+	public String getDisConnectReconnecting() {
+		return bundle.getString("DISCONNECT_RECONNECTING");
+	}
+	
+	public String getDisConnect() {
+		return bundle.getString("DISCONNECT");
+	}
+	
+	public String getPromptMessage() {
+		return bundle.getString("PROMPT_MESSAGE");
+	}
+	
+	public String getErrorMessage() {
+		return bundle.getString("ERROR_MESSAGE");
+	}
+	
+	public String getReconnectSucceed() {
+		return bundle.getString("RECONNECT_SUCCEED");
+	}
+	
+	public String getSucceed() {
+		return bundle.getString("SUCCEED");
+	}
+	
+	public String getFailed() {
+		return bundle.getString("FAILED");
+	}
+	
+	public String getYear() {
+		return bundle.getString("YEAR");
+	}
+	
+	public String getMonth() {
+		return bundle.getString("MONTH");
+	}
+	
+	public String getDay() {
+		return bundle.getString("DAY");
+	}
+	
+	public String getHour() {
+		return bundle.getString("HOUR");
+	}
+	
+	public String getMinute() {
+		return bundle.getString("MINUTE");
+	}
+	
+	public String getSecond() {
+		return bundle.getString("SECOND");
+	}
+	
+	public String getSunday() {
+		return bundle.getString("SUNDAY");
+	}
+	
+	public String getMonday() {
+		return bundle.getString("MONDAY");
+	}
+	
+	public String getTuesday() {
+		return bundle.getString("TUESDAY");
+	}
+	
+	public String getWednesday() {
+		return bundle.getString("WEDNESDAY");
+	}
+	
+	public String getThursday() {
+		return bundle.getString("THURSDAY");
+	}
+	
+	public String getFriday() {
+		return bundle.getString("FRIDAY");
+	}
+	
+	public String getSaturday() {
+		return bundle.getString("SATURDAY");
+	}
+	
+	public String[] getWeek() {
+		String[] weekdays = {getSunday(),
+							 getMonday(),
+				    		 getTuesday(),
+				    		 getWednesday(),
+				    		 getThursday(),
+				    		 getFriday(),
+				    		 getSaturday()
+		};
+		
+		return weekdays;
+	}
+	
+	public String getConfirm() {
+		return bundle.getString("CONFIRM");
+	}
+	
+	public String getCancel() {
+		return bundle.getString("CANCEL");
+	}
+	
+	public String getDateChooser() {
+		return bundle.getString("DATE_CHOOSER");
+	}
+	
+	public String getFunctionList() {
+		return bundle.getString("FUNCTIONLIST");
+	}
+
+	public String getLogin() {
+		return bundle.getString("LOGIN");
+	}
+	
+	public String getLoginSuccess() {
+		return bundle.getString("LOGIN_SUCCEED");
+	}
+
+	public String getFillingRules() {
+		return bundle.getString("FILLING_RULES");
+	}
+	
+	public String getLogout() {
+		return bundle.getString("LOGOUT");
+	}
+	
+	public String getDeviceIp() {
+		return bundle.getString("DEVICE_IP");
+	}
+	
+	public String getIp() {
+		return bundle.getString("IP");
+	}
+	
+	public String getPort() {
+		return bundle.getString("DEVICE_PORT");
+	}
+	
+	public String getUserId() {
+		return bundle.getString("USER_ID");
+	}
+	
+	public String getTemp() {
+		return bundle.getString("TEMPERATURE");
+	}
+	
+	public String getMaskstutas() {
+		return bundle.getString("MASK_STATUS");
+	}
+	
+	public String getUserName(boolean space) {
+		return bundle.getString("USER_NAME");
+	}
+	
+	public String getCardNo() {
+		return bundle.getString("CARD_NO");
+	}
+	
+	public String getUserName() {
+		return bundle.getString("USERNAME");
+	}
+	
+	public String getPassword() {
+		return bundle.getString("PASSWORD");
+	}
+	
+	
+	public String getLoginFailed() {
+		return bundle.getString("LOGIN_FAILED");
+	}
+	
+	public String getInputDeviceIP() {
+		return bundle.getString("PLEASE_INPUT_DEVICE_IP");
+	}
+	
+	public String getInputDevicePort() {
+		return bundle.getString("PLEASE_INPUT_DEVICE_PORT");
+	}
+	
+	public String getInputUsername() {
+		return bundle.getString("PLEASE_INPUT_DEVICE_USERNAME");
+	}
+	
+	public String getInputPassword() {
+		return bundle.getString("PLEASE_INPUT_DEVICE_PASSWORD");
+	}
+	
+	public String getInputConfirmPassword() {
+		return bundle.getString("PLEASE_INPUT_CONFIRM_PASSWORD");
+	}
+	
+	public String getStartRealPlay() {
+		return bundle.getString("START_REALPLAY");
+	}
+	
+	public String getStopRealPlay() {
+		return bundle.getString("STOP_REALPLAY");
+	}
+	
+	public String getChn() {
+		return bundle.getString("CHN");
+	}
+	
+	public String getChannel() {
+		return bundle.getString("CHANNEL");
+	}
+	
+	public String getStreamType() {
+		return bundle.getString("STREAM_TYPE");
+	}
+	
+	public String getMasterAndSub() {
+		return bundle.getString("MASTER_AND_SUB_STREAM");
+	}
+	
+	public String getMasterStream() {
+		return bundle.getString("MASTER_STREAM");
+	}
+	
+	public String getSubStream() {
+		return bundle.getString("SUB_STREAM");
+	}
+	
+	public String getPTZ() {
+		return bundle.getString("PTZ");
+	}
+	
+	public String getPtzControlAndCapture() {
+		return bundle.getString("PTZCONTROL_CAPTURE");
+	}
+	
+	public String getCapturePicture() {
+		return bundle.getString("CAPTURE_PICTURE");
+	}
+	
+	public String getLocalCapture() {
+		return bundle.getString("LOCAL_CAPTURE");
+	}
+	
+	public String getRemoteCapture() {
+		return bundle.getString("REMOTE_CAPTURE");
+	}
+	
+	public String getTimerCapture() {
+		return bundle.getString("TIMER_CAPTURE");
+	}
+	
+	public String getStopCapture() {
+		return bundle.getString("STOP_CAPTURE");
+	}
+	
+	public String getInterval() {
+		return bundle.getString("INTERVAL");
+	}
+	
+	public String getTimeIntervalIllegal() {
+		return bundle.getString("TIME_INTERVAL_ILLEGAL");
+	}
+	
+	public String getNeedStartRealPlay() {
+		return bundle.getString("PLEASE_START_REALPLAY");
+	}
+	
+	public String getPTZControl() {
+		return bundle.getString("PTZ_CONTROL");
+	}
+	
+	public String getLeftUp() {
+		return bundle.getString("LEFT_UP");
+	}
+	
+	public String getUp() {
+		return bundle.getString("UP");
+	}
+	
+	public String getRightUp() {
+		return bundle.getString("RIGHT_UP");
+	}
+	
+	public String getLeft() {
+		return bundle.getString("LEFT");
+	}
+	
+	public String getRight() {
+		return bundle.getString("RIGHT");
+	}
+	
+	public String getLeftDown() {
+		return bundle.getString("LEFT_DOWN");
+	}
+	
+	public String getDown() {
+		return bundle.getString("DOWN");
+	}
+	
+	public String getRightDown() {
+		return bundle.getString("RIGHT_DOWN");
+	}
+	
+	public String getSpeed() {
+		return bundle.getString("SPEED");
+	}
+	
+	public String getZoomAdd() {
+		return bundle.getString("ZOOM_ADD");
+	}
+	
+	public String getZoomDec() {
+		return bundle.getString("ZOOM_DEC");
+	}
+	
+	public String getFocusAdd() {
+		return bundle.getString("FOCUS_ADD");
+	}
+	
+	public String getFocusDec() {
+		return bundle.getString("FOCUS_DEC");
+	}
+	
+	public String getIrisAdd() {
+		return bundle.getString("IRIS_ADD");
+	}
+	
+	public String getIrisDec() {
+		return bundle.getString("IRIS_DEC");
+	}
+	
+	public String getIndex() {
+		return bundle.getString("INDEX");
+	}
+	
+	public String getEventPicture() {
+		return bundle.getString("EVENT_PICTURE");
+	}
+	
+	public String getPlatePicture() {
+		return bundle.getString("PLATE_PICTURE");
+	}
+	
+	public String getEventName() {
+		return bundle.getString("EVENT_NAME");
+	}
+	
+	public String getLicensePlate() {
+		return bundle.getString("LICENSE_PLATE");
+	}
+	
+	public String getEventTime() {
+		return bundle.getString("EVENT_TIME");
+	}
+	
+	public String getPlateType() {
+		return bundle.getString("PLATE_TYPE");
+	}
+	
+	public String getPlateColor() {
+		return bundle.getString("PLATE_COLOR");
+	}
+	
+	public String getVehicleColor() {
+		return bundle.getString("VEHICLE_COLOR");
+	}
+	
+	public String getVehicleType() {
+		return bundle.getString("VEHICLE_TYPE");
+	}
+	
+	public String getVehicleSize() {
+		return bundle.getString("VEHICLE_SIZE");
+	}
+	
+	public String getFileCount() {
+		return bundle.getString("FILE_COUNT");
+	}
+	
+	public String getFileIndex() {
+		return bundle.getString("FILE_INDEX");
+	}
+	
+	public String getGroupId() {
+		return bundle.getString("GROUP_ID");
+	}
+	
+	public String getIllegalPlace() {
+		return bundle.getString("ILLEGAL_PLACE");
+	}
+	
+	public String getLaneNumber() {
+		return bundle.getString("LANE_NUMBER");
+	}
+	
+	public String getEventInfo() {
+		return bundle.getString("EVENT_INFO");
+	}
+	
+	public String getNoPlate() {
+		return bundle.getString("NO_PLATENUMBER");
+	}
+	
+	public String[] getTrafficTableName() {
+		String[] name = {getIndex(),
+						 getEventName(), 
+						 getLicensePlate(), 
+						 getEventTime(), 
+						 getPlateType(), 	
+						 getPlateColor(), 	
+						 getVehicleColor(), 
+						 getVehicleType(), 
+						 getVehicleSize(),
+						 getFileCount(),
+						 getFileIndex(),
+						 getGroupId(),
+						 getIllegalPlace(),
+						 getLaneNumber()};
+		return name;
+	}
+	
+	public String getOperate() {
+		return bundle.getString("OPERATE");
+	}
+	
+	public String getAttach() {
+		return bundle.getString("ATTACH");
+	}
+	
+	public String getDetach() {
+		return bundle.getString("DETACH");
+	}
+	
+	public String getOpenStrobe() {
+		return bundle.getString("OPEN_STROBE");
+	}
+	
+	public String getCloseStrobe() {
+		return bundle.getString("CLOSE_STROBE");
+	}
+	
+	public String getOpenStrobeFailed() {
+		return bundle.getString("OPEN_STROBE_FAILED");
+	}
+	
+	public String getManualCapture() {
+		return bundle.getString("MANUAL_CAPTURE");
+	}
+	
+	public String getManualCaptureSucceed() {
+		return  bundle.getString("MANUALSNAP_SUCCEED");
+	}
+	
+	public String getManualCaptureFailed() {
+		return  bundle.getString("MANUALSNAP_FAILED");
+	}
+    
+    /*
+     * 车辆大小对照表
+     */
+    public String getTrafficSize(int nVehicleSize) {
+    	String vehicleClass = "";
+    	for(int i = 0; i < 5; i++) {
+      		if( ((byte)nVehicleSize & (1 << i)) > 0 ) {
+      			switch (i) {
+				case 0:
+					vehicleClass = bundle.getString("LIGHT_DUTY");
+					break;
+				case 1:
+					vehicleClass = bundle.getString("MEDIUM");
+					break;
+				case 2:
+					vehicleClass = bundle.getString("OVER_SIZE");
+					break;
+				case 3:
+					vehicleClass = bundle.getString("MINI_SIZE");
+					break;
+				case 4:
+					vehicleClass = bundle.getString("LARGE_SIZE");
+					break;
+				}
+      		}
+      	} 
+    	
+    	return vehicleClass;
+    }
+	
+    /*
+     * 获取事件名称
+     */
+    public String getEventName(int type) {
+    	String name = "";
+    	switch (type) {
+			case NetSDKLib.EVENT_IVS_TRAFFICJUNCTION:  ///< 交通路口事件
+				name = bundle.getString("EVENT_IVS_TRAFFICJUNCTION");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_RUNREDLIGHT: ///< 闯红灯事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_RUNREDLIGHT");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_OVERLINE: ///< 压车道线事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_OVERLINE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_RETROGRADE: ///< 逆行事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_RETROGRADE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_TURNLEFT: ///< 违章左转
+				name = bundle.getString("EVENT_IVS_TRAFFIC_TURNLEFT");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_TURNRIGHT: ///< 违章右转
+				name = bundle.getString("EVENT_IVS_TRAFFIC_TURNRIGHT");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_UTURN: ///< 违章掉头
+				name = bundle.getString("EVENT_IVS_TRAFFIC_UTURN");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_OVERSPEED: ///< 超速
+				name = bundle.getString("EVENT_IVS_TRAFFIC_OVERSPEED");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_UNDERSPEED: ///< 低速
+				name = bundle.getString("EVENT_IVS_TRAFFIC_UNDERSPEED");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_PARKING: ///< 违章停车
+				name = bundle.getString("EVENT_IVS_TRAFFIC_PARKING");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_WRONGROUTE: ///< 不按车道行驶
+				name = bundle.getString("EVENT_IVS_TRAFFIC_WRONGROUTE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_CROSSLANE: ///< 违章变道
+				name = bundle.getString("EVENT_IVS_TRAFFIC_CROSSLANE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_OVERYELLOWLINE: ///< 压黄线
+				name = bundle.getString("EVENT_IVS_TRAFFIC_OVERYELLOWLINE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE: ///< 黄牌车占道事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY: ///< 斑马线行人优先事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP: ///< 交通手动抓拍事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_MANUALSNAP");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINROUTE: ///< 有车占道事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_VEHICLEINROUTE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE: ///< 占用公交车道事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_BACKING: ///< 违章倒车事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_BACKING");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING: ///< 车位有车事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING: ///< 车位无车事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING");
+				break;
+			case NetSDKLib.EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT: ///< 交通未系安全带事件
+				name = bundle.getString("EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT");
+				break;
+			default:
+				break;
+		}
+    	
+    	return name;
+    }
+	
+    public String getRecordType() {
+    	return bundle.getString("RECORD_TYPE");
+    }
+    
+    public String getStartTime() {
+    	return bundle.getString("START_TIME");
+    }
+    
+    public String getEndTime() {
+    	return bundle.getString("END_TIME");
+    }
+    
+    public String[] getDownloadTableName() {
+    	String[] name = {getIndex(), 
+						 getChannel(),
+						 getRecordType(), 
+						 getStartTime(), 
+						 getEndTime()}; 	
+    	return name;
+    }
+    
+    public String getDownloadByFile() {
+    	return bundle.getString("DOWNLOAD_RECORD_BYFILE");
+    }
+    
+    public String getQuery() {
+    	return bundle.getString("QUERY");
+    }
+    
+    public String getDownload() {
+    	return bundle.getString("DOWNLOAD");
+    }
+    
+    public String getStopDownload() {
+    	return bundle.getString("STOP_DOWNLOAD");
+    }
+    
+    public String getDownloadByTime() {
+    	return bundle.getString("DOWNLOAD_RECORD_BYTIME");
+    }
+    
+    public String getSelectTimeAgain() {
+    	return bundle.getString("PLEASE_SELECT_TIME_AGAIN");
+    }
+    
+    public String getSelectRowWithData() {
+    	return bundle.getString("PLEASE_FIRST_SELECT_ROW_WITH_DATA");
+    }
+    
+    public String getQueryRecord() {
+    	return bundle.getString("PLEASE_FIRST_QUERY_RECORD");
+    }
+    
+    public String getDownloadCompleted() {
+    	return bundle.getString("DOWNLOAD_COMPLETED");
+    }
+    
+	/**
+	 * 获取录像类型
+	 */
+	public String getRecordTypeStr(int nRecordFileType) {
+		String recordTypeStr = "";
+		switch(nRecordFileType) {
+			case 0:
+                recordTypeStr = bundle.getString("GENERAL_RECORD");
+                break;
+			case 1:
+			    recordTypeStr = bundle.getString("ALARM_RECORD");
+                break;
+			case 2:
+			    recordTypeStr = bundle.getString("MOTION_DETECTION");
+                break;
+			case 3:
+			    recordTypeStr = bundle.getString("CARD_NUMBER_RECORD");
+                break;
+			case 5:
+			    recordTypeStr = bundle.getString("INTELLIGENT_DETECTION");
+                break;
+			case 19:
+			    recordTypeStr = bundle.getString("POS_RECORD");
+                break;
+            default:
+            	break;
+		}
+		
+		return recordTypeStr;
+	}
+    
+	public int getRecordTypeInt(String recordFileStr) {
+		int recordType = -1;
+		if(recordFileStr.equals(bundle.getString("GENERAL_RECORD"))) {
+			recordType = 0;
+		} else if(recordFileStr.equals(bundle.getString("ALARM_RECORD"))) {
+			recordType = 1;
+		} else if(recordFileStr.equals(bundle.getString("MOTION_DETECTION"))) {
+			recordType = 2;
+		} else if(recordFileStr.equals(bundle.getString("CARD_NUMBER_RECORD"))) {
+			recordType = 3;
+		}else if(recordFileStr.equals(bundle.getString("INTELLIGENT_DETECTION"))){
+			recordType=11;
+		}else if(recordFileStr.equals(bundle.getString("POS_RECORD"))){
+			recordType=19;
+		}
+
+		
+		return recordType;
+	}  
+    
+	/**
+	 * 语音对讲
+	 */
+	public String getTalk() {
+		return bundle.getString("TALK");
+	}
+	
+	public String getTransmitType() {
+    	return bundle.getString("TRANSMIT_TYPE");
+    }
+	
+	public String getLocalTransmitType() {
+    	return bundle.getString("LOCAL_TRANSMIT_TYPE");
+    }
+	
+	public String getRemoteTransmitType() {
+    	return bundle.getString("REMOTE_TRANSMIT_TYPE");
+    }
+	
+	public String getTransmitChannel() {
+    	return bundle.getString("TRANSMIT_CHANNEL");
+    }
+	
+	public String getStartTalk() {
+    	return bundle.getString("START_TALK");
+    }
+	
+	public String getStopTalk() {
+    	return bundle.getString("STOP_TALK");
+    }
+	
+	public String getTalkFailed() {
+    	return bundle.getString("TALK_FAILED");
+    }
+    
+	public String getDeviceSearchAndInit() {
+		return bundle.getString("DEVICESEARCH_DEVICEINIT");
+	}
+	
+    public String getDeviceSearchOperate() {
+    	return bundle.getString("DEVICESEARCH_OPERATE");
+    }
+    
+    public String getDeviceSearchResult() {
+    	return bundle.getString("DEVICESEARCH_RESULT");
+    }
+    
+    public String getDeviceInit() {
+    	return bundle.getString("DEVICEINIT");
+    }
+    
+    public String getStartSearch() {
+    	return bundle.getString("START_SEARCH");
+    }
+    
+    public String getStopSearch() {
+    	return bundle.getString("STOP_SEARCH");
+    }
+    
+    public String getPleaseSelectInitializedDevice() {
+    	return bundle.getString("PLEASE_FIRST_SELECT_INITIALIZED_DEVICE");
+    }
+    
+    public String getDeviceSearch() {
+    	return bundle.getString("DEVICESEARCH");
+    }
+    
+    public String getDevicePointToPointSearch() {
+    	return bundle.getString("DEVICE_POINT_TO_POINT_SEARCH");
+    }
+    
+    public String getStartIp() {
+    	return bundle.getString("START_IP");
+    }
+    
+    public String getEndIp() {
+    	return bundle.getString("END_IP");
+    }
+    
+    public String getControlScope() {
+    	return bundle.getString("THE_IP_CONTROL_SCOPE");
+    }
+    
+    public String getDeviceType() {
+    	return bundle.getString("DEVICE_TYPE");
+    }
+    
+    public String getDeviceMac() {
+    	return bundle.getString("MAC");
+    }
+    
+    public String getDeviceSn() {
+    	return bundle.getString("SN");
+    }
+    
+    public String getDeviceInitState() {
+    	return bundle.getString("DEVICE_INIT_STATE");
+    }
+    
+    public String getInitPasswd() {
+    	return bundle.getString("INIT_PASSWD");
+    }
+    
+    public String[] getDeviceTableName() {
+    	String[] name = {getIndex(),
+    					 getDeviceInitState(),
+    					 getIpVersion(),
+    					 getDeviceIp(),
+    					 getPort(),
+    					 getSubMask(),
+    					 getGetway(),
+    				     getDeviceMac(),				 
+    					 getDeviceType(),
+    					 getDetailType(),
+    					 getHttpPort()};
+    	
+    	return name; 
+    }
+    
+    public String getIpVersion() {
+    	return bundle.getString("IP_VERSION");
+    }
+    
+    public String getSubMask() {
+    	return bundle.getString("SUB_MASK");
+    }
+    
+    public String getGetway() {
+    	return bundle.getString("GETWAY");
+    }
+    
+    public String getDetailType() {
+    	return bundle.getString("DETAIL_TYPE");
+    }
+    
+    public String getHttpPort() {
+    	return bundle.getString("HTTP_PORT");
+    }
+    
+    public String getLocalIp() {
+    	return bundle.getString("LOCAL_IP");
+    }
+    
+    public String getInitialized() {
+    	return bundle.getString("INITIALIZED");
+    }
+    
+    public String getNotInitialized() {
+    	return bundle.getString("NOT_INITIALIZED");
+    }
+    
+    public String getOldDevice() {
+    	return bundle.getString("OLD_DEVICE");
+    }
+    
+    public String getNotSupportInitialization() {
+    	return bundle.getString("DONOT_SUPPORT_INITIALIZATION");
+    }
+    
+    public String getPhone() {
+    	return bundle.getString("PHONE");
+    }
+    
+    public String getMail() {
+    	return bundle.getString("MAIL");
+    }
+    
+    public String getInputPhone() {
+    	return bundle.getString("PLEASE_INPUT_PHONE");
+    }
+    
+    public String getInputMail() {
+    	return bundle.getString("PLEASE_INPUT_MAIL");
+    }
+    
+    public String getConfirmPassword() {
+    	return bundle.getString("CONFIRM_PASSWORD");
+    }
+    
+    public String getInconsistent() {
+    	return bundle.getString("INCONSISTENT");
+    }
+    
+    public String getCheckIp() {
+    	return bundle.getString("PLEASE_CHECK_IP");
+    }
+    
+    // 0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户
+    public String getInitStateInfo(int initStatus) {
+    	String initStateInfo = "";
+    	switch(initStatus) {
+    		case 0:
+    			initStateInfo = getInitialized();
+    			break;
+    		case 1:
+    			initStateInfo = getNotInitialized();
+    			break;
+    		case 2:
+    			initStateInfo = getInitialized();
+    			break;
+    	}
+    	return initStateInfo;
+    }
+    
+    public String  getAlarmListen() {
+    	return bundle.getString("ALARM_LISTEN");
+    }
+    
+    public String  getStartListen() {
+    	return bundle.getString("START_LISTEN");
+    }
+    
+    public String  getStopListen() {
+    	return bundle.getString("STOP_LISTEN");
+    }
+    public String getStopListenFailed(){
+		return bundle.getString("STOP_LISTEN_FAILED");
+	}
+    public String  getShowAlarmEvent() {
+    	return bundle.getString("SHOW_ALARM_EVENT");
+    }
+    
+    public String  getAlarmMessage() {
+    	return bundle.getString("ALARM_MESSAGE");
+    }
+    
+    public String getExternalAlarm() {
+    	return bundle.getString("EXTERNAL_ALARM");
+    }
+    
+    public String getMotionAlarm() {
+    	return bundle.getString("MOTION_ALARM");
+    }
+    
+    public String getVideoLostAlarm() {
+    	return bundle.getString("VIDEOLOST_ALARM");
+    }
+    
+    public String getShelterAlarm() {
+    	return bundle.getString("SHELTER_ALARM");
+    }
+    
+    public String getDiskFullAlarm() {
+    	return bundle.getString("DISKFULL_ALARM");
+    }
+    
+    public String getDiskErrorAlarm() {
+    	return bundle.getString("DISKERROR_ALARM");
+    }
+    
+    public String getAlarmListenFailed() {
+    	return bundle.getString("ALARM_LISTEN_FAILED");
+    }
+    
+    public String getStart() {
+    	return bundle.getString("START");
+    }
+    
+    public String getStop() {
+    	return bundle.getString("STOP");
+    }
+    
+    public String getDeviceControl() {
+    	return bundle.getString("DEVICE_CONTROL");
+    }
+    
+    public String getDeviceReboot() {
+    	return bundle.getString("DEVICE_REBOOT");
+    }
+    
+    public String getSyncTime() {
+    	return bundle.getString("SYNCHRONIZE_TIME");
+    }
+    
+    public String getCurrentTime() {
+    	return bundle.getString("CURRENT_TIME");
+    }
+    
+    public String getReboot() {
+    	return bundle.getString("REBOOT");
+    }
+    
+    public String getRebootTips() {
+    	return bundle.getString("REBOOT_TIPS");
+    }
+    
+    public String getGetTime() {
+    	return bundle.getString("GET_TIME");
+    }
+    
+    public String getSetTime() {
+    	return bundle.getString("SET_TIME");
+    }
+    
+    public String getOperateSuccess() {
+    	return bundle.getString("OPERATE_SUCCESS");
+    }
+
+    public String getTargetRecognition() {
+    	return bundle.getString("TARGETRECOGNITION");
+    }
+    
+    public String[] getGroupTable() {
+    	String[] faceTable = {getFaceGroupId(),
+    						  getFaceGroupName(),
+				    		  bundle.getString("PERSON_COUNT")};
+    	return faceTable;
+    }
+    
+    public String getFaceGroupId() {
+    	return bundle.getString("FACE_GROUP_ID");
+    }
+    
+    public String getFaceGroupName() {
+    	return bundle.getString("FACE_GROUP_NAME");
+    }
+    
+    public String getGroupOperate() {
+    	return bundle.getString("GROUP_OPERATE");
+    }
+    
+    public String getPersonOperate() {
+    	return bundle.getString("PERSON_OPERATE");
+    }
+    
+    public String getGlobalPicture() {
+    	return bundle.getString("GLOBAL_PICTURE");
+    }
+    
+    public String getPersonPicture() {
+    	return bundle.getString("PERSON_PICTURE");
+    }
+    
+    public String getCandidatePicture() {
+    	return bundle.getString("CANDIDATE_PICTURE");
+    }
+    
+    public String getTime() {
+    	return bundle.getString("TIME");
+    }
+    
+    public String getSex() {
+    	return bundle.getString("SEX");
+    }
+    
+    public String getAge() {
+    	return bundle.getString("AGE");
+    }
+ 
+    
+    public String getColor() {
+    	return bundle.getString("COLOR");
+    }
+    
+    public String getEye() {
+    	return bundle.getString("EYE");
+    }
+    
+    public String getMouth() {
+    	return bundle.getString("MOUTH");
+    }
+    
+    public String getMask() {
+    	return bundle.getString("MASK");
+    }
+    
+    public String getBeard() {
+    	return bundle.getString("BEARD");
+    }
+    
+    public String getName() {
+    	return bundle.getString("NAME");
+    }
+    
+    public String getBirthday() {
+    	return bundle.getString("BIRTHDAY");
+    }
+    
+    public String getIdNo() {
+    	return bundle.getString("ID_NO");
+    }
+    
+    public String getIdType() {
+    	return bundle.getString("ID_TYPE");
+    }
+    
+    public String getSimilarity() {
+    	return bundle.getString("SIMILARITY");
+    }
+    
+    public String getTargetDetectEvent() {
+    	return bundle.getString("TARGET_DETECT_EVENT");
+    }
+    
+    public String getTargetRecognitionEvent() {
+    	return bundle.getString("TARGET_RECOGNITION_EVENT");
+    }
+    
+    public String getUid() {
+    	return bundle.getString("UID");
+    }
+    
+    public String getGlasses() {
+    	return bundle.getString("GLASSES");
+    }
+    
+    public String getPicturePath() {
+    	return bundle.getString("PICTURE_PATH");
+    }
+    
+    public String getFaceLibraryID() {
+    	return bundle.getString("FACE_LIBRARY_ID");
+    }
+    
+    public String getFaceLibraryName() {
+    	return bundle.getString("FACE_LIBRARY_NAME");
+    }
+    
+    public String[] getPersonTable() {
+    	String[] personTable = {getUid(), getName(), getSex(), getBirthday(), getIdType(), getIdNo()};
+    	return personTable;
+    }
+    
+    public String[] getDispositionTable() {
+    	String[] dispositionTable = {getChannel(), getSimilarity()};
+    	return dispositionTable;
+    }
+    
+    public String getUnKnow() {
+    	return bundle.getString("UNKNOW");
+    }
+    
+    public String getMale() {
+    	return bundle.getString("MALE");
+    }
+    
+    public String getFemale() {
+    	return bundle.getString("FEMALE");
+    }
+    
+    public String[] getSexStringsFind() {
+    	String[] faceSexStr = {getUnLimited(), getMale(), getFemale()}; 	
+    	return faceSexStr;
+    }
+    
+    public String[] getIdStringsFind() {
+    	String[] idStr = {getUnLimited(), getIdCard(), getPassport(),};
+    	return idStr;
+    }
+    
+    public String[] getSexStrings() {
+    	String[] faceSexStr = {getUnKnow(), getMale(), getFemale()}; 	
+    	return faceSexStr;
+    }
+    
+    public String[] getIdStrings() {
+    	String[] idStr = {getUnKnow(), getIdCard(), getPassport(),};
+    	return idStr;
+    }
+    
+    public String getIdCard() {
+    	return bundle.getString("ID_CARD");
+    }
+    
+    public String getPassport() {
+    	return bundle.getString("PASSPORT");
+    }
+    
+    public String getOfficeCard() {
+    	return bundle.getString("OFFICE_CARD");
+    }
+    
+    public String getIdType(int idType) {
+    	String str = "";
+    	switch(idType) {
+	    	case 0:
+	    		str = getUnKnow();
+	    		break;
+	    	case 1:
+	    		str = getIdCard();
+	    		break;
+	    	case 2:
+	    		str =  getPassport();
+	    		break;
+	    	case 3:
+	    		str =  getOfficeCard();
+	    		break;
+			default :
+				str = getUnKnow();
+				break;
+		}
+		return str;
+    }
+    
+    public String getSex(int sex) {
+    	String str = ""; 	
+    	switch(sex) {
+	    	case 0:
+	    		str = getUnKnow();
+	    		break;
+	    	case 1:
+	    		str = getMale();
+	    		break;
+	    	case 2:
+	    		str = getFemale();
+	    		break;
+    		default :
+    			str = getUnKnow();
+    			break;
+    	}
+    	return str;
+    }
+    
+    public String getUnLimited() {
+    	return bundle.getString("UNLIMITED");
+    }
+    
+    public String getUnidentified() {
+    	return bundle.getString("UNIDENTIFIED");
+    }
+    
+    public String getHaveBeard() {
+    	return bundle.getString("HAVE_BEARD");
+    }
+    
+    public String getNoBeard() {
+    	return bundle.getString("NO_BEARD");
+    }
+    
+	public String getBeardState(int beard) {
+		String str = "";	
+		switch (beard) {
+			case 0:
+				str = getUnKnow();
+				break;
+			case 1:
+				str = getUnidentified();	
+					break;
+			case 2:
+				str = getNoBeard();	
+				break;
+			case 3:
+				str = getHaveBeard();	
+				break;
+			default:
+				str = getUnKnow();
+    			break;
+		}	
+		return str;
+	}
+	
+	public String getOpenMouth() {
+		return bundle.getString("OPEN_MOUTH");
+	}
+	
+	public String getCloseMouth() {
+		return bundle.getString("CLOSE_MOUTH");
+	}
+	
+	public String getMouthState(int mouth) {
+		String str = "";	
+		switch (mouth) {
+			case 0:
+				str = getUnKnow();
+				break;
+			case 1:
+				str = getUnidentified();
+					break;
+			case 2:
+				str = getCloseMouth();	
+				break;
+			case 3:
+				str = getOpenMouth();	
+				break;
+			default:
+				str = getUnKnow();
+				break;
+		}	
+		return str;
+	}
+	
+	public String getYellowColor() {
+		return bundle.getString("YELLOW_COLOR");
+	}
+	
+	public String getBlackColor() {
+		return bundle.getString("BLACK_COLOR");
+	}
+	
+	public String getWhiteColor() {
+		return bundle.getString("WHITE_COLOR");
+	}
+
+	public String getColor(int color) {
+		String str = "";	
+		switch (color) {
+			case 0:
+				str = getUnKnow();
+				break;
+			case 1:
+				str = getUnidentified();	
+					break;
+			case 2:
+				str = getYellowColor();
+				break;
+			case 3:
+				str = getBlackColor();
+				break;
+			case 4:
+				str = getWhiteColor();
+				break;
+			default:
+				str = getUnKnow();
+				break;
+		}	
+		return str;
+	}
+	
+	public String getOpenEye() {
+		return bundle.getString("OPEN_EYE");
+	}
+	
+	public String getCloseEye() {
+		return bundle.getString("CLOSE_EYE");
+	}
+	
+	public String getEyeState(int eye) {
+		String str = getUnidentified();	
+		switch (eye) {
+			case 0:
+				str = getUnKnow();
+				break;
+			case 1:
+				str = getUnidentified();	
+					break;
+			case 2:
+				str = getCloseEye();	
+				break;
+			case 3:
+				str = getOpenEye();	
+				break;
+			default:
+				str = getUnKnow();
+				break;
+		}	
+		return str;
+	}
+	
+	public String getSmile() {
+		return bundle.getString("SMILE");
+	}
+	
+	public String getAnger() {
+		return bundle.getString("ANGER");
+	}
+	
+	public String getSadness() {
+		return bundle.getString("SADNESS");
+	}
+	
+	public String getDisgust() {
+		return bundle.getString("DISGUST");
+	}
+	
+	public String getFear() {
+		return bundle.getString("FEAR");
+	}
+	
+	public String getSurprise() {
+		return bundle.getString("SURPRISE");
+	}
+	
+	public String getNeutral() {
+		return bundle.getString("NEUTRAL");
+	}
+	
+	public String getLaugh() {
+		return bundle.getString("LAUGH");
+	}
+	
+	public String getFaceFeature(int type) {
+		String str = "";
+		switch (type) {
+			case 0:
+				str = getUnKnow();
+				break;
+			case 1:
+				str = getWearGlasses();
+				break;
+			case 2:
+				str = getSmile();
+				break;
+			case 3:
+				str = getAnger();
+				break;
+			case 4:
+				str = getSadness();
+				break;
+			case 5:
+				str = getDisgust();
+				break;
+			case 6:
+				str = getFear();
+				break;
+			case 7:
+				str = getSurprise();
+				break;
+			case 8:
+				str = getNeutral();
+				break;
+			case 9:
+				str = getLaugh();
+				break;
+			default:
+				str = getUnKnow();
+				break;
+		}
+		return str;
+	}
+	
+	public String getWearMask() {
+		return bundle.getString("WEAR_MASK");
+	}
+	
+	public String geNoMask() {
+		return bundle.getString("NO_MASK");
+	}
+	
+	public String getMaskState(int type) {
+		String maskStateStr = "";
+		switch (type) {
+			case 0:
+				maskStateStr = getUnKnow();
+				break;
+			case 1:
+				maskStateStr = getUnidentified();
+				break;
+			case 2:
+				maskStateStr = geNoMask();
+				break;
+			case 3:
+				maskStateStr = getWearMask();
+				break;
+			default:
+				maskStateStr = getUnKnow();
+				break;
+		}
+		return maskStateStr;
+	}
+	
+	public String getWearGlasses() {
+		return bundle.getString("WEAR_GLASSES");
+	}
+	
+	public String getNoGlasses() {
+		return bundle.getString("NO_GLASSES");
+	}
+	
+	public String getGlasses(int byGlasses) {
+		String glassesStr = "";
+		switch (byGlasses) {
+			case 0:
+				glassesStr = getUnKnow();
+				break;
+			case 1:
+				glassesStr = getNoGlasses();
+				break;
+			case 2:
+				glassesStr = getWearGlasses();
+				break;
+			default:
+				break;
+		}
+		return glassesStr;
+	}
+	
+	public String getAdd() {
+		return bundle.getString("ADD");
+	}
+	
+	public String getModify() {
+		return bundle.getString("MODIFY");
+	}
+	
+	public String getSelectData() {
+		return bundle.getString("SELECT_DATA");
+	}
+	
+	public String getDelete() {
+		return bundle.getString("DELETE");
+	}
+	
+	public String getFresh() {
+		return bundle.getString("FRESH");
+	}
+	
+	public String getAddGroup() {
+		return bundle.getString("ADD_GROUP");
+	}
+	
+	public String getModifyGroup() {
+		return bundle.getString("MODIFY_GROUP");
+	}
+	
+	public String getDelGroup() {
+		return bundle.getString("DEL_GROUP");
+	}
+	
+	public String getDisposition() {
+		return bundle.getString("DISPOSITION");
+	}
+	
+	public String getDelDisposition() {
+		return bundle.getString("DEL_DISPOSITION");
+	}
+	
+	public String getSimilarityRange() {
+		return bundle.getString("SIMILARITY_RANGE");
+	}
+	
+	public String getFindCondition() {
+		return bundle.getString("FIND_CONDITION");
+	}
+	
+	public String getFindPerson() {
+		return bundle.getString("FIND_PERSON");
+	}
+	
+	public String getAddPerson() {
+		return bundle.getString("ADD_PERSON");
+	}
+	
+	public String getModifyPerson() {
+		return bundle.getString("MODIFY_PERSON");
+	}
+	
+	public String getDelPerson() {
+		return bundle.getString("DEL_PERSON");
+	}
+	
+	public String getPreviousPage() {
+		return bundle.getString("PREVIOUSPAGE");
+	}
+	
+	public String getLastPage() {
+		return bundle.getString("LASTPAGE");
+	}
+	
+	public String getSelectPicture() {
+		return bundle.getString("SELECT_PICTURE");
+	}
+	
+	public String getSearchByPic() {
+		return bundle.getString("SEARCH_BY_PIC");
+	}
+	
+	public String getDownloadQueryPicture() {
+		return bundle.getString("DOWNLOAD_QUERY_PICTURE");
+	}
+	
+	public String getFaceLibrary() {
+		return bundle.getString("FACE_LIBRARY");
+	}
+	
+	public String getChooseFacePic() {
+		return bundle.getString("CHOOSE_FACE_PIC");
+	}
+	
+	public String getHistoryLibrary() {
+		return bundle.getString("HISTORY_LIBRARY");
+	}
+	
+	public String getEventType() {
+		return bundle.getString("EVENT_TYPE");
+	}
+	
+	public String getStranger() {
+		return bundle.getString("STRANGER");
+	}
+	
+	public String getInputGroupName() {
+		return bundle.getString("PLEASE_INPUT_GROUPNAME");
+	}
+	
+	public String getSelectGroup() {
+		return bundle.getString("PLEASE_SELECT_GROUP");
+	}
+	
+	public String getSelectPerson() {
+		return bundle.getString("PLEASE_SELECT_PERSON");
+	}
+	
+	public String getAddDispositionInfo() {
+		return bundle.getString("PLEASE_ADD_DISPOSITION_INFO");
+	}
+	
+	public String getSelectDelDispositionInfo() {
+		return bundle.getString("PLEASE_SELECT_DEL_DISPOSITION_INFO");
+	}
+	
+	public String getPagesNumber() {
+		return bundle.getString("PAGES_NUMBER");
+	}
+	
+	public String getAutoRegister() {
+		return bundle.getString("AUTOREGISTER");
+	}
+	
+	public String getAutoRegisterListen() {
+		return bundle.getString("AUTOREGISTER_LISTEN");
+	}
+	
+	public String getDeviceConfig() {
+		return bundle.getString("DEVICE_CONFIG");
+	}
+	
+	public String getDeviceList() {
+		return bundle.getString("DEVICE_LIST");
+	}
+	
+	public String getDeviceManager() {
+		return bundle.getString("DEVICE_MANAGER");
+	}
+	
+	public String getAddDevice() {
+		return bundle.getString("ADD_DEVICE");
+	}
+	
+	public String getModifyDevice() {
+		return bundle.getString("MODIFY_DEVICE");
+	}
+	
+	public String getDeleteDevice() {
+		return bundle.getString("DELETE_DEVICE");
+	}
+	
+	public String getClearDevice() {
+		return bundle.getString("CLEAR_DEVICE");
+	}
+	
+	public String getImportDevice() {
+		return bundle.getString("IMPORT_DEVICE");
+	}
+	
+	public String getExportDevice() {
+		return bundle.getString("EXPORT_DEVICE");
+	}
+	
+	public String getFunctionOperate() {
+		return bundle.getString("FUNCTION") + bundle.getString("OPERATE");
+	}
+	
+	public String getDeviceID() {
+		return bundle.getString("DEVICE_ID");
+	}
+	
+	public String getEnable() {
+		return bundle.getString("ENABLE");
+	}
+	
+	public String getRegisterAddress() {
+		return bundle.getString("REGISTER_ADDRESS");
+	}
+	
+	public String getRegisterPort() {
+		return bundle.getString("REGISTER_PORT");
+	}
+	
+	public String getGet() {
+		return bundle.getString("GET");
+	}
+	
+	public String getSet() {
+		return bundle.getString("SET");
+	}
+	
+	public String getAlreadyExisted() {
+		return bundle.getString("ALREADY_EXISTED");
+	}
+	
+	public String getWhetherNoToCover() {
+		return bundle.getString("ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER");
+	}
+	
+	public String getFileOpened(){
+		return bundle.getString("FILE_OPEN_PLEASE_CLOSE_FILE");
+	}
+	
+	public String getImportCompletion() {
+		return bundle.getString("IMPORT_COMPLETION");
+	}
+	
+	public String getExportCompletion() {
+		return bundle.getString("EXPORT_COMPLETION");
+	}
+	
+	public String getFileNotExist() {
+		return bundle.getString("FILE_NOT_EXIST");
+	}
+	
+	public String getRecord() {
+		return bundle.getString("RECORD");
+	}
+	
+	public String getInput() {
+		return bundle.getString("PLEASE_INPUT");
+	}
+	
+	public String getMaximumSupport() {
+		return bundle.getString("MAX_SUPPORT_100");
+	}
+	
+	public String getDeviceLogined() {
+		return bundle.getString("DEVICE_LOGIN");
+	}
+	
+	public String getAttendance() {
+		return bundle.getString("ATTENDANCE");
+	}
+	
+	public String getFingerPrintOperate() {
+		return bundle.getString("FINGERPRINT_OPERATE");
+	}
+	
+	public String getUserOperate() {
+		return bundle.getString("USER_OPERATE");
+	}
+	
+	public String getOperateByUserId() {
+		return bundle.getString("OPERATE_BY_USER_ID");
+	}
+	
+	public String getOperateByFingerPrintId() {
+		return bundle.getString("OPERATE_BY_FINGERPRINT_ID");
+	}
+	
+	public String getSearch() {
+		return bundle.getString("SEARCH");
+	}
+	
+	public String getQueryCondition() {
+		return bundle.getString("QUERY_CONDITION");
+	}
+	
+	public String getFingerPrintId() {
+		return bundle.getString("FINGERPRINT_ID");
+	}
+	
+	public String getSearchFingerPrint() {
+		return bundle.getString("SEARCH_FINGERPRINT");
+	}
+	
+	public String getAddFingerPrint() {
+		return bundle.getString("ADD_FINGERPRINT");
+	}
+	
+	public String getDeleteFingerPrint() {
+		return bundle.getString("DELETE_FINGERPRINT");
+	}
+	
+	public String getSubscribe() {
+		return bundle.getString("SUBSCRIBE");
+	}
+	
+	public String getUnSubscribe() {
+		return bundle.getString("UNSUBSCRIBE");
+	}
+	
+	public String getUserList() {
+		return bundle.getString("USER_LIST");
+	}
+	
+	public String getNextPage() {
+		return bundle.getString("NEXT_PAGE");
+	}
+	
+	public String getUserInfo() {
+		return bundle.getString("USER_INFO");
+	}
+	
+	public String getDoorOpenMethod() {
+		return bundle.getString("DOOROPEN_METHOD");
+	}
+	
+	public String getFingerPrint() {
+		return bundle.getString("FINGERPRINT");
+	}
+	
+	public String getFingerPrintInfo() {
+		return bundle.getString("FINGERPRINT_INFO");
+	}
+	
+	public String getFingerPrintData() {
+		return bundle.getString("FINGERPRINT_DATA");
+	}
+	
+	public String getCard() {
+		return bundle.getString("CARD");
+	}
+	
+	public String getDeleteFingerPrintPrompt() {
+		return bundle.getString("DELETE_FINGERPRINT_PROMPT");
+	}
+	
+	public String getSubscribeFailed() {
+		return bundle.getString("SUBSCRIBE_FAILED");
+	}
+	
+	public String getFingerPrintIdIllegal() {
+		return bundle.getString("FINGERPRINT_ID_ILLEGAL");
+	}
+	
+	public String getcFingerPrintCollection() {
+		return bundle.getString("FINGERPRINT_COLLECTION");
+	}
+	
+	public String getStartCollection() {
+		return bundle.getString("START_COLLECTION");
+	}
+	
+	public String getStopCollection() {
+		return bundle.getString("STOP_COLLECTION");
+	}
+	
+	public String getInCollection() {
+		return bundle.getString("IN_THE_COLLECTION");
+	}
+	
+	public String getcCompleteCollection() {
+		return bundle.getString("COLLECTION_COMPLETED");
+	}
+	
+	public String getCollectionFailed() {
+		return bundle.getString("COLLECTION_FAILED");
+	}
+	
+	public String getFingerPrintIdNotExist() {
+		return bundle.getString("FINGERPRINT_ID_NOT_EXIST");
+	}
+	
+	public String getUserIdExceedLength() {
+		return bundle.getString("USER_ID_EXCEED_LENGTH");
+	}
+	
+	public String getUserNameExceedLength() {
+		return bundle.getString("USER_NAME_EXCEED_LENGTH");
+	}
+	
+	public String getCardNoExceedLength() {
+		return bundle.getString("CARD_NO_EXCEED_LENGTH");
+	}
+	
+	public String getCardNameExceedLength() {
+		return bundle.getString("CARD_NAME_EXCEED_LENGTH");
+	}
+	
+	public String getCardPasswdExceedLength() {
+		return bundle.getString("CARD_PASSWD_EXCEED_LENGTH");
+	}
+	
+	public String getGate() {
+		return bundle.getString("GATE");
+	}
+	
+	public String getCardOperate() {
+		return bundle.getString("CARD_OPERATE");
+	}
+	
+	public String getCardInfo() {
+		return bundle.getString("CARD_INFO");
+	}
+	
+	public String getCardManager() {
+		return bundle.getString("CARD_MANAGER");
+	}
+	
+	public String getClear() {
+		return bundle.getString("CLEAR");
+	}
+	
+	public String getOpenStatus() {
+		return bundle.getString("OPEN_STATUS");
+	}
+	
+	public String getOpenMethod() {
+		return bundle.getString("OPEN_METHOD");
+	}
+	
+	public String getCardName() {
+		return bundle.getString("CARD_NAME");
+	}
+	
+	public String getCardStatus() {
+		return bundle.getString("CARD_STATUS");
+	}
+	
+	public String getCardPassword() {
+		return bundle.getString("CARD_PASSWORD");
+	}
+	
+	public String getCardType() {
+		return bundle.getString("CARD_TYPE");
+	}
+	
+	public String getCardNum() {
+		return bundle.getString("CARD_NUM");
+	}
+	
+	public String getUseTimes() {
+		return bundle.getString("USE_TIMES");
+	}
+	
+	public String getIsFirstEnter() {
+		return bundle.getString("IS_FIRST_ENTER");
+	}
+	
+	public String getIsValid() {
+		return bundle.getString("IS_VALID");
+	}
+	
+	public String getValidPeriod() {
+		return bundle.getString("VALID_PERIOD");
+	}
+	
+	public String getValidStartTime() {
+		return bundle.getString("VALID_START_TIME");
+	}
+	
+	public String getValidEndTime() {
+		return bundle.getString("VALID_END_TIME");
+	}
+	
+	public String getRecordNo() {
+		return bundle.getString("RECORD_NO");
+	}
+	
+	public String getFirstEnter() {
+		return bundle.getString("FIRST_ENTER");
+	}
+	
+	public String getNoFirstEnter() {
+		return bundle.getString("NO_FIRST_ENTER");
+	}
+	
+	public String getValid() {
+		return bundle.getString("VALID");
+	}
+	
+	public String getInValid() {
+		return bundle.getString("INVALID");
+	}
+	
+	public String getSelectCard() {
+		return bundle.getString("PLEASE_SELECT_CARD");
+	}
+	
+	public String getInputCardNo() {
+		return bundle.getString("PLEASE_INPUT_CARDNO");
+	}
+	
+	public String getInputUserId() {
+		return bundle.getString("PLEASE_INPUT_USERID");
+	}
+	
+	public String getWantClearAllInfo() {
+		return bundle.getString("WANT_CLEAR_ALL_INFO");
+	}
+	
+	public String getFailedAddCard() {
+		return bundle.getString("ADD_CARD_INDO_FAILED");
+	}
+	
+	public String getSucceedAddCardAndPerson() {
+		return bundle.getString("ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED");
+	}
+	
+	public String getSucceedAddCardButFailedAddPerson() {
+		return bundle.getString("ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED");
+	}
+	
+	public String getCardExistedSucceedAddPerson() {
+		return bundle.getString("CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED");
+	}
+	
+	public String getSucceedModifyCard() {
+		return bundle.getString("MODIFY_CARD_INFO_SUCCEED");
+	}
+	
+	public String getFailedModifyCard() {
+		return bundle.getString("MODIFY_CARD_INFO_FAILED");
+	}
+	
+	public String getSucceedModifyCardAndPerson() {
+		return bundle.getString("MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED");
+	}
+	
+	public String getSucceedModifyCardButFailedModifyPerson() {
+		return bundle.getString("MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED");
+	}
+	
+	public String[] getCardTable() {
+		return new String[] {getIndex(),
+							 getCardNo(),
+							 getCardName(),
+							 getRecordNo(),
+							 getUserId(),			
+							 getCardPassword(), 
+							 getCardStatus(),
+							 getCardType(),
+							 getUseTimes(),
+							 getIsFirstEnter(),
+							 getIsValid(),
+							 getValidStartTime(),
+							 getValidEndTime()};
+	}
+	
+	/*
+	 * 用于列表显示
+	 */
+	public String getCardStatus(int status) {
+		String statusString = "";
+		switch(status) {
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN:   // 未知
+				statusString = bundle.getString("STATE_UNKNOWN");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_NORMAL:   // 正常
+				statusString = bundle.getString("STATE_NORMAL");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOSE:   // 挂失
+				statusString = bundle.getString("STATE_LOSE");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOGOFF:   // 注销
+				statusString = bundle.getString("STATE_LOGOFF");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_FREEZE:   // 冻结
+				statusString = bundle.getString("STATE_FREEZE");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_ARREARAGE:   // 欠费
+				statusString = bundle.getString("STATE_ARREARS"); 
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_OVERDUE:  // 逾期
+				statusString = bundle.getString("STATE_OVERDUE");
+				break;
+			case NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_PREARREARAGE:  // 预欠费
+				statusString = bundle.getString("STATE_PREARREARS");
+				break;
+			default:
+				statusString = bundle.getString("STATE_UNKNOWN");
+				break;
+		}
+		
+		return statusString;					
+	}
+	
+	/*
+	 * 根据控件的索引,获取对应的卡状态的Int值, 用于添加 和 修改卡信息
+	 */
+	public int getCardStatusInt(int index) {
+		int status = 0;
+		switch(index) {
+			case 1:   // 未知
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN;
+				break;
+			case 0:   // 正常
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_NORMAL;
+				break;
+			case 2:   // 挂失
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOSE;
+				break;
+			case 3:   // 注销
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_LOGOFF;
+				break;
+			case 4:   // 冻结
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_FREEZE;
+				break;
+			case 5:   // 欠费
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_ARREARAGE;
+				break;
+			case 6:  // 逾期
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_OVERDUE;
+				break;
+			case 7:  // 预欠费
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_PREARREARAGE;
+				break;
+			default:
+				status = NET_ACCESSCTLCARD_STATE.NET_ACCESSCTLCARD_STATE_UNKNOWN;
+				break;		
+		}
+		
+		return status;					
+	}
+	
+	/*
+	 * 根据字符串,获取控件对应的索引
+	 */
+	public int getCardStatusChomBoxIndex(String status) {
+		int index = 0;
+		
+		if(status.equals(bundle.getString("STATE_UNKNOWN"))) {
+			index = 1;
+		} else if(status.equals(bundle.getString("STATE_NORMAL"))){
+			index = 0;
+		} else if(status.equals(bundle.getString("STATE_LOSE"))) {
+			index = 2;
+		} else if(status.equals(bundle.getString("STATE_LOGOFF"))) {
+			index = 3;
+		} else if(status.equals(bundle.getString("STATE_FREEZE"))) {
+			index = 4;
+		} else if(status.equals(bundle.getString("STATE_ARREARS"))) {
+			index = 5;
+		} else if(status.equals(bundle.getString("STATE_OVERDUE"))) {
+			index = 6;
+		} else if(status.equals(bundle.getString("STATE_PREARREARS"))) {
+			index = 7;
+		} 
+		
+		return index;
+	}
+	
+	public String[] getCardStatusList() {
+		return new String[]{
+							bundle.getString("STATE_NORMAL"),
+							bundle.getString("STATE_UNKNOWN"), 
+							bundle.getString("STATE_LOSE"),
+							bundle.getString("STATE_LOGOFF"),
+							bundle.getString("STATE_FREEZE"),
+							bundle.getString("STATE_ARREARS"),
+							bundle.getString("STATE_OVERDUE"),
+							bundle.getString("STATE_PREARREARS")};
+	}
+	
+	/*
+	 * 用于列表显示
+	 */
+	public String getCardType(int type) {
+		String cardTypeString = "";
+		
+		switch(type) {
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN:  // 未知
+				cardTypeString = bundle.getString("CARD_UNKNOW");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GENERAL:  // 一般卡
+				cardTypeString = bundle.getString("CARD_GENERAL");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_VIP:      // 
+				cardTypeString = bundle.getString("CARD_VIP");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GUEST:    // 来宾卡
+				cardTypeString = bundle.getString("CARD_GUEST");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_PATROL:   // 巡逻卡
+				cardTypeString = bundle.getString("CARD_PATROL");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_BLACKLIST: // 禁止名单卡
+				cardTypeString = bundle.getString("CARD_BACKLIST");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_CORCE:     // 胁迫卡
+				cardTypeString = bundle.getString("CARD_COERCE");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_POLLING:   // 巡检卡
+				cardTypeString = bundle.getString("CARD_POLLING");
+				break;
+			case NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_MOTHERCARD: // 母卡
+				cardTypeString = bundle.getString("CARD_MOTHERCARD");
+				break;
+			default:
+				cardTypeString = bundle.getString("CARD_UNKNOW");
+				break;
+		}
+
+		return cardTypeString;
+	}
+	
+	/*
+	 * 根据控件索引,获取对应的卡类型Int值
+	 */
+	public int getCardTypeInt(int index) {
+		int type = 0;
+		
+		switch(index) {
+			case 1:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN;
+				break;
+			case 0:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GENERAL;
+				break;
+			case 2:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_VIP;
+				break;
+			case 3:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_GUEST;
+				break;
+			case 4:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_PATROL;
+				break;
+			case 5:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_BLACKLIST;
+				break;
+			case 6:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_CORCE;
+				break;
+			case 7:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_POLLING;
+				break;
+			case 8:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_MOTHERCARD;
+				break;
+			default:
+				type = NET_ACCESSCTLCARD_TYPE.NET_ACCESSCTLCARD_TYPE_UNKNOWN;
+				break;
+		}
+
+		return type;
+	}
+	
+	/*
+	 * 根据字符串,获取控件的索引
+	 */
+	public int getCardTypeChomBoxIndex(String type) {
+		int index = 0;
+		
+		if(type.equals(bundle.getString("CARD_UNKNOW"))) {
+			index = 1;
+		} else if(type.equals(bundle.getString("CARD_GENERAL"))){
+			index = 0;
+		} else if(type.equals(bundle.getString("CARD_VIP"))) {
+			index = 2;
+		} else if(type.equals(bundle.getString("CARD_GUEST"))) {
+			index = 3;
+		} else if(type.equals(bundle.getString("CARD_PATROL"))) {
+			index = 4;
+		} else if(type.equals(bundle.getString("CARD_BACKLIST"))) {
+			index = 5;
+		} else if(type.equals(bundle.getString("CARD_COERCE"))) {
+			index = 6;
+		} else if(type.equals(bundle.getString("CARD_POLLING"))) {
+			index = 7;
+		} else if(type.equals(bundle.getString("CARD_MOTHERCARD"))) {
+			index = 8;
+		}
+		
+		return index;
+	}
+	
+	public String[] getCardTypeList() {
+		return new String[]{
+							bundle.getString("CARD_GENERAL"),
+							bundle.getString("CARD_UNKNOW"), 
+							bundle.getString("CARD_VIP"),
+							bundle.getString("CARD_GUEST"),
+							bundle.getString("CARD_PATROL"),
+							bundle.getString("CARD_BACKLIST"),
+							bundle.getString("CARD_COERCE"),
+							bundle.getString("CARD_POLLING"),
+							bundle.getString("CARD_MOTHERCARD")};
+	}
+	
+	public String getMaskStatus(int emMaskStatus) {
+		String MaskStatus = "";
+		switch(emMaskStatus) {
+		case EM_MASK_STATE_TYPE.EM_MASK_STATE_UNKNOWN:
+			MaskStatus = bundle.getString("EM_MASK_STATE_UNKNOWN");
+			break;
+		case EM_MASK_STATE_TYPE.EM_MASK_STATE_NODISTI:
+			MaskStatus = bundle.getString("EM_MASK_STATE_NODISTI");
+			break;
+		case EM_MASK_STATE_TYPE.EM_MASK_STATE_NOMASK:
+			MaskStatus = bundle.getString("EM_MASK_STATE_NOMASK");
+			break;
+		case EM_MASK_STATE_TYPE.EM_MASK_STATE_WEAR:
+			MaskStatus = bundle.getString("EM_MASK_STATE_WEAR");
+			break;
+		}
+		return MaskStatus;
+	}
+	
+	public String getOpenMethods(int emOpenMethod) {
+		String openMethods = "";
+		switch(emOpenMethod) {
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_UNKNOWN:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_UNKNOWN");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_REMOTE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_REMOTE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_BUTTON:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_BUTTON");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_PERSONS:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_PERSONS");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_KEY:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_KEY");
+				break;			
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_QRCODE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_QRCODE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE");
+				break;
+			case NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE");
+				break;
+			default:
+				openMethods = bundle.getString("NET_ACCESS_DOOROPEN_METHOD_UNKNOWN");
+				break;
+		}
+		
+		return openMethods;
+	}
+	
+	public String getShowInfo(String tag) {
+		try {
+			return bundle.getString(tag);
+		}catch(Exception e) {
+			return tag;
+		}
+	}
+	
+	public String getThermalCamera() {
+		return getShowInfo("THERMAL_CAMERA");
+	}
+	
+	public String[] getMeterTypeList() {
+		String[] meterTypes = {getShowInfo("SPOT"), getShowInfo("LINE"), getShowInfo("AREA")};
+		
+		return meterTypes;
+	}
+	
+	public String[] getTemperUnitList() {
+		return new String[]{getShowInfo("CENTIGRADE"), getShowInfo("FAHRENHEIT")};
+	}
+	
+	public String[] getPeriodList() {
+		return new String[] {getShowInfo("FIVE_MINUTES"), getShowInfo("TEN_MINUTES"), 
+				getShowInfo("FIFTEEN_MINUTES"), getShowInfo("THIRTY_MINUTES")};
+	}
+	
+	public String[] getTemperStatusList() {
+		return new String[]{getShowInfo("IDLE"), getShowInfo("ACQUIRING")};
+	}
+	
+	public String getSearchingWait() {
+		return bundle.getString("SEARCHING_WAITING");
+	}
+
+	
+
+
+    ///////////// Human Number Statistic ///////////////
+
+    public String getHumanNumberStatistic() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_TITLE");
+    }
+
+    public String getHumanNumberStatisticAttach() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_CONTROL");
+    }
+
+    public String getHumanNumberStatisticEventTitle() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TITLE");
+    }
+
+    public String getHumanNumberStatisticEventChannel() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL");
+    }
+
+    public String getHumanNumberStatisticEventTime() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TIME");
+    }
+
+    public String getHumanNumberStatisticEventHourIn() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN");
+    }
+
+    public String getHumanNumberStatisticEventHourOut() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT");
+    }
+
+    public String getHumanNumberStatisticEventTodayIn() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN");
+    }
+
+    public String getHumanNumberStatisticEventTodayOut() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT");
+    }
+
+    public String getHumanNumberStatisticEventTotalIn() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN");
+    }
+
+    public String getHumanNumberStatisticEventTotalOut() {
+        return bundle.getString("HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT");
+    }
+
+    public String getHumanNumberStatisticEventClearOSD() {
+        return bundle.getString("HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR");
+    }
+    public String getVTOAlarmEventRoomNo(){
+		return bundle.getString("VTO_ALARM_EVENT_ROOM_NO");
+	}
+	public String getVTOAlarmEventCardNo(){
+		return bundle.getString("VTO_ALARM_EVENT_CARD_NO");
+	}
+
+	public String getVTOAlarmEventTime(){
+		return bundle.getString("VTO_ALARM_EVENT_TIME");
+	}
+	public String getVTOAlarmEventOpenMethod(){
+		return bundle.getString("VTO_ALARM_EVENT_OPEN_METHOD");
+	}
+	public String getVTOAlarmEventStatus(){
+		return bundle.getString("VTO_ALARM_EVENT_STATUS");
+	}
+	public String getVTORealLoadRoomNO(){
+		return bundle.getString("VTO_REAL_LOAD_ROOM_NO");
+	}
+	public String getVTORealLoadCardNo(){
+		return bundle.getString("VTO_REAL_LOAD_CARD_NO");
+	}
+	public String getVTORealLoadTime(){
+		return bundle.getString("VTO_REAL_LOAD_TIME");
+	}
+	public String getVTORealLoadEventInfo(){
+		return bundle.getString("VTO_REAL_LOAD_EVENT_INFO");
+	}
+	public String getVTOOperateManagerTitle(){
+		return bundle.getString("VTO_OPERATE_MANAGER_TITLE");
+	}
+	public String getInputRoomNo(){
+		return bundle.getString("INPUT_ROOM_NO");
+	}
+	public String getRoomNoExceedLength(){
+		return bundle.getString("ROOM_NO_EXCEED_LENGTH");
+	}
+	public String getVTOOperateManagerRecNo(){
+		return bundle.getString("VTO_OPERATE_MANAGER_REC_NO");
+	}
+	public String getVTOOperateManagerRoomNo(){
+		return bundle.getString("VTO_OPERATE_MANAGER_ROOM_NO");
+	}
+	public String getVTOOperateManagerCardNo(){
+		return bundle.getString("VTO_OPERATE_MANAGER_CARD_NO");
+	}
+	public String getVTOOperateManagerFingerPrintData(){
+		return bundle.getString("VTO_OPERATE_MANAGER_FINGER_PRINT_DATA");
+	}
+	public String getVTOOperateInfoTitle(){
+		return bundle.getString("VTO_OPERATE_INFO_TITLE");
+	}
+	public String getVTOOperateCollectionFingerPrintTitle(){
+		return bundle.getString("VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE");
+	}
+	public String getDoorOpen(){
+		return bundle.getString("DOOR_OPEN");
+	}
+	public String getDoorClose(){
+		return bundle.getString("DOOR_CLOSE");
+	}
+	public String getEventOperate(){
+		return bundle.getString("EVENT_OPERATE");
+	}
+	public String getStartRealLoad(){
+		return bundle.getString("START_REAL_LOAD_PIC");
+	}
+	public String getStopRealLoad(){
+		return bundle.getString("STOP_REAL_LOAD_PIC");
+	}
+	public String getAlarmEvent(){
+		return bundle.getString("ALARM_EVENT");
+	}
+	public String getRealLoadEvent(){
+		return bundle.getString("REAL_LOAD_EVENT");
+	}
+	public String getCollectionResult(){
+		return bundle.getString("COLLECTION_RESULT");
+	}
+	public String getNeedFingerPrint(){
+		return bundle.getString("NEED_FINGER_PRINT");
+	}
+	public String getFaceInfo(){
+		return bundle.getString("FACE_INFO");
+	}
+	public String getOpen(){
+		return bundle.getString("OPEN");
+	}
+
+///////////////////////////////////点阵屏设置/////////////////////////////////////、
+	public static String getmatrixScreen() {
+		// TODO Auto-generated method stub
+		return bundle.getString("MATRIX_SCREEN");
+	}
+	public String getPassingState(){
+		return bundle.getString("PASSING_STATE");
+	}
+	public String getPassingCar(){
+		return bundle.getString("PASSING_CAR");
+	}
+	public String getNoCar(){
+		return bundle.getString("NO_CAR");
+	}
+	public String getInTime(){
+		return bundle.getString("IN_TIME");
+	}
+	public String getOutTime(){
+		return bundle.getString("OUT_TIME");
+	}
+	public String getPlateNumber(){
+		return bundle.getString("PLATE_NUMBER");
+	}
+	public String getCarOwner(){
+		return bundle.getString("CAR_OWNER");
+	}
+	public String getParkingTime(){
+		return bundle.getString("PARKING_TIME");
+	}
+	public String getUserType(){
+		return bundle.getString("USER_TYPE");
+	}
+	public String getMonthlyCardUser(){
+		return bundle.getString("MONTHLY_CARD_USER");
+	}
+	
+	public String getAnnualCardUser(){
+		return bundle.getString("ANNUAL_CARD_USER");
+	}
+	
+	public String getLongTermUser(){
+		return bundle.getString("LONG_TERM_USER");
+	}
+	
+	public String getTemporaryUser(){
+		return bundle.getString("TEMPORARY_USER");
+	}
+	  
+	public String getParkingCharge(){
+		return bundle.getString("PARKING_CHARGE");
+	}
+	
+	public String getDaysDue(){
+		return bundle.getString("DAYS_DUE");
+	}
+	
+	public String getRemainingParkingSpaces(){
+		return bundle.getString("REMAINING_PARKING_SPACES");
+	}
+
+	public String getVehiclesNotAllowedToPass(){
+		return bundle.getString("VEHICLES_NOT_ALLOWED_TO_PASS");
+	}
+	
+	public String getAllowedVehiclesToPass(){
+		return bundle.getString("ALLOWED_VEHICLES_TO_PASS");
+	}
+	
+	public String getSetUp(){
+		return bundle.getString("SET_UP");
+	}
+	
+	public String getSetUpSuccess(){
+		return bundle.getString("SUCCESSFULLY_ISSUED");
+	}
+	
+	public String getSetUpFailed(){
+		return bundle.getString("DELIVERY_FAILED");
+	}
+	
+	public String getCostomUserInfo(){
+		return bundle.getString("CUSTOM_USER_CLASS");
+	}
+	
+	public String getRemarksInfo(){
+		return bundle.getString("REMARKS_INFORMATION");
+	}
+	
+	public String getCostomInfo(){
+		return bundle.getString("CUSTOM_INFORMATION");
+	}
+	public String getVTO() {return bundle.getString("VTO");}
+	public String getSCADA() {return bundle.getString("SCADA");}
+	public String getTrafficAllowList(){return bundle.getString("TRAFFIC_ALLOW_LIST");}
+	public String getModifyCardFaceFailed(){
+		return bundle.getString("MODIFY_CARD_FACE_FAILED");
+	}
+	public String getRemoveCardFaceFailed(){
+		return bundle.getString("REMOVE_CARD_FACE_FAILED");
+	}
+	public String getDownLoadPicture(){
+		return bundle.getString("DOWNLOAD_PICTURE");
+	}
+	
+	public String getEnterPicturePath(){
+		return bundle.getString("ENTER_PICTURE_PATH");
+	}
+	
+	public String getLoading(){
+		return bundle.getString("LOADING");
+	}
+	
+	public String getEndSearch(){
+		return bundle.getString("END_SEARCH");
+	}
+	public String getRemoteOpenDoor(){return bundle.getString("REMOTE_OPEN_DOOR");}
+	public String getQueryCardExistFailed(){return bundle.getString("QUERY_CARD_EXIST_FAILED");}
+	public String getFindCardExist(){return bundle.getString("CARD_EXIST");}
+
+
+	public String getSCADADeviceList(){
+		return bundle.getString("SCADA_DEVICE_LIST");
+	}
+
+	public String getSCADAPointList(){
+		return bundle.getString("SCADA_POINT_LIST");
+	}
+
+	public String getSCADAAlarmAttachInfo(){
+		return bundle.getString("SCADA_ATTACH_ALARM");
+	}
+
+	public String getSCADAAttachInfo(){
+		return bundle.getString("SCADA_ATTACH_INFO");
+	}
+
+	public String getSCADAAttach(){
+		return bundle.getString("SCADA_ATTACH");
+	}
+
+	public String getListBtn(){
+		return bundle.getString("BTN_LIST");
+	}
+
+	public String getAllowlistOperation(){
+		return bundle.getString("ALLOWLIST_OPERATION");
+	}
+
+	public String getSingleUpload(){
+		return bundle.getString("SINGLE_UPLOAD");
+	}
+
+	public String getLicensePlateRun(){return bundle.getString("LICENSE_PLATE_RUN");  }
+
+	public String getFuzzyQuery(){return bundle.getString("FUZZY_QUERY");  }
+
+	public String getDeleteAll(){return bundle.getString("DELETE_ALL");  }
+
+	public String getAuthorization(){return bundle.getString("AUTHORIZATION");  }
+
+	public String getBatchUpload(){return bundle.getString("BATCH_UPLOAD");  }
+
+	public String getBrowse(){return bundle.getString("BROWSE");  }
+
+	public String getUpload(){return bundle.getString("UPLOAD");  }
+
+	public String getQueryInformation(){return bundle.getString("QUERY_INFORMATION");  }
+
+	public String getDialog(){return bundle.getString("DIALOG");  }
+
+	public String getLicensePlateNumber(){return bundle.getString("LICENSE_PLATE_NUMBER");  }
+
+	public String getModifyPanel(){return bundle.getString("MODIFY_PANEL");  }
+
+	public String getSerialNumber(){return bundle.getString("SERIAL_NUMBER");  }
+
+	public String getOpenModel(){return bundle.getString("OPEN_MODEL");  }
+
+	public String getLicensePlateLengthTooLong(){return bundle.getString("LICENSE_PLATE_LENGTH_TOO_LONG");  }
+
+	public String getNameTooLong(){return bundle.getString("NAME_TOO_LONG");  }
+
+	public String getDataNumber(){return bundle.getString("DATA_NUMBER");  }
+
+	public String getUnauthorization(){return bundle.getString("UNAUTHORIZATION");  }
+
+	public String getAddSuccess(){return bundle.getString("ADD_SUCCESS"); }
+
+	public String getAddFail(){return bundle.getString("ADD_FAIL"); }
+
+	public String getDeleteSuccess(){return bundle.getString("DELETE_SUCCESS"); }
+
+	public String getDeleteFail(){return bundle.getString("DELETE_FAIL"); }
+
+	public String getModifySuccess(){return bundle.getString("MODIFY_SUCCESS"); }
+
+	public String getModifyFail(){return bundle.getString("MODIFY_FAIL"); }
+
+	public String getUploadSuccess(){return bundle.getString("UPLOAD_SUCCESS"); }
+	public String getUploadFail(){return bundle.getString("UPLOAD_FAIL"); }
+	public String getUploading(){return bundle.getString("UPLOADING"); }
+	public String getSureUpload(){return bundle.getString("SURE_UPLOAD"); }
+
+
+	public String getEnterQueryData(){return bundle.getString("ENTER_QUERY_DATA"); }
+	
+	public String getScreenNumber(){return bundle.getString("SCREEN_NUMBER");}
+	public String getContain(){return bundle.getString("TEXT_CONTENT");}
+	public String getContainType(){return bundle.getString("TEXT_CONTENT_TYPE");}
+	public String getContainColor(){return bundle.getString("TEXT_CONTENT_COLOR");}
+	public String getScrollType(){return bundle.getString("SCROLL_TYPE");}
+	public String getScrollSpeed(){return bundle.getString("SCROLL_SPEED");}
+	
+	public String getGreen(){return bundle.getString("GREEN");}
+	public String getRed(){return bundle.getString("RED");}
+	public String getYellow(){return bundle.getString("YELLOW");}
+	public String getWhite(){return bundle.getString("WHITE");}
+	
+	public String getOrdinary(){return bundle.getString("ORDINARY");}
+	public String getQRCode(){return bundle.getString("QR_CODE");}
+	public String getLocalTime(){return bundle.getString("LOCAL_TIME");}
+	public String getResource(){return bundle.getString("RESOURCE");}
+	
+	public String getNoRolling(){return bundle.getString("NOT_ROLLING");}
+	public String getScrollLeftAndRight(){return bundle.getString("SCROLL_LEFT_AND_RIGHT");}
+	public String getScrollTopAndDown(){return bundle.getString("SCROLL_UP_AND_DOWN");}
+	public String getNumericString(){return bundle.getString("NUMBER_STRING");}
+	public String getVoiceText(){return bundle.getString("VOICE_TEXT");}
+	public String getIssued(){return bundle.getString("ISSUED");}
+	public String getPrompt(){return bundle.getString("PROMPT");}
+
+	public String getDeviceName(){return bundle.getString("DEVICE_NAME");}
+	public String getPointID(){return bundle.getString("POINT_ID");}
+	public String getPointName(){return bundle.getString("POINT_NAME");}
+	public String getIfValidSignalPoint(){return bundle.getString("IF_VALID_SIGNAL_POINT");}
+	public String getAlarmDescribe(){return bundle.getString("ALARM_DESCRIBE");}
+	public String getAlarmDelay(){return bundle.getString("ALARM_DELAY");}
+	public String getAlarmLevel(){return bundle.getString("ALARM_LEVEL");}
+	public String getAlarmTime(){return bundle.getString("ALARM_TIME");}
+	public String getAlarmType(){return bundle.getString("ALARM_TYPE");}
+	public String getCollectTime(){return bundle.getString("COLLECT_TIME");}
+
+	public String getJing(){return bundle.getString("JING");}
+
+	public String getJin(){return bundle.getString("JIN");}
+	public String getJi(){return bundle.getString("JI");}
+}
+
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SavePath.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SavePath.java
new file mode 100644
index 0000000..beec325
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SavePath.java
@@ -0,0 +1,76 @@
+package com.netsdk.common;
+
+import java.io.File;
+
+import com.netsdk.lib.ToolKits;
+
+public class SavePath {
+	private SavePath() {}
+	
+	private static class SavePathHolder {
+		private static SavePath instance = new SavePath();
+	}
+	
+	public static SavePath getSavePath() {
+		return SavePathHolder.instance;
+	}
+	
+	String s_captureSavePath = "./Capture/" + ToolKits.getDay() + "/";         // 抓拍图片保存路径
+	String s_imageSavePath = "./Image/" + ToolKits.getDay() + "/";    		    // 图片保存路径
+	String s_recordFileSavePath = "./RecordFile/" + ToolKits.getDay() + "/";   // 录像保存路径
+	
+	/*
+	 * 设置抓图保存路径
+	 */
+	public String getSaveCapturePath() {	
+		File path1 = new File("./Capture/");
+        if (!path1.exists()) {
+        	path1.mkdir();
+        }
+        
+	    File path2 = new File(s_captureSavePath);
+	    if (!path2.exists()) {
+	        path2.mkdir();
+	    }
+	    
+	    String strFileName = path2.getAbsolutePath() + "/" + ToolKits.getDate() + ".jpg";
+		
+	    return strFileName;
+	}
+	
+	/*
+	 * 设置智能交通图片保存路径
+	 */
+	public String getSaveTrafficImagePath() {
+        File path1 = new File("./Image/");
+        if (!path1.exists()) {
+            path1.mkdir();
+        }
+    	
+        File path = new File(s_imageSavePath);
+        if (!path.exists()) {
+            path.mkdir();
+        }
+        
+        return s_imageSavePath;
+	}
+	
+	
+	/*
+	 * 设置录像保存路径
+	 */
+	public String getSaveRecordFilePath() {	
+        File path1 = new File("./RecordFile/");
+        if (!path1.exists()) {
+            path1.mkdir();
+        }
+        
+	    File path2 = new File(s_recordFileSavePath);
+	    if (!path2.exists()) {
+	        path2.mkdir();
+	    }
+		String SavedFileName = s_recordFileSavePath + ToolKits.getDate() + ".dav"; // 默认保存路径
+		return SavedFileName;
+	}
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SwitchLanguage.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SwitchLanguage.java
new file mode 100644
index 0000000..4bbebd7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/SwitchLanguage.java
@@ -0,0 +1,105 @@
+package com.netsdk.common;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+
+import com.netsdk.common.Res.LanguageType;
+
+/**
+ * 选择语言界面Demo
+ */
+public class SwitchLanguage extends JFrame{
+	private static final long serialVersionUID = 1L;
+	
+	public SwitchLanguage() {
+	    setTitle("请选择语言/Please Select Language");
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(350, 200);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+
+	    add(new SwitchLanguagePanel(this), BorderLayout.CENTER);
+	    
+	    this.addWindowListener(new WindowAdapter() {
+	    	@Override
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose(); 		
+	    		System.exit(0);    		
+	    	}
+	    });
+	}
+	
+	/*
+	 * 切换语言面板
+	 */
+	public class SwitchLanguagePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public SwitchLanguagePanel(final Frame frame) {
+			setLayout(new FlowLayout());
+			setBorder(new EmptyBorder(50, 0, 0, 0));
+			
+			String[] CnEn = {"简体中文", "English"};
+			jComboBox = new JComboBox(CnEn);	
+			
+			nextButton = new JButton("下一步");
+
+			add(jComboBox);
+			add(nextButton); 
+		    
+			jComboBox.addItemListener(new ItemListener() {
+				@Override
+				public void itemStateChanged(ItemEvent arg0) {
+					LanguageType type = jComboBox.getSelectedIndex() == 0 ? LanguageType.Chinese : LanguageType.English;
+					Res.string().switchLanguage(type);
+					
+					if(jComboBox.getSelectedIndex() == 0) {
+						nextButton.setText("下一步");
+					} else {
+						nextButton.setText("next");
+					}
+				}
+			});
+			
+		    nextButton.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {			
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {	
+							frame.dispose();
+							FunctionList functiondemo = new FunctionList();
+							functiondemo.setVisible(true);
+						}
+					});		
+				}
+			});
+		}
+		
+		private JComboBox jComboBox;	
+		private JButton nextButton;
+	}
+}
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/WindowCloseListener.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/WindowCloseListener.java
new file mode 100644
index 0000000..6300781
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/common/WindowCloseListener.java
@@ -0,0 +1,5 @@
+package com.netsdk.common;
+
+public interface WindowCloseListener {
+	void windowClosing();
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AlarmListen.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AlarmListen.java
new file mode 100644
index 0000000..be0bc81
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AlarmListen.java
@@ -0,0 +1,450 @@
+package com.netsdk.demo.frame;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import javax.swing.*;
+import javax.swing.table.*;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AlarmListenModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * Alarm Listen Demo
+ */
+class AlarmListenFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+	
+	// device disconnect callback instance
+	private  DisConnect disConnect  = new DisConnect(); 
+	
+	// device reconnect callback instance
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// alarm listen frame (this)
+	private static JFrame frame = new JFrame();
+	
+	private Component  target = this;
+	
+	// alarm event info list 
+    Vector<AlarmEventInfo> data = new Vector<AlarmEventInfo>();
+
+    public AlarmListenFrame() { 	
+    	setTitle(Res.string().getAlarmListen());
+ 	    setLayout(new BorderLayout());
+ 	    pack();
+ 	    setSize(800, 530);
+ 	    setResizable(false);
+ 	    setLocationRelativeTo(null);
+ 		LoginModule.init(disConnect, haveReConnect);
+ 	 
+ 		try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        }
+ 		
+ 	    loginPanel = new LoginPanel();
+ 	    alarmListenPanel = new AlarmListenPanel();
+	    showAlarmPanel = new ShowAlarmEventPanel();
+	    
+	    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, loginPanel, alarmListenPanel);
+	    splitPane.setDividerSize(0);
+ 	    add(splitPane, BorderLayout.NORTH);
+	    add(showAlarmPanel, BorderLayout.CENTER);
+        
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getAlarmListen() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getAlarmListen());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		AlarmListenModule.stopListen();
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+    }
+    
+	/////////////////function///////////////////
+	// device disconnect callback class 
+	// set it's instance by call CLIENT_Init, when device disconnect sdk will call it.
+	private class DisConnect implements NetSDKLib.fDisConnect {
+		public DisConnect() { }
+		
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getAlarmListen() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// device reconnect(success) callback class
+	// set it's instance by call CLIENT_SetAutoReconnect, when device reconnect success sdk will call it.
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getAlarmListen() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	public boolean login() {
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			loginPanel.setButtonEnable(true);
+			alarmListenPanel.setButtonEnable(true);
+			
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	public void logout() {
+		AlarmListenModule.stopListen();
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		alarmListenPanel.initButtonEnable();
+		showAlarmPanel.clean();
+	}
+
+    public Vector<String> convertAlarmEventInfo(AlarmEventInfo alarmEventInfo) {
+        Vector<String> vector = new Vector<String>();
+        
+        vector.add(String.valueOf(alarmEventInfo.id));
+        vector.add(formatDate(alarmEventInfo.date));
+        vector.add(String.valueOf(alarmEventInfo.chn));
+        String status = null;
+        if (alarmEventInfo.status == AlarmStatus.ALARM_START) {
+        	status = Res.string().getStart();
+        }else {
+        	status = Res.string().getStop();
+        }
+        vector.add(alarmMessageMap.get(alarmEventInfo.type) + status);
+
+        return vector;
+    }
+    
+    private String formatDate(Date date) {
+		final SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return simpleDate.format(date);
+	}
+    
+    private fAlarmDataCB cbMessage = new fAlarmDataCB();
+    // alarm listen data callback
+    private class fAlarmDataCB implements NetSDKLib.fMessCallBack{
+    	private final EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+         
+		@Override
+		public boolean invoke(int lCommand, LLong lLoginID,
+				Pointer pStuEvent, int dwBufLen, String strDeviceIP,
+				NativeLong nDevicePort, Pointer dwUser) {
+			 	
+			switch (lCommand) {
+	                case NetSDKLib.NET_ALARM_ALARM_EX:
+	                case NetSDKLib.NET_MOTION_ALARM_EX:
+	                case NetSDKLib.NET_VIDEOLOST_ALARM_EX:
+	                case NetSDKLib.NET_SHELTER_ALARM_EX:
+	                case NetSDKLib.NET_DISKFULL_ALARM_EX:
+	                case NetSDKLib.NET_DISKERROR_ALARM_EX: {
+	                	byte []alarm = new byte[dwBufLen];
+	                	pStuEvent.read(0, alarm, 0, dwBufLen);
+	                	for (int i = 0; i < dwBufLen; i++) {
+	                		if (alarm[i] == 1) {
+                				AlarmEventInfo alarmEventInfo = new AlarmEventInfo(i, lCommand, AlarmStatus.ALARM_START);
+                				if (!data.contains(alarmEventInfo)) {
+                		            data.add(alarmEventInfo);
+	                				eventQueue.postEvent(new AlarmListenEvent(target, alarmEventInfo));
+	                			}
+	                		}else {
+	                			AlarmEventInfo alarmEventInfo = new AlarmEventInfo(i, lCommand, AlarmStatus.ALARM_STOP);
+	                			if (data.remove(alarmEventInfo)) {
+	                				eventQueue.postEvent(new AlarmListenEvent(target, alarmEventInfo));
+	                			}
+	                		}
+	                	}
+	                	break;
+	                }
+	                default:
+	                	break;
+	                	
+	            }
+			
+				return true;
+		}
+    	
+    }
+
+    // alarm listen event
+	class AlarmListenEvent extends AWTEvent {
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+		
+		private AlarmEventInfo alarmEventInfo;
+		
+		public AlarmListenEvent(Object target,
+				AlarmEventInfo alarmEventInfo) {
+			super(target,EVENT_ID);
+			
+			this.alarmEventInfo = alarmEventInfo;
+			++AlarmEventInfo.index;
+			this.alarmEventInfo.id = AlarmEventInfo.index;
+		}
+		
+		public AlarmEventInfo getAlarmEventInfo() {
+			return alarmEventInfo;
+		}	
+	}
+	
+	@Override
+    protected void processEvent( AWTEvent event) {
+        if ( event instanceof AlarmListenEvent) {
+        	AlarmEventInfo alarmEventInfo = ((AlarmListenEvent)event).getAlarmEventInfo();
+        	showAlarmPanel.insert(alarmEventInfo);
+		} else {
+            super.processEvent(event);   
+        }
+    } 
+    
+	// alarm listen control panel
+    private class AlarmListenPanel extends JPanel {
+    	private static final long serialVersionUID = 1L;
+		
+		public AlarmListenPanel() {
+			BorderEx.set(this, Res.string().getAlarmListen(), 2);
+			setLayout(new FlowLayout());
+			
+			btnStartListen = new JButton(Res.string().getStartListen());
+		    btnStopListen = new JButton(Res.string().getStopListen());
+		    
+		    btnStartListen.setPreferredSize(new Dimension(150, 20));
+		    btnStopListen.setPreferredSize(new Dimension(150, 20));
+		    
+		    add(btnStartListen);
+		    add(new JLabel("                  "));
+		    add(btnStopListen);
+		    
+		    initButtonEnable();
+		    
+		    btnStartListen.addActionListener(new ActionListener(){
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					if (AlarmListenModule.startListen(cbMessage)) {
+						setButtonEnable(false);
+					}else {
+						JOptionPane.showMessageDialog(null, Res.string().getAlarmListenFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}
+		    });
+		    
+		    btnStopListen.addActionListener(new ActionListener(){
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					if (AlarmListenModule.stopListen()) {
+						showAlarmPanel.clean();
+						setButtonEnable(true);
+					}else {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}	
+		    });
+		}
+	    
+	    public void setButtonEnable(boolean b) {
+	    	btnStartListen.setEnabled(b);
+	    	btnStopListen.setEnabled(!b);
+	    }
+	    
+	    public void initButtonEnable() {
+	    	btnStartListen.setEnabled(false);
+	    	btnStopListen.setEnabled(false);
+	    }
+		
+	    private JButton btnStartListen;
+	    private JButton btnStopListen;
+    }
+    
+    // alarm listen event show panel
+    private class ShowAlarmEventPanel extends JPanel {
+    	private static final long serialVersionUID = 1L;
+        private final static int MIN_SHOW_LINES = 20;
+        private final static int MAX_SHOW_LINES = 100;
+        private int currentRowNums = 0;
+		
+		public ShowAlarmEventPanel() {
+			BorderEx.set(this, Res.string().getShowAlarmEvent(), 2);
+			setLayout(new BorderLayout());
+			
+			Vector<String> columnNames =  new Vector<String>();
+			columnNames.add(Res.string().getIndex()); 			// index
+			columnNames.add(Res.string().getEventTime()); 		// event time
+			columnNames.add(Res.string().getChannel()); 		// channel
+			columnNames.add(Res.string().getAlarmMessage()); 	// alarm message
+			
+			tableModel = new DefaultTableModel(null, columnNames);
+	        table = new JTable(tableModel) {
+				private static final long serialVersionUID = 1L;
+
+				public boolean isCellEditable(int rowIndex, int columnIndex) {
+	                return false;
+	            }
+	        };
+
+	        tableModel.setRowCount(MIN_SHOW_LINES);	// set min show lines
+	        
+	        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(90);
+			table.getColumnModel().getColumn(1).setPreferredWidth(200);
+			table.getColumnModel().getColumn(2).setPreferredWidth(80);
+			table.getColumnModel().getColumn(3).setPreferredWidth(400);
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			table.setAutoscrolls(false);
+			
+			table.getTableHeader().setReorderingAllowed(false);
+//			table.getTableHeader().setResizingAllowed(false);
+	
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+			add(scrollPane, BorderLayout.CENTER);
+		}
+		
+		public void insert(AlarmEventInfo alarmEventInfo) {
+			tableModel.insertRow(0,convertAlarmEventInfo(alarmEventInfo));
+			if (currentRowNums < MAX_SHOW_LINES) {
+				++currentRowNums;
+			}
+			
+			if (currentRowNums <= MIN_SHOW_LINES) {
+				tableModel.setRowCount(MIN_SHOW_LINES);
+			}else if (currentRowNums == MAX_SHOW_LINES) {
+				tableModel.setRowCount(MAX_SHOW_LINES);
+			}
+			
+			table.updateUI();
+		}
+		
+		public void clean() {
+			currentRowNums = 0;
+			data.clear();
+			AlarmEventInfo.index=0;
+			tableModel.setRowCount(0);
+			tableModel.setRowCount(MIN_SHOW_LINES);
+			table.updateUI();
+		}
+		
+		private JTable table = null;
+		private DefaultTableModel tableModel = null;
+    }
+    
+    private static HashMap<Integer, String> alarmMessageMap = new HashMap<Integer, String>() {
+    	
+		private static final long serialVersionUID = 1L;
+
+		{
+    		put(NetSDKLib.NET_ALARM_ALARM_EX, Res.string().getExternalAlarm());
+    		put(NetSDKLib.NET_MOTION_ALARM_EX, Res.string().getMotionAlarm());
+    		put(NetSDKLib.NET_VIDEOLOST_ALARM_EX, Res.string().getVideoLostAlarm());
+    		put(NetSDKLib.NET_SHELTER_ALARM_EX, Res.string().getShelterAlarm());
+    		put(NetSDKLib.NET_DISKFULL_ALARM_EX, Res.string().getDiskFullAlarm());
+    		put(NetSDKLib.NET_DISKERROR_ALARM_EX, Res.string().getDiskErrorAlarm());
+    	}
+    };
+    
+    private LoginPanel loginPanel;
+    private AlarmListenPanel alarmListenPanel;
+    private ShowAlarmEventPanel showAlarmPanel;
+    
+    enum AlarmStatus {
+    	ALARM_START, ALARM_STOP
+    }
+    
+    // struct of alarm event
+    static class AlarmEventInfo {
+    	public static long index = 0;
+    	public long id;
+    	public int chn;
+    	public int type;
+    	public Date date;
+    	public AlarmStatus status;
+        
+        public AlarmEventInfo(int chn, int type, AlarmStatus status) {
+        	this.chn = chn;
+        	this.type = type;
+        	this.status = status;
+        	this.date = new Date();
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+            AlarmEventInfo showInfo = (AlarmEventInfo) o;
+            return chn == showInfo.chn && type == showInfo.type;
+        }
+    }
+    
+}
+
+public class AlarmListen {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				AlarmListenFrame demo = new AlarmListenFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AddFingerPrintDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AddFingerPrintDialog.java
new file mode 100644
index 0000000..7c8c132
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AddFingerPrintDialog.java
@@ -0,0 +1,208 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.locks.ReentrantLock;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AlarmListenModule;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.ALARM_CAPTURE_FINGER_PRINT_INFO;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.fMessCallBack;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
+
+/**
+ * 添加信息信息
+ */
+public class AddFingerPrintDialog extends JDialog{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private static final int CHANNEL_ID = 0;   // 门禁序号
+	private static final String READER_ID = "1";    // 读卡器ID
+	private static final long TIMER_DELAY = 30000;	// 定时器超时时间
+	
+	private String userID = null;
+	private byte []collectionData = null;
+	private Timer timer = new Timer();	// 信息采集定时器
+	private ReentrantLock lock = new ReentrantLock();
+	
+	public AddFingerPrintDialog(String userId) { 
+		
+		setTitle(Res.string().getAddFingerPrint());
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(300, 180);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		//////////采集面板  /////////////////
+		JPanel collectionPanel = new JPanel();
+		BorderEx.set(collectionPanel, Res.string().getcFingerPrintCollection(), 4);
+		collectionPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 35, 25));
+		collectionBtn = new JButton(Res.string().getStartCollection());
+		collectionBtn.setPreferredSize(new Dimension(150, 20));
+		promptLabel = new JLabel();
+		promptLabel.setPreferredSize(new Dimension(150, 20));
+		promptLabel.setHorizontalAlignment(JLabel.CENTER);
+
+		collectionPanel.add(collectionBtn);
+		collectionPanel.add(promptLabel);
+		
+		//////////功能面板  /////////////////
+		JPanel functionPanel = new JPanel();
+		addBtn = new JButton(Res.string().getAdd());
+		cancelBtn = new JButton(Res.string().getCancel());
+		addBtn.setPreferredSize(new Dimension(100, 20));
+		cancelBtn.setPreferredSize(new Dimension(100, 20));
+		
+		functionPanel.add(addBtn);
+		functionPanel.add(cancelBtn);
+		
+		add(collectionPanel, BorderLayout.CENTER);
+		add(functionPanel, BorderLayout.SOUTH);
+		
+		addBtn.setEnabled(false);
+		userID = userId;
+		
+	    cbMessage = new fCollectionDataCB();
+		
+		collectionBtn.addActionListener(new ActionListener() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				collectionFinger();
+			}
+		});
+		
+		addBtn.addActionListener(new ActionListener() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				if (AttendanceModule.insertFingerByUserId(userID, collectionData)) {
+					JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+				} else {
+					JOptionPane.showMessageDialog(null, Res.string().getFailed() , Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+				dispose();
+			}
+			
+		});
+		
+		cancelBtn.addActionListener(new ActionListener() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				AlarmListenModule.stopListen();
+				timer.cancel();
+	    		dispose();
+			}
+		});
+		
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				AlarmListenModule.stopListen();
+				timer.cancel();
+	    		dispose();
+	    	}
+		});
+	}
+	
+	public void collectionFinger() {
+		
+		if (!AlarmListenModule.startListen(cbMessage)) {
+			JOptionPane.showMessageDialog(null, Res.string().getCollectionFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		collectionData = null;
+		if (!AttendanceModule.collectionFinger(CHANNEL_ID, READER_ID)) {
+			JOptionPane.showMessageDialog(null, Res.string().getCollectionFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				promptLabel.setText(Res.string().getInCollection());
+				collectionBtn.setEnabled(false);
+			}
+		});
+		
+		timer.schedule(new TimerTask() {
+			public void run() {
+				lock.lock();
+				if (collectionData == null) {
+					AlarmListenModule.stopListen();
+					promptLabel.setText(Res.string().getCollectionFailed());
+					collectionBtn.setEnabled(true);
+				}
+				lock.unlock();
+			}
+			
+		}, TIMER_DELAY);
+	}
+	
+   /**
+	 *  信息采集监听回调
+	 **/
+    private class fCollectionDataCB implements fMessCallBack{
+    	
+		@Override
+		public boolean invoke(int lCommand, LLong lLoginID,
+				Pointer pStuEvent, int dwBufLen, String strDeviceIP,
+				NativeLong nDevicePort, Pointer dwUser) {
+			 
+			if (lCommand == NetSDKLib.NET_ALARM_FINGER_PRINT) {
+				lock.lock();
+				if (collectionData == null) {
+					timer.cancel();
+					ALARM_CAPTURE_FINGER_PRINT_INFO msg = new ALARM_CAPTURE_FINGER_PRINT_INFO();
+		  			ToolKits.GetPointerData(pStuEvent, msg);
+					collectionData = new byte[msg.nPacketLen * msg.nPacketNum];
+					msg.szFingerPrintInfo.read(0, collectionData, 0, msg.nPacketLen * msg.nPacketNum);
+		    		SwingUtilities.invokeLater(new Runnable() {
+		    			public void run() {
+		    				AlarmListenModule.stopListen();
+		    				promptLabel.setText(Res.string().getcCompleteCollection());
+		    				addBtn.setEnabled(true);
+		    			}
+		    		});
+				}
+				lock.unlock();
+			}
+			
+			return true;
+		}
+    	
+    }
+	
+    private fMessCallBack cbMessage; 	// 信息采集回调
+	private JLabel promptLabel; 		// 提示信息
+	private JButton collectionBtn;		// 采集按钮
+	private JButton addBtn;				// 添加按钮
+	private JButton cancelBtn;			// 取消按钮
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/Attendance.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/Attendance.java
new file mode 100644
index 0000000..d808b27
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/Attendance.java
@@ -0,0 +1,166 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JSplitPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * 考勤机Demo:包含门禁事件订阅、人员操作、信息操作
+ */
+class AttendanceFrame  extends JFrame{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	// 设备断线通知回调
+	private  DisConnect disConnect  = new DisConnect(); 
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();
+		
+	public AttendanceFrame(){
+		setTitle(Res.string().getAttendance());
+		setLayout(new BorderLayout());
+		pack();
+		setSize(800, 555);
+	    setResizable(false);
+	    setLocationRelativeTo(null);  
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+	    LoginModule.init(disConnect, null);   // 打开工程,初始化 
+
+	    try {
+	        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+	    } catch (Exception e) {
+	    	e.printStackTrace();
+	    }
+	    
+	    loginPanel = new LoginPanel();
+	    showPanel = new AttendanceShowPanel();
+	    operatePanel = new AttendanceFunctionOperatePanel(showPanel);
+	    
+	    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, loginPanel, operatePanel);
+	    splitPane.setDividerSize(0);
+	    splitPane.setBorder(null);
+		add(splitPane, BorderLayout.NORTH);
+	    add(showPanel, BorderLayout.CENTER);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getAttendance() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				SwingUtilities.invokeLater(new Runnable() {
+					public void run() {
+						logout();
+					}
+				});
+			}
+		});
+	    
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				AttendanceModule.stopRealLoadPicture();
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+		});
+	}
+	
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private class DisConnect implements NetSDKLib.fDisConnect {
+		public DisConnect() { }
+		
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					JOptionPane.showMessageDialog(null, Res.string().getDisConnect(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					logout();
+				}
+			});
+		}
+	}
+		
+	// 登录
+	public boolean login() {
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			loginPanel.setButtonEnable(true);
+			operatePanel.setButtonEnable(true);
+			
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+		
+	// 登出
+	public void logout() {
+		AttendanceModule.stopRealLoadPicture();
+		LoginModule.logout();
+		
+		frame.setTitle(Res.string().getAttendance());
+		loginPanel.setButtonEnable(false);
+		operatePanel.setButtonEnable(false);
+		showPanel.clearup();
+	}
+	
+	private LoginPanel loginPanel;							// 登陆面板
+	private AttendanceFunctionOperatePanel operatePanel;	// 操作面板
+	private AttendanceShowPanel showPanel;					// 显示面板
+}
+
+public class Attendance {
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				AttendanceFrame demo = new AttendanceFrame();	
+				demo.setVisible(true);
+			}
+		});
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceFunctionOperatePanel.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceFunctionOperatePanel.java
new file mode 100644
index 0000000..296511b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceFunctionOperatePanel.java
@@ -0,0 +1,324 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.frame.Attendance.AttendanceShowPanel.UserInfoShowPanel;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.AttendanceModule.OPERATE_TYPE;
+import com.netsdk.demo.module.AttendanceModule.UserData;
+
+/**
+ * 考勤机操作面板
+ */
+public class AttendanceFunctionOperatePanel extends JPanel{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	public static boolean bLogout = false;
+	public AttendanceShowPanel showPanel;	// 显示面板
+	private AttendanceFunctionOperatePanel target = this; // 为了传值
+	
+	public AttendanceFunctionOperatePanel(AttendanceShowPanel showPanel) {
+		
+		setLayout(new BorderLayout());
+		setPreferredSize(new Dimension(800, 120));
+		
+		listener = new UserOperateActionListener();
+		
+		userPanel = new FunctionOperatePanel();
+		subscribePanel = new SubscribePanel(showPanel.eventShowPanel);
+		
+		JSplitPane splitPane = new JSplitPane();
+		splitPane.setDividerSize(0);
+		splitPane.setBorder(null);
+		splitPane.add(userPanel, JSplitPane.LEFT);
+		splitPane.add(subscribePanel, JSplitPane.RIGHT);
+		
+	    add(splitPane, BorderLayout.CENTER);
+			
+		this.showPanel = showPanel;
+		this.showPanel.userShowPanel.prePageBtn.addActionListener(listener);
+		this.showPanel.userShowPanel.nextPageBtn.addActionListener(listener);
+	}
+	
+	public void setButtonEnable(boolean b) {
+		bLogout=!b;
+		userPanel.setButtonEnable(b);
+		subscribePanel.setButtonEnable(b);
+	}
+	
+	public void setSearchEnable(boolean b) {
+		showPanel.userShowPanel.setButtonEnable(b);
+		userPanel.searchPersonBtn.setEnabled(b);
+	}
+	
+	public void insertData(UserData[] arrUserData) {
+		showPanel.userShowPanel.insertData(arrUserData);
+	}
+	
+	public void insertData(UserData userData) {
+		showPanel.userShowPanel.insertData(userData);
+	}
+	
+	/**
+	 * 总的功能操作面板
+	 */
+	public class FunctionOperatePanel extends JPanel{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public FunctionOperatePanel() {
+//			BorderEx.set(this, Res.string().getOperateByUser(), 1);
+			setLayout(new BorderLayout());
+			setPreferredSize(new Dimension(600, 60));
+			
+			////////// 查询条件 /////////////////
+			JLabel userIdLabel = new JLabel(Res.string().getUserId(), JLabel.CENTER);
+			userIdTextField = new JTextField();
+			userIdLabel.setPreferredSize(new Dimension(80, 20));
+			userIdTextField.setPreferredSize(new Dimension(110, 20));
+			
+			////////// 功能面板 /////////////////
+			// 用户功能面板
+			JPanel userFunctionPanel = new JPanel();
+			userFunctionPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+			BorderEx.set(userFunctionPanel, Res.string().getUserOperate(), 1);
+			searchPersonBtn = new JButton(Res.string().getSearch());
+			addPersonBtn = new JButton(Res.string().getAdd());
+			modifyPersonBtn = new JButton(Res.string().getModify());
+			deletePersonBtn = new JButton(Res.string().getDelete());
+
+			searchPersonBtn.setPreferredSize(new Dimension(90, 20));
+			addPersonBtn.setPreferredSize(new Dimension(90, 20));
+			modifyPersonBtn.setPreferredSize(new Dimension(90, 20));
+			deletePersonBtn.setPreferredSize(new Dimension(90, 20));
+			
+			userFunctionPanel.add(userIdLabel);
+			userFunctionPanel.add(userIdTextField);
+			userFunctionPanel.add(searchPersonBtn);
+			userFunctionPanel.add(addPersonBtn);
+			userFunctionPanel.add(modifyPersonBtn);
+			userFunctionPanel.add(deletePersonBtn);
+			
+			// 信息功能面板
+			JPanel fingerPrintFunctionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+			BorderEx.set(fingerPrintFunctionPanel, Res.string().getFingerPrintOperate(), 1);
+			operateByUserIdBtn = new JButton(Res.string().getOperateByUserId());
+			operateByFingerPrintIdBtn = new JButton(Res.string().getOperateByFingerPrintId());
+
+			operateByUserIdBtn.setPreferredSize(new Dimension(260, 20));
+			operateByFingerPrintIdBtn.setPreferredSize(new Dimension(260, 20));
+			fingerPrintFunctionPanel.add(operateByUserIdBtn);
+			fingerPrintFunctionPanel.add(operateByFingerPrintIdBtn);
+			
+			JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+			splitPane.setDividerSize(0);
+			splitPane.setBorder(null);
+			splitPane.add(userFunctionPanel, JSplitPane.TOP);
+			splitPane.add(fingerPrintFunctionPanel, JSplitPane.BOTTOM);
+		 	add(splitPane, BorderLayout.CENTER);
+			
+		 	searchPersonBtn.addActionListener(listener);
+			addPersonBtn.addActionListener(listener);
+			modifyPersonBtn.addActionListener(listener);
+			deletePersonBtn.addActionListener(listener);
+			operateByUserIdBtn.addActionListener(listener);
+			operateByFingerPrintIdBtn.addActionListener(listener);
+			
+			setButtonEnable(false);
+		}
+	
+		public void setButtonEnable(boolean b) {
+			searchPersonBtn.setEnabled(b);
+			addPersonBtn.setEnabled(b);
+			modifyPersonBtn.setEnabled(b);
+			deletePersonBtn.setEnabled(b);
+			operateByUserIdBtn.setEnabled(b);
+			operateByFingerPrintIdBtn.setEnabled(b);
+		}
+		
+		public void searchPerson(OPERATE_TYPE type) { // flush 为 true 时 强制刷新
+			if (type == OPERATE_TYPE.SEARCH_USER && !userIdTextField.getText().isEmpty()) {
+				UserData userData = AttendanceModule.getUser(userIdTextField.getText());
+				if (userData == null) {
+					JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				showPanel.userShowPanel.insertData(userData);				
+			}else {
+				setSearchEnable(false);
+				new SearchPersonSwingWorker(type, target).execute();
+			}
+		}
+		
+		private JTextField userIdTextField;
+		public JButton searchPersonBtn;
+		private JButton addPersonBtn;
+		private JButton modifyPersonBtn;
+		private JButton deletePersonBtn;
+		private JButton operateByUserIdBtn;
+		private JButton operateByFingerPrintIdBtn;
+	}
+	
+	/**
+	 * 按键监听实现类
+	 */
+	private class UserOperateActionListener implements ActionListener {	
+
+		@Override
+		public void actionPerformed(ActionEvent arg0) {
+
+			OPERATE_TYPE emType = getOperateType(arg0.getSource());
+			switch(emType) {
+				case SEARCH_USER:
+				case PRE_SEARCH_USER:
+				case NEXT_SEARCH_USER:
+					SwingUtilities.invokeLater(new SearchRunnable(emType));
+					break;	
+				case ADD_USER: 
+					new AttendanceOperateShareDialog(emType, null, "").setVisible(true);
+					break;
+				case MODIFIY_USER:
+				case DELETE_USER:
+				case FINGERPRINT_OPEARTE_BY_USERID:
+					UserData userData = showPanel.userShowPanel.GetSelectedItem();
+					if(userData == null) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					if (emType == OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_USERID) {
+						new OperateByUserIdDialog(userData).setVisible(true);
+					}else {
+						new AttendanceOperateShareDialog(emType, userData).setVisible(true);
+					}
+					
+					break;
+				case FINGERPRINT_OPEARTE_BY_ID:
+					new OperateByFingerPrintIdDialog().setVisible(true);
+				default:
+					break;
+			}
+		}
+		
+		private OPERATE_TYPE getOperateType(Object btn) {
+			OPERATE_TYPE type = OPERATE_TYPE.UNKNOWN;
+			
+			if (btn == userPanel.searchPersonBtn) { // 查找人员
+				type = OPERATE_TYPE.SEARCH_USER;
+			}else if (btn == showPanel.userShowPanel.prePageBtn) { // 上一页查找人员
+				type = OPERATE_TYPE.PRE_SEARCH_USER;
+			}else if (btn == showPanel.userShowPanel.nextPageBtn) { // 下一页查找人员
+				type = OPERATE_TYPE.NEXT_SEARCH_USER;
+			}else if (btn == userPanel.addPersonBtn) { // 添加人员
+				type = OPERATE_TYPE.ADD_USER;
+			}else if (btn == userPanel.modifyPersonBtn) { // 修改人员
+				type = OPERATE_TYPE.MODIFIY_USER;
+			}else if (btn == userPanel.deletePersonBtn) {	// 删除人员
+				type = OPERATE_TYPE.DELETE_USER;
+			}else if (btn == userPanel.operateByUserIdBtn) {		// 通过用户ID操作信息
+				type = OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_USERID;
+			}else if (btn == userPanel.operateByFingerPrintIdBtn) {	// 通过信息ID操作信息
+				type = OPERATE_TYPE.FINGERPRINT_OPEARTE_BY_ID;
+			}else {
+				System.err.println("Unknown Event: " + btn);
+			}
+			
+			return type;
+			
+		}
+	}
+	
+	public class SearchRunnable implements Runnable {
+		private OPERATE_TYPE searchType;
+		public SearchRunnable(OPERATE_TYPE searchType) {
+			this.searchType = searchType;
+		}
+		
+		@Override
+		public void run() {
+			userPanel.searchPerson(searchType);
+		}
+	}
+	
+	/**
+	 * 人员搜索工作线程(完成异步搜索)
+	 */
+	public class SearchPersonSwingWorker extends SwingWorker<UserData[], Object> {
+		private AttendanceFunctionOperatePanel operatePanel;
+		private int offset = 0;
+		private OPERATE_TYPE type;
+		public SearchPersonSwingWorker(OPERATE_TYPE type, AttendanceFunctionOperatePanel operatePanel) {
+			this.operatePanel = operatePanel;
+			this.type = type;
+		}
+		
+		protected UserData[] doInBackground() throws Exception {
+
+			switch(type) {
+				case SEARCH_USER:
+					offset = 0;
+					break;
+				case PRE_SEARCH_USER:
+					offset = UserInfoShowPanel.QUERY_SHOW_COUNT * ((AttendanceShowPanel.userIndex-1)/UserInfoShowPanel.QUERY_SHOW_COUNT - 1);
+					break;
+				case NEXT_SEARCH_USER:
+					offset = AttendanceShowPanel.userIndex;
+					break;
+				default:
+					break;
+			}
+			
+			UserData[] arrUserData = AttendanceModule.findUser(offset, UserInfoShowPanel.QUERY_SHOW_COUNT);
+			
+			return arrUserData;
+		}
+		
+		@Override
+		protected void done() {	
+			if (bLogout) {
+				return;
+			}
+			
+			try {
+				
+				UserData[] arrUserData = get();
+				if (arrUserData == null) {
+					JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				if (type == OPERATE_TYPE.SEARCH_USER || 
+						type == OPERATE_TYPE.PRE_SEARCH_USER) { // 更新userIndex
+					AttendanceShowPanel.userIndex = offset;
+				}
+				operatePanel.insertData(arrUserData);				
+			} catch (Exception e) {
+//				e.printStackTrace();
+			}finally {
+				operatePanel.setSearchEnable(true);
+			}
+			
+		}
+	}
+    
+	private UserOperateActionListener listener;
+	public FunctionOperatePanel userPanel;
+	public SubscribePanel subscribePanel;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceOperateShareDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceOperateShareDialog.java
new file mode 100644
index 0000000..9bfd39f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceOperateShareDialog.java
@@ -0,0 +1,265 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.AttendanceModule.OPERATE_TYPE;
+import com.netsdk.demo.module.AttendanceModule.UserData;
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 考勤机操作对话框
+ */
+public class AttendanceOperateShareDialog extends JDialog{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private OPERATE_TYPE emType = OPERATE_TYPE.UNKNOWN;					// 操作类型
+	private boolean bSuccess = false;									// 接口调用结果
+	
+	public AttendanceOperateShareDialog(OPERATE_TYPE emType, UserData userData) { 
+		this(emType, userData, "");
+	}
+	
+	public AttendanceOperateShareDialog(OPERATE_TYPE emType, String fingerPrintId) { 
+		this(emType, null, fingerPrintId);
+	}
+	
+	public AttendanceOperateShareDialog(OPERATE_TYPE emType, UserData userData, String fingerPrintId) { 
+		
+		setTitle(Res.string().getPersonOperate());
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(300, 200);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		//////////人员信息面板  /////////////////
+		
+		JPanel personInfoPanel = new JPanel();
+		BorderEx.set(personInfoPanel, "", 4);
+		Dimension dimLable = new Dimension(80, 20);
+		JLabel userIdLabel = new JLabel(Res.string().getUserId());
+		JLabel userNameLabel = new JLabel(Res.string().getUserName(true));
+		JLabel cardNoLabel = new JLabel(Res.string().getCardNo());
+		JLabel	fingerPrintIdLabel = new JLabel(Res.string().getFingerPrintId());
+		userIdLabel.setPreferredSize(dimLable);
+		userNameLabel.setPreferredSize(dimLable);
+		cardNoLabel.setPreferredSize(dimLable);
+		fingerPrintIdLabel.setPreferredSize(new Dimension(85, 20));
+		
+		Dimension dimValue = new Dimension(150, 20);
+		userIdTextField = new JTextField();
+		userNameTextField = new JTextField();
+		cardNoTextField = new JTextField();
+		fingerPrintIdTextField = new JTextField();
+		userIdTextField.setPreferredSize(dimValue);
+		userNameTextField.setPreferredSize(dimValue);
+		cardNoTextField.setPreferredSize(dimValue);
+		fingerPrintIdTextField.setPreferredSize(dimValue);
+		
+		// 数据处理
+		if (userData != null) {
+			if (userData.userId != null) {
+				userIdTextField.setText(userData.userId);
+			}
+			
+			if (userData.userName != null) {
+				userNameTextField.setText(userData.userName);
+			}
+			
+			if (userData.cardNo != null) {
+				cardNoTextField.setText(userData.cardNo);
+			}
+		}
+		
+		if (!fingerPrintId.isEmpty()) {
+			fingerPrintIdTextField.setText(fingerPrintId);
+		}
+		
+		if (emType == OPERATE_TYPE.DELETE_FINGERPRINT_BY_ID) { // 根据信息ID删除用户
+			JPanel fingerPrintPanel = new JPanel();
+			fingerPrintPanel.add(fingerPrintIdLabel);
+			fingerPrintPanel.add(fingerPrintIdTextField);
+			personInfoPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 40));
+			personInfoPanel.add(fingerPrintPanel);
+		}else {
+			personInfoPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 10));
+			personInfoPanel.add(userIdLabel);
+			personInfoPanel.add(userIdTextField);
+			personInfoPanel.add(userNameLabel);
+			personInfoPanel.add(userNameTextField);
+			personInfoPanel.add(cardNoLabel);
+			personInfoPanel.add(cardNoTextField);
+			
+			if (emType == OPERATE_TYPE.DELETE_FINGERPRINT_BY_USERID
+					|| emType == OPERATE_TYPE.DELETE_USER) {
+				JLabel promptLabel = new JLabel(" " + Res.string().getDeleteFingerPrintPrompt() + " ");
+				promptLabel.setEnabled(false);
+				personInfoPanel.add(promptLabel);
+			}
+		}
+		
+		//////////功能面板  /////////////////
+		JPanel functionPanel = new JPanel();
+		confirmBtn = new JButton(Res.string().getConfirm());
+		cancelBtn = new JButton(Res.string().getCancel());
+		confirmBtn.setPreferredSize(new Dimension(100, 20));
+		cancelBtn.setPreferredSize(new Dimension(100, 20));
+		
+		functionPanel.add(confirmBtn);
+		functionPanel.add(cancelBtn);
+		
+		add(personInfoPanel, BorderLayout.CENTER);
+		add(functionPanel, BorderLayout.SOUTH);
+		
+		operateListener = new UserOperateListener();
+		confirmBtn.addActionListener(operateListener);
+		cancelBtn.addActionListener(operateListener);
+		
+		this.emType = emType;
+		switch(emType) {
+			case ADD_USER:
+				setTitle(Res.string().getAddPerson());
+				confirmBtn.setText(Res.string().getAdd());
+				break;
+			case MODIFIY_USER:
+				setTitle(Res.string().getModifyPerson());
+				confirmBtn.setText(Res.string().getModify());
+				userIdTextField.setEnabled(false);
+				break;
+			case DELETE_USER:
+				setTitle(Res.string().getDelPerson());
+				confirmBtn.setText(Res.string().getDelete());
+				userIdTextField.setEnabled(false);
+				userNameTextField.setEnabled(false);
+				cardNoTextField.setEnabled(false);
+				break;
+			case DELETE_FINGERPRINT_BY_USERID:
+			case DELETE_FINGERPRINT_BY_ID:
+				setTitle(Res.string().getDeleteFingerPrint());
+				confirmBtn.setText(Res.string().getDelete());
+				userIdTextField.setEnabled(false);
+				userNameTextField.setEnabled(false);
+				cardNoTextField.setEnabled(false);
+				fingerPrintIdTextField.setEditable(false);
+			default:
+				break;
+		}
+	}
+	
+	public boolean checkDataValidity() {
+
+		if (emType == OPERATE_TYPE.ADD_USER) {
+			if (userIdTextField.getText().isEmpty()) {
+				JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getUserId(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				return false;
+			}
+	
+			try {
+				if (userIdTextField.getText().getBytes("UTF-8").length > NetSDKLib.MAX_COMMON_STRING_32-1) {
+					JOptionPane.showMessageDialog(null, Res.string().getUserIdExceedLength(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return false;
+				}
+			}catch (Exception e){
+				
+			}
+		}
+		
+		try {
+			if (userNameTextField.getText().getBytes("UTF-8").length > NetSDKLib.MAX_ATTENDANCE_USERNAME_LEN-1) {
+				JOptionPane.showMessageDialog(null, Res.string().getUserNameExceedLength(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				return false;
+			}
+			
+			if (cardNoTextField.getText().getBytes("UTF-8").length > NetSDKLib.MAX_COMMON_STRING_32-1) {
+				JOptionPane.showMessageDialog(null, Res.string().getCardNoExceedLength(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				return false;
+			}
+		}catch (Exception e){
+			
+		}
+		
+		
+		return true;
+	}
+	
+	public UserData getUserData() {
+		UserData userData = new UserData();
+		userData.cardNo = userIdTextField.getText();
+		userData.userName = userNameTextField.getText();
+		userData.cardNo = cardNoTextField.getText();
+		return userData;
+	}
+	
+	private class UserOperateListener implements ActionListener {				
+		@Override
+		public void actionPerformed(ActionEvent arg0) {
+	
+			if (arg0.getSource() == cancelBtn) {
+				dispose();
+			}else if (arg0.getSource() == confirmBtn) {
+				switch(emType) {
+					case ADD_USER:
+						if (!checkDataValidity()) {
+							return;
+						}
+						bSuccess = AttendanceModule.addUser(userIdTextField.getText(), userNameTextField.getText(), cardNoTextField.getText());
+						break;
+					case MODIFIY_USER:
+						if (!checkDataValidity()) {
+							return;
+						}
+						bSuccess = AttendanceModule.modifyUser(userIdTextField.getText(), userNameTextField.getText(), cardNoTextField.getText());
+						break;
+					case DELETE_USER:
+						bSuccess = AttendanceModule.deleteUser(userIdTextField.getText());
+						break;
+					case DELETE_FINGERPRINT_BY_USERID:
+						bSuccess = AttendanceModule.removeFingerByUserId(userIdTextField.getText());
+						break;
+					case DELETE_FINGERPRINT_BY_ID:
+						bSuccess = AttendanceModule.removeFingerRecord(Integer.parseInt(fingerPrintIdTextField.getText()));
+						break;
+					default:
+						System.err.println("Can't Deal Operate Type: " + emType);
+						break;
+				}
+				
+				if(bSuccess) {
+					JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+				} else {
+					JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+				dispose();
+			}else {
+				System.err.println("Unknown Event: " + arg0.getSource());
+			}
+		}
+	}
+	
+	private UserOperateListener operateListener;	// 按键监听
+	private JTextField userIdTextField;				// 用户ID
+	private JTextField userNameTextField;			// 用户名
+	private JTextField cardNoTextField;				// 卡号
+	private JTextField	fingerPrintIdTextField;		// 信息ID
+	private JButton confirmBtn;						// 确认(根据emType类型变化)
+	private JButton cancelBtn;						// 取消
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceShowPanel.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceShowPanel.java
new file mode 100644
index 0000000..20f97c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/AttendanceShowPanel.java
@@ -0,0 +1,370 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.util.HashMap;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.UIManager;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.common.Res.LanguageType;
+import com.netsdk.demo.module.AttendanceModule.AccessEventInfo;
+import com.netsdk.demo.module.AttendanceModule.UserData;
+import com.netsdk.lib.NetSDKLib.NET_ACCESS_DOOROPEN_METHOD;
+
+public class AttendanceShowPanel extends JPanel {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	public static int userIndex = 0;
+	public static int eventIndex = 0;
+    
+	public AttendanceShowPanel() {
+		setLayout(new BorderLayout());
+		
+		userShowPanel = new UserInfoShowPanel();
+		eventShowPanel = new EventInfoShowPanel();
+		
+		JSplitPane splitPane = new JSplitPane();
+		splitPane.setDividerSize(0);
+		splitPane.setBorder(null);
+		splitPane.add(userShowPanel, JSplitPane.LEFT);
+		splitPane.add(eventShowPanel, JSplitPane.RIGHT);
+		
+		add(splitPane);
+	}
+	
+	public void clearup() {
+		userShowPanel.clearData();
+		eventShowPanel.clearEvent();
+	}
+	
+	/**
+     * 用户信息显示界面
+     * */
+    public class UserInfoShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	public static final int INDEX = 0;
+    	public static final int USER_ID = 1;
+    	public static final int USER_NAME = 2;
+    	public static final int CARD_NO = 3;
+    	public static final int FINGERPRINT_ID = 4;
+    	public static final int FINGERPRINT_DATA = 5;
+    	
+    	public final static int QUERY_SHOW_COUNT = 15; // 查询人数
+        private int realRows = 0;		// 实际显示个数
+		
+		public UserInfoShowPanel() {
+			BorderEx.set(this, Res.string().getUserList(), 1);
+			setLayout(new BorderLayout());
+			setPreferredSize(new Dimension(395, 400));
+			Vector<String> columnNames =  new Vector<String>();
+			columnNames.add(Res.string().getIndex()); 			// 序号
+			columnNames.add(Res.string().getUserId()); 			// 用户编号
+			columnNames.add(Res.string().getUserName()); 		// 用户名
+			columnNames.add(Res.string().getCardNo()); 			// 卡号
+			
+			tableModel = new DefaultTableModel(null, columnNames);
+	        table = new JTable(tableModel) {
+				private static final long serialVersionUID = 1L;
+
+				public boolean isCellEditable(int rowIndex, int columnIndex) { // 不可编辑
+	                return false;
+	            }
+	        };
+
+	        tableModel.setRowCount(QUERY_SHOW_COUNT);	// 设置最小显示行
+	        
+	        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+			table.getColumnModel().getColumn(INDEX).setPreferredWidth(80);
+			table.getColumnModel().getColumn(USER_ID).setPreferredWidth(150);
+			table.getColumnModel().getColumn(USER_NAME).setPreferredWidth(150);
+			table.getColumnModel().getColumn(CARD_NO).setPreferredWidth(150);
+			
+			((DefaultTableCellRenderer)
+					table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+			
+			JPanel functionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
+			prePageBtn = new JButton(Res.string().getPreviousPage());
+			nextPageBtn = new JButton(Res.string().getNextPage());
+			prePageBtn.setPreferredSize(new Dimension(120, 20));
+			nextPageBtn.setPreferredSize(new Dimension(120, 20));
+			
+			prePageBtn.setEnabled(false);
+			nextPageBtn.setEnabled(false);
+			
+			functionPanel.add(prePageBtn);
+			functionPanel.add(new JLabel("    "));
+			functionPanel.add(nextPageBtn);
+			
+			add(scrollPane, BorderLayout.CENTER);
+			add(functionPanel, BorderLayout.SOUTH);
+		}
+		
+		public int getRows(){
+			return realRows;
+		}
+		
+		public UserData GetSelectedItem() {
+			int currentRow = table.getSelectedRow(); //获得所选的单行
+			if(currentRow < 0 || currentRow + 1 > realRows) {
+				return null;
+			}
+			UserData userData = new UserData();
+			
+			userData.userId = (String) tableModel.getValueAt(currentRow, 1);
+			userData.userName = (String) tableModel.getValueAt(currentRow, 2);
+			userData.cardNo = (String) tableModel.getValueAt(currentRow, 3);
+			
+			return userData;
+		}
+		
+		public void updateSelectedItem(UserData userData) {
+			
+			int currentRow = table.getSelectedRow(); //获得所选的单行
+			if(currentRow < 0 || currentRow + 1 > realRows) {
+				return;
+			}
+			
+//			tableModel.setValueAt(userData.userId, currentRow, 1);
+			tableModel.setValueAt(userData.userName, currentRow, 2);
+			tableModel.setValueAt(userData.cardNo, currentRow, 3);
+			table.updateUI();
+		}
+		
+		public void insertData(UserData[] arrUserData) {
+			if (arrUserData == null) {
+				return;
+			}
+			
+			realRows = 0;
+			tableModel.setRowCount(0);
+			
+			for (UserData userData : arrUserData) {
+				insertUserData(userData);
+			}
+			
+			tableModel.setRowCount(QUERY_SHOW_COUNT);
+			table.updateUI();
+			
+			setButtonEnable(true);
+		}
+		
+		public void setButtonEnable(boolean b) {
+			if (b) {
+				if (UserData.nTotalUser - userIndex > 0) {
+					nextPageBtn.setEnabled(true);
+				}else {
+					nextPageBtn.setEnabled(false);
+				}
+				
+				if (userIndex - QUERY_SHOW_COUNT > 0) {
+					prePageBtn.setEnabled(true);
+				}else {
+					prePageBtn.setEnabled(false);
+				}
+			}else {
+				prePageBtn.setEnabled(false);
+				nextPageBtn.setEnabled(false);
+			}
+		}
+		
+		public void insertData(UserData userData) {
+			if (userData == null) {
+				return;
+			}
+			
+			clearData();
+			tableModel.setRowCount(0);
+			
+			insertUserData(userData);
+			
+			tableModel.setRowCount(QUERY_SHOW_COUNT);
+			table.updateUI();
+			
+			setButtonEnable(false);
+		}
+		
+		
+		private void insertUserData(UserData userData) {
+			++userIndex;
+			++realRows;
+			Vector<String> vector = new Vector<String>();
+			vector.add(String.valueOf(userIndex));
+		    vector.add(userData.userId);
+		    vector.add(userData.userName);
+		    vector.add(userData.cardNo);
+		    
+		    tableModel.addRow(vector);
+		}
+			
+		public void clearData() {
+			realRows = 0;
+			userIndex = 0;
+			tableModel.setRowCount(0);
+			tableModel.setRowCount(QUERY_SHOW_COUNT);
+			table.updateUI();
+			prePageBtn.setEnabled(false);
+			nextPageBtn.setEnabled(false);
+		}
+		
+		private JTable table = null;
+		private DefaultTableModel tableModel = null;
+		public JButton prePageBtn;
+		public JButton nextPageBtn;
+    }
+    
+    /**
+     * 门禁事件显示界面
+     * */
+    public class EventInfoShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	private static final int INDEX = 0;
+    	private static final int USER_ID = 1;
+    	private static final int CARD_NO = 2;
+    	private static final int EVENT_TIME = 3;
+    	private static final int DOOR_OPEN_METHOD = 4;
+    	
+    	private final static int MIN_SHOW_LINES = 17;
+        private final static int MAX_SHOW_LINES = 50;
+		
+		public EventInfoShowPanel() {
+			BorderEx.set(this, Res.string().getEventInfo(), 1);
+			setLayout(new BorderLayout());
+			setPreferredSize(new Dimension(395, 400));
+			
+			Vector<String> columnNames =  new Vector<String>();
+			columnNames.add(Res.string().getIndex()); 			// 序号
+			columnNames.add(Res.string().getUserId()); 			// 用户编号
+			columnNames.add(Res.string().getCardNo()); 			// 卡号
+			columnNames.add(Res.string().getEventTime()); 		// 事件时间
+			columnNames.add(Res.string().getDoorOpenMethod()); 	// 开门方式
+			
+			tableModel = new DefaultTableModel(null, columnNames);
+	        table = new JTable(tableModel) {
+				private static final long serialVersionUID = 1L;
+
+				public boolean isCellEditable(int rowIndex, int columnIndex) {
+	                return false;
+	            }
+	        };
+
+	        tableModel.setRowCount(MIN_SHOW_LINES);	// 设置最小显示行
+	        
+	        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+			table.getColumnModel().getColumn(INDEX).setPreferredWidth(80);
+			table.getColumnModel().getColumn(USER_ID).setPreferredWidth(150);
+			table.getColumnModel().getColumn(CARD_NO).setPreferredWidth(150);
+			table.getColumnModel().getColumn(EVENT_TIME).setPreferredWidth(150);
+			table.getColumnModel().getColumn(DOOR_OPEN_METHOD).setPreferredWidth(120);
+			
+			((DefaultTableCellRenderer)
+					table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+			add(scrollPane, BorderLayout.CENTER);
+		}
+		
+		public void clearEvent() {
+			eventIndex = 0;
+			tableModel.setRowCount(0);
+			tableModel.setRowCount(MIN_SHOW_LINES);
+			table.updateUI();
+		}
+		
+		public void insertEvent(AccessEventInfo accessEventInfo) {
+			if (accessEventInfo == null) {
+				return;
+			}
+			++eventIndex;
+			tableModel.insertRow(0, convertEventData(accessEventInfo));
+			if (eventIndex <= MIN_SHOW_LINES) {
+				tableModel.setRowCount(MIN_SHOW_LINES);
+			}else if (eventIndex >= MAX_SHOW_LINES){
+				tableModel.setRowCount(MAX_SHOW_LINES);
+			}
+			
+			table.updateUI();
+		}
+		
+		private Vector<String> convertEventData(AccessEventInfo accessEventInfo) {    
+			Vector<String> vector = new Vector<String>();
+		    vector.add(String.valueOf(eventIndex));
+		    vector.add(accessEventInfo.userId);
+		    vector.add(accessEventInfo.cardNo);
+		    vector.add(accessEventInfo.eventTime.replace("/", "-"));
+		    String openDoor = openDoorMethodMap.get(accessEventInfo.openDoorMethod);
+		    if (openDoor == null) {
+		    	openDoor = Res.string().getUnKnow();
+		    }
+		    vector.add(openDoor);
+		
+		    return vector;
+		}
+		
+		private JTable table = null;
+		private DefaultTableModel tableModel = null;
+    }
+    
+    private static HashMap<Integer, String> openDoorMethodMap = new HashMap<Integer, String>() {
+    	
+		private static final long serialVersionUID = 1L;
+
+		{
+    		put(NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT, Res.string().getFingerPrint());
+    		put(NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD, Res.string().getCard());
+    	}
+    };
+    
+    public UserInfoShowPanel userShowPanel;
+    public EventInfoShowPanel eventShowPanel;
+    
+    public static void main(String[] args) {
+		try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        }
+		
+		Res.string().switchLanguage(LanguageType.English);
+		
+		AttendanceShowPanel demo = new AttendanceShowPanel();
+		JFrame frame = new JFrame();
+		frame.setSize(800, 560);
+		frame.add(demo);
+		System.out.println("AttendanceShowPanel Test");
+		frame.setVisible(true);		
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByFingerPrintIdDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByFingerPrintIdDialog.java
new file mode 100644
index 0000000..1dc19fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByFingerPrintIdDialog.java
@@ -0,0 +1,209 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import com.netsdk.common.Base64;
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.AttendanceModule.OPERATE_TYPE;
+import com.netsdk.demo.module.AttendanceModule.UserData;
+
+/**
+ * 通过信息ID操作信息对话框
+ */
+public class OperateByFingerPrintIdDialog extends JDialog{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	public OperateByFingerPrintIdDialog() {
+		setTitle(Res.string().getOperateByFingerPrintId());
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(600, 500);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		////////// 查询条件 /////////////////
+		JLabel fingerPrintIdLabel = new JLabel(Res.string().getFingerPrintId(), JLabel.CENTER);
+		fingerPrintIdTextField = new JTextField();
+		fingerPrintIdLabel.setPreferredSize(new Dimension(85, 20));
+		fingerPrintIdTextField.setPreferredSize(new Dimension(100, 20));
+		
+		////////// 信息功能 /////////////////
+		searchFingerPrintBtn = new JButton(Res.string().getSearchFingerPrint());
+		deleteFingerPrintBtn = new JButton(Res.string().getDeleteFingerPrint());
+		
+		searchFingerPrintBtn.setPreferredSize(new Dimension(140, 20));
+		deleteFingerPrintBtn.setPreferredSize(new Dimension(140, 20));
+
+		JPanel functionPanel = new JPanel();
+		BorderEx.set(functionPanel, Res.string().getOperateByFingerPrintId(), 1);
+		functionPanel.add(fingerPrintIdLabel);
+		functionPanel.add(fingerPrintIdTextField);
+		functionPanel.add(searchFingerPrintBtn);
+		functionPanel.add(deleteFingerPrintBtn);
+		
+		//////////信息信息 /////////////////
+		JPanel fingerPrintPanel = new JPanel();
+		BorderEx.set(fingerPrintPanel, Res.string().getFingerPrintInfo(), 1);
+		fingerPrintPanel.setLayout(null);
+		JLabel userIdLabel = new JLabel(Res.string().getUserId());
+		userId = new JLabel();
+		JLabel fingerPrintDataLabel = new JLabel(Res.string().getFingerPrintData());
+		fingerPrintData = new JTextArea();
+		fingerPrintData.setBackground(null);
+		fingerPrintData.setEditable(false);
+		fingerPrintData.setLineWrap(true);
+		JScrollPane scrollPane = new JScrollPane(fingerPrintData);
+		userIdLabel.setBounds(30, 30, 90, 20);
+		userId.setBounds(150, 30, 300, 20);
+		fingerPrintDataLabel.setBounds(30, 60, 150, 20);
+		fingerPrintData.setBounds(30, 80, 600, 20);
+		scrollPane.setBounds(30, 80, 550, 300);
+		scrollPane.setBorder(null);
+		
+		fingerPrintPanel.add(userIdLabel);
+		fingerPrintPanel.add(userId);
+		fingerPrintPanel.add(fingerPrintDataLabel);
+		fingerPrintPanel.add(scrollPane);
+		
+		add(functionPanel, BorderLayout.NORTH);
+		add(fingerPrintPanel, BorderLayout.CENTER);
+		
+		fingerPrintIdTextField.addKeyListener(new KeyListener() {
+			
+			public void keyTyped(KeyEvent e) {
+				  int key = e.getKeyChar();
+				  if (key < 48 || key > 57) {
+					  e.consume();
+				  }
+			}
+
+			public void keyPressed(KeyEvent e) {}
+			
+			public void keyReleased(KeyEvent e) {}
+		});
+		
+		listener = new FingerPrintIdOperateActionListener();
+		searchFingerPrintBtn.addActionListener(listener);
+		deleteFingerPrintBtn.addActionListener(listener);
+	}
+	
+	public String getFingerPrintId() {
+		
+		if (fingerPrintIdTextField.getText().isEmpty()) {
+			JOptionPane.showMessageDialog(null, Res.string().getInput()+Res.string().getFingerPrintId(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return null;
+		}
+		
+		try {
+			Integer.parseInt(fingerPrintIdTextField.getText());
+		}catch (NumberFormatException e){
+			JOptionPane.showMessageDialog(null, Res.string().getFingerPrintIdIllegal(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return null;
+		}
+		return fingerPrintIdTextField.getText();
+	}
+	
+	public void searchFingerPrint() {
+		clearFingerPrintInfo();
+		
+		String fingerPrintId = getFingerPrintId();
+		if (fingerPrintId == null) {
+			return;
+		}
+		UserData userData = AttendanceModule.getFingerRecord(Integer.parseInt(fingerPrintId));
+		if (userData == null) {
+			JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		if (userData.szFingerPrintInfo[0].length == 0) {
+			JOptionPane.showMessageDialog(null, Res.string().getFingerPrintIdNotExist(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		dealFingerPrintInfo(userData);
+	}
+	
+	public void dealFingerPrintInfo(UserData userData) {
+		userId.setText(userData.userId);
+		fingerPrintData.setText(formatFingerPrintData(userData.szFingerPrintInfo[0]));
+	}
+	
+	private String formatFingerPrintData(byte[] fingerPrintData) {
+		String formatData = Base64.getEncoder().encodeToString(fingerPrintData);
+		return formatData;
+	}
+	
+	public void clearFingerPrintInfo() {
+		userId.setText("");
+		fingerPrintData.setText("");
+	}
+	
+	/**
+	 * 按键监听实现类
+	 */
+	private class FingerPrintIdOperateActionListener implements ActionListener {	
+
+		@Override
+		public void actionPerformed(ActionEvent arg0) {
+
+			OPERATE_TYPE emType = getOperateType(arg0.getSource());
+			switch(emType) {
+				case SEARCH_FINGERPRINT_BY_ID:
+					searchFingerPrint();
+					break;
+				case DELETE_FINGERPRINT_BY_ID:
+					String fingerPrintId = getFingerPrintId();
+					if (fingerPrintId == null) {
+						return;
+					}
+					new AttendanceOperateShareDialog(emType, fingerPrintId).setVisible(true);
+					break;
+				default:
+					break;
+			}
+		}
+		
+		private OPERATE_TYPE getOperateType(Object btn) {
+			OPERATE_TYPE type = OPERATE_TYPE.UNKNOWN;
+			if (btn == searchFingerPrintBtn) { // 查找信息
+				type = OPERATE_TYPE.SEARCH_FINGERPRINT_BY_ID;
+			}else if (btn == deleteFingerPrintBtn) {	// 删除信息
+				type = OPERATE_TYPE.DELETE_FINGERPRINT_BY_ID;
+			}else {
+				System.err.println("Unknown Event: " + btn);
+			}
+			
+			return type;
+			
+		}
+	}
+	
+	private JTextField fingerPrintIdTextField;
+	public JButton searchFingerPrintBtn;
+	private JButton deleteFingerPrintBtn;
+	private JLabel userId;
+	private JTextArea fingerPrintData;
+	private FingerPrintIdOperateActionListener listener;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByUserIdDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByUserIdDialog.java
new file mode 100644
index 0000000..d26258b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/OperateByUserIdDialog.java
@@ -0,0 +1,281 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.Base64;
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.AttendanceModule.OPERATE_TYPE;
+import com.netsdk.demo.module.AttendanceModule.UserData;
+
+public class OperateByUserIdDialog extends JDialog{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private UserData userData;
+	
+	public OperateByUserIdDialog(UserData userData) {
+		setTitle(Res.string().getOperateByUserId());
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(570, 383);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		////////// 用户信息 (不可改变)/////////////////
+		JPanel userInfoPanel = new JPanel();
+		userInfoPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+		BorderEx.set(userInfoPanel, Res.string().getUserInfo(), 2);
+
+		JLabel userIdLabel = new JLabel(Res.string().getUserId(), JLabel.CENTER);
+		JTextField userIdTextField = new JTextField(userData.userId);
+		JLabel userNameLabel = new JLabel(Res.string().getUserName(true), JLabel.CENTER);
+		JTextField userNameTextField = new JTextField(userData.userName);
+		JLabel cardNoLabel = new JLabel(Res.string().getCardNo(), JLabel.CENTER);
+		JTextField cardNoTextField = new JTextField(userData.cardNo);
+		
+		userIdTextField.setEnabled(false);
+		userNameTextField.setEnabled(false);
+		cardNoTextField.setEnabled(false);
+		
+		Dimension dimLable = new Dimension(55, 20);
+		userIdLabel.setPreferredSize(dimLable);
+		userNameLabel.setPreferredSize(dimLable);
+		cardNoLabel.setPreferredSize(dimLable);
+		Dimension dimValue = new Dimension(100, 20);
+		userIdTextField.setPreferredSize(dimValue);
+		userNameTextField.setPreferredSize(dimValue);
+		cardNoTextField.setPreferredSize(dimValue);
+		
+		userInfoPanel.add(userIdLabel);
+		userInfoPanel.add(userIdTextField);
+		userInfoPanel.add(userNameLabel);
+		userInfoPanel.add(userNameTextField);
+		userInfoPanel.add(cardNoLabel);
+		userInfoPanel.add(cardNoTextField);
+		
+		////////// 信息功能 /////////////////
+		JPanel functionPanel = new JPanel();
+		BorderEx.set(functionPanel, Res.string().getOperateByUserId(), 2);
+		searchFingerPrintBtn = new JButton(Res.string().getSearchFingerPrint());
+		addFingerPrintBtn = new JButton(Res.string().getAddFingerPrint());
+		deleteFingerPrintBtn = new JButton(Res.string().getDeleteFingerPrint());
+		
+		searchFingerPrintBtn.setPreferredSize(new Dimension(150, 20));
+		addFingerPrintBtn.setPreferredSize(new Dimension(150, 20));
+		deleteFingerPrintBtn.setPreferredSize(new Dimension(150, 20));
+
+		functionPanel.add(searchFingerPrintBtn);
+		functionPanel.add(addFingerPrintBtn);
+		functionPanel.add(deleteFingerPrintBtn);
+		
+		//////////布局 /////////////////
+		JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+		splitPane.setDividerSize(0);
+		splitPane.setBorder(null);
+		splitPane.add(userInfoPanel, JSplitPane.TOP);
+		splitPane.add(functionPanel, JSplitPane.BOTTOM);
+	 	add(splitPane, BorderLayout.NORTH);
+		
+	 	fingerPrintShowPanel = new FingerPrintShowPanel();
+	 	add(fingerPrintShowPanel, BorderLayout.CENTER);
+	 	
+		listener = new UserIdOperateActionListener();
+		searchFingerPrintBtn.addActionListener(listener);
+		addFingerPrintBtn.addActionListener(listener);
+		deleteFingerPrintBtn.addActionListener(listener);
+		
+		this.userData = userData;
+	}
+	
+	public void searchFingerPrint() {
+		clearTable();
+		boolean bSuccess = AttendanceModule.getFingerByUserId(userData.userId, userData);
+		if (bSuccess){
+			fingerPrintShowPanel.insertData(userData);
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+		}
+	}
+	
+	public void clearTable() {
+		fingerPrintShowPanel.clearData();
+	}
+	
+	public void addFingerPrint(int fingerPrintId, byte[] fingerPrintData) {
+		fingerPrintShowPanel.insertData(fingerPrintId, fingerPrintData);
+	}
+	
+	/**
+	 * 按键监听实现类
+	 */
+	private class UserIdOperateActionListener implements ActionListener {	
+
+		@Override
+		public void actionPerformed(ActionEvent arg0) {
+
+			OPERATE_TYPE emType = getOperateType(arg0.getSource());
+			switch(emType) {
+				case SEARCH_FINGERPRINT_BY_USERID:
+					searchFingerPrint();
+					break;
+				case ADD_FINGERPRINT:
+					new AddFingerPrintDialog(userData.userId).setVisible(true);
+					break;
+				case DELETE_FINGERPRINT_BY_USERID:
+					new AttendanceOperateShareDialog(emType, userData).setVisible(true);
+					break;
+				default:
+					break;
+			}
+		}
+		
+		private OPERATE_TYPE getOperateType(Object btn) {
+			OPERATE_TYPE type = OPERATE_TYPE.UNKNOWN;
+			if (btn == searchFingerPrintBtn) { // 查找信息
+				type = OPERATE_TYPE.SEARCH_FINGERPRINT_BY_USERID;
+			}else if (btn == addFingerPrintBtn) {	// 添加信息
+				type = OPERATE_TYPE.ADD_FINGERPRINT;
+			}else if (btn == deleteFingerPrintBtn) {	// 删除信息(用户ID)
+				type = OPERATE_TYPE.DELETE_FINGERPRINT_BY_USERID;
+			}else {
+				System.err.println("Unknown Event: " + btn);
+			}
+			
+			return type;
+			
+		}
+	}
+	
+	/**
+     * 信息信息显示界面
+     * */
+    public class FingerPrintShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	public static final int INDEX = 0;
+    	public static final int USER_ID = 1;
+    	public static final int FINGERPRINT_ID = 2;
+    	public static final int FINGERPRINT_DATA = 3;
+    	
+    	public final static int MAX_FINGERPRINT_NUM = 10; // 最大信息个数, 也做为显示个数
+    	private int realRows = 0;		// 实际显示个数
+    	
+		public FingerPrintShowPanel() {
+			BorderEx.set(this, Res.string().getFingerPrintInfo(), 1);
+			setLayout(new BorderLayout());
+			setPreferredSize(new Dimension(550, 375));
+			Vector<String> columnNames =  new Vector<String>();
+			columnNames.add(Res.string().getIndex()); 			// 序号
+			columnNames.add(Res.string().getUserId()); 			// 用户编号
+			columnNames.add(Res.string().getFingerPrintId());	// 信息ID
+			columnNames.add(Res.string().getFingerPrintData());	// 信息
+			
+			tableModel = new DefaultTableModel(null, columnNames);
+	        table = new JTable(tableModel) {
+				private static final long serialVersionUID = 1L;
+
+				public boolean isCellEditable(int rowIndex, int columnIndex) { // 不可编辑
+	                return false;
+	            }
+	        };
+
+	        tableModel.setRowCount(MAX_FINGERPRINT_NUM);	// 设置最小显示行
+	        
+	        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行(其实无意义)
+			
+			table.getColumnModel().getColumn(INDEX).setPreferredWidth(80);
+			table.getColumnModel().getColumn(USER_ID).setPreferredWidth(100);
+			table.getColumnModel().getColumn(FINGERPRINT_ID).setPreferredWidth(100);
+			table.getColumnModel().getColumn(FINGERPRINT_DATA).setPreferredWidth(8888);
+			
+			((DefaultTableCellRenderer)
+					table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+			
+			add(scrollPane, BorderLayout.CENTER);
+		}
+		
+		public void insertData(UserData userData) {
+			if (userData.nFingerPrintIDs == null) {
+				return;
+			}
+			
+			clearData();
+			tableModel.setRowCount(0);
+			for (int i = 0; i < userData.nFingerPrintIDs.length; ++i) {
+				insertFingerPrintData(userData.nFingerPrintIDs[i], userData.szFingerPrintInfo[i]);
+			}
+			
+			tableModel.setRowCount(MAX_FINGERPRINT_NUM);
+			table.updateUI();
+		}
+		
+		public void insertData(int fingerPrintId, byte[] fingerPrintData) {
+			tableModel.setRowCount(realRows);
+			insertFingerPrintData(fingerPrintId, fingerPrintData);
+			tableModel.setRowCount(MAX_FINGERPRINT_NUM);
+			table.updateUI();
+		}
+		
+		private void insertFingerPrintData(int fingerPrintId, byte[] fingerPrintData) {
+			++realRows;
+			Vector<String> vector = new Vector<String>();
+			vector.add(String.valueOf(realRows));
+			vector.add(userData.userId);
+			vector.add(String.valueOf(fingerPrintId));
+			vector.add(formatFingerPrintData(fingerPrintData));
+			tableModel.addRow(vector);
+		}
+		
+		private String formatFingerPrintData(byte[] fingerPrintData) {
+			String formatData = Base64.getEncoder().encodeToString(fingerPrintData);
+			return formatData;
+		}
+			
+		public void clearData() {
+			realRows = 0;
+			tableModel.setRowCount(0);
+			tableModel.setRowCount(MAX_FINGERPRINT_NUM);
+			table.updateUI();
+		}
+		
+		private JTable table = null;
+		private DefaultTableModel tableModel = null;
+    }
+    
+	public JButton searchFingerPrintBtn;
+	private JButton addFingerPrintBtn;
+	private JButton deleteFingerPrintBtn;
+	private UserIdOperateActionListener listener;
+	private FingerPrintShowPanel fingerPrintShowPanel;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/SubscribePanel.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/SubscribePanel.java
new file mode 100644
index 0000000..04a7d03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Attendance/SubscribePanel.java
@@ -0,0 +1,153 @@
+package com.netsdk.demo.frame.Attendance;
+
+import java.awt.AWTEvent;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.frame.Attendance.AttendanceShowPanel.EventInfoShowPanel;
+import com.netsdk.demo.module.AttendanceModule;
+import com.netsdk.demo.module.AttendanceModule.AccessEventInfo;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 订阅面板
+ */
+public class SubscribePanel extends JPanel{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private java.awt.Component  target = this;	// 目标
+	private boolean bSubscribe = false; 		// 订阅标志
+	private EventInfoShowPanel eventShowPanel;	// 事件显示界面
+	public SubscribePanel(EventInfoShowPanel eventPanel) {
+		BorderEx.set(this, Res.string().getSubscribe(), 1);
+		setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30));
+		setPreferredSize(new Dimension(180, 80));
+
+		eventShowPanel = eventPanel;
+		callback = new fAnalyzerDataCB();
+		
+		subscribeBtn = new JButton(Res.string().getSubscribe());
+		subscribeBtn.setPreferredSize(new Dimension(150, 20));
+
+		add(subscribeBtn);
+		
+		subscribeBtn.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				if (bSubscribe) {
+					AttendanceModule.stopRealLoadPicture();
+					eventShowPanel.clearEvent();
+					setSubscribeStatus(false);
+				}else {
+					if (AttendanceModule.realLoadPicture(callback)) {
+						setSubscribeStatus(true);
+					}else {
+						JOptionPane.showMessageDialog(null, Res.string().getSubscribeFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+				}
+			}
+			
+		});
+		
+		subscribeBtn.setEnabled(false);
+	}
+
+	public void setButtonEnable(boolean b) {
+		setSubscribeStatus(false);
+		subscribeBtn.setEnabled(b);
+	}
+	
+	public void setSubscribeStatus(boolean b) {
+		bSubscribe = b;
+		if (bSubscribe) {
+			subscribeBtn.setText(Res.string().getUnSubscribe());
+		}else {
+			subscribeBtn.setText(Res.string().getSubscribe());
+		}
+	}
+	
+	/**
+     * 智能报警事件回调
+     **/
+    public class fAnalyzerDataCB implements fAnalyzerDataCallBack {
+    	public final EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+		@Override
+		public int invoke(LLong lAnalyzerHandle, int dwAlarmType,
+				Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize,
+				Pointer dwUser, int nSequence, Pointer reserved) {
+        	if(pAlarmInfo == null) {
+        		return 0;
+        	}
+        	
+			switch(dwAlarmType) {
+	            case NetSDKLib.EVENT_IVS_ACCESS_CTL:   // 门禁事件
+	            	DEV_EVENT_ACCESS_CTL_INFO event = new DEV_EVENT_ACCESS_CTL_INFO();
+	            	ToolKits.GetPointerData(pAlarmInfo, event);
+	            	AccessEventInfo accessEvent = new AccessEventInfo();
+	            	accessEvent.userId = new String(event.szUserID).trim();
+	            	accessEvent.cardNo = new String(event.szCardNo).trim();
+	            	accessEvent.eventTime = event.UTC.toStringTime();
+	            	accessEvent.openDoorMethod = event.emOpenMethod;
+	                if (eventQueue != null) {
+	                	eventQueue.postEvent(new AccessEvent(target, accessEvent));
+	                }
+	            	break;
+                default:
+                	break;
+			}
+			
+			return 0;
+		}
+	}
+    
+    /**
+     * 门禁事件
+     **/
+	class AccessEvent extends AWTEvent {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+		private AccessEventInfo accessEvent;
+
+		public AccessEvent(Object target, AccessEventInfo accessEvent) {
+			super(target, EVENT_ID);
+			this.accessEvent = accessEvent;
+		}
+		
+		public AccessEventInfo getAccessEventInfo() {
+			return this.accessEvent;
+		}
+	}
+	
+	@Override
+    protected void processEvent( AWTEvent event) {
+        if ( event instanceof AccessEvent) {
+        	AccessEventInfo accessEventInfo = ((AccessEvent)event).getAccessEventInfo();
+        	eventShowPanel.insertEvent(accessEventInfo);
+		} else {
+            super.processEvent(event);   
+        }
+    } 
+    
+	private JButton subscribeBtn; 				// 订阅按钮
+	private fAnalyzerDataCallBack callback;		// 事件回调
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AddDeviceDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AddDeviceDialog.java
new file mode 100644
index 0000000..b0ed54f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AddDeviceDialog.java
@@ -0,0 +1,134 @@
+package com.netsdk.demo.frame.AutoRegister;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DeviceManagerListener;
+import com.netsdk.common.Res;
+
+/**
+ * 在树上添加设备
+ */
+public class AddDeviceDialog extends JDialog{
+	private static final long serialVersionUID = 1L;
+	
+	private DeviceManagerListener listener;
+	public void addDeviceManagerListener(DeviceManagerListener listener) {
+		this.listener = listener;
+	}
+	
+	public AddDeviceDialog(){
+		setTitle(Res.string().getAddDevice());
+		setLayout(new BorderLayout());
+	    setModal(true); 
+		pack();
+		setSize(220, 180);
+	    setResizable(false);
+	    setLocationRelativeTo(null);   
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+		AddDevicePanel addDevicePanel = new AddDevicePanel();
+        add(addDevicePanel, BorderLayout.CENTER);
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+	}
+	
+	/*
+	 * 添加设备面板
+	 */
+	private class AddDevicePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public AddDevicePanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new FlowLayout());
+			
+			JLabel deviceIdLabel = new JLabel(Res.string().getDeviceID(), JLabel.CENTER);
+			JLabel usernameLabel = new JLabel(Res.string().getUserName(), JLabel.CENTER);
+			JLabel passwordLabel = new JLabel(Res.string().getPassword(), JLabel.CENTER);
+			
+			deviceIdLabel.setPreferredSize(new Dimension(60, 21));
+			usernameLabel.setPreferredSize(new Dimension(60, 21));
+			passwordLabel.setPreferredSize(new Dimension(60, 21));
+			
+			deviceIdTextField = new JTextField();
+			usernameTextField = new JTextField();
+			passwordPasswordField = new JPasswordField();
+			
+			deviceIdTextField.setPreferredSize(new Dimension(120, 20));
+			usernameTextField.setPreferredSize(new Dimension(120, 20));
+			passwordPasswordField.setPreferredSize(new Dimension(120, 20));
+			
+			JButton addDeviceBtn = new JButton(Res.string().getAdd());
+			JButton cancelBtn = new JButton(Res.string().getCancel());
+			
+			addDeviceBtn.setPreferredSize(new Dimension(90, 21));
+			cancelBtn.setPreferredSize(new Dimension(90, 21));
+			
+			add(deviceIdLabel);
+			add(deviceIdTextField);
+			add(usernameLabel);
+			add(usernameTextField);
+			add(passwordLabel);
+			add(passwordPasswordField);
+			add(addDeviceBtn);
+			add(cancelBtn);
+		
+			// 添加
+			addDeviceBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					if(deviceIdTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getDeviceID(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(usernameTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getUserName(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if((new String(passwordPasswordField.getPassword()).trim()).equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getPassword(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					dispose();
+					listener.onDeviceManager(deviceIdTextField.getText(), 
+											 usernameTextField.getText(), 
+											 new String(passwordPasswordField.getPassword()).trim());		
+				}
+			});
+			
+			// 取消,关闭
+			cancelBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					dispose();		
+				}
+			});
+		}
+	}
+	
+	private JTextField deviceIdTextField;
+	private JTextField usernameTextField;
+	private JPasswordField passwordPasswordField;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AutoRegister.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AutoRegister.java
new file mode 100644
index 0000000..ecf33ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/AutoRegister.java
@@ -0,0 +1,1826 @@
+package com.netsdk.demo.frame.AutoRegister;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.concurrent.ExecutionException;
+
+import javax.imageio.ImageIO;
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+import javax.swing.UIManager;
+import javax.swing.filechooser.FileFilter;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DeviceManagerListener;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.common.SavePath;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 主动注册Demo:包含主动注册、实时预览、对讲、主动注册网络配置
+ */
+class AutoRegisterFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+	
+	// 设备断线通知回调
+	private DisConnect disConnectCallback = new DisConnect(); 
+	
+	// 主动注册监听回调
+	private ServiceCB servicCallback = new ServiceCB();
+	
+	// 抓图回调
+	public CaptureReceiveCB  captureCallback = new CaptureReceiveCB();
+    
+    private boolean isExist = false;
+	
+    private TreeCellRender treeCellRender = new TreeCellRender();
+	
+    // 预览句柄
+	private LLong realplayHandle = new LLong(0);
+	
+	// 预览节点
+	private ChannelTreeNode realplayChannelTreeNode = null;
+	
+	// 对讲节点
+	private DeviceTreeNode talkDeviceTreeNode = null;
+	
+	public AutoRegisterFrame() {
+	    setTitle(Res.string().getAutoRegister());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(780, 540);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    
+	    // 打开工程,初始化,设置断线回调
+	    LoginModule.init(disConnectCallback, null);   
+	    
+	    // 设置抓图回调
+	    AutoRegisterModule.setSnapRevCallBack(captureCallback);
+	    
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+    	
+    	// 注册列表面板
+    	AutoRegisterTreePanel autoRegisterTreePanel = new AutoRegisterTreePanel();
+		
+		// 实时预览面板
+		RealPlayPanel realplayPanel = new RealPlayPanel();   		
+		
+		// 监听和设备管理面板
+		ListenDeviceManagerPanel listenDeviceManagerPanel = new ListenDeviceManagerPanel();
+
+		add(autoRegisterTreePanel, BorderLayout.WEST);
+		add(realplayPanel, BorderLayout.CENTER);
+		add(listenDeviceManagerPanel, BorderLayout.EAST);
+    	
+    	addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+				// 停止对讲
+				if(AutoRegisterModule.m_hTalkHandle.longValue() != 0) {
+					AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);									
+					talkDeviceTreeNode = null;
+				}	
+				
+				// 停止拉流
+				if(realplayHandle.longValue() != 0) {
+					AutoRegisterModule.stopRealPlay(realplayHandle);
+					realplayWindowPanel.repaint();
+					
+					realplayChannelTreeNode = null;						
+				}			
+				
+				// 登出所有设备
+				for(int i = 0; i < rootNode.getChildCount(); i++) {
+					DeviceTreeNode deviceTreeNode = (DeviceTreeNode)rootNode.getChildAt(i);
+					if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+						AutoRegisterModule.logout(deviceTreeNode.getDeviceInfo().getLoginHandle());
+					}
+				}
+	
+				// 停止服务
+				AutoRegisterModule.stopServer();
+				
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private class DisConnect implements fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+				
+			for(int i = 0; i < rootNode.getChildCount(); i++) {
+				DeviceTreeNode deviceTreeNode = (DeviceTreeNode)rootNode.getChildAt(i);			
+			
+				// 根据设备IP判断断线设备
+				if(pchDVRIP.equals(deviceTreeNode.getDeviceInfo().getDeviceIp())
+						&& nDVRPort == deviceTreeNode.getDeviceInfo().getDevicePort()) {						
+				
+					synchronized (this) {
+						// 停止断线设备的对讲, 主动注册中,对讲要用同步,不能在另开的线程里停止对讲,否则会出现句柄无效的错误					
+						if(deviceTreeNode == talkDeviceTreeNode) {
+							AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);					
+
+							talkDeviceTreeNode = null;
+						}
+
+						// 停止断线设备的拉流
+						for(int j = 0; j < deviceTreeNode.getChildCount(); j++) {
+							ChannelTreeNode channelTreeNode = (ChannelTreeNode)deviceTreeNode.getChildAt(j);
+							if(channelTreeNode == realplayChannelTreeNode) {
+								AutoRegisterModule.stopRealPlay(realplayHandle);
+								realplayWindowPanel.repaint();
+								
+								realplayChannelTreeNode = null;
+
+								break;
+							}							
+						}		
+						
+						// 登出
+						if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+							AutoRegisterModule.logout(deviceTreeNode.getDeviceInfo().getLoginHandle());
+						}
+						
+						SwingUtilities.invokeLater(new DisConnectRunnable(deviceTreeNode));
+					}		
+					
+					break;
+				}	
+			}
+					
+		}
+	}
+	
+	private class DisConnectRunnable implements Runnable {
+		DeviceTreeNode devicetTreeNode;
+		
+		public DisConnectRunnable(DeviceTreeNode devicetTreeNode) {
+			this.devicetTreeNode = devicetTreeNode;
+		}
+	
+		@Override
+		public void run() {			
+			devicetTreeNode.setUserObject(devicetTreeNode.getDeviceInfo().getDevcieId());				
+			devicetTreeNode.removeAllChildren();  						
+						
+			tree.updateUI();				
+		}	
+	}
+	
+	private class AutoRegisterTreePanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public AutoRegisterTreePanel() {
+			setLayout(new BorderLayout());
+			Dimension dimension = new Dimension();
+			dimension.width = 210;
+			setPreferredSize(dimension);
+			
+			JPanel configPanel = new JPanel();
+			JPanel deviceListPanel = new JPanel();
+			
+			add(configPanel, BorderLayout.NORTH);
+			add(deviceListPanel, BorderLayout.CENTER);
+			
+			////// 配置面板  ////////
+		    configPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getOperate()));
+			configPanel.setPreferredSize(new Dimension(200, 55));
+		    configPanel.setLayout(new FlowLayout());
+		    
+		    JButton configBtn = new JButton(Res.string().getDeviceConfig());
+		    configBtn.setPreferredSize(new Dimension(180, 21));
+		    
+		    configPanel.add(configBtn);
+		    
+		    ////// 设备列表面板 ///////
+		    deviceListPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getDeviceList()));
+		    deviceListPanel.setLayout(new BorderLayout());
+		    
+		    rootNode = new DefaultMutableTreeNode(); 		    
+		    treeModel = new DefaultTreeModel(rootNode);
+		    tree = new JTree(treeModel);
+
+		    tree.setBackground(Color.LIGHT_GRAY);
+		    tree.setForeground(Color.BLACK);
+		    tree.setEditable(false);
+		    tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);  
+		    tree.setRootVisible(false);
+			tree.expandPath(new TreePath(rootNode));
+			tree.setShowsRootHandles(true);
+	    
+		    JScrollPane jScrollPane = new JScrollPane(tree);	    
+		    deviceListPanel.add(jScrollPane, BorderLayout.CENTER);
+		  
+		    // 配置设备
+		    configBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					DeviceConfigDialog deviceConfigDialog = new DeviceConfigDialog();
+					deviceConfigDialog.setVisible(true);		
+				}
+			});
+		    
+		    tree.addMouseListener(new MouseListener() {		
+				@Override
+				public void mouseReleased(MouseEvent e) {
+
+				}
+				
+				@Override
+				public void mousePressed(MouseEvent e) {
+					// 右键
+					if(SwingUtilities.isRightMouseButton(e)) {
+						TreePath treePath = tree.getPathForLocation(e.getX(), e.getY());
+						tree.setSelectionPath(treePath);
+						
+						showPopupMenu(e.getComponent(), e.getX(), e.getY());
+					}	
+				}
+				
+				@Override
+				public void mouseExited(MouseEvent e) {
+	
+				}
+				
+				@Override
+				public void mouseEntered(MouseEvent e) {
+
+				}
+				
+				@Override
+				public void mouseClicked(MouseEvent e) {
+					// 双击
+					if(e.getClickCount() > 1) {
+						if(tree.getLastSelectedPathComponent() instanceof ChannelTreeNode) {
+							ChannelTreeNode channelTreeNode = (ChannelTreeNode)tree.getLastSelectedPathComponent();
+							
+							if(channelTreeNode != realplayChannelTreeNode) {
+								startRealplay();
+							}	
+						}	
+					}
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 树的右键弹出菜单
+	 */
+	@SuppressWarnings("static-access")
+	private void showPopupMenu(	Component component, int x, int y) {
+		JPopupMenu popupMenu = new JPopupMenu();
+		
+		JMenuItem logoutMenuItem = new JMenuItem(Res.string().getLogout());
+		JMenuItem addDeviceMenuItem = new JMenuItem(Res.string().getAddDevice());
+		JMenuItem modifyDeviceMenuItem = new JMenuItem(Res.string().getModifyDevice());
+		JMenuItem deleteDeviceMenuItem = new JMenuItem(Res.string().getDeleteDevice());
+		JMenuItem clearDeviceMenuItem = new JMenuItem(Res.string().getClearDevice());
+		JMenuItem importDeviceMenuItem = new JMenuItem(Res.string().getImportDevice());
+		JMenuItem exportDeviceMenuItem = new JMenuItem(Res.string().getExportDevice());
+		JMenuItem realplayMenuItem = new JMenuItem(Res.string().getStartRealPlay());
+		JMenuItem stopRealplayMenuItem = new JMenuItem(Res.string().getStopRealPlay());
+		JMenuItem startTalkMenuItem = new JMenuItem(Res.string().getStartTalk());
+		JMenuItem stopTalkMenuItem = new JMenuItem(Res.string().getStopTalk());
+		JMenuItem captureMenuItem = new JMenuItem(Res.string().getRemoteCapture());
+		
+		if(tree.getLastSelectedPathComponent() instanceof DeviceTreeNode) {  // 右击设备节点
+			DeviceTreeNode deviceTreeNode = (DeviceTreeNode)tree.getLastSelectedPathComponent();	
+			
+			if(deviceTreeNode!=null&&deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) { // 登陆
+				popupMenu.add(logoutMenuItem);
+				popupMenu.add(deleteDeviceMenuItem);
+				
+				if(deviceTreeNode == talkDeviceTreeNode) {  // 对讲
+					popupMenu.add(stopTalkMenuItem);
+				} else {  // 停止对讲
+					popupMenu.add(startTalkMenuItem);
+				}			
+			} else {  // 未登陆
+				popupMenu.add(modifyDeviceMenuItem);
+				popupMenu.add(deleteDeviceMenuItem);
+			}
+		} else if(tree.getLastSelectedPathComponent() instanceof ChannelTreeNode) {  // 右击通道节点
+			ChannelTreeNode channelTreeNode = (ChannelTreeNode)tree.getLastSelectedPathComponent();		
+			
+			if(channelTreeNode == realplayChannelTreeNode) { // 拉流
+				popupMenu.add(stopRealplayMenuItem);
+			} else {  // 未拉流
+				popupMenu.add(realplayMenuItem);
+			}
+			
+			popupMenu.add(captureMenuItem);
+		} else { // 右键空白区域
+			popupMenu.add(addDeviceMenuItem);
+			popupMenu.add(clearDeviceMenuItem);
+			popupMenu.add(importDeviceMenuItem);
+			popupMenu.add(exportDeviceMenuItem);
+			
+			logoutBtn.setEnabled(false);
+			modifyDeviceBtn.setEnabled(false);
+			deleteDeviceBtn.setEnabled(false);
+			startRealPlayBtn.setEnabled(false);
+			stopRealPlayBtn.setEnabled(false);
+			startTalkBtn.setEnabled(false);
+			stopTalkBtn.setEnabled(false);
+			captureBtn.setEnabled(false);
+		}
+		
+		popupMenu.setDefaultLightWeightPopupEnabled(false);
+		popupMenu.show(component, x, y);
+		
+		// 登出
+		logoutMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {			
+					@Override
+					public void run() {
+						logout();
+					}
+				});
+			}
+		});
+		
+		// 添加设备
+		addDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				addDevice();
+			}
+		});
+		
+		// 修改设备
+		modifyDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				modifyDevice();
+			}
+		});
+		
+		// 删除设备
+		deleteDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				deleteDevice();
+			}
+		});
+		
+		// 清空设备
+		clearDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				clearDevice();
+			}
+		});
+		
+		// 导入设备
+		importDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				importDevice();
+			}
+		});
+		
+		// 导出设备
+		exportDeviceMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				exportDevice();
+			}
+		});
+		
+		// 开始预览
+		realplayMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {					
+					@Override
+					public void run() {
+						startRealplay();
+					}
+				});
+			}
+		});
+		
+		// 停止预览
+		stopRealplayMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {			
+					@Override
+					public void run() {
+						stopRealplay();
+					}
+				});
+			}
+		});
+		
+		// 开始对讲
+		startTalkMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {				
+					@Override
+					public void run() {
+						startTalk();
+					}
+				});
+			}
+		});
+		
+		// 停止对讲
+		stopTalkMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {		
+					@Override
+					public void run() {
+						stopTalk();
+					}
+				});
+			}
+		});
+		
+		// 远程抓图
+		captureMenuItem.addActionListener(new ActionListener() {			
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				capture();
+			}
+		});
+	}
+	
+	/**
+	 * 实时预览面板
+	 */
+	private class RealPlayPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPlayPanel() {
+			BorderEx.set(this, "", 0);
+			setLayout(new BorderLayout());
+			
+			JPanel realplayPanel = new JPanel();
+			JPanel picPanel = new JPanel();
+			
+			add(realplayPanel, BorderLayout.NORTH);
+			add(picPanel, BorderLayout.CENTER);
+			
+			// 实时预览面板
+			realplayPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getRealplay()));
+			Dimension dimension = new Dimension();
+			dimension.height = 250;
+			realplayPanel.setPreferredSize(dimension);
+			realplayPanel.setLayout(new BorderLayout());
+			
+			realplayWindowPanel = new Panel();
+			realplayWindowPanel.setBackground(Color.GRAY);
+			realplayPanel.add(realplayWindowPanel, BorderLayout.CENTER);
+			
+			// 抓图面板
+			picPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getCapturePicture()));
+			picPanel.setLayout(new BorderLayout());
+			
+			capturePanel = new PaintPanel();
+
+			picPanel.add(capturePanel, BorderLayout.CENTER);	
+		}
+	}
+	
+	/**
+	 * 监听和设备管理面板
+	 */
+	private class ListenDeviceManagerPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public ListenDeviceManagerPanel() {
+			setLayout(new BorderLayout());
+			Dimension dimension = new Dimension();
+			dimension.width = 230;
+			setPreferredSize(dimension);
+			
+			JPanel listenPanel = new JPanel();
+			JPanel deviceManagerPanel = new JPanel();
+			JPanel functionOperatePanel = new JPanel();
+			
+			add(listenPanel, BorderLayout.NORTH);
+			add(deviceManagerPanel, BorderLayout.CENTER);
+			add(functionOperatePanel, BorderLayout.SOUTH);
+			
+			///// 监听面板 /////
+			listenPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getAutoRegisterListen()));
+			listenPanel.setPreferredSize(new Dimension(200, 110));
+			listenPanel.setLayout(new FlowLayout());
+			
+			JLabel ipLabel = new JLabel(Res.string().getRegisterAddress(), JLabel.CENTER);
+			JLabel portLabel = new JLabel(Res.string().getRegisterPort(), JLabel.CENTER);
+			
+			ipLabel.setPreferredSize(new Dimension(100, 21));
+			portLabel.setPreferredSize(new Dimension(100, 21));
+			
+			ipTextField = new JTextField(getHostAddress());
+			portTextField = new JTextField("9500");
+			
+			ipTextField.setPreferredSize(new Dimension(100, 21));
+			portTextField.setPreferredSize(new Dimension(100, 21));
+			
+			startListenBtn = new JButton(Res.string().getStartListen());
+			stopListenBtn = new JButton(Res.string().getStopListen());
+			
+			startListenBtn.setPreferredSize(new Dimension(105, 21));
+			stopListenBtn.setPreferredSize(new Dimension(100, 21));
+			stopListenBtn.setEnabled(false);
+					
+			listenPanel.add(ipLabel);
+			listenPanel.add(ipTextField);
+			listenPanel.add(portLabel);
+			listenPanel.add(portTextField);
+			listenPanel.add(startListenBtn);
+			listenPanel.add(stopListenBtn);
+			
+			///// 设备管理  ////////
+			deviceManagerPanel.setBorder(BorderFactory.createTitledBorder(Res.string().getDeviceManager()));
+			deviceManagerPanel.setLayout(new FlowLayout());
+			
+			logoutBtn = new JButton(Res.string().getLogout());
+			addDeviceBtn = new JButton(Res.string().getAddDevice());
+			modifyDeviceBtn = new JButton(Res.string().getModifyDevice());
+			deleteDeviceBtn = new JButton(Res.string().getDeleteDevice());
+			clearDeviceBtn = new JButton(Res.string().getClearDevice());
+			importDeviceBtn = new JButton(Res.string().getImportDevice());
+			exportDeviceBtn = new JButton(Res.string().getExportDevice());
+			
+			logoutBtn.setPreferredSize(new Dimension(210, 21));
+			addDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			modifyDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			deleteDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			clearDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			importDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			exportDeviceBtn.setPreferredSize(new Dimension(210, 21));
+			
+			logoutBtn.setEnabled(false);
+			modifyDeviceBtn.setEnabled(false);
+			deleteDeviceBtn.setEnabled(false);
+			
+			deviceManagerPanel.add(logoutBtn);
+			deviceManagerPanel.add(addDeviceBtn);
+			deviceManagerPanel.add(modifyDeviceBtn);
+			deviceManagerPanel.add(deleteDeviceBtn);
+			deviceManagerPanel.add(clearDeviceBtn);
+			deviceManagerPanel.add(importDeviceBtn);
+			deviceManagerPanel.add(exportDeviceBtn);
+			
+			///// 基本操作  ////////
+			functionOperatePanel.setBorder(BorderFactory.createTitledBorder(Res.string().getFunctionOperate()));
+			functionOperatePanel.setLayout(new FlowLayout());
+			Dimension dimension1 = new Dimension();
+			dimension1.height = 160;
+			functionOperatePanel.setPreferredSize(dimension1);
+			
+			startRealPlayBtn = new JButton(Res.string().getStartRealPlay());
+			stopRealPlayBtn = new JButton(Res.string().getStopRealPlay());
+			startTalkBtn = new JButton(Res.string().getStartTalk());
+			stopTalkBtn = new JButton(Res.string().getStopTalk());
+			captureBtn = new JButton(Res.string().getRemoteCapture());
+		
+			startRealPlayBtn.setPreferredSize(new Dimension(210, 21));
+			stopRealPlayBtn.setPreferredSize(new Dimension(210, 21));
+			startTalkBtn.setPreferredSize(new Dimension(210, 21));
+			stopTalkBtn.setPreferredSize(new Dimension(210, 21));
+			captureBtn.setPreferredSize(new Dimension(210, 21));
+			
+			startRealPlayBtn.setEnabled(false);
+			stopRealPlayBtn.setEnabled(false);
+			startTalkBtn.setEnabled(false);
+			stopTalkBtn.setEnabled(false);
+			captureBtn.setEnabled(false);
+			
+			functionOperatePanel.add(startRealPlayBtn);
+			functionOperatePanel.add(stopRealPlayBtn);
+			functionOperatePanel.add(startTalkBtn);
+			functionOperatePanel.add(stopTalkBtn);
+			functionOperatePanel.add(captureBtn);
+			
+			// 开启监听服务
+			startListenBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(ipTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getRegisterAddress(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(portTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getRegisterPort(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(AutoRegisterModule.startServer(ipTextField.getText(), 
+												      Integer.parseInt(portTextField.getText()), 
+												      servicCallback)) {
+						startListenBtn.setEnabled(false);
+						stopListenBtn.setEnabled(true);
+					}
+				}
+			});
+			
+			// 停止监听服务
+			stopListenBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(AutoRegisterModule.stopServer()) {
+						startListenBtn.setEnabled(true);
+						stopListenBtn.setEnabled(false);
+					}
+				}
+			});
+			
+	    	// 添加设备
+			addDeviceBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					addDevice();		
+				}
+			});
+			
+		    // 修改设备
+			modifyDeviceBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					modifyDevice();
+				}
+			});	
+			
+			// 删除单个
+			deleteDeviceBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					deleteDevice();				
+				}
+			});
+			
+			// 清空设备
+			clearDeviceBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					clearDevice();
+				}
+			});
+
+			// 导入文件
+			importDeviceBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					importDevice();
+				}
+			});
+			
+			// 导出文件
+			exportDeviceBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					exportDevice();
+				}
+			});
+			
+			// 登出
+			logoutBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							logout();	
+						}
+					});
+				}
+			});
+			
+			// 开始拉流
+			startRealPlayBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							startRealplay();
+						}
+					});
+				}
+			});
+			
+			// 停止拉流
+			stopRealPlayBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							stopRealplay();
+						}
+					});
+				}
+			});
+			
+			// 开始对讲
+			startTalkBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							startTalk();
+						}
+					});
+				}
+			});
+			
+			// 停止对讲
+			stopTalkBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							stopTalk();
+						}
+					});
+				}
+			});
+			
+			// 抓图
+			captureBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					capture();
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 添加设备
+	 */
+	private void addDevice() {
+		isExist = false;
+		
+		AddDeviceDialog addDeviceDialog = new AddDeviceDialog();
+
+		addDeviceDialog.addDeviceManagerListener(new DeviceManagerListener() {						
+			@Override
+			public void onDeviceManager(String deviceId, String username,
+										String password) {					
+				if(!deviceId.equals("")) {
+					// 最大支持导入100个
+					if(rootNode.getChildCount() >= 100) {
+						JOptionPane.showMessageDialog(null, Res.string().getMaximumSupport(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+	
+					// 判断设备是否存在
+					for(int i = 0; i < rootNode.getChildCount(); i++) {
+						DeviceTreeNode childNode = (DeviceTreeNode)rootNode.getChildAt(i);
+						
+						if(deviceId.equals(childNode.getDeviceInfo().getDevcieId())) {
+							isExist = true;
+							JOptionPane.showMessageDialog(null, Res.string().getAlreadyExisted(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							break;
+						}
+					}
+					
+					// 不存在,可以添加
+					if(!isExist) {
+						DEVICE_INFO deviceInfo = new DEVICE_INFO();
+						deviceInfo.setDevcieId(deviceId);
+						deviceInfo.setUsername(username);
+						deviceInfo.setPassword(password);
+						
+						DeviceTreeNode childNode = new DeviceTreeNode();					
+						childNode.setDeviceInfo(deviceInfo);
+						childNode.setUserObject(deviceId);
+						
+						rootNode.add(childNode);
+						
+						tree.expandPath(new TreePath(rootNode));						
+						tree.updateUI();
+					    tree.setCellRenderer(treeCellRender);
+						
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+				}				
+			}
+		});		
+		
+		addDeviceDialog.setVisible(true);
+	}
+	
+	/**
+	 * 修改设备
+	 */
+	private void modifyDevice() {
+		isExist = false;
+
+		// 选中的设备节点
+		final DeviceTreeNode deviceTreeNode = (DeviceTreeNode)tree.getLastSelectedPathComponent();
+		
+		if(deviceTreeNode == null) {
+			return;
+		}
+		
+		ModifyDeviceDialog modifyDeviceDialog = new ModifyDeviceDialog(deviceTreeNode.getDeviceInfo().devcieId, deviceTreeNode.getDeviceInfo().username, deviceTreeNode.getDeviceInfo().password);
+		
+		modifyDeviceDialog.addDeviceManagerListener(new DeviceManagerListener() {						
+			@Override
+			public void onDeviceManager(String deviceId, String username, String password) {	
+				if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+					JOptionPane.showMessageDialog(null, Res.string().getDeviceLogined(), Res.string().getErrorMessage(), JOptionPane.INFORMATION_MESSAGE);	
+					return;
+				}				
+				
+				if(!deviceId.equals("")) {				
+					// 设备ID变化,循环检查,查看是否已存在。    设备ID不变,即修改用户名和密码
+					if(!deviceId.equals(deviceTreeNode.getDeviceInfo().devcieId)) {
+						// 判断设备是否存在
+						for(int i = 0; i < rootNode.getChildCount(); i++) {
+							DeviceTreeNode childNode = (DeviceTreeNode)rootNode.getChildAt(i);
+							
+							if(deviceId.equals(childNode.getDeviceInfo().getDevcieId())) {
+								isExist = true;
+								JOptionPane.showMessageDialog(null, Res.string().getAlreadyExisted(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+								break;
+							}
+						}
+					}
+					
+					if(!isExist) {
+						// 修改信息
+						deviceTreeNode.getDeviceInfo().setDevcieId(deviceId);							
+						deviceTreeNode.getDeviceInfo().setUsername(username);
+						deviceTreeNode.getDeviceInfo().setPassword(password);			
+
+						deviceTreeNode.setUserObject(deviceId);				
+						deviceTreeNode.removeAllChildren();  
+						
+						tree.updateUI();	
+			
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);	
+					}
+				}
+			}
+		});
+		
+		modifyDeviceDialog.setVisible(true);
+	}
+	
+	/**
+	 * 删除单个设备
+	 */
+	private void deleteDevice() {
+		// 判断是否选中
+		DeviceTreeNode deviceTreeNode = (DeviceTreeNode)tree.getLastSelectedPathComponent();
+
+		if(deviceTreeNode == null) {
+			return;
+		}
+		
+		// 停止当前登录设备的对讲
+		if(deviceTreeNode == talkDeviceTreeNode) {
+			AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);					
+
+			talkDeviceTreeNode = null;
+		}
+		
+		// 停止当前登录设备的拉流
+		for(int i = 0; i < deviceTreeNode.getChildCount(); i++) {
+			ChannelTreeNode channelTreeNode = (ChannelTreeNode)deviceTreeNode.getChildAt(i);
+			if(channelTreeNode == realplayChannelTreeNode) {
+				AutoRegisterModule.stopRealPlay(realplayHandle);
+				realplayWindowPanel.repaint();
+
+				realplayChannelTreeNode = null;
+				
+				break;
+			}	
+		}	
+		
+		// 登出
+		if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+			AutoRegisterModule.logout(deviceTreeNode.getDeviceInfo().getLoginHandle());
+
+			logoutBtn.setEnabled(false);
+			modifyDeviceBtn.setEnabled(true);
+		}
+				
+		deviceTreeNode.setUserObject(deviceTreeNode.getDeviceInfo().getDevcieId());				
+		
+		treeModel.removeNodeFromParent(deviceTreeNode);
+		tree.updateUI();
+		
+		modifyDeviceBtn.setEnabled(false);
+		deleteDeviceBtn.setEnabled(false);
+	}
+	
+	/**
+	 * 清空设备
+	 */
+	private void clearDevice() {
+		// 停止拉流
+		if(realplayHandle.longValue() != 0) {
+			AutoRegisterModule.stopRealPlay(realplayHandle);
+			realplayWindowPanel.repaint();
+			
+			realplayChannelTreeNode = null;
+		}
+		
+		// 停止对讲
+		if(AutoRegisterModule.m_hTalkHandle.longValue() != 0) {
+			AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);	
+
+			talkDeviceTreeNode = null;					
+		}	
+		
+		// 登出所有设备
+		for(int i = 0; i < rootNode.getChildCount(); i++) {
+			DeviceTreeNode deviceTreeNode = (DeviceTreeNode)rootNode.getChildAt(i);
+			if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+				AutoRegisterModule.logout(deviceTreeNode.getDeviceInfo().getLoginHandle());
+			}
+		}
+		
+		capturePanel.setOpaque(true);
+		capturePanel.repaint();	
+
+		rootNode.removeAllChildren();
+		tree.updateUI();	
+		
+		logoutBtn.setEnabled(false);
+		modifyDeviceBtn.setEnabled(false);
+		deleteDeviceBtn.setEnabled(false);
+		startRealPlayBtn.setEnabled(false);
+		stopRealPlayBtn.setEnabled(false);
+		startTalkBtn.setEnabled(false);
+		stopTalkBtn.setEnabled(false);
+		captureBtn.setEnabled(false);
+	}
+	
+	/**
+	 * 导入文件
+	 */
+	private void importDevice() {
+		jfc = new JFileChooser("./");
+		jfc.setMultiSelectionEnabled(false);   //不可以拖选多个文件
+		jfc.setAcceptAllFileFilterUsed(false); //关掉显示所有
+		jfc.setDialogTitle(Res.string().getImportDevice());
+	
+		//添加过滤器
+		jfc.addChoosableFileFilter(new FileFilter() {
+			public boolean accept(File f) {
+				if(f.getName().toLowerCase().endsWith("csv")
+						|| f.isDirectory()) {
+					return true;
+				}
+				return false;
+			}
+			public String getDescription() {
+				return ".csv";
+			}
+		});
+		
+        if(jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {	
+			String path = jfc.getSelectedFile().getAbsolutePath();
+        	
+        	if(!path.endsWith("csv")) {
+        		path += ".csv";
+        	}
+			importFile(path, "GB2312");	
+        } 
+	}
+	
+	/**
+	 * 导出文件
+	 */
+	private void exportDevice() {
+		jfc = new JFileChooser("./");
+		jfc.setMultiSelectionEnabled(false);   //不可以拖选多个文件
+		jfc.setAcceptAllFileFilterUsed(false); //关掉显示所有
+		jfc.setDialogTitle(Res.string().getExportDevice());
+
+		//添加过滤器
+		jfc.addChoosableFileFilter(new FileFilter() {
+			public boolean accept(File f) {
+				if(f.getName().toLowerCase().endsWith("csv")
+						|| f.isDirectory()) {
+					return true;
+				}
+				return false;
+			}
+			public String getDescription() {
+				return ".csv";
+			}
+		});
+								
+        if(jfc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
+
+        	String path = jfc.getSelectedFile().toString();
+        	if(!path.endsWith("csv")) {
+        		path += ".csv";
+        	}
+        	System.out.println(path);
+        	File file = new File(path);
+        	
+    		if(file.exists()) {  // 已存在文件
+    			int result = JOptionPane.showConfirmDialog(null, Res.string().getWhetherNoToCover(), Res.string().getPromptMessage(), JOptionPane.YES_NO_OPTION);
+    			if(result == JOptionPane.YES_OPTION) {  // 覆盖
+    				if(!file.renameTo(file)) {  // 被使用
+    					JOptionPane.showMessageDialog(null, Res.string().getFileOpened(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+    				} else {   // 未被使用
+    					exportFile(file);	
+    				}			
+    			} 
+    		} else {  // 新建文件			    			
+    			exportFile(file);		
+    		}
+        } 			
+	}
+	
+	/**
+	 * 登出设备功能
+	 */
+	private void logout() {
+		// 选中的设备节点
+		DeviceTreeNode deviceTreeNode = (DeviceTreeNode)tree.getLastSelectedPathComponent();
+		
+		if(deviceTreeNode == null) {
+			return;
+		}
+		
+		// 停止当前登录设备的对讲
+		if(deviceTreeNode == talkDeviceTreeNode) {
+			AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);					
+
+			talkDeviceTreeNode = null;
+		}
+		
+		// 停止当前登录设备的拉流
+		for(int i = 0; i < deviceTreeNode.getChildCount(); i++) {
+			ChannelTreeNode channelTreeNode = (ChannelTreeNode)deviceTreeNode.getChildAt(i);
+			if(channelTreeNode == realplayChannelTreeNode) {
+				AutoRegisterModule.stopRealPlay(realplayHandle);
+				realplayWindowPanel.repaint();
+
+				realplayChannelTreeNode = null;
+				
+				break;
+			}	
+		}	
+		
+		// 登出
+		if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+			AutoRegisterModule.logout(deviceTreeNode.getDeviceInfo().getLoginHandle());
+
+			logoutBtn.setEnabled(false);
+			modifyDeviceBtn.setEnabled(true);
+		}
+				
+		deviceTreeNode.setUserObject(deviceTreeNode.getDeviceInfo().getDevcieId());				
+		deviceTreeNode.removeAllChildren();  
+		
+		tree.updateUI();
+	}
+	
+	/**
+	 * 开始拉流功能
+	 */
+	private void startRealplay() {
+		// 选中的通道节点
+		ChannelTreeNode channelTreeNode = (ChannelTreeNode)tree.getLastSelectedPathComponent();
+		
+		if(channelTreeNode == null) {
+			return;
+		}
+		
+		// 通道节点对应的设备节点
+		DeviceTreeNode deviceTreeNode = (DeviceTreeNode)channelTreeNode.getParent();
+		
+		// 判断所有设备有没有拉流
+		if(realplayHandle.longValue() != 0) {
+			AutoRegisterModule.stopRealPlay(realplayHandle);					
+			realplayWindowPanel.repaint();
+
+			realplayChannelTreeNode = null;
+		}	
+
+		// 选中通道拉流
+		realplayHandle = AutoRegisterModule.startRealPlay(deviceTreeNode.getDeviceInfo().getLoginHandle(), channelTreeNode.getChn() - 1, 0, realplayWindowPanel);
+	
+		if(realplayHandle.longValue() != 0) {
+			startRealPlayBtn.setEnabled(false);
+			stopRealPlayBtn.setEnabled(true);
+			
+			realplayChannelTreeNode = channelTreeNode;					
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getRealplay() + Res.string().getFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+		}
+		
+		tree.updateUI();
+	}
+	
+	/**
+	 * 停止拉流功能
+	 */
+	private void stopRealplay() {
+		if(realplayHandle.longValue() != 0) {
+			AutoRegisterModule.stopRealPlay(realplayHandle);
+			realplayWindowPanel.repaint();
+			
+			realplayChannelTreeNode = null;
+
+			startRealPlayBtn.setEnabled(true);
+			stopRealPlayBtn.setEnabled(false);
+		}
+		tree.updateUI();
+	}
+	
+	/**
+	 * 开始对讲
+	 */
+	private void startTalk() {
+		// 选中的设备节点
+		DeviceTreeNode deviceTreeNode = (DeviceTreeNode)tree.getLastSelectedPathComponent();
+		
+		if(deviceTreeNode == null) {
+			return;
+		}
+		
+		// 判断所有设备有没有对讲
+		if(AutoRegisterModule.m_hTalkHandle.longValue() != 0) {
+			AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);					
+			
+			talkDeviceTreeNode = null;
+		}	
+
+		// 选中设备对讲
+		if(AutoRegisterModule.startTalk(deviceTreeNode.getDeviceInfo().getLoginHandle())) {		
+			startTalkBtn.setEnabled(false);
+			stopTalkBtn.setEnabled(true);
+			
+			talkDeviceTreeNode = deviceTreeNode;				
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getTalk() + Res.string().getFailed() + ", " +  ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+		}
+		
+		tree.updateUI();
+	}
+	
+	/**
+	 * 停止对讲
+	 */
+	private void stopTalk() {
+		// 判断设备的通道有没有对讲
+		if(AutoRegisterModule.m_hTalkHandle.longValue() != 0) {
+			AutoRegisterModule.stopTalk(AutoRegisterModule.m_hTalkHandle);					
+
+			talkDeviceTreeNode = null;
+
+			startTalkBtn.setEnabled(true);
+			stopTalkBtn.setEnabled(false);
+		}	
+
+		tree.updateUI();
+	}
+	
+	/**
+	 * 抓图功能
+	 */
+	private void capture() {
+		// 选中的通道节点
+		ChannelTreeNode channelTreeNode = (ChannelTreeNode)tree.getLastSelectedPathComponent();
+		
+		if(channelTreeNode == null) {
+			return;
+		}
+		
+		// 通道节点对应的设备节点
+		DeviceTreeNode deviceTreeNode = (DeviceTreeNode)channelTreeNode.getParent();
+		
+		AutoRegisterModule.snapPicture(deviceTreeNode.getDeviceInfo().getLoginHandle(), channelTreeNode.getChn() - 1);
+	}
+	
+	/**
+	 * 侦听服务器回调函数
+	 */
+	public class ServiceCB implements fServiceCallBack {
+		@Override
+		public int invoke(LLong lHandle, final String pIp, final int wPort,
+				int lCommand, Pointer pParam, int dwParamLen,
+				Pointer dwUserData) {
+
+			// 将 pParam 转化为序列号
+			byte[] buffer = new byte[dwParamLen];
+			pParam.read(0, buffer, 0, dwParamLen);
+			String deviceId = "";
+			try {
+				deviceId = new String(buffer, "GBK").trim();
+			} catch (UnsupportedEncodingException e) {
+				e.printStackTrace();
+			}
+			
+			System.out.printf("Register Device Info [Device address %s][port %s][DeviceID %s] \n", pIp, wPort, deviceId);
+			switch(lCommand) {
+				case EM_LISTEN_TYPE.NET_DVR_DISCONNECT: {  // 验证期间设备断线回调
+					for(int i = 0; i < rootNode.getChildCount(); i++) {
+						if(deviceId.equals(((DeviceTreeNode)rootNode.getChildAt(i)).getDeviceInfo().getDevcieId())) {							
+							DeviceTreeNode deviceTreeNode = (DeviceTreeNode)rootNode.getChildAt(i);				
+							
+							deviceTreeNode.getDeviceInfo().setDeviceIp("");
+							deviceTreeNode.getDeviceInfo().setDevicePort(0);
+							
+							break;
+						}
+					}	
+					
+					break;
+				}			
+				case EM_LISTEN_TYPE.NET_DVR_SERIAL_RETURN: { // 设备注册携带序列号
+					for(int i = 0; i < rootNode.getChildCount(); i++) {
+						if(deviceId.equals(((DeviceTreeNode)rootNode.getChildAt(i)).getDeviceInfo().getDevcieId())) {							
+							final DeviceTreeNode deviceTreeNode = (DeviceTreeNode)rootNode.getChildAt(i);				
+							
+							deviceTreeNode.getDeviceInfo().setDeviceIp(pIp);
+							deviceTreeNode.getDeviceInfo().setDevicePort(wPort);
+							
+							try {
+								Thread.sleep(20);
+							} catch (InterruptedException e1) {
+								e1.printStackTrace();
+							}
+							
+							new SwingWorker<LLong, String>() {					
+								@Override
+								protected LLong doInBackground() {
+									return login(deviceTreeNode);						
+								}
+								
+								@Override
+								protected void done() {
+									try {
+										if(get() == null) {
+											return;
+										}
+										
+										if(get().longValue() != 0) {
+//											deviceTreeNode.getDeviceInfo().setDeviceIp(pIp);
+//											deviceTreeNode.getDeviceInfo().setDevicePort(wPort);
+											deviceTreeNode.getDeviceInfo().setLoginHandle(get());
+											
+											for(int i = 0; i < AutoRegisterModule.m_stDeviceInfo.byChanNum; i++) {
+												ChannelTreeNode chnNode = new ChannelTreeNode();
+												chnNode.setChn(i + 1);
+												chnNode.setUserObject(Res.string().getChannel() + " " + String.valueOf(i + 1));
+												
+												deviceTreeNode.add(chnNode);
+											}
+											
+											deviceTreeNode.setUserObject(deviceTreeNode.getDeviceInfo().getDevcieId() + " (" + deviceTreeNode.getDeviceInfo().getDeviceIp() + ")");	
+											tree.expandPath(new TreePath(rootNode));
+											tree.setCellRenderer(treeCellRender);	
+											tree.updateUI();
+										}		
+									} catch (InterruptedException e) {
+										e.printStackTrace();
+									} catch (ExecutionException e) {
+										e.printStackTrace();
+									}					
+								}
+							}.execute();
+							
+							break;
+						}
+					}	
+					
+					break;
+				}
+				default:
+					break;
+			
+			}			
+
+			return 0;
+		}
+	}
+	
+	/**
+	 * 登录设备
+	 * @param deviceIp 登录设备IP
+	 * @param port 登录设备端口号
+	 * @param deviceTreeNode 登录设备设备节点
+	 */
+	private LLong login(DeviceTreeNode deviceTreeNode) {				
+		// 判断设备是否登录
+		if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+			return null;
+		}
+		
+		LLong loginHandleLong = AutoRegisterModule.login(deviceTreeNode.getDeviceInfo().getDeviceIp(), 
+														 deviceTreeNode.getDeviceInfo().getDevicePort(), 
+														 deviceTreeNode.getDeviceInfo().getUsername(), 
+														 deviceTreeNode.getDeviceInfo().getPassword(), 
+														 deviceTreeNode.getDeviceInfo().getDevcieId());
+		if(loginHandleLong.longValue() != 0) {
+			System.out.printf("Login Success [Device IP %s][port %d][DeviceID %s]\n", deviceTreeNode.getDeviceInfo().getDeviceIp(), 
+					deviceTreeNode.getDeviceInfo().getDevicePort(), deviceTreeNode.getDeviceInfo().getDevcieId());
+		}  else {
+			System.err.printf("Login Failed[Device IP %s] [Port %d][DeviceID %s] %s", deviceTreeNode.getDeviceInfo().getDeviceIp(), 
+					deviceTreeNode.getDeviceInfo().getDevicePort(), deviceTreeNode.getDeviceInfo().getDevcieId(), ToolKits.getErrorCodePrint());
+		}
+		
+		return loginHandleLong;
+	} 
+
+	/**
+	 * 设备节点
+	 */
+	private class DeviceTreeNode extends DefaultMutableTreeNode {
+		private static final long serialVersionUID = 1L;
+		
+		private DEVICE_INFO deviceInfo; // 信息
+		
+		public DeviceTreeNode() {
+			
+		}
+		
+		@Override
+		public Object getUserObject() {
+			return super.getUserObject();
+		}
+
+		@Override
+		public void setUserObject(Object arg0) {
+			super.setUserObject(arg0);
+		}
+
+		public DEVICE_INFO getDeviceInfo() {
+			return deviceInfo;
+		}
+		
+		public void setDeviceInfo(DEVICE_INFO deviceInfo) {
+			this.deviceInfo = deviceInfo;
+		}
+	}
+	
+	/**
+	 * 通道节点
+	 */
+	private class ChannelTreeNode extends DefaultMutableTreeNode {
+		private static final long serialVersionUID = 1L;
+
+		private int nChn = 0;
+		
+		public ChannelTreeNode() {
+			
+		}
+		
+		public int getChn() {
+			return nChn;
+		}
+		public void setChn(int nChn) {
+			this.nChn = nChn;
+		}
+	}
+	
+	/**
+	 * 设备信息
+	 */
+	private class DEVICE_INFO {
+		private String devcieId = "";
+		private String username = "";
+		private String password = "";
+		private String deviceIp = "";
+		private int port = 0;
+		private LLong loginHandle = new LLong(0);
+		
+		public String getDevcieId() {
+			return devcieId;
+		}
+		public void setDevcieId(String devcieId) {
+			this.devcieId = devcieId;
+		}
+		
+		public String getDeviceIp() {
+			return deviceIp;
+		}
+		public void setDeviceIp(String deviceIp) {
+			this.deviceIp = deviceIp;
+		}
+		
+		public int getDevicePort() {
+			return port;
+		}
+		public void setDevicePort(int port) {
+			this.port = port;
+		}
+		
+		public String getUsername() {
+			return username;
+		}
+		public void setUsername(String username) {
+			this.username = username;
+		}
+		
+		public String getPassword() {
+			return password;
+		}
+		public void setPassword(String password) {
+			this.password = password;
+		}
+		
+		public LLong getLoginHandle() {
+			return loginHandle;
+		}
+		public void setLoginHandle(LLong loginHandle) {
+			this.loginHandle = loginHandle;
+		}	
+	}
+
+	/**
+	 * 自定义树的渲染器
+	 */
+	private class TreeCellRender extends DefaultTreeCellRenderer {
+		private static final long serialVersionUID = 1L;
+
+		public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, 
+				boolean expanded, boolean leaf, int row, boolean hasFocus) {
+			
+			super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
+		
+			if(value instanceof DeviceTreeNode) {
+				setIcon(new ImageIcon("./libs/device.png"));
+				
+				DeviceTreeNode deviceTreeNode = (DeviceTreeNode)value;
+		
+				// 设备节点的字体颜色
+				if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {					
+					if(deviceTreeNode == talkDeviceTreeNode) { 
+					    setForeground(Color.RED);
+					} else {
+						setForeground(Color.GREEN);
+					}
+				} else {
+					setForeground(Color.BLACK);
+				}	
+				
+				if(selected) {	
+					// 如果设备节点被选中,拉流按钮使能
+					startRealPlayBtn.setEnabled(false);
+					stopRealPlayBtn.setEnabled(false);
+					captureBtn.setEnabled(false);
+					deleteDeviceBtn.setEnabled(true);
+					
+					// 设备节点被选中,登录时的使能
+					if(deviceTreeNode.getDeviceInfo().getLoginHandle().longValue() != 0) {
+						logoutBtn.setEnabled(true);
+						modifyDeviceBtn.setEnabled(false);
+									
+						if(deviceTreeNode == talkDeviceTreeNode) { 
+							startTalkBtn.setEnabled(false);
+							stopTalkBtn.setEnabled(true);						
+						} else {
+							startTalkBtn.setEnabled(true);
+							stopTalkBtn.setEnabled(false);
+						}
+					} else {	// 登出时的使能					
+						logoutBtn.setEnabled(false);
+						modifyDeviceBtn.setEnabled(true);
+						startTalkBtn.setEnabled(false);
+						stopTalkBtn.setEnabled(false);
+					}	
+				} 
+			} else if(value instanceof ChannelTreeNode) {
+				setIcon(new ImageIcon("./libs/camera.png"));
+				
+				ChannelTreeNode channelTreeNode = (ChannelTreeNode)value;
+				
+				// 设置通道节点的字体颜色	
+				if(channelTreeNode == realplayChannelTreeNode) {
+					setForeground(Color.RED);
+				} else {
+					setForeground(Color.BLACK);					
+				}
+
+				if(selected) {		
+					// 如果通道节点被选中,登出置灰
+					logoutBtn.setEnabled(false);
+					captureBtn.setEnabled(true);
+					modifyDeviceBtn.setEnabled(false);
+					deleteDeviceBtn.setEnabled(false);
+					startTalkBtn.setEnabled(false);
+					stopTalkBtn.setEnabled(false);	
+					
+					if(channelTreeNode == realplayChannelTreeNode) {
+						startRealPlayBtn.setEnabled(false);
+						stopRealPlayBtn.setEnabled(true);
+					} else {
+						startRealPlayBtn.setEnabled(true);
+						stopRealPlayBtn.setEnabled(false);					
+					}
+				} 
+			}
+
+			return this;
+		}
+	}
+	
+	/**
+	 * 导入csv文件
+	 */
+	private void importFile(String filePath, String encoding) {    	
+		File file = new File(filePath);
+
+		if(!file.exists()) {
+			JOptionPane.showMessageDialog(null, Res.string().getFileNotExist(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+  		FileInputStream input = null;
+		InputStreamReader reader = null;
+		BufferedReader bReader = null;
+		
+    	try {
+    		input = new FileInputStream(file);
+
+    		if(encoding == null) {
+    			reader = new InputStreamReader(input);
+    		} else {
+    			reader = new InputStreamReader(input, encoding);
+    		}
+    		bReader = new BufferedReader(reader);
+    		
+    		// 头标题
+    		String line = bReader.readLine();
+        	String everyLine = "";           	
+        	
+    		while((line = bReader.readLine()) != null) {
+    			everyLine = line;
+    			
+    			// 最大支持导入100个
+    			if(rootNode.getChildCount() >= 100) {
+    				return;
+    			}
+    			
+				String[] infos = everyLine.split(",");
+
+				isExist = false;
+				if(!infos[0].equals("")) {				
+					// 判断是否存在
+					for(int i = 0; i < rootNode.getChildCount(); i++) {   					
+						DeviceTreeNode childNode = (DeviceTreeNode)rootNode.getChildAt(i);					
+						if(infos[0].equals(childNode.getDeviceInfo().getDevcieId())) {
+							isExist = true;										
+							break;
+						}
+					}
+					
+					// 不存在, 可以添加
+					if(!isExist) {
+	    	   			final DEVICE_INFO deviceInfo = new DEVICE_INFO();
+	    				deviceInfo.setDevcieId(infos[0]);
+	    				if(infos.length == 1) {
+	    					deviceInfo.setUsername("");
+	    					deviceInfo.setPassword("");
+	    				} else if(infos.length == 2) {
+	    					deviceInfo.setUsername(infos[1]);
+	    					deviceInfo.setPassword("");
+	    				} else if(infos.length == 3){
+	    					deviceInfo.setUsername(infos[1]);
+	        				deviceInfo.setPassword(infos[2]);
+	    				}       			
+	    				
+						DeviceTreeNode childNode = new DeviceTreeNode();					
+	    				childNode.setDeviceInfo(deviceInfo);
+	    				childNode.setUserObject(infos[0]);
+	    				
+	    				rootNode.add(childNode);
+	    				
+	    				tree.expandPath(new TreePath(rootNode));
+	    				tree.updateUI();
+					}
+				}				
+    		} 
+    	} catch (FileNotFoundException e) {
+    		e.printStackTrace();
+    	} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+    		if(null != bReader) {
+    			try {
+    				bReader.close();
+    			} catch (IOException e) {
+    				e.printStackTrace();
+    			}
+    		}
+            tree.setCellRenderer(treeCellRender);
+    		JOptionPane.showMessageDialog(null, Res.string().getImportCompletion(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+    	}
+	}
+
+	/**
+	 * 导出csv文件
+	 */
+	private void exportFile(File file) {
+		FileOutputStream output = null;
+		OutputStreamWriter osWriter = null;
+		BufferedWriter bWriter = null;
+		
+		try {		
+			output = new FileOutputStream(file);
+			osWriter = new OutputStreamWriter(output, "GB2312");	
+			bWriter = new BufferedWriter(osWriter);
+			
+			// 写头标题
+			bWriter.write("DeviceId" + "," + "UserName" + "," + "Password");
+			bWriter.newLine();
+			
+			// 写内容
+			for(int i = 0; i < rootNode.getChildCount(); i++) {   					
+				DeviceTreeNode childNode = (DeviceTreeNode)rootNode.getChildAt(i);	
+				String deviceId = childNode.getDeviceInfo().getDevcieId();
+				String username = childNode.getDeviceInfo().getUsername();
+				String password = childNode.getDeviceInfo().getPassword();
+				
+				bWriter.write(deviceId + "," + username + "," + password);
+				bWriter.newLine();
+			}				
+		} catch (FileNotFoundException e) {
+			e.printStackTrace();
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();		
+		} finally {
+			if(null != bWriter) {
+				try {
+					bWriter.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+			JOptionPane.showMessageDialog(null, Res.string().getExportCompletion(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+		}
+	}
+	
+	/**
+	 * 抓图回调函数
+	 */
+	public class CaptureReceiveCB implements NetSDKLib.fSnapRev{
+		BufferedImage bufferedImage = null;
+		public void invoke( LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {	
+			if(pBuf != null && RevLen > 0) {			        
+				String strFileName = SavePath.getSavePath().getSaveCapturePath(); 
+
+				System.out.println("strFileName = " + strFileName);
+
+				byte[] buf = pBuf.getByteArray(0, RevLen);
+				ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
+				try {
+					bufferedImage = ImageIO.read(byteArrInput);
+					if(bufferedImage == null) {
+						return;
+					}
+					ImageIO.write(bufferedImage, "jpg", new File(strFileName));	
+				} catch (IOException e) {
+					e.printStackTrace();
+				}	
+				
+				// 界面显示抓图	 
+				SwingUtilities.invokeLater(new Runnable() {	
+					@Override
+					public void run() {			
+						capturePanel.setOpaque(false);
+						capturePanel.setImage(bufferedImage);
+						capturePanel.repaint();				
+					}
+				});
+			}
+		}
+	}
+	
+	/**
+	 * 获取本地地址
+	 * @return
+	 */
+	private String getHostAddress() {
+		String address = "";
+		try {
+			InetAddress inetAddress = InetAddress.getLocalHost();
+			address = inetAddress.getHostAddress();
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		}
+		
+		return address;
+	}
+	
+    private DefaultMutableTreeNode rootNode; 	 
+    private DefaultTreeModel treeModel;
+    private JTree tree;
+	
+    private Panel realplayWindowPanel;
+    private PaintPanel capturePanel;
+    
+	private JTextField ipTextField;
+	private JTextField portTextField;
+	private JButton startListenBtn;
+	private JButton stopListenBtn;	
+	private JButton addDeviceBtn;
+	private JButton modifyDeviceBtn;
+	private JButton deleteDeviceBtn;
+	private JButton clearDeviceBtn;
+	private JButton importDeviceBtn;
+	private JButton exportDeviceBtn;
+	private JButton logoutBtn;
+
+	private JButton startRealPlayBtn;
+	private JButton stopRealPlayBtn;
+	private JButton startTalkBtn;
+	private JButton stopTalkBtn;
+	private JButton captureBtn;
+	
+	private JFileChooser jfc;
+}
+
+public class AutoRegister {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				AutoRegisterFrame demo = new AutoRegisterFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/DeviceConfigDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/DeviceConfigDialog.java
new file mode 100644
index 0000000..e006d29
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/DeviceConfigDialog.java
@@ -0,0 +1,341 @@
+package com.netsdk.demo.frame.AutoRegister;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AutoRegisterModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.CFG_DVRIP_INFO;
+
+/**
+ * 主动注册网络配置
+ */
+public class DeviceConfigDialog extends JDialog{
+	private static final long serialVersionUID = 1L;
+	
+	private CFG_DVRIP_INFO info = null;
+	private ExecutorService executorService = Executors.newSingleThreadExecutor();
+	
+	public DeviceConfigDialog(){
+		setTitle(Res.string().getDeviceConfig());
+		setLayout(new BorderLayout());
+	    setModal(true);
+		pack();
+		setSize(300, 380);
+	    setResizable(false);
+	    setLocationRelativeTo(null);    
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体	
+		
+		loginDevicePanel = new LoginDevicePanel();
+		ConfigDevicePanel configDevicePanel = new ConfigDevicePanel();
+		
+        add(loginDevicePanel, BorderLayout.NORTH);
+        add(configDevicePanel, BorderLayout.CENTER);
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				if(!executorService.isShutdown()) {
+					executorService.shutdown();
+				}
+
+				LoginModule.logout();
+				dispose();
+			}
+		});
+	}
+	
+	/*
+	 * 登陆设备面板
+	 */
+	private class LoginDevicePanel extends LoginPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public LoginDevicePanel() {
+			BorderEx.set(this, Res.string().getLogin(), 2);
+			setLayout(new FlowLayout());
+			Dimension dimension = new Dimension();
+			dimension.height = 180;
+			setPreferredSize(dimension);
+			
+			ipLabel.setPreferredSize(new Dimension(100, 21));
+			portLabel.setPreferredSize(new Dimension(100, 21));
+			nameLabel.setPreferredSize(new Dimension(100, 21));
+			passwordLabel.setPreferredSize(new Dimension(100, 21));
+			
+			ipLabel.setHorizontalAlignment(JLabel.CENTER);
+			portLabel.setHorizontalAlignment(JLabel.CENTER);
+			nameLabel.setHorizontalAlignment(JLabel.CENTER);
+			passwordLabel.setHorizontalAlignment(JLabel.CENTER);
+			
+			ipTextArea.setPreferredSize(new Dimension(140, 21));
+			portTextArea.setPreferredSize(new Dimension(140, 21));
+			nameTextArea.setPreferredSize(new Dimension(140, 21));
+			passwordTextArea.setPreferredSize(new Dimension(140, 21));		
+			loginBtn.setPreferredSize(new Dimension(120, 21));
+			logoutBtn.setPreferredSize(new Dimension(120, 21));
+			
+			add(ipLabel);
+			add(ipTextArea);
+			add(portLabel);
+			add(portTextArea);
+			add(nameLabel);
+			add(nameTextArea);
+			add(passwordLabel);
+			add(passwordTextArea);
+			add(loginBtn);
+			add(logoutBtn);
+			
+			// 登陆
+			loginBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					login();
+				}
+			});
+			
+			// 登出
+			logoutBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					logout();
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 配置设备面板
+	 */
+	private class ConfigDevicePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public ConfigDevicePanel() {
+			BorderEx.set(this, Res.string().getDeviceConfig(), 2);
+			setLayout(new FlowLayout());
+			
+			enableCheckBox = new JCheckBox(Res.string().getEnable());
+			JLabel nullLabel = new JLabel();
+			JLabel autoRegisterIpLabel = new JLabel(Res.string().getRegisterAddress(), JLabel.CENTER);
+			JLabel autoRegisterPortLabel = new JLabel(Res.string().getRegisterPort(), JLabel.CENTER);
+			JLabel deviceIdLabel = new JLabel(Res.string().getDeviceID(), JLabel.CENTER);
+			
+			enableCheckBox.setPreferredSize(new Dimension(80, 21));
+			nullLabel.setPreferredSize(new Dimension(120, 21));
+			autoRegisterIpLabel.setPreferredSize(new Dimension(100, 21));
+			autoRegisterPortLabel.setPreferredSize(new Dimension(100, 21));
+			deviceIdLabel.setPreferredSize(new Dimension(100, 21));
+			
+			autoRegisterIpTextField = new JTextField();
+			autoRegisterPortTextField = new JTextField();
+			deviceIdTextField = new JTextField();
+			
+			autoRegisterIpTextField.setPreferredSize(new Dimension(140, 21));
+			autoRegisterPortTextField.setPreferredSize(new Dimension(140, 21));
+			deviceIdTextField.setPreferredSize(new Dimension(140, 21));
+			
+			getBtn = new JButton(Res.string().getGet());
+			setBtn = new JButton(Res.string().getSet());
+			
+			getBtn.setPreferredSize(new Dimension(120, 21));
+			setBtn.setPreferredSize(new Dimension(120, 21));
+			
+			add(enableCheckBox);
+			add(nullLabel);
+			add(autoRegisterIpLabel);
+			add(autoRegisterIpTextField);
+			add(autoRegisterPortLabel);
+			add(autoRegisterPortTextField);
+			add(deviceIdLabel);
+			add(deviceIdTextField);
+			add(getBtn);
+			add(setBtn);
+			
+			enableCheckBox.setSelected(true);
+			enableCheckBox.setEnabled(false);
+			getBtn.setEnabled(false);
+			setBtn.setEnabled(false);
+			autoRegisterIpTextField.setEnabled(false);
+			autoRegisterPortTextField.setEnabled(false);
+			deviceIdTextField.setEnabled(false);
+			
+			// 获取
+			getBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					executorService.execute(new Runnable() {					
+						@Override
+						public void run() {
+							getBtn.setEnabled(false);
+						}
+					});
+					
+					executorService.execute(new Runnable() {					
+						@Override
+						public void run() {
+							getConfig();
+						}
+					});
+				}
+			});
+			
+			// 设置
+			setBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					executorService.execute(new Runnable() {					
+						@Override
+						public void run() {
+							setBtn.setEnabled(false);
+						}
+					});
+					
+					executorService.execute(new Runnable() {					
+						@Override
+						public void run() {
+							setConfig();
+						}
+					});
+				}
+			});
+		}
+	}
+	
+	// 登陆
+	private void login() {
+		if(loginDevicePanel.checkLoginText()) {
+			if(LoginModule.login(loginDevicePanel.ipTextArea.getText(), 
+								 Integer.parseInt(loginDevicePanel.portTextArea.getText()), 
+								 loginDevicePanel.nameTextArea.getText(), 
+								 new String(loginDevicePanel.passwordTextArea.getPassword()))) {
+				loginDevicePanel.setButtonEnable(true);
+				enableCheckBox.setEnabled(true);
+				getBtn.setEnabled(true);
+				setBtn.setEnabled(true);
+				autoRegisterIpTextField.setEnabled(true);
+				autoRegisterPortTextField.setEnabled(true);
+				deviceIdTextField.setEnabled(true);
+			} else {				
+				JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		} 
+	}
+	
+	// 登出
+	private void logout() {
+		LoginModule.logout();
+		loginDevicePanel.setButtonEnable(false);
+		enableCheckBox.setEnabled(false);
+		getBtn.setEnabled(false);
+		setBtn.setEnabled(false);
+		autoRegisterIpTextField.setEnabled(false);
+		autoRegisterPortTextField.setEnabled(false);
+		deviceIdTextField.setEnabled(false);
+		autoRegisterIpTextField.setText("");
+		autoRegisterPortTextField.setText("");
+		deviceIdTextField.setText("");
+	}
+	
+	// 获取
+	private void getConfig() {
+		info = AutoRegisterModule.getDVRIPConfig(LoginModule.m_hLoginHandle);
+		if(info == null) {
+			autoRegisterIpTextField.setText("");
+			autoRegisterPortTextField.setText("");
+			deviceIdTextField.setText("");
+			JOptionPane.showMessageDialog(null, Res.string().getGet() + Res.string().getFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+		} else {
+			if(info.stuRegisters[0].bEnable == 1) {
+				enableCheckBox.setSelected(true);
+			} else {
+				enableCheckBox.setSelected(false);
+			}
+			
+			autoRegisterIpTextField.setText(new String(info.stuRegisters[0].stuServers[0].szAddress).trim());
+			autoRegisterPortTextField.setText(String.valueOf(info.stuRegisters[0].stuServers[0].nPort));
+			try {
+				deviceIdTextField.setText(new String(info.stuRegisters[0].szDeviceID, "GBK").trim());
+			} catch (UnsupportedEncodingException e) {
+				e.printStackTrace();
+			}
+			
+			JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+		}
+		getBtn.setEnabled(true);
+	}
+	
+	/**
+	 * 设置(在获取的基础上配置)
+	 */
+	private void setConfig() {
+		info = AutoRegisterModule.getDVRIPConfig(LoginModule.m_hLoginHandle);
+		if(autoRegisterIpTextField.getText().equals("")) {
+			setBtn.setEnabled(true);
+			JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getRegisterAddress(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		if(autoRegisterPortTextField.getText().equals("")) {
+			setBtn.setEnabled(true);
+			JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getRegisterPort(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		if(deviceIdTextField.getText().equals("")) {
+			setBtn.setEnabled(true);
+			JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getDeviceID(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return;
+		}
+		
+		// win下,中文需要转换为GBK
+		byte[] deviceId = null;
+		try {
+			deviceId = deviceIdTextField.getText().getBytes("GBK");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		
+		System.out.println("登录句柄"+LoginModule.m_hLoginHandle + "是否启用" +  enableCheckBox.isSelected() + "ip" + autoRegisterIpTextField.getText() + "端口" + autoRegisterPortTextField.getText() + "设备id" + new String(deviceId));
+		
+		if(AutoRegisterModule.setDVRIPConfig(LoginModule.m_hLoginHandle, 
+										    enableCheckBox.isSelected(),
+										    autoRegisterIpTextField.getText(), 
+										    Integer.parseInt(autoRegisterPortTextField.getText()), 
+										    deviceId,
+										    info)) {
+			JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getSet() + Res.string().getFailed() + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+		}
+		
+		setBtn.setEnabled(true);
+	}
+	
+	private LoginDevicePanel loginDevicePanel;
+	
+	private JTextField autoRegisterIpTextField;
+	private JTextField autoRegisterPortTextField;
+	private JTextField deviceIdTextField;	
+	private JCheckBox enableCheckBox;
+	private JButton getBtn;
+	private JButton setBtn;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/ModifyDeviceDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/ModifyDeviceDialog.java
new file mode 100644
index 0000000..38ec6c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/AutoRegister/ModifyDeviceDialog.java
@@ -0,0 +1,146 @@
+package com.netsdk.demo.frame.AutoRegister;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DeviceManagerListener;
+import com.netsdk.common.Res;
+
+/**
+ * 在树上修改设备
+ */
+public class ModifyDeviceDialog extends JDialog{
+	private static final long serialVersionUID = 1L;
+	
+	private DeviceManagerListener listener;
+	public void addDeviceManagerListener(DeviceManagerListener listener) {
+		this.listener = listener;
+	}
+	
+	private String deviceId = ""; 
+	private String username = "";
+	private String password = "";
+	
+	public ModifyDeviceDialog(String deviceId, String username, String password){
+		setTitle(Res.string().getModifyDevice());
+		setLayout(new BorderLayout());
+	    setModal(true);    
+		pack();
+		setSize(220, 180);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+	    this.deviceId = deviceId;
+	    this.username = username;
+	    this.password = password;
+		
+		ModifyDevicePanel addDevicePanel = new ModifyDevicePanel();
+        add(addDevicePanel, BorderLayout.CENTER);
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+	}
+	
+	/*
+	 * 修改设备面板
+	 */
+	private class ModifyDevicePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public ModifyDevicePanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new FlowLayout());
+			
+			JLabel deviceIdLabel = new JLabel(Res.string().getDeviceID(), JLabel.CENTER);
+			JLabel usernameLabel = new JLabel(Res.string().getUserName(), JLabel.CENTER);
+			JLabel passwordLabel = new JLabel(Res.string().getPassword(), JLabel.CENTER);
+			
+			deviceIdLabel.setPreferredSize(new Dimension(60, 21));
+			usernameLabel.setPreferredSize(new Dimension(60, 21));
+			passwordLabel.setPreferredSize(new Dimension(60, 21));
+			
+			deviceIdTextField = new JTextField();
+			usernameTextField = new JTextField();
+			passwordPasswordField = new JPasswordField();
+			
+			deviceIdTextField.setPreferredSize(new Dimension(120, 20));
+			usernameTextField.setPreferredSize(new Dimension(120, 20));
+			passwordPasswordField.setPreferredSize(new Dimension(120, 20));
+			
+			JButton modifyDeviceBtn = new JButton(Res.string().getModify());
+			JButton cancelBtn = new JButton(Res.string().getCancel());
+			
+			modifyDeviceBtn.setPreferredSize(new Dimension(90, 21));
+			cancelBtn.setPreferredSize(new Dimension(90, 21));
+			
+			add(deviceIdLabel);
+			add(deviceIdTextField);
+			add(usernameLabel);
+			add(usernameTextField);
+			add(passwordLabel);
+			add(passwordPasswordField);
+			add(modifyDeviceBtn);
+			add(cancelBtn);
+			
+			deviceIdTextField.setText(deviceId);
+			usernameTextField.setText(username);
+			passwordPasswordField.setText(password);
+			
+			// 修改
+			modifyDeviceBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(deviceIdTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getDeviceID(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(usernameTextField.getText().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getUserName(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if((new String(passwordPasswordField.getPassword()).trim()).equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInput() + Res.string().getPassword(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					dispose();
+					listener.onDeviceManager(deviceIdTextField.getText(), 
+											 usernameTextField.getText(), 
+										     new String(passwordPasswordField.getPassword()).trim());					
+				}
+			});
+			
+			// 取消,关闭
+			cancelBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					dispose();						
+				}
+			});
+		}
+	}
+	
+	private JTextField deviceIdTextField;
+	private JTextField usernameTextField;
+	private JPasswordField passwordPasswordField;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/CapturePicture.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/CapturePicture.java
new file mode 100644
index 0000000..b2bda30
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/CapturePicture.java
@@ -0,0 +1,475 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Vector;
+
+import javax.imageio.ImageIO;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.*;
+import com.netsdk.lib.NetSDKLib.LLong;
+
+import com.sun.jna.CallbackThreadInitializer;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+/**
+ * Capture Picture Demo
+ */
+class CapturePictureFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+	
+	// device channel list
+	private Vector<String> chnlist = new Vector<String>(); 
+
+	// This field indicates whether the device is playing
+	private boolean bRealPlay = false;
+	
+	// This field indicates whether the device is timing capture
+	private boolean bTimerCapture = false;	
+	
+	// device disconnect callback instance
+	private static DisConnect disConnect       = new DisConnect(); 
+	
+	// device reconnect callback instance
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// realplay handle
+	public static LLong m_hPlayHandle = new LLong(0);
+	
+	// capture picture frame (this)
+	private static JFrame frame = new JFrame();   
+	
+	public CapturePictureFrame() {
+	    setTitle(Res.string().getCapturePicture());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 560);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // init sdk
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new LoginPanel();
+	    realPanel = new RealPanel();
+	    picPanel = new PICPanel();
+	    
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(realPanel, BorderLayout.CENTER);
+	    add(picPanel, BorderLayout.EAST);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getCapturePicture() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getCapturePicture());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		RealPlayModule.stopRealPlay(m_hPlayHandle);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////function///////////////////
+	// device disconnect callback class 
+	// set it's instance by call CLIENT_Init, when device disconnect sdk will call it.
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getCapturePicture() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// device reconnect(success) callback class
+	// set it's instance by call CLIENT_SetAutoReconnect, when device reconnect success sdk will call it.
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getCapturePicture() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	public boolean login() {
+		Native.setCallbackThreadInitializer(m_CaptureReceiveCB, 
+										    new CallbackThreadInitializer(false, false, "snapPicture callback thread")); 
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			loginPanel.setButtonEnable(true);
+			setButtonEnable(true);
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			chnComboBox.setModel(new DefaultComboBoxModel(chnlist));
+		
+			CapturePictureModule.setSnapRevCallBack(m_CaptureReceiveCB);		
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	public void logout() {
+		if (bTimerCapture) {
+			CapturePictureModule.stopCapturePicture(chnComboBox.getSelectedIndex());
+		}
+		RealPlayModule.stopRealPlay(m_hPlayHandle);
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		setButtonEnable(false);
+		realPlayWindow.repaint();    
+		pictureShowWindow.setOpaque(true);
+		pictureShowWindow.repaint();
+		
+		bRealPlay = false;
+		realplayBtn.setText(Res.string().getStartRealPlay());
+		
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnlist.clear();
+		}
+		
+		chnComboBox.setModel(new DefaultComboBoxModel());
+		
+		bTimerCapture = false;
+		timerCaptureBtn.setText(Res.string().getTimerCapture());
+	}
+	
+	/*
+	 * realplay show and control panel
+	 */
+	private class RealPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanel() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanel = new Panel();
+			realplayPanel = new JPanel();
+			
+			add(channelPanel, BorderLayout.SOUTH);
+			add(realplayPanel, BorderLayout.CENTER);
+			
+			/************ realplay panel **************/
+			realplayPanel.setLayout(new BorderLayout());
+			realplayPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindow = new Panel();
+			realPlayWindow.setBackground(Color.GRAY);
+			realplayPanel.add(realPlayWindow, BorderLayout.CENTER);
+			
+			/************ channel and stream panel **************/
+			chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBox = new JComboBox();	 			
+
+			streamLabel = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBox = new JComboBox(stream);	 
+			
+			realplayBtn = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanel.setLayout(new FlowLayout());			
+			channelPanel.add(chnlabel);
+			channelPanel.add(chnComboBox);
+			channelPanel.add(streamLabel);
+			channelPanel.add(streamComboBox);
+			channelPanel.add(realplayBtn);
+			
+			chnComboBox.setPreferredSize(new Dimension(90, 20)); 
+			streamComboBox.setPreferredSize(new Dimension(90, 20)); 
+			realplayBtn.setPreferredSize(new Dimension(120, 20)); 
+		    
+			realPlayWindow.setEnabled(false);
+ 			chnComboBox.setEnabled(false);
+			streamComboBox.setEnabled(false);
+			realplayBtn.setEnabled(false);
+		    
+			realplayBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realplay();
+				}
+			});
+		}
+	}
+	
+	public void realplay() {
+		if(!bRealPlay) {
+			m_hPlayHandle = RealPlayModule.startRealPlay(chnComboBox.getSelectedIndex(), 
+				    streamComboBox.getSelectedIndex()==0? 0:3,
+					realPlayWindow);
+			if(m_hPlayHandle.longValue() != 0) {
+				realPlayWindow.repaint();
+				bRealPlay = true;
+				chnComboBox.setEnabled(false);
+				streamComboBox.setEnabled(false);
+				realplayBtn.setText(Res.string().getStopRealPlay());
+			} 
+		} else {
+			RealPlayModule.stopRealPlay(m_hPlayHandle);
+			realPlayWindow.repaint();
+			bRealPlay = false;
+			chnComboBox.setEnabled(true && !bTimerCapture);
+			streamComboBox.setEnabled(true);
+			realplayBtn.setText(Res.string().getStartRealPlay());
+		}	
+	}
+	
+	/*
+	 * capture picture panel 
+	 */
+	private class PICPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public PICPanel() {
+			
+			setPreferredSize(new Dimension(350, 600));
+			BorderEx.set(this, Res.string().getCapturePicture(), 2);
+			setLayout(new BorderLayout());
+			
+			pictureShowPanel = new JPanel();  
+			capturePanel = new JPanel();
+			
+			add(pictureShowPanel, BorderLayout.CENTER);
+			add(capturePanel, BorderLayout.SOUTH);
+			
+			/************** capture picture button ************/
+			capturePanel.setLayout(new GridLayout(3, 1));
+			
+			localCaptureBtn = new JButton(Res.string().getLocalCapture());
+			remoteCaptureBtn = new JButton(Res.string().getRemoteCapture());
+			timerCaptureBtn = new JButton(Res.string().getTimerCapture());
+			
+			localCaptureBtn.setPreferredSize(new Dimension(150, 20));
+			remoteCaptureBtn.setPreferredSize(new Dimension(150, 20));
+			timerCaptureBtn.setPreferredSize(new Dimension(150, 20));
+			
+			capturePanel.add(localCaptureBtn);
+			capturePanel.add(remoteCaptureBtn);
+			capturePanel.add(timerCaptureBtn);
+			
+			localCaptureBtn.setEnabled(false);
+			remoteCaptureBtn.setEnabled(false);
+			timerCaptureBtn.setEnabled(false);
+			
+			/************** picture show panel ************/
+			pictureShowPanel.setLayout(new BorderLayout());
+			pictureShowPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			pictureShowWindow = new PaintPanel();
+			pictureShowPanel.add(pictureShowWindow, BorderLayout.CENTER);
+		    
+			localCaptureBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if (!bRealPlay) {
+						JOptionPane.showMessageDialog(null, Res.string().getNeedStartRealPlay(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					String strFileName = SavePath.getSavePath().getSaveCapturePath();
+					System.out.println("strFileName = " + strFileName);
+					
+					if(!CapturePictureModule.localCapturePicture(m_hPlayHandle, strFileName)) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					BufferedImage bufferedImage = null;       
+					try {
+						bufferedImage = ImageIO.read(new File(strFileName)); 
+						if(bufferedImage == null) {
+							return;
+						}
+					} catch (IOException e) {
+						e.printStackTrace();
+					}	
+					pictureShowWindow.setOpaque(false);
+					pictureShowWindow.setImage(bufferedImage);
+					pictureShowWindow.repaint();	
+					
+				}
+			});
+			
+			remoteCaptureBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(!CapturePictureModule.remoteCapturePicture(chnComboBox.getSelectedIndex())) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}
+			});
+			
+			timerCaptureBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if (!bTimerCapture) {
+						
+						if(!CapturePictureModule.timerCapturePicture(chnComboBox.getSelectedIndex())) {
+							JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						}else{
+							bTimerCapture = true;
+							timerCaptureBtn.setText(Res.string().getStopCapture());
+							chnComboBox.setEnabled(false);
+							remoteCaptureBtn.setEnabled(false);
+						}
+					}else {
+						if(!CapturePictureModule.stopCapturePicture(chnComboBox.getSelectedIndex())) {
+							JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						}else{
+							bTimerCapture = false;
+							timerCaptureBtn.setText(Res.string().getTimerCapture());
+							chnComboBox.setEnabled(true && !bRealPlay);
+							remoteCaptureBtn.setEnabled(true);
+						}
+					}
+				}
+			});
+		}
+	}
+	
+	public fCaptureReceiveCB  m_CaptureReceiveCB = new fCaptureReceiveCB();
+	public class fCaptureReceiveCB implements NetSDKLib.fSnapRev{
+		BufferedImage bufferedImage = null;
+		public void invoke( LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {	
+			if(pBuf != null && RevLen > 0) {			        
+				String strFileName = SavePath.getSavePath().getSaveCapturePath(); 
+
+				System.out.println("strFileName = " + strFileName);
+
+				byte[] buf = pBuf.getByteArray(0, RevLen);
+				ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
+				try {
+					bufferedImage = ImageIO.read(byteArrInput);
+					if(bufferedImage == null) {
+						return;
+					}
+					ImageIO.write(bufferedImage, "jpg", new File(strFileName));	
+				} catch (IOException e) {
+					e.printStackTrace();
+				}	
+				
+				// show picture	 
+				SwingUtilities.invokeLater(new Runnable() {	
+					@Override
+					public void run() {			
+						pictureShowWindow.setOpaque(false);
+						pictureShowWindow.setImage(bufferedImage);
+						pictureShowWindow.repaint();				
+					}
+				});
+			}
+		}
+	}
+	
+	private void setButtonEnable(boolean bln) {
+		localCaptureBtn.setEnabled(bln);
+		remoteCaptureBtn.setEnabled(bln);
+		timerCaptureBtn.setEnabled(bln);
+		realPlayWindow.setEnabled(bln);
+		chnComboBox.setEnabled(bln);
+		streamComboBox.setEnabled(bln);
+		realplayBtn.setEnabled(bln);
+	}
+	
+	private LoginPanel loginPanel;
+	
+    private RealPanel realPanel;
+    private JPanel realplayPanel;
+    private Panel realPlayWindow;
+    private Panel channelPanel;
+    private JLabel chnlabel;
+    private JComboBox chnComboBox;	
+    private JLabel streamLabel;
+    private JComboBox streamComboBox;
+    private JButton realplayBtn;
+    
+	private PICPanel picPanel;
+	private JPanel pictureShowPanel;
+	private JPanel capturePanel;
+	private PaintPanel pictureShowWindow;
+    private JButton localCaptureBtn;
+    private JButton remoteCaptureBtn;
+    private JButton timerCaptureBtn;
+
+}
+
+public class CapturePicture {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				CapturePictureFrame demo = new CapturePictureFrame();	
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceControl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceControl.java
new file mode 100644
index 0000000..1235ca9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceControl.java
@@ -0,0 +1,406 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DateChooserJButton;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.DeviceControlModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * Device Control Demo
+ */
+class DeviceControlFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+	
+	// device disconnect callback instance
+	private DisConnect disConnect = new DisConnect(); 
+	
+	// device control frame (this)
+	private static JFrame frame = new JFrame();
+	
+	public DeviceControlFrame() {
+	    setTitle(Res.string().getDeviceControl());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(550, 350);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    LoginModule.init(disConnect, null);
+	    
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new DeviceControlLoginPanel();
+	    deviceCtlPanel = new DeviceControlPanel();
+	    
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(deviceCtlPanel, BorderLayout.CENTER);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getDeviceControl() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getDeviceControl());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////function///////////////////
+	// device disconnect callback class 
+	// set it's instance by call CLIENT_Init, when device disconnect sdk will call it.
+	private class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					JOptionPane.showMessageDialog(null, Res.string().getDisConnect(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					frame.setTitle(Res.string().getDeviceControl());
+					logout();
+				}
+			});
+		}
+	}
+
+	public boolean login() {
+
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+					Integer.parseInt(loginPanel.portTextArea.getText()), 
+					loginPanel.nameTextArea.getText(), 
+					new String(loginPanel.passwordTextArea.getPassword()))) {
+		
+				loginPanel.setButtonEnable(true);
+				deviceCtlPanel.setButtonEnabled(true);
+								
+		}else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		return true;
+	}
+
+	public void logout() {
+		
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		deviceCtlPanel.resetButtonEnabled();
+	}
+	
+	private class DeviceControlPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DeviceControlPanel() {
+			BorderEx.set(this, Res.string().getDeviceControl(), 2);
+			setLayout(new BorderLayout());
+			setPreferredSize(new Dimension(350, 220));
+			setResizable(false);
+			JLabel nullLable = new JLabel();
+			
+		    currentTimeCheckBox = new JCheckBox(Res.string().getCurrentTime());
+		    
+			getDateChooser = new DateChooserJButton();
+			setDateChooser = new DateChooserJButton(2000, 2037);
+			
+			rebootBtn = new JButton(Res.string().getReboot());
+			getTimeBtn = new JButton(Res.string().getGetTime());
+			setTimeBtn = new JButton(Res.string().getSetTime());
+			
+			nullLable.setPreferredSize(currentTimeCheckBox.getPreferredSize());
+			getDateChooser.setPreferredSize(new Dimension(150, 20));
+			setDateChooser.setPreferredSize(new Dimension(150, 20));
+			rebootBtn.setPreferredSize(new Dimension(100, 20));
+			getTimeBtn.setPreferredSize(new Dimension(100, 20));
+			setTimeBtn.setPreferredSize(new Dimension(100, 20));
+			
+			JPanel rebootPanel = new JPanel();
+			BorderEx.set(rebootPanel, Res.string().getDeviceReboot(), 2);
+			
+			rebootPanel.add(rebootBtn);
+			
+			JPanel timePanel = new JPanel(new GridLayout(2,1));
+			BorderEx.set(timePanel, Res.string().getSyncTime(), 2);
+			
+			JPanel getPanel = new JPanel();
+			JPanel setPanel = new JPanel();
+			
+			getPanel.add(nullLable);
+			getPanel.add(getDateChooser);
+			getPanel.add(getTimeBtn);
+			
+			setPanel.add(currentTimeCheckBox);
+			setPanel.add(setDateChooser);
+			setPanel.add(setTimeBtn);
+			
+			timePanel.add(getPanel);
+			timePanel.add(setPanel);
+			
+			JSplitPane splitPane = new JSplitPane();
+			splitPane.setDividerSize(0);
+			splitPane.setBorder(null);
+			splitPane.add(rebootPanel, JSplitPane.LEFT);
+			splitPane.add(timePanel, JSplitPane.RIGHT);
+		 	add(splitPane);
+			
+			getDateChooser.setEnabled(false);
+			setButtonEnabled(false);
+
+			rebootBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					
+					OptionDialog optionDialog = new OptionDialog();
+					optionDialog.setVisible(true);
+				}
+			});
+			
+			getTimeBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					String date = DeviceControlModule.getTime();
+					if (date == null) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}else {
+						getDateChooser.setText(date);
+					}
+					
+				}
+			});
+			
+			setTimeBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					String date = null;
+					if (!currentTimeCheckBox.isSelected()) {
+						date = setDateChooser.getText();
+					}
+					if (!DeviceControlModule.setTime(date)) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+					else {
+						JOptionPane.showMessageDialog(null, Res.string().getOperateSuccess(), Res.string().getPromptMessage(), JOptionPane.PLAIN_MESSAGE);
+					}
+				}
+			});
+			
+			currentTimeCheckBox.addItemListener(new ItemListener() {
+				@Override
+				public void itemStateChanged(ItemEvent e) {
+					JCheckBox jcb = (JCheckBox)e.getItem();
+					if (jcb.isSelected()) {
+						setDateChooser.setEnabled(false);
+					}else {
+						setDateChooser.setEnabled(true);
+					}
+				}
+			});
+			
+		}
+		
+		public void setButtonEnabled(boolean b) {
+			
+			currentTimeCheckBox.setEnabled(b);
+			setDateChooser.setEnabled(b);
+			rebootBtn.setEnabled(b);
+			getTimeBtn.setEnabled(b);
+			setTimeBtn.setEnabled(b);
+		}
+		
+		public void resetButtonEnabled() {
+			currentTimeCheckBox.setSelected(false);
+			setButtonEnabled(false);
+		}
+		
+		private class OptionDialog extends JDialog {
+			private static final long serialVersionUID = 1L;
+
+			public OptionDialog() {
+				setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+				pack();
+		        setSize(250, 100);
+		        setLocationRelativeTo(null);
+		        setModal(true);
+		        setTitle(Res.string().getDeviceReboot());
+		        
+		        JLabel messageLable = new JLabel(Res.string().getRebootTips()); 
+		        confirmBtn = new JButton(Res.string().getConfirm());
+		        cancelBtn = new JButton(Res.string().getCancel());
+		        
+		        JPanel messagePanel = new JPanel();
+		        messagePanel.add(messageLable);
+		        
+		        JPanel btnPanel = new JPanel();
+		        btnPanel.add(cancelBtn);
+		        btnPanel.add(confirmBtn);
+		        
+		        add(messagePanel, BorderLayout.NORTH);
+		        add(btnPanel, BorderLayout.CENTER);
+		        
+		        addListener();
+		        
+			}
+			
+			private void addListener() {
+			  confirmBtn.addActionListener(new ActionListener() {
+
+					@Override
+					public void actionPerformed(ActionEvent e) {
+						cancelBtn.setEnabled(false);
+						if (!DeviceControlModule.reboot()) {
+							JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						}
+						else {
+							JOptionPane.showMessageDialog(null, Res.string().getOperateSuccess(), Res.string().getPromptMessage(), JOptionPane.PLAIN_MESSAGE);
+						}
+						dispose();
+					}
+		        });
+		        
+		        cancelBtn.addActionListener(new ActionListener() {
+
+					@Override
+					public void actionPerformed(ActionEvent e) {
+						dispose();
+					}
+		        });
+			}
+			
+			private JButton confirmBtn;
+			private JButton cancelBtn;
+			
+		}
+		
+		private JButton rebootBtn;
+		private DateChooserJButton getDateChooser;
+		private JButton getTimeBtn;
+	    private JCheckBox currentTimeCheckBox;
+	    private DateChooserJButton setDateChooser;
+	    private JButton setTimeBtn; 
+	}
+
+	private class DeviceControlLoginPanel extends LoginPanel {
+	
+		private static final long serialVersionUID = 1L;
+
+		public DeviceControlLoginPanel() {
+			setLayout(new GridLayout(3, 1));
+			removeAll();
+			JPanel ipPanel = new JPanel();
+			JPanel userPanel = new JPanel();
+			JPanel btnPanel = new JPanel();
+			
+			resetSize();
+	
+			ipPanel.add(ipLabel);
+			ipPanel.add(ipTextArea);
+			ipPanel.add(portLabel);
+			ipPanel.add(portTextArea);
+			
+			userPanel.add(nameLabel);
+			userPanel.add(nameTextArea);
+			userPanel.add(passwordLabel);
+			userPanel.add(passwordTextArea);
+			    
+			btnPanel.add(loginBtn);
+			btnPanel.add(new JLabel("  "));
+			btnPanel.add(logoutBtn);
+
+			add(ipPanel);
+			add(userPanel);
+			add(btnPanel);
+		}
+		
+		private void resetSize() {
+			
+			ipLabel.setPreferredSize(new Dimension(70, 25));
+			portLabel.setPreferredSize(new Dimension(70, 25));
+			nameLabel.setText(Res.string().getUserName());
+			nameLabel.setPreferredSize(new Dimension(70, 25));
+			passwordLabel.setPreferredSize(new Dimension(70, 25));
+
+			loginBtn.setPreferredSize(new Dimension(100, 20));
+			logoutBtn.setPreferredSize(new Dimension(100, 20));
+			
+			ipTextArea.setPreferredSize(new Dimension(100, 20));
+			portTextArea.setPreferredSize(new Dimension(100, 20));
+			nameTextArea.setPreferredSize(new Dimension(100, 20));
+			passwordTextArea.setPreferredSize(new Dimension(100, 20));
+		}
+	}
+	
+	private DeviceControlLoginPanel loginPanel;
+	
+	private DeviceControlPanel deviceCtlPanel;
+	
+}
+
+public class DeviceControl {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {	
+				DeviceControlFrame demo = new DeviceControlFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceSearchAndInit.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceSearchAndInit.java
new file mode 100644
index 0000000..abf1c42
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DeviceSearchAndInit.java
@@ -0,0 +1,1135 @@
+package com.netsdk.demo.frame;
+
+import java.awt.AWTEvent;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellRenderer;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+class DeviceSearchAndInitFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+
+	private Object[][] data;
+	
+	private static int index = 0;
+	
+	private int count = 0;
+	
+	// 设备搜索句柄
+	private static LLong m_DeviceSearchHandle = new LLong(0);
+	
+	// key:MAC  value:密码重置方式
+	private static Map<String, Byte> pwdResetHashMap = new HashMap<String, Byte>();
+	
+	// MAC列表,用于设备搜索过滤
+	private static ArrayList<String> macArrayList = new ArrayList<String>();
+	
+	private Component  target     = this;
+	
+	// true表示单播搜索结束
+	private volatile boolean bFlag = true;
+	
+	// 线程池,用于单播搜索
+	private ExecutorService executorService = Executors.newFixedThreadPool(4);
+	
+	public DeviceSearchAndInitFrame() {
+	    setTitle(Res.string().getDeviceSearchAndInit());
+	    setSize(700, 560);
+	    setLayout(new BorderLayout());
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(null, null);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    deviceSearchPanel = new DeviceSearchPanel();
+	    deviceSearchResultShowPanel = new DeviceSearchResultShowListPanel();
+	    deviceIntPanel = new DeviceInitPanel();
+
+	    add(deviceSearchPanel, BorderLayout.NORTH);
+	    add(deviceSearchResultShowPanel, BorderLayout.CENTER);
+	    add(deviceIntPanel, BorderLayout.SOUTH);
+        
+	    enableEvents(WindowEvent.WINDOW_EVENT_MASK);
+	}
+	
+	@Override
+	protected void processWindowEvent(WindowEvent e) {
+		// 关闭窗口监听事件
+		if(e.getID() == WindowEvent.WINDOW_CLOSING) {
+			if(!bFlag) {
+				// 等待单播搜索结束
+				JOptionPane.showMessageDialog(null, Res.string().getSearchingWait(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+				return;
+			} else {				
+				for(int i=0 ;i<handles.size() ;i++) {
+					DeviceSearchModule.stopDeviceSearch(handles.get(i));
+				}				
+        		if(!executorService.isShutdown()) {
+    				executorService.shutdown();			
+    			}
+    	
+        		LoginModule.cleanup();   // 关闭工程,释放资源
+        		dispose();	
+        		
+        		SwingUtilities.invokeLater(new Runnable() {
+        			public void run() {
+        				FunctionList demo = new FunctionList();
+        				demo.setVisible(true);
+        			}
+        		});
+			}
+		} 
+		
+		super.processWindowEvent(e);
+	}
+
+	/*
+	 * 设备搜索操作面板
+	 */
+	private class DeviceSearchPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DeviceSearchPanel() {
+			BorderEx.set(this, Res.string().getDeviceSearchOperate(), 2);
+			setLayout(new BorderLayout());
+			Dimension dimension = new Dimension();
+			dimension.height = 85;
+			setPreferredSize(dimension);
+	
+			MulticastAndBroadcastDeviceSearchPanel multiAndBroadPanel = new MulticastAndBroadcastDeviceSearchPanel();
+			UnicastDeviceSearchPanel unicastPanel = new UnicastDeviceSearchPanel();
+			
+			add(multiAndBroadPanel, BorderLayout.WEST);
+			add(unicastPanel, BorderLayout.CENTER);
+		}
+	}
+	
+	/*
+	 * 设备组播和广播搜索面板(设备搜索)
+	 */
+	private class MulticastAndBroadcastDeviceSearchPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public MulticastAndBroadcastDeviceSearchPanel() {
+			BorderEx.set(this, Res.string().getDeviceSearch(), 1);
+			setLayout(new FlowLayout());
+			Dimension dimension = new Dimension();
+			dimension.width = 220;
+			setPreferredSize(dimension);
+			
+			multiAndBroadcastSearchBtn = new JButton(Res.string().getStartSearch());
+			multiAndBroadcastSearchBtn.setPreferredSize(new Dimension(120, 20));
+			add(multiAndBroadcastSearchBtn);
+			
+			multiAndBroadcastSearchBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					deviceInitBtn.setEnabled(true);
+					for(int i=0 ;i<handles.size() ;i++) {
+						DeviceSearchModule.stopDeviceSearch(handles.get(i));
+					}	
+
+				    // 列表清空
+					data = new Object[1000][11];
+					defaultModel = new DefaultTableModel(data, Res.string().getDeviceTableName());
+					table.setModel(defaultModel);
+
+					table.getColumnModel().getColumn(0).setPreferredWidth(50);
+					table.getColumnModel().getColumn(1).setPreferredWidth(80);
+					table.getColumnModel().getColumn(2).setPreferredWidth(80);
+					table.getColumnModel().getColumn(3).setPreferredWidth(120);
+					table.getColumnModel().getColumn(4).setPreferredWidth(80);
+					table.getColumnModel().getColumn(5).setPreferredWidth(120);
+					table.getColumnModel().getColumn(6).setPreferredWidth(120);
+					table.getColumnModel().getColumn(7).setPreferredWidth(140);
+					table.getColumnModel().getColumn(8).setPreferredWidth(100);
+					table.getColumnModel().getColumn(9).setPreferredWidth(100);
+					table.getColumnModel().getColumn(10).setPreferredWidth(100);					
+					
+
+					table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+					
+					pwdResetHashMap.clear();
+					macArrayList.clear();
+					list.clear();
+					index = 0;
+					try {
+						for(int i=0 ;i<DeviceSearchModule.getHostAddress().size(); i++) {
+						LLong handle= m_DeviceSearchHandle = DeviceSearchModule.multiBroadcastDeviceSearch(callbackEx,DeviceSearchModule.getHostAddress().get(i));
+						handles.add(handle);
+						}
+					} catch (SocketException e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+					}				
+				}
+			});
+			
+		}
+	}
+	
+	/*
+	 * 设备IP单播搜索面板(设备IP点到点搜索)
+	 */
+	private class UnicastDeviceSearchPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public UnicastDeviceSearchPanel() {
+			BorderEx.set(this, Res.string().getDevicePointToPointSearch(), 1);
+			setLayout(new FlowLayout());
+			
+			JLabel startIpLabel = new JLabel(Res.string().getStartIp());
+			JLabel endIpLabel = new JLabel(Res.string().getEndIp());
+			
+			startIpTextField = new JTextField("172.23.3.0");
+			endIpTextField = new JTextField("172.23.3.231");
+			
+			unicastSearchBtn = new JButton(Res.string().getStartSearch());
+			
+			startIpTextField.setPreferredSize(new Dimension(100, 20));
+			endIpTextField.setPreferredSize(new Dimension(100, 20));
+			unicastSearchBtn.setPreferredSize(new Dimension(120, 20));
+			
+			add(startIpLabel);
+			add(startIpTextField);
+			add(endIpLabel);
+			add(endIpTextField);
+			add(unicastSearchBtn);
+			
+			unicastSearchBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {		
+					deviceInitBtn.setEnabled(false);
+					index = 0;
+					count = 0;
+					bFlag = false;
+					
+					if(!checkIP()) {
+						return;
+					}
+					
+					SwingUtilities.invokeLater(new Runnable() {				
+						@Override
+						public void run() {
+							unicastSearchBtn.setEnabled(false);
+						}
+					});
+					
+					// 清空列表
+					data = new Object[1000][11];
+					defaultModel = new DefaultTableModel(data, Res.string().getDeviceTableName());
+					table.setModel(defaultModel);
+
+					table.getColumnModel().getColumn(0).setPreferredWidth(50);
+					table.getColumnModel().getColumn(1).setPreferredWidth(80);
+					table.getColumnModel().getColumn(2).setPreferredWidth(80);
+					table.getColumnModel().getColumn(3).setPreferredWidth(120);
+					table.getColumnModel().getColumn(4).setPreferredWidth(80);
+					table.getColumnModel().getColumn(5).setPreferredWidth(120);
+					table.getColumnModel().getColumn(6).setPreferredWidth(120);
+					table.getColumnModel().getColumn(7).setPreferredWidth(140);
+					table.getColumnModel().getColumn(8).setPreferredWidth(100);
+					table.getColumnModel().getColumn(9).setPreferredWidth(100);
+					table.getColumnModel().getColumn(10).setPreferredWidth(100);
+					
+					
+					table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+					
+					pwdResetHashMap.clear();
+					macArrayList.clear();
+					
+					for(int i=0 ;i<handles.size() ;i++) {
+						DeviceSearchModule.stopDeviceSearch(handles.get(i));
+					}	
+					
+					if(count > 0 && count <= 256) {	
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),startIpTextField.getText(), count, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}							
+
+								bFlag = true;
+								SwingUtilities.invokeLater(new Runnable() {							
+									@Override
+									public void run() {
+										unicastSearchBtn.setEnabled(true);
+									}
+								});							
+							}
+						});
+					} else if(count > 256 && count <= 512){	
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),startIpTextField.getText(), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), count - 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}						
+
+								bFlag = true;
+								SwingUtilities.invokeLater(new Runnable() {							
+									@Override
+									public void run() {
+										unicastSearchBtn.setEnabled(true);
+									}
+								});					
+							}
+						});			
+					} else if(count > 512 && count <= 768){	
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),startIpTextField.getText(), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								szIp = DeviceSearchModule.getIp(szIp, 255).split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), count - 512, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+														
+								bFlag = true;
+								SwingUtilities.invokeLater(new Runnable() {							
+									@Override
+									public void run() {
+										unicastSearchBtn.setEnabled(true);
+									}
+								});							
+							}
+						});						
+					} else if(count > 768 && count <= 1000){
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),startIpTextField.getText(), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}	
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								szIp = DeviceSearchModule.getIp(szIp, 255).split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), 256, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+							}
+						});
+						
+						executorService.execute(new Runnable() {					
+							@Override
+							public void run() {
+								String[] szIp = startIpTextField.getText().split("\\.");
+								szIp = DeviceSearchModule.getIp(szIp, 255).split("\\.");
+								szIp = DeviceSearchModule.getIp(szIp, 255).split("\\.");
+								try {
+									for(int i = 0; i<DeviceSearchModule.getHostAddress().size() ; i++) {
+									DeviceSearchModule.unicastDeviceSearch(DeviceSearchModule.getHostAddress().get(i),DeviceSearchModule.getIp(szIp, 255), count - 768, callback);
+									}
+								} catch (SocketException e) {
+									// TODO Auto-generated catch block
+									e.printStackTrace();
+								}
+								
+								bFlag = true;
+								SwingUtilities.invokeLater(new Runnable() {							
+									@Override
+									public void run() {
+										unicastSearchBtn.setEnabled(true);
+									}
+								});								
+							}
+						});
+					}	
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 设备搜索结果显示列表面板
+	 */
+	private class DeviceSearchResultShowListPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DeviceSearchResultShowListPanel() {
+			BorderEx.set(this, Res.string().getDeviceSearchResult(), 2);
+			setLayout(new BorderLayout());
+			
+			data = new Object[1000][11];			
+			defaultModel = new DefaultTableModel(data, Res.string().getDeviceTableName());
+			table = new JTable(defaultModel) {   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(50);
+			table.getColumnModel().getColumn(1).setPreferredWidth(80);
+			table.getColumnModel().getColumn(2).setPreferredWidth(80);
+			table.getColumnModel().getColumn(3).setPreferredWidth(120);
+			table.getColumnModel().getColumn(4).setPreferredWidth(80);
+			table.getColumnModel().getColumn(5).setPreferredWidth(120);
+			table.getColumnModel().getColumn(6).setPreferredWidth(120);
+			table.getColumnModel().getColumn(7).setPreferredWidth(140);
+			table.getColumnModel().getColumn(8).setPreferredWidth(100);
+			table.getColumnModel().getColumn(9).setPreferredWidth(100);
+			table.getColumnModel().getColumn(10).setPreferredWidth(100);			
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+	
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+
+			add(scrollPane, BorderLayout.CENTER);
+			
+		}
+	}
+	
+	/*
+	 * 设备初始化操作面板
+	 */
+	private class DeviceInitPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DeviceInitPanel() {
+			BorderEx.set(this, Res.string().getDeviceInit(), 2);
+			setLayout(new BorderLayout());
+			Dimension dimension = new Dimension();
+			dimension.height = 55;
+			setPreferredSize(dimension);
+			
+			deviceInitBtn = new JButton(Res.string().getDeviceInit());
+			
+			add(deviceInitBtn, BorderLayout.WEST);
+			
+			deviceInitBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					System.out.println(new String (list.get(row).szLocalIP));
+					if(defaultModel == null) {
+						JOptionPane.showMessageDialog(null, Res.string().getPleaseSelectInitializedDevice(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getPleaseSelectInitializedDevice(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+
+					if(defaultModel.getValueAt(row, 7) == null || String.valueOf(defaultModel.getValueAt(row, 7)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getPleaseSelectInitializedDevice(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+
+					if(defaultModel.getValueAt(row, 1) == null || String.valueOf(defaultModel.getValueAt(row, 1)).trim().equals(Res.string().getInitialized())) {
+						JOptionPane.showMessageDialog(null, Res.string().getInitialized(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}						
+				
+					String localIp = new String(list.get(row).szLocalIP).trim();
+					
+					String mac = String.valueOf(defaultModel.getValueAt(row, 7)).trim(); // MAC地址
+					byte passwdReset = pwdResetHashMap.get(mac);  // 密码重置方式
+							
+					DevcieInitFrame demo = new DevcieInitFrame(localIp,passwdReset, mac, row, defaultModel, table);
+					demo.setLocationRelativeTo(null);
+					demo.setVisible(true);		    
+				}
+			});
+		}
+	}
+	
+	/*
+	 *  设备组播和广播搜索回调
+	 */
+	private Test_fSearchDevicesCbEx callbackEx = new Test_fSearchDevicesCbEx();
+	private class Test_fSearchDevicesCbEx implements fSearchDevicesCBEx {
+		
+		/*
+		 * @Override public void invoke(Pointer pDevNetInfo, Pointer pUserData) {
+		 * DEVICE_NET_INFO_EX deviceInfo = new DEVICE_NET_INFO_EX();
+		 * ToolKits.GetPointerData(pDevNetInfo, deviceInfo);
+		 * 
+		 * EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue(); if
+		 * (eventQueue != null) { eventQueue.postEvent( new DeviceSearchList(target,
+		 * deviceInfo)); } }
+		 */
+
+		@Override
+		public void invoke(LLong lSearchHandle, Pointer pDevNetInfo, Pointer pUserData) {
+			// TODO Auto-generated method stub
+			DEVICE_NET_INFO_EX2  deviceInfo =  new DEVICE_NET_INFO_EX2();	
+			ToolKits.GetPointerData(pDevNetInfo, deviceInfo);
+			
+			EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+            if (eventQueue != null) {
+                eventQueue.postEvent( new DeviceSearchListEx(target, deviceInfo));
+            }  
+		}	
+	}
+	
+	/*
+	 *  设备单播搜索回调
+	 */
+	private Test_fSearchDevicesCB callback = new Test_fSearchDevicesCB();
+	private class Test_fSearchDevicesCB implements fSearchDevicesCB {
+		
+		
+		  @Override 
+		  public void invoke(Pointer pDevNetInfo, Pointer pUserData) {
+		  DEVICE_NET_INFO_EX deviceInfo = new DEVICE_NET_INFO_EX();
+		  ToolKits.GetPointerData(pDevNetInfo, deviceInfo);
+		  
+		  EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+		  if(eventQueue != null) 
+		  { 
+			  eventQueue.postEvent( new DeviceSearchList(target,deviceInfo)); 
+			  } 
+		  }		 
+	}
+	
+	/*
+	 *  设备搜索的信息处理
+	 */
+	class DeviceSearchList extends AWTEvent {
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+		
+		private DEVICE_NET_INFO_EX deviceInfo;
+		
+		public DeviceSearchList(Object target,
+								DEVICE_NET_INFO_EX deviceInfo) {
+			super(target,EVENT_ID);
+
+			this.deviceInfo = deviceInfo;
+		}
+		
+		public DEVICE_NET_INFO_EX getDeviceInfo() {
+			return deviceInfo;
+		}	
+	}
+	
+	
+	
+	/*
+	 *  设备搜索的信息处理
+	 */
+	class DeviceSearchListEx extends AWTEvent {
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+		
+		private DEVICE_NET_INFO_EX2 deviceInfo;
+		
+		public DeviceSearchListEx(Object target,
+								DEVICE_NET_INFO_EX2 deviceInfo) {
+			super(target,EVENT_ID);
+
+			this.deviceInfo = deviceInfo;
+		}
+		
+		public DEVICE_NET_INFO_EX2 getDeviceInfo() {
+			return deviceInfo;
+		}	
+	}
+	
+	@Override
+    protected void processEvent( AWTEvent event)
+    {
+        if ( event instanceof DeviceSearchListEx )
+        {
+        	
+        	DeviceSearchListEx ev = (DeviceSearchListEx) event;
+        	
+        	DEVICE_NET_INFO_EX2 deviceInfo =  ev.getDeviceInfo();        	
+        	
+        	if(!macArrayList.contains(new String(deviceInfo.stuDevInfo.szMac))) {  
+        		list.add(deviceInfo);        		
+				if(index < 1000) {   // 此demo,只显示1000行搜索结果	
+					macArrayList.add(new String(deviceInfo.stuDevInfo.szMac));
+
+					// 序号
+					defaultModel.setValueAt(index + 1, index, 0);
+					
+					// 初始化状态
+					defaultModel.setValueAt(Res.string().getInitStateInfo(deviceInfo.stuDevInfo.byInitStatus & 0x03), index, 1);
+					
+					// IP版本
+					defaultModel.setValueAt("IPV" + String.valueOf(deviceInfo.stuDevInfo.iIPVersion), index, 2);
+					
+					// IP
+					if(!new String(deviceInfo.stuDevInfo.szIP).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szIP).trim(), index, 3);
+					} else {
+						defaultModel.setValueAt("", index, 3);
+					}
+					
+					// 端口号
+					defaultModel.setValueAt(String.valueOf(deviceInfo.stuDevInfo.nPort), index, 4);
+					
+					// 子网掩码
+					if(!new String(deviceInfo.stuDevInfo.szSubmask).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szSubmask).trim(), index, 5);
+					} else {
+						defaultModel.setValueAt("", index, 5);
+					}			
+					
+					// 网关
+					if(!new String(deviceInfo.stuDevInfo.szGateway).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szGateway).trim(), index, 6);
+					} else {
+						defaultModel.setValueAt("", index, 6);
+					}
+					
+					// MAC地址
+					if(!new String(deviceInfo.stuDevInfo.szMac).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szMac).trim(), index, 7);
+					} else {
+						defaultModel.setValueAt("", index, 7);
+					}
+					
+					// 设备类型
+					if(!new String(deviceInfo.stuDevInfo.szDeviceType).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szDeviceType).trim(), index, 8);
+					} else {
+						defaultModel.setValueAt("", index, 8);
+					}
+					
+					// 详细类型
+					if(!new String(deviceInfo.stuDevInfo.szNewDetailType).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.stuDevInfo.szNewDetailType).trim(), index, 9);
+					} else {
+						defaultModel.setValueAt("", index, 9);
+					}
+					
+					// HTTP端口号
+					defaultModel.setValueAt(String.valueOf(deviceInfo.stuDevInfo.nHttpPort), index, 10);
+			
+					// 将MAC地址   跟 密码重置方式,放进容器
+					pwdResetHashMap.put(new String(deviceInfo.stuDevInfo.szMac).trim(), deviceInfo.stuDevInfo.byPwdResetWay);
+		
+					for(int i = 0; i < 11; i++) {
+						table.getColumnModel().getColumn(i).setCellRenderer(new MyTableCellRender());
+					}
+					table.updateUI();
+
+					index++;
+				}
+			}
+		}
+        
+        else if ( event instanceof DeviceSearchList )
+        {
+        	
+        	DeviceSearchList ev = (DeviceSearchList) event;
+        	
+        	DEVICE_NET_INFO_EX deviceInfo =  ev.getDeviceInfo();
+
+        	if(!macArrayList.contains(new String(deviceInfo.szMac))) {  
+				if(index < 1000) {   // 此demo,只显示1000行搜索结果	
+					macArrayList.add(new String(deviceInfo.szMac));
+
+					// 序号
+					defaultModel.setValueAt(index + 1, index, 0);
+					
+					// 初始化状态
+					defaultModel.setValueAt(Res.string().getInitStateInfo(deviceInfo.byInitStatus & 0x03), index, 1);
+					
+					// IP版本
+					defaultModel.setValueAt("IPV" + String.valueOf(deviceInfo.iIPVersion), index, 2);
+					
+					// IP
+					if(!new String(deviceInfo.szIP).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szIP).trim(), index, 3);
+					} else {
+						defaultModel.setValueAt("", index, 3);
+					}
+					
+					// 端口号
+					defaultModel.setValueAt(String.valueOf(deviceInfo.nPort), index, 4);
+					
+					// 子网掩码
+					if(!new String(deviceInfo.szSubmask).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szSubmask).trim(), index, 5);
+					} else {
+						defaultModel.setValueAt("", index, 5);
+					}			
+					
+					// 网关
+					if(!new String(deviceInfo.szGateway).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szGateway).trim(), index, 6);
+					} else {
+						defaultModel.setValueAt("", index, 6);
+					}
+					
+					// MAC地址
+					if(!new String(deviceInfo.szMac).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szMac).trim(), index, 7);
+					} else {
+						defaultModel.setValueAt("", index, 7);
+					}
+					
+					// 设备类型
+					if(!new String(deviceInfo.szDeviceType).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szDeviceType).trim(), index, 8);
+					} else {
+						defaultModel.setValueAt("", index, 8);
+					}
+					
+					// 详细类型
+					if(!new String(deviceInfo.szNewDetailType).trim().isEmpty()) {
+						defaultModel.setValueAt(new String(deviceInfo.szNewDetailType).trim(), index, 9);
+					} else {
+						defaultModel.setValueAt("", index, 9);
+					}
+					
+					// HTTP端口号
+					defaultModel.setValueAt(String.valueOf(deviceInfo.nHttpPort), index, 10);
+	
+					// 将MAC地址   跟 密码重置方式,放进容器
+					pwdResetHashMap.put(new String(deviceInfo.szMac).trim(), deviceInfo.byPwdResetWay);
+		
+					for(int i = 0; i < 11; i++) {
+						table.getColumnModel().getColumn(i).setCellRenderer(new MyTableCellRender());
+					}
+					table.updateUI();
+
+					index++;
+				}
+			}
+		}
+        
+        else    
+        {
+            super.processEvent( event );   
+        }
+    } 
+	
+	private static class MyTableCellRender implements TableCellRenderer {
+		public MyTableCellRender() {}
+		
+		DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+		
+		@Override
+		public Component getTableCellRendererComponent(JTable table,
+				Object value, boolean isSelect, boolean hasFocus, int row, int colum) {
+			
+			Component component = dCellRenderer.getTableCellRendererComponent(table, value, 
+					isSelect, hasFocus, row, colum);
+			if(String.valueOf(defaultModel.getValueAt(row, 1)).trim().equals(Res.string().getNotInitialized())) { // 未初始化,字体颜色变红
+				component.setForeground(Color.RED);
+			} else {
+				component.setForeground(Color.BLACK);
+			}
+			
+			// 列表显示居中
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);	
+			
+			return component;
+		}
+	}
+	
+	/*
+	 * 检查设备IP点到点搜索的IP范围
+	 */
+	private boolean checkIP() {
+		String[] startIp = startIpTextField.getText().split("\\.");
+		
+		String[] endIp = endIpTextField.getText().split("\\.");
+		
+		if(startIpTextField.getText().isEmpty()) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputDeviceIP(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(endIpTextField.getText().isEmpty()) {
+			JOptionPane.showMessageDialog(null, Res.string().getInputDeviceIP(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+
+		if(!startIp[0].equals(endIp[0])) {
+			JOptionPane.showMessageDialog(null, Res.string().getCheckIp(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(!startIp[1].equals(endIp[1])) {
+			JOptionPane.showMessageDialog(null, Res.string().getCheckIp(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(Integer.parseInt(startIp[2]) > Integer.parseInt(endIp[2])) {
+			JOptionPane.showMessageDialog(null, Res.string().getCheckIp(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		if(Integer.parseInt(startIp[2]) == Integer.parseInt(endIp[2])
+				&& Integer.parseInt(startIp[3]) > Integer.parseInt(endIp[3])) {
+			JOptionPane.showMessageDialog(null, Res.string().getCheckIp(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		count = (Integer.parseInt(endIp[2]) - Integer.parseInt(startIp[2])) * 256
+				+ Integer.parseInt(endIp[3]) - Integer.parseInt(startIp[3]) + 1;
+		
+		if(count > 1000) {
+			JOptionPane.showMessageDialog(null, Res.string().getControlScope(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		return true;
+	}
+	
+    private DeviceSearchPanel deviceSearchPanel;
+    private DeviceSearchResultShowListPanel deviceSearchResultShowPanel;
+    private DeviceInitPanel deviceIntPanel;
+    
+    private JButton deviceInitBtn;
+    private JButton multiAndBroadcastSearchBtn;
+    private JButton unicastSearchBtn;
+    
+    private JTextField startIpTextField;
+    private JTextField endIpTextField;
+    
+	// 列表
+	private static DefaultTableModel defaultModel;
+	private static JTable table;
+	private static List<DEVICE_NET_INFO_EX2> list =new ArrayList<DEVICE_NET_INFO_EX2>();
+	private static List<LLong> handles =new ArrayList<LLong>();
+}
+
+class DevcieInitFrame extends JFrame {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	byte passwdReset; 
+	String localIp;
+	String mac;
+	int row;
+	DefaultTableModel defaultModel;
+	JTable table;
+	
+	public DevcieInitFrame(String localIp,byte passwdReset, String mac, int row, DefaultTableModel defaultModel, JTable table) {
+		setTitle(Res.string().getDeviceInit());
+	    setSize(300, 350);
+	    setLayout(new BorderLayout());
+	    setResizable(false);
+	    
+	    this.passwdReset = passwdReset;
+	    this.localIp = localIp;
+	    this.mac = mac;
+	    this.row = row;
+	    this.defaultModel = defaultModel;
+	    this.table = table;
+	    
+	    initPanel = new InitPanel();
+	    
+	    add(initPanel, BorderLayout.CENTER);
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();	
+	    	}
+	    });    
+	}
+	
+	private class InitPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public InitPanel() {
+			BorderEx.set(this, Res.string().getDeviceInit(), 2);
+			setLayout(new BorderLayout());
+			
+			JPanel panel_1 = new JPanel();
+			JPanel panel_2 = new JPanel();
+			
+			add(panel_1, BorderLayout.CENTER);
+			add(panel_2, BorderLayout.SOUTH);
+			
+			panel_1.setLayout(new GridLayout(10, 1));
+			panel_2.setLayout(new BorderLayout());
+			
+			JLabel userLabel = new JLabel(Res.string().getUserName() + " : ");
+			JLabel passwdLabel = new JLabel(Res.string().getPassword() + " : ");	
+			JLabel passwdLabelEx = new JLabel(Res.string().getConfirmPassword() + " : ");
+			JTextField userTextField = new JTextField("admin");
+			passwdPasswordField = new JPasswordField("admin123");
+			passwdPasswordFieldEx = new JPasswordField("admin123");
+			
+			panel_1.add(userLabel);
+			panel_1.add(userTextField);
+			panel_1.add(passwdLabel);
+			panel_1.add(passwdPasswordField);
+			panel_1.add(passwdLabelEx);
+			panel_1.add(passwdPasswordFieldEx);
+			
+			userTextField.setEnabled(false);
+			
+			if((passwdReset >> 1 & 0x01) == 0) {   // 手机号
+				JLabel phoneLabel = new JLabel(Res.string().getPhone() + " : ");
+				phoneTextField = new JTextField();
+				panel_1.add(phoneLabel);
+				panel_1.add(phoneTextField);
+			} else if((passwdReset >> 1 & 0x01) == 1) {  // 邮箱
+				JLabel mailLabel = new JLabel(Res.string().getMail() + " : ");
+				mailTextField = new JTextField();
+				panel_1.add(mailLabel);
+				panel_1.add(mailTextField);
+			}
+			
+			deviceInitBtn = new JButton(Res.string().getDeviceInit());
+			panel_2.add(deviceInitBtn, BorderLayout.CENTER);
+			
+			deviceInitBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					// 密码判空
+					if(new String(passwdPasswordField.getPassword()).equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInputPassword(), 
+							      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					// 确认密码判空
+					if(new String(passwdPasswordFieldEx.getPassword()).equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getInputConfirmPassword(), 
+							      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					// 密码确认
+					if(!new String(passwdPasswordField.getPassword())
+							.equals(new String(passwdPasswordFieldEx.getPassword()))) {
+						JOptionPane.showMessageDialog(null, Res.string().getInconsistent(), 
+							      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					// 获取手机或邮箱
+					String phone_mail = "";
+					if((passwdReset >> 1 & 0x01) == 0) {
+						phone_mail = phoneTextField.getText();							
+					} else if((passwdReset >> 1 & 0x01) == 1) {
+						phone_mail = mailTextField.getText();
+					}	
+					
+					// 手机或邮箱判空
+					if(phone_mail.equals("")) {
+						if((passwdReset >> 1 & 0x01) == 0) {   // 手机号
+							JOptionPane.showMessageDialog(null, Res.string().getInputPhone(), 
+								      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							
+							return;
+						} else if((passwdReset >> 1 & 0x01) == 1) {  // 邮箱
+							JOptionPane.showMessageDialog(null, Res.string().getInputMail(), 
+								      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							
+							return;
+						}
+					}
+
+					// 初始化
+					if(DeviceInitModule.initDevAccount(localIp,mac, new String(passwdPasswordField.getPassword()), phone_mail, passwdReset)) {
+						dispose();
+						
+						defaultModel.setValueAt(Res.string().getInitialized(), row, 1);
+						
+						for(int i = 0; i < 11; i++) {
+							table.getColumnModel().getColumn(i).setCellRenderer(new MyTableCellRender(defaultModel));
+						}
+						table.updateUI();
+						
+						JOptionPane.showMessageDialog(null, Res.string().getDeviceInit() + Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getDeviceInit() + Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), 
+							      Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}	
+				}
+			});
+		}
+	}
+	
+	private static class MyTableCellRender implements TableCellRenderer {
+		DefaultTableModel defaultModel;
+		public MyTableCellRender(DefaultTableModel defaultModel) {
+			this.defaultModel = defaultModel;
+		}
+		
+		DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+		
+		@Override
+		public Component getTableCellRendererComponent(JTable table,
+				Object value, boolean isSelect, boolean hasFocus, int row, int colum) {
+			
+			Component component = dCellRenderer.getTableCellRendererComponent(table, value, 
+					isSelect, hasFocus, row, colum);
+			if(String.valueOf(defaultModel.getValueAt(row, 1)).trim().equals(Res.string().getNotInitialized())) { // 未初始化,字体颜色变红
+				component.setForeground(Color.RED);
+			} else {
+				component.setForeground(Color.BLACK);
+			}
+			
+			// 列表显示居中
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);	
+			
+			return component;
+		}
+	}
+	
+	private InitPanel initPanel;
+	private JPasswordField passwdPasswordField;
+	private JPasswordField passwdPasswordFieldEx;
+	private JTextField phoneTextField;
+	private JTextField mailTextField;
+	private JButton deviceInitBtn;
+
+}
+public class DeviceSearchAndInit {
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				DeviceSearchAndInitFrame demo = new DeviceSearchAndInitFrame();	
+			    demo.setLocationRelativeTo(null);
+			    demo.setVisible(true);
+			}
+		});		
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DownLoadRecord.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DownLoadRecord.java
new file mode 100644
index 0000000..6fd70b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/DownLoadRecord.java
@@ -0,0 +1,889 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+
+import java.awt.FlowLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.DownLoadRecordModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.*;
+import com.netsdk.lib.NetSDKLib.LLong;
+
+import com.sun.jna.CallbackThreadInitializer;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+/*
+ * 下载录像Demo
+ */
+class DownLoadRecordFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+	private Vector<String> chnlist = new Vector<String>(); 
+	
+	private DefaultTableModel model;
+	private LLong m_hDownLoadByTimeHandle = new LLong(0);   // 按时间下载句柄
+	private LLong m_hDownLoadByFileHandle = new LLong(0);   // 按文件下载句柄
+	
+	private boolean b_downloadByTime = false;
+	private boolean b_downloadByFile = false;
+	private IntByReference nFindCount = new IntByReference(0);
+    
+	// 设备断线通知回调
+	private DisConnect disConnect       = new DisConnect(); 
+	
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// 开始时间
+	private NetSDKLib.NET_TIME stTimeStart = new NetSDKLib.NET_TIME(); 
+	
+	// 结束时间
+	private NetSDKLib.NET_TIME stTimeEnd = new NetSDKLib.NET_TIME();
+	
+	// 录像文件信息
+	private NetSDKLib.NET_RECORDFILE_INFO[] stFileInfo = (NetSDKLib.NET_RECORDFILE_INFO[])new NetSDKLib.NET_RECORDFILE_INFO().toArray(2000);
+
+	Object[][] data = null;
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();   
+	
+	public DownLoadRecordFrame() {
+	    setTitle(Res.string().getDownloadRecord());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 560);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+        	    
+	    loginPanel = new LoginPanel();
+		downloadRecordPanel = new DownLoadRecordPanel(); 
+	
+	    add(loginPanel, BorderLayout.NORTH);
+		add(downloadRecordPanel, BorderLayout.CENTER);
+		
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getDownloadRecord() + " : " + Res.string().getOnline());
+					}	
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getDownloadRecord());
+				logout();
+			}
+		});
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByFileHandle);
+	    		DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByTimeHandle);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();		
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板//////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getDownloadRecord() + " : " + Res.string().getDisConnectReconnecting());
+
+					setButtonEnable(true);
+					b_downloadByFile = false;
+					downloadByFileBtn.setText(Res.string().getDownload());
+					b_downloadByTime = false;
+					downloadByTimeBtn.setText(Res.string().getDownload());
+		    		DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByFileHandle);
+		    		DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByTimeHandle);
+				}
+			});	
+		}
+	}
+	
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getDownloadRecord() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	// 登录
+	public boolean login() {
+		Native.setCallbackThreadInitializer(m_DownLoadPosByFile, 
+										    new CallbackThreadInitializer(false, false, "downloadbyfile callback thread")); 
+		Native.setCallbackThreadInitializer(m_DownLoadPosByTime, 
+										    new CallbackThreadInitializer(false, false, "downloadbytime callback thread")); 
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+			loginPanel.setButtonEnable(true);
+			setButtonEnable(true);      		
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 默认设置主辅码流
+			DownLoadRecordModule.setStreamType(streamComboBoxByFile.getSelectedIndex());
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBoxByFile.setModel(new DefaultComboBoxModel(chnlist));
+			chnComboBoxByTime.setModel(new DefaultComboBoxModel(chnlist));	  
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		return true;
+	}
+	
+	//登出
+	public void logout() {
+		LoginModule.logout();
+		loginPanel.setButtonEnable(false);
+		setButtonEnable(false);
+	    
+	    // 列表清空
+		data = new Object[14][5];
+		table.setModel(new DefaultTableModel(data, Res.string().getDownloadTableName()));
+		table.getColumnModel().getColumn(0).setPreferredWidth(23);
+		table.getColumnModel().getColumn(1).setPreferredWidth(28);
+		table.getColumnModel().getColumn(2).setPreferredWidth(50);	  			
+			
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnlist.clear();
+		}
+		
+		chnComboBoxByFile.setModel(new DefaultComboBoxModel());
+		chnComboBoxByTime.setModel(new DefaultComboBoxModel());
+		
+		b_downloadByFile = false;
+		downloadByFileBtn.setText(Res.string().getDownload());
+		b_downloadByTime = false;
+		downloadByTimeBtn.setText(Res.string().getDownload());
+	}
+	
+	/*
+	 * 下载录像面板
+	 */
+	private class DownLoadRecordPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DownLoadRecordPanel() {
+			BorderEx.set(this, Res.string().getDownloadRecord(), 2);
+			setLayout(new GridLayout(1, 2));
+			
+			downloadByTimePanel = new DownLoadByTimePanel(); // 按时间下载
+			downloadByFilePanel = new DownLoadByFilePanel();  // 按文件下载
+			
+			add(downloadByTimePanel);
+			add(downloadByFilePanel);
+		}
+	}
+	
+	/*
+	 * 按文件下载面板
+	 */
+	private class DownLoadByFilePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DownLoadByFilePanel() {
+			BorderEx.set(this, Res.string().getDownloadByFile(), 2);
+			setLayout(new BorderLayout());
+			
+			downloadByFileSetPanel = new JPanel(); // 设置
+		    queryPanel = new JPanel(); // 查询
+			downByFilePanel = new JPanel();  // 下载
+			
+			add(downloadByFileSetPanel, BorderLayout.NORTH);
+			add(queryPanel, BorderLayout.CENTER);
+			add(downByFilePanel, BorderLayout.SOUTH);
+		    
+			/******** 设置面板***********/
+			JPanel startTimeByFile = new JPanel();
+			JPanel endTimeByFile = new JPanel();
+			JPanel chnByFile = new JPanel();
+			JPanel streamByFile = new JPanel();
+			
+			downloadByFileSetPanel.setLayout(new GridLayout(2, 2));
+			
+			downloadByFileSetPanel.add(startTimeByFile);
+			downloadByFileSetPanel.add(endTimeByFile);
+			downloadByFileSetPanel.add(chnByFile);
+			downloadByFileSetPanel.add(streamByFile);
+			
+			// 开始时间设置
+			startTimeByFile.setBorder(new EmptyBorder(5, 5, 5, 20));
+			startTimeByFile.setLayout(new GridLayout(2, 1));
+			JLabel startLabel = new JLabel(Res.string().getStartTime());
+			dateChooserStartByFile = new DateChooserJButton();
+			
+			Dimension dimension = new Dimension();
+			dimension.height = 20;
+			dateChooserStartByFile.setPreferredSize(dimension);
+			
+			startTimeByFile.add(startLabel);
+			startTimeByFile.add(dateChooserStartByFile);
+		    
+			// 结束时间设置
+			endTimeByFile.setBorder(new EmptyBorder(5, 20, 5, 5));
+			endTimeByFile.setLayout(new GridLayout(2, 1));
+			JLabel endLabel = new JLabel(Res.string().getEndTime());
+		    dateChooserEndByFile = new DateChooserJButton();
+		    dateChooserEndByFile.setPreferredSize(dimension);
+		    
+		    endTimeByFile.add(endLabel);
+		    endTimeByFile.add(dateChooserEndByFile);
+		    
+		    // 通道设置
+		    chnByFile.setBorder(new EmptyBorder(5, 10, 0, 5));
+		    chnByFile.setLayout(new FlowLayout());
+			chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBoxByFile = new JComboBox();			
+			chnComboBoxByFile.setPreferredSize(new Dimension(115, 20));  
+			chnByFile.add(chnlabel);
+			chnByFile.add(chnComboBoxByFile);
+			
+			// 码流设置
+			streamByFile.setBorder(new EmptyBorder(5, 10, 0, 5));
+			streamByFile.setLayout(new FlowLayout());
+			streamLabel = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterAndSub(), Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxByFile = new JComboBox(stream);	
+			streamComboBoxByFile.setModel(new DefaultComboBoxModel(stream));
+			streamComboBoxByFile.setPreferredSize(new Dimension(115, 20));  
+			streamByFile.add(streamLabel);
+			streamByFile.add(streamComboBoxByFile);
+
+		    /******** 查询面板***********/
+			queryPanel.setLayout(new BorderLayout());
+		    queryPanel.setBorder(new EmptyBorder(0, 5, 5, 5));
+			
+			data = new Object[14][5];
+			defaultmodel = new DefaultTableModel(data, Res.string().getDownloadTableName());
+			table = new JTable(defaultmodel){
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行	
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(20);
+			table.getColumnModel().getColumn(1).setPreferredWidth(20);
+			table.getColumnModel().getColumn(2).setPreferredWidth(50);
+			
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);
+		    
+			queryPanel.add(new JScrollPane(table), BorderLayout.CENTER);
+		    
+			/******** 下载面板***********/
+			downByFilePanel.setLayout(new BorderLayout());
+			downByFilePanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+		    
+		    JPanel btnPanel1 = new JPanel();
+		    downloadByFileProgressBar = new JProgressBar(0, 100);
+		    
+		    downloadByFileProgressBar.setPreferredSize(new Dimension(100, 20)); 
+		    downloadByFileProgressBar.setStringPainted(true);
+		    
+		    downByFilePanel.add(btnPanel1, BorderLayout.CENTER);
+		    downByFilePanel.add(downloadByFileProgressBar, BorderLayout.SOUTH);
+		    
+		    // 查询、下载按钮
+		    queryRecordBtn = new JButton(Res.string().getQuery());
+		    downloadByFileBtn = new JButton(Res.string().getDownload());    
+		    
+		    queryRecordBtn.setPreferredSize(new Dimension(175, 20)); 
+		    downloadByFileBtn.setPreferredSize(new Dimension(175, 20)); 
+		    
+		    btnPanel1.setLayout(new FlowLayout());
+		    btnPanel1.add(queryRecordBtn);
+		    btnPanel1.add(downloadByFileBtn);
+		    
+		    queryRecordBtn.setEnabled(false);
+		    downloadByFileBtn.setEnabled(false);
+		    downloadByFileProgressBar.setEnabled(false);
+		    chnComboBoxByFile.setEnabled(false);
+		    streamComboBoxByFile.setEnabled(false);
+		    dateChooserStartByFile.setEnabled(false);
+		    dateChooserEndByFile.setEnabled(false);
+		    
+		    streamComboBoxByFile.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					DownLoadRecordModule.setStreamType(streamComboBoxByFile.getSelectedIndex());
+				}
+			});
+		    
+		    queryRecordBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int i = 1; // 列表序号
+					int time = 0;
+					
+					System.out.println(dateChooserStartByFile.getText() + "\n" + dateChooserEndByFile.getText());
+					// 开始时间
+					String[] dateStartByFile = dateChooserStartByFile.getText().split(" ");
+					String[] dateStart1 = dateStartByFile[0].split("-");
+					String[] dateStart2 = dateStartByFile[1].split(":");
+					
+					stTimeStart.dwYear = Integer.parseInt(dateStart1[0]);
+					stTimeStart.dwMonth = Integer.parseInt(dateStart1[1]);
+					stTimeStart.dwDay = Integer.parseInt(dateStart1[2]);
+					
+					stTimeStart.dwHour = Integer.parseInt(dateStart2[0]);
+					stTimeStart.dwMinute = Integer.parseInt(dateStart2[1]);
+					stTimeStart.dwSecond = Integer.parseInt(dateStart2[2]);
+					
+					// 结束时间
+					String[] dateEndByFile = dateChooserEndByFile.getText().split(" ");
+					String[] dateEnd1 = dateEndByFile[0].split("-");
+					String[] dateEnd2 = dateEndByFile[1].split(":");
+					
+					stTimeEnd.dwYear = Integer.parseInt(dateEnd1[0]);
+					stTimeEnd.dwMonth = Integer.parseInt(dateEnd1[1]);
+					stTimeEnd.dwDay = Integer.parseInt(dateEnd1[2]);
+					
+					stTimeEnd.dwHour = Integer.parseInt(dateEnd2[0]);
+					stTimeEnd.dwMinute = Integer.parseInt(dateEnd2[1]);
+					stTimeEnd.dwSecond = Integer.parseInt(dateEnd2[2]);
+						
+					if(stTimeStart.dwYear != stTimeEnd.dwYear
+					   || stTimeStart.dwMonth != stTimeEnd.dwMonth
+					   || (stTimeEnd.dwDay - stTimeStart.dwDay > 1)) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectTimeAgain(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;				
+					}
+					
+					if(stTimeEnd.dwDay - stTimeStart.dwDay == 1) {
+						time = (24 + stTimeEnd.dwHour)*60*60 + stTimeEnd.dwMinute*60 + stTimeEnd.dwSecond -
+								   stTimeStart.dwHour*60*60 - stTimeStart.dwMinute*60 - stTimeStart.dwSecond;
+					} else {
+						time = stTimeEnd.dwHour*60*60 + stTimeEnd.dwMinute*60 + stTimeEnd.dwSecond -
+								   stTimeStart.dwHour*60*60 - stTimeStart.dwMinute*60 - stTimeStart.dwSecond;
+					}
+
+					if(time > 6 * 60 * 60 
+					   || time <= 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectTimeAgain(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;	
+					}
+										
+					if(!DownLoadRecordModule.queryRecordFile(chnComboBoxByFile.getSelectedIndex(), 
+											   stTimeStart, 
+											   stTimeEnd, 
+											   stFileInfo,
+											   nFindCount)) {
+					    // 列表清空
+						data = new Object[14][5];
+						table.setModel(new DefaultTableModel(data, Res.string().getDownloadTableName()));
+						table.getColumnModel().getColumn(0).setPreferredWidth(23);
+						table.getColumnModel().getColumn(1).setPreferredWidth(28);
+						table.getColumnModel().getColumn(2).setPreferredWidth(50);	 
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					} else {
+						System.out.println(nFindCount.getValue());
+		      			int count = 0;
+		      			if(nFindCount.getValue() > 14) {
+		      				count = nFindCount.getValue();
+		      			} else {
+		      				count = 14;
+		      			}
+		      			data = new Object[count][5];
+		      			table.setModel(new DefaultTableModel(data, Res.string().getDownloadTableName()));
+		    			table.getColumnModel().getColumn(0).setPreferredWidth(23);
+		    			table.getColumnModel().getColumn(1).setPreferredWidth(28);
+		    			table.getColumnModel().getColumn(2).setPreferredWidth(50);
+		                
+						if(nFindCount.getValue() == 0) {	 
+							return;
+						}
+						
+		    			model = (DefaultTableModel)table.getModel();
+		    			
+						for(int j = 0; j < nFindCount.getValue(); j++) {
+							model.setValueAt(String.valueOf(i), j, 0);
+							model.setValueAt(String.valueOf(stFileInfo[j].ch + 1), j, 1);    // 设备返回的通道加1
+							model.setValueAt(Res.string().getRecordTypeStr(stFileInfo[j].nRecordFileType), j, 2);
+							model.setValueAt(stFileInfo[j].starttime.toStringTime(), j, 3);
+							model.setValueAt(stFileInfo[j].endtime.toStringTime(), j, 4);
+							
+							i++;
+						}
+					}
+				}
+			});
+		    
+		    downloadByFileBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {	
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+		
+					if(model == null) {
+						JOptionPane.showMessageDialog(null, Res.string().getQueryRecord(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectRowWithData(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					for(int m = 1; m < 5; m++) {
+						if(model.getValueAt(row, m) == null || String.valueOf(model.getValueAt(row, m)).trim().equals("")) {
+							JOptionPane.showMessageDialog(null, Res.string().getSelectRowWithData(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+					}					
+					
+					// 开始时间
+					String[] dateStart = String.valueOf(model.getValueAt(row, 3)).split(" ");
+					String[] dateStartByFile1 = dateStart[0].split("/");
+					String[] dateStartByFile2 = dateStart[1].split(":");
+					
+					stTimeStart.dwYear = Integer.parseInt(dateStartByFile1[0]);
+					stTimeStart.dwMonth = Integer.parseInt(dateStartByFile1[1]);
+					stTimeStart.dwDay = Integer.parseInt(dateStartByFile1[2]);
+					
+					stTimeStart.dwHour = Integer.parseInt(dateStartByFile2[0]);
+					stTimeStart.dwMinute = Integer.parseInt(dateStartByFile2[1]);
+					stTimeStart.dwSecond = Integer.parseInt(dateStartByFile2[2]);
+					
+					// 结束时间
+					String[] dateEnd = String.valueOf(model.getValueAt(row, 4)).split(" ");
+					String[] dateEndByFile1 = dateEnd[0].split("/");
+					String[] dateEndByFile2 = dateEnd[1].split(":");
+					
+					stTimeEnd.dwYear = Integer.parseInt(dateEndByFile1[0]);
+					stTimeEnd.dwMonth = Integer.parseInt(dateEndByFile1[1]);
+					stTimeEnd.dwDay = Integer.parseInt(dateEndByFile1[2]);
+					
+					stTimeEnd.dwHour = Integer.parseInt(dateEndByFile2[0]);
+					stTimeEnd.dwMinute = Integer.parseInt(dateEndByFile2[1]);
+					stTimeEnd.dwSecond = Integer.parseInt(dateEndByFile2[2]);
+					
+					if(!b_downloadByFile) {
+						System.out.println("ByFile" + String.valueOf(model.getValueAt(row, 3)) + "\n" + String.valueOf(model.getValueAt(row, 4)));
+					    SwingUtilities.invokeLater(new Runnable() {				
+							@Override
+							public void run() {
+								downloadByFileProgressBar.setValue(0);
+							}
+						});	
+						m_hDownLoadByFileHandle = DownLoadRecordModule.downloadRecordFile(Integer.parseInt(String.valueOf(model.getValueAt(row, 1))) - 1, 
+																			  Res.string().getRecordTypeInt(String.valueOf(model.getValueAt(row, 2))), 
+																			  stTimeStart, 
+																			  stTimeEnd, 
+																			  SavePath.getSavePath().getSaveRecordFilePath(),
+																			  m_DownLoadPosByFile);
+						if(m_hDownLoadByFileHandle.longValue() != 0) {
+							b_downloadByFile = true;
+							downloadByFileBtn.setText(Res.string().getStopDownload());
+						} else {
+							JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						}
+					} else {
+						DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByFileHandle);			
+						b_downloadByFile = false;
+						downloadByFileBtn.setText(Res.string().getDownload());
+					    SwingUtilities.invokeLater(new Runnable() {				
+							@Override
+							public void run() {
+								downloadByFileProgressBar.setValue(0);
+							}
+						});
+					}
+				}			
+			});
+		}
+	}
+	
+	/*
+	 * 按时间下载面板
+	 */
+	private class DownLoadByTimePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public DownLoadByTimePanel() {
+			BorderEx.set(this, Res.string().getDownloadByTime(), 2);
+			setLayout(new BorderLayout());
+			
+			downloadByTimeSetPanel = new JPanel(); // 设置
+			downByTimePanel = new JPanel();  // 下载
+		    
+			add(downloadByTimeSetPanel, BorderLayout.NORTH);
+			add(downByTimePanel, BorderLayout.CENTER);
+			
+			/******** 设置面板***********/
+			JPanel startTimeByTime = new JPanel();
+			JPanel endTimeByTime = new JPanel();
+			JPanel chnByTime = new JPanel();
+			JPanel streamByTime = new JPanel();
+			
+			downloadByTimeSetPanel.setLayout(new GridLayout(2, 2));
+			
+			downloadByTimeSetPanel.add(startTimeByTime);
+			downloadByTimeSetPanel.add(endTimeByTime);
+			downloadByTimeSetPanel.add(chnByTime);
+			downloadByTimeSetPanel.add(streamByTime);
+			
+			// 开始时间设置
+			startTimeByTime.setBorder(new EmptyBorder(5, 5, 5, 20));
+			startTimeByTime.setLayout(new GridLayout(2, 1));
+			JLabel startLabel = new JLabel(Res.string().getStartTime());
+			dateChooserStartByTime = new DateChooserJButton();
+			Dimension dimension = new Dimension();
+			dimension.height = 20;
+			dateChooserStartByTime.setPreferredSize(dimension);
+			
+			startTimeByTime.add(startLabel);
+			startTimeByTime.add(dateChooserStartByTime);
+		    
+			// 结束时间设置
+			endTimeByTime.setBorder(new EmptyBorder(5, 20, 5, 5));
+			endTimeByTime.setLayout(new GridLayout(2, 1));
+			JLabel endLabel = new JLabel(Res.string().getEndTime());
+			dateChooserEndByTime = new DateChooserJButton();
+			dateChooserEndByTime.setPreferredSize(dimension);
+			
+			endTimeByTime.add(endLabel);
+			endTimeByTime.add(dateChooserEndByTime);
+		    
+		    // 通道设置
+			chnByTime.setBorder(new EmptyBorder(5, 10, 0, 5));
+			chnByTime.setLayout(new FlowLayout());
+			chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBoxByTime = new JComboBox();	
+			chnComboBoxByTime.setPreferredSize(new Dimension(115, 20));  
+			chnByTime.add(chnlabel);
+			chnByTime.add(chnComboBoxByTime);
+			
+			// 码流设置
+			streamByTime.setBorder(new EmptyBorder(5, 10, 0, 5));
+			streamByTime.setLayout(new FlowLayout());
+			streamLabel = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterAndSub(), Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxByTime = new JComboBox();	
+			streamComboBoxByTime.setModel(new DefaultComboBoxModel(stream));
+			streamComboBoxByTime.setPreferredSize(new Dimension(115, 20));  
+			streamByTime.add(streamLabel);
+			streamByTime.add(streamComboBoxByTime);
+
+			/******** 下载面板***********/
+			downByTimePanel.setLayout(new FlowLayout());
+			downByTimePanel.setBorder(new EmptyBorder(0, 5, 0, 5));
+		    
+		    JPanel btnPanel2 = new JPanel();
+		    downloadByTimeProgressBar = new JProgressBar(0, 100);
+		    
+		    downloadByTimeProgressBar.setPreferredSize(new Dimension(355, 20)); 
+		    downloadByTimeProgressBar.setStringPainted(true);
+		    
+		    downByTimePanel.add(btnPanel2);
+		    downByTimePanel.add(downloadByTimeProgressBar);
+		    
+		    // 下载按钮
+		    downloadByTimeBtn = new JButton(Res.string().getDownload());
+		    JLabel nullLabel = new JLabel();
+		    nullLabel.setPreferredSize(new Dimension(180, 20)); 
+		    downloadByTimeBtn.setPreferredSize(new Dimension(170, 20)); 
+		    
+		    btnPanel2.setLayout(new FlowLayout());
+		    btnPanel2.add(downloadByTimeBtn);
+		    btnPanel2.add(nullLabel);
+
+		    downloadByTimeBtn.setEnabled(false);
+		    downloadByTimeProgressBar.setEnabled(false);
+		    chnComboBoxByTime.setEnabled(false);
+		    streamComboBoxByTime.setEnabled(false);
+		    dateChooserStartByTime.setEnabled(false);
+		    dateChooserEndByTime.setEnabled(false);
+		    
+		    streamComboBoxByTime.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					DownLoadRecordModule.setStreamType(streamComboBoxByTime.getSelectedIndex());
+				}
+			});
+		    
+		    downloadByTimeBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					int time = 0;
+					// 开始时间
+					String[] dateStartByTime = dateChooserStartByTime.getText().split(" ");
+					String[] dateStart1 = dateStartByTime[0].split("-");
+					String[] dateStart2 = dateStartByTime[1].split(":");
+					
+					stTimeStart.dwYear = Integer.parseInt(dateStart1[0]);
+					stTimeStart.dwMonth = Integer.parseInt(dateStart1[1]);
+					stTimeStart.dwDay = Integer.parseInt(dateStart1[2]);
+					
+					stTimeStart.dwHour = Integer.parseInt(dateStart2[0]);
+					stTimeStart.dwMinute = Integer.parseInt(dateStart2[1]);
+					stTimeStart.dwSecond = Integer.parseInt(dateStart2[2]);
+					
+					// 结束时间
+					String[] dateEndByTime = dateChooserEndByTime.getText().split(" ");
+					String[] dateEnd1 = dateEndByTime[0].split("-");
+					String[] dateEnd2 = dateEndByTime[1].split(":");
+					
+					stTimeEnd.dwYear = Integer.parseInt(dateEnd1[0]);
+					stTimeEnd.dwMonth = Integer.parseInt(dateEnd1[1]);
+					stTimeEnd.dwDay = Integer.parseInt(dateEnd1[2]);
+					
+					stTimeEnd.dwHour = Integer.parseInt(dateEnd2[0]);
+					stTimeEnd.dwMinute = Integer.parseInt(dateEnd2[1]);
+					stTimeEnd.dwSecond = Integer.parseInt(dateEnd2[2]);
+					
+					if(stTimeStart.dwYear != stTimeEnd.dwYear
+					   || stTimeStart.dwMonth != stTimeEnd.dwMonth
+					   || (stTimeEnd.dwDay - stTimeStart.dwDay) > 1) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectTimeAgain(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;				
+					}
+					
+					if(stTimeEnd.dwDay - stTimeStart.dwDay == 1) {
+						time = (24 + stTimeEnd.dwHour)*60*60 + stTimeEnd.dwMinute*60 + stTimeEnd.dwSecond -
+								   stTimeStart.dwHour*60*60 - stTimeStart.dwMinute*60 - stTimeStart.dwSecond;
+					} else {
+						time = stTimeEnd.dwHour*60*60 + stTimeEnd.dwMinute*60 + stTimeEnd.dwSecond -
+								   stTimeStart.dwHour*60*60 - stTimeStart.dwMinute*60 - stTimeStart.dwSecond;
+					}
+					System.out.println("time :" + time);
+					if(time > 6 * 60 * 60 
+					   || time <= 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectTimeAgain(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;	
+					}
+					
+					if(!b_downloadByTime) {
+						System.out.println("ByTime" + dateChooserStartByTime.getText() + "\n" + dateChooserEndByTime.getText());
+					    SwingUtilities.invokeLater(new Runnable() {				
+							@Override
+							public void run() {
+								downloadByTimeProgressBar.setValue(0);
+							}
+						});
+						m_hDownLoadByTimeHandle = DownLoadRecordModule.downloadRecordFile(chnComboBoxByTime.getSelectedIndex(), 
+																		    0, 
+																		    stTimeStart, 
+																		    stTimeEnd, 
+																		    SavePath.getSavePath().getSaveRecordFilePath(),
+																		    m_DownLoadPosByTime);
+						if(m_hDownLoadByTimeHandle.longValue() != 0) {
+							b_downloadByTime = true;
+							downloadByTimeBtn.setText(Res.string().getStopDownload());
+						    chnComboBoxByTime.setEnabled(false);
+						    streamComboBoxByTime.setEnabled(false);
+						    dateChooserStartByTime.setEnabled(false);
+						    dateChooserEndByTime.setEnabled(false);
+						} else {
+							JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						}
+					} else {
+						DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByTimeHandle);
+						b_downloadByTime = false;
+						downloadByTimeBtn.setText(Res.string().getDownload());
+					    chnComboBoxByTime.setEnabled(true);
+					    streamComboBoxByTime.setEnabled(true);
+					    dateChooserStartByTime.setEnabled(true);
+					    dateChooserEndByTime.setEnabled(true);
+					    
+					    SwingUtilities.invokeLater(new Runnable() {				
+							@Override
+							public void run() {
+								downloadByTimeProgressBar.setValue(0);
+							}
+						});
+					}
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 按文件下载回调
+	 */
+	private DownLoadPosCallBackByFile m_DownLoadPosByFile = new DownLoadPosCallBackByFile(); // 录像下载进度
+	class DownLoadPosCallBackByFile implements NetSDKLib.fTimeDownLoadPosCallBack{
+		public void invoke(LLong lLoginID, final int dwTotalSize, final int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) {	
+			SwingUtilities.invokeLater(new Runnable() {	
+				@Override
+				public void run() {
+//					System.out.println("ByFile " + dwDownLoadSize + " / " + dwTotalSize);
+					downloadByFileProgressBar.setValue(dwDownLoadSize*100 / dwTotalSize);
+					if(dwDownLoadSize == -1) {
+						downloadByFileProgressBar.setValue(100);
+						DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByFileHandle);
+						b_downloadByFile = false;
+						downloadByFileBtn.setText(Res.string().getDownload());
+						JOptionPane.showMessageDialog(null, Res.string().getDownloadCompleted(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 按时间下载回调
+	 */
+	private DownLoadPosCallBackByTime m_DownLoadPosByTime = new DownLoadPosCallBackByTime(); // 录像下载进度
+	class DownLoadPosCallBackByTime implements NetSDKLib.fTimeDownLoadPosCallBack{
+		public void invoke(LLong lLoginID, final int dwTotalSize, final int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) {	
+			SwingUtilities.invokeLater(new Runnable() {
+				@Override
+				public void run() {
+//					System.out.println("ByTime " + dwDownLoadSize + " / " + dwTotalSize);
+					downloadByTimeProgressBar.setValue(dwDownLoadSize*100 / dwTotalSize);
+					if(dwDownLoadSize == -1) {
+						downloadByTimeProgressBar.setValue(100);
+						DownLoadRecordModule.stopDownLoadRecordFile(m_hDownLoadByTimeHandle);
+						b_downloadByTime = false;
+						downloadByTimeBtn.setText(Res.string().getDownload());
+					    chnComboBoxByTime.setEnabled(true);
+					    streamComboBoxByTime.setEnabled(true);
+					    dateChooserStartByTime.setEnabled(true);
+					    dateChooserEndByTime.setEnabled(true);
+						JOptionPane.showMessageDialog(null, Res.string().getDownloadCompleted(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+				}
+			});
+		}
+	}
+	
+	private void setButtonEnable(boolean bln) {
+		queryRecordBtn.setEnabled(bln);
+		downloadByFileBtn.setEnabled(bln);
+		downloadByFileProgressBar.setValue(0);
+		downloadByFileProgressBar.setEnabled(bln);
+		downloadByTimeBtn.setEnabled(bln);
+		downloadByTimeProgressBar.setValue(0);
+		downloadByTimeProgressBar.setEnabled(bln);	 
+		chnComboBoxByFile.setEnabled(bln);
+		streamComboBoxByFile.setEnabled(bln);
+		chnComboBoxByTime.setEnabled(bln);
+		streamComboBoxByTime.setEnabled(bln);
+		dateChooserStartByFile.setEnabled(bln);
+		dateChooserEndByFile.setEnabled(bln);
+		dateChooserStartByTime.setEnabled(bln);
+		dateChooserEndByTime.setEnabled(bln);	
+	}
+		
+	//登录组件
+	private LoginPanel loginPanel;
+	// 下载
+	private DownLoadRecordPanel downloadRecordPanel;
+	
+	// 按文件下载
+	private DownLoadByTimePanel downloadByTimePanel; 
+	private JPanel downloadByFileSetPanel;
+	private JPanel queryPanel;
+	private JPanel downByFilePanel;
+	private JButton queryRecordBtn;
+	private JButton downloadByFileBtn;
+	private JProgressBar downloadByFileProgressBar;
+	private JButton downloadByTimeBtn;
+	private JProgressBar downloadByTimeProgressBar;
+	private JTable table;
+	private DefaultTableModel defaultmodel;
+    private JLabel chnlabel;
+    private JComboBox chnComboBoxByFile;	
+    private JComboBox chnComboBoxByTime;	
+    private JLabel streamLabel;
+    private JComboBox streamComboBoxByFile;
+    private JComboBox streamComboBoxByTime;
+    
+    private DateChooserJButton dateChooserStartByFile;
+    private DateChooserJButton dateChooserEndByFile;
+	
+	 // 按文件下载
+	private DownLoadByFilePanel downloadByFilePanel; 
+	private JPanel downloadByTimeSetPanel;
+	private JPanel downByTimePanel;
+	
+    private DateChooserJButton dateChooserStartByTime;
+    private DateChooserJButton dateChooserEndByTime;
+}
+
+public class DownLoadRecord {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				DownLoadRecordFrame demo = new DownLoadRecordFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/AddCardDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/AddCardDialog.java
new file mode 100644
index 0000000..fe0b298
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/AddCardDialog.java
@@ -0,0 +1,332 @@
+package com.netsdk.demo.frame.Gate;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.sun.jna.Memory;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DateChooserJButton;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.GateModule;
+import com.netsdk.lib.ToolKits;
+
+public class AddCardDialog extends JDialog{
+
+	private static final long serialVersionUID = 1L;
+	
+	private Memory memory = null;
+	
+	private String picPath = "";
+
+	public AddCardDialog(){
+		setTitle(Res.string().getAdd() + Res.string().getCardInfo());
+		setLayout(new BorderLayout());
+	    setModal(true);
+		pack();
+		setSize(520, 390);
+	    setResizable(false);
+	    setLocationRelativeTo(null);    
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+		CardInfoPanel cardInfoPanel = new CardInfoPanel();
+		ImagePanel imagePanel = new ImagePanel();
+		
+        add(cardInfoPanel, BorderLayout.CENTER);
+        add(imagePanel, BorderLayout.EAST);
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				clear();
+				dispose();
+			}
+		});
+	}
+	
+	/**
+	 * 卡信息
+	 */
+	private class CardInfoPanel extends JPanel {
+
+		private static final long serialVersionUID = 1L;
+		
+		public CardInfoPanel() {
+			BorderEx.set(this, Res.string().getCardInfo(), 4);
+			setLayout(new FlowLayout());
+			
+			JLabel cardNoLabel = new JLabel(Res.string().getCardNo() + ":", JLabel.CENTER);
+			JLabel userIdLabel = new JLabel(Res.string().getUserId() + ":", JLabel.CENTER);
+			JLabel cardNameLabel = new JLabel(Res.string().getCardName() + ":", JLabel.CENTER);
+			JLabel cardPasswdLabel = new JLabel(Res.string().getCardPassword() + ":", JLabel.CENTER);
+			JLabel cardStatusLabel = new JLabel(Res.string().getCardStatus() + ":", JLabel.CENTER);
+			JLabel cardTypeLabel = new JLabel(Res.string().getCardType() + ":", JLabel.CENTER);
+			JLabel useTimesLabel = new JLabel(Res.string().getUseTimes() + ":", JLabel.CENTER);
+			JLabel validPeriodLabel = new JLabel(Res.string().getValidPeriod() + ":", JLabel.CENTER);
+			
+			Dimension dimension = new Dimension();
+			dimension.width = 85;
+			dimension.height = 20;
+			cardNoLabel.setPreferredSize(dimension);
+			userIdLabel.setPreferredSize(dimension);
+			cardNameLabel.setPreferredSize(dimension);
+			cardPasswdLabel.setPreferredSize(dimension);
+			cardStatusLabel.setPreferredSize(dimension);
+			cardTypeLabel.setPreferredSize(dimension);
+			useTimesLabel.setPreferredSize(dimension);
+			validPeriodLabel.setPreferredSize(dimension);
+			
+			cardNoTextField = new JTextField();
+			userIdTextField = new JTextField();
+			cardNameTextField = new JTextField();
+			cardPasswdField = new JPasswordField();		
+			cardStatusComboBox = new JComboBox(Res.string().getCardStatusList());
+			cardTypeComboBox = new JComboBox(Res.string().getCardTypeList());	
+			useTimesTextField = new JTextField("0");
+			firstEnterCheckBox = new JCheckBox(Res.string().getIsFirstEnter());
+			enableCheckBox = new JCheckBox(Res.string().getEnable());
+			enableCheckBox.setSelected(true);
+			enableCheckBox.setVisible(false);
+			startTimeBtn = new DateChooserJButton();
+			endTimeBtn = new DateChooserJButton();
+			
+			cardNoTextField.setPreferredSize(new Dimension(145, 20));
+			userIdTextField.setPreferredSize(new Dimension(145, 20));
+			cardNameTextField.setPreferredSize(new Dimension(145, 20));
+			cardPasswdField.setPreferredSize(new Dimension(145, 20));
+			useTimesTextField.setPreferredSize(new Dimension(145, 20));	
+			cardStatusComboBox.setPreferredSize(new Dimension(145, 20));
+			cardTypeComboBox.setPreferredSize(new Dimension(145, 20));
+			startTimeBtn.setPreferredSize(new Dimension(145, 20));
+			endTimeBtn.setPreferredSize(new Dimension(145, 20));
+			firstEnterCheckBox.setPreferredSize(new Dimension(170, 20));
+			enableCheckBox.setPreferredSize(new Dimension(70, 20));
+			
+			JLabel nullLabel1 = new JLabel();
+			JLabel nullLabel2 = new JLabel();
+			JLabel nullLabel3 = new JLabel();
+			nullLabel1.setPreferredSize(new Dimension(5, 20));
+			nullLabel2.setPreferredSize(new Dimension(30, 20));
+			nullLabel3.setPreferredSize(new Dimension(85, 20));
+
+			addBtn = new JButton(Res.string().getAdd());
+			cancelBtn = new JButton(Res.string().getCancel());
+			JLabel nullLabel4 = new JLabel();
+			nullLabel4.setPreferredSize(new Dimension(250, 20));
+			addBtn.setPreferredSize(new Dimension(110, 20));
+			cancelBtn.setPreferredSize(new Dimension(110, 20));
+			
+			add(cardNoLabel);
+			add(cardNoTextField);
+			add(userIdLabel);
+			add(userIdTextField);
+			
+			add(cardNameLabel);
+			add(cardNameTextField);
+			add(cardPasswdLabel);
+			add(cardPasswdField);
+			
+			add(cardStatusLabel);
+			add(cardStatusComboBox);
+			add(cardTypeLabel);
+			add(cardTypeComboBox);
+			
+			add(useTimesLabel);
+			add(useTimesTextField);
+			add(nullLabel1);
+			add(firstEnterCheckBox);
+			add(nullLabel2);
+			add(enableCheckBox);
+			
+			add(validPeriodLabel);
+			add(startTimeBtn);
+			add(nullLabel3);
+			add(endTimeBtn);
+			
+			add(nullLabel4);
+			add(addBtn);
+			add(cancelBtn);
+			
+			// 添加
+			addBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(cardNoTextField.getText().isEmpty()) {
+						JOptionPane.showMessageDialog(null, Res.string().getInputCardNo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(userIdTextField.getText().isEmpty()) {
+						JOptionPane.showMessageDialog(null, Res.string().getInputUserId(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+
+					
+					if(memory == null) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPicture(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					try {
+						if (cardNoTextField.getText().getBytes("UTF-8").length > 31) {
+							JOptionPane.showMessageDialog(null, Res.string().getCardNoExceedLength() + "(31)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+						
+						if (userIdTextField.getText().getBytes("UTF-8").length > 31) {
+							JOptionPane.showMessageDialog(null, Res.string().getUserIdExceedLength() + "(31)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+						
+						if (cardNameTextField.getText().getBytes("UTF-8").length > 63) {
+							JOptionPane.showMessageDialog(null, Res.string().getCardNameExceedLength() + "(63)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+						
+						if (new String(cardPasswdField.getPassword()).getBytes("UTF-8").length > 63) {
+							JOptionPane.showMessageDialog(null, Res.string().getCardPasswdExceedLength() + "(63)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+					} catch (Exception e1) {
+						e1.printStackTrace();
+					} 								
+					
+					// 先添加卡,卡添加成功后,再添加图片
+					int useTimes = 0;
+					if(useTimesTextField.getText().isEmpty()) {
+						useTimes = 0;
+					} else {
+						useTimes = Integer.parseInt(useTimesTextField.getText());
+					}
+					
+					boolean bCardFlags = GateModule.insertCard(cardNoTextField.getText(), userIdTextField.getText(), cardNameTextField.getText(), 
+							new String(cardPasswdField.getPassword()), Res.string().getCardStatusInt(cardStatusComboBox.getSelectedIndex()), 
+							Res.string().getCardTypeInt(cardTypeComboBox.getSelectedIndex()), useTimes, 
+							firstEnterCheckBox.isSelected() ? 1:0, enableCheckBox.isSelected() ? 1:0, startTimeBtn.getText(), endTimeBtn.getText());
+					String cardError = "";
+					if(!bCardFlags) {
+						cardError = ToolKits.getErrorCodeShow();
+					}
+					
+					
+					boolean bFaceFalgs = GateModule.addFaceInfo(userIdTextField.getText(), memory);
+					String faceError = "";
+					if(!bFaceFalgs) {
+						faceError = ToolKits.getErrorCodeShow();
+					}
+
+					// 添加卡信息和人脸成功
+					if(bCardFlags && bFaceFalgs) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceedAddCardAndPerson(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+						dispose();
+					}
+					
+					// 添加卡信息和人脸失败
+					if(!bCardFlags && !bFaceFalgs) {
+						JOptionPane.showMessageDialog(null, Res.string().getFailedAddCard() + " : " + cardError, 
+														    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+					
+					// 添加卡信息成功,添加人脸失败
+					if(bCardFlags && !bFaceFalgs) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceedAddCardButFailedAddPerson() + " : " + faceError, Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+					
+					// 卡信息已存在,添加人脸成功
+					if(!bCardFlags && bFaceFalgs) {
+						JOptionPane.showMessageDialog(null, Res.string().getCardExistedSucceedAddPerson(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+				}
+			});
+			
+			// 取消
+			cancelBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					clear();
+					dispose();				
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 选择图片
+	 */
+	private class ImagePanel extends JPanel {
+
+		private static final long serialVersionUID = 1L;
+		
+		public ImagePanel() {
+			BorderEx.set(this, Res.string().getPersonPicture(), 4);
+			Dimension dimension = new Dimension();
+			dimension.width = 250;
+			setPreferredSize(dimension);
+			setLayout(new BorderLayout());
+			
+			addImagePanel = new PaintPanel();   // 添加的人员信息图片显示
+			selectImageBtn = new JButton(Res.string().getSelectPicture());
+			add(addImagePanel, BorderLayout.CENTER);
+			add(selectImageBtn, BorderLayout.SOUTH);
+			
+			// 选择图片,获取图片的信息
+			selectImageBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {		
+					// 选择图片,获取图片路径,并在界面显示
+					picPath = ToolKits.openPictureFile(addImagePanel);
+							
+					if(!picPath.isEmpty()) {
+						try {
+							memory = ToolKits.readPictureFile(picPath);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}
+			
+				}
+			});
+		}
+	}
+	
+	private void clear() {
+		memory = null;
+		picPath = "";
+	}
+	
+	private PaintPanel addImagePanel;
+	private JButton selectImageBtn;
+	
+	private JTextField cardNoTextField;
+	private JTextField userIdTextField;
+	private JTextField cardNameTextField;
+	private JPasswordField cardPasswdField;		
+	private JComboBox cardStatusComboBox;
+	private JComboBox cardTypeComboBox;	
+	private JTextField useTimesTextField;
+	private JCheckBox firstEnterCheckBox;
+	private JCheckBox enableCheckBox;
+	private DateChooserJButton startTimeBtn;
+	private DateChooserJButton endTimeBtn;
+	
+	private JButton addBtn;
+	private JButton cancelBtn;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/CardManegerDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/CardManegerDialog.java
new file mode 100644
index 0000000..44901b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/CardManegerDialog.java
@@ -0,0 +1,399 @@
+package com.netsdk.demo.frame.Gate;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.GateModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+public class CardManegerDialog extends JDialog{
+	private static final long serialVersionUID = 1L;
+
+	private int count = 0;  	   // 查询了几次	
+	private int index = 0;	 	   // 查询的卡信息索引
+	private int nFindCount = 10;   // 每次查询的次数
+	
+	public CardManegerDialog(){
+		setTitle(Res.string().getCardManager());
+		setLayout(new BorderLayout());
+	    setModal(true);  
+	    pack();
+		setSize(700, 390);
+	    setResizable(false);
+	    setLocationRelativeTo(null);  
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+		CardListPanel cardListPanel = new CardListPanel();
+		CardOperatePanel cardOperatePanel = new CardOperatePanel();
+		
+        add(cardListPanel, BorderLayout.CENTER);
+        add(cardOperatePanel, BorderLayout.EAST);
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+		
+	  	setOnClickListener();
+	}
+	
+	/**
+	 * 卡信息列表
+	 */
+	private class CardListPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public CardListPanel() {
+			BorderEx.set(this, Res.string().getCardInfo(), 2);
+			setLayout(new BorderLayout());
+			
+			defaultModel = new DefaultTableModel(null, Res.string().getCardTable());
+			table = new JTable(defaultModel) {   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			defaultModel.setRowCount(18);
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(80);
+			table.getColumnModel().getColumn(1).setPreferredWidth(120);
+			table.getColumnModel().getColumn(2).setPreferredWidth(100);
+			table.getColumnModel().getColumn(3).setPreferredWidth(100);
+			table.getColumnModel().getColumn(4).setPreferredWidth(100);
+			table.getColumnModel().getColumn(5).setPreferredWidth(100);
+			table.getColumnModel().getColumn(6).setPreferredWidth(100);
+			table.getColumnModel().getColumn(7).setPreferredWidth(100);
+			table.getColumnModel().getColumn(8).setPreferredWidth(100);
+			table.getColumnModel().getColumn(9).setPreferredWidth(100);
+			table.getColumnModel().getColumn(10).setPreferredWidth(100);
+			table.getColumnModel().getColumn(11).setPreferredWidth(150);
+			table.getColumnModel().getColumn(12).setPreferredWidth(150);
+			
+			// 列表显示居中
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);	
+			((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
+			
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			JScrollPane scrollPane = new JScrollPane(table);
+			add(scrollPane, BorderLayout.CENTER);
+		}
+		
+	}
+	
+	/**
+	 * 卡操作
+	 */
+	private class CardOperatePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public CardOperatePanel() {
+			BorderEx.set(this, Res.string().getCardOperate(), 2);
+			setLayout(new BorderLayout());
+			Dimension dimension = new Dimension();
+			dimension.width = 210;
+			setPreferredSize(dimension);
+			
+			Panel panel1 = new Panel();
+			Panel panel2 = new Panel();
+			
+			add(panel1, BorderLayout.NORTH);
+			add(panel2, BorderLayout.CENTER);
+			
+			// 
+			JLabel cardNoLabel = new JLabel(Res.string().getCardNo() + ":", JLabel.CENTER);
+			cardNoTextField = new JTextField("");
+			
+			cardNoLabel.setPreferredSize(new Dimension(50, 20));
+			cardNoTextField.setPreferredSize(new Dimension(120, 20));
+			cardNoTextField.setHorizontalAlignment(JTextField.CENTER);
+			
+			panel1.setLayout(new FlowLayout());
+			panel1.add(cardNoLabel);
+			panel1.add(cardNoTextField);
+			
+			//
+			searchBtn = new JButton(Res.string().getSearch());
+			addBtn = new JButton(Res.string().getAdd());
+			modifyBtn = new JButton(Res.string().getModify());
+			deleteBtn = new JButton(Res.string().getDelete());
+			clearBtn = new JButton(Res.string().getClear());
+
+			searchBtn.setPreferredSize(new Dimension(180, 21));
+			addBtn.setPreferredSize(new Dimension(180, 21));
+			modifyBtn.setPreferredSize(new Dimension(180, 21));
+			deleteBtn.setPreferredSize(new Dimension(180, 21));
+			clearBtn.setPreferredSize(new Dimension(180, 21));
+			
+			JLabel nullLabel = new JLabel();
+			nullLabel.setPreferredSize(new Dimension(180, 30));
+			
+			panel2.setLayout(new FlowLayout());
+			panel2.add(nullLabel);
+			panel2.add(searchBtn);
+			panel2.add(addBtn);
+			panel2.add(modifyBtn);
+			panel2.add(deleteBtn);
+			panel2.add(clearBtn);
+		}	
+	}
+	
+	private void setOnClickListener() {
+		searchBtn.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {
+					public void run() {
+						try {
+							if (cardNoTextField.getText().getBytes("UTF-8").length > 31) {
+								JOptionPane.showMessageDialog(null, Res.string().getCardNoExceedLength() + "(31)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+								return;
+							}
+						} catch (Exception e1) {
+							e1.printStackTrace();
+						} 
+						
+						searchBtn.setEnabled(false);	
+						defaultModel.setRowCount(0);
+						defaultModel.setRowCount(18);
+					}
+				});				
+
+				findCardInfo();
+			}
+		});
+		
+		addBtn.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				AddCardDialog dialog = new AddCardDialog();
+				dialog.setVisible(true);
+			}
+		});
+		
+		modifyBtn.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				int row = -1;
+				row = table.getSelectedRow(); //获得所选的单行
+				
+				if(row < 0) {
+					JOptionPane.showMessageDialog(null, Res.string().getSelectCard(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				if(defaultModel.getValueAt(row, 3) == null || String.valueOf(defaultModel.getValueAt(row, 3)).trim().isEmpty()) {
+					JOptionPane.showMessageDialog(null, Res.string().getSelectCard(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+			    @SuppressWarnings("unchecked")
+				Vector<String> vector = (Vector<String>) defaultModel.getDataVector().get(row);
+			    
+				ModifyCardDialog dialog = new ModifyCardDialog(vector);
+				dialog.setVisible(true);
+			}
+		});
+		
+		deleteBtn.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				int row = -1;
+				row = table.getSelectedRow(); //获得所选的单行
+				
+				if(row < 0) {
+					JOptionPane.showMessageDialog(null, Res.string().getSelectCard(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				if(defaultModel.getValueAt(row, 3) == null || String.valueOf(defaultModel.getValueAt(row, 3)).trim().isEmpty()) {
+					JOptionPane.showMessageDialog(null, Res.string().getSelectCard(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+							
+			    Vector<String> v = (Vector<String>)defaultModel.getDataVector().get(row);
+
+			    String recordNo = v.get(3).toString();   // 记录集编号
+			    String userId = v.get(4).toString();     // 用户ID
+			    
+			    // 删除人脸和卡信息
+			    if(!GateModule.deleteFaceInfo(userId) ||
+			    		!GateModule.deleteCard(Integer.parseInt(recordNo))) {
+			    	JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			    } else {
+			    	JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+			    	defaultModel.removeRow(row);
+			    	table.updateUI();
+			    }
+			}
+		});
+		
+		clearBtn.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				int result = JOptionPane.showConfirmDialog(null, Res.string().getWantClearAllInfo(), Res.string().getPromptMessage(), JOptionPane.YES_NO_OPTION);
+				if(result == 0) {  // 0-是, 1-否
+					// 清空人脸和卡信息
+					if(!GateModule.clearFaceInfo() || 
+							!GateModule.clearCard()) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+						defaultModel.setRowCount(0);
+						defaultModel.setRowCount(18);
+					}
+				}
+			}
+		});
+	}
+	
+	/**
+	 * 查询卡的信息
+	 */
+	public void findCardInfo() {	
+		new SwingWorker<Boolean, CardData>() {					
+			@Override
+			protected Boolean doInBackground() {
+				count = 0;  		
+				index = 0;	 	    
+				nFindCount = 10; 
+				
+				// 卡号:  为空,查询所有的卡信息
+				// 获取查询句柄
+				if(!GateModule.findCard(cardNoTextField.getText())) {
+					return false;
+				}			
+		
+				// 查询具体信息
+				while(true) {
+					NET_RECORDSET_ACCESS_CTL_CARD[] pstRecord = GateModule.findNextCard(nFindCount);
+					if(pstRecord == null) {
+						break;
+					}
+					
+					for(int i = 0; i < pstRecord.length; i++) {
+						index = i + count * nFindCount;				
+							
+						try {
+							Vector<String> vector = new Vector<String>();
+							vector.add(String.valueOf(index + 1));   					 	 // 序号
+							vector.add(new String(pstRecord[i].szCardNo).trim());   		 // 卡号
+							vector.add(new String(pstRecord[i].szCardName, "GBK").trim());   // 卡名
+							vector.add(String.valueOf(pstRecord[i].nRecNo));   				 // 记录集编号
+							vector.add(new String(pstRecord[i].szUserID).trim());   		 // 用户ID
+							vector.add(new String(pstRecord[i].szPsw).trim());   			 // 卡密码
+							vector.add(Res.string().getCardStatus(pstRecord[i].emStatus));   // 卡状态
+							vector.add(Res.string().getCardType(pstRecord[i].emType));   	 // 卡类型
+							vector.add(String.valueOf(pstRecord[i].nUserTime));   	 		 // 使用次数
+							vector.add(pstRecord[i].bFirstEnter == 1 ? Res.string().getFirstEnter() : Res.string().getNoFirstEnter());  // 是否首卡
+							vector.add(pstRecord[i].bIsValid == 1? Res.string().getValid() : Res.string().getInValid());   	 			// 是否有效
+							vector.add(pstRecord[i].stuValidStartTime.toStringTimeEx());   	 // 有效开始时间
+							vector.add(pstRecord[i].stuValidEndTime.toStringTimeEx());   	 // 有效结束时间
+				
+							CardData data = new CardData();
+							data.setIndex(index);
+							data.setVector(vector);
+							
+							publish(data);
+
+						} catch (UnsupportedEncodingException e) {
+							e.printStackTrace();
+						}
+					}
+		
+					if (pstRecord.length < nFindCount) {
+						break;
+					} else {
+						count ++;
+					}
+
+				}
+				
+				// 关闭查询接口
+				GateModule.findCardClose();
+
+				return true;
+			}
+			
+			@Override
+			protected void process(java.util.List<CardData> chunks) {
+				for(CardData data : chunks) {
+			        defaultModel.insertRow(data.getIndex(), data.getVector());
+					if(data.getIndex() < 18) {
+						 defaultModel.setRowCount(18);
+					} else {
+						defaultModel.setRowCount(data.getIndex() + 1);
+					}
+					
+			        table.updateUI();
+				}
+				
+				super.process(chunks);
+			}
+			
+			@Override
+			protected void done() {	
+				searchBtn.setEnabled(true);
+			}
+		}.execute();
+	}
+
+	class CardData {
+		private int nIndex = 0;
+		private Vector<String> vector = null;
+		
+		public int getIndex() {
+			return nIndex;
+		}
+		public void setIndex(int index) {
+			this.nIndex = index;
+		}
+		public Vector<String> getVector() {
+			return vector;
+		}
+		public void setVector(Vector<String> vector) {
+			this.vector = vector;
+		}
+	}
+	
+	
+	///
+	private DefaultTableModel defaultModel;
+	private JTable table;
+	
+	private JTextField cardNoTextField;
+	
+	private JButton searchBtn;
+	private JButton addBtn;
+	private JButton modifyBtn;
+	private JButton deleteBtn;
+	private JButton clearBtn;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/Gate.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/Gate.java
new file mode 100644
index 0000000..677420d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/Gate.java
@@ -0,0 +1,611 @@
+package com.netsdk.demo.frame.Gate;
+
+import java.awt.AWTEvent;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+
+import javax.imageio.ImageIO;
+import javax.swing.BorderFactory;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.GateModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.Pointer;
+
+class GateFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();
+	
+	// 设备断线通知回调
+	private static DisConnect disConnect       = new DisConnect(); 
+	
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// 订阅句柄
+	public static LLong m_hAttachHandle = new LLong(0);
+	
+	private Vector<String> chnList = new Vector<String>(); 
+	
+	private AnalyzerDataCB analyzerCallback = new AnalyzerDataCB();
+
+	private java.awt.Component target = this;
+	
+	private boolean isAttach = false;
+	
+	public GateFrame() {
+	    setTitle(Res.string().getGate());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 400);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new LoginPanel();
+	    GatePanel gatePanel = new GatePanel();
+	
+
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(gatePanel, BorderLayout.CENTER);
+
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getGate() + " : " + Res.string().getOnline());
+					}
+				}	
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getGate());
+				logout();				
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		GateModule.stopRealLoadPic(m_hAttachHandle);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    			
+	    		dispose();
+
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getGate() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getGate() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	// 登录
+	public boolean login() {
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {	
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnList.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBox.setModel(new DefaultComboBoxModel(chnList));
+			
+			loginPanel.setButtonEnable(true);
+			setEnable(true);
+			
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	// 登出
+	public void logout() {
+		GateModule.stopRealLoadPic(m_hAttachHandle);
+		LoginModule.logout();
+
+		loginPanel.setButtonEnable(false);
+		
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnList.clear();
+		}
+		
+		chnComboBox.setModel(new DefaultComboBoxModel());	
+		setEnable(false);
+		detachBtn.setEnabled(false);
+		
+		isAttach = false;
+		
+		clearPanel();
+	}
+	
+	/**
+	 * 闸机界面面板
+	 */
+	private class GatePanel extends JPanel {
+
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		
+		public GatePanel() {
+			BorderEx.set(this, "", 4);
+			setLayout(new BorderLayout());
+			
+			JPanel gateOperatePanel = new JPanel();
+			JPanel gateShowPanel = new JPanel();
+			
+			add(gateOperatePanel, BorderLayout.WEST);
+			add(gateShowPanel, BorderLayout.CENTER);
+			
+			/**
+			 *  闸机操作面板
+			 */
+			gateOperatePanel.setLayout(new BorderLayout());
+			gateOperatePanel.setPreferredSize(new Dimension(250, 70));
+			
+			JPanel channelPanel = new JPanel();
+			JPanel operatePanel = new JPanel();		
+			gateOperatePanel.add(channelPanel, BorderLayout.NORTH);
+			gateOperatePanel.add(operatePanel, BorderLayout.CENTER);
+			
+			// 通道面板
+			channelPanel.setBorder(BorderFactory.createTitledBorder(""));
+			channelPanel.setPreferredSize(new Dimension(220, 70));
+			channelPanel.setLayout(new FlowLayout());
+			
+			JLabel channelLabel = new JLabel(Res.string().getChannel());
+			chnComboBox = new JComboBox(); 
+			
+			chnComboBox.setPreferredSize(new Dimension(100, 20));
+			
+			channelPanel.add(channelLabel);
+			channelPanel.add(chnComboBox);
+			
+			// 按钮面板
+			operatePanel.setBorder(BorderFactory.createTitledBorder(Res.string().getOperate()));
+			operatePanel.setLayout(new FlowLayout());
+			
+			attachBtn = new JButton(Res.string().getAttach());
+			detachBtn = new JButton(Res.string().getDetach());
+			cardOperateBtn = new JButton(Res.string().getCardOperate());
+			JLabel nullJLabel = new JLabel("");
+			
+			nullJLabel.setPreferredSize(new Dimension(205, 40));
+			attachBtn.setPreferredSize(new Dimension(100, 20));
+			detachBtn.setPreferredSize(new Dimension(100, 20));
+			cardOperateBtn.setPreferredSize(new Dimension(205, 20));
+
+			operatePanel.add(attachBtn);
+			operatePanel.add(detachBtn);
+			operatePanel.add(nullJLabel);
+			operatePanel.add(cardOperateBtn);
+			
+			setEnable(false);
+			detachBtn.setEnabled(false);
+			
+			/**
+			 * 闸机订阅展示面板
+			 */
+			gateShowPanel.setBorder(BorderFactory.createTitledBorder(""));
+			gateShowPanel.setLayout(new BorderLayout());
+			
+			personPaintPanel = new PaintPanel();
+			JPanel cardInfoPanel = new JPanel();
+			
+			personPaintPanel.setPreferredSize(new Dimension(250, 70));			
+			
+			gateShowPanel.add(personPaintPanel, BorderLayout.WEST);
+			gateShowPanel.add(cardInfoPanel, BorderLayout.CENTER);
+			
+			//
+			cardInfoPanel.setLayout(new FlowLayout());
+			
+			JLabel timeLable = new JLabel(Res.string().getTime() + ":", JLabel.CENTER);
+			JLabel openStatusLable = new JLabel(Res.string().getOpenStatus() + ":", JLabel.CENTER);
+			JLabel openMethodLable = new JLabel(Res.string().getOpenMethod() + ":", JLabel.CENTER);
+			JLabel cardNameLable = new JLabel(Res.string().getCardName() + ":", JLabel.CENTER);
+			JLabel cardNoLable = new JLabel(Res.string().getCardNo() + ":", JLabel.CENTER);
+			JLabel userIdLable = new JLabel(Res.string().getUserId() + ":", JLabel.CENTER);
+			JLabel tempLable = new JLabel(Res.string().getTemp() + ":", JLabel.CENTER);
+			JLabel maskstutasLable = new JLabel(Res.string().getMaskstutas() + ":", JLabel.CENTER);
+			
+			
+			
+			timeLable.setPreferredSize(new Dimension(80, 20));
+			openStatusLable.setPreferredSize(new Dimension(80, 20));
+			openMethodLable.setPreferredSize(new Dimension(80, 20));
+			cardNameLable.setPreferredSize(new Dimension(80, 20));
+			cardNoLable.setPreferredSize(new Dimension(80, 20));
+			userIdLable.setPreferredSize(new Dimension(80, 20));
+			tempLable.setPreferredSize(new Dimension(80, 20));
+			maskstutasLable.setPreferredSize(new Dimension(80, 20));
+			
+			
+			timeTextField = new JTextField("");
+			openStatusTextField = new JTextField("");
+			openMethodTextField = new JTextField("");
+			cardNameTextField = new JTextField("");
+			cardNoTextField = new JTextField("");
+			userIdTextField = new JTextField("");
+			tempTextField = new JTextField("");
+			maskStatusTextField = new JTextField("");
+			
+			
+			Dimension dimension = new Dimension();
+			dimension.width = 150;
+			dimension.height = 20;
+			timeTextField.setPreferredSize(dimension);
+			openStatusTextField.setPreferredSize(dimension);
+			openMethodTextField.setPreferredSize(dimension);
+			cardNameTextField.setPreferredSize(dimension);
+			cardNoTextField.setPreferredSize(dimension);
+			userIdTextField.setPreferredSize(dimension);
+			tempTextField.setPreferredSize(dimension);
+			maskStatusTextField.setPreferredSize(dimension);			
+			
+			
+			timeTextField.setHorizontalAlignment(JTextField.CENTER);
+			openStatusTextField.setHorizontalAlignment(JTextField.CENTER);
+			openMethodTextField.setHorizontalAlignment(JTextField.CENTER);
+			cardNameTextField.setHorizontalAlignment(JTextField.CENTER);
+			cardNoTextField.setHorizontalAlignment(JTextField.CENTER);
+			userIdTextField.setHorizontalAlignment(JTextField.CENTER);
+			tempTextField.setHorizontalAlignment(JTextField.CENTER);
+			maskStatusTextField.setHorizontalAlignment(JTextField.CENTER);			
+			
+			
+			timeTextField.setEditable(false);
+			openStatusTextField.setEditable(false);
+			openMethodTextField.setEditable(false);
+			cardNameTextField.setEditable(false);
+			cardNoTextField.setEditable(false);
+			userIdTextField.setEditable(false);
+			tempTextField.setEditable(false);
+			maskStatusTextField.setEditable(false);			
+			
+			
+			cardInfoPanel.add(timeLable);
+			cardInfoPanel.add(timeTextField);
+			cardInfoPanel.add(openStatusLable);
+			cardInfoPanel.add(openStatusTextField);
+			cardInfoPanel.add(openMethodLable);
+			cardInfoPanel.add(openMethodTextField);
+			cardInfoPanel.add(cardNameLable);
+			cardInfoPanel.add(cardNameTextField);
+			cardInfoPanel.add(cardNoLable);
+			cardInfoPanel.add(cardNoTextField);
+			cardInfoPanel.add(userIdLable);
+			cardInfoPanel.add(userIdTextField);
+			cardInfoPanel.add(tempLable);
+			cardInfoPanel.add(tempTextField);
+			cardInfoPanel.add(maskstutasLable);
+			cardInfoPanel.add(maskStatusTextField);
+			
+			setOnClickListener();
+		}
+	}
+	
+	// 监听
+	private void setOnClickListener() {
+		// 订阅
+		attachBtn.addActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				m_hAttachHandle = GateModule.realLoadPic(chnComboBox.getSelectedIndex(), analyzerCallback);
+				if(m_hAttachHandle.longValue() != 0) {
+					isAttach = true;
+					attachBtn.setEnabled(false);
+					detachBtn.setEnabled(true);
+				} else {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+			}
+		});
+		
+		// 取消订阅
+		detachBtn.addActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				GateModule.stopRealLoadPic(m_hAttachHandle);
+				synchronized (this) {
+					isAttach = false;
+				}
+				attachBtn.setEnabled(true);
+				detachBtn.setEnabled(false);
+	        	
+	        	clearPanel();
+			}
+		});
+		
+		
+		// 卡操作
+		cardOperateBtn.addActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent arg0) {		
+				CardManegerDialog dialog = new CardManegerDialog();
+				dialog.setVisible(true);
+			}
+		});
+	}
+	
+	private void setEnable(boolean bln) {
+		chnComboBox.setEnabled(bln);
+		attachBtn.setEnabled(bln);
+		cardOperateBtn.setEnabled(bln);
+	}
+	
+	private void clearPanel() {
+	  	personPaintPanel.setOpaque(true); 
+    	personPaintPanel.repaint();
+    	
+    	timeTextField.setText("");
+    	openStatusTextField.setText("");
+    	openMethodTextField.setText("");
+    	cardNameTextField.setText("");
+    	cardNoTextField.setText("");
+    	userIdTextField.setText("");
+    	tempTextField.setText("");
+    	maskStatusTextField.setText("");
+	}
+	
+	private class AnalyzerDataCB implements NetSDKLib.fAnalyzerDataCallBack {  
+		private BufferedImage gateBufferedImage = null;
+		
+        public int invoke(LLong lAnalyzerHandle, int dwAlarmType,
+		        		 Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize,
+		                 Pointer dwUser, int nSequence, Pointer reserved) 
+        {
+            if (lAnalyzerHandle.longValue() == 0 || pAlarmInfo == null) {
+                return -1;
+            }   
+            
+			File path = new File("./GateSnapPicture/");
+            if (!path.exists()) {
+                path.mkdir();
+            }
+			
+            ///< 门禁事件
+			if(dwAlarmType == NetSDKLib.EVENT_IVS_ACCESS_CTL) {
+				DEV_EVENT_ACCESS_CTL_INFO msg = new DEV_EVENT_ACCESS_CTL_INFO();
+                ToolKits.GetPointerData(pAlarmInfo, msg);  
+        	
+                // 保存图片,获取图片缓存
+            	String snapPicPath = path + "\\" + System.currentTimeMillis() + "GateSnapPicture.jpg";  // 保存图片地址
+            	byte[] buffer = pBuffer.getByteArray(0, dwBufSize);
+    			ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(buffer);
+    			
+    			try {
+    				gateBufferedImage = ImageIO.read(byteArrInputGlobal);
+    				if(gateBufferedImage != null) {
+    					ImageIO.write(gateBufferedImage, "jpg", new File(snapPicPath));
+    				}	    				
+    			} catch (IOException e2) {
+    				e2.printStackTrace();
+    			}
+ 	           
+ 	            // 图片以及门禁信息界面显示                            		      
+ 	            EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+ 	            if (eventQueue != null) {
+ 	            eventQueue.postEvent( new AccessEvent(target,
+ 	            									  gateBufferedImage, 
+								        		      msg));
+ 	            }   
+			}
+                   
+			return 0;           
+        }
+	}
+	
+	class AccessEvent extends AWTEvent {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+		
+		private BufferedImage gateBufferedImage = null;
+		private DEV_EVENT_ACCESS_CTL_INFO msg = null;
+		
+		public AccessEvent(Object target,
+				     	   BufferedImage gateBufferedImage, 
+						   DEV_EVENT_ACCESS_CTL_INFO msg) {
+			super(target, EVENT_ID);
+			this.gateBufferedImage = gateBufferedImage;
+			this.msg = msg;
+		}
+		
+		public BufferedImage getGateBufferedImage() {
+			return gateBufferedImage;
+		}
+		
+		public DEV_EVENT_ACCESS_CTL_INFO getAccessInfo() {
+			return msg;
+		}
+	}
+	
+	@Override
+    protected void processEvent(AWTEvent event) {
+		if (event instanceof AccessEvent) {  // 门禁事件处理
+			AccessEvent ev = (AccessEvent) event;
+
+			BufferedImage gateBufferedImage = ev.getGateBufferedImage();        
+	        DEV_EVENT_ACCESS_CTL_INFO msg = ev.getAccessInfo();
+
+	        if(!isAttach) {
+             	return;
+            }
+	         
+			// 图片显示
+	        if(gateBufferedImage != null) {
+	        	personPaintPanel.setImage(gateBufferedImage);
+	        	personPaintPanel.setOpaque(false); 
+	        	personPaintPanel.repaint();
+	        } else {
+	        	personPaintPanel.setOpaque(true); 
+	        	personPaintPanel.repaint();
+	        }
+	        
+          	// 时间
+	        if(msg.UTC == null || msg.UTC.toString().isEmpty()) {
+	        	timeTextField.setText("");
+	        } else {
+	        	msg.UTC.setTime(msg.UTC.dwYear, msg.UTC.dwMonth, msg.UTC.dwDay, msg.UTC.dwHour+8, msg.UTC.dwMinute, msg.UTC.dwSecond);
+	        	timeTextField.setText(msg.UTC.toString());
+	        }
+	        
+	        // 开门状态
+	        if(msg.bStatus == 1) {
+	        	openStatusTextField.setText(Res.string().getSucceed());
+	        } else {
+	        	openStatusTextField.setText(Res.string().getFailed());
+	        }        
+	        
+	        // 开门方式
+	        openMethodTextField.setText(Res.string().getOpenMethods(msg.emOpenMethod));
+	        
+	        // 卡名
+	        try {
+				cardNameTextField.setText(new String(msg.szCardName, "GBK").trim());
+			} catch (UnsupportedEncodingException e) {
+				e.printStackTrace();
+			}
+	        
+	        // 卡号
+	        cardNoTextField.setText(new String(msg.szCardNo).trim());
+	        
+	        // 用户ID
+	        userIdTextField.setText(new String(msg.szUserID).trim());
+	        
+	        // 口罩状态
+	        maskStatusTextField.setText(Res.string().getMaskStatus(msg.emMask)); 
+	        
+	        //温度
+	        if(msg.stuManTemperatureInfo.emTemperatureUnit==0) {
+	        	tempTextField.setText(String.valueOf(msg.stuManTemperatureInfo.fCurrentTemperature+"℃"));
+	        }else if(msg.stuManTemperatureInfo.emTemperatureUnit==1){
+	        	tempTextField.setText(String.valueOf(msg.stuManTemperatureInfo.fCurrentTemperature+"℉"));
+	        }else if(msg.stuManTemperatureInfo.emTemperatureUnit==2) {
+	        	tempTextField.setText(String.valueOf(msg.stuManTemperatureInfo.fCurrentTemperature+"K"));
+	        }
+	        
+	        
+        } else {
+            super.processEvent(event);   
+        }
+    } 
+	
+	/*
+	 * 登录控件
+	 */
+	private LoginPanel loginPanel;	
+	
+    private JComboBox chnComboBox;
+    private JButton attachBtn;
+    private JButton detachBtn;
+    private JButton cardOperateBtn;
+    
+    private PaintPanel personPaintPanel;
+    
+    private JTextField timeTextField;
+    private JTextField openStatusTextField;
+    private JTextField openMethodTextField;
+    private JTextField cardNameTextField;
+    private JTextField cardNoTextField;
+    private JTextField userIdTextField;
+    private JTextField tempTextField;
+    private JTextField maskStatusTextField;
+}
+
+public class Gate {
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				GateFrame demo = new GateFrame();	
+				demo.setVisible(true);
+			}
+		});		
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/ModifyCardDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/ModifyCardDialog.java
new file mode 100644
index 0000000..ac78fd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Gate/ModifyCardDialog.java
@@ -0,0 +1,341 @@
+package com.netsdk.demo.frame.Gate;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+
+import com.sun.jna.Memory;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DateChooserJButton;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.GateModule;
+import com.netsdk.lib.ToolKits;
+
+public class ModifyCardDialog extends JDialog{
+
+	private static final long serialVersionUID = 1L;
+
+	private Memory memory = null;
+	
+	private Vector<String> vector = null;
+	
+	private String picPath = "";
+	
+	public ModifyCardDialog(Vector<String> v){
+		setTitle(Res.string().getModify() + Res.string().getCardInfo());
+		setLayout(new BorderLayout());
+	    setModal(true);	
+		pack();
+		setSize(520, 390);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+		CardInfoPanel cardInfoPanel = new CardInfoPanel();
+		ImagePanel imagePanel = new ImagePanel();
+		
+        add(cardInfoPanel, BorderLayout.CENTER);
+        add(imagePanel, BorderLayout.EAST);
+        
+        this.vector = v;
+        showCardInfo();
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				clear();
+				dispose();
+			}
+		});
+	}
+	
+	/**
+	 * 卡信息
+	 */
+	private class CardInfoPanel extends JPanel {
+
+		private static final long serialVersionUID = 1L;
+		
+		public CardInfoPanel() {
+			BorderEx.set(this, Res.string().getCardInfo(), 4);
+			
+			JLabel cardNoLabel = new JLabel(Res.string().getCardNo() + ":", JLabel.CENTER);
+			JLabel userIdLabel = new JLabel(Res.string().getUserId() + ":", JLabel.CENTER);
+			JLabel cardNameLabel = new JLabel(Res.string().getCardName() + ":", JLabel.CENTER);
+			JLabel cardPasswdLabel = new JLabel(Res.string().getCardPassword() + ":", JLabel.CENTER);
+			JLabel cardStatusLabel = new JLabel(Res.string().getCardStatus() + ":", JLabel.CENTER);
+			JLabel cardTypeLabel = new JLabel(Res.string().getCardType() + ":", JLabel.CENTER);
+			JLabel useTimesLabel = new JLabel(Res.string().getUseTimes() + ":", JLabel.CENTER);
+			JLabel validPeriodLabel = new JLabel(Res.string().getValidPeriod() + ":", JLabel.CENTER);
+			
+			Dimension dimension = new Dimension();
+			dimension.width = 85;
+			dimension.height = 20;
+			cardNoLabel.setPreferredSize(dimension);
+			userIdLabel.setPreferredSize(dimension);
+			cardNameLabel.setPreferredSize(dimension);
+			cardPasswdLabel.setPreferredSize(dimension);
+			cardStatusLabel.setPreferredSize(dimension);
+			cardTypeLabel.setPreferredSize(dimension);
+			useTimesLabel.setPreferredSize(dimension);
+			validPeriodLabel.setPreferredSize(dimension);
+			
+			cardNoTextField = new JTextField();
+			userIdTextField = new JTextField();
+			cardNameTextField = new JTextField();
+			cardPasswdField = new JPasswordField();		
+			cardStatusComboBox = new JComboBox(Res.string().getCardStatusList());
+			cardTypeComboBox = new JComboBox(Res.string().getCardTypeList());	
+			useTimesTextField = new JTextField();
+			firstEnterCheckBox = new JCheckBox(Res.string().getIsFirstEnter());
+			enableCheckBox = new JCheckBox(Res.string().getEnable());
+			enableCheckBox.setSelected(true);
+			enableCheckBox.setVisible(false);
+			startTimeBtn = new DateChooserJButton();
+			endTimeBtn = new DateChooserJButton();
+			
+			cardNoTextField.setPreferredSize(new Dimension(145, 20));
+			userIdTextField.setPreferredSize(new Dimension(145, 20));
+			cardNameTextField.setPreferredSize(new Dimension(145, 20));
+			cardPasswdField.setPreferredSize(new Dimension(145, 20));
+			useTimesTextField.setPreferredSize(new Dimension(145, 20));
+			cardStatusComboBox.setPreferredSize(new Dimension(145, 20));
+			cardTypeComboBox.setPreferredSize(new Dimension(145, 20));
+			startTimeBtn.setPreferredSize(new Dimension(145, 20));
+			endTimeBtn.setPreferredSize(new Dimension(145, 20));
+			firstEnterCheckBox.setPreferredSize(new Dimension(170, 20));
+			enableCheckBox.setPreferredSize(new Dimension(70, 20));
+			
+			JLabel nullLabel1 = new JLabel();
+			JLabel nullLabel2 = new JLabel();
+			JLabel nullLabel3 = new JLabel();
+			nullLabel1.setPreferredSize(new Dimension(5, 20));
+			nullLabel2.setPreferredSize(new Dimension(30, 20));
+			nullLabel3.setPreferredSize(new Dimension(85, 20));
+			
+			cardNoTextField.setEditable(false);
+			userIdTextField.setEditable(false);
+			
+			modifyBtn = new JButton(Res.string().getModify());
+			cancelBtn = new JButton(Res.string().getCancel());
+			JLabel nullLabel4 = new JLabel();
+			nullLabel4.setPreferredSize(new Dimension(250, 20));
+			modifyBtn.setPreferredSize(new Dimension(110, 20));
+			cancelBtn.setPreferredSize(new Dimension(110, 20));
+			
+			add(cardNoLabel);
+			add(cardNoTextField);
+			add(userIdLabel);
+			add(userIdTextField);
+			
+			add(cardNameLabel);
+			add(cardNameTextField);
+			add(cardPasswdLabel);
+			add(cardPasswdField);
+			
+			add(cardStatusLabel);
+			add(cardStatusComboBox);
+			add(cardTypeLabel);
+			add(cardTypeComboBox);
+			
+			add(useTimesLabel);
+			add(useTimesTextField);
+			add(nullLabel1);
+			add(firstEnterCheckBox);
+			add(nullLabel2);
+			add(enableCheckBox);
+			
+			add(validPeriodLabel);
+			add(startTimeBtn);
+			add(nullLabel3);
+			add(endTimeBtn);
+			
+			add(nullLabel4);
+			add(modifyBtn);
+			add(cancelBtn);
+			
+			// 修改
+			modifyBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					try {
+						if (cardNameTextField.getText().getBytes("UTF-8").length > 63) {
+							JOptionPane.showMessageDialog(null, Res.string().getCardNameExceedLength() + "(63)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+						
+						if (new String(cardPasswdField.getPassword()).getBytes("UTF-8").length > 63) {
+							JOptionPane.showMessageDialog(null, Res.string().getCardPasswdExceedLength() + "(63)", Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							return;
+						}
+					} catch (Exception e1) {
+						e1.printStackTrace();
+					} 	
+					
+					int useTimes = 0;
+					if(useTimesTextField.getText().isEmpty()) {
+						useTimes = 0;
+					} else {
+						useTimes = Integer.parseInt(useTimesTextField.getText());
+					}
+					
+					if(GateModule.modifyCard(Integer.parseInt(vector.get(3).toString()), cardNoTextField.getText(), 
+										    userIdTextField.getText(), cardNameTextField.getText(), 
+										    new String(cardPasswdField.getPassword()), 
+										    Res.string().getCardStatusInt(cardStatusComboBox.getSelectedIndex()), 
+										    Res.string().getCardTypeInt(cardTypeComboBox.getSelectedIndex()), 
+										    useTimes, firstEnterCheckBox.isSelected() ? 1:0, 
+										    enableCheckBox.isSelected() ? 1:0, startTimeBtn.getText(), endTimeBtn.getText())) {
+						if(memory == null) {
+							JOptionPane.showMessageDialog(null, Res.string().getSucceedModifyCard(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+							dispose();
+						} else {
+							if(GateModule.modifyFaceInfo(userIdTextField.getText(), memory)) {
+								JOptionPane.showMessageDialog(null, Res.string().getSucceedModifyCardAndPerson(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+								dispose();
+							} else {
+								JOptionPane.showMessageDialog(null, Res.string().getSucceedModifyCardButFailedModifyPerson() + " : " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+							}
+						}
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getFailedModifyCard() + " : " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}	
+				}
+			});
+			
+			// 取消
+			cancelBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					clear();
+					dispose();				
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 选择图片
+	 */
+	private class ImagePanel extends JPanel {
+
+		private static final long serialVersionUID = 1L;
+		
+		public ImagePanel() {
+			BorderEx.set(this, Res.string().getPersonPicture(), 4);
+			Dimension dimension = new Dimension();
+			dimension.width = 250;
+			setPreferredSize(dimension);
+			setLayout(new BorderLayout());
+			
+			addImagePanel = new PaintPanel();   // 添加的人员信息图片显示
+			selectImageBtn = new JButton(Res.string().getSelectPicture());
+			add(addImagePanel, BorderLayout.CENTER);
+			add(selectImageBtn, BorderLayout.SOUTH);
+			
+			// 选择图片,获取图片的信息
+			selectImageBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					// 选择图片,获取图片路径,并在界面显示
+					picPath = ToolKits.openPictureFile(addImagePanel);
+							
+					if(!picPath.isEmpty()) {
+						try {
+							memory = ToolKits.readPictureFile(picPath);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}		
+				}
+			});
+		}
+	}
+	
+	/**
+	 * 界面显示要修改的卡信息
+	 */
+	private void showCardInfo() {
+		// 卡号
+		cardNoTextField.setText(vector.get(1).toString());
+		
+		// 卡名
+		cardNameTextField.setText(vector.get(2).toString());
+		
+		// 用户ID
+		userIdTextField.setText(vector.get(4).toString());
+		
+		// 卡密码
+		cardPasswdField.setText(vector.get(5).toString());
+		
+		// 卡状态
+		cardStatusComboBox.setSelectedIndex(Res.string().getCardStatusChomBoxIndex(vector.get(6).toString()));
+		
+		// 卡类型
+		cardTypeComboBox.setSelectedIndex(Res.string().getCardTypeChomBoxIndex(vector.get(7).toString()));
+		
+		// 使用次数
+		useTimesTextField.setText(vector.get(8).toString());
+		
+		// 是否首卡
+		if(vector.get(9).toString().equals(Res.string().getFirstEnter())) {
+			firstEnterCheckBox.setSelected(true);
+		} else {
+			firstEnterCheckBox.setSelected(false);
+		}
+		
+		// 是否有效
+		if(vector.get(10).toString().equals(Res.string().getValid())) {
+			enableCheckBox.setSelected(true);
+		} else {
+			enableCheckBox.setSelected(false);
+		}
+		
+		// 有效开始时间
+		startTimeBtn.setText(vector.get(11).toString());
+		
+		// 有效结束时间
+		endTimeBtn.setText(vector.get(12).toString());
+	}
+	
+	private void clear() {
+		memory = null;
+		vector = null;
+		picPath = "";
+	}
+	
+	private PaintPanel addImagePanel;
+	private JButton selectImageBtn;
+	
+	private JTextField cardNoTextField;
+	private JTextField userIdTextField;
+	private JTextField cardNameTextField;
+	private JPasswordField cardPasswdField;		
+	private JComboBox cardStatusComboBox;
+	private JComboBox cardTypeComboBox;	
+	private JTextField useTimesTextField;
+	private JCheckBox firstEnterCheckBox;
+	private JCheckBox enableCheckBox;
+	private DateChooserJButton startTimeBtn;
+	private DateChooserJButton endTimeBtn;
+	
+	private JButton modifyBtn;
+	private JButton cancelBtn;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/HumanNumberStatistic.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/HumanNumberStatistic.java
new file mode 100644
index 0000000..a7ea08a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/HumanNumberStatistic.java
@@ -0,0 +1,711 @@
+package com.netsdk.demo.frame;
+
+import com.sun.jna.Pointer;
+import com.netsdk.common.*;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 人数统计事件 demo
+ */
+class HumanNumberStatisticFrame extends JFrame {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /*
+     * 界面、SDK初始化及登录
+     */
+    public HumanNumberStatisticFrame() {
+        setTitle(Res.string().getHumanNumberStatistic());
+        setLayout(new BorderLayout());
+        pack();
+        setSize(1080, 560);
+        setResizable(false);
+        setLocationRelativeTo(null);
+        LoginModule.init(disConnectCB, haveReConnectCB);   // 打开工程,SDK初始化,注册断线和重连回调函数
+
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        loginPanel = new LoginPanel();
+        humanStatisticPanel = new HumanStatisticPanel();
+
+        add(loginPanel, BorderLayout.NORTH);
+        add(humanStatisticPanel, BorderLayout.CENTER);
+
+        // 调用按钮登录事件
+        loginPanel.addLoginBtnActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                if (loginPanel.checkLoginText()) {
+                    if (login()) {
+                        mainFrame = ToolKits.getFrame(e);
+                        mainFrame.setTitle(Res.string().getHumanNumberStatistic() + " : " + Res.string().getOnline());
+                    }
+                }
+            }
+        });
+        // 调用按钮登出事件
+        loginPanel.addLogoutBtnActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                mainFrame.setTitle(Res.string().getHumanNumberStatistic());
+                logout();
+            }
+        });
+
+        // 注册窗体清出事件
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                RealPlayModule.stopRealPlay(m_hPlayHandle);   // 退出句柄
+                TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 0);  // 关闭规则框
+                VideoStateSummaryModule.detachAllVideoStatSummary(); // 退订事件
+                LoginModule.logout();    // 退出
+                LoginModule.cleanup();   // 关闭工程,释放资源
+                dispose();
+                // 返回主菜单
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+    }
+
+    /////////////////////////////// 登录相关 //////////////////////////////////////
+    //////////////////////////////////////////////////////////////////////////////
+
+    // 设备断线通知回调
+    private static DisConnectCallBack disConnectCB = new DisConnectCallBack();
+
+    // 网络连接恢复
+    private static HaveReConnectCallBack haveReConnectCB = new HaveReConnectCallBack();
+
+    private Vector<String> chnList = new Vector<String>();
+
+    // 预览句柄
+    public static NetSDKLib.LLong m_hPlayHandle = new NetSDKLib.LLong(0);
+
+    // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+    private static class DisConnectCallBack implements NetSDKLib.fDisConnect {
+        public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("Device[%s] Port[%d] DisConnectCallBack!\n", pchDVRIP, nDVRPort);
+            // 断线提示
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    mainFrame.setTitle(Res.string().getHumanNumberStatistic() + " : " + Res.string().getDisConnectReconnecting());
+                }
+            });
+        }
+
+    }
+
+    // 网络连接恢复,设备重连成功回调
+    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+    private static class HaveReConnectCallBack implements NetSDKLib.fHaveReConnect {
+        public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+            // 重连提示
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    mainFrame.setTitle(Res.string().getHumanNumberStatistic() + " : " + Res.string().getOnline());
+                }
+            });
+
+            // 断线后需要重新订阅
+            ExecutorService service = Executors.newSingleThreadExecutor();
+            service.execute(new Runnable() {
+                @Override
+                public void run() {
+
+                    if (b_RealPlay) {     // 如果断前正在预览
+                        stopRealPlay();   // 退出预览
+                        realPlay();       // 重新开启预览
+                    }
+
+                    if (b_Attachment) {   // 如果断前正在订阅
+                        // 重订阅事件
+                        VideoStateSummaryModule.reAttachAllVideoStatSummary(humanNumberStatisticCB);
+                        setAttachBtnTextEnable();
+                    }
+                }
+            });
+            service.shutdown();
+        }
+
+    }
+
+    // 登录
+    public boolean login() {
+        if (LoginModule.login(loginPanel.ipTextArea.getText(),
+                Integer.parseInt(loginPanel.portTextArea.getText()),
+                loginPanel.nameTextArea.getText(),
+                new String(loginPanel.passwordTextArea.getPassword()))) {
+
+            loginPanel.setButtonEnable(true);
+            setButtonEnable(true);
+
+            final int chanNum = LoginModule.m_stDeviceInfo.byChanNum;
+
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    // 更新列表长度
+                    int listSize = Math.max(chanNum, 32);
+                    groupListPanel.remove(scrollPane);
+                    groupListPanel.creatGroupInfoPanel(listSize);
+
+                    // 登陆成功,将通道添加到控件
+                    for (int i = 0; i < chanNum; i++) {
+                        chnList.add(Res.string().getChannel() + " " + String.valueOf(i + 1));
+                        SummaryInfo summaryInfo = new SummaryInfo();
+                        summaryInfo.nChannelID = i;
+                        EventDisplay.dataList.add(summaryInfo);
+                    }
+                    chnComboBox.setModel(new DefaultComboBoxModel(chnList));
+
+                    setEnableAllInnerComponent(controlPanel, true);
+
+                    EventDisplay.setEventInfo(groupInfoTable, EventDisplay.dataList);
+                }
+            });
+
+        } else {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+    }
+
+    // 登出
+    public void logout() {
+
+        VideoStateSummaryModule.detachAllVideoStatSummary();  // 退订阅
+        stopRealPlay(); //退出播放
+        LoginModule.logout();  // 退出登录
+
+        chnList.clear();   // 清除通道号列表
+        EventDisplay.clearEventInfoList();  // 清除事件列表数据
+        chnComboBox.setModel(new DefaultComboBoxModel());
+
+        loginPanel.setButtonEnable(false);
+        setAttachBtnTextDisable();
+        setEnableAllInnerComponent(controlPanel, false);
+    }
+
+    /////////////////////////////// 人数统计事件  ////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////
+
+    private static boolean b_RealPlay = false;
+    private static boolean b_Attachment = false;
+
+    /*
+     * 一级面板:人数统计控制面板
+     */
+    private class HumanStatisticPanel extends JPanel {
+        private static final long serialVersionUID = 1L;
+
+        public HumanStatisticPanel() {
+            setLayout(new BorderLayout());
+            Dimension dim = getPreferredSize();
+            dim.width = 320;
+            setPreferredSize(dim);
+
+            humanStatisticAttachPanel = new HumanStatisticControlPanel(); // 人数统计控制面板
+            realPanel = new RealPanel();            // 实时显示面啊
+            groupListPanel = new GroupListPanel();  // 事件展示面板
+
+            add(humanStatisticAttachPanel, BorderLayout.NORTH);
+            add(realPanel, BorderLayout.EAST);
+            add(groupListPanel, BorderLayout.CENTER);
+        }
+    }
+
+    /*
+     * 二级面板: 控制面板 通道、码流设置,事件订阅
+     */
+    private class HumanStatisticControlPanel extends JPanel {
+        private static final long serialVersionUID = 1L;
+
+        public HumanStatisticControlPanel() {
+            BorderEx.set(this, Res.string().getHumanNumberStatisticAttach(), 2);
+            setLayout(new FlowLayout());
+
+            /* 预览控制面板 */
+            controlPanel = new Panel();
+            add(controlPanel);
+
+            chnLabel = new JLabel(Res.string().getChannel());
+            chnComboBox = new JComboBox();
+
+            streamLabel = new JLabel(Res.string().getStreamType());
+            String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+            streamComboBox = new JComboBox(stream);
+            realPlayBtn = new JButton(Res.string().getStartRealPlay());
+            attachBtn = new JButton(Res.string().getAttach());
+            clearBtn = new JButton(Res.string().getHumanNumberStatisticEventClearOSD());
+
+            controlPanel.setLayout(new FlowLayout());
+            controlPanel.add(chnLabel);
+            controlPanel.add(chnComboBox);
+            controlPanel.add(streamLabel);
+            controlPanel.add(streamComboBox);
+            controlPanel.add(realPlayBtn);
+            controlPanel.add(attachBtn);
+            controlPanel.add(clearBtn);
+
+            chnComboBox.setPreferredSize(new Dimension(90, 20));
+            streamComboBox.setPreferredSize(new Dimension(120, 20));
+            realPlayBtn.setPreferredSize(new Dimension(120, 20));
+            attachBtn.setPreferredSize(new Dimension(120, 20));
+            clearBtn.setPreferredSize(new Dimension(120, 20));
+
+            chnComboBox.setEnabled(false);
+            streamComboBox.setEnabled(false);
+            realPlayBtn.setEnabled(false);
+            attachBtn.setEnabled(false);
+            clearBtn.setEnabled(false);
+
+            realPlayBtn.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    realPlay();
+                }
+            });
+
+            attachBtn.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent arg0) {
+
+                    int channel = chnComboBox.getSelectedIndex();
+
+                    if (!VideoStateSummaryModule.channelAttached(channel)) {
+                        if (VideoStateSummaryModule.attachVideoStatSummary(channel, humanNumberStatisticCB)) {
+                            setAttachBtnTextEnable();
+                        } else {
+                            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+                        }
+                    } else {
+                        if (VideoStateSummaryModule.detachVideoStatSummary(channel)) {
+                            setAttachBtnTextDisable();
+                            SummaryInfo info = new SummaryInfo();
+                            info.nChannelID = channel;
+                            EventDisplay.dataList.add(channel, info);
+                            EventDisplay.dataList.remove(channel + 1);
+                            EventDisplay.setEventInfo(groupInfoTable, EventDisplay.dataList);
+                        } else {
+                            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+                        }
+                    }
+                }
+            });
+
+            // 添加下拉框事件监听器
+            chnComboBox.addItemListener(new ItemListener() {
+                @Override
+                public void itemStateChanged(ItemEvent e) {
+                    if (e.getStateChange() == ItemEvent.SELECTED) {
+                        int channel = chnComboBox.getSelectedIndex();
+                        if (VideoStateSummaryModule.channelAttached(channel)) {
+                            setAttachBtnTextEnable();
+                        } else {
+                            setAttachBtnTextDisable();
+                        }
+                    }
+                }
+            });
+
+            clearBtn.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    clearSummaryInfo();
+                }
+            });
+        }
+    }
+
+    private static void setRealPlayBtnTextEnable() {
+        b_RealPlay = true;
+        realPlayBtn.setText(Res.string().getStopRealPlay());
+    }
+
+    private static void setRealPlayBtnTextDisable() {
+        b_RealPlay = false;
+        realPlayBtn.setText(Res.string().getStartRealPlay());
+    }
+
+    private static void setAttachBtnTextEnable() {
+        b_Attachment = VideoStateSummaryModule.getM_hAttachMap().size() > 0;
+        attachBtn.setText(Res.string().getDetach());
+    }
+
+    private static void setAttachBtnTextDisable() {
+        b_Attachment = VideoStateSummaryModule.getM_hAttachMap().size() > 0;
+        attachBtn.setText(Res.string().getAttach());
+    }
+
+    private static void setButtonEnable(boolean bln) {
+        realPlayWindow.setEnabled(bln);
+        chnComboBox.setEnabled(bln);
+        streamComboBox.setEnabled(bln);
+        realPlayBtn.setEnabled(bln);
+        attachBtn.setEnabled(bln);
+        clearBtn.setEnabled(bln);
+    }
+
+    // 启用/禁用 Container 内所有组件
+    public static void setEnableAllInnerComponent(Component container, boolean enable) {
+        for (Component component : getComponents(container)) {
+            component.setEnabled(enable);
+        }
+    }
+
+    // 获取 Swing Container 内所有的非 Container 组件
+    public static Component[] getComponents(Component container) {
+        ArrayList<Component> list = null;
+
+        try {
+            list = new ArrayList<Component>(Arrays.asList(
+                    ((Container) container).getComponents()));
+            for (int index = 0; index < list.size(); index++) {
+                list.addAll(Arrays.asList(getComponents(list.get(index))));
+            }
+        } catch (ClassCastException e) {
+            list = new ArrayList<Component>();
+        }
+
+        return list.toArray(new Component[0]);
+    }
+
+    private void clearSummaryInfo() {
+        VideoStateSummaryModule.clearVideoStateSummary(chnComboBox.getSelectedIndex());
+    }
+
+    /*
+     * 二级面板:预览面板
+     */
+    private class RealPanel extends JPanel {
+        private static final long serialVersionUID = 1L;
+
+        public RealPanel() {
+            BorderEx.set(this, Res.string().getRealplay(), 2);
+            Dimension dim = this.getPreferredSize();
+            dim.width = 420;
+            this.setPreferredSize(dim);
+            this.setLayout(new BorderLayout());
+
+            realPlayPanel = new JPanel();
+            add(realPlayPanel, BorderLayout.CENTER);
+
+            /************ 预览面板 **************/
+            realPlayPanel.setLayout(new BorderLayout());
+            realPlayPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+            realPlayWindow = new Panel();
+            realPlayWindow.setBackground(Color.GRAY);
+            realPlayWindow.setSize(480, 480);
+            realPlayPanel.add(realPlayWindow, BorderLayout.CENTER);
+        }
+    }
+
+    // 预览
+    public static void realPlay() {
+        if (!b_RealPlay) {
+            m_hPlayHandle = RealPlayModule.startRealPlay(
+                    chnComboBox.getSelectedIndex(),
+                    streamComboBox.getSelectedIndex() == 0 ? 0 : 3,
+                    realPlayWindow);
+
+            if (m_hPlayHandle.longValue() != 0) {     // 正常状态下句柄不为空
+                TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 1); // 开启规则框
+                realPlayWindow.repaint();
+                chnComboBox.setEnabled(false);
+                streamComboBox.setEnabled(false);
+                setRealPlayBtnTextEnable();
+            }
+        } else {
+            stopRealPlay();
+        }
+    }
+
+    public static void stopRealPlay() {
+        RealPlayModule.stopRealPlay(m_hPlayHandle);   // 为空则说明失败,退出拉流
+        TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 0); // 关闭规则框
+        realPlayWindow.repaint();
+        chnComboBox.setEnabled(true);
+        streamComboBox.setEnabled(true);
+        setRealPlayBtnTextDisable();
+    }
+
+    // 搜索数据列表
+    public class GroupListPanel extends JPanel {
+
+        private Object[][] statisticData = null;    // 人脸库列表
+
+        private final String[] groupName = {
+                Res.string().getHumanNumberStatisticEventChannel(),
+                Res.string().getHumanNumberStatisticEventTime(),
+                Res.string().getHumanNumberStatisticEventHourIn(),
+                Res.string().getHumanNumberStatisticEventTodayIn(),
+                Res.string().getHumanNumberStatisticEventTotalIn(),
+                Res.string().getHumanNumberStatisticEventHourOut(),
+                Res.string().getHumanNumberStatisticEventTodayOut(),
+                Res.string().getHumanNumberStatisticEventTotalOut()
+        };
+        private DefaultTableModel groupInfoModel;
+
+        public GroupListPanel() {
+            BorderEx.set(this, Res.string().getHumanNumberStatisticEventTitle(), 2);
+            setLayout(new BorderLayout());
+
+            statisticData = new Object[32][9];
+            creatGroupInfoPanel(32);
+        }
+
+        private void creatGroupInfoPanel(int listSize) {
+            statisticData = new Object[listSize][9];    // 人脸库列表集合修改
+            groupInfoModel = new DefaultTableModel(statisticData, groupName);
+            groupInfoTable = new JTable(groupInfoModel) {
+                @Override    // 不可编辑
+                public boolean isCellEditable(int row, int column) {
+                    return false;
+                }
+            };
+
+            groupInfoTable.getColumnModel().getColumn(0).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(1).setPreferredWidth(80);
+            groupInfoTable.getColumnModel().getColumn(2).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(3).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(4).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(5).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(6).setPreferredWidth(10);
+            groupInfoTable.getColumnModel().getColumn(7).setPreferredWidth(10);
+
+            groupInfoTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+
+            // 列表显示居中
+            DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+            dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+            groupInfoTable.setDefaultRenderer(Object.class, dCellRenderer);
+
+            scrollPane = new JScrollPane(groupInfoTable);
+            this.add(scrollPane, BorderLayout.CENTER);
+        }
+    }
+
+    // 人数统计回调事件
+    public static fHumanNumberStatisticCallBack humanNumberStatisticCB = fHumanNumberStatisticCallBack.getInstance();
+
+    public static class fHumanNumberStatisticCallBack implements NetSDKLib.fVideoStatSumCallBack {
+
+        private static fHumanNumberStatisticCallBack instance = new fHumanNumberStatisticCallBack();
+
+        public static fHumanNumberStatisticCallBack getInstance() {
+            return instance;
+        }
+
+        private EventTaskCommonQueue eventTaskQueue = new EventTaskCommonQueue();
+
+        public fHumanNumberStatisticCallBack() {
+            eventTaskQueue.init();
+        }
+
+        public void invoke(NetSDKLib.LLong lAttachHandle, NetSDKLib.NET_VIDEOSTAT_SUMMARY stVideoState, int dwBufLen, Pointer dwUser) {
+
+            SummaryInfo summaryInfo = new SummaryInfo(
+                    stVideoState.nChannelID, stVideoState.stuTime.toStringTime(),
+                    stVideoState.stuEnteredSubtotal.nToday,
+                    stVideoState.stuEnteredSubtotal.nHour,
+                    stVideoState.stuEnteredSubtotal.nTotal,
+                    stVideoState.stuExitedSubtotal.nToday,
+                    stVideoState.stuExitedSubtotal.nHour,
+                    stVideoState.stuExitedSubtotal.nTotal);
+            System.out.printf("Channel[%d] GetTime[%s]\n" +
+                            "People In  Information[Total[%d] Hour[%d] Today[%d]]\n" +
+                            "People Out Information[Total[%d] Hour[%d] Today[%d]]\n",
+                    summaryInfo.nChannelID, summaryInfo.eventTime,
+                    summaryInfo.enteredTotal, summaryInfo.enteredHour, summaryInfo.enteredToday,
+                    summaryInfo.exitedTotal, summaryInfo.exitedHour, summaryInfo.exitedToday);
+            eventTaskQueue.addEvent(new EventDisplay(summaryInfo));
+        }
+    }
+
+    private static class SummaryInfo {
+
+        public int nChannelID;
+        public String eventTime;
+        public int enteredToday;
+        public int enteredHour;
+        public int enteredTotal;
+        public int exitedToday;
+        public int exitedHour;
+        public int exitedTotal;
+
+        public SummaryInfo() {
+        }
+
+        public SummaryInfo(int nChannelID, String eventTime,
+                           int enteredToday, int enteredHour,
+                           int enteredTotal, int exitedToday,
+                           int exitedHour, int exitedTotal) {
+            this.nChannelID = nChannelID;
+            this.eventTime = eventTime;
+            this.enteredToday = enteredToday;
+            this.enteredHour = enteredHour;
+            this.enteredTotal = enteredTotal;
+            this.exitedToday = exitedToday;
+            this.exitedHour = exitedHour;
+            this.exitedTotal = exitedTotal;
+        }
+
+    }
+
+    private static class EventDisplay implements EventTaskHandler {
+
+        private static List<SummaryInfo> dataList = new LinkedList<SummaryInfo>();
+
+        private int getMaxSize() {
+            int channelNum = LoginModule.m_stDeviceInfo.byChanNum;
+            return Math.max(channelNum, 32);
+        }
+
+        private static final Object lockObj = new Object();
+
+        private final SummaryInfo summaryInfo;
+
+        public EventDisplay(SummaryInfo Info) {
+            this.summaryInfo = Info;
+        }
+
+        @Override
+        public void eventTaskProcess() {
+            InsertOrUpdateEventInfo(summaryInfo);
+        }
+
+        private void InsertOrUpdateEventInfo(SummaryInfo summaryInfo) {
+
+            synchronized (lockObj) {
+                dataList.add(summaryInfo.nChannelID, summaryInfo);
+                dataList.remove(summaryInfo.nChannelID + 1);
+                if (dataList.size() > getMaxSize()) {
+                    dataList.remove(getMaxSize());
+                }
+                setEventInfo(groupInfoTable, dataList);
+            }
+        }
+
+        private static void setEventInfo(JTable groupInfoTable, List<SummaryInfo> dataList) {
+            clearTableModel(groupInfoTable);
+
+            for (int i = 0; i < dataList.size(); i++) {
+                groupInfoTable.setValueAt(dataList.get(i).nChannelID + 1, i, 0);
+                groupInfoTable.setValueAt(dataList.get(i).eventTime, i, 1);
+                groupInfoTable.setValueAt(dataList.get(i).enteredHour, i, 2);
+                groupInfoTable.setValueAt(dataList.get(i).enteredToday, i, 3);
+                groupInfoTable.setValueAt(dataList.get(i).enteredTotal, i, 4);
+                groupInfoTable.setValueAt(dataList.get(i).exitedHour, i, 5);
+                groupInfoTable.setValueAt(dataList.get(i).exitedToday, i, 6);
+                groupInfoTable.setValueAt(dataList.get(i).exitedTotal, i, 7);
+            }
+
+        }
+
+        // 清空 DefaultTableModel
+        public static void clearTableModel(JTable jTableModel) {
+            int rowCount = jTableModel.getRowCount();
+            int columnCount = jTableModel.getColumnCount();
+            //清空DefaultTableModel中的内容
+            for (int i = 0; i < rowCount; i++)//表格中的行数
+            {
+                for (int j = 0; j < columnCount; j++) {//表格中的列数
+                    jTableModel.setValueAt(" ", i, j);//逐个清空
+                }
+            }
+        }
+
+        private static void clearEventInfoList() {
+            synchronized (lockObj) {
+                dataList.clear();
+                setEventInfo(groupInfoTable, dataList);
+            }
+        }
+
+    }
+
+    /////////////////////////////// 界面控件定义  ////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////
+
+    /**********************************************************************
+     * 主界面窗口(mainFrame): mainFrame
+     *     1) 登录(login): loginPanel
+     *     2) 人数事件统计(humanStatistic): humanStatisticPanel
+     *        (1) 控制面板(HumanStatisticAttach): HumanStatisticControlPanel
+     *        (2) 预览(realPlay): realPanel
+     *        (3) 事件信息展示面板(eventInfo): groupListPanel
+     **********************************************************************/
+
+    ///////////////////// 主面板 /////////////////////
+
+    private static JFrame mainFrame = new JFrame();
+
+    ///////////////////// 一级面板 /////////////////////
+
+    /* 登录面板 */
+    private LoginPanel loginPanel;
+
+    /* 人数统计面板 */
+    private HumanStatisticPanel humanStatisticPanel;
+
+    ///////////////////// 二级面板 /////////////////////
+
+    /* 人数统计面板 */
+    private HumanStatisticControlPanel humanStatisticAttachPanel;
+    private Panel controlPanel;
+    private JLabel chnLabel;
+    private static JComboBox chnComboBox;
+    private JLabel streamLabel;
+    private static JComboBox streamComboBox;
+    private static JButton realPlayBtn;
+    private static JButton attachBtn;
+    private static JButton clearBtn;
+
+    /* 实时预览面板 */
+    private RealPanel realPanel;
+    private JPanel realPlayPanel;
+    private static Panel realPlayWindow;
+
+
+    /* 事件数据展示面板 */
+    private static JTable groupInfoTable;
+    private GroupListPanel groupListPanel;
+    private JScrollPane scrollPane;
+}
+
+public class HumanNumberStatistic {
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                HumanNumberStatisticFrame demo = new HumanNumberStatisticFrame();
+                demo.setVisible(true);
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Main.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Main.java
new file mode 100644
index 0000000..af3b2bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Main.java
@@ -0,0 +1,23 @@
+package com.netsdk.demo.frame;
+
+import javax.swing.SwingUtilities;
+
+import com.netsdk.common.SwitchLanguage;
+import com.netsdk.lib.NetSDKLib;
+
+
+public class Main {  
+	public static void main(String[] args) {
+		SwingUtilities.invokeLater(new Runnable() {
+			@Override
+			public void run() {
+				if(NetSDKLib.NETSDK_INSTANCE != null
+					&& NetSDKLib.CONFIG_INSTANCE != null) {
+					System.setProperty("java.awt.im.style", "on-the-spot"); // 去除中文输入弹出框
+					SwitchLanguage demo = new SwitchLanguage();
+					demo.setVisible(true);
+				}
+			}
+		});	
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/PTZControl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/PTZControl.java
new file mode 100644
index 0000000..dcd4142
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/PTZControl.java
@@ -0,0 +1,956 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Panel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Vector;
+
+import javax.imageio.ImageIO;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.*;
+import com.netsdk.lib.NetSDKLib.LLong;
+
+import com.sun.jna.CallbackThreadInitializer;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+/**
+ * 实时预览Demo
+ */
+class PTZControlFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+	
+	private Vector<String> chnlist = new Vector<String>(); 
+
+	private boolean b_realplay = false;
+
+	// 设备断线通知回调
+	private static DisConnect disConnect       = new DisConnect(); 
+	
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// 预览句柄
+	public static LLong m_hPlayHandle = new LLong(0);
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();   
+	
+	public PTZControlFrame() {
+	    setTitle(Res.string().getPTZ());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 560);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new LoginPanel();
+	    realPanel = new RealPanel();
+	    ptz_picPanel = new PTZ_PICPanel();
+	    
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(realPanel, BorderLayout.CENTER);
+	    add(ptz_picPanel, BorderLayout.EAST);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getPTZ());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		RealPlayModule.stopRealPlay(m_hPlayHandle);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	// 登录
+	public boolean login() {
+		Native.setCallbackThreadInitializer(m_SnapReceiveCB, 
+										    new CallbackThreadInitializer(false, false, "snapPicture callback thread")); 
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			loginPanel.setButtonEnable(true);
+			setButtonEnable(true);
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBox.setModel(new DefaultComboBoxModel(chnlist));
+		
+			CapturePictureModule.setSnapRevCallBack(m_SnapReceiveCB);		
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	// 登出
+	public void logout() {
+		RealPlayModule.stopRealPlay(m_hPlayHandle);
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		setButtonEnable(false);
+		realPlayWindow.repaint();    
+		pictureShowWindow.setOpaque(true);
+		pictureShowWindow.repaint();
+		
+		b_realplay = false;
+		realplayBtn.setText(Res.string().getStartRealPlay());
+		
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnlist.clear();
+		}
+		
+		chnComboBox.setModel(new DefaultComboBoxModel());
+	}
+	
+	/*
+	 * 预览界面通道、码流设置  以及抓图面板
+	 */
+	private class RealPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanel() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanel = new Panel();
+			realplayPanel = new JPanel();
+			
+			add(channelPanel, BorderLayout.SOUTH);
+			add(realplayPanel, BorderLayout.CENTER);
+			
+			/************ 预览面板 **************/
+			realplayPanel.setLayout(new BorderLayout());
+			realplayPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindow = new Panel();
+			realPlayWindow.setBackground(Color.GRAY);
+			realplayPanel.add(realPlayWindow, BorderLayout.CENTER);
+			
+			/************ 通道、码流面板 **************/
+			chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBox = new JComboBox();	 			
+
+			streamLabel = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBox = new JComboBox(stream);	 
+			
+			realplayBtn = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanel.setLayout(new FlowLayout());			
+			channelPanel.add(chnlabel);
+			channelPanel.add(chnComboBox);
+			channelPanel.add(streamLabel);
+			channelPanel.add(streamComboBox);
+			channelPanel.add(realplayBtn);
+			
+			chnComboBox.setPreferredSize(new Dimension(90, 20)); 
+			streamComboBox.setPreferredSize(new Dimension(90, 20)); 
+			realplayBtn.setPreferredSize(new Dimension(120, 20)); 
+		    
+			realPlayWindow.setEnabled(false);
+ 			chnComboBox.setEnabled(false);
+			streamComboBox.setEnabled(false);
+			realplayBtn.setEnabled(false);
+		    
+			realplayBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realplay();
+				}
+			});
+		}
+	}
+	
+	// 预览
+	public void realplay() {
+		if(!b_realplay) {
+			m_hPlayHandle = RealPlayModule.startRealPlay(chnComboBox.getSelectedIndex(), 
+				    streamComboBox.getSelectedIndex()==0? 0:3,
+					realPlayWindow);
+			if(m_hPlayHandle.longValue() != 0) {
+				realPlayWindow.repaint();
+				b_realplay = true;
+				chnComboBox.setEnabled(false);
+				streamComboBox.setEnabled(false);
+				realplayBtn.setText(Res.string().getStopRealPlay());
+			} 
+		} else {
+			RealPlayModule.stopRealPlay(m_hPlayHandle);
+			realPlayWindow.repaint();
+			b_realplay = false;
+			chnComboBox.setEnabled(true);
+			streamComboBox.setEnabled(true);
+			realplayBtn.setText(Res.string().getStartRealPlay());
+		}	
+	}
+	
+	/*
+	 * 抓图显示与云台控制面板
+	 */
+	private class PTZ_PICPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public PTZ_PICPanel() {
+			setLayout(new BorderLayout());
+			Dimension dim = getPreferredSize();
+			dim.width = 320;
+			setPreferredSize(dim);
+			
+			picPanel = new PICPanel(); // 图片显示面板
+			ptzPanel = new PTZPanel(); // 云台面板
+			
+			add(picPanel, BorderLayout.CENTER);
+			add(ptzPanel, BorderLayout.SOUTH);
+		}
+	}
+	
+	/*
+	 * 抓图显示面板
+	 */
+	private class PICPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public PICPanel() {
+			BorderEx.set(this, Res.string().getCapturePicture(), 2);
+			setLayout(new BorderLayout());
+			
+			pictureShowPanel = new JPanel();  
+			snapPanel = new JPanel();
+			
+			add(pictureShowPanel, BorderLayout.CENTER);
+			add(snapPanel, BorderLayout.SOUTH);
+			
+			/************** 抓图按钮 ************/
+			snapPanel.setLayout(new BorderLayout());
+			snapPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			snapBtn = new JButton(Res.string().getRemoteCapture());
+			snapBtn.setPreferredSize(new Dimension(40, 23));
+			snapPanel.add(snapBtn, BorderLayout.CENTER);
+			snapBtn.setEnabled(false);
+			
+			/************** 图片显示 ************/
+			pictureShowPanel.setLayout(new BorderLayout());
+			pictureShowPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			pictureShowWindow = new PaintPanel();
+			pictureShowPanel.add(pictureShowWindow, BorderLayout.CENTER);
+		    
+			snapBtn.addActionListener(new ActionListener() {	
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(!CapturePictureModule.remoteCapturePicture(chnComboBox.getSelectedIndex())) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 云台控制面板
+	 */
+	private class PTZPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public PTZPanel() {
+			BorderEx.set(this, Res.string().getPTZControl(), 2);
+			setPreferredSize(new Dimension(40, 205));
+			setLayout(new GridLayout(2, 1));
+			
+			directionPanel = new JPanel();
+			JPanel panel1 = new JPanel();
+			JPanel panel2 = new JPanel();
+			ptzCtrlPanel = new JPanel();
+			
+			add(directionPanel);
+			add(ptzCtrlPanel);
+			
+			directionPanel.setLayout(new BorderLayout());
+			
+			directionPanel.add(panel1, BorderLayout.NORTH);
+			directionPanel.add(panel2, BorderLayout.CENTER);
+			
+			/*************** 云台方向 **************/
+			panel1.setLayout(new BorderLayout());
+			panel1.setBorder(new EmptyBorder(0, 5, 0, 5));
+			
+			panel2.setLayout(new GridLayout(3, 3));
+			panel2.setBorder(new EmptyBorder(0, 5, 0, 5));
+			
+			leftUpBtn = new JButton(Res.string().getLeftUp());
+			upBtn = new JButton(Res.string().getUp());
+			rightUpBtn = new JButton(Res.string().getRightUp());
+			leftBtn = new JButton(Res.string().getLeft());
+			rightBtn = new JButton(Res.string().getRight());
+			leftDownBtn = new JButton(Res.string().getLeftDown());
+			downBtn = new JButton(Res.string().getDown());
+			rightDownBtn = new JButton(Res.string().getRightDown());
+			operateJLabel = new JLabel("", JLabel.CENTER);
+			
+			String[] speed = {Res.string().getSpeed() + " 1",
+							  Res.string().getSpeed() + " 2",
+							  Res.string().getSpeed() + " 3",
+							  Res.string().getSpeed() + " 4",
+							  Res.string().getSpeed() + " 5",
+							  Res.string().getSpeed() + " 6",
+							  Res.string().getSpeed() + " 7",
+							  Res.string().getSpeed() + " 8"};
+			
+			speedComboBox = new JComboBox(speed);
+			speedComboBox.setSelectedIndex(4);
+			speedComboBox.setPreferredSize(new Dimension(40, 21));
+			
+			panel1.add(speedComboBox, BorderLayout.CENTER);
+			
+			panel2.add(leftUpBtn);
+			panel2.add(upBtn);
+			panel2.add(rightUpBtn);
+			panel2.add(leftBtn);
+			panel2.add(operateJLabel);
+			panel2.add(rightBtn);
+			panel2.add(leftDownBtn);
+			panel2.add(downBtn);
+			panel2.add(rightDownBtn);
+			
+			leftUpBtn.setEnabled(false);
+			upBtn.setEnabled(false);
+			rightUpBtn.setEnabled(false);
+			leftBtn.setEnabled(false);
+			rightBtn.setEnabled(false);
+			leftDownBtn.setEnabled(false);
+			downBtn.setEnabled(false);
+			rightDownBtn.setEnabled(false);
+			speedComboBox.setEnabled(false);
+			
+			/*************** 变焦、变倍、光圈 **************/
+			ptzCtrlPanel.setLayout(new GridLayout(3, 2));
+			ptzCtrlPanel.setBorder(new EmptyBorder(15, 5, 5, 5));
+			zoomAddBtn = new JButton(Res.string().getZoomAdd());
+			zoomDecBtn = new JButton(Res.string().getZoomDec());
+			focusAddBtn = new JButton(Res.string().getFocusAdd());
+			focusDecBtn = new JButton(Res.string().getFocusDec());
+			irisAddBtn = new JButton(Res.string().getIrisAdd());
+			irisDecBtn = new JButton(Res.string().getIrisDec());
+			
+			ptzCtrlPanel.add(zoomAddBtn);
+			ptzCtrlPanel.add(zoomDecBtn);
+			ptzCtrlPanel.add(focusAddBtn);
+			ptzCtrlPanel.add(focusDecBtn);
+			ptzCtrlPanel.add(irisAddBtn);
+			ptzCtrlPanel.add(irisDecBtn);
+			
+			zoomAddBtn.setEnabled(false);
+			zoomDecBtn.setEnabled(false);
+			focusAddBtn.setEnabled(false);
+			focusDecBtn.setEnabled(false);
+			irisAddBtn.setEnabled(false);
+			irisDecBtn.setEnabled(false);
+			
+			// 向上
+			upBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlUpStart(chnComboBox.getSelectedIndex(), 
+											0, 
+											speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlUpEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+
+			
+			// 向下
+			downBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlDownStart(chnComboBox.getSelectedIndex(), 
+											0, 
+											speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}	
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlDownEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+
+			
+			// 向左
+			leftBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlLeftStart(chnComboBox.getSelectedIndex(), 
+											0, 
+											speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlLeftEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 向右
+			rightBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlRightStart(chnComboBox.getSelectedIndex(), 
+											0, 
+											speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlRightEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 向左上
+			leftUpBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlLeftUpStart(chnComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlLeftUpEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 向右上
+			rightUpBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlRightUpStart(chnComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}			
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlRightUpEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 向左下
+			leftDownBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlLeftDownStart(chnComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlLeftDownEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			  
+			// 向右下
+			rightDownBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlRightDownStart(chnComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex(), 
+												speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlRightDownEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 变倍+
+			zoomAddBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlZoomAddStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlZoomAddEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 变倍-
+			zoomDecBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlZoomDecStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}			
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlZoomDecEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 变焦+
+			focusAddBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlFocusAddStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlFocusAddEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 变焦-
+			focusDecBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlFocusDecStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}			
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlFocusDecEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 光圈+
+			irisAddBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlIrisAddStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}		
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlIrisAddEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+			
+			// 光圈-
+			irisDecBtn.addMouseListener(new MouseListener() {			
+				@Override
+				public void mouseExited(MouseEvent e) {		
+				}	
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}			
+				@Override
+				public void mouseClicked(MouseEvent e) {
+				}
+				@Override
+				public void mousePressed(MouseEvent e) {
+					if(PtzControlModule.ptzControlIrisDecStart(chnComboBox.getSelectedIndex(), 
+												 speedComboBox.getSelectedIndex())) {
+						operateJLabel.setText(Res.string().getSucceed());
+					} else {
+						operateJLabel.setText(Res.string().getFailed());
+					}			
+				}
+				@Override
+				public void mouseReleased(MouseEvent e) {	
+					PtzControlModule.ptzControlIrisDecEnd(chnComboBox.getSelectedIndex());
+					operateJLabel.setText("");
+				}
+			});
+		}
+	}
+
+	public fSnapReceiveCB  m_SnapReceiveCB = new fSnapReceiveCB();
+	public class fSnapReceiveCB implements NetSDKLib.fSnapRev{
+		BufferedImage bufferedImage = null;
+		public void invoke( LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {	
+			if(pBuf != null && RevLen > 0) {			        
+				String strFileName = SavePath.getSavePath().getSaveCapturePath(); 
+
+				System.out.println("strFileName = " + strFileName);
+
+				byte[] buf = pBuf.getByteArray(0, RevLen);
+				ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
+				try {
+					bufferedImage = ImageIO.read(byteArrInput);
+					if(bufferedImage == null) {
+						return;
+					}
+					ImageIO.write(bufferedImage, "jpg", new File(strFileName));	
+				} catch (IOException e) {
+					e.printStackTrace();
+				}	
+				
+				// 界面显示抓图	 
+				SwingUtilities.invokeLater(new Runnable() {	
+					@Override
+					public void run() {			
+						pictureShowWindow.setOpaque(false);
+						pictureShowWindow.setImage(bufferedImage);
+						pictureShowWindow.repaint();				
+					}
+				});
+			}
+		}
+	}
+	
+	private void setButtonEnable(boolean bln) {
+	    snapBtn.setEnabled(bln);
+		leftUpBtn.setEnabled(bln);
+		upBtn.setEnabled(bln);
+		rightUpBtn.setEnabled(bln);
+		leftBtn.setEnabled(bln);
+		rightBtn.setEnabled(bln);
+		leftDownBtn.setEnabled(bln);
+		downBtn.setEnabled(bln);
+		rightDownBtn.setEnabled(bln);
+		zoomAddBtn.setEnabled(bln);
+		zoomDecBtn.setEnabled(bln);
+		focusAddBtn.setEnabled(bln);
+		focusDecBtn.setEnabled(bln);
+		irisAddBtn.setEnabled(bln);
+		irisDecBtn.setEnabled(bln);		  
+		speedComboBox.setEnabled(bln);
+		realPlayWindow.setEnabled(bln);
+		chnComboBox.setEnabled(bln);
+		streamComboBox.setEnabled(bln);
+		realplayBtn.setEnabled(bln);
+	}
+	
+	/*
+	 * 登录
+	 */
+	private LoginPanel loginPanel;	
+	
+	/*
+	 * 预览
+	 */
+    private RealPanel realPanel;
+    private JPanel realplayPanel;
+    private Panel realPlayWindow;
+    private Panel channelPanel;
+    
+    private JLabel chnlabel;
+    private JComboBox chnComboBox;	
+    private JLabel streamLabel;
+    private JComboBox streamComboBox;
+    private JButton realplayBtn;
+    private JButton snapBtn;
+    
+    /*
+     * 抓图与云台
+     */
+    private PTZ_PICPanel ptz_picPanel;
+	private PICPanel picPanel;
+	private JPanel pictureShowPanel;
+	private JPanel snapPanel;
+	private PaintPanel pictureShowWindow;
+	
+    /*
+     * 云台
+     */
+    private PTZPanel ptzPanel;
+	private JPanel directionPanel;
+	private JPanel ptzCtrlPanel;
+	private JButton leftUpBtn;
+	private JButton upBtn;
+	private JButton rightUpBtn;
+	private JButton leftBtn;
+	private JButton rightBtn;
+	private JButton leftDownBtn;
+	private JButton downBtn;
+	private JButton rightDownBtn;
+	private JComboBox speedComboBox;
+	private JLabel operateJLabel;
+	
+	private JButton zoomAddBtn;
+	private JButton zoomDecBtn;
+	private JButton focusAddBtn;
+	private JButton focusDecBtn;
+	private JButton irisAddBtn;
+	private JButton irisDecBtn;
+}
+
+public class PTZControl {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				PTZControlFrame demo = new PTZControlFrame();	
+				demo.setVisible(true);
+			}
+		});		
+	}
+}
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealPlay.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealPlay.java
new file mode 100644
index 0000000..a22c98c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealPlay.java
@@ -0,0 +1,420 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.*;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+class RealPlayFrame extends JFrame{
+	private static final long serialVersionUID = 1L;
+	
+	private Vector<String> chnlist = new Vector<String>(); 
+
+	private boolean isrealplayOne = false;
+	private boolean isrealplayTwo = false;
+
+	// 设备断线通知回调
+	private static DisConnect disConnect       = new DisConnect(); 
+	
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// 预览句柄
+	public static LLong m_hPlayHandleOne = new LLong(0);
+	
+	public static LLong m_hPlayHandleTwo = new LLong(0);
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();   
+	
+	public RealPlayFrame() {
+	    setTitle(Res.string().getRealplay());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 560);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new LoginPanel();
+	    realPanel = new JPanel();
+	    
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(realPanel, BorderLayout.CENTER);
+	    
+	    // 预览面板
+	    realPanelOne = new RealPanelOne();
+	    realPanelTwo = new RealPanelTwo();
+	    
+	    realPanel.setLayout(new GridLayout(1,  2));
+	    realPanel.add(realPanelOne);
+	    realPanel.add(realPanelTwo);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getRealplay() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getRealplay());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+	    		RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getRealplay() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getRealplay() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	// 登录
+	public boolean login() {
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			loginPanel.setButtonEnable(true);
+			setButtonEnable(true);
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBoxOne.setModel(new DefaultComboBoxModel(chnlist));
+			chnComboBoxTwo.setModel(new DefaultComboBoxModel(chnlist));
+			
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	// 登出
+	public void logout() {
+		RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+		RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		setButtonEnable(false);
+		realPlayWindowOne.repaint();    
+		realPlayWindowTwo.repaint();   
+
+		isrealplayOne = false;
+		realplayBtnOne.setText(Res.string().getStartRealPlay());
+		
+		isrealplayTwo = false;
+		realplayBtnTwo.setText(Res.string().getStartRealPlay());
+		
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnlist.clear();
+		}
+		
+		chnComboBoxOne.setModel(new DefaultComboBoxModel());
+		chnComboBoxTwo.setModel(new DefaultComboBoxModel());
+	}
+	
+	/*
+	 * 预览界面通道、码流设置  以及抓图面板
+	 */
+	private class RealPanelOne extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanelOne() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanelOne = new Panel();
+			realplayPanelOne = new JPanel();
+			
+			add(channelPanelOne, BorderLayout.NORTH);
+			add(realplayPanelOne, BorderLayout.CENTER);
+			
+			/************ 预览面板 **************/
+			realplayPanelOne.setLayout(new BorderLayout());
+			realplayPanelOne.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindowOne = new Panel();
+			realPlayWindowOne.setBackground(Color.GRAY);
+			realplayPanelOne.add(realPlayWindowOne, BorderLayout.CENTER);
+			
+			/************ 通道、码流面板 **************/
+			chnlabelOne = new JLabel(Res.string().getChn());
+			chnComboBoxOne = new JComboBox();	 			
+
+			streamLabelOne = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxOne = new JComboBox(stream);	 
+			
+			realplayBtnOne = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanelOne.setLayout(new FlowLayout());			
+			channelPanelOne.add(chnlabelOne);
+			channelPanelOne.add(chnComboBoxOne);
+			channelPanelOne.add(streamLabelOne);
+			channelPanelOne.add(streamComboBoxOne);
+			channelPanelOne.add(realplayBtnOne);
+			
+			chnComboBoxOne.setPreferredSize(new Dimension(80, 20)); 
+			streamComboBoxOne.setPreferredSize(new Dimension(95, 20)); 
+			realplayBtnOne.setPreferredSize(new Dimension(115, 20)); 
+		    
+			realPlayWindowOne.setEnabled(false);
+ 			chnComboBoxOne.setEnabled(false);
+			streamComboBoxOne.setEnabled(false);
+			realplayBtnOne.setEnabled(false);
+		    
+			realplayBtnOne.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realplayOne();
+				}
+			});
+		}
+	}
+	
+	// 预览
+	public void realplayOne() {
+		if(!isrealplayOne) {
+			m_hPlayHandleOne = RealPlayModule.startRealPlay(chnComboBoxOne.getSelectedIndex(), 
+				    streamComboBoxOne.getSelectedIndex()==0? 0:3,
+					realPlayWindowOne);
+			if(m_hPlayHandleOne.longValue() != 0) {
+				realPlayWindowOne.repaint();
+				isrealplayOne = true;
+				chnComboBoxOne.setEnabled(false);
+				streamComboBoxOne.setEnabled(false);
+				realplayBtnOne.setText(Res.string().getStopRealPlay());
+			} else {
+				JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		} else {
+			RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+			realPlayWindowOne.repaint();
+			isrealplayOne = false;
+			chnComboBoxOne.setEnabled(true);
+			streamComboBoxOne.setEnabled(true);
+			realplayBtnOne.setText(Res.string().getStartRealPlay());
+		}	
+	}
+	
+	
+	private class RealPanelTwo extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanelTwo() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanelTwo = new Panel();
+			realplayPanelTwo = new JPanel();
+			
+			add(channelPanelTwo, BorderLayout.NORTH);
+			add(realplayPanelTwo, BorderLayout.CENTER);
+			
+			/************ 预览面板 **************/
+			realplayPanelTwo.setLayout(new BorderLayout());
+			realplayPanelTwo.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindowTwo = new Panel();
+			realPlayWindowTwo.setBackground(Color.GRAY);
+			realplayPanelTwo.add(realPlayWindowTwo, BorderLayout.CENTER);
+			
+			/************ 通道、码流面板 **************/
+			chnlabelTwo = new JLabel(Res.string().getChn());
+			chnComboBoxTwo = new JComboBox();				
+
+			streamLabelTwo = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxTwo = new JComboBox(stream);	
+			
+			realplayBtnTwo = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanelTwo.setLayout(new FlowLayout());			
+			channelPanelTwo.add(chnlabelTwo);
+			channelPanelTwo.add(chnComboBoxTwo);
+			channelPanelTwo.add(streamLabelTwo);
+			channelPanelTwo.add(streamComboBoxTwo);
+			channelPanelTwo.add(realplayBtnTwo);
+			
+			chnComboBoxTwo.setPreferredSize(new Dimension(80, 20)); 
+			streamComboBoxTwo.setPreferredSize(new Dimension(95, 20)); 
+			realplayBtnTwo.setPreferredSize(new Dimension(115, 20)); 
+		    
+			realPlayWindowTwo.setEnabled(false);
+ 			chnComboBoxTwo.setEnabled(false);
+			streamComboBoxTwo.setEnabled(false);
+			realplayBtnTwo.setEnabled(false);
+		    
+			realplayBtnTwo.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realplayTwo();
+				}
+			});
+		}
+	}
+	
+	// 预览
+	public void realplayTwo() {
+		if(!isrealplayTwo) {
+			m_hPlayHandleTwo = RealPlayModule.startRealPlay(chnComboBoxTwo.getSelectedIndex(), 
+				    streamComboBoxTwo.getSelectedIndex()==0? 0:3,
+					realPlayWindowTwo);
+			if(m_hPlayHandleTwo.longValue() != 0) {
+				realPlayWindowTwo.repaint();
+				isrealplayTwo = true;
+				chnComboBoxTwo.setEnabled(false);
+				streamComboBoxTwo.setEnabled(false);
+				realplayBtnTwo.setText(Res.string().getStopRealPlay());
+			} else {
+				JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		} else {
+			RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+			realPlayWindowTwo.repaint();
+			isrealplayTwo = false;
+			chnComboBoxTwo.setEnabled(true);
+			streamComboBoxTwo.setEnabled(true);
+			realplayBtnTwo.setText(Res.string().getStartRealPlay());
+		}	
+	}
+	private void setButtonEnable(boolean bln) {
+		realPlayWindowOne.setEnabled(bln);
+		chnComboBoxOne.setEnabled(bln);
+		streamComboBoxOne.setEnabled(bln);
+		realplayBtnOne.setEnabled(bln);
+		
+		realPlayWindowTwo.setEnabled(bln);
+		chnComboBoxTwo.setEnabled(bln);
+		streamComboBoxTwo.setEnabled(bln);
+		realplayBtnTwo.setEnabled(bln);
+	}
+	
+	/*
+	 * 登录
+	 */
+	private LoginPanel loginPanel;	
+	
+    private JPanel realPanel;
+    
+	/*
+	 * 预览
+	 */
+    private RealPanelOne realPanelOne;
+    private JPanel realplayPanelOne;
+    private Panel realPlayWindowOne;
+    private Panel channelPanelOne;
+    
+    private JLabel chnlabelOne;
+    private JComboBox chnComboBoxOne;	
+    private JLabel streamLabelOne;
+    private JComboBox streamComboBoxOne;
+    private JButton realplayBtnOne;
+
+    // 
+    private RealPanelTwo realPanelTwo;
+    private JPanel realplayPanelTwo;
+    private Panel realPlayWindowTwo;
+    private Panel channelPanelTwo;
+    
+    private JLabel chnlabelTwo;
+    private JComboBox chnComboBoxTwo;	
+    private JLabel streamLabelTwo;
+    private JComboBox streamComboBoxTwo;
+    private JButton realplayBtnTwo;
+}
+
+public class RealPlay {
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				RealPlayFrame demo = new RealPlayFrame();	
+				demo.setVisible(true);
+			}
+		});		
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealplayEx.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealplayEx.java
new file mode 100644
index 0000000..387f507
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/RealplayEx.java
@@ -0,0 +1,223 @@
+package com.netsdk.demo.frame;
+
+import java.io.File;
+
+import com.netsdk.common.CaseMenu;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.NET_DEVICEINFO_Ex;
+import java.util.Scanner;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+public class RealplayEx {
+	public static final NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE;
+	
+	// 登陆句柄
+    private LLong loginHandle = new LLong(0);
+    
+    // 预览预览句柄
+    private static LLong lRealHandle = new LLong(0);
+    
+    
+    // 设备信息扩展
+    private NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex();
+	
+	//private NET_TIME m_startTime = new NET_TIME(); // 开始时间
+	//private NET_TIME m_stopTime = new NET_TIME(); // 结束时间
+    
+	public void InitTest(){
+		// 初始化SDK库
+        netSdk.CLIENT_Init(DisConnectCallBack.getInstance(), null);
+
+        // 设置断线重连成功回调函数
+        netSdk.CLIENT_SetAutoReconnect(HaveReConnectCallBack.getInstance(), null);
+        
+        //打开日志,可选
+        NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
+        String logPath = new File(".").getAbsoluteFile().getParent() + File.separator + "sdk_log" + File.separator + "sdk.log";
+        setLog.bSetFilePath = 1;
+        System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
+        setLog.bSetPrintStrategy = 1;
+        setLog.nPrintStrategy = 0;
+        if (!netSdk.CLIENT_LogOpen(setLog)){
+            System.err.println("Open SDK Log Failed!!!");
+        }        
+
+	}
+	
+	public void Login(String m_strIp,int m_nPort,String m_strUser,String m_strPassword ){
+
+		 // 登陆设备
+        int nSpecCap = NetSDKLib.EM_LOGIN_SPAC_CAP_TYPE.EM_LOGIN_SPEC_CAP_TCP;    // TCP登入
+        IntByReference nError = new IntByReference(0);
+        loginHandle = netSdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser,
+        		m_strPassword ,nSpecCap, null, deviceInfo, nError);
+        if (loginHandle.longValue() != 0) {
+            System.out.printf("Login Device[%s] Success!\n", m_strIp);             
+        }
+        else {
+        	System.err.printf("Login Device[%s] Fail.Error[0x%x]\n", m_strIp, netSdk.CLIENT_GetLastError()); 
+            LoginOut();
+        }
+	}
+	public void realplay(){
+		lRealHandle= netSdk.CLIENT_RealPlayEx(loginHandle, 0, null, 0);
+        if(lRealHandle.longValue()!=0){
+        	System.out.println("realplay success");
+        	netSdk.CLIENT_SetRealDataCallBackEx(lRealHandle, CbfRealDataCallBackEx.getInstance(),null, 31);
+        }
+	}
+	
+	public void StopRealPlay(){
+		if(netSdk.CLIENT_StopRealPlayEx(lRealHandle)){
+			System.out.println("StopRealPlay success");
+		}
+	}
+	public void LoginOut(){
+		System.out.println("End Test");
+		
+		if( loginHandle.longValue() != 0)
+		{
+			netSdk.CLIENT_Logout(loginHandle);
+		}
+		System.out.println("See You...");
+		
+		netSdk.CLIENT_Cleanup();
+		System.exit(0);
+	}
+	
+	 public void RunTest(){
+			CaseMenu menu=new CaseMenu();
+			menu.addItem((new CaseMenu.Item(this , "realplay" , "realplay")));
+			menu.addItem((new CaseMenu.Item(this , "StopRealPlay" , "StopRealPlay")));
+			menu.run();
+		}
+	 /**
+     * 设备断线回调
+     */
+    private static class DisConnectCallBack implements NetSDKLib.fDisConnect {
+
+        private DisConnectCallBack() {
+        }
+
+        private static class CallBackHolder {
+            private static DisConnectCallBack instance = new DisConnectCallBack();
+        }
+
+        public static DisConnectCallBack getInstance() {
+            return CallBackHolder.instance;
+        }
+
+        public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+        }
+    }
+    
+    /**
+     * 设备重连回调
+     */
+    private static class HaveReConnectCallBack implements NetSDKLib.fHaveReConnect {
+        private HaveReConnectCallBack() {
+        }
+
+        private static class CallBackHolder {
+            private static HaveReConnectCallBack instance = new HaveReConnectCallBack();
+        }
+
+        public static HaveReConnectCallBack getInstance() {
+            return CallBackHolder.instance;
+        }
+
+        public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+        }
+    }
+    
+    /**
+     * 实时预览数据回调函数--扩展(pBuffer内存由SDK内部申请释放)
+     */
+    private static class CbfRealDataCallBackEx implements NetSDKLib.fRealDataCallBackEx {
+        private CbfRealDataCallBackEx() {
+        }
+
+        private static class CallBackHolder {
+            private static CbfRealDataCallBackEx instance = new CbfRealDataCallBackEx();
+        }
+
+        public static CbfRealDataCallBackEx getInstance() {
+            return CallBackHolder.instance;
+        }
+
+		@Override
+		public void invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer,
+				int dwBufSize, int param, Pointer dwUser) {
+			int bInput=0;
+			if(0 != lRealHandle.longValue())
+			{
+				switch(dwDataType) {
+				case 0:
+					System.out.println("码流大小为" + dwBufSize + "\n" + "码流类型为原始音视频混合数据");					
+					break;
+				case 1:
+					//标准视频数据
+					
+					break;
+				case 2:
+					//yuv 数据
+					
+					break;
+				case 3:
+					//pcm 音频数据
+					
+					break;
+				case 4:
+					//原始音频数据
+					
+					break;
+				default:
+					break;
+				}	
+			}
+		}
+    }
+    
+    public static void main(String []args){
+    	RealplayEx XM=new RealplayEx();
+        String ip = "172.23.12.231";
+        int port = 37777;
+        String username = "admin";
+        String password = "admin123";
+        Scanner scanner = new Scanner(System.in);
+        String defaultConfig = "ip:%s,port:%d,username:%s,password:%s,需要修改吗?(y/n)";
+        defaultConfig = String.format(defaultConfig, ip, port, username, password);
+        System.out.println(defaultConfig);
+        String answer = "";
+        do {
+            answer = scanner.nextLine();
+            if ("y".equalsIgnoreCase(answer) || "yes".equalsIgnoreCase(answer)) {
+                System.out.println("please input ip");
+                ip = scanner.nextLine().trim();
+                System.out.println("please input port:");
+                port = Integer.parseInt(scanner.nextLine());
+                System.out.println("please input username:");
+                username = scanner.nextLine().trim();
+                System.out.println("please input password:");
+                password = scanner.nextLine().trim();
+                break;
+            } else if ("n".equalsIgnoreCase(answer) || "no".equalsIgnoreCase(answer)) {
+                break;
+            }
+            System.out.println("please input the right word.y/yes/n/no,try again.");
+        } while (!(answer.equalsIgnoreCase("y")
+                || answer.equalsIgnoreCase("yes")
+                || answer.equalsIgnoreCase("no")
+                || answer.equalsIgnoreCase("n")));
+
+    	XM.InitTest();
+        XM.Login(ip,port,username,password);
+	    XM.RunTest();
+	    XM.LoginOut();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Talk.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Talk.java
new file mode 100644
index 0000000..436e09f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/Talk.java
@@ -0,0 +1,342 @@
+package com.netsdk.demo.frame;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.TalkModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * Talk Demo
+ */
+class TalkFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+
+	// device channel list
+	private Vector<String> chnlist = new Vector<String>();
+	
+	// device disconnect callback instance
+	private static DisConnect disConnect = new DisConnect(); 
+	
+	// talk frame (this)
+	private static JFrame frame = new JFrame();
+	
+	public TalkFrame() {
+	    setTitle(Res.string().getTalk());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(400, 450);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    LoginModule.init(disConnect, null);
+	    
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new TalkLoginPanel();
+	    talkPanel = new TalkPanel();
+	    
+	    add(loginPanel, BorderLayout.CENTER);
+	    add(talkPanel, BorderLayout.SOUTH);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getTalk() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getTalk());
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		TalkModule.stopTalk();
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////function///////////////////
+	// device disconnect callback class 
+	// set it's instance by call CLIENT_Init, when device disconnect sdk will call it.
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getTalk() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+
+	public boolean login() {
+
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+					Integer.parseInt(loginPanel.portTextArea.getText()), 
+					loginPanel.nameTextArea.getText(), 
+					new String(loginPanel.passwordTextArea.getPassword()))) {
+		
+				loginPanel.setButtonEnable(true);
+		
+				for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+					chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+				}
+				
+				talkPanel.talkEnable();
+								
+		}else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		
+		return true;
+	}
+
+	public void logout() {
+		TalkModule.stopTalk();
+		LoginModule.logout();
+		
+		loginPanel.setButtonEnable(false);
+		chnlist.clear();
+		talkPanel.initTalkEnable();
+	}
+	
+	private class TalkPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public TalkPanel() {
+			BorderEx.set(this, Res.string().getTalk(), 2);
+			setLayout(new GridLayout(3, 1));
+			setPreferredSize(new Dimension(350, 220));
+			
+			transmitPanel = new JPanel();
+			chnPanel = new JPanel();
+			talkBtnPanel = new JPanel();
+			
+			transmitLabel = new JLabel(Res.string().getTransmitType());
+			transmitLabel.setPreferredSize(new Dimension(100, 25));
+			transmitComboBox = new JComboBox();
+			transmitComboBox.setPreferredSize(new Dimension(150, 25));
+			transmitPanel.add(transmitLabel);
+			transmitPanel.add(transmitComboBox);
+			
+			chnlabel = new JLabel(Res.string().getTransmitChannel());
+			chnlabel.setPreferredSize(new Dimension(100, 25));
+			chnComboBox = new JComboBox();	
+			chnComboBox.setPreferredSize(new Dimension(150, 25)); 
+			chnPanel.add(chnlabel);
+			chnPanel.add(chnComboBox);
+			
+			startTalkBtn = new JButton(Res.string().getStartTalk());
+			startTalkBtn.setPreferredSize(new Dimension(100, 20));
+			JLabel nullLabel = new JLabel("      ");
+			stopTalkBtn = new JButton(Res.string().getStopTalk());
+			stopTalkBtn.setPreferredSize(new Dimension(100, 20));
+			talkBtnPanel.add(startTalkBtn);
+			talkBtnPanel.add(nullLabel);
+			talkBtnPanel.add(stopTalkBtn);
+			
+			add(transmitPanel);
+			add(chnPanel);
+			add(talkBtnPanel);
+		    
+			initTalkEnable();
+		    
+			startTalkBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					
+					if(TalkModule.startTalk(transmitComboBox.getSelectedIndex(), 
+							chnComboBox.getSelectedIndex())) {
+						setButtonEnable(false);
+					}else {
+						JOptionPane.showMessageDialog(null, Res.string().getTalkFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}
+			});
+			
+			stopTalkBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					
+					TalkModule.stopTalk();
+					setButtonEnable(true);
+				}
+			});
+			
+			transmitComboBox.addItemListener(new ItemListener() {			
+				@Override
+				public void itemStateChanged(ItemEvent e) {
+
+					if (e.getStateChange() == ItemEvent.SELECTED) {
+						if (transmitComboBox.getSelectedIndex() == 1) {
+							chnComboBox.setModel(new DefaultComboBoxModel(chnlist));
+							chnComboBox.setEnabled(true);
+						}else {
+							chnComboBox.setModel(new DefaultComboBoxModel());
+							chnComboBox.setEnabled(false);
+						}
+					}
+				}
+			});
+			
+		}
+		
+		public void talkEnable() {
+			
+			String[] transmit = {Res.string().getLocalTransmitType(), Res.string().getRemoteTransmitType()};
+			transmitComboBox.setModel(new DefaultComboBoxModel(transmit));
+			setButtonEnable(true);
+		}
+		
+		public void initTalkEnable() {
+			
+			chnComboBox.setModel(new DefaultComboBoxModel());
+			transmitComboBox.setModel(new DefaultComboBoxModel());
+			chnComboBox.setEnabled(false);
+ 			transmitComboBox.setEnabled(false);
+			startTalkBtn.setEnabled(false);
+			stopTalkBtn.setEnabled(false);
+		}
+
+		private void setButtonEnable(boolean bln) {
+			
+ 			transmitComboBox.setEnabled(bln);
+ 			if (bln && transmitComboBox.getSelectedIndex() == 1) {
+				chnComboBox.setEnabled(true);
+			}else {
+				chnComboBox.setEnabled(false);
+			}
+ 			startTalkBtn.setEnabled(bln);
+			stopTalkBtn.setEnabled(!bln);
+		}
+		
+		private JPanel transmitPanel;
+		private JPanel chnPanel;
+		private JPanel talkBtnPanel;
+	    private JLabel transmitLabel;
+	    private JComboBox transmitComboBox;
+	    private JLabel chnlabel;
+	    private JComboBox chnComboBox;	
+	    private JButton startTalkBtn;
+	    private JButton stopTalkBtn;
+	}
+
+	private class TalkLoginPanel extends LoginPanel {
+	
+		private static final long serialVersionUID = 1L;
+
+		public TalkLoginPanel() {
+			setLayout(new GridLayout(3, 1));
+			removeAll();
+			JPanel ipPanel = new JPanel();
+			JPanel userPanel = new JPanel();
+			JPanel btnPanel = new JPanel();
+			JLabel nullLabel = new JLabel("          ");
+			JLabel nullLabel1 = new JLabel("          ");
+			
+			resetSize();
+	
+			ipPanel.add(ipLabel);
+			ipPanel.add(ipTextArea);
+			ipPanel.add(portLabel);
+			ipPanel.add(portTextArea);
+			
+			userPanel.add(nameLabel);
+			userPanel.add(nameTextArea);
+			userPanel.add(passwordLabel);
+			userPanel.add(passwordTextArea);
+			    
+			btnPanel.add(nullLabel);
+			btnPanel.add(loginBtn);
+			btnPanel.add(nullLabel1);
+			btnPanel.add(logoutBtn);
+
+			add(ipPanel);
+			add(userPanel);
+			add(btnPanel);
+		}
+		
+		private void resetSize() {
+			
+			ipLabel.setPreferredSize(new Dimension(70, 20));
+			portLabel.setPreferredSize(new Dimension(70, 20));
+			nameLabel.setText(Res.string().getUserName());
+			nameLabel.setPreferredSize(new Dimension(70, 20));
+			passwordLabel.setPreferredSize(new Dimension(70, 20));
+
+			ipTextArea.setPreferredSize(new Dimension(90, 20));
+			portTextArea.setPreferredSize(new Dimension(90, 20));
+			nameTextArea.setPreferredSize(new Dimension(90, 20));
+			passwordTextArea.setPreferredSize(new Dimension(90, 20));
+		}
+	}
+	
+	private TalkLoginPanel loginPanel;
+	private TalkPanel talkPanel;
+	
+}
+
+public class Talk {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				TalkFrame demo = new TalkFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+};
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/AddPersonDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/AddPersonDialog.java
new file mode 100644
index 0000000..999d828
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/AddPersonDialog.java
@@ -0,0 +1,254 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.sun.jna.Memory;
+
+import com.netsdk.common.*;
+import com.netsdk.lib.ToolKits;
+
+public class AddPersonDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private Memory memory = null;
+	private String groupId = ""; 
+	private String groupName = "";
+	
+	private WindowCloseListener listener;
+	public void addWindowCloseListener(WindowCloseListener listener) {
+		this.listener = listener;
+	}
+	
+	/**
+	 * @param groupId 人脸库ID
+	 * @param groupName  人脸库名称
+	 */
+	public AddPersonDialog(String groupId, String groupName){
+		setTitle(Res.string().getAddPerson());
+		setLayout(new BorderLayout());
+	    setModal(true);   
+		pack();
+		setSize(520, 400);
+	    setResizable(false);
+	    setLocationRelativeTo(null); 
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+		
+		this.groupId = groupId;
+		this.groupName = groupName;
+		
+		FaceServerAddPanel faceServerAddPanel = new FaceServerAddPanel();
+        add(faceServerAddPanel, BorderLayout.CENTER);
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+	}
+	
+	public class FaceServerAddPanel extends JPanel{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public FaceServerAddPanel() {
+			BorderEx.set(this, "", 4);
+			setLayout(new BorderLayout());
+			
+			JPanel imagePanel = new JPanel();
+			JPanel personInfoPanel = new JPanel();
+			
+			Dimension dimension = this.getPreferredSize();
+			dimension.height = 400;
+			dimension.width = 250;
+			personInfoPanel.setPreferredSize(dimension);
+			
+			add(imagePanel, BorderLayout.CENTER);
+			add(personInfoPanel, BorderLayout.WEST);
+			
+			/////////// 添加的人脸图片面板 //////////////////
+			imagePanel.setLayout(new BorderLayout());
+			addImagePanel = new PaintPanel();   // 添加的人员信息图片显示
+			selectImageBtn = new JButton(Res.string().getSelectPicture());
+			imagePanel.add(addImagePanel, BorderLayout.CENTER);
+			imagePanel.add(selectImageBtn, BorderLayout.SOUTH);
+			
+			////////// 添加的人脸信息面板 /////////////////
+			personInfoPanel.setLayout(new FlowLayout());
+			JLabel goroupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER);
+			JLabel goroupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER);
+			JLabel nameLabel = new JLabel(Res.string().getName(), JLabel.CENTER);
+			JLabel sexLabel = new JLabel(Res.string().getSex(), JLabel.CENTER);
+			JLabel birthdayLabel = new JLabel(Res.string().getBirthday(), JLabel.CENTER);
+			JLabel idTypeLabel = new JLabel(Res.string().getIdType(), JLabel.CENTER);
+			JLabel idLabel = new JLabel(Res.string().getIdNo(), JLabel.CENTER);
+			
+			Dimension dimension2 = new Dimension();
+			dimension2.width = 80;
+			dimension2.height = 20;
+			goroupIdLabel.setPreferredSize(dimension2);
+			goroupNameLabel.setPreferredSize(dimension2);
+			nameLabel.setPreferredSize(dimension2);
+			sexLabel.setPreferredSize(dimension2);
+			idTypeLabel.setPreferredSize(dimension2);
+			idLabel.setPreferredSize(dimension2);
+			birthdayLabel.setPreferredSize(dimension2);		
+			
+			goroupIdTextField = new JTextField();
+			goroupNameTextField = new JTextField();
+			nameTextField = new JTextField();
+			sexComboBox = new JComboBox(Res.string().getSexStrings());
+			birthdayBtn = new DateChooserJButtonEx(); 
+			idTypeComboBox = new JComboBox(Res.string().getIdStrings());
+			idTextField = new JTextField();
+			birthdayCheckBox = new JCheckBox();
+			
+			addBtn = new JButton(Res.string().getAdd());
+			cancelBtn = new JButton(Res.string().getCancel());
+			
+			birthdayBtn.setStartYear(1900);
+			
+			Dimension dimension3 = new Dimension();
+			dimension3.width = 150;
+			dimension3.height = 20;
+				
+			sexComboBox.setPreferredSize(dimension3);	
+			idTypeComboBox.setPreferredSize(dimension3);
+			goroupIdTextField.setPreferredSize(dimension3);
+			goroupNameTextField.setPreferredSize(dimension3);
+			nameTextField.setPreferredSize(dimension3);
+			idTextField.setPreferredSize(dimension3);
+			birthdayBtn.setPreferredSize(new Dimension(130, 20));
+			birthdayCheckBox.setPreferredSize(new Dimension(20, 20));
+			addBtn.setPreferredSize(new Dimension(120, 20));
+			cancelBtn.setPreferredSize(new Dimension(120, 20));
+			
+			goroupIdTextField.setEditable(false);
+			goroupNameTextField.setEditable(false);
+			birthdayCheckBox.setSelected(true);
+			
+			goroupIdTextField.setText(groupId);
+			goroupNameTextField.setText(groupName);
+
+			personInfoPanel.add(goroupIdLabel);
+			personInfoPanel.add(goroupIdTextField);
+			personInfoPanel.add(goroupNameLabel);
+			personInfoPanel.add(goroupNameTextField);
+			personInfoPanel.add(nameLabel);
+			personInfoPanel.add(nameTextField);
+			personInfoPanel.add(sexLabel);
+			personInfoPanel.add(sexComboBox);
+			personInfoPanel.add(idTypeLabel);
+			personInfoPanel.add(idTypeComboBox);
+			personInfoPanel.add(idLabel);
+			personInfoPanel.add(idTextField);
+			personInfoPanel.add(birthdayLabel);
+			personInfoPanel.add(birthdayBtn);
+			personInfoPanel.add(birthdayCheckBox);	
+			personInfoPanel.add(addBtn);
+			personInfoPanel.add(cancelBtn);
+			
+			birthdayCheckBox.addChangeListener(new ChangeListener() {		
+				@Override
+				public void stateChanged(ChangeEvent arg0) {
+					if(birthdayCheckBox.isSelected()) {
+						birthdayBtn.setEnabled(true);
+					} else {
+						birthdayBtn.setEnabled(false);
+					}
+				}
+			});
+			
+			// 选择图片,获取图片的信息
+			selectImageBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					String picPath = "";
+					
+					// 选择图片,获取图片路径,并在界面显示
+					picPath = ToolKits.openPictureFile(addImagePanel);
+							
+					if(!picPath.equals("")) {
+						try {
+							memory = ToolKits.readPictureFile(picPath);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}
+			
+				}
+			});
+			
+			// 添加人员信息
+			addBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					boolean bRet = TargetRecognitionModule.addPerson(goroupIdTextField.getText(),
+																   memory, 
+															       nameTextField.getText(), 
+																   sexComboBox.getSelectedIndex(), 
+																   birthdayCheckBox.isSelected(), birthdayBtn.getText().toString(), 
+																   idTypeComboBox.getSelectedIndex(), idTextField.getText());
+	
+					if(bRet) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}	
+		
+					dispose();
+					
+					listener.windowClosing();										
+				}
+			});
+			
+			// 取消,关闭
+			cancelBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					dispose();						
+				}
+			});
+		}		 
+	}	
+
+	
+	// 添加人员信息窗口的组件
+	private PaintPanel addImagePanel;
+	private JButton selectImageBtn;
+	
+	private JTextField goroupIdTextField;
+	private JTextField goroupNameTextField;
+	private JTextField nameTextField;
+	private JComboBox sexComboBox;
+	private DateChooserJButtonEx birthdayBtn; 
+	private JComboBox idTypeComboBox;
+	private JTextField idTextField;
+	private JButton addBtn;
+	private JButton cancelBtn;
+	private JCheckBox birthdayCheckBox;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DispositionOperateDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DispositionOperateDialog.java
new file mode 100644
index 0000000..18bb354
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DispositionOperateDialog.java
@@ -0,0 +1,350 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.NET_FACERECONGNITION_GROUP_INFO;
+
+public class DispositionOperateDialog extends JDialog {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	// 通道列表
+	private Vector<String> chnlist = new Vector<String>(); 
+	
+	// 通道个数
+	private int nChn = LoginModule.m_stDeviceInfo.byChanNum;
+	
+	// 通道列表, 用于布控
+	private ArrayList< Integer> arrayList = new ArrayList<Integer>();
+	
+	// key:通道     value:相似度, 用于撤控
+	private HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
+	
+	String groupId = "";
+	String groupName = "";
+
+	public DispositionOperateDialog(String groupId, String groupName) {
+	    setTitle(Res.string().getDisposition() + "/" + Res.string().getDelDisposition());
+	    setLayout(new BorderLayout());
+	    setModal(true);   
+	    pack();
+	    setSize(450, 400);
+	    setResizable(false);
+	    setLocationRelativeTo(null); 
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+		for(int i = 1; i < nChn + 1; i++) {
+			chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+		}
+		
+		this.groupId = groupId;
+		this.groupName = groupName;
+		
+	    DispositionListPanel dispositionListPanel = new DispositionListPanel();
+	    DispositionInfoPanel dispositionInfoPanel = new DispositionInfoPanel();
+	    
+	    add(dispositionListPanel, BorderLayout.CENTER);
+	    add(dispositionInfoPanel, BorderLayout.NORTH);
+	    
+	    findChnAndSimilary();
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();
+	    	}
+	    });
+	}
+	
+	/*
+	 * 布控显示列表
+	 */
+	private class DispositionListPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		public DispositionListPanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new BorderLayout());
+			
+			JPanel panel = new JPanel();
+			JPanel panel2 = new JPanel();
+			JPanel panel3 = new JPanel();
+			
+			Dimension dimension = new Dimension();
+			dimension.width = 145;
+			panel.setPreferredSize(dimension);
+			panel.setLayout(new BorderLayout());
+			panel.add(panel2, BorderLayout.NORTH);
+			panel.add(panel3, BorderLayout.SOUTH);
+			
+			addBtn = new JButton(Res.string().getAdd());
+			refreshBtn = new JButton(Res.string().getFresh());
+			panel2.setLayout(new GridLayout(2, 1));
+			panel2.add(addBtn);
+			panel2.add(refreshBtn);
+			
+			dispositionBtn = new JButton(Res.string().getDisposition());
+			delDispositionBtn = new JButton(Res.string().getDelDisposition());
+			panel3.setLayout(new GridLayout(2, 1));
+			panel3.add(dispositionBtn);
+			panel3.add(delDispositionBtn);
+		
+			data = new Object[512][2];
+			defaultTableModel = new DefaultTableModel(data, Res.string().getDispositionTable());
+			table = new JTable(defaultTableModel){   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);
+			
+			add(new JScrollPane(table), BorderLayout.CENTER);
+			add(panel, BorderLayout.EAST);
+
+			// 添加通道和相似度到列表
+			addBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					boolean isExit = false;
+					
+					String chn = String.valueOf(chnComboBox.getSelectedIndex() + 1);
+					String similary = similaryTextField.getText();
+					
+					if(similaryTextField.getText().equals("") 
+							|| Integer.parseInt(similaryTextField.getText()) > 100) {						
+						JOptionPane.showMessageDialog(null, Res.string().getSimilarityRange(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);					
+						return;
+					}
+					
+					// 如果存在了通道号,列表修改相应的相似度
+					for(int i = 0; i < nChn; i++) {
+						if(chn.equals(String.valueOf(defaultTableModel.getValueAt(i, 0)).trim())) {
+							defaultTableModel.setValueAt(similary, i, 1);
+							isExit = true;
+							break;
+						}
+					}
+					
+					if(isExit) {
+						return;
+					}
+					
+					// 如果不存在通道号,按顺序添加人列表
+					for(int i = 0; i < nChn; i++) {
+						if(String.valueOf(defaultTableModel.getValueAt(i, 0)).trim().equals("") 
+								|| defaultTableModel.getValueAt(i, 0) == null) {
+							defaultTableModel.setValueAt(chn, i, 0);
+							defaultTableModel.setValueAt(similary, i, 1);
+							break;
+						}
+					}						
+				}
+			});
+			
+			// 刷新已布控的通道和相似度信息
+			refreshBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					findChnAndSimilary();			
+				}
+			});
+			
+			// 布控
+			dispositionBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					hashMap.clear();
+					
+					// 获取列表里的数据
+					for(int i = 0; i < nChn; i++) {
+						// 判断通道号是否为空
+						if(!String.valueOf(defaultTableModel.getValueAt(i, 0)).trim().equals("") 
+								&& defaultTableModel.getValueAt(i, 0) != null) {		
+							
+							// 判断相似度是否为空
+							if(!String.valueOf(defaultTableModel.getValueAt(i, 1)).trim().equals("") 
+								&& defaultTableModel.getValueAt(i, 1) != null) {
+								hashMap.put(Integer.parseInt(String.valueOf(defaultTableModel.getValueAt(i, 0)).trim()), 
+										Integer.parseInt(String.valueOf(defaultTableModel.getValueAt(i, 1)).trim()));
+							} else {
+								hashMap.put(Integer.parseInt(String.valueOf(defaultTableModel.getValueAt(i, 0)).trim()), 0);
+							}
+						} 
+					}
+					System.out.println("size:" + hashMap.size());
+					if(hashMap.size() == 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getAddDispositionInfo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);	
+						return;
+					}
+					
+					if(!TargetRecognitionModule.putDisposition(goroupIdTextField.getText(), hashMap)) {
+						JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);	
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+					
+					// 刷新列表
+					findChnAndSimilary();		
+				}
+			});
+			
+			delDispositionBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					arrayList.clear();
+					
+					// 获取所有选中行数
+					int[] rows = null;
+					rows = table.getSelectedRows();
+
+					if(rows == null) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectDelDispositionInfo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					// 获取所有选中,非空的通道号
+					for(int i = 0; i < rows.length; i++) {
+						if(!String.valueOf(defaultTableModel.getValueAt(rows[i], 0)).trim().equals("") 
+								&& defaultTableModel.getValueAt(rows[i], 0) != null) {
+							arrayList.add(Integer.parseInt(String.valueOf(defaultTableModel.getValueAt(rows[i], 0)).trim()));
+						}	
+					}
+					
+					if(arrayList.size() == 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectDelDispositionInfo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(!TargetRecognitionModule.delDisposition(goroupIdTextField.getText(), arrayList)) {
+						JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);	
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+					
+					// 刷新列表
+					findChnAndSimilary();				
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 布控信息	
+	 */
+	private class DispositionInfoPanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public DispositionInfoPanel() {	
+			BorderEx.set(this, "", 2);
+			setLayout(new FlowLayout());
+			
+			Dimension dimension = new Dimension();
+			dimension.height = 80;
+			setPreferredSize(dimension);
+			
+			JLabel goroupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER);
+			JLabel goroupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER);
+			JLabel chnLabel = new JLabel(Res.string().getChannel(), JLabel.CENTER);
+			JLabel similaryLabel = new JLabel(Res.string().getSimilarity(), JLabel.CENTER);
+			
+			goroupIdTextField = new JTextField();
+			goroupNameTextField = new JTextField();
+		    chnComboBox = new JComboBox(chnlist);	
+			similaryTextField = new JTextField();
+			
+			Dimension dimension1 = new Dimension();
+			dimension1.width = 80;
+			dimension1.height = 20;
+			goroupIdLabel.setPreferredSize(dimension1);
+			goroupNameLabel.setPreferredSize(dimension1);
+			chnLabel.setPreferredSize(dimension1);
+			similaryLabel.setPreferredSize(dimension1);
+			goroupIdTextField.setPreferredSize(new Dimension(120, 20));
+			goroupNameTextField.setPreferredSize(new Dimension(120, 20));
+			chnComboBox.setPreferredSize(new Dimension(120, 20));
+			similaryTextField.setPreferredSize(new Dimension(120, 20));
+	
+			add(goroupIdLabel);
+			add(goroupIdTextField);
+			add(goroupNameLabel);
+			add(goroupNameTextField);
+			add(chnLabel);
+			add(chnComboBox);
+			add(similaryLabel);
+			add(similaryTextField);
+			
+			ToolKits.limitTextFieldLength(similaryTextField, 3);
+			
+			goroupIdTextField.setEditable(false);
+			goroupNameTextField.setEditable(false);
+			
+			goroupIdTextField.setText(groupId);
+			goroupNameTextField.setText(groupName);
+		}
+	}
+	
+	// 查找人脸库的布控通道以及对应的相似度
+	private void findChnAndSimilary() {
+		// 清空列表
+		defaultTableModel.setRowCount(0);
+		defaultTableModel.setRowCount(512);
+		
+		// 查询布控信息
+		NET_FACERECONGNITION_GROUP_INFO[] groupInfos = TargetRecognitionModule.findGroupInfo(goroupIdTextField.getText());
+		
+		if(groupInfos == null) {
+			return;
+		}
+		
+		for(int i = 0; i < groupInfos[0].nRetChnCount; i++) {
+			defaultTableModel.setValueAt(String.valueOf(groupInfos[0].nChannel[i] + 1), i, 0);
+			defaultTableModel.setValueAt(String.valueOf(groupInfos[0].nSimilarity[i]), i, 1);
+		}			
+	}
+	
+	private Object[][] data;
+	private DefaultTableModel defaultTableModel;
+	private JTable table;
+	
+	private JButton addBtn;
+	private JButton refreshBtn;
+	private JButton dispositionBtn;
+	private JButton delDispositionBtn;
+	private JTextField goroupIdTextField;
+	private JTextField goroupNameTextField;
+	private JComboBox chnComboBox;
+	private JTextField similaryTextField;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DownloadPictureDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DownloadPictureDialog.java
new file mode 100644
index 0000000..7d42698
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/DownloadPictureDialog.java
@@ -0,0 +1,138 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.HeadlessException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.util.concurrent.ExecutionException;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.netsdk.lib.ToolKits;
+
+public class DownloadPictureDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public DownloadPictureDialog() {
+	    setTitle(Res.string().getDownLoadPicture());
+	    setLayout(new BorderLayout());
+	    setModal(true);  
+	    pack();
+	    setSize(380, 500);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+	    JLabel picPathLabel = new JLabel(Res.string().getPicturePath()+":", JLabel.CENTER);
+	    picPathTextField = new JTextField();
+	    downloadBth = new JButton(Res.string().getDownLoadPicture());
+	    
+	    picPathTextField.setPreferredSize(new Dimension(180, 20));
+	    downloadBth.setPreferredSize(new Dimension(80, 20));
+	    
+	    paintPanel = new PaintPanel();
+	    paintPanel.setPreferredSize(new Dimension(360, 450));
+	    
+	    setLayout(new FlowLayout());
+	    add(picPathLabel);
+	    add(picPathTextField);
+	    add(downloadBth);
+	    add(paintPanel);
+	    
+	    downloadBth.addActionListener(new ActionListener() {	
+			@Override
+			public void actionPerformed(ActionEvent arg0) {
+				SwingUtilities.invokeLater(new Runnable() {				
+					@Override
+					public void run() {
+						paintPanel.setOpaque(true);
+						paintPanel.repaint();
+						downloadBth.setEnabled(false);
+					}
+				});
+				
+				downloadPicture();
+			}
+		});
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();
+	    	}
+	    });
+	}
+	
+	private void downloadPicture() {
+		new SwingWorker<Boolean, Integer>() {	
+			String szFileName = "";   		       // 要下载的图片路径
+			String pszFileDst = "";    			   // 保存图片的路径
+			
+			@Override
+			protected Boolean doInBackground() {
+				if(picPathTextField.getText().isEmpty()) {
+					JOptionPane.showMessageDialog(null, Res.string().getEnterPicturePath(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return false;
+				}
+				
+				szFileName = picPathTextField.getText();    
+				pszFileDst = "./person.jpg";    			  
+				
+				File file = new File(pszFileDst);
+				if(file.exists()) {
+					file.delete();
+				}
+				
+				if(!TargetRecognitionModule.downloadPersonPic(szFileName, pszFileDst)) {
+					return false;
+				}
+
+				return true;
+			}	
+			
+			@Override
+			protected void done() {
+				if(picPathTextField.getText().isEmpty()) {
+					return;
+				}
+				
+				try {
+					if(get()) {				
+						// 下载成功后,面板上显示下载的图片
+						ToolKits.openPictureFile(pszFileDst, paintPanel);	
+					} else {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				} catch (HeadlessException e) {
+					e.printStackTrace();
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				} catch (ExecutionException e) {
+					e.printStackTrace();
+				}
+				downloadBth.setEnabled(true);
+			}
+		}.execute();
+	}
+	
+	private JTextField picPathTextField;
+	private PaintPanel paintPanel;
+	private JButton downloadBth;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/FindFaceEventRecordDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/FindFaceEventRecordDialog.java
new file mode 100644
index 0000000..128ba37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/FindFaceEventRecordDialog.java
@@ -0,0 +1,245 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DateChooserJButton;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.netsdk.lib.NetSDKLib.MEDIAFILE_FACERECOGNITION_INFO;
+
+/**
+ * 查找人脸事件的信息记录
+ */
+public class FindFaceEventRecordDialog extends JDialog{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private Vector<String> chnList = new Vector<String>(); 
+	
+	public FindFaceEventRecordDialog(){
+		setTitle("查找人脸事件的信息记录");
+		setLayout(new BorderLayout());
+	    setModal(true);   
+		pack();
+		setSize(750, 430);
+	    setResizable(false);
+	    setLocationRelativeTo(null); 
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体	
+		
+		FaceEventRecordPanel faceRecordPanel = new FaceEventRecordPanel();
+        add(faceRecordPanel, BorderLayout.CENTER);
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+	}
+	
+	public class FaceEventRecordPanel extends JPanel{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public FaceEventRecordPanel() {
+			BorderEx.set(this, "", 4);
+			setLayout(new BorderLayout());
+			
+			JPanel panel1 = new JPanel();	
+			JPanel panel2 = new JPanel();	
+			add(panel1, BorderLayout.NORTH);
+			add(panel2, BorderLayout.CENTER);
+			
+			//
+			JLabel chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBox = new JComboBox(); 
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnList.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBox.setModel(new DefaultComboBoxModel(chnList));
+			chnComboBox.setPreferredSize(new Dimension(80, 20));
+			
+			JLabel startLabel = new JLabel(Res.string().getStartTime());
+			startTimeBtn = new DateChooserJButton("2018-10-30 11:11:11");
+			
+			JLabel endLabel = new JLabel(Res.string().getEndTime());
+			endTimeBtn = new DateChooserJButton();
+			
+			searchBtn = new JButton(Res.string().getSearch());
+			searchBtn.setPreferredSize(new Dimension(70, 20));
+			
+			JButton downloadBth = new JButton("下载查询到的图片");
+			downloadBth.setPreferredSize(new Dimension(140, 20));
+			
+			msgTextArea = new JTextArea();
+			
+			Dimension dimension1 = new Dimension();
+			dimension1.width = 130;
+			dimension1.height = 20;
+			startTimeBtn.setPreferredSize(dimension1);
+			endTimeBtn.setPreferredSize(dimension1);
+			
+			panel1.setLayout(new FlowLayout());
+			panel1.add(chnlabel);
+			panel1.add(chnComboBox);
+			panel1.add(startLabel);
+			panel1.add(startTimeBtn);
+			panel1.add(endLabel);
+			panel1.add(endTimeBtn);
+			panel1.add(searchBtn);
+			panel1.add(downloadBth);
+			
+			panel2.setLayout(new BorderLayout());
+			panel2.add(new JScrollPane(msgTextArea), BorderLayout.CENTER);
+
+			searchBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							searchBtn.setEnabled(false);
+						}
+					});
+					findEventInfo();
+				}
+			});
+			
+			downloadBth.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					DownloadPictureDialog dialog = new DownloadPictureDialog();
+					dialog.setVisible(true);
+				}
+			});
+		}	
+	}
+	
+	
+	private JComboBox chnComboBox;
+	private DateChooserJButton startTimeBtn;
+	private DateChooserJButton endTimeBtn;
+	private JTextArea msgTextArea;
+	private JButton searchBtn;
+	
+	public void findEventInfo() {
+		new SwingWorker<Boolean, StringBuffer>() {					
+			@Override
+			protected Boolean doInBackground() {
+				int count = 0;  	  // 循环查询了几次	
+				int index = 0;	 	  // index + 1 为查询到的总个数    
+				int nFindCount = 10;  // 每次查询的个数
+				StringBuffer message = null;
+				msgTextArea.setText("");
+		
+				// 获取查询句柄
+				if(!TargetRecognitionModule.findFile(chnComboBox.getSelectedIndex(), startTimeBtn.getText(), endTimeBtn.getText())) {
+					message = new StringBuffer();
+					message.append("未查询到相关信息");
+					publish(message);
+					return false;
+				}			
+		
+				// 查询具体信息, 循环查询, nFindCount为每次查询的个数
+				while(true) {
+					MEDIAFILE_FACERECOGNITION_INFO[] msg = TargetRecognitionModule.findNextFile(nFindCount);
+					if(msg == null) {
+						message = new StringBuffer();
+						message.append("查询结束!");
+						publish(message);
+						break;
+					}
+					
+					for(int i = 0; i < msg.length; i++) {
+						index = i + count * nFindCount + 1;		
+	
+						// 清空
+						message = new StringBuffer();
+							
+						message.append("[" + index + "]通道号 :" + msg[i].nChannelId + "\n");
+						message.append("[" + index + "]报警发生时间 :" + msg[i].stTime.toStringTime() + "\n");
+						message.append("[" + index + "]全景图 :" + new String(msg[i].stGlobalScenePic.szFilePath).trim() + "\n");
+						message.append("[" + index + "]人脸图路径 :" + new String(msg[i].stObjectPic.szFilePath).trim() + "\n");
+						message.append("[" + index + "]匹配到的候选对象数量 :" + msg[i].nCandidateNum + "\n");		
+						
+						for(int j = 0; j < msg[i].nCandidateNum; j++) {  
+							for(int k = 0; k < msg[i].stuCandidatesPic[j].nFileCount; k++) {
+								message.append("[" + index + "]对比图路径 :" + new String(msg[i].stuCandidatesPic[j].stFiles[k].szFilePath).trim() + "\n");
+							}	
+						}	
+
+						message.append("[" + index + "]匹配到的候选对象数量 :" + msg[i].nCandidateExNum + "\n");
+						
+						// 对比信息   
+						for(int j = 0; j < msg[i].nCandidateExNum; j++) {  
+							message.append("[" + index + "]人员唯一标识符 :" + new String(msg[i].stuCandidatesEx[j].stPersonInfo.szUID).trim() + "\n");
+							
+							// 以下参数,设备有些功能没有解析,如果想要知道   对比图的人员信息,可以根据上面获取的 szUID,来查询人员信息。
+							// findFaceRecognitionDB() 此示例的方法是根据 GroupId来查询的,这里的查询,GroupId不填,根据 szUID 来查询
+							message.append("[" + index + "]姓名 :" + new String(msg[i].stuCandidatesEx[j].stPersonInfo.szPersonName).trim() + "\n");
+							message.append("[" + index + "]相似度 :" + msg[i].stuCandidatesEx[j].bySimilarity + "\n");
+							message.append("[" + index + "]年龄 :" + msg[i].stuCandidatesEx[j].stPersonInfo.byAge + "\n");
+							message.append("[" + index + "]人脸库名称 :" + new String(msg[i].stuCandidatesEx[j].stPersonInfo.szGroupName).trim() + "\n");
+							message.append("[" + index + "]人脸库ID :" + new String(msg[i].stuCandidatesEx[j].stPersonInfo.szGroupID).trim() + "\n");
+						}
+						message.append("\n");
+						publish(message);
+					}
+		
+					if (msg.length < nFindCount) {
+						message = new StringBuffer();
+						message.append("查询结束!");
+						publish(message);
+						break;
+					} else {
+						count ++;
+					}
+				}
+				
+				// 关闭查询接口
+				TargetRecognitionModule.findCloseFile();
+
+				return true;
+			}
+			
+			@Override
+			protected void process(java.util.List<StringBuffer> chunks) {
+				for(StringBuffer data : chunks) {
+			        msgTextArea.append(data.toString());
+			        msgTextArea.updateUI();
+				}
+				
+				super.process(chunks);
+			}
+			
+			@Override
+			protected void done() {	
+				searchBtn.setEnabled(true);
+			}
+		}.execute();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/GroupOperateDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/GroupOperateDialog.java
new file mode 100644
index 0000000..e7df650
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/GroupOperateDialog.java
@@ -0,0 +1,334 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+
+public class GroupOperateDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	// 人脸库名称
+	private String inputGroupName = "";
+	
+	// 布控界面
+	public DispositionOperateDialog dispositionOperateDialog = null;
+	
+	// 人员操作界面
+	public PersonOperateDialog personOperateDialog = null;
+
+	public GroupOperateDialog() {
+	    setTitle(Res.string().getGroupOperate());
+	    setLayout(new BorderLayout());
+	    setModal(true);  
+	    pack();
+	    setSize(650, 360);
+	    setResizable(false);
+	    setLocationRelativeTo(null);  
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+	    GroupListPanel GroupPanel = new GroupListPanel();
+	    GroupOperatePanel GroupOperatePanel = new GroupOperatePanel();
+	    
+	    add(GroupPanel, BorderLayout.CENTER);
+	    add(GroupOperatePanel, BorderLayout.EAST);
+	    
+	    findGroupInfo();
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();
+	    	}
+	    });
+	}
+	
+	/*
+	 * 人脸库显示列表
+	 */
+	private class GroupListPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		public GroupListPanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new BorderLayout());
+			
+			data = new Object[20][3];
+			defaultTableModel = new DefaultTableModel(data, Res.string().getGroupTable());
+			table = new JTable(defaultTableModel) {   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(80);
+			table.getColumnModel().getColumn(1).setPreferredWidth(280);
+			table.getColumnModel().getColumn(2).setPreferredWidth(100);
+			
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);
+			
+			add(new JScrollPane(table), BorderLayout.CENTER);
+
+		}
+	}
+	
+	/*
+	 * 人脸库操作
+	 */
+	private class GroupOperatePanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public GroupOperatePanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new BorderLayout());
+			
+			Dimension dimension = new Dimension();
+			dimension.width = 230;
+			setPreferredSize(dimension);
+			
+			JPanel GroupPanel = new JPanel();
+			JPanel panel = new JPanel();
+			
+			add(GroupPanel, BorderLayout.CENTER);
+			add(panel, BorderLayout.SOUTH);
+			
+			/*JButton searchByPicBtn = new JButton(Res.string().getSearchByPic());*/
+			JButton personOperateBtn = new JButton(Res.string().getPersonOperate());
+			panel.setPreferredSize(new Dimension(230, 45));
+			panel.setLayout(new GridLayout(2, 1));
+			/*panel.add(searchByPicBtn);*/
+			panel.add(personOperateBtn);
+			
+			/*
+			 * 人脸库增删改, 布控、撤控
+			 */
+			JButton refreshBtn = new JButton(Res.string().getFresh());
+			JButton addGroupBtn = new JButton(Res.string().getAddGroup());
+			JButton modifyGroupBtn = new JButton(Res.string().getModifyGroup());
+			JButton deleteGroupBtn = new JButton(Res.string().getDelGroup());
+			JButton dispositionBtn = new JButton(Res.string().getDisposition() + "/" + Res.string().getDelDisposition());
+			
+			GroupPanel.setLayout(new GridLayout(12, 1));
+			GroupPanel.add(refreshBtn);
+			GroupPanel.add(addGroupBtn);
+			GroupPanel.add(modifyGroupBtn);
+			GroupPanel.add(deleteGroupBtn);
+			GroupPanel.add(dispositionBtn);
+			
+			// 刷新人脸库列表
+			refreshBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					findGroupInfo();		
+				}
+			});
+						
+			// 添加人脸库
+			addGroupBtn.addActionListener(new ActionListener() {
+				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					inputGroupName = JOptionPane.showInputDialog(GroupOperateDialog.this, 
+							 									 Res.string().getInputGroupName(), "");	
+	
+					if(inputGroupName == null) {   // 取消或者关闭按钮
+						return;
+					} 
+	
+					if(TargetRecognitionModule.addGroup(inputGroupName)) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+		
+					// 更新人脸库列表
+					findGroupInfo();		
+				}
+			});
+			
+			// 修改人脸库
+			modifyGroupBtn.addActionListener(new ActionListener() {
+				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {				
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}						
+
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+								
+					inputGroupName = JOptionPane.showInputDialog(GroupOperateDialog.this, 
+																 Res.string().getInputGroupName(), String.valueOf(defaultTableModel.getValueAt(row, 1)).trim());	
+					
+					if(inputGroupName == null) { // 取消或者关闭按钮
+						return;
+					} 
+										
+					if(TargetRecognitionModule.modifyGroup(inputGroupName, String.valueOf(defaultTableModel.getValueAt(row, 0)).trim())) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+					
+					// 更新人脸库列表
+					findGroupInfo(); 			
+				}
+			});
+			
+			// 删除人脸库
+			deleteGroupBtn.addActionListener(new ActionListener() {
+				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+								
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+						
+					if(!TargetRecognitionModule.deleteGroup(String.valueOf(defaultTableModel.getValueAt(row, 0)).trim())) {
+						JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+					
+					// 更新人脸库列表
+					findGroupInfo(); 				
+				}
+			});
+			
+			// 布控/撤控
+			dispositionBtn.addActionListener(new ActionListener() {
+				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+								
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}			
+					
+					dispositionOperateDialog = new DispositionOperateDialog(String.valueOf(defaultTableModel.getValueAt(row, 0)).trim(), 
+																	      String.valueOf(defaultTableModel.getValueAt(row, 1)).trim());
+					dispositionOperateDialog.setVisible(true);	
+							
+				}
+			});
+			
+			/*// 以图搜图
+			searchByPicBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SearchByPicDialog dialog = new SearchByPicDialog();
+					dialog.setVisible(true);
+				}
+			});*/
+			
+			// 人员操作
+			personOperateBtn.addActionListener(new ActionListener() {
+				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+								
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectGroup(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					personOperateDialog = new PersonOperateDialog(String.valueOf(defaultTableModel.getValueAt(row, 0)).trim(), 
+															    String.valueOf(defaultTableModel.getValueAt(row, 1)).trim());
+					personOperateDialog.setVisible(true);				
+				}
+			});
+		}
+	}
+	
+	/*
+	 *  查找所有人脸库
+	 */
+	private void findGroupInfo() {
+		// 清空列表
+		for(int i = 0; i < 20; i++) {
+			for(int j = 0; j < 3; j++) {
+				defaultTableModel.setValueAt("", i, j);
+			}
+		}	
+		
+		// 查询人脸库
+		NET_FACERECONGNITION_GROUP_INFO[] groupInfoArr = TargetRecognitionModule.findGroupInfo("");
+		if(groupInfoArr != null) {
+			for(int i = 0; i < groupInfoArr.length; i++) {
+				defaultTableModel.setValueAt(new String(groupInfoArr[i].szGroupId).trim(), i, 0);
+				try {
+					defaultTableModel.setValueAt(new String(groupInfoArr[i].szGroupName, "GBK").trim(), i, 1);
+				} catch (UnsupportedEncodingException e1) {
+					e1.printStackTrace();
+				}
+				defaultTableModel.setValueAt(String.valueOf(groupInfoArr[i].nGroupSize).trim(), i, 2);
+			}
+		}
+	}
+	
+	private Object[][] data;
+	private DefaultTableModel defaultTableModel;
+	private JTable table;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/LatticeScreen.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/LatticeScreen.java
new file mode 100644
index 0000000..afdf117
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/LatticeScreen.java
@@ -0,0 +1,529 @@
+package com.netsdk.demo.frame.TargetRecognition;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import com.sun.jna.Pointer;
+import com.netsdk.common.DateChooserJButtonEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.DotmatrixScreenModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.NET_CTRL_SET_PARK_INFO;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JRadioButton;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+import java.awt.event.ActionEvent;
+import javax.swing.JPasswordField;
+import javax.swing.border.TitledBorder;
+import javax.swing.UIManager;
+import java.awt.Color;
+/**
+ * 
+ * @author 119178
+ * 点阵屏下发demo
+ */
+public class LatticeScreen {
+
+	
+	// 设备断线通知回调
+	private  DisConnect disConnect  = new DisConnect();
+		
+	// 网络连接恢复
+	private  HaveReConnect haveReConnect = new HaveReConnect(); 
+	private JFrame frame;
+	private JTextField textField;
+	private JTextField textField_1;
+	private JTextField textField_2;
+	private JTextField textField_4;
+	private JTextField textField_5;
+	private JTextField textField_6;
+	private JTextField textField_7;
+	private JTextField textField_8;
+	private JTextField textField_9;
+	private JComboBox comboBox;
+	private JComboBox comboBox_1;
+	private JRadioButton rdbtnNewRadioButton;
+	private JRadioButton rdbtnNewRadioButton_1;
+	
+	private DateChooserJButtonEx startTime;
+	private DateChooserJButtonEx EndTime;
+	private JPasswordField passwordField;
+	
+	private JButton btnNewButton ;
+	private JButton btnNewButton_1 ;
+	private JButton btnNewButton_2 ;
+	private JTextField textField_3;
+	private JTextField textField_10;
+	private JTextField textField_11;
+
+	/**
+	 * Launch the application.
+	 */
+	public static void main(String[] args) {
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+            	LatticeScreen demo = new LatticeScreen();
+                demo.frame.setVisible(true);
+            }
+        });
+	}
+
+	/**
+	 * Create the application.
+	 */
+	public LatticeScreen() {
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		initialize();
+		// 注册窗体清出事件
+		frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                LoginModule.logout();    // 退出
+                LoginModule.cleanup();   // 关闭工程,释放资源
+                frame.dispose();
+                // 返回主菜单
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+	}
+
+/////////////////面板///////////////////
+// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+private  class DisConnect implements NetSDKLib.fDisConnect {
+public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+// 断线提示
+SwingUtilities.invokeLater(new Runnable() {
+	public void run() {
+		frame.setTitle(Res.string().getTargetRecognition() + " : " + Res.string().getDisConnectReconnecting());
+	}
+});
+}
+}
+
+// 网络连接恢复,设备重连成功回调
+// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+private  class HaveReConnect implements NetSDKLib.fHaveReConnect {
+public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+// 重连提示
+SwingUtilities.invokeLater(new Runnable() {
+	public void run() {
+		frame.setTitle(Res.string().getTargetRecognition() + " : " + Res.string().getOnline());
+	}
+});
+}
+}
+	
+	/**
+	 * Initialize the contents of the frame.
+	 */
+	private void initialize() {
+		frame = new JFrame();
+		frame.setTitle(Res.string().getmatrixScreen());
+		frame.setBounds(200, 200, 807, 578);
+		//frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+		frame.getContentPane().setLayout(null); 
+			try {
+			            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+			        } catch (Exception e) {
+			            e.printStackTrace();
+			        } 
+
+		final JPanel panel1 = new JPanel();
+		panel1.setBounds(10, 10, 100, 50);
+		
+		JPanel panel = new JPanel();
+		panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), Res.string().getLogin(), TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
+		panel.setBounds(10, 10, 771, 40);
+		frame.getContentPane().add(panel);
+		panel.setLayout(null);
+		
+		JLabel lblNewLabel = new JLabel(Res.string().getDeviceIp()+":");
+		lblNewLabel.setBounds(26, 14, 54, 15);
+		panel.add(lblNewLabel);
+		
+		textField = new JTextField("172.24.31.178");
+		textField.setBounds(82, 11, 76, 21);
+		panel.add(textField);
+		textField.setColumns(10);
+		
+		JLabel lblNewLabel_1 = new JLabel(Res.string().getPort()+":");
+		lblNewLabel_1.setBounds(168, 14, 47, 15);
+		panel.add(lblNewLabel_1);
+		
+		textField_1 = new JTextField("37777");
+		textField_1.setBounds(217, 11, 76, 21);
+		panel.add(textField_1);
+		textField_1.setColumns(10);
+		
+		JLabel lblNewLabel_2 = new JLabel(Res.string().getUserName()+":");
+		lblNewLabel_2.setBounds(302, 14, 47, 15);
+		panel.add(lblNewLabel_2);
+		
+		textField_2 = new JTextField("admin");
+		textField_2.setBounds(351, 11, 76, 21);
+		panel.add(textField_2);
+		textField_2.setColumns(10);
+		
+		JLabel lblNewLabel_3 = new JLabel(Res.string().getPassword()+":");
+		lblNewLabel_3.setBounds(435, 14, 38, 15);
+		panel.add(lblNewLabel_3);
+		
+		passwordField = new JPasswordField("admin123");
+		passwordField.setBounds(476, 11, 89, 21);
+		panel.add(passwordField);
+		
+		btnNewButton = new JButton(Res.string().getLogin());
+		btnNewButton.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				if(LoginModule.login(textField.getText(), 
+						Integer.parseInt(textField_1.getText()), 
+						textField_2.getText(), 
+						new String(passwordField.getPassword()))) {
+					btnNewButton.setEnabled(false);
+					btnNewButton_1.setEnabled(true);
+					btnNewButton_2.setEnabled(true);
+					
+					textField.setEnabled(true);;
+					textField_1.setEditable(true);;
+					textField_2.setEnabled(true);
+					textField_3.setEnabled(true);
+					textField_4.setEnabled(true);
+					textField_5.setEnabled(true);
+					textField_6.setEnabled(true);
+					textField_7.setEnabled(true);
+					textField_8.setEnabled(true);
+					textField_9.setEnabled(true);
+					textField_10.setEnabled(true);
+					textField_11.setEnabled(true);
+					comboBox.setEnabled(true);
+					comboBox_1.setEnabled(true);
+					rdbtnNewRadioButton.setEnabled(true);
+					rdbtnNewRadioButton_1.setEnabled(true);
+					startTime.setEnabled(true);
+					EndTime.setEnabled(true);
+					passwordField.setEnabled(true);
+				}else{
+					JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+			}
+		});
+		btnNewButton.setBounds(584, 10, 76, 23);
+		panel.add(btnNewButton);
+		btnNewButton.setEnabled(true);
+		
+	    btnNewButton_1 = new JButton(Res.string().getLogout());
+		btnNewButton_1.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				LoginModule.logout();
+				btnNewButton.setEnabled(true);
+				btnNewButton_1.setEnabled(false);
+				btnNewButton_2.setEnabled(false);
+				
+				textField.setEnabled(false);;
+				textField_1.setEditable(false);;
+				textField_2.setEnabled(false);
+				textField_3.setEnabled(false);
+				textField_4.setEnabled(false);
+				textField_5.setEnabled(false);
+				textField_6.setEnabled(false);
+				textField_7.setEnabled(false);
+				textField_8.setEnabled(false);
+				textField_9.setEnabled(false);
+				textField_10.setEnabled(false);
+				textField_11.setEnabled(false);
+				comboBox.setEnabled(false);
+				comboBox_1.setEditable(false);
+				rdbtnNewRadioButton.setEnabled(false);
+				rdbtnNewRadioButton_1.setEnabled(false);
+				startTime.setEnabled(true);
+				EndTime.setEnabled(true);
+				passwordField.setEnabled(true);
+			}
+		});
+		btnNewButton_1.setBounds(678, 10, 76, 23);
+		panel.add(btnNewButton_1);
+		btnNewButton_1.setEnabled(false);
+		
+		JPanel panel_1 = new JPanel();
+		panel_1.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
+		panel_1.setBounds(10, 56, 771, 474);
+		frame.getContentPane().add(panel_1);
+		panel_1.setLayout(null);
+		
+		JLabel lblNewLabel_4 = new JLabel(Res.string().getPassingState()+":");
+		lblNewLabel_4.setBounds(71, 26, 95, 21);
+		panel_1.add(lblNewLabel_4);
+		
+		comboBox = new JComboBox();
+		comboBox.setEnabled(false);
+		comboBox.setModel(new DefaultComboBoxModel(new String[] {Res.string().getPassingCar(), Res.string().getNoCar()}));
+		comboBox.setBounds(176, 26, 131, 21);
+		panel_1.add(comboBox);
+		
+		JLabel lblNewLabel_5 = new JLabel(Res.string().getInTime()+":");
+		lblNewLabel_5.setBounds(391, 29, 102, 15);
+		panel_1.add(lblNewLabel_5);
+		
+		startTime=new DateChooserJButtonEx();
+		startTime.setEnabled(false);
+		startTime.setBounds(503, 26, 131, 21);
+		panel_1.add(startTime);
+		
+		JLabel lblNewLabel_6 = new JLabel(Res.string().getOutTime()+":");
+		lblNewLabel_6.setBounds(391, 84, 102, 15);
+		panel_1.add(lblNewLabel_6);
+		
+		EndTime=new DateChooserJButtonEx();
+		EndTime.setEnabled(false);
+		EndTime.setBounds(503, 81, 131, 21);
+		panel_1.add(EndTime);
+		
+		JLabel lblNewLabel_7 = new JLabel(Res.string().getPlateNumber()+":");
+		lblNewLabel_7.setBounds(71, 84, 95, 15);
+		panel_1.add(lblNewLabel_7);
+		
+		textField_4 = new JTextField();
+		textField_4.setEnabled(false);
+		textField_4.setBounds(176, 81, 131, 21);
+		panel_1.add(textField_4);
+		textField_4.setColumns(10);
+		
+		JLabel lblNewLabel_8 = new JLabel(Res.string().getCarOwner()+":");
+		lblNewLabel_8.setBounds(77, 142, 89, 15);
+		panel_1.add(lblNewLabel_8);
+		
+		textField_5 = new JTextField();
+		textField_5.setEnabled(false);
+		textField_5.setBounds(176, 139, 131, 21);
+		panel_1.add(textField_5);
+		textField_5.setColumns(10);
+		
+		JLabel lblNewLabel_9 = new JLabel(Res.string().getParkingTime()+":");
+		lblNewLabel_9.setBounds(391, 133, 102, 15);
+		panel_1.add(lblNewLabel_9);
+		
+		textField_6 = new JTextField();
+		textField_6.setEnabled(false);
+		textField_6.setBounds(503, 130, 131, 21);
+		panel_1.add(textField_6);
+		textField_6.setColumns(10);
+		
+		JLabel lblNewLabel_10 = new JLabel(Res.string().getUserType()+":");
+		lblNewLabel_10.setBounds(71, 198, 95, 15);
+		panel_1.add(lblNewLabel_10);
+		
+		comboBox_1 = new JComboBox();
+		comboBox_1.setEnabled(false);
+		comboBox_1.setModel(new DefaultComboBoxModel(new String[] {Res.string().getMonthlyCardUser()
+				,Res.string().getAnnualCardUser(), Res.string().getLongTermUser(), Res.string().getTemporaryUser()}));
+		comboBox_1.setBounds(176, 195, 131, 21);
+		panel_1.add(comboBox_1);
+		
+		JLabel lblNewLabel_11 = new JLabel(Res.string().getParkingCharge());
+		lblNewLabel_11.setBounds(391, 178, 102, 15);
+		panel_1.add(lblNewLabel_11);
+		
+		textField_7 = new JTextField();
+		textField_7.setEnabled(false);
+		textField_7.setBounds(503, 175, 131, 21);
+		panel_1.add(textField_7);
+		textField_7.setColumns(10);
+		
+		JLabel lblNewLabel_12 = new JLabel(Res.string().getDaysDue());
+		lblNewLabel_12.setBounds(71, 253, 95, 15);
+		panel_1.add(lblNewLabel_12);
+		
+		textField_8 = new JTextField();
+		textField_8.setEnabled(false);
+		textField_8.setBounds(176, 250, 131, 21);
+		panel_1.add(textField_8);
+		textField_8.setColumns(10);
+		
+		JLabel lblNewLabel_13 = new JLabel(Res.string().getRemainingParkingSpaces());
+		lblNewLabel_13.setBounds(391, 215, 102, 15);
+		panel_1.add(lblNewLabel_13);
+		
+		textField_9 = new JTextField();
+		textField_9.setEnabled(false);
+		textField_9.setBounds(503, 212, 131, 21);
+		panel_1.add(textField_9);
+		textField_9.setColumns(10);
+		
+		rdbtnNewRadioButton = new JRadioButton(Res.string().getVehiclesNotAllowedToPass());
+		rdbtnNewRadioButton.setEnabled(false);
+		rdbtnNewRadioButton.setBounds(367, 249, 155, 23);
+		panel_1.add(rdbtnNewRadioButton);
+		
+		rdbtnNewRadioButton_1 = new JRadioButton(Res.string().getAllowedVehiclesToPass());
+		rdbtnNewRadioButton_1.setEnabled(false);
+		rdbtnNewRadioButton_1.setBounds(524, 249, 162, 23);
+		panel_1.add(rdbtnNewRadioButton_1);
+		
+		ButtonGroup group=new ButtonGroup();
+		group.add(rdbtnNewRadioButton);
+		group.add(rdbtnNewRadioButton_1);
+		
+		btnNewButton_2 = new JButton(Res.string().getSetUp());
+		btnNewButton_2.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				int emType=NetSDKLib.CtrlType.CTRLTYPE_CTRL_SET_PARK_INFO;
+				
+				NET_CTRL_SET_PARK_INFO msg=new NET_CTRL_SET_PARK_INFO();
+				
+				msg.szPlateNumber=textField_4.getText().getBytes();
+				
+				if(!textField_6.getText().equals("")) {
+				msg.nParkTime=Integer.parseInt(textField_6.getText());
+				}else {
+					msg.nParkTime=0;
+				}
+				
+				msg.szMasterofCar=textField_5.getText().getBytes();
+				
+				if(comboBox_1.getSelectedItem().equals(Res.string().getMonthlyCardUser())) {
+					msg.szUserType="monthlyCardUser".getBytes();
+				}
+				else if(comboBox_1.getSelectedItem().equals(Res.string().getAnnualCardUser())){
+					msg.szUserType="yearlyCardUser".getBytes();
+				}
+				else if(comboBox_1.getSelectedItem().equals(Res.string().getLongTermUser())){
+					msg.szUserType="longTimeUser".getBytes();
+				}
+				else if(comboBox_1.getSelectedItem().equals(Res.string().getTemporaryUser())){
+					msg.szUserType="casualUser".getBytes();
+				}
+				
+				if(!textField_8.getText().equals("")) {
+				msg.nRemainDay=Integer.parseInt(textField_8.getText());
+				}else {
+					msg.nRemainDay=0;
+				}
+								
+				if(rdbtnNewRadioButton.isSelected()) {
+					msg.nPassEnable=0;
+					}else if(rdbtnNewRadioButton_1.isSelected()){
+						msg.nPassEnable=1;
+					}
+				String InTime=startTime.getText().toString();// 车辆入场时间
+				String[] InTimes = InTime.split("-");
+				
+				msg.stuInTime.dwYear = (short)Integer.parseInt(InTimes[0]);
+				msg.stuInTime.dwMonth = (byte)Integer.parseInt(InTimes[1]);
+				msg.stuInTime.dwDay = (byte)Integer.parseInt(InTimes[2]);
+				
+				String OutTime=EndTime.getText().toString();// 车辆出场时间
+				String[] OutTimes = OutTime.split("-");
+				
+				msg.stuOutTime.dwYear = (short)Integer.parseInt(OutTimes[0]);
+				msg.stuOutTime.dwMonth = (byte)Integer.parseInt(OutTimes[1]);
+				msg.stuOutTime.dwDay = (byte)Integer.parseInt(OutTimes[2]);
+				
+				//msg.stuInTime.setTime(2019, 7, 9, 10, 45, 0); 	// 车辆入场时间
+				//msg.stuOutTime.setTime(2019, 7, 9, 10, 52, 0); // 车辆出场时间
+				try {
+					msg.szParkCharge=textField_7.getText().getBytes("GBK");
+				} catch (UnsupportedEncodingException e2) {
+					// TODO Auto-generated catch block
+					e2.printStackTrace();
+				}
+				
+				if(!textField_9.getText().equals("")) {
+					msg.nRemainSpace=Integer.parseInt(textField_9.getText());
+					}else {
+						msg.nRemainSpace=0;
+					}
+				
+				/*
+				 * if(rdbtnNewRadioButton.isSelected()) { msg.nPassEnable=1; }else
+				 * if(rdbtnNewRadioButton_1.isSelected()){ msg.nPassEnable=0; }
+				 */
+				if(comboBox.getSelectedItem().equals(Res.string().getPassingCar())) {
+					msg.emCarStatus=1;
+				}
+				else if(comboBox.getSelectedItem().equals(Res.string().getNoCar())){
+					msg.emCarStatus=2;
+				}
+				
+				try {
+					msg.szSubUserType=textField_3.getText().getBytes("GBK");
+				} catch (UnsupportedEncodingException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+				try {
+					msg.szRemarks=textField_10.getText().getBytes("GBK");
+				} catch (UnsupportedEncodingException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+				try {
+					msg.szCustom=textField_11.getText().getBytes("GBK");
+				} catch (UnsupportedEncodingException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+				
+				msg.write();
+				boolean ret=DotmatrixScreenModule.setDotmatrixScreen(emType, msg);
+				if(ret) {
+					JOptionPane.showMessageDialog(panel1, Res.string().getSetUpSuccess());
+				}else {
+					JOptionPane.showMessageDialog(panel1, Res.string().getSetUpFailed());
+				}
+			}
+		});
+		btnNewButton_2.setBounds(618, 441, 93, 23);
+		panel_1.add(btnNewButton_2);
+		btnNewButton_2.setEnabled(false);	
+		
+		JLabel label = new JLabel(Res.string().getCostomUserInfo()+":");
+		label.setBounds(58, 309, 119, 21);
+		panel_1.add(label);
+		
+		JLabel label_1 = new JLabel(Res.string().getRemarksInfo()+":");
+		label_1.setBounds(58, 350, 97, 21);
+		panel_1.add(label_1);
+		
+		JLabel label_2 = new JLabel(Res.string().getCostomInfo()+":");
+		label_2.setBounds(60, 394, 95, 21);
+		panel_1.add(label_2);
+		
+		textField_3 = new JTextField();
+		textField_3.setEnabled(false);
+		textField_3.setColumns(10);
+		textField_3.setBounds(187, 306, 460, 28);
+		panel_1.add(textField_3);
+		
+		textField_10 = new JTextField();
+		textField_10.setEnabled(false);
+		textField_10.setColumns(10);
+		textField_10.setBounds(187, 347, 460, 28);
+		panel_1.add(textField_10);
+		
+		textField_11 = new JTextField();
+		textField_11.setEnabled(false);
+		textField_11.setColumns(10);
+		textField_11.setBounds(187, 391, 460, 28);
+		panel_1.add(textField_11);
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/ModifyPersonDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/ModifyPersonDialog.java
new file mode 100644
index 0000000..06d8096
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/ModifyPersonDialog.java
@@ -0,0 +1,326 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.sun.jna.Memory;
+
+import com.netsdk.common.*;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+
+public class ModifyPersonDialog extends JDialog{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private String groupId = ""; 
+	private String groupName = "";
+	private String uid = "";
+	private String pszFileDst = "";
+	private Memory memory = null;
+	private CANDIDATE_INFOEX stuCandidate = null;
+	
+	private WindowCloseListener listener;
+	public void addWindowCloseListener(WindowCloseListener listener) {
+		this.listener = listener;
+	}
+	
+	/**
+	 * @param groupId 人脸库ID
+	 * @param groupName  人脸库名称
+	 * @param uid  人员标识符
+	 * @param pszFileDst  下载到本地的图片路径
+	 * @param memory  图片数据
+	 * @param stuCandidate  人员信息
+	 */
+	public ModifyPersonDialog(String groupId, 
+							  String groupName, 
+							  String uid, 
+							  String pszFileDst, 
+							  Memory memory, 
+							  CANDIDATE_INFOEX stuCandidate){
+		
+		setTitle(Res.string().getModifyPerson());
+		setLayout(new BorderLayout());
+	    setModal(true); 
+		pack();
+		setSize(520, 400);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+		this.groupId = groupId;
+		this.groupName = groupName;
+		this.uid = uid;
+		this.pszFileDst = pszFileDst;
+		this.memory = memory;
+		this.stuCandidate = stuCandidate;
+		
+		FaceServerAddPanel faceServerAddPanel = new FaceServerAddPanel();
+        add(faceServerAddPanel, BorderLayout.CENTER);
+		
+        showPersonInfo();
+        
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				dispose();
+			}
+		});
+	}
+	public class FaceServerAddPanel extends JPanel{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public FaceServerAddPanel() {
+			BorderEx.set(this, "", 4);
+			setLayout(new BorderLayout());
+			
+			JPanel imagePanel = new JPanel();
+			JPanel personInfoPanel = new JPanel();
+			
+			Dimension dimension = this.getPreferredSize();
+			dimension.height = 400;
+			dimension.width = 250;
+			personInfoPanel.setPreferredSize(dimension);
+			
+			add(imagePanel, BorderLayout.CENTER);
+			add(personInfoPanel, BorderLayout.WEST);
+			
+			/////////// 添加的人脸图片面板 //////////////////
+			imagePanel.setLayout(new BorderLayout());
+			addImagePanel = new PaintPanel();   // 添加的人员信息图片显示
+			selectImageBtn = new JButton(Res.string().getSelectPicture());
+			imagePanel.add(addImagePanel, BorderLayout.CENTER);
+			imagePanel.add(selectImageBtn, BorderLayout.SOUTH);
+			
+			////////// 添加的人脸信息面板 /////////////////
+			personInfoPanel.setLayout(new FlowLayout());
+			JLabel goroupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER);
+			JLabel goroupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER);
+			JLabel uidLabel = new JLabel(Res.string().getUid(), JLabel.CENTER);
+			JLabel nameLabel = new JLabel(Res.string().getName(), JLabel.CENTER);
+			JLabel sexLabel = new JLabel(Res.string().getSex(), JLabel.CENTER);
+			JLabel birthdayLabel = new JLabel(Res.string().getBirthday(), JLabel.CENTER);
+			JLabel idTypeLabel = new JLabel(Res.string().getIdType(), JLabel.CENTER);
+			JLabel idLabel = new JLabel(Res.string().getIdNo(), JLabel.CENTER);
+			
+			Dimension dimension2 = new Dimension();
+			dimension2.width = 80;
+			dimension2.height = 20;
+			uidLabel.setPreferredSize(dimension2);
+			goroupIdLabel.setPreferredSize(dimension2);
+			goroupNameLabel.setPreferredSize(dimension2);
+			nameLabel.setPreferredSize(dimension2);
+			sexLabel.setPreferredSize(dimension2);
+			birthdayLabel.setPreferredSize(dimension2);
+			idTypeLabel.setPreferredSize(dimension2);
+			idLabel.setPreferredSize(dimension2);
+			
+			goroupIdTextField = new JTextField();
+			goroupNameTextField = new JTextField();
+			uidTextField = new JTextField();
+			nameTextField = new JTextField();
+			sexComboBox = new JComboBox(Res.string().getSexStrings());
+			birthdayBtn = new DateChooserJButtonEx(""); 
+			idTypeComboBox = new JComboBox(Res.string().getIdStrings());
+			idTextField = new JTextField();
+			birthdayCheckBox = new JCheckBox();
+			
+			modifyBtn = new JButton(Res.string().getModify());
+			cancelBtn = new JButton(Res.string().getCancel());
+			
+			birthdayBtn.setStartYear(1900);
+			
+			Dimension dimension3 = new Dimension();
+			dimension3.width = 150;
+			dimension3.height = 20;
+			
+			sexComboBox.setPreferredSize(dimension3);	
+			idTypeComboBox.setPreferredSize(dimension3);
+			goroupIdTextField.setPreferredSize(dimension3);
+			goroupNameTextField.setPreferredSize(dimension3);
+			uidTextField.setPreferredSize(dimension3);
+			nameTextField.setPreferredSize(dimension3);
+			idTextField.setPreferredSize(dimension3);
+			birthdayBtn.setPreferredSize(new Dimension(130, 20));
+			birthdayCheckBox.setPreferredSize(new Dimension(20, 20));
+			modifyBtn.setPreferredSize(new Dimension(120, 20));
+			cancelBtn.setPreferredSize(new Dimension(120, 20));
+
+			goroupIdTextField.setEditable(false);
+			goroupNameTextField.setEditable(false);
+			uidTextField.setEditable(false);
+			birthdayCheckBox.setSelected(true);
+			
+			goroupIdTextField.setText(groupId);
+			goroupNameTextField.setText(groupName);
+			uidTextField.setText(uid);
+			
+			personInfoPanel.add(goroupIdLabel);
+			personInfoPanel.add(goroupIdTextField);
+			personInfoPanel.add(goroupNameLabel);
+			personInfoPanel.add(goroupNameTextField);
+			personInfoPanel.add(uidLabel);
+			personInfoPanel.add(uidTextField);
+			personInfoPanel.add(nameLabel);
+			personInfoPanel.add(nameTextField);
+			personInfoPanel.add(sexLabel);
+			personInfoPanel.add(sexComboBox);
+			personInfoPanel.add(idTypeLabel);
+			personInfoPanel.add(idTypeComboBox);
+			personInfoPanel.add(idLabel);
+			personInfoPanel.add(idTextField);
+			personInfoPanel.add(birthdayLabel);
+			personInfoPanel.add(birthdayBtn);
+			personInfoPanel.add(birthdayCheckBox);
+			personInfoPanel.add(modifyBtn);
+			personInfoPanel.add(cancelBtn);
+			
+			birthdayCheckBox.addChangeListener(new ChangeListener() {		
+				@Override
+				public void stateChanged(ChangeEvent arg0) {
+					if(birthdayCheckBox.isSelected()) {
+						birthdayBtn.setEnabled(true);
+					} else {
+						birthdayBtn.setEnabled(false);
+					}
+				}
+			});
+			
+			// 选择图片,获取图片的信息
+			selectImageBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					String picPath = "";
+					
+					// 选择图片,获取图片路径,并在界面显示
+					picPath = ToolKits.openPictureFile(addImagePanel);
+							
+					if(!picPath.equals("")) {
+						memory = null;
+						try {
+							memory = ToolKits.readPictureFile(picPath);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}				
+				}
+			});
+			
+			// 修改人员信息
+			modifyBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					boolean bRet = TargetRecognitionModule.modifyPerson(groupId, uid,
+																      memory, 
+																      nameTextField.getText(), 
+																      sexComboBox.getSelectedIndex(), 
+																      birthdayCheckBox.isSelected(), birthdayBtn.getText().toString(), 
+																      idTypeComboBox.getSelectedIndex(), idTextField.getText());								
+
+					if(bRet) {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+	
+					dispose();
+					
+					listener.windowClosing();								
+				}
+			});
+			
+			// 取消,关闭
+			cancelBtn.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					dispose();	
+				}
+			});
+		}		 
+	}
+	
+	private void showPersonInfo() {
+		File file = null;
+		if(!pszFileDst.equals("")) {
+			file = ToolKits.openPictureFile(pszFileDst, addImagePanel);		
+		}
+		
+		if(file != null) {
+			file.delete();
+		}
+		
+		try {
+			nameTextField.setText(new String(stuCandidate.stPersonInfo.szPersonName, "GBK").trim());
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		
+		sexComboBox.setSelectedIndex(stuCandidate.stPersonInfo.bySex & 0xff);
+		
+		idTypeComboBox.setSelectedIndex(stuCandidate.stPersonInfo.byIDType & 0xff);
+		
+		idTextField.setText(new String(stuCandidate.stPersonInfo.szID).trim());
+		
+		if(stuCandidate.stPersonInfo == null) {
+			birthdayCheckBox.setSelected(false);
+			birthdayBtn.setText(birthdayBtn.getDate().toString());
+		} else {
+			if(String.valueOf((int)stuCandidate.stPersonInfo.wYear).equals("0000") 
+				|| String.valueOf((int)stuCandidate.stPersonInfo.wYear).equals("0") 
+				|| String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff).equals("0") 
+				|| String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff).equals("00") 
+				|| String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff).equals("0") 
+				|| String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff).equals("00")) {
+				birthdayCheckBox.setSelected(false);
+				birthdayBtn.setText(birthdayBtn.getDate().toString());
+			} else {
+				birthdayCheckBox.setSelected(true);
+				birthdayBtn.setText(String.valueOf((int)stuCandidate.stPersonInfo.wYear) + "-" + 
+									                  String.valueOf( stuCandidate.stPersonInfo.byMonth & 0xff) + "-" + 
+									                  String.valueOf(stuCandidate.stPersonInfo.byDay & 0xff));
+			}
+		}
+	}
+	
+	// 添加人员信息窗口的组件
+	public PaintPanel addImagePanel;
+	private JButton selectImageBtn;
+	
+	private JTextField goroupIdTextField;
+	private JTextField goroupNameTextField;
+	private JTextField uidTextField;
+	public JTextField nameTextField;
+	public JComboBox sexComboBox;
+	public DateChooserJButtonEx birthdayBtn; 
+	public JComboBox idTypeComboBox;
+	public JTextField idTextField;
+	private JButton modifyBtn;
+	private JButton cancelBtn;
+	public JCheckBox birthdayCheckBox;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/NewLatticeScreen.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/NewLatticeScreen.java
new file mode 100644
index 0000000..5f1586c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/NewLatticeScreen.java
@@ -0,0 +1,1186 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import com.netsdk.common.DateChooserJButtonEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.DotmatrixScreenModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.CtrlType;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.structure.NET_IN_SET_PARK_CONTROL_INFO;
+import com.netsdk.lib.structure.NET_OUT_SET_PARK_CONTROL_INFO;
+import com.sun.jna.Pointer;
+
+import javax.swing.*;
+import javax.swing.border.TitledBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 119178 点阵屏下发demo
+ */
+public class NewLatticeScreen {
+
+    // 设备断线通知回调
+    private DisConnect disConnect = new DisConnect();
+
+    // 网络连接恢复
+    private HaveReConnect haveReConnect = new HaveReConnect();
+    private JFrame frame;
+    private JTextField textField;
+    private JTextField textField_1;
+    private JTextField textField_2;
+    private JPasswordField passwordField;
+
+    private JButton btnNewButton;
+    private JButton btnNewButton_1;
+    private JTabbedPane tabbedPane;
+    private JPanel panel_2;
+    private JLabel label_CarStatus;
+    private JComboBox comboBox_CarStatus;
+    private JLabel label_InTime;
+    private DateChooserJButtonEx dateChooser_InTime;
+    private JLabel label_OutTime;
+    private DateChooserJButtonEx dateChooser_OutTime;
+    private JLabel label_PlateNmuber;
+    private JTextField textField_PlateNumber;
+    private JLabel label_CarOwner;
+    private JTextField textField_CarOwner;
+    private JLabel label_ParkingTime;
+    private JTextField textField_ParkingTime;
+    private JLabel label_UserType;
+    private JComboBox comboBox_UserType;
+    private JLabel label_ParkingCharge;
+    private JTextField textField_ParkingCharge;
+    private JLabel label_DaysDue;
+    private JTextField textField_DaysDue;
+    private JLabel label_RemainParkingSpaces;
+    private JTextField textField_RemainParkingSpaces;
+    private JRadioButton radioButton_Allow2Pass;
+    private JRadioButton radioButton_Deny2Pass;
+    private JButton button;
+    private JLabel label_CustomerUserInfo;
+    private JLabel label_RemarksInfo;
+    private JLabel label_CustomerInfo;
+    private JTextField textField_CustomerUserInfo;
+    private JTextField textField_RemarksInfo;
+    private JTextField textField_CustomerInfo;
+    private JPanel panel_1;
+    private JScrollPane scrollPane;
+    private Object[][] ScreenTableData;
+    private Object[][] VideoTableData;
+    private JTable ScreenTable;
+    private JTable VideoTable;
+    private JPanel ScreenInfo;
+
+    private final String[] ScreenTableTitle = {Res.string().getScreenNumber(), Res.string().getContain(),
+            Res.string().getContainType(), Res.string().getContainColor(), Res.string().getScrollType(),
+            Res.string().getScrollSpeed()};
+
+    private final String[] VideoTableTitle = {Res.string().getScreenNumber(), Res.string().getContain(),
+            Res.string().getContainType()};
+
+    private DefaultTableModel Model;
+    private DefaultTableModel VideoModel;
+    private JLabel label_17;
+
+    private JComboBox comboBox_8;
+    private JComboBox comboBox_4;
+    private JComboBox comboBox_5;
+    private JComboBox comboBox_6;
+    private JComboBox comboBox_7;
+    private JButton btnNewButton_3;
+    private JButton btnNewButton_4;
+    private JButton btnNewButton_5;
+    private JTextField textField_21;
+    private JTextField textField_22;
+    private JTextField textField_23;
+    private JButton button_1;
+    private JButton button_2;
+    private JButton button_4;
+    private JButton btnNewButton_6;
+
+    private JLabel label_19;
+
+    // private static NET_IN_SET_PARK_CONTROL_INFO pIn = new
+    // NET_IN_SET_PARK_CONTROL_INFO();
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                NewLatticeScreen demo = new NewLatticeScreen();
+                demo.frame.setVisible(true);
+            }
+        });
+    }
+
+    /**
+     * Create the application.
+     */
+    public NewLatticeScreen() {
+        LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化
+        initialize();
+        // 注册窗体清出事件
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                LoginModule.logout(); // 退出
+                LoginModule.cleanup(); // 关闭工程,释放资源
+                frame.dispose();
+                // 返回主菜单
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+    }
+
+    /////////////////面板///////////////////
+// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+    private class DisConnect implements NetSDKLib.fDisConnect {
+        public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+// 断线提示
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    frame.setTitle(
+                            Res.string().getTargetRecognition() + " : " + Res.string().getDisConnectReconnecting());
+                }
+            });
+        }
+    }
+
+    // 网络连接恢复,设备重连成功回调
+// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+    private class HaveReConnect implements NetSDKLib.fHaveReConnect {
+        public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+// 重连提示
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    frame.setTitle(Res.string().getTargetRecognition() + " : " + Res.string().getOnline());
+                }
+            });
+        }
+    }
+
+    /**
+     * Initialize the contents of the frame.
+     */
+    private void initialize() {
+        frame = new JFrame();
+        frame.setTitle(Res.string().getmatrixScreen());
+        frame.setBounds(200, 200, 807, 578);
+        // frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+        frame.getContentPane().setLayout(null);
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        final JPanel panel1 = new JPanel();
+        panel1.setBounds(10, 10, 100, 50);
+
+        JPanel panel = new JPanel();
+        panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), Res.string().getLogin(),
+                TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        panel.setBounds(10, 10, 771, 40);
+        frame.getContentPane().add(panel);
+        panel.setLayout(null);
+
+        JLabel lblNewLabel = new JLabel(Res.string().getDeviceIp() + ":");
+        lblNewLabel.setBounds(26, 14, 54, 15);
+        panel.add(lblNewLabel);
+
+        textField = new JTextField("172.23.11.180");
+        textField.setBounds(82, 11, 76, 21);
+        panel.add(textField);
+        textField.setColumns(10);
+
+        JLabel lblNewLabel_1 = new JLabel(Res.string().getPort() + ":");
+        lblNewLabel_1.setBounds(168, 14, 47, 15);
+        panel.add(lblNewLabel_1);
+
+        textField_1 = new JTextField("37777");
+        textField_1.setBounds(217, 11, 76, 21);
+        panel.add(textField_1);
+        textField_1.setColumns(10);
+
+        JLabel lblNewLabel_2 = new JLabel(Res.string().getUserName() + ":");
+        lblNewLabel_2.setBounds(302, 14, 47, 15);
+        panel.add(lblNewLabel_2);
+
+        textField_2 = new JTextField("admin");
+        textField_2.setBounds(351, 11, 76, 21);
+        panel.add(textField_2);
+        textField_2.setColumns(10);
+
+        JLabel lblNewLabel_3 = new JLabel(Res.string().getPassword() + ":");
+        lblNewLabel_3.setBounds(435, 14, 38, 15);
+        panel.add(lblNewLabel_3);
+
+        passwordField = new JPasswordField("admin123");
+        passwordField.setBounds(476, 11, 89, 21);
+        panel.add(passwordField);
+
+        btnNewButton = new JButton(Res.string().getLogin());
+        btnNewButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (LoginModule.login(textField.getText(), Integer.parseInt(textField_1.getText()),
+                        textField_2.getText(), new String(passwordField.getPassword()))) {
+                    btnNewButton.setEnabled(false);
+                    btnNewButton_1.setEnabled(true);
+                    button.setEnabled(true);
+
+                    comboBox_8.setEnabled(true);
+                    ;
+                    comboBox_4.setEnabled(true);
+                    comboBox_5.setEnabled(true);
+                    comboBox_6.setEnabled(true);
+                    comboBox_7.setEnabled(true);
+                    btnNewButton_3.setEnabled(true);
+                    btnNewButton_4.setEnabled(true);
+                    btnNewButton_5.setEnabled(true);
+                    textField_21.setEnabled(true);
+                    textField_22.setEnabled(true);
+                    textField_23.setEnabled(true);
+                    button_1.setEnabled(true);
+                    button_2.setEnabled(true);
+                    button_4.setEnabled(true);
+                    btnNewButton_6.setEnabled(true);
+
+                    textField.setEnabled(true);
+                    ;
+                    textField_1.setEditable(true);
+                    ;
+                    textField_2.setEnabled(true);
+                    textField_CustomerInfo.setEnabled(true);
+                    textField_RemarksInfo.setEnabled(true);
+                    textField_CustomerUserInfo.setEnabled(true);
+                    textField_RemainParkingSpaces.setEnabled(true);
+                    textField_DaysDue.setEnabled(true);
+                    textField_ParkingCharge.setEnabled(true);
+                    textField_ParkingTime.setEnabled(true);
+                    textField_CarOwner.setEnabled(true);
+                    textField_PlateNumber.setEnabled(true);
+                    comboBox_UserType.setEnabled(true);
+                    comboBox_CarStatus.setEnabled(true);
+                    radioButton_Allow2Pass.setEnabled(true);
+                    radioButton_Deny2Pass.setEnabled(true);
+                    dateChooser_InTime.setEnabled(true);
+                    dateChooser_OutTime.setEnabled(true);
+                    passwordField.setEnabled(true);
+                } else {
+                    JOptionPane.showMessageDialog(null,
+                            Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                            Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+                }
+            }
+        });
+        btnNewButton.setBounds(584, 10, 76, 23);
+        panel.add(btnNewButton);
+        btnNewButton.setEnabled(true);
+
+        btnNewButton_1 = new JButton(Res.string().getLogout());
+        btnNewButton_1.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                LoginModule.logout();
+                btnNewButton.setEnabled(true);
+                btnNewButton_1.setEnabled(false);
+                button.setEnabled(false);
+
+                comboBox_8.setEnabled(false);
+                ;
+                comboBox_4.setEnabled(false);
+                comboBox_5.setEnabled(false);
+                comboBox_6.setEnabled(false);
+                comboBox_7.setEnabled(false);
+                btnNewButton_3.setEnabled(false);
+                btnNewButton_4.setEnabled(false);
+                btnNewButton_5.setEnabled(false);
+                textField_21.setEnabled(false);
+                textField_22.setEnabled(false);
+                textField_23.setEnabled(false);
+                button_1.setEnabled(false);
+                button_2.setEnabled(false);
+                button_4.setEnabled(false);
+                btnNewButton_6.setEnabled(false);
+
+                textField.setEnabled(false);
+                ;
+                textField_1.setEditable(false);
+                ;
+                textField_2.setEnabled(false);
+                textField_CustomerInfo.setEnabled(false);
+                textField_RemarksInfo.setEnabled(false);
+                textField_CustomerUserInfo.setEnabled(false);
+                textField_RemainParkingSpaces.setEnabled(false);
+                textField_DaysDue.setEnabled(false);
+                textField_ParkingCharge.setEnabled(false);
+                textField_ParkingTime.setEnabled(false);
+                textField_CarOwner.setEnabled(false);
+                textField_PlateNumber.setEnabled(false);
+                comboBox_UserType.setEnabled(false);
+                comboBox_CarStatus.setEnabled(false);
+                radioButton_Allow2Pass.setEnabled(false);
+                radioButton_Deny2Pass.setEnabled(false);
+                dateChooser_InTime.setEnabled(false);
+                dateChooser_OutTime.setEnabled(false);
+                passwordField.setEnabled(true);
+            }
+        });
+        btnNewButton_1.setBounds(678, 10, 76, 23);
+        panel.add(btnNewButton_1);
+        btnNewButton_1.setEnabled(false);
+
+        tabbedPane = new JTabbedPane(JTabbedPane.TOP);
+        tabbedPane.setBounds(10, 60, 771, 470);
+        frame.getContentPane().add(tabbedPane);
+
+        panel_2 = new JPanel();
+        panel_2.setLayout(null);
+        panel_2.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
+        tabbedPane.addTab("part1", null, panel_2, null);
+
+        label_CarStatus = new JLabel(Res.string().getPassingState() + ":");
+        label_CarStatus.setBounds(71, 26, 95, 21);
+        panel_2.add(label_CarStatus);
+
+        comboBox_CarStatus = new JComboBox();
+        comboBox_CarStatus.setEnabled(false);
+        comboBox_CarStatus.setModel(
+                new DefaultComboBoxModel(new String[]{Res.string().getPassingCar(), Res.string().getNoCar()}));
+        comboBox_CarStatus.setBounds(176, 26, 131, 21);
+        comboBox_CarStatus.setSelectedIndex(0);
+        panel_2.add(comboBox_CarStatus);
+
+        label_InTime = new JLabel(Res.string().getInTime() + ":");
+        label_InTime.setBounds(391, 29, 102, 15);
+        panel_2.add(label_InTime);
+
+        dateChooser_InTime = new DateChooserJButtonEx();
+        dateChooser_InTime.setEnabled(false);
+        dateChooser_InTime.setBounds(503, 26, 131, 21);
+        panel_2.add(dateChooser_InTime);
+
+        label_OutTime = new JLabel(Res.string().getOutTime() + ":");
+        label_OutTime.setBounds(391, 84, 102, 15);
+        panel_2.add(label_OutTime);
+
+        dateChooser_OutTime = new DateChooserJButtonEx();
+        dateChooser_OutTime.setEnabled(false);
+        dateChooser_OutTime.setBounds(503, 81, 131, 21);
+        panel_2.add(dateChooser_OutTime);
+
+        label_PlateNmuber = new JLabel(Res.string().getPlateNumber() + ":");
+        label_PlateNmuber.setBounds(71, 84, 95, 15);
+        panel_2.add(label_PlateNmuber);
+
+        textField_PlateNumber = new JTextField();
+        textField_PlateNumber.setEnabled(false);
+        textField_PlateNumber.setColumns(10);
+        textField_PlateNumber.setBounds(176, 81, 131, 21);
+        panel_2.add(textField_PlateNumber);
+
+        label_CarOwner = new JLabel(Res.string().getCarOwner() + ":");
+        label_CarOwner.setBounds(77, 142, 89, 15);
+        panel_2.add(label_CarOwner);
+
+        textField_CarOwner = new JTextField();
+        textField_CarOwner.setEnabled(false);
+        textField_CarOwner.setColumns(10);
+        textField_CarOwner.setBounds(176, 139, 131, 21);
+        panel_2.add(textField_CarOwner);
+
+        label_ParkingTime = new JLabel(Res.string().getParkingTime() + ":");
+        label_ParkingTime.setBounds(391, 133, 102, 15);
+        panel_2.add(label_ParkingTime);
+
+        textField_ParkingTime = new JTextField();
+        textField_ParkingTime.setEnabled(false);
+        textField_ParkingTime.setColumns(10);
+        textField_ParkingTime.setBounds(503, 130, 131, 21);
+        panel_2.add(textField_ParkingTime);
+
+        label_UserType = new JLabel(Res.string().getUserType() + ":");
+        label_UserType.setBounds(71, 198, 95, 15);
+        panel_2.add(label_UserType);
+
+        comboBox_UserType = new JComboBox();
+        comboBox_UserType.setEnabled(false);
+        comboBox_UserType.setModel(new DefaultComboBoxModel(new String[]{Res.string().getMonthlyCardUser(),
+                Res.string().getAnnualCardUser(), Res.string().getLongTermUser(), Res.string().getTemporaryUser()}));
+        comboBox_UserType.setBounds(176, 195, 131, 21);
+        comboBox_UserType.setSelectedIndex(0);
+        panel_2.add(comboBox_UserType);
+
+        label_ParkingCharge = new JLabel(Res.string().getParkingCharge());
+        label_ParkingCharge.setBounds(391, 178, 102, 15);
+        panel_2.add(label_ParkingCharge);
+
+        textField_ParkingCharge = new JTextField();
+        textField_ParkingCharge.setEnabled(false);
+        textField_ParkingCharge.setColumns(10);
+        textField_ParkingCharge.setBounds(503, 175, 131, 21);
+        panel_2.add(textField_ParkingCharge);
+
+        label_DaysDue = new JLabel(Res.string().getDaysDue());
+        label_DaysDue.setBounds(71, 253, 95, 15);
+        panel_2.add(label_DaysDue);
+
+        textField_DaysDue = new JTextField();
+        textField_DaysDue.setEnabled(false);
+        textField_DaysDue.setColumns(10);
+        textField_DaysDue.setBounds(176, 250, 131, 21);
+        panel_2.add(textField_DaysDue);
+
+        label_RemainParkingSpaces = new JLabel(Res.string().getRemainingParkingSpaces());
+        label_RemainParkingSpaces.setBounds(391, 215, 102, 15);
+        panel_2.add(label_RemainParkingSpaces);
+
+        textField_RemainParkingSpaces = new JTextField();
+        textField_RemainParkingSpaces.setEnabled(false);
+        textField_RemainParkingSpaces.setColumns(10);
+        textField_RemainParkingSpaces.setBounds(503, 212, 131, 21);
+        panel_2.add(textField_RemainParkingSpaces);
+
+        radioButton_Deny2Pass = new JRadioButton(Res.string().getVehiclesNotAllowedToPass());
+        radioButton_Deny2Pass.setEnabled(false);
+        radioButton_Deny2Pass.setBounds(367, 249, 155, 23);
+        radioButton_Deny2Pass.setSelected(true);
+        panel_2.add(radioButton_Deny2Pass);
+
+        radioButton_Allow2Pass = new JRadioButton(Res.string().getAllowedVehiclesToPass());
+        radioButton_Allow2Pass.setEnabled(false);
+        radioButton_Allow2Pass.setBounds(524, 249, 162, 23);
+        panel_2.add(radioButton_Allow2Pass);
+
+        ButtonGroup group = new ButtonGroup();
+        group.add(radioButton_Allow2Pass);
+        group.add(radioButton_Deny2Pass);
+
+        button = new JButton(Res.string().getSetUp());
+        button.setEnabled(false);
+        button.setBounds(633, 408, 93, 23);
+        panel_2.add(button);
+
+        label_CustomerUserInfo = new JLabel(Res.string().getCostomUserInfo() + ":");
+        label_CustomerUserInfo.setBounds(58, 290, 119, 21);
+        panel_2.add(label_CustomerUserInfo);
+
+        label_RemarksInfo = new JLabel(Res.string().getRemarksInfo() + ":");
+        label_RemarksInfo.setBounds(58, 332, 97, 21);
+        panel_2.add(label_RemarksInfo);
+
+        label_CustomerInfo = new JLabel(Res.string().getCostomInfo() + ":");
+        label_CustomerInfo.setBounds(58, 375, 95, 21);
+        panel_2.add(label_CustomerInfo);
+
+        textField_CustomerUserInfo = new JTextField();
+        textField_CustomerUserInfo.setEnabled(false);
+        textField_CustomerUserInfo.setColumns(10);
+        textField_CustomerUserInfo.setBounds(176, 287, 460, 28);
+        panel_2.add(textField_CustomerUserInfo);
+
+        textField_RemarksInfo = new JTextField();
+        textField_RemarksInfo.setEnabled(false);
+        textField_RemarksInfo.setColumns(10);
+        textField_RemarksInfo.setBounds(176, 329, 460, 28);
+        panel_2.add(textField_RemarksInfo);
+
+        textField_CustomerInfo = new JTextField();
+        textField_CustomerInfo.setEnabled(false);
+        textField_CustomerInfo.setColumns(10);
+        textField_CustomerInfo.setBounds(176, 372, 460, 28);
+        panel_2.add(textField_CustomerInfo);
+
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                int emType = NetSDKLib.CtrlType.CTRLTYPE_CTRL_SET_PARK_INFO;
+
+                NetSDKLib.NET_CTRL_SET_PARK_INFO msg = new NetSDKLib.NET_CTRL_SET_PARK_INFO();
+
+                try {
+                    byte[] plateNumber = textField_PlateNumber.getText().getBytes("GBK");
+                    System.arraycopy(plateNumber, 0, msg.szPlateNumber, 0, plateNumber.length);
+                } catch (UnsupportedEncodingException e2) {
+                    // TODO Auto-generated catch block
+                    e2.printStackTrace();
+                }
+
+                if (!textField_ParkingTime.getText().equals("")) {
+                    msg.nParkTime = Integer.parseInt(textField_ParkingTime.getText());
+                } else {
+                    msg.nParkTime = 0;
+                }
+
+                try {
+                    byte[] masterOfCar = textField_CarOwner.getText().getBytes("GBK");
+                    System.arraycopy(masterOfCar, 0, msg.szMasterofCar, 0, masterOfCar.length);
+                } catch (UnsupportedEncodingException e2) {
+                    // TODO Auto-generated catch block
+                    e2.printStackTrace();
+                }
+
+                if (comboBox_UserType.getSelectedItem() != null) {
+                    if (comboBox_UserType.getSelectedItem().equals(Res.string().getMonthlyCardUser())) {
+                        System.arraycopy("monthlyCardUser".getBytes(), 0, msg.szUserType, 0, "monthlyCardUser".length());
+                    } else if (comboBox_UserType.getSelectedItem().equals(Res.string().getAnnualCardUser())) {
+                        System.arraycopy("yearlyCardUser".getBytes(), 0, msg.szUserType, 0, "yearlyCardUser".length());
+                    } else if (comboBox_UserType.getSelectedItem().equals(Res.string().getLongTermUser())) {
+                        System.arraycopy("longTimeUser".getBytes(), 0, msg.szUserType, 0, "longTimeUser".length());
+                    } else if (comboBox_UserType.getSelectedItem().equals(Res.string().getTemporaryUser())) {
+                        System.arraycopy("casualUser".getBytes(), 0, msg.szUserType, 0, "casualUser".length());
+                    }
+                }
+
+                if (!textField_DaysDue.getText().equals("")) {
+                    msg.nRemainDay = Integer.parseInt(textField_DaysDue.getText());
+                } else {
+                    msg.nRemainDay = 0;
+                }
+
+                if (radioButton_Deny2Pass.isSelected()) {
+                    msg.nPassEnable = 0;
+                } else if (radioButton_Allow2Pass.isSelected()) {
+                    msg.nPassEnable = 1;
+                }
+                String InTime = dateChooser_InTime.getText();// 车辆入场时间
+                String[] InTimes = InTime.split("-");
+
+                msg.stuInTime.dwYear = (short) Integer.parseInt(InTimes[0]);
+                msg.stuInTime.dwMonth = (byte) Integer.parseInt(InTimes[1]);
+                msg.stuInTime.dwDay = (byte) Integer.parseInt(InTimes[2]);
+
+                String OutTime = dateChooser_OutTime.getText();// 车辆出场时间
+                String[] OutTimes = OutTime.split("-");
+
+                msg.stuOutTime.dwYear = (short) Integer.parseInt(OutTimes[0]);
+                msg.stuOutTime.dwMonth = (byte) Integer.parseInt(OutTimes[1]);
+                msg.stuOutTime.dwDay = (byte) Integer.parseInt(OutTimes[2]);
+
+                try {
+                    byte[] parkCharge = textField_ParkingCharge.getText().getBytes("GBK");
+                    System.arraycopy(parkCharge, 0, msg.szParkCharge, 0, parkCharge.length);
+                } catch (UnsupportedEncodingException e2) {
+                    // TODO Auto-generated catch block
+                    e2.printStackTrace();
+                }
+
+                if (!textField_RemainParkingSpaces.getText().equals("")) {
+                    msg.nRemainSpace = Integer.parseInt(textField_RemainParkingSpaces.getText());
+                } else {
+                    msg.nRemainSpace = 0;
+                }
+
+                if (comboBox_CarStatus.getSelectedItem() != null) {
+                    if (comboBox_CarStatus.getSelectedItem().equals(Res.string().getPassingCar())) {
+                        msg.emCarStatus = 1;
+                    } else if (comboBox_CarStatus.getSelectedItem().equals(Res.string().getNoCar())) {
+                        msg.emCarStatus = 2;
+                    }
+                }
+
+                try {
+                    byte[] subUserType = textField_CustomerUserInfo.getText().getBytes("GBK");
+                    System.arraycopy(subUserType, 0, msg.szSubUserType, 0, subUserType.length);
+                } catch (UnsupportedEncodingException e1) {
+                    // TODO Auto-generated catch block
+                    e1.printStackTrace();
+                }
+                try {
+                    byte[] remarks = textField_RemarksInfo.getText().getBytes("GBK");
+                    System.arraycopy(remarks, 0, msg.szRemarks, 0, remarks.length);
+                } catch (UnsupportedEncodingException e1) {
+                    // TODO Auto-generated catch block
+                    e1.printStackTrace();
+                }
+                try {
+                    byte[] custom = textField_CustomerInfo.getText().getBytes("GBK");
+                    System.arraycopy(custom, 0, msg.szCustom, 0, custom.length);
+                } catch (UnsupportedEncodingException e1) {
+                    // TODO Auto-generated catch block
+                    e1.printStackTrace();
+                }
+
+                msg.write();
+                boolean ret = DotmatrixScreenModule.setDotmatrixScreen(emType, msg);
+                if (ret) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getSetUpSuccess());
+                } else {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getSetUpFailed());
+                }
+            }
+        });
+
+        panel_1 = new JPanel();
+        tabbedPane.addTab("part2", null, panel_1, null);
+        panel_1.setLayout(null);
+        ScreenInfo = new JPanel();
+        ScreenInfo.setBorder(
+                new TitledBorder(null, Res.string().getEventInfo(), TitledBorder.LEFT, TitledBorder.TOP, null, null));
+        ScreenInfo.setSize(500, 405);
+        ScreenInfo.setLocation(10, 5);
+        panel_1.add(ScreenInfo);
+        ScreenInfo.setLayout(null);
+
+        ScreenTableData = new Object[0][6];
+        ScreenTable = tableInit(ScreenTableData, ScreenTableTitle);
+        Model = (DefaultTableModel) ScreenTable.getModel();
+        scrollPane = new JScrollPane(ScreenTable);
+        scrollPane.setBounds(10, 19, 480, 221);
+        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        ScreenInfo.add(scrollPane);
+
+        btnNewButton_3 = new JButton(Res.string().getAdd());
+        btnNewButton_3.setEnabled(false);
+        btnNewButton_3.setBounds(10, 250, 75, 20);
+        btnNewButton_3.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+
+                String Contain = textField_21.getText();
+                int ScreenNum = Integer.parseInt(textField_22.getText());
+                String ContainType = null;
+                String ContainColor = null;
+                String ScrollType = null;
+                String ScrollSpeed = null;
+                if (comboBox_4.getSelectedItem().equals(Res.string().getOrdinary())) {
+                    ContainType = /* "普通" */Res.string().getOrdinary();
+                } else if (comboBox_4.getSelectedItem().equals(Res.string().getLocalTime())) {
+                    ContainType = /* "本地时间" */Res.string().getLocalTime();
+                } else if (comboBox_4.getSelectedItem().equals(Res.string().getQRCode())) {
+                    ContainType = /* "二维码" */Res.string().getQRCode();
+                } /*
+                 * else if(comboBox_4.getSelectedItem().equals(Res.string().getResource())) {
+                 * ContainType = "资源文件" Res.string().getResource(); }
+                 */
+
+                if (comboBox_5.getSelectedItem().equals(Res.string().getGreen())) {
+                    ContainColor = /* "绿色" */Res.string().getGreen();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getRed())) {
+                    ContainColor = /* "红色" */Res.string().getRed();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getYellow())) {
+                    ContainColor = /* "黄色" */Res.string().getYellow();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getWhite())) {
+                    ContainColor = /* "白色" */Res.string().getWhite();
+                }
+                if (comboBox_6.getSelectedItem().equals(Res.string().getNoRolling())) {
+                    ScrollType = /* "不滚动" */Res.string().getNoRolling();
+                } else if (comboBox_6.getSelectedItem().equals(Res.string().getScrollLeftAndRight())) {
+                    ScrollType = /* "左右滚动" */Res.string().getScrollLeftAndRight();
+                } else if (comboBox_6.getSelectedItem().equals(Res.string().getScrollTopAndDown())) {
+                    ScrollType = /* "上下翻页滚动" */Res.string().getScrollTopAndDown();
+                }
+                if (comboBox_7.getSelectedItem().equals("1")) {
+                    ScrollSpeed = /* "速率1" */Res.string().getSpeed() + "1";
+                } else if (comboBox_7.getSelectedItem().equals("2")) {
+                    ScrollSpeed = /* "速率2" */Res.string().getSpeed() + "2";
+                } else if (comboBox_7.getSelectedItem().equals("3")) {
+                    ScrollSpeed = /* "速率3" */Res.string().getSpeed() + "3";
+                } else if (comboBox_7.getSelectedItem().equals("4")) {
+                    ScrollSpeed = /* "速率4" */Res.string().getSpeed() + "4";
+                } else if (comboBox_7.getSelectedItem().equals("5")) {
+                    ScrollSpeed = /* "速率5" */Res.string().getSpeed() + "5";
+                }
+                /*
+                 * Model.setValueAt(ScreenNum, index, 0); Model.setValueAt(Contain, index, 1);
+                 * Model.setValueAt(ContainType, index, 2); Model.setValueAt(ContainColor,
+                 * index, 3); Model.setValueAt(ScrollType, index, 4);
+                 * Model.setValueAt(ScrollSpeed, index, 5); index++;
+                 */
+                List<Integer> num = new ArrayList<Integer>();
+                for (int i = 0; i < Model.getRowCount(); i++) {
+                    num.add((Integer) Model.getValueAt(i, 0));
+                }
+                if (ScreenNum == -1 || Contain == null) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    if (num.contains(ScreenNum)) {
+                        JOptionPane.showMessageDialog(panel1, "屏幕编号已存在,请删除或修改屏幕编号!");
+                    } else {
+                        Model.addRow(new Object[]{ScreenNum, Contain, ContainType, ContainColor, ScrollType,
+                                ScrollSpeed});
+                    }
+                }
+            }
+        });
+        ScreenInfo.add(btnNewButton_3);
+
+        btnNewButton_4 = new JButton(Res.string().getModify());
+        btnNewButton_4.setEnabled(false);
+        btnNewButton_4.setBounds(96, 250, 75, 20);
+        btnNewButton_4.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                String Contain = textField_21.getText();
+                int ScreenNum = Integer.parseInt(textField_22.getText());
+                // int ScreenNum = (int)Model.getValueAt(ScreenTable.getSelectedRow(), 0);
+                String ContainType = null;
+                String ContainColor = null;
+                String ScrollType = null;
+                String ScrollSpeed = null;
+                if (comboBox_4.getSelectedItem().equals(Res.string().getOrdinary())) {
+                    ContainType = /* "普通" */Res.string().getOrdinary();
+                } else if (comboBox_4.getSelectedItem().equals(Res.string().getLocalTime())) {
+                    ContainType = /* "本地时间" */Res.string().getLocalTime();
+                } else if (comboBox_4.getSelectedItem().equals(Res.string().getQRCode())) {
+                    ContainType = /* "二维码" */Res.string().getQRCode();
+                } /*
+                 * else if (comboBox_4.getSelectedItem().equals(Res.string().getResource())) {
+                 * ContainType = "资源文件" Res.string().getResource(); }
+                 */
+
+                if (comboBox_5.getSelectedItem().equals(Res.string().getGreen())) {
+                    ContainColor = /* "绿色" */Res.string().getGreen();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getRed())) {
+                    ContainColor = /* "红色" */Res.string().getRed();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getYellow())) {
+                    ContainColor = /* "黄色" */Res.string().getYellow();
+                } else if (comboBox_5.getSelectedItem().equals(Res.string().getWhite())) {
+                    ContainColor = /* "白色" */Res.string().getWhite();
+                }
+                if (comboBox_6.getSelectedItem().equals(Res.string().getNoRolling())) {
+                    ScrollType = /* "不滚动" */Res.string().getNoRolling();
+                } else if (comboBox_6.getSelectedItem().equals(Res.string().getScrollLeftAndRight())) {
+                    ScrollType = /* "左右滚动" */Res.string().getScrollLeftAndRight();
+                } else if (comboBox_6.getSelectedItem().equals(Res.string().getScrollTopAndDown())) {
+                    ScrollType = /* "上下翻页滚动" */Res.string().getScrollTopAndDown();
+                }
+                if (comboBox_7.getSelectedItem().equals("1")) {
+                    ScrollSpeed = /* "速率1" */Res.string().getSpeed() + "1";
+                } else if (comboBox_7.getSelectedItem().equals("2")) {
+                    ScrollSpeed = /* "速率2" */Res.string().getSpeed() + "2";
+                } else if (comboBox_7.getSelectedItem().equals("3")) {
+                    ScrollSpeed = /* "速率3" */Res.string().getSpeed() + "3";
+                } else if (comboBox_7.getSelectedItem().equals("4")) {
+                    ScrollSpeed = /* "速率4" */Res.string().getSpeed() + "4";
+                } else if (comboBox_7.getSelectedItem().equals("5")) {
+                    ScrollSpeed = /* "速率5" */Res.string().getSpeed() + "5";
+                }
+
+                List<Integer> num = new ArrayList<Integer>();
+                for (int i = 0; i < Model.getRowCount(); i++) {
+                    num.add((Integer) Model.getValueAt(i, 0));
+                }
+                num.remove(ScreenTable.getSelectedRow());
+                if (Model.getRowCount() == 0) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    if (num.contains(ScreenNum)) {
+                        JOptionPane.showMessageDialog(panel1, "屏幕编号已存在,请删除或修改屏幕编号!");
+                    } else {
+                        Model.setValueAt(ScreenNum, ScreenTable.getSelectedRow(), 0);
+                        Model.setValueAt(Contain, ScreenTable.getSelectedRow(), 1);
+                        Model.setValueAt(ContainType, ScreenTable.getSelectedRow(), 2);
+                        Model.setValueAt(ContainColor, ScreenTable.getSelectedRow(), 3);
+                        Model.setValueAt(ScrollType, ScreenTable.getSelectedRow(), 4);
+                        Model.setValueAt(ScrollSpeed, ScreenTable.getSelectedRow(), 5);
+                    }
+                }
+            }
+        });
+        ScreenInfo.add(btnNewButton_4);
+
+        btnNewButton_5 = new JButton(Res.string().getDelete());
+        btnNewButton_5.setEnabled(false);
+        btnNewButton_5.setBounds(181, 250, 75, 20);
+        btnNewButton_5.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                // System.out.println(ScreenTable.getSelectedRow());
+                if (Model.getRowCount() == 0) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    Model.removeRow(ScreenTable.getSelectedRow());
+                }
+            }
+        });
+        ScreenInfo.add(btnNewButton_5);
+
+        textField_21 = new JTextField();
+        textField_21.setEnabled(false);
+        textField_21.setBounds(21, 305, 171, 92);
+        ScreenInfo.add(textField_21);
+        textField_21.setColumns(10);
+
+        JLabel lblNewLabel_4 = new JLabel(Res.string().getScreenNumber() + ":");
+        lblNewLabel_4.setBounds(266, 265, 69, 15);
+        ScreenInfo.add(lblNewLabel_4);
+
+        textField_22 = new JTextField(new String("-1"));
+        textField_22.setEnabled(false);
+        textField_22.setBounds(327, 262, 159, 21);
+        ScreenInfo.add(textField_22);
+        textField_22.setColumns(10);
+
+        JLabel label = new JLabel(Res.string().getContainType() + ":");
+        label.setBounds(266, 297, 69, 15);
+        ScreenInfo.add(label);
+
+        comboBox_4 = new JComboBox();
+        comboBox_4.setEnabled(false);
+        comboBox_4.setModel(new DefaultComboBoxModel(new String[]{Res.string().getOrdinary(),
+                Res.string().getLocalTime(), Res.string().getQRCode()/* , Res.string().getResource() */}));
+        comboBox_4.setBounds(327, 294, 159, 21);
+        ScreenInfo.add(comboBox_4);
+
+        JLabel label_1 = new JLabel(Res.string().getContainColor() + ":");
+        label_1.setBounds(266, 325, 69, 15);
+        ScreenInfo.add(label_1);
+
+        comboBox_5 = new JComboBox();
+        comboBox_5.setEnabled(false);
+        comboBox_5.setModel(new DefaultComboBoxModel(new String[]{Res.string().getGreen(), Res.string().getRed(),
+                Res.string().getYellow(), Res.string().getWhite()}));
+        comboBox_5.setBounds(327, 322, 159, 21);
+        ScreenInfo.add(comboBox_5);
+
+        JLabel label_2 = new JLabel(Res.string().getScrollType() + ":");
+        label_2.setBounds(266, 350, 69, 15);
+        ScreenInfo.add(label_2);
+
+        comboBox_6 = new JComboBox();
+        comboBox_6.setEnabled(false);
+        comboBox_6.setModel(new DefaultComboBoxModel(new String[]{Res.string().getNoRolling(),
+                Res.string().getScrollLeftAndRight(), Res.string().getScrollTopAndDown()}));
+        comboBox_6.setBounds(327, 350, 159, 21);
+        ScreenInfo.add(comboBox_6);
+
+        JLabel label_16 = new JLabel(Res.string().getScrollSpeed() + ":");
+        label_16.setBounds(266, 380, 69, 15);
+        ScreenInfo.add(label_16);
+
+        comboBox_7 = new JComboBox();
+        comboBox_7.setEnabled(false);
+        comboBox_7.setModel(new DefaultComboBoxModel(new String[]{"1", "2", "3", "4", "5"}));
+        comboBox_7.setBounds(327, 377, 159, 21);
+        ScreenInfo.add(comboBox_7);
+
+        JLabel label_18 = new JLabel(Res.string().getContain() + ":");
+        label_18.setBounds(22, 280, 69, 15);
+        ScreenInfo.add(label_18);
+
+        JPanel panel_3 = new JPanel();
+        panel_3.setBounds(520, 5, 240, 405);
+        panel_3.setBorder(
+                new TitledBorder(null, Res.string().getEventInfo(), TitledBorder.LEFT, TitledBorder.TOP, null, null));
+        panel_1.add(panel_3);
+        panel_3.setLayout(null);
+
+        VideoTableData = new Object[0][3];
+        VideoTable = tableInit(VideoTableData, VideoTableTitle);
+        VideoModel = (DefaultTableModel) VideoTable.getModel();
+        JScrollPane scrollPane_1 = new JScrollPane(VideoTable);
+        scrollPane_1.setBounds(10, 20, 225, 180);
+        panel_3.add(scrollPane_1);
+
+        button_1 = new JButton(Res.string().getAdd());
+        button_1.setEnabled(false);
+        button_1.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                String containType = null;
+                String contain = null;
+                int ScreenNum = Integer.parseInt(textField_22.getText());
+                contain = textField_23.getText();
+                if (comboBox_8.getSelectedItem().equals(Res.string().getOrdinary())) {
+                    containType = /* "普通" */Res.string().getOrdinary();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getPlateNumber())) {
+                    containType = /* "车牌号码" */Res.string().getPlateNumber();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getTime())) {
+                    containType = /* "时间" */Res.string().getTime();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getNumericString())) {
+                    containType = /* "数字字符串" */Res.string().getNumericString();
+                }
+
+                /*
+                 * VideoModel.setValueAt(ScreenNum, VedioIndex, 0);
+                 * VideoModel.setValueAt(containType, VedioIndex, 1); VedioIndex++;
+                 */
+
+                List<Integer> num = new ArrayList<Integer>();
+                for (int i = 0; i < VideoModel.getRowCount(); i++) {
+                    num.add((Integer) VideoModel.getValueAt(i, 0));
+                }
+                if (ScreenNum == -1 || contain == null) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    if (num.contains(ScreenNum)) {
+                        JOptionPane.showMessageDialog(panel1, "屏幕编号已存在,请删除或修改屏幕编号!");
+                    } else {
+                        VideoModel.addRow(new Object[]{ScreenNum, contain, containType});
+                    }
+                }
+            }
+        });
+        button_1.setBounds(10, 213, 67, 20);
+        panel_3.add(button_1);
+
+        button_2 = new JButton(Res.string().getModify());
+        button_2.setEnabled(false);
+        button_2.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                String containType = null;
+                int ScreenNum = Integer.parseInt(textField_22.getText());
+                // int ScreenNum = (int)VideoModel.getValueAt(ScreenTable.getSelectedRow(), 0);
+                String contain = textField_23.getText();
+                if (comboBox_8.getSelectedItem().equals(Res.string().getOrdinary())) {
+                    containType = /* "普通" */Res.string().getOrdinary();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getPlateNumber())) {
+                    containType = /* "车牌号码" */Res.string().getPlateNumber();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getTime())) {
+                    containType = /* "时间" */Res.string().getTime();
+                } else if (comboBox_8.getSelectedItem().equals(Res.string().getNumericString())) {
+                    containType = /* "数字字符串" */Res.string().getNumericString();
+                }
+
+                List<Integer> num = new ArrayList<Integer>();
+                for (int i = 0; i < VideoTable.getRowCount(); i++) {
+                    num.add((Integer) VideoTable.getValueAt(i, 0));
+                }
+                num.remove(VideoTable.getSelectedRow());
+                if (VideoTable.getRowCount() == 0) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+
+                    if (num.contains(ScreenNum)) {
+                        JOptionPane.showMessageDialog(panel1,
+                                "屏幕编号已存在,请删除或修改屏幕编号!");
+                    } else {
+                        VideoModel.setValueAt(ScreenNum,
+                                VideoTable.getSelectedRow(), 0);
+
+                        VideoModel.setValueAt(contain, VideoTable.getSelectedRow(), 1);
+                        VideoModel.setValueAt(containType, VideoTable.getSelectedRow(), 2);
+                    }
+                }
+            }
+        });
+        button_2.setBounds(87, 213, 67, 20);
+        panel_3.add(button_2);
+
+        button_4 = new JButton(Res.string().getDelete());
+        button_4.setEnabled(false);
+        button_4.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                // System.out.println(VideoTable.getSelectedRow());
+                if (VideoTable.getRowCount() == 0) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    VideoModel.removeRow(VideoTable.getSelectedRow());
+                }
+
+                /*
+                 * VideoModel.setValueAt("", VideoTable.getSelectedRow(), 0);
+                 * VideoModel.setValueAt("", VideoTable.getSelectedRow(), 1); VedioIndex= 0;
+                 */
+            }
+        });
+        button_4.setBounds(164, 213, 71, 20);
+        panel_3.add(button_4);
+
+        label_17 = new JLabel(Res.string().getContainType() + ":");
+        label_17.setBounds(10, 252, 69, 15);
+        panel_3.add(label_17);
+
+        comboBox_8 = new JComboBox();
+        comboBox_8.setEnabled(false);
+        comboBox_8.setModel(new DefaultComboBoxModel(new String[]{Res.string().getOrdinary(),
+                Res.string().getPlateNumber(), Res.string().getTime(), Res.string().getNumericString()}));
+        comboBox_8.setBounds(71, 249, 159, 21);
+        panel_3.add(comboBox_8);
+
+        label_19 = new JLabel(Res.string().getVoiceText() + ":");
+        label_19.setBounds(10, 280, 69, 15);
+        panel_3.add(label_19);
+
+        textField_23 = new JTextField();
+        textField_23.setEnabled(false);
+        textField_23.setColumns(10);
+        textField_23.setBounds(10, 305, 220, 92);
+        panel_3.add(textField_23);
+
+        btnNewButton_6 = new JButton(Res.string().getIssued());
+        btnNewButton_6.setEnabled(false);
+        btnNewButton_6.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                // TODO Auto-generated method stub
+                NET_IN_SET_PARK_CONTROL_INFO pIn = new NET_IN_SET_PARK_CONTROL_INFO();
+
+                pIn.nScreenShowInfoNum = Model.getRowCount();
+                // System.out.println(pIn.nScreenShowInfoNum);
+                for (int i = 0; i < pIn.nScreenShowInfoNum; i++) {
+                    pIn.stuScreenShowInfo[i].nScreenNo = Integer.parseInt(String.valueOf(Model.getValueAt(i, 0)));
+                    try {
+                        pIn.stuScreenShowInfo[i].szText = String.valueOf(Model.getValueAt(i, 1)).getBytes("GBK");
+                    } catch (UnsupportedEncodingException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+
+                    if (String.valueOf(Model.getValueAt(i, 2)).trim().equals(Res.string().getOrdinary())) {
+                        pIn.stuScreenShowInfo[i].emTextType = 0;
+                    } else if (String.valueOf(Model.getValueAt(i, 2)).trim().equals(Res.string().getLocalTime())) {
+                        pIn.stuScreenShowInfo[i].emTextType = 1;
+                    } else if (String.valueOf(Model.getValueAt(i, 2)).trim().equals(Res.string().getQRCode())) {
+                        pIn.stuScreenShowInfo[i].emTextType = 2;
+                    } else if (String.valueOf(Model.getValueAt(i, 2)).trim().equals(Res.string().getResource())) {
+                        pIn.stuScreenShowInfo[i].emTextType = 3;
+                    }
+
+                    if (String.valueOf(Model.getValueAt(i, 3)).trim().equals(Res.string().getGreen())) {
+                        pIn.stuScreenShowInfo[i].emTextColor = 0;
+                    } else if (String.valueOf(Model.getValueAt(i, 3)).trim().equals(Res.string().getRed())) {
+                        pIn.stuScreenShowInfo[i].emTextColor = 1;
+                    } else if (String.valueOf(Model.getValueAt(i, 3)).trim().equals(Res.string().getYellow())) {
+                        pIn.stuScreenShowInfo[i].emTextColor = 2;
+                    } else if (String.valueOf(Model.getValueAt(i, 3)).trim().equals(Res.string().getWhite())) {
+                        pIn.stuScreenShowInfo[i].emTextColor = 3;
+                    }
+
+                    if (String.valueOf(Model.getValueAt(i, 4)).trim().equals(Res.string().getNoRolling())) {
+                        pIn.stuScreenShowInfo[i].emTextRollMode = 0;
+                    } else if (String.valueOf(Model.getValueAt(i, 4)).trim()
+                            .equals(Res.string().getScrollLeftAndRight())) {
+                        pIn.stuScreenShowInfo[i].emTextRollMode = 1;
+                    } else if (String.valueOf(Model.getValueAt(i, 4)).trim()
+                            .equals(Res.string().getScrollTopAndDown())) {
+                        pIn.stuScreenShowInfo[i].emTextRollMode = 2;
+                    }
+                    System.out.println(String.valueOf(Model.getValueAt(i, 5)).trim());
+                    System.out.println(Res.string().getSpeed() + "1");
+                    if (String.valueOf(Model.getValueAt(i, 5)).trim().equals(Res.string().getSpeed() + "1")) {
+                        pIn.stuScreenShowInfo[i].nRollSpeed = 1;
+                    } else if (String.valueOf(Model.getValueAt(i, 5)).trim().equals(Res.string().getSpeed() + "2")) {
+                        pIn.stuScreenShowInfo[i].nRollSpeed = 2;
+                    } else if (String.valueOf(Model.getValueAt(i, 5)).trim().equals(Res.string().getSpeed() + "3")) {
+                        pIn.stuScreenShowInfo[i].nRollSpeed = 3;
+                    } else if (String.valueOf(Model.getValueAt(i, 5)).trim().equals(Res.string().getSpeed() + "4")) {
+                        pIn.stuScreenShowInfo[i].nRollSpeed = 4;
+                    } else if (String.valueOf(Model.getValueAt(i, 5)).trim().equals(Res.string().getSpeed() + "5")) {
+                        pIn.stuScreenShowInfo[i].nRollSpeed = 5;
+                    }
+                    // pIn.stuScreenShowInfo[i].nRollSpeed =
+                    // Integer.parseInt(String.valueOf(Model.getValueAt(i, 5))) ;
+                }
+                pIn.nBroadcastInfoNum = VideoModel.getRowCount();
+                System.out.println(pIn.nBroadcastInfoNum);
+                for (int i = 0; i < pIn.nBroadcastInfoNum; i++) {
+                    System.out.println(String.valueOf(VideoModel.getValueAt(i, 2)).trim());
+                    try {
+                        System.out.println(new String(pIn.stuBroadcastInfo[i].szText, "GBK").trim());
+                        pIn.stuBroadcastInfo[i].szText = String.valueOf(VideoModel.getValueAt(i, 1)).getBytes("GBK");
+                    } catch (UnsupportedEncodingException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                    if (String.valueOf(VideoModel.getValueAt(i, 2)).trim().equals(Res.string().getOrdinary())) {
+                        pIn.stuBroadcastInfo[i].emTextType = 0;
+                    } else if (String.valueOf(VideoModel.getValueAt(i, 2)).trim()
+                            .equals(Res.string().getPlateNumber())) {
+                        pIn.stuBroadcastInfo[i].emTextType = 1;
+                    } else if (String.valueOf(VideoModel.getValueAt(i, 2)).trim().equals(Res.string().getTime())) {
+                        pIn.stuBroadcastInfo[i].emTextType = 2;
+                    } else if (String.valueOf(VideoModel.getValueAt(i, 2)).trim()
+                            .equals(Res.string().getNumericString())) {
+                        pIn.stuBroadcastInfo[i].emTextType = 3;
+                    }
+                }
+                if (pIn.nScreenShowInfoNum == 0 && pIn.nBroadcastInfoNum == 0) {
+                    JOptionPane.showMessageDialog(panel1, Res.string().getPrompt());
+                } else {
+                    if (controlDevice(pIn)) {
+                        JOptionPane.showMessageDialog(panel1, Res.string().getSetUpSuccess());
+                    } else {
+                        JOptionPane.showMessageDialog(panel1, Res.string().getSetUpFailed());
+                    }
+                }
+            }
+        });
+        btnNewButton_6.setBounds(652, 413, 93, 23);
+        panel_1.add(btnNewButton_6);
+
+    }
+
+    public JTable tableInit(Object[][] data, String[] columnName) {
+        JTable table;
+        DefaultTableModel model;
+        model = new DefaultTableModel(data, columnName);
+        table = new JTable(model) {
+            @Override // 不可编辑
+            public boolean isCellEditable(int row, int column) {
+                return false;
+            }
+        };
+        model = (DefaultTableModel) table.getModel();
+
+        table.setPreferredScrollableViewportSize(new Dimension(500, 500));
+        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 只能选中一行
+
+        // 列表显示居中
+        DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+        dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+        table.setDefaultRenderer(Object.class, dCellRenderer);
+        return table;
+    }
+
+    public Boolean controlDevice(NET_IN_SET_PARK_CONTROL_INFO pIn) {
+        for (int i = 0; i < 5; i++) {
+            System.out.println(pIn.stuScreenShowInfo[i].emTextType);
+        }
+
+        int emType = CtrlType.CTRL_SET_PARK_CONTROL_INFO;
+        // System.out.println(new String(pIn.stuScreenShowInfo[0].szText));
+        NET_OUT_SET_PARK_CONTROL_INFO pOut = new NET_OUT_SET_PARK_CONTROL_INFO();
+        pIn.write();
+        pOut.write();
+        Boolean ret = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle, emType, pIn.getPointer(),
+                pOut.getPointer(), 3000);
+        if (ret) {
+            System.out.println("CLIENT_ControlDeviceEx success");
+        } else {
+            System.out.println("CLIENT_ControlDeviceEx fail " + getErrorCode());
+        }
+        return ret;
+
+    }
+
+    public String getErrorCode() {
+        return " { error code: ( 0x80000000|" + (LoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff)
+                + " ). 参考  NetSDKLib.java }";
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/PersonOperateDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/PersonOperateDialog.java
new file mode 100644
index 0000000..ad9815f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/PersonOperateDialog.java
@@ -0,0 +1,856 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.concurrent.ExecutionException;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.sun.jna.Memory;
+
+import com.netsdk.common.*;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+public class PersonOperateDialog extends JDialog{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private String groupId = "";
+	private String groupName = "";
+	
+	// 添加人员界面
+	public AddPersonDialog addPersonDialog = null;
+	
+	// 修改人员界面
+	public ModifyPersonDialog modifyPersonDialog = null;
+	
+	// 查询起始索引
+	private int nBeginNum = 0;
+	
+	// 页数
+	private int nPagesNumber = 0;
+	
+	// 查询人员总数
+	private int nTotalCount = 0;
+	
+	private HashMap<String, CANDIDATE_INFOEX> cadidateHashMap = new HashMap<String, CANDIDATE_INFOEX>();
+	
+	public PersonOperateDialog(String groupId, String groupName) {
+	    setTitle(Res.string().getPersonOperate());
+	    setLayout(new BorderLayout());
+	    setModal(true);  
+	    pack();
+	    setSize(680, 520);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    
+		this.groupId = groupId;
+		this.groupName = groupName;
+		
+	    PersonInfoPanel personInfoPanel = new PersonInfoPanel();
+	    PersonInfoListPanel personInfoListPanel = new PersonInfoListPanel();
+	    
+	    add(personInfoPanel, BorderLayout.NORTH);
+	    add(personInfoListPanel, BorderLayout.CENTER);
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		nBeginNum = 0;    		
+	    		nPagesNumber = 0;    		
+	    		nTotalCount = 0;    		
+	    		cadidateHashMap.clear();
+
+	    		dispose();
+	    	}
+	    });
+	}
+	
+	
+	/*
+	 * 查找条件信息
+	 */
+	private class SearchInfoPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		public SearchInfoPanel() {
+			BorderEx.set(this, Res.string().getFindCondition(), 1);
+			setLayout(new FlowLayout());
+			
+			JLabel goroupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER);
+			JLabel goroupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER);
+			JLabel nameLabel = new JLabel(Res.string().getName(), JLabel.CENTER);
+			JLabel sexLabel = new JLabel(Res.string().getSex(), JLabel.CENTER);
+			JLabel IdTypeLabel = new JLabel(Res.string().getIdType(), JLabel.CENTER);
+			JLabel IdLabel = new JLabel(Res.string().getIdNo(), JLabel.CENTER);
+			JLabel birthdayLabel = new JLabel(Res.string().getBirthday(), JLabel.CENTER);
+			JLabel lineLabel = new JLabel("-", JLabel.CENTER);
+			startBirthdayCheckBox = new JCheckBox();
+			endBirthdayCheckBox = new JCheckBox();
+			JLabel nullLabel = new JLabel();
+			
+			Dimension dimension1 = new Dimension();
+			dimension1.height = 20;
+			dimension1.width = 80;
+			goroupIdLabel.setPreferredSize(dimension1);
+			goroupNameLabel.setPreferredSize(dimension1);
+			nameLabel.setPreferredSize(dimension1);
+			sexLabel.setPreferredSize(dimension1);
+			IdTypeLabel.setPreferredSize(dimension1);
+			IdLabel.setPreferredSize(dimension1);
+			birthdayLabel.setPreferredSize(dimension1);
+			lineLabel.setPreferredSize(new Dimension(50, 20));
+			nullLabel.setPreferredSize(new Dimension(180, 20));
+			
+			goroupIdTextField = new JTextField();
+			goroupNameTextField = new JTextField();
+			nameTextField = new JTextField();
+			sexComboBox = new JComboBox(Res.string().getSexStringsFind());
+			idTypeComboBox = new JComboBox(Res.string().getIdStringsFind());
+			idTextField = new JTextField();
+			
+			startTimeBtn = new DateChooserJButtonEx("2018-07-01");
+			endTimeBtn = new DateChooserJButtonEx();
+			
+			startTimeBtn.setStartYear(1900);
+			endTimeBtn.setStartYear(1900);
+	
+			Dimension dimension2 = new Dimension();
+			dimension2.height = 20;
+			goroupIdTextField.setPreferredSize(dimension2);
+			goroupNameTextField.setPreferredSize(dimension2);
+			nameTextField.setPreferredSize(dimension2);		
+			idTextField.setPreferredSize(dimension2);
+			
+			goroupIdTextField.setPreferredSize(new Dimension(120, 20));
+			goroupNameTextField.setPreferredSize(new Dimension(120, 20));
+			nameTextField.setPreferredSize(new Dimension(120, 20));
+			idTextField.setPreferredSize(new Dimension(120, 20));	
+			sexComboBox.setPreferredSize(new Dimension(120, 20));
+			startTimeBtn.setPreferredSize(new Dimension(125, 20));
+			endTimeBtn.setPreferredSize(new Dimension(125, 20));	
+			idTypeComboBox.setPreferredSize(new Dimension(120, 20));
+			startBirthdayCheckBox.setPreferredSize(new Dimension(20, 20));
+			endBirthdayCheckBox.setPreferredSize(new Dimension(20, 20));
+		
+			add(goroupIdLabel);
+			add(goroupIdTextField);
+			add(goroupNameLabel);
+			add(goroupNameTextField);
+			add(nameLabel);
+			add(nameTextField);
+			add(sexLabel);
+			add(sexComboBox);
+			add(IdTypeLabel);
+			add(idTypeComboBox);
+			add(IdLabel);
+		    add(idTextField);
+			add(birthdayLabel);
+			add(startTimeBtn);
+			add(startBirthdayCheckBox);
+			add(lineLabel);
+			add(endTimeBtn);
+			add(endBirthdayCheckBox);
+			add(nullLabel);
+			
+			goroupIdTextField.setEditable(false);
+			goroupNameTextField.setEditable(false);
+			startBirthdayCheckBox.setSelected(false);
+			endBirthdayCheckBox.setSelected(false);
+			startTimeBtn.setEnabled(false);
+			endTimeBtn.setEnabled(false);
+		}
+	}
+	/*
+	 * 人员信息以及操作面板
+	 */
+	private class PersonInfoPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		public PersonInfoPanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new BorderLayout());
+			
+			Dimension dimension = new Dimension();
+			dimension.height = 150;
+			setPreferredSize(dimension);
+			
+			SearchInfoPanel searchInfoPanel = new SearchInfoPanel();
+			JPanel operatePanel = new JPanel();
+			
+			add(searchInfoPanel, BorderLayout.CENTER);
+			add(operatePanel, BorderLayout.SOUTH);
+			
+			/*
+			 * 操作
+			 */
+			searchPersonBtn = new JButton(Res.string().getFindPerson());
+			JButton addPersonBtn = new JButton(Res.string().getAddPerson());
+			JButton modifyPersonBtn = new JButton(Res.string().getModifyPerson());
+			JButton deletePersonBtn = new JButton(Res.string().getDelPerson());
+			
+			operatePanel.setLayout(new GridLayout(1, 4));
+			
+			operatePanel.add(searchPersonBtn);
+			operatePanel.add(addPersonBtn);
+			operatePanel.add(modifyPersonBtn);
+			operatePanel.add(deletePersonBtn);
+			
+			goroupIdTextField.setText(groupId);
+			goroupNameTextField.setText(groupName);
+			
+			startBirthdayCheckBox.addChangeListener(new ChangeListener() {		
+				@Override
+				public void stateChanged(ChangeEvent arg0) {
+					if(startBirthdayCheckBox.isSelected()) {
+						startTimeBtn.setEnabled(true);
+					} else {
+						startTimeBtn.setEnabled(false);
+					}
+				}
+			});
+			
+			endBirthdayCheckBox.addChangeListener(new ChangeListener() {		
+				@Override
+				public void stateChanged(ChangeEvent arg0) {
+					if(endBirthdayCheckBox.isSelected()) {
+						endTimeBtn.setEnabled(true);
+					} else {
+						endTimeBtn.setEnabled(false);
+					}
+				}
+			});
+			
+			// 查找人员
+			searchPersonBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							searchPersonBtn.setEnabled(false);
+						}
+					});	
+					
+					new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+						@Override
+						protected CANDIDATE_INFOEX[] doInBackground() {
+							nTotalCount = 0;
+							nBeginNum = 0;
+							cleanList();
+							cadidateHashMap.clear();
+							
+							nTotalCount = TargetRecognitionModule.startFindPerson(goroupIdTextField.getText(),
+																			    startBirthdayCheckBox.isSelected(), startTimeBtn.getText().toString(), 
+																			    endBirthdayCheckBox.isSelected(), endTimeBtn.getText().toString(), 
+																			    nameTextField.getText(), sexComboBox.getSelectedIndex(), 
+																			    idTypeComboBox.getSelectedIndex(), idTextField.getText());
+								
+							if(nTotalCount <= 0) {
+								searchPersonBtn.setEnabled(true);
+								previousPageBtn.setEnabled(false);
+								lastPageBtn.setEnabled(false);
+								numTextField.setText("");
+								return null;
+							}
+							
+							CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+							return stuCandidatesEx;
+						}
+						
+						@Override
+						protected void done() {							
+							try {
+								CANDIDATE_INFOEX[] stuCandidatesEx = get();
+								findPersonInfo(stuCandidatesEx);
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							} catch (ExecutionException e) {
+								e.printStackTrace();
+							}						
+						}
+					}.execute();
+				}
+			});
+						
+			// 添加人员
+			addPersonBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					addPersonDialog = new AddPersonDialog(groupId, groupName);
+			
+					addPersonDialog.addWindowCloseListener(new WindowCloseListener() {							
+						@Override
+						public void windowClosing() {
+							new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+								@Override
+								protected CANDIDATE_INFOEX[] doInBackground() {
+									nTotalCount = 0;
+									nBeginNum = 0;
+									cleanList();
+									cadidateHashMap.clear();
+									
+									nTotalCount = TargetRecognitionModule.startFindPerson(goroupIdTextField.getText(),
+																					    startBirthdayCheckBox.isSelected(), startTimeBtn.getText().toString(), 
+																					    endBirthdayCheckBox.isSelected(), endTimeBtn.getText().toString(), 
+																					    nameTextField.getText(), sexComboBox.getSelectedIndex(), 
+																					    idTypeComboBox.getSelectedIndex(), idTextField.getText());
+										
+									if(nTotalCount <= 0) {
+										searchPersonBtn.setEnabled(true);
+										previousPageBtn.setEnabled(false);
+										lastPageBtn.setEnabled(false);
+										numTextField.setText("");
+										return null;
+									}
+									
+									CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+									return stuCandidatesEx;
+								}
+								
+								@Override
+								protected void done() {				
+									try {
+										CANDIDATE_INFOEX[] stuCandidatesEx = get();
+										findPersonInfo(stuCandidatesEx);
+									} catch (InterruptedException e) {
+										e.printStackTrace();
+									} catch (ExecutionException e) {
+										e.printStackTrace();
+									}						
+								}
+							}.execute();
+						}
+					});
+					
+					addPersonDialog.setVisible(true);							
+				}
+			});
+			
+			// 修改人员
+			modifyPersonBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					// 人员信息
+					CANDIDATE_INFOEX stuCandidate = cadidateHashMap.get(String.valueOf(defaultTableModel.getValueAt(row, 0)).trim());
+					
+					// URL地址
+					String szFilePath = stuCandidate.stPersonInfo.szFacePicInfo[0].pszFilePath.getString(0);
+
+					// 存放图片的本地路径
+					String pszFileDst = "./person.jpg";
+							
+					// 下载图片, 下载到本地, 图片路径  "./person.jpg"
+					boolean bRet = TargetRecognitionModule.downloadPersonPic(szFilePath, pszFileDst);
+					
+					Memory memory = null;
+					if(bRet) {
+						try {
+							memory = ToolKits.readPictureFile(pszFileDst);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					} else {
+						pszFileDst = "";
+					}
+					
+					// 人员标识符
+					String uid = String.valueOf(defaultTableModel.getValueAt(row, 0)).trim();
+					
+					modifyPersonDialog = new ModifyPersonDialog(groupId, groupName, uid, pszFileDst, memory, stuCandidate);
+
+					modifyPersonDialog.addWindowCloseListener(new WindowCloseListener() {							
+						@Override
+						public void windowClosing() {
+							new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+						@Override
+						protected CANDIDATE_INFOEX[] doInBackground() {
+							nTotalCount = 0;
+							nBeginNum = 0;
+							cleanList();
+							cadidateHashMap.clear();
+							
+							nTotalCount = TargetRecognitionModule.startFindPerson(goroupIdTextField.getText(),
+																			    startBirthdayCheckBox.isSelected(), startTimeBtn.getText().toString(), 
+																			    endBirthdayCheckBox.isSelected(), endTimeBtn.getText().toString(), 
+																			    nameTextField.getText(), sexComboBox.getSelectedIndex(), 
+																			    idTypeComboBox.getSelectedIndex(), idTextField.getText());
+								
+							if(nTotalCount <= 0) {
+								searchPersonBtn.setEnabled(true);
+								previousPageBtn.setEnabled(false);
+								lastPageBtn.setEnabled(false);
+								numTextField.setText("");
+								return null;
+							}
+							
+							CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+							return stuCandidatesEx;
+						}
+						
+						@Override
+						protected void done() {				
+							try {
+								CANDIDATE_INFOEX[] stuCandidatesEx = get();
+								findPersonInfo(stuCandidatesEx);
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							} catch (ExecutionException e) {
+								e.printStackTrace();
+							}						
+						}
+					}.execute();
+						}
+					});
+					
+					modifyPersonDialog.setVisible(true);							
+				}
+			});
+			
+			// 删除人员
+			deletePersonBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					int row = -1;
+					row = table.getSelectedRow(); //获得所选的单行
+					
+					if(row < 0) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(defaultTableModel.getValueAt(row, 0) == null || String.valueOf(defaultTableModel.getValueAt(row, 0)).trim().equals("")) {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectPerson(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+						return;
+					}
+					
+					if(!TargetRecognitionModule.delPerson(goroupIdTextField.getText(), String.valueOf(defaultTableModel.getValueAt(row, 0)).trim())) {
+						JOptionPane.showMessageDialog(null, Res.string().getFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					}
+					
+					new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+						@Override
+						protected CANDIDATE_INFOEX[] doInBackground() {
+							nTotalCount = 0;
+							nBeginNum = 0;
+							cleanList();
+							cadidateHashMap.clear();
+							
+							nTotalCount = TargetRecognitionModule.startFindPerson(goroupIdTextField.getText(),
+																			    startBirthdayCheckBox.isSelected(), startTimeBtn.getText().toString(), 
+																			    endBirthdayCheckBox.isSelected(), endTimeBtn.getText().toString(), 
+																			    nameTextField.getText(), sexComboBox.getSelectedIndex(), 
+																			    idTypeComboBox.getSelectedIndex(), idTextField.getText());
+								
+							if(nTotalCount <= 0) {
+								searchPersonBtn.setEnabled(true);
+								previousPageBtn.setEnabled(false);
+								lastPageBtn.setEnabled(false);
+								numTextField.setText("");
+								return null;
+							}
+							
+							CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+							return stuCandidatesEx;
+						}
+						
+						@Override
+						protected void done() {
+							
+							try {
+								CANDIDATE_INFOEX[] stuCandidatesEx = get();
+								findPersonInfo(stuCandidatesEx);
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							} catch (ExecutionException e) {
+								e.printStackTrace();
+							}						
+						}
+					}.execute();
+				}
+			});
+		}
+	}
+	
+	/*
+	 * 人员信息显示列表
+	 */
+	private class PersonInfoListPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+		public PersonInfoListPanel() {
+			BorderEx.set(this, "", 2);
+			setLayout(new BorderLayout());
+			
+			data = new Object[17][6];
+			defaultTableModel = new DefaultTableModel(data, Res.string().getPersonTable());
+			table = new JTable(defaultTableModel) {   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			
+			table.getColumnModel().getColumn(0).setPreferredWidth(120);
+			table.getColumnModel().getColumn(1).setPreferredWidth(150);
+			table.getColumnModel().getColumn(2).setPreferredWidth(100);
+			table.getColumnModel().getColumn(3).setPreferredWidth(200);
+			table.getColumnModel().getColumn(4).setPreferredWidth(150);
+			table.getColumnModel().getColumn(5).setPreferredWidth(250);
+			
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);
+			
+			JPanel panel = new JPanel();
+			previousPageBtn = new JButton(Res.string().getPreviousPage());
+			lastPageBtn = new JButton(Res.string().getLastPage());
+			JLabel numLabel = new JLabel(Res.string().getPagesNumber(), JLabel.CENTER);
+			numTextField = new JTextField();
+			
+			numTextField.setHorizontalAlignment(JTextField.CENTER);
+			numTextField.setPreferredSize(new Dimension(80, 20));
+			
+			Dimension dimension = new Dimension();
+			dimension.height = 25;
+			panel.setPreferredSize(dimension);
+			
+			numLabel.setPreferredSize(new Dimension(80, 20));
+			numTextField.setPreferredSize(new Dimension(120, 20));
+			previousPageBtn.setPreferredSize(new Dimension(120, 20));
+			lastPageBtn.setPreferredSize(new Dimension(120, 20));
+			
+			panel.setLayout(new FlowLayout());
+			panel.add(previousPageBtn);
+			panel.add(numLabel);
+			panel.add(numTextField);
+			panel.add(lastPageBtn);
+			
+			previousPageBtn.setEnabled(false);
+			lastPageBtn.setEnabled(false);
+			numTextField.setEnabled(false);
+			
+			add(new JScrollPane(table), BorderLayout.CENTER);
+			add(panel, BorderLayout.SOUTH);
+			
+			// 前一页
+			previousPageBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {							
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							previousPageBtn.setEnabled(false);		
+						}
+					});	
+					
+					new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+						@Override
+						protected CANDIDATE_INFOEX[] doInBackground() {
+							nBeginNum -= 17;						
+							
+							CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+							return stuCandidatesEx;
+						}
+						
+						@Override
+						protected void done() {
+							
+							try {
+								CANDIDATE_INFOEX[] stuCandidatesEx = get();
+								findPreviousPage(stuCandidatesEx);
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							} catch (ExecutionException e) {
+								e.printStackTrace();
+							}				
+						}
+					}.execute();
+				}
+			});
+			
+			// 下一页
+			lastPageBtn.addActionListener(new ActionListener() {		
+				@Override
+				public void actionPerformed(ActionEvent arg0) {	
+					SwingUtilities.invokeLater(new Runnable() {					
+						@Override
+						public void run() {
+							lastPageBtn.setEnabled(false);
+						}
+					});	
+					
+					new SwingWorker<CANDIDATE_INFOEX[], String>() {					
+						@Override
+						protected CANDIDATE_INFOEX[] doInBackground() {
+							nBeginNum += 17;						
+							
+							CANDIDATE_INFOEX[] stuCandidatesEx = TargetRecognitionModule.doFindPerson(nBeginNum, 17);
+							return stuCandidatesEx;
+						}
+						
+						@Override
+						protected void done() {
+							
+							try {
+								CANDIDATE_INFOEX[] stuCandidatesEx = get();
+								findLastPage(stuCandidatesEx);
+							} catch (InterruptedException e) {
+								e.printStackTrace();
+							} catch (ExecutionException e) {
+								e.printStackTrace();
+							}						
+						}
+					}.execute();
+				}
+			});
+		}
+	}	
+	
+	
+    
+	/*
+	 * 查找前17个
+	 */
+	public void findPersonInfo(CANDIDATE_INFOEX[] stuCandidatesEx) {
+		if(stuCandidatesEx != null) {
+			searchPersonBtn.setEnabled(true);
+			previousPageBtn.setEnabled(false);
+			nPagesNumber = 1;
+			numTextField.setText(String.valueOf(nPagesNumber));			
+			
+			for(int i = 0; i < stuCandidatesEx.length; i++) {
+				if(!cadidateHashMap.containsKey(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim())) {
+					cadidateHashMap.put(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), stuCandidatesEx[i]);
+				}
+				
+				// UID
+				defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), i, 0);
+				
+				// 姓名
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szPersonName, "GBK").trim(), i, 1);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}
+				
+				// 性别
+				defaultTableModel.setValueAt(Res.string().getSex(stuCandidatesEx[i].stPersonInfo.bySex & 0xff), i, 2);
+				
+				// 生日
+				defaultTableModel.setValueAt(String.valueOf((int)stuCandidatesEx[i].stPersonInfo.wYear) + "-" + 
+							                 String.valueOf( stuCandidatesEx[i].stPersonInfo.byMonth & 0xff) + "-" + 
+							                 String.valueOf(stuCandidatesEx[i].stPersonInfo.byDay & 0xff), i, 3);
+				
+				// 证件类型
+				defaultTableModel.setValueAt(Res.string().getIdType(stuCandidatesEx[i].stPersonInfo.byIDType & 0xff), i, 4);
+				
+				// 证件号
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szID, "GBK").trim(), i, 5);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}	
+			}
+			
+			if(nTotalCount > nBeginNum + stuCandidatesEx.length) {
+				lastPageBtn.setEnabled(true);
+			}
+		} else {
+			searchPersonBtn.setEnabled(true);
+			previousPageBtn.setEnabled(false);
+			lastPageBtn.setEnabled(false);
+			numTextField.setText("");
+		}
+	}
+	
+	/*
+	 * 上一页查找
+	 */
+	private void findPreviousPage(CANDIDATE_INFOEX[] stuCandidatesEx) {
+		if(stuCandidatesEx != null) {
+			nPagesNumber -= 1;
+			numTextField.setText(String.valueOf(nPagesNumber));
+			cadidateHashMap.clear();
+			cleanList();
+			lastPageBtn.setEnabled(true);
+			
+			for(int i = 0; i < stuCandidatesEx.length; i++) {
+				if(!cadidateHashMap.containsKey(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim())) {
+					cadidateHashMap.put(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), stuCandidatesEx[i]);
+				}
+					
+				// UID
+				defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), i, 0);
+				
+				// 姓名
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szPersonName, "GBK").trim(), i, 1);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}
+				
+				// 性别
+				defaultTableModel.setValueAt(Res.string().getSex(stuCandidatesEx[i].stPersonInfo.bySex & 0xff), i, 2);
+				
+				// 生日
+				defaultTableModel.setValueAt(String.valueOf((int)stuCandidatesEx[i].stPersonInfo.wYear) + "-" + 
+							                 String.valueOf( stuCandidatesEx[i].stPersonInfo.byMonth & 0xff) + "-" + 
+							                 String.valueOf(stuCandidatesEx[i].stPersonInfo.byDay & 0xff), i, 3);
+				
+				// 证件类型
+				defaultTableModel.setValueAt(Res.string().getIdType(stuCandidatesEx[i].stPersonInfo.byIDType & 0xff), i, 4);
+				
+				// 证件号
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szID, "GBK").trim(), i, 5);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}	
+			}	
+			
+			if(nBeginNum >= 17) {		
+				previousPageBtn.setEnabled(true);
+			} else {
+				previousPageBtn.setEnabled(false);
+			}
+		} else{
+			JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			previousPageBtn.setEnabled(true);
+			nBeginNum += 17;
+		}
+	}
+	
+	/*
+	 * 下一页查找
+	 */
+	private void findLastPage(CANDIDATE_INFOEX[] stuCandidatesEx) {	
+		if(stuCandidatesEx != null) {
+			nPagesNumber += 1;
+			numTextField.setText(String.valueOf(nPagesNumber));
+			cadidateHashMap.clear();
+			cleanList();
+			previousPageBtn.setEnabled(true);
+			
+			for(int i = 0; i < stuCandidatesEx.length; i++) {
+				if(!cadidateHashMap.containsKey(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim())) {
+					cadidateHashMap.put(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), stuCandidatesEx[i]);
+				}
+				
+				// UID
+				defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szUID).trim(), i, 0);
+				
+				// 姓名
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szPersonName, "GBK").trim(), i, 1);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}
+				
+				// 性别
+				defaultTableModel.setValueAt(Res.string().getSex(stuCandidatesEx[i].stPersonInfo.bySex & 0xff), i, 2);
+				
+				// 生日
+				defaultTableModel.setValueAt(String.valueOf((int)stuCandidatesEx[i].stPersonInfo.wYear) + "-" + 
+							                 String.valueOf( stuCandidatesEx[i].stPersonInfo.byMonth & 0xff) + "-" + 
+							                 String.valueOf(stuCandidatesEx[i].stPersonInfo.byDay & 0xff), i, 3);
+				
+				// 证件类型
+				defaultTableModel.setValueAt(Res.string().getIdType(stuCandidatesEx[i].stPersonInfo.byIDType & 0xff), i, 4);
+				
+				// 证件号
+				try {
+					defaultTableModel.setValueAt(new String(stuCandidatesEx[i].stPersonInfo.szID, "GBK").trim(), i, 5);
+				} catch (UnsupportedEncodingException e) {
+					e.printStackTrace();
+				}		
+			}				
+			
+			if(nTotalCount > nBeginNum + stuCandidatesEx.length) {
+				lastPageBtn.setEnabled(true);			
+			} else {
+				lastPageBtn.setEnabled(false);
+			}
+		} else {
+			JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			lastPageBtn.setEnabled(true);	
+			nBeginNum -= 17;	
+		}
+	}
+	
+	/*
+	 * 清空列表
+	 */
+	private void cleanList() {
+		for(int i = 0; i < 17; i++) {
+			for(int j = 0; j < 6; j++) {
+				defaultTableModel.setValueAt("", i, j);
+			}
+		}
+	}
+	
+	private Object[][] data;
+	private DefaultTableModel defaultTableModel;
+	private JTable table;
+	
+	private JButton previousPageBtn;
+	private JButton lastPageBtn;
+	private JTextField goroupIdTextField;
+	private JTextField goroupNameTextField;
+	private JTextField nameTextField;
+	private JComboBox sexComboBox;
+	private JComboBox idTypeComboBox;
+	private JTextField idTextField;
+	private JCheckBox startBirthdayCheckBox;
+	private JCheckBox endBirthdayCheckBox;
+	private DateChooserJButtonEx startTimeBtn;
+	private DateChooserJButtonEx endTimeBtn;
+	private JTextField numTextField;
+	private JButton searchPersonBtn;
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/SearchByPicDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/SearchByPicDialog.java
new file mode 100644
index 0000000..77fd5a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/SearchByPicDialog.java
@@ -0,0 +1,596 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+import java.util.concurrent.ExecutionException;
+
+
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.DateChooserJButtonEx;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.SearchByPictureModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+public class SearchByPicDialog extends JDialog {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Vector<String> chnList = new Vector<String>(); 
+	private Memory memory = null;
+	private static volatile int nProgress = 0;  		   // 设备处理进度
+	private static volatile int nCount = 0;
+	
+	public SearchByPicDialog() {
+	    setTitle(Res.string().getSearchByPic());
+	    setLayout(new BorderLayout());
+	    setModal(true);  
+	    pack();
+	    setSize(780, 550);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+	    setDefaultCloseOperation(DISPOSE_ON_CLOSE);   // 释放窗体
+	    	
+	    JPanel panel = new JPanel();
+	    progressBar = new JProgressBar(0, 100);
+	    Dimension dimension = new Dimension();
+	    dimension.height = 18;
+	    progressBar.setPreferredSize(dimension);
+		progressBar.setStringPainted(true);
+	    
+	    add(panel, BorderLayout.CENTER);
+	    add(progressBar, BorderLayout.SOUTH);
+	    
+	    ////////
+	    panel.setLayout(new BorderLayout());
+	    SearchPicConditionPanel searchPicConditionPanel = new SearchPicConditionPanel();
+	    searchPicInfoTextArea = new JTextArea();
+	    
+	    Dimension dimension1 = new Dimension();
+	    dimension1.width = 220;    
+	    searchPicConditionPanel.setPreferredSize(dimension1);
+	    
+	    panel.add(searchPicConditionPanel, BorderLayout.WEST);
+	    panel.add(new JScrollPane(searchPicInfoTextArea), BorderLayout.CENTER);
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		dispose();
+	    	}
+	    });
+	}
+	
+	private class SearchPicConditionPanel extends JPanel {
+
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		
+		public SearchPicConditionPanel() {
+			setLayout(new BorderLayout());
+			
+			JPanel panelNorth = new JPanel();
+			JPanel panelSouth = new JPanel();
+			
+			add(panelNorth, BorderLayout.NORTH);
+			add(panelSouth, BorderLayout.SOUTH);
+			
+			////////
+			searchPicPanel = new PaintPanel();
+			JButton selectPicBtn = new JButton(Res.string().getSelectPicture());
+			JButton downloadBtn = new JButton(Res.string().getDownloadQueryPicture());
+			
+			searchPicPanel.setPreferredSize(new Dimension(210, 270));
+			selectPicBtn.setPreferredSize(new Dimension(210, 20));
+			downloadBtn.setPreferredSize(new Dimension(210, 20));
+		
+			panelNorth.setLayout(new FlowLayout());
+			panelNorth.setPreferredSize(new Dimension(210, 330));
+			panelNorth.add(searchPicPanel);
+			panelNorth.add(selectPicBtn);
+			panelNorth.add(downloadBtn);
+			
+			/////
+			faceCheckBox = new JCheckBox(Res.string().getFaceLibrary());
+			historyCheckBox = new JCheckBox(Res.string().getHistoryLibrary());
+			faceCheckBox.setPreferredSize(new Dimension(100, 20));
+			historyCheckBox.setPreferredSize(new Dimension(100, 20));
+
+			startTimeLabel = new JLabel(Res.string().getStartTime(), JLabel.CENTER);
+			endTimeLabel = new JLabel(Res.string().getEndTime(), JLabel.CENTER);
+			chnLabel = new JLabel(Res.string().getChannel(), JLabel.CENTER);
+			JLabel similaryLabel = new JLabel(Res.string().getSimilarity(), JLabel.CENTER);
+		
+			Dimension dimension1 = new Dimension();
+			dimension1.width = 80;
+			dimension1.height = 20;
+			
+			startTimeLabel.setPreferredSize(dimension1);
+			endTimeLabel.setPreferredSize(dimension1);
+			chnLabel.setPreferredSize(dimension1);
+			similaryLabel.setPreferredSize(dimension1);
+			
+		    startTimeBtn = new DateChooserJButtonEx("2018-11-07");
+			endTimeBtn = new DateChooserJButtonEx();
+			
+			chnComboBox = new JComboBox(); 
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnList.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			// 登陆成功,将通道添加到控件
+			chnComboBox.setModel(new DefaultComboBoxModel(chnList));
+			
+			similaryTextField = new JTextField("60", JTextField.CENTER);
+			
+			Dimension dimension2 = new Dimension();
+			dimension2.width = 120;
+			dimension2.height = 20;
+			
+			startTimeBtn.setPreferredSize(dimension2);
+			endTimeBtn.setPreferredSize(dimension2);
+			chnComboBox.setPreferredSize(dimension2);
+			similaryTextField.setPreferredSize(dimension2);
+			
+			searchPicBtn = new JButton(Res.string().getSearch());
+			searchPicBtn.setPreferredSize(new Dimension(210, 20));
+			
+			panelSouth.setLayout(new FlowLayout());
+			panelSouth.setPreferredSize(new Dimension(210, 160));
+			panelSouth.add(faceCheckBox);
+			panelSouth.add(historyCheckBox);
+			panelSouth.add(startTimeLabel);
+			panelSouth.add(startTimeBtn);
+			panelSouth.add(endTimeLabel);
+			panelSouth.add(endTimeBtn);
+			panelSouth.add(chnLabel);
+			panelSouth.add(chnComboBox);
+			panelSouth.add(similaryLabel);
+			panelSouth.add(similaryTextField);
+			panelSouth.add(searchPicBtn);
+			
+			historyCheckBox.setSelected(true);
+			faceCheckBox.setSelected(false);
+			
+			// 选择图片,获取图片的信息
+			selectPicBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					String picPath = "";
+					
+					// 选择图片,获取图片路径,并在界面显示
+					picPath = ToolKits.openPictureFile(searchPicPanel);
+							
+					if(!picPath.equals("")) {
+						try {
+							memory = ToolKits.readPictureFile(picPath);
+						} catch (IOException e) {
+							// TODO Auto-generated catch block
+							e.printStackTrace();
+						}
+					}
+			
+				}
+			});
+			
+			downloadBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					DownloadPictureDialog dialog = new DownloadPictureDialog();
+					dialog.setVisible(true);		
+				}
+			});
+			
+			searchPicBtn.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					SwingUtilities.invokeLater(new Runnable() {				
+						@Override
+						public void run() {
+							searchPicBtn.setEnabled(false);
+							progressBar.setValue(0);
+							searchPicInfoTextArea.setText("");
+						}
+					});
+					
+					searchByPicture();
+				}
+			});
+			
+			faceCheckBox.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(faceCheckBox.isSelected()) {
+						historyCheckBox.setSelected(false);
+						chnLabel.setVisible(false);
+						chnComboBox.setVisible(false);
+						startTimeLabel.setVisible(false);
+						endTimeLabel.setVisible(false);
+						startTimeBtn.setVisible(false);
+						endTimeBtn.setVisible(false);
+					} else {
+						historyCheckBox.setSelected(true);
+						chnLabel.setVisible(true);
+						chnComboBox.setVisible(true);
+						startTimeLabel.setVisible(true);
+						endTimeLabel.setVisible(true);
+						startTimeBtn.setVisible(true);
+						endTimeBtn.setVisible(true);
+					}					
+				}
+			});
+			
+			historyCheckBox.addActionListener(new ActionListener() {				
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					if(historyCheckBox.isSelected()) {
+						faceCheckBox.setSelected(false);
+						chnLabel.setVisible(true);
+						chnComboBox.setVisible(true);
+						startTimeLabel.setVisible(true);
+						endTimeLabel.setVisible(true);
+						startTimeBtn.setVisible(true);
+						endTimeBtn.setVisible(true);
+					} else {
+						faceCheckBox.setSelected(true);
+						chnLabel.setVisible(false);
+						chnComboBox.setVisible(false);
+						startTimeLabel.setVisible(false);
+						endTimeLabel.setVisible(false);
+						startTimeBtn.setVisible(false);
+						endTimeBtn.setVisible(false);
+					}					
+				}
+			});
+		}
+	}
+	
+	private void searchByPicture() {
+		new SwingWorker<Boolean, StringBuffer>() {
+			int nTotalCount = 0;      // 查询到的总个数
+			
+			@Override
+			protected Boolean doInBackground() {							
+				int beginNum = 0;     // 偏移量
+				int nCount = 0;		  // 循环查询了几次	
+				int index = 0;	 	  // index + 1 为查询到的总个数    
+				int nFindCount = 10;  // 每次查询的个数
+				
+				StringBuffer message = null;
+				
+				if(memory == null) {
+					JOptionPane.showMessageDialog(null, Res.string().getChooseFacePic(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return false;
+				}
+				
+				// 获取查询句柄
+				nTotalCount = SearchByPictureModule.startFindPerson(memory, 
+																   startTimeBtn.getText(), 
+																   endTimeBtn.getText(), 
+																   historyCheckBox.isSelected(),
+																   chnComboBox.getSelectedIndex(), 
+																   similaryTextField.getText());
+				if(nTotalCount == 0) {   // 查询失败				
+					// 查询失败,关闭查询
+					SearchByPictureModule.doFindClosePerson(); 			
+					return false;
+				} else if(nTotalCount == -1) {  // 设备正在处理,通过订阅来查询处理进度
+					nProgress = 0;
+					nCount = 0;
+					SearchByPictureModule.attachFaceFindState(fFaceFindStateCb.getInstance());		
+				} else {				
+					while(true) {
+						CANDIDATE_INFOEX[] caInfoexs = SearchByPictureModule.doFindNextPerson(beginNum, nFindCount);
+						if(caInfoexs == null) {
+							break;
+						}
+						
+						for(int i = 0; i < caInfoexs.length; i++) {
+							index = i + nFindCount * nCount + 1;
+							
+							// 清空
+							message = new StringBuffer();
+							
+							if(historyCheckBox.isSelected()) {    // 历史库显示
+								message.append("[" + index + "]"+Res.string().getTime()+":" + caInfoexs[i].stTime.toStringTimeEx() + "\n");
+							
+								message.append("[" + index + "]"+Res.string().getUid()+":" + new String(caInfoexs[i].stPersonInfo.szUID).trim() + "\n");
+								message.append("[" + index + "]"+Res.string().getSex()+":" + Res.string().getSex(caInfoexs[i].stPersonInfo.bySex) + "\n");
+								message.append("[" + index + "]"+Res.string().getAge()+":" + caInfoexs[i].stPersonInfo.byAge + "\n");
+								message.append("[" + index + "]"+Res.string().getColor()+":" + Res.string().getColor(0) + "\n");
+								message.append("[" + index + "]"+Res.string().getEye()+":" + Res.string().getEyeState(caInfoexs[i].stPersonInfo.emEye) + "\n");
+								message.append("[" + index + "]"+Res.string().getMouth()+":" + Res.string().getMouthState(caInfoexs[i].stPersonInfo.emMouth) + "\n");
+								message.append("[" + index + "]"+Res.string().getMask()+":" + Res.string().getMaskState(caInfoexs[i].stPersonInfo.emMask) + "\n");
+								message.append("[" + index + "]"+Res.string().getBeard()+":" + Res.string().getBeardState(caInfoexs[i].stPersonInfo.emBeard) + "\n");
+								message.append("[" + index + "]"+Res.string().getGlasses()+":" + Res.string().getGlasses(caInfoexs[i].stPersonInfo.byGlasses) + "\n");
+								message.append("[" + index + "]"+Res.string().getSimilarity()+":" + caInfoexs[i].bySimilarity + "\n");
+								message.append("[" + index + "]"+Res.string().getPicturePath()+":" + caInfoexs[i].stPersonInfo.szFacePicInfo[0].pszFilePath.getString(0) + "\n");
+			
+							} else {                              // 人脸库显示
+								message.append("[" + index + "]"+Res.string().getFaceLibraryID()+":" + new String(caInfoexs[i].stPersonInfo.szGroupID).trim() + "\n");
+								try {
+									message.append("[" + index + "]"+Res.string().getFaceLibraryName()+":" + new String(caInfoexs[i].stPersonInfo.szGroupName, "GBK").trim() + "\n");					
+									message.append("[" + index + "]"+Res.string().getName()+":" + new String(caInfoexs[i].stPersonInfo.szPersonName, "GBK").trim() + "\n");
+								} catch (UnsupportedEncodingException e) {
+									e.printStackTrace();
+								}
+								message.append("[" + index + "]"+Res.string().getUid()+":" + new String(caInfoexs[i].stPersonInfo.szUID).trim() + "\n");
+								message.append("[" + index + "]"+Res.string().getBirthday()+":" + (caInfoexs[i].stPersonInfo.wYear) + "-" + 
+											                		    (0xff & caInfoexs[i].stPersonInfo.byMonth) + "-" +
+											                		    (0xff & caInfoexs[i].stPersonInfo.byDay) + "\n");
+								message.append("[" + index + "]"+Res.string().getSex()+":" + Res.string().getSex(caInfoexs[i].stPersonInfo.bySex) + "\n");
+								message.append("[" + index + "]"+Res.string().getCardType()+":" + Res.string().getIdType(caInfoexs[i].stPersonInfo.byIDType) + "\n");
+								message.append("[" + index + "]"+Res.string().getCardNum()+":" + new String(caInfoexs[i].stPersonInfo.szID).trim() + "\n");
+								message.append("[" + index + "]"+Res.string().getSimilarity()+":" + caInfoexs[i].bySimilarity + "\n");
+								message.append("[" + index + "]"+Res.string().getPicturePath()+":" + caInfoexs[i].stPersonInfo.szFacePicInfo[0].pszFilePath.getString(0) + "\n");
+							}
+							
+							message.append("\n");
+							publish(message);
+						}
+						
+				        if(caInfoexs.length < nFindCount) {
+				            System.out.printf("No More Record, Find End!\n");
+				            break;
+				        } else {
+				            beginNum += nFindCount;
+				            nCount++;
+				        }
+					}	
+					
+					// 关闭查询
+					SearchByPictureModule.doFindClosePerson(); 
+				}
+
+				return true;
+			}
+			
+			@Override
+			protected void process(java.util.List<StringBuffer> chunks) {
+				for(StringBuffer data : chunks) {
+					searchPicInfoTextArea.append(data.toString());
+					searchPicInfoTextArea.updateUI();
+				}
+				
+				super.process(chunks);
+			}
+			
+			@Override
+			protected void done() {
+				if(nTotalCount == 0) {      	 // 查询总个数失败
+					searchPicBtn.setEnabled(true);
+					progressBar.setValue(100);
+					searchPicInfoTextArea.append("未查询到相关信息... \n");
+			        searchPicInfoTextArea.updateUI();
+				} else if(nTotalCount == -1){    // 设备在处理中
+					searchPicInfoTextArea.append(Res.string().getLoading()+"... \n");
+			        searchPicInfoTextArea.updateUI();
+				} else {
+					try {
+						if(get()) {             // 其他情况,查询信息结束
+							searchPicBtn.setEnabled(true);
+							progressBar.setValue(100);
+							searchPicInfoTextArea.append("查询结束... \n");
+						    searchPicInfoTextArea.updateUI();
+						}
+					} catch (InterruptedException e) {
+						e.printStackTrace();
+					} catch (ExecutionException e) {
+						e.printStackTrace();
+					}
+				}		
+			}
+		}.execute();
+	}
+	
+	/**
+	 * 订阅人脸回调函数
+	 */
+	private static class fFaceFindStateCb implements NetSDKLib.fFaceFindState {	
+		private fFaceFindStateCb() {}
+		
+		private static class fFaceFindStateCbHolder {
+			private static final fFaceFindStateCb instance = new fFaceFindStateCb();
+		}
+		
+		public static fFaceFindStateCb getInstance() {
+			return fFaceFindStateCbHolder.instance;
+		}
+		
+		@Override
+		public void invoke(LLong lLoginID, LLong lAttachHandle,
+				Pointer pstStates, int nStateNum, Pointer dwUser) {
+			if(nStateNum < 1) {
+				return;
+			}
+			NET_CB_FACE_FIND_STATE[] msg = new NET_CB_FACE_FIND_STATE[nStateNum];
+			for(int i = 0; i < nStateNum; i++) {
+				msg[i] = new NET_CB_FACE_FIND_STATE();
+			}
+			ToolKits.GetPointerDataToStructArr(pstStates, msg);
+			
+			for(int i = 0; i < nStateNum; i++) {
+				if(SearchByPictureModule.nToken == msg[i].nToken) {			
+					nProgress = msg[i].nProgress;	
+					nCount = msg[i].nCurrentCount; // 返回的总个数
+								
+					// 刷新设备处理进度
+					// UI线程
+		            EventQueue.invokeLater(new Runnable() {			            	
+						@Override
+						public void run() {
+							progressBar.setValue(nProgress);	
+							
+					        if(nProgress == 100) {    				    // 进度等于100,设备处理完毕,开始查询
+					        	// 异步线程处理
+					            new SearchPictureWoker(nCount).execute();		            	
+					        }
+						}
+					});	         
+				}
+			}
+		}	
+	}
+	
+	/**
+	 * 用于订阅人脸状态后的查询
+	 * 以图搜图与查询人员信息的接口是一样的,只是逻辑不一样,doFindNextPerson接口时,都是指定每次查询的个数,最大20,然后根据偏移量循环查询
+	 * SwingWorker为异步线程,回调属于子线程,不能做耗时操作和刷新UI
+	 */
+	private static class SearchPictureWoker extends SwingWorker<Boolean, StringBuffer> {		
+		private int nTotalCount;  // 查询到的总个数
+		public SearchPictureWoker(int nTotalCount) {
+			this.nTotalCount = nTotalCount;
+		}
+		
+		@Override
+		protected Boolean doInBackground() {
+			int beginNum = 0;     // 偏移量
+			int nCount = 0;		  // 循环查询了几次	
+			int index = 0;	 	  // index + 1 为查询到的总个数    
+			int nFindCount = 10;  // 每次查询的个数
+			
+			StringBuffer message = null;
+			
+			// 进度达到100%,关闭订阅
+			SearchByPictureModule.detachFaceFindState();
+			System.out.println("nTotalCount = " + nTotalCount);
+			if(nTotalCount == 0) {
+				// 关闭查询
+				SearchByPictureModule.doFindClosePerson();
+				return false;
+			}
+							
+			while(true) {
+				CANDIDATE_INFOEX[] caInfoexs = SearchByPictureModule.doFindNextPerson(beginNum, nFindCount);
+				if(caInfoexs == null) {
+					break;
+				}
+
+				for(int i = 0; i < caInfoexs.length; i++) {
+					index = i + nFindCount * nCount + 1;
+					
+					// 清空
+					message = new StringBuffer();
+					
+					if(historyCheckBox.isSelected()) {    // 历史库显示
+						message.append("[" + index + "]"+Res.string().getTime()+":" + caInfoexs[i].stTime.toStringTimeEx() + "\n");
+						
+						message.append("[" + index + "]"+Res.string().getUid()+":" + new String(caInfoexs[i].stPersonInfo.szUID).trim() + "\n");
+						message.append("[" + index + "]"+Res.string().getSex()+":" + Res.string().getSex(caInfoexs[i].stPersonInfo.bySex) + "\n");
+						message.append("[" + index + "]"+Res.string().getAge()+":" + caInfoexs[i].stPersonInfo.byAge + "\n");
+						message.append("[" + index + "]"+Res.string().getColor()+":" + Res.string().getColor(0) + "\n");
+						message.append("[" + index + "]"+Res.string().getEye()+":" + Res.string().getEyeState(caInfoexs[i].stPersonInfo.emEye) + "\n");
+						message.append("[" + index + "]"+Res.string().getMouth()+":" + Res.string().getMouthState(caInfoexs[i].stPersonInfo.emMouth) + "\n");
+						message.append("[" + index + "]"+Res.string().getMask()+":" + Res.string().getMaskState(caInfoexs[i].stPersonInfo.emMask) + "\n");
+						message.append("[" + index + "]"+Res.string().getBeard()+":" + Res.string().getBeardState(caInfoexs[i].stPersonInfo.emBeard) + "\n");
+						message.append("[" + index + "]"+Res.string().getGlasses()+":" + Res.string().getGlasses(caInfoexs[i].stPersonInfo.byGlasses) + "\n");
+						message.append("[" + index + "]"+Res.string().getSimilarity()+":" + caInfoexs[i].bySimilarity + "\n");
+						message.append("[" + index + "]"+Res.string().getPicturePath()+":" + caInfoexs[i].stPersonInfo.szFacePicInfo[0].pszFilePath.getString(0) + "\n");
+					
+					} else {                             // 人脸库显示
+						message.append("[" + index + "]"+Res.string().getFaceLibraryID()+":" + new String(caInfoexs[i].stPersonInfo.szGroupID).trim() + "\n");
+						try {
+							message.append("[" + index + "]"+Res.string().getFaceLibraryName()+":" + new String(caInfoexs[i].stPersonInfo.szGroupName, "GBK").trim() + "\n");					
+							message.append("[" + index + "]"+Res.string().getName()+":" + new String(caInfoexs[i].stPersonInfo.szPersonName, "GBK").trim() + "\n");
+						} catch (UnsupportedEncodingException e) {
+							e.printStackTrace();
+						}
+						message.append("[" + index + "]"+Res.string().getUid()+":" + new String(caInfoexs[i].stPersonInfo.szUID).trim() + "\n");
+						message.append("[" + index + "]"+Res.string().getBirthday()+":" + (caInfoexs[i].stPersonInfo.wYear) + "-" + 
+									                		    (0xff & caInfoexs[i].stPersonInfo.byMonth) + "-" +
+									                		    (0xff & caInfoexs[i].stPersonInfo.byDay) + "\n");
+						message.append("[" + index + "]"+Res.string().getSex()+":" + Res.string().getSex(caInfoexs[i].stPersonInfo.bySex) + "\n");
+						message.append("[" + index + "]"+Res.string().getCardType()+":" + Res.string().getIdType(caInfoexs[i].stPersonInfo.byIDType) + "\n");
+						message.append("[" + index + "]"+Res.string().getCardNum()+":" + new String(caInfoexs[i].stPersonInfo.szID).trim() + "\n");
+						message.append("[" + index + "]"+Res.string().getSimilarity()+":" + caInfoexs[i].bySimilarity + "\n");
+						message.append("[" + index + "]"+Res.string().getPicturePath()+":" + caInfoexs[i].stPersonInfo.szFacePicInfo[0].pszFilePath.getString(0) + "\n");
+					}
+					
+					message.append("\n");
+					publish(message);
+				}
+				
+		        if(caInfoexs.length < nFindCount) {
+		            System.out.printf("No More Record, Find End!\n");
+		            break;
+		        } else {
+		            beginNum += nFindCount;
+		            nCount++;
+		        }
+			}	
+			
+			// 关闭查询
+			SearchByPictureModule.doFindClosePerson(); 
+
+			return true;
+		}
+		
+		@Override
+		protected void process(java.util.List<StringBuffer> chunks) {
+			for(StringBuffer data : chunks) {
+				searchPicInfoTextArea.append(data.toString());
+				searchPicInfoTextArea.updateUI();
+			}
+			
+			super.process(chunks);
+		}
+		
+		@Override
+		protected void done() {	
+			searchPicBtn.setEnabled(true);
+			searchPicInfoTextArea.append(Res.string().getEndSearch()+"... \n");
+		    searchPicInfoTextArea.updateUI();
+		}
+	}
+
+	
+	private static JTextArea searchPicInfoTextArea;
+	private static JProgressBar progressBar;
+	private static JButton searchPicBtn;
+	
+	private PaintPanel searchPicPanel;
+	private JComboBox chnComboBox;
+	private JTextField similaryTextField;
+	private DateChooserJButtonEx startTimeBtn;
+	private DateChooserJButtonEx endTimeBtn;
+	private JLabel chnLabel;
+	private JLabel startTimeLabel;
+	private JLabel endTimeLabel;
+	
+	private JCheckBox faceCheckBox;
+	private static JCheckBox historyCheckBox;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/TargetRecognition.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/TargetRecognition.java
new file mode 100644
index 0000000..c4c6d0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TargetRecognition/TargetRecognition.java
@@ -0,0 +1,1246 @@
+package com.netsdk.demo.frame.TargetRecognition;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.RealPlayModule;
+import com.netsdk.demo.module.TargetRecognitionModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+import com.sun.jna.Pointer;
+
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Vector;
+
+class TargetRecognitionFrame extends JFrame {
+  private static final long serialVersionUID = 1L;
+
+  private Vector<String> chnList = new Vector<String>();
+
+  private boolean isRealplay = false;
+  private static boolean isAttach = false;
+
+  // 设备断线通知回调
+  private static DisConnect disConnect = new DisConnect();
+
+  // 网络连接恢复
+  private static HaveReConnect haveReConnect = new HaveReConnect();
+
+  // 预览句柄
+  public static LLong m_hPlayHandle = new LLong(0);
+
+  // 订阅句柄
+  public static LLong m_hAttachHandle = new LLong(0);
+
+  // 获取界面窗口
+  private static JFrame frame = new JFrame();
+
+  // 人脸库界面
+  private GroupOperateDialog groupOperateDialog = null;
+
+  // 全景图
+  private static BufferedImage globalBufferedImage = null;
+
+  // 人脸图
+  private static BufferedImage personBufferedImage = null;
+
+  // 候选人图
+  private static BufferedImage candidateBufferedImage = null;
+
+  // 用于目标检测
+  private static int groupId = 0;
+
+  private static int index = -1;
+
+  public TargetRecognitionFrame() {
+    setTitle(Res.string().getTargetRecognition());
+    setLayout(new BorderLayout());
+    pack();
+    setSize(800, 560);
+    setResizable(false);
+    setLocationRelativeTo(null);
+    LoginModule.init(disConnect, haveReConnect); // 打开工程,初始化
+
+    try {
+      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+
+    loginPanel = new LoginPanel();
+    TargetRecognitionEventPanel facePanel = new TargetRecognitionEventPanel();
+
+    add(loginPanel, BorderLayout.NORTH);
+    add(facePanel, BorderLayout.CENTER);
+
+    loginPanel.addLoginBtnActionListener(
+        new ActionListener() {
+          @Override
+          public void actionPerformed(ActionEvent e) {
+            if (loginPanel.checkLoginText()) {
+              if (login()) {
+                frame = ToolKits.getFrame(e);
+                frame.setTitle(
+                    Res.string().getTargetRecognition() + " : " + Res.string().getOnline());
+              }
+            }
+          }
+        });
+
+    loginPanel.addLogoutBtnActionListener(
+        new ActionListener() {
+          @Override
+          public void actionPerformed(ActionEvent e) {
+            frame.setTitle(Res.string().getTargetRecognition());
+            logout();
+          }
+        });
+
+    addWindowListener(
+        new WindowAdapter() {
+          public void windowClosing(WindowEvent e) {
+            TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 0);
+            RealPlayModule.stopRealPlay(m_hPlayHandle);
+            TargetRecognitionModule.stopRealLoadPicture(m_hAttachHandle);
+            LoginModule.logout();
+            LoginModule.cleanup(); // 关闭工程,释放资源
+
+            dispose();
+
+            SwingUtilities.invokeLater(
+                new Runnable() {
+                  public void run() {
+                    FunctionList demo = new FunctionList();
+                    demo.setVisible(true);
+                  }
+                });
+          }
+        });
+  }
+
+  ///////////////// 面板///////////////////
+  // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+  private static class DisConnect implements fDisConnect {
+    public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+      System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+      // 断线提示
+      SwingUtilities.invokeLater(
+          new Runnable() {
+            public void run() {
+              frame.setTitle(
+                  Res.string().getTargetRecognition()
+                      + " : "
+                      + Res.string().getDisConnectReconnecting());
+            }
+          });
+    }
+  }
+
+  // 网络连接恢复,设备重连成功回调
+  // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+  private static class HaveReConnect implements fHaveReConnect {
+    public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+      System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+      // 重连提示
+      SwingUtilities.invokeLater(
+          new Runnable() {
+            public void run() {
+              frame.setTitle(Res.string().getTargetRecognition() + " : " + Res.string().getOnline());
+            }
+          });
+    }
+  }
+
+  // 登录
+  public boolean login() {
+    if (LoginModule.login(
+        loginPanel.ipTextArea.getText(),
+        Integer.parseInt(loginPanel.portTextArea.getText()),
+        loginPanel.nameTextArea.getText(),
+        new String(loginPanel.passwordTextArea.getPassword()))) {
+
+      loginPanel.setButtonEnable(true);
+      setEnable(true);
+
+      for (int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+        chnList.add(Res.string().getChannel() + " " + String.valueOf(i));
+      }
+
+      // 登陆成功,将通道添加到控件
+      chnComboBox.setModel(new DefaultComboBoxModel(chnList));
+    } else {
+      JOptionPane.showMessageDialog(
+          null,
+          Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+          Res.string().getErrorMessage(),
+          JOptionPane.ERROR_MESSAGE);
+      return false;
+    }
+    return true;
+  }
+
+  // 登出
+  public void logout() {
+    TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 0);
+    RealPlayModule.stopRealPlay(m_hPlayHandle);
+    TargetRecognitionModule.stopRealLoadPicture(m_hAttachHandle);
+    LoginModule.logout();
+
+    loginPanel.setButtonEnable(false);
+    setEnable(false);
+    realplayWindowPanel.repaint();
+
+    isRealplay = false;
+    realplayBtn.setText(Res.string().getStartRealPlay());
+
+    isAttach = false;
+
+    attachBtn.setText(Res.string().getAttach());
+    globalPicLabel.setText(
+        Res.string().getGlobalPicture() + " ------ [" + Res.string().getEventType() + "]");
+
+    globalPicShowPanel.setOpaque(true);
+    globalPicShowPanel.repaint();
+
+    personPicShowPanel.setOpaque(true);
+    personPicShowPanel.repaint();
+
+    candidatePicShowPanel.setOpaque(true);
+    candidatePicShowPanel.repaint();
+
+    timeTextField.setText("");
+    sexTextField.setText("");
+    ageTextField.setText("");
+    eyeTextField.setText("");
+    mouthTextField.setText("");
+    maskTextField.setText("");
+    beardTextField.setText("");
+
+    nameTextField.setText("");
+    sexTextField2.setText("");
+    birthdayTextField.setText("");
+    idNoTextField.setText("");
+    groupIdTextField.setText("");
+    groupNameTextField.setText("");
+    similaryTextField.setText("");
+
+    for (int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+      chnList.clear();
+    }
+
+    chnComboBox.setModel(new DefaultComboBoxModel());
+
+    groupId = 0;
+    globalBufferedImage = null;
+    personBufferedImage = null;
+    candidateBufferedImage = null;
+  }
+
+  public class TargetRecognitionEventPanel extends JPanel {
+    /** */
+    private static final long serialVersionUID = 1L;
+
+    public TargetRecognitionEventPanel() {
+      BorderEx.set(this, "", 2);
+      setLayout(new BorderLayout());
+
+      JPanel operatePanel = new JPanel(); // 通道、预览、订阅
+      JPanel panel = new JPanel();
+
+      add(operatePanel, BorderLayout.NORTH);
+      add(panel, BorderLayout.CENTER);
+
+      /*
+       * 操作面板:通道、预览、订阅按钮
+       */
+      chnlabel = new JLabel(Res.string().getChannel());
+      chnComboBox = new JComboBox();
+
+      realplayBtn = new JButton(Res.string().getStartRealPlay());
+      attachBtn = new JButton(Res.string().getAttach());
+      faceDataBaseBtn = new JButton(Res.string().getGroupOperate());
+      faceEventRecordBtn = new JButton("查找事件记录");
+      /** 以图搜图按钮 */
+      searchByPicBtn = new JButton(Res.string().getSearchByPic());
+
+      operatePanel.setLayout(new FlowLayout());
+      operatePanel.add(chnlabel);
+      operatePanel.add(chnComboBox);
+      operatePanel.add(realplayBtn);
+      operatePanel.add(attachBtn);
+      operatePanel.add(faceDataBaseBtn);
+      operatePanel.add(searchByPicBtn);
+      //			operatePanel.add(faceEventRecordBtn);
+
+      Dimension dim = new Dimension();
+      dim.width = 120;
+      dim.height = 20;
+
+      chnComboBox.setPreferredSize(new Dimension(80, 20));
+      attachBtn.setPreferredSize(dim);
+      realplayBtn.setPreferredSize(dim);
+      faceDataBaseBtn.setPreferredSize(dim);
+      faceEventRecordBtn.setPreferredSize(dim);
+      searchByPicBtn.setPreferredSize(dim);
+
+      chnComboBox.setEnabled(false);
+      realplayBtn.setEnabled(false);
+      attachBtn.setEnabled(false);
+      faceDataBaseBtn.setEnabled(false);
+      faceEventRecordBtn.setEnabled(false);
+      searchByPicBtn.setEnabled(false);
+
+      /*
+       * 预览、图片面板
+       */
+      JPanel realplayPanel = new JPanel();
+      JPanel globalPicPanel = new JPanel();
+      JPanel personPicPanel = new JPanel();
+      JPanel candidatePanel = new JPanel();
+
+      realplayPanel.setBorder(new EmptyBorder(0, 5, 5, 5));
+      globalPicPanel.setBorder(new EmptyBorder(0, 5, 5, 5));
+      personPicPanel.setBorder(new EmptyBorder(0, 5, 5, 5));
+      candidatePanel.setBorder(new EmptyBorder(0, 5, 5, 5));
+
+      panel.setLayout(new GridLayout(2, 2));
+
+      panel.add(realplayPanel);
+      panel.add(globalPicPanel);
+      panel.add(personPicPanel);
+      panel.add(candidatePanel);
+
+      /*
+       * 预览面板
+       */
+      JLabel realplayLabel = new JLabel(Res.string().getRealplay());
+      realplayWindowPanel = new Panel();
+      realplayWindowPanel.setBackground(Color.GRAY);
+      realplayPanel.setLayout(new BorderLayout());
+      realplayPanel.add(realplayLabel, BorderLayout.NORTH);
+      realplayPanel.add(realplayWindowPanel, BorderLayout.CENTER);
+
+      /*
+       * 全景图面板
+       */
+      globalPicLabel =
+          new JLabel(
+              Res.string().getGlobalPicture() + " ------ [" + Res.string().getEventType() + "]");
+      globalPicShowPanel = new PaintPanel();
+      globalPicPanel.setLayout(new BorderLayout());
+      globalPicPanel.add(globalPicLabel, BorderLayout.NORTH);
+      globalPicPanel.add(globalPicShowPanel, BorderLayout.CENTER);
+
+      /*
+       * 人脸图面板
+       */
+      JLabel personPiclabel = new JLabel(Res.string().getPersonPicture());
+      personPicShowPanel = new PaintPanel();
+      JPanel faceDataPanel = new JPanel();
+
+      Dimension dimension = new Dimension();
+      dimension.width = 200;
+      faceDataPanel.setPreferredSize(dimension);
+
+      personPicPanel.setLayout(new BorderLayout());
+      personPicPanel.add(personPiclabel, BorderLayout.NORTH);
+      personPicPanel.add(personPicShowPanel, BorderLayout.CENTER);
+      personPicPanel.add(faceDataPanel, BorderLayout.EAST);
+
+      // 人脸信息
+      JLabel timeLabel = new JLabel(Res.string().getTime(), JLabel.CENTER);
+      JLabel sexLabel = new JLabel(Res.string().getSex(), JLabel.CENTER);
+      JLabel ageLabel = new JLabel(Res.string().getAge(), JLabel.CENTER);
+      JLabel colorLabel = new JLabel(Res.string().getColor(), JLabel.CENTER);
+      JLabel eyeLabel = new JLabel(Res.string().getEye(), JLabel.CENTER);
+      JLabel mouthLabel = new JLabel(Res.string().getMouth(), JLabel.CENTER);
+      JLabel maskLabel = new JLabel(Res.string().getMask(), JLabel.CENTER);
+      JLabel beardLabel = new JLabel(Res.string().getBeard(), JLabel.CENTER);
+
+      Dimension dimension1 = new Dimension();
+      dimension1.height = 18;
+      dimension1.width = 50;
+      timeLabel.setPreferredSize(dimension1);
+      sexLabel.setPreferredSize(dimension1);
+      ageLabel.setPreferredSize(dimension1);
+      colorLabel.setPreferredSize(dimension1);
+      eyeLabel.setPreferredSize(dimension1);
+      mouthLabel.setPreferredSize(dimension1);
+      maskLabel.setPreferredSize(dimension1);
+      beardLabel.setPreferredSize(dimension1);
+
+      timeTextField = new JTextField();
+      sexTextField = new JTextField();
+      ageTextField = new JTextField();
+      eyeTextField = new JTextField();
+      mouthTextField = new JTextField();
+      maskTextField = new JTextField();
+      beardTextField = new JTextField();
+
+      Dimension dimension2 = new Dimension();
+      dimension2.width = 125;
+      dimension2.height = 19;
+      timeTextField.setPreferredSize(dimension2);
+      sexTextField.setPreferredSize(dimension2);
+      ageTextField.setPreferredSize(dimension2);
+      eyeTextField.setPreferredSize(dimension2);
+      mouthTextField.setPreferredSize(dimension2);
+      maskTextField.setPreferredSize(dimension2);
+      beardTextField.setPreferredSize(dimension2);
+
+      timeTextField.setHorizontalAlignment(JTextField.CENTER);
+      sexTextField.setHorizontalAlignment(JTextField.CENTER);
+      ageTextField.setHorizontalAlignment(JTextField.CENTER);
+      eyeTextField.setHorizontalAlignment(JTextField.CENTER);
+      mouthTextField.setHorizontalAlignment(JTextField.CENTER);
+      maskTextField.setHorizontalAlignment(JTextField.CENTER);
+      beardTextField.setHorizontalAlignment(JTextField.CENTER);
+
+      timeTextField.setEnabled(false);
+      sexTextField.setEnabled(false);
+      ageTextField.setEnabled(false);
+      eyeTextField.setEnabled(false);
+      mouthTextField.setEnabled(false);
+      maskTextField.setEnabled(false);
+      beardTextField.setEnabled(false);
+
+      timeTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      sexTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      ageTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      eyeTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      mouthTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      maskTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      beardTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+
+      faceDataPanel.setLayout(new FlowLayout());
+
+      faceDataPanel.add(timeLabel);
+      faceDataPanel.add(timeTextField);
+      faceDataPanel.add(sexLabel);
+      faceDataPanel.add(sexTextField);
+      faceDataPanel.add(ageLabel);
+      faceDataPanel.add(ageTextField);
+      faceDataPanel.add(eyeLabel);
+      faceDataPanel.add(eyeTextField);
+      faceDataPanel.add(mouthLabel);
+      faceDataPanel.add(mouthTextField);
+      faceDataPanel.add(maskLabel);
+      faceDataPanel.add(maskTextField);
+      faceDataPanel.add(beardLabel);
+      faceDataPanel.add(beardTextField);
+
+      /*
+       * 候选人图面板
+       */
+      JLabel candidateLabel = new JLabel(Res.string().getCandidatePicture());
+      candidatePicShowPanel = new PaintPanel();
+      JPanel candidateDataPanel = new JPanel();
+
+      Dimension dimension4 = new Dimension();
+      dimension4.width = 220;
+      candidateDataPanel.setPreferredSize(dimension4);
+
+      candidatePanel.setLayout(new BorderLayout());
+      candidatePanel.add(candidateLabel, BorderLayout.NORTH);
+      candidatePanel.add(candidatePicShowPanel, BorderLayout.CENTER);
+      candidatePanel.add(candidateDataPanel, BorderLayout.EAST);
+
+      // 候选人信息
+      JLabel nameLabel = new JLabel(Res.string().getName(), JLabel.CENTER);
+      JLabel sexLabel2 = new JLabel(Res.string().getSex(), JLabel.CENTER);
+      JLabel birthdayLabel = new JLabel(Res.string().getBirthday(), JLabel.CENTER);
+      JLabel idNoLabel = new JLabel(Res.string().getIdNo(), JLabel.CENTER);
+      JLabel groupIdLabel = new JLabel(Res.string().getFaceGroupId(), JLabel.CENTER);
+      JLabel groupNameLabel = new JLabel(Res.string().getFaceGroupName(), JLabel.CENTER);
+      JLabel similaryLabel = new JLabel(Res.string().getSimilarity(), JLabel.CENTER);
+
+      Dimension dimension3 = new Dimension();
+      dimension3.height = 19;
+      dimension3.width = 80;
+      nameLabel.setPreferredSize(dimension3);
+      sexLabel2.setPreferredSize(dimension3);
+      birthdayLabel.setPreferredSize(dimension3);
+      idNoLabel.setPreferredSize(dimension3);
+      groupIdLabel.setPreferredSize(dimension3);
+      groupNameLabel.setPreferredSize(dimension3);
+      similaryLabel.setPreferredSize(dimension3);
+
+      nameTextField = new JTextField();
+      sexTextField2 = new JTextField();
+      birthdayTextField = new JTextField();
+      idNoTextField = new JTextField();
+      groupIdTextField = new JTextField();
+      groupNameTextField = new JTextField();
+      similaryTextField = new JTextField();
+
+      nameTextField.setHorizontalAlignment(JTextField.CENTER);
+      sexTextField2.setHorizontalAlignment(JTextField.CENTER);
+      birthdayTextField.setHorizontalAlignment(JTextField.CENTER);
+      idNoTextField.setHorizontalAlignment(JTextField.CENTER);
+      groupIdTextField.setHorizontalAlignment(JTextField.CENTER);
+      groupNameTextField.setHorizontalAlignment(JTextField.CENTER);
+      similaryTextField.setHorizontalAlignment(JTextField.CENTER);
+
+      nameTextField.setPreferredSize(dimension2);
+      sexTextField2.setPreferredSize(dimension2);
+      birthdayTextField.setPreferredSize(dimension2);
+      idNoTextField.setPreferredSize(dimension2);
+      groupIdTextField.setPreferredSize(dimension2);
+      groupNameTextField.setPreferredSize(dimension2);
+      similaryTextField.setPreferredSize(dimension2);
+
+      nameTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      sexTextField2.setFont(new Font("黑体", Font.PLAIN, 11));
+      birthdayTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      idNoTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      groupIdTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      groupNameTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+      similaryTextField.setFont(new Font("黑体", Font.PLAIN, 11));
+
+      nameTextField.setEnabled(false);
+      sexTextField2.setEnabled(false);
+      birthdayTextField.setEnabled(false);
+      idNoTextField.setEnabled(false);
+      groupIdTextField.setEnabled(false);
+      groupNameTextField.setEnabled(false);
+      similaryTextField.setEnabled(false);
+
+      candidateDataPanel.setLayout(new FlowLayout());
+
+      candidateDataPanel.add(nameLabel);
+      candidateDataPanel.add(nameTextField);
+      candidateDataPanel.add(sexLabel2);
+      candidateDataPanel.add(sexTextField2);
+      candidateDataPanel.add(birthdayLabel);
+      candidateDataPanel.add(birthdayTextField);
+      candidateDataPanel.add(idNoLabel);
+      candidateDataPanel.add(idNoTextField);
+      candidateDataPanel.add(groupIdLabel);
+      candidateDataPanel.add(groupIdTextField);
+      candidateDataPanel.add(groupNameLabel);
+      candidateDataPanel.add(groupNameTextField);
+      candidateDataPanel.add(similaryLabel);
+      candidateDataPanel.add(similaryTextField);
+
+      // 预览
+      realplayBtn.addActionListener(
+          new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+              realplay();
+            }
+          });
+
+      // 订阅
+      attachBtn.addActionListener(
+          new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+              realLoadPicture();
+            }
+          });
+
+      // 人脸库操作
+      faceDataBaseBtn.addActionListener(
+          new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+              groupOperateDialog = new GroupOperateDialog();
+              groupOperateDialog.setVisible(true);
+            }
+          });
+
+      // 查询目标识别事件记录
+      faceEventRecordBtn.addActionListener(
+          new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+              FindFaceEventRecordDialog faceEventRecordDialog = new FindFaceEventRecordDialog();
+              faceEventRecordDialog.setVisible(true);
+            }
+          });
+      // 以图搜图
+      searchByPicBtn.addActionListener(
+          new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+              SearchByPicDialog dialog = new SearchByPicDialog();
+              dialog.setVisible(true);
+            }
+          });
+    }
+  }
+
+  // 预览
+  public void realplay() {
+    if (!isRealplay) {
+      m_hPlayHandle =
+          RealPlayModule.startRealPlay(chnComboBox.getSelectedIndex(), 0, realplayWindowPanel);
+      if (m_hPlayHandle.longValue() != 0) {
+        realplayWindowPanel.repaint();
+        isRealplay = true;
+        chnComboBox.setEnabled(false);
+        realplayBtn.setText(Res.string().getStopRealPlay());
+
+        TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 1);
+      } else {
+        JOptionPane.showMessageDialog(
+            null,
+            ToolKits.getErrorCodeShow(),
+            Res.string().getErrorMessage(),
+            JOptionPane.ERROR_MESSAGE);
+      }
+    } else {
+      TargetRecognitionModule.renderPrivateData(m_hPlayHandle, 0);
+
+      RealPlayModule.stopRealPlay(m_hPlayHandle);
+      realplayWindowPanel.repaint();
+      isRealplay = false;
+      chnComboBox.setEnabled(true);
+      realplayBtn.setText(Res.string().getStartRealPlay());
+    }
+  }
+
+  // 订阅
+  public void realLoadPicture() {
+    if (!isAttach) {
+      m_hAttachHandle =
+          TargetRecognitionModule.realLoadPicture(
+              chnComboBox.getSelectedIndex(), AnalyzerDataCB.getInstance());
+      if (m_hAttachHandle.longValue() != 0) {
+        isAttach = true;
+        attachBtn.setText(Res.string().getDetach());
+      } else {
+        JOptionPane.showMessageDialog(
+            null,
+            ToolKits.getErrorCodeShow(),
+            Res.string().getErrorMessage(),
+            JOptionPane.ERROR_MESSAGE);
+      }
+    } else {
+      TargetRecognitionModule.stopRealLoadPicture(m_hAttachHandle);
+      isAttach = false;
+      attachBtn.setText(Res.string().getAttach());
+
+      globalPicLabel.setText(
+          Res.string().getGlobalPicture() + " ------ [" + Res.string().getEventType() + "]");
+
+      globalPicShowPanel.setOpaque(true);
+      globalPicShowPanel.repaint();
+
+      personPicShowPanel.setOpaque(true);
+      personPicShowPanel.repaint();
+
+      candidatePicShowPanel.setOpaque(true);
+      candidatePicShowPanel.repaint();
+
+      timeTextField.setText("");
+      sexTextField.setText("");
+      ageTextField.setText("");
+      eyeTextField.setText("");
+      mouthTextField.setText("");
+      maskTextField.setText("");
+      beardTextField.setText("");
+
+      nameTextField.setText("");
+      sexTextField2.setText("");
+      birthdayTextField.setText("");
+      idNoTextField.setText("");
+      groupIdTextField.setText("");
+      groupNameTextField.setText("");
+      similaryTextField.setText("");
+
+      groupId = 0;
+      globalBufferedImage = null;
+      personBufferedImage = null;
+      candidateBufferedImage = null;
+    }
+  }
+
+  /** 写成静态主要是防止被回收 */
+  private static class AnalyzerDataCB implements fAnalyzerDataCallBack {
+    private AnalyzerDataCB() {}
+
+    private static class AnalyzerDataCBHolder {
+      private static final AnalyzerDataCB instance = new AnalyzerDataCB();
+    }
+
+    public static AnalyzerDataCB getInstance() {
+      return AnalyzerDataCBHolder.instance;
+    }
+
+    public int invoke(
+        LLong lAnalyzerHandle,
+        int dwAlarmType,
+        Pointer pAlarmInfo,
+        Pointer pBuffer,
+        int dwBufSize,
+        Pointer dwUser,
+        int nSequence,
+        Pointer reserved) {
+      if (lAnalyzerHandle.longValue() == 0 || pAlarmInfo == null) {
+        return -1;
+      }
+
+      switch (dwAlarmType) {
+        case NetSDKLib.EVENT_IVS_FACERECOGNITION: // /< 目标识别事件
+          {
+            // DEV_EVENT_FaceRecognition_INFO 结构体比较大,new对象会比较耗时, ToolKits.GetPointerData内容拷贝是不耗时的。
+            // 如果多台设备或者事件处理比较频繁,可以考虑将 static DEV_EVENT_FaceRecognition_INFO msg = new
+            // DEV_EVENT_FaceRecognition_INFO(); 改为全局。
+            // 写成全局,是因为每次new花费时间较多, 如果改为全局,此case下的处理需要加锁
+            // 加锁,是因为共用一个对象,防止数据出错
+
+            // 耗时800ms左右
+            DEV_EVENT_FACERECOGNITION_INFO msg = new DEV_EVENT_FACERECOGNITION_INFO();
+
+            // 耗时20ms左右
+            ToolKits.GetPointerData(pAlarmInfo, msg);
+
+            // 保存图片,获取图片缓存
+            // 耗时20ms左右
+            try {
+              saveTargetRecognitionPic(pBuffer, dwBufSize, msg);
+            } catch (FileNotFoundException e) {
+              e.printStackTrace();
+            }
+
+            // 列表、图片界面显示
+            // 回调属于子线程,以下是个UI线程,来刷新UI
+            EventQueue.invokeLater(
+                new TargetRecognitionRunnable(
+                    globalBufferedImage, personBufferedImage, candidateBufferedImage, msg, index));
+
+            // 释放内存
+            msg = null;
+            System.gc();
+
+            break;
+          }
+        case NetSDKLib.EVENT_IVS_FACEDETECT: // /<目标检测
+          {
+            DEV_EVENT_FACEDETECT_INFO msg = new DEV_EVENT_FACEDETECT_INFO();
+
+            ToolKits.GetPointerData(pAlarmInfo, msg);
+
+            // 保存图片,获取图片缓存
+            try {
+              saveFaceDetectPic(pBuffer, dwBufSize, msg);
+            } catch (FileNotFoundException e) {
+              e.printStackTrace();
+            }
+
+            // 列表、图片界面显示
+            EventQueue.invokeLater(
+                new FaceDetectRunnable(globalBufferedImage, personBufferedImage, msg));
+
+            // 释放内存
+            msg = null;
+            System.gc();
+
+            break;
+          }
+        default:
+          break;
+      }
+
+      return 0;
+    }
+
+    /**
+     * 保存目标识别事件图片
+     *
+     * @param pBuffer 抓拍图片信息
+     * @param dwBufSize 抓拍图片大小
+     * @param TargetRecognitionInfo 目标识别事件信息
+     */
+    public void saveTargetRecognitionPic(
+        Pointer pBuffer, int dwBufSize, DEV_EVENT_FACERECOGNITION_INFO TargetRecognitionInfo)
+        throws FileNotFoundException {
+      index = -1;
+      globalBufferedImage = null;
+      personBufferedImage = null;
+      candidateBufferedImage = null;
+
+      File path = new File("./TargetRecognition/");
+      if (!path.exists()) {
+        path.mkdir();
+      }
+
+      if (pBuffer == null || dwBufSize <= 0) {
+        return;
+      }
+
+      /////////////// 保存全景图 ///////////////////
+      if (TargetRecognitionInfo.bGlobalScenePic == 1) {
+
+        String strGlobalPicPathName =
+            path + "\\" + TargetRecognitionInfo.UTC.toStringTitle() + "_TargetRecognition_Global.jpg";
+        byte[] bufferGlobal =
+            pBuffer.getByteArray(
+                TargetRecognitionInfo.stuGlobalScenePicInfo.dwOffSet,
+                TargetRecognitionInfo.stuGlobalScenePicInfo.dwFileLenth);
+        ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(bufferGlobal);
+
+        try {
+          globalBufferedImage = ImageIO.read(byteArrInputGlobal);
+          if (globalBufferedImage != null) {
+            File globalFile = new File(strGlobalPicPathName);
+            if (globalFile != null) {
+              ImageIO.write(globalBufferedImage, "jpg", globalFile);
+            }
+          }
+        } catch (IOException e2) {
+          e2.printStackTrace();
+        }
+      }
+
+      /////////////// 保存人脸图 /////////////////////////
+      if (TargetRecognitionInfo.stuObject.stPicInfo != null) {
+        String strPersonPicPathName =
+            path + "\\" + TargetRecognitionInfo.UTC.toStringTitle() + "_TargetRecognition_Person.jpg";
+        byte[] bufferPerson =
+            pBuffer.getByteArray(
+                TargetRecognitionInfo.stuObject.stPicInfo.dwOffSet,
+                TargetRecognitionInfo.stuObject.stPicInfo.dwFileLenth);
+        ByteArrayInputStream byteArrInputPerson = new ByteArrayInputStream(bufferPerson);
+
+        try {
+          personBufferedImage = ImageIO.read(byteArrInputPerson);
+          if (personBufferedImage != null) {
+            File personFile = new File(strPersonPicPathName);
+            if (personFile != null) {
+              ImageIO.write(personBufferedImage, "jpg", personFile);
+            }
+          }
+        } catch (IOException e2) {
+          e2.printStackTrace();
+        }
+      }
+
+      ///////////// 保存对比图 //////////////////////
+      if (TargetRecognitionInfo.nRetCandidatesExNum > 0
+          && TargetRecognitionInfo.stuCandidatesEx != null) {
+        int maxValue = -1;
+
+        // 设备可能返回多张图片,这里只显示相似度最高的
+        int[] nSimilary = new int[TargetRecognitionInfo.nRetCandidatesExNum];
+        for (int i = 0; i < TargetRecognitionInfo.nRetCandidatesExNum; i++) {
+          nSimilary[i] = TargetRecognitionInfo.stuCandidatesEx[i].bySimilarity & 0xff;
+        }
+
+        for (int i = 0; i < nSimilary.length; i++) {
+          if (maxValue < nSimilary[i]) {
+            maxValue = nSimilary[i];
+            index = i;
+          }
+        }
+
+        String strCandidatePicPathName =
+            path
+                + "\\"
+                + TargetRecognitionInfo.UTC.toStringTitle()
+                + "_TargetRecognition_Candidate.jpg";
+
+        // 每个候选人的图片个数:TargetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.wFacePicNum,
+        // 正常情况下只有1张。如果有多张,此demo只显示第一张
+        byte[] bufferCandidate =
+            pBuffer.getByteArray(
+                TargetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.szFacePicInfo[0].dwOffSet,
+                TargetRecognitionInfo
+                    .stuCandidatesEx[index]
+                    .stPersonInfo
+                    .szFacePicInfo[0]
+                    .dwFileLenth);
+        ByteArrayInputStream byteArrInputCandidate = new ByteArrayInputStream(bufferCandidate);
+
+        try {
+          candidateBufferedImage = ImageIO.read(byteArrInputCandidate);
+          if (candidateBufferedImage != null) {
+            File candidateFile = new File(strCandidatePicPathName);
+            if (candidateFile != null) {
+              ImageIO.write(candidateBufferedImage, "jpg", candidateFile);
+            }
+          }
+        } catch (IOException e2) {
+          e2.printStackTrace();
+        }
+      }
+    }
+
+    /**
+     * 保存目标检测事件图片
+     *
+     * @param pBuffer 抓拍图片信息
+     * @param dwBufSize 抓拍图片大小
+     * @param faceDetectInfo 目标检测事件信息
+     */
+    public void saveFaceDetectPic(
+        Pointer pBuffer, int dwBufSize, DEV_EVENT_FACEDETECT_INFO faceDetectInfo)
+        throws FileNotFoundException {
+      File path = new File("./FaceDetection/");
+      if (!path.exists()) {
+        path.mkdir();
+      }
+
+      if (pBuffer == null || dwBufSize <= 0) {
+        return;
+      }
+
+      // 小图的 stuObject.nRelativeID 来匹配大图的 stuObject.nObjectID,来判断是不是 一起的图片
+      if (groupId != faceDetectInfo.stuObject.nRelativeID) { // /->保存全景图
+        personBufferedImage = null;
+        groupId = faceDetectInfo.stuObject.nObjectID;
+
+        String strGlobalPicPathName =
+            path + "\\" + faceDetectInfo.UTC.toStringTitle() + "_FaceDetection_Global.jpg";
+        byte[] bufferGlobal = pBuffer.getByteArray(0, dwBufSize);
+        ByteArrayInputStream byteArrInputGlobal = new ByteArrayInputStream(bufferGlobal);
+
+        try {
+          globalBufferedImage = ImageIO.read(byteArrInputGlobal);
+          if (globalBufferedImage != null) {
+            File globalFile = new File(strGlobalPicPathName);
+            if (globalFile != null) {
+              ImageIO.write(globalBufferedImage, "jpg", globalFile);
+            }
+          }
+        } catch (IOException e2) {
+          e2.printStackTrace();
+        }
+      } else if (groupId == faceDetectInfo.stuObject.nRelativeID) { // /->保存人脸图
+        if (faceDetectInfo.stuObject.stPicInfo != null) {
+          String strPersonPicPathName =
+              path + "\\" + faceDetectInfo.UTC.toStringTitle() + "_FaceDetection_Person.jpg";
+          byte[] bufferPerson = pBuffer.getByteArray(0, dwBufSize);
+          ByteArrayInputStream byteArrInputPerson = new ByteArrayInputStream(bufferPerson);
+
+          try {
+            personBufferedImage = ImageIO.read(byteArrInputPerson);
+            if (personBufferedImage != null) {
+              File personFile = new File(strPersonPicPathName);
+              if (personFile != null) {
+                ImageIO.write(personBufferedImage, "jpg", personFile);
+              }
+            }
+          } catch (IOException e2) {
+            e2.printStackTrace();
+          }
+        }
+      }
+    }
+  }
+
+  private static class TargetRecognitionRunnable implements Runnable {
+    private BufferedImage globalBufferedImage;
+    private BufferedImage personBufferedImage;
+    private BufferedImage candidateBufferedImage;
+    private DEV_EVENT_FACERECOGNITION_INFO TargetRecognitionInfo;
+    private int index = -1;
+
+    public TargetRecognitionRunnable(
+        BufferedImage globalBufferedImage,
+        BufferedImage personBufferedImage,
+        BufferedImage candidateBufferedImage,
+        DEV_EVENT_FACERECOGNITION_INFO TargetRecognitionInfo,
+        int index) {
+
+      this.globalBufferedImage = globalBufferedImage;
+      this.personBufferedImage = personBufferedImage;
+      this.candidateBufferedImage = candidateBufferedImage;
+      this.TargetRecognitionInfo = TargetRecognitionInfo;
+      this.index = index;
+    }
+
+    @Override
+    public void run() {
+      if (!isAttach) {
+        return;
+      }
+
+      // 列表显示事件信息
+      showTargetRecognitionEventInfo(
+          globalBufferedImage,
+          personBufferedImage,
+          candidateBufferedImage,
+          TargetRecognitionInfo,
+          index);
+    }
+  }
+
+  private static class FaceDetectRunnable implements Runnable {
+    private BufferedImage globalBufferedImage = null;
+    private BufferedImage personBufferedImage = null;
+    private DEV_EVENT_FACEDETECT_INFO facedetectInfo = null;
+
+    public FaceDetectRunnable(
+        BufferedImage globalBufferedImage,
+        BufferedImage personBufferedImage,
+        DEV_EVENT_FACEDETECT_INFO facedetectInfo) {
+
+      this.globalBufferedImage = globalBufferedImage;
+      this.personBufferedImage = personBufferedImage;
+      this.facedetectInfo = facedetectInfo;
+    }
+
+    @Override
+    public void run() {
+      if (!isAttach) {
+        return;
+      }
+
+      showFaceDetectEventInfo(globalBufferedImage, personBufferedImage, facedetectInfo);
+    }
+  }
+
+  private static void showTargetRecognitionEventInfo(
+      BufferedImage globalBufferedImage,
+      BufferedImage personBufferedImage,
+      BufferedImage candidateBufferedImage,
+      DEV_EVENT_FACERECOGNITION_INFO targetRecognitionInfo,
+      int index) {
+    globalPicLabel.setText(
+        Res.string().getGlobalPicture()
+            + " ------ ["
+            + Res.string().getTargetRecognitionEvent()
+            + "]");
+
+    // 全景图
+    if (globalBufferedImage != null) {
+      globalPicShowPanel.setImage(globalBufferedImage);
+      globalPicShowPanel.setOpaque(false);
+      globalPicShowPanel.repaint();
+    } else {
+      globalPicShowPanel.setOpaque(true);
+      globalPicShowPanel.repaint();
+    }
+
+    // 人脸图
+    if (personBufferedImage != null) {
+      personPicShowPanel.setImage(personBufferedImage);
+      personPicShowPanel.setOpaque(false);
+      personPicShowPanel.repaint();
+    } else {
+      personPicShowPanel.setOpaque(true);
+      personPicShowPanel.repaint();
+    }
+
+    // 候选人图
+    if (candidateBufferedImage != null) {
+      candidatePicShowPanel.setImage(candidateBufferedImage);
+      candidatePicShowPanel.setOpaque(false);
+      candidatePicShowPanel.repaint();
+    } else {
+      candidatePicShowPanel.setOpaque(true);
+      candidatePicShowPanel.repaint();
+    }
+
+    // 时间
+    if (targetRecognitionInfo.UTC == null || targetRecognitionInfo.UTC.toString().equals("")) {
+      timeTextField.setText("");
+    } else {
+      timeTextField.setText(targetRecognitionInfo.UTC.toString());
+    }
+
+    // 人脸信息
+    if (targetRecognitionInfo.stuFaceData == null) {
+      sexTextField.setText("");
+      ageTextField.setText("");
+      eyeTextField.setText("");
+      mouthTextField.setText("");
+      maskTextField.setText("");
+      beardTextField.setText("");
+    } else {
+      sexTextField.setText(Res.string().getSex(targetRecognitionInfo.stuFaceData.emSex));
+      if (targetRecognitionInfo.stuFaceData.nAge == -1) {
+        ageTextField.setText(Res.string().getUnKnow());
+      } else {
+        ageTextField.setText(String.valueOf(targetRecognitionInfo.stuFaceData.nAge));
+      }
+      eyeTextField.setText(Res.string().getEyeState(targetRecognitionInfo.stuFaceData.emEye));
+      mouthTextField.setText(Res.string().getMouthState(targetRecognitionInfo.stuFaceData.emMouth));
+      maskTextField.setText(Res.string().getMaskState(targetRecognitionInfo.stuFaceData.emMask));
+      beardTextField.setText(Res.string().getBeardState(targetRecognitionInfo.stuFaceData.emBeard));
+    }
+
+    // 候选人信息
+    if (targetRecognitionInfo.nRetCandidatesExNum == 0 || index == -1) {
+      nameTextField.setText("");
+      sexTextField2.setText("");
+      birthdayTextField.setText("");
+      idNoTextField.setText("");
+      groupIdTextField.setText("");
+      groupNameTextField.setText("");
+      similaryTextField.setText(Res.string().getStranger());
+    } else {
+      sexTextField2.setText(
+          Res.string()
+              .getSex(targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.bySex & 0xff));
+      birthdayTextField.setText(
+          String.valueOf((int) targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.wYear)
+              + "-"
+              + String.valueOf(
+                  targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.byMonth & 0xff)
+              + "-"
+              + String.valueOf(
+                  targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.byDay & 0xff));
+
+      try {
+        nameTextField.setText(
+            new String(targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.szPersonName, "GBK")
+                .trim());
+        idNoTextField.setText(
+            new String(targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.szID, "GBK").trim());
+        groupIdTextField.setText(
+            new String(targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.szGroupID, "GBK")
+                .trim());
+        groupNameTextField.setText(
+            new String(targetRecognitionInfo.stuCandidatesEx[index].stPersonInfo.szGroupName, "GBK")
+                .trim());
+      } catch (UnsupportedEncodingException e) {
+        e.printStackTrace();
+      }
+
+      similaryTextField.setText(
+          String.valueOf(targetRecognitionInfo.stuCandidatesEx[index].bySimilarity & 0xff));
+    }
+  }
+
+  private static void showFaceDetectEventInfo(
+      BufferedImage globalBufferedImage,
+      BufferedImage personBufferedImage,
+      DEV_EVENT_FACEDETECT_INFO facedetectInfo) {
+
+    globalPicLabel.setText(
+        Res.string().getGlobalPicture() + " ------ [" + Res.string().getTargetDetectEvent() + "]");
+
+    // 全景图
+    if (globalBufferedImage != null) {
+      globalPicShowPanel.setImage(globalBufferedImage);
+      globalPicShowPanel.setOpaque(false);
+      globalPicShowPanel.repaint();
+    } else {
+      globalPicShowPanel.setOpaque(true);
+      globalPicShowPanel.repaint();
+    }
+
+    // 人脸图
+    if (personBufferedImage != null) {
+      personPicShowPanel.setImage(personBufferedImage);
+      personPicShowPanel.setOpaque(false);
+      personPicShowPanel.repaint();
+    } else {
+      personPicShowPanel.setOpaque(true);
+      personPicShowPanel.repaint();
+    }
+
+    // 时间
+    if (facedetectInfo.UTC == null || facedetectInfo.UTC.toString().equals("")) {
+      timeTextField.setText("");
+    } else {
+      timeTextField.setText(facedetectInfo.UTC.toString());
+    }
+
+    // 人脸信息
+    sexTextField.setText(Res.string().getSex(facedetectInfo.emSex));
+    if (facedetectInfo.nAge == -1) {
+      ageTextField.setText(Res.string().getUnKnow());
+    } else {
+      ageTextField.setText(String.valueOf(facedetectInfo.nAge));
+    }
+    eyeTextField.setText(Res.string().getEyeState(facedetectInfo.emEye));
+    mouthTextField.setText(Res.string().getMouthState(facedetectInfo.emMouth));
+    maskTextField.setText(Res.string().getMaskState(facedetectInfo.emMask));
+    beardTextField.setText(Res.string().getBeardState(facedetectInfo.emBeard));
+
+    // 候选人图和信息, 重绘清空
+    candidatePicShowPanel.setOpaque(true);
+    candidatePicShowPanel.repaint();
+
+    nameTextField.setText("");
+    sexTextField2.setText("");
+    birthdayTextField.setText("");
+    idNoTextField.setText("");
+    groupIdTextField.setText("");
+    groupNameTextField.setText("");
+    similaryTextField.setText("");
+  }
+
+  private void setEnable(boolean bln) {
+
+    chnComboBox.setEnabled(bln);
+    realplayBtn.setEnabled(bln);
+    attachBtn.setEnabled(bln);
+    faceDataBaseBtn.setEnabled(bln);
+    faceEventRecordBtn.setEnabled(bln);
+    searchByPicBtn.setEnabled(bln);
+  }
+
+  /*
+   * 登录
+   */
+  private LoginPanel loginPanel;
+
+  /*
+   * 预览
+   */
+  private JLabel chnlabel;
+  private JComboBox chnComboBox;
+  private JButton realplayBtn;
+  private JButton attachBtn;
+  private JButton faceDataBaseBtn;
+  private JButton faceEventRecordBtn;
+  /** 以图搜图按钮 */
+  private JButton searchByPicBtn;
+
+  private Panel realplayWindowPanel;
+  private static PaintPanel globalPicShowPanel;
+  private static PaintPanel personPicShowPanel;
+  private static PaintPanel candidatePicShowPanel;
+
+  private static JLabel globalPicLabel;
+
+  /*
+   * 人脸信息
+   */
+  private static JTextField timeTextField;
+  private static JTextField sexTextField;
+  private static JTextField ageTextField;
+  private static JTextField eyeTextField;
+  private static JTextField mouthTextField;
+  private static JTextField maskTextField;
+  private static JTextField beardTextField;
+
+  /*
+   * 候选人信息
+   */
+  private static JTextField nameTextField;
+  private static JTextField sexTextField2;
+  private static JTextField birthdayTextField;
+  private static JTextField idNoTextField;
+  private static JTextField groupIdTextField;
+  private static JTextField groupNameTextField;
+  private static JTextField similaryTextField;
+}
+
+public class TargetRecognition {
+  public static void main(String[] args) {
+    SwingUtilities.invokeLater(
+        new Runnable() {
+          public void run() {
+            TargetRecognitionFrame demo = new TargetRecognitionFrame();
+            demo.setVisible(true);
+          }
+        });
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/HeatMapDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/HeatMapDialog.java
new file mode 100644
index 0000000..679f0c6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/HeatMapDialog.java
@@ -0,0 +1,349 @@
+package com.netsdk.demo.frame.ThermalCamera;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.concurrent.locks.ReentrantLock;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.ThermalCameraModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 热图信息对话框
+ */
+public class HeatMapDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private JDialog target = this;
+	private ReentrantLock lock = new ReentrantLock();
+	private NET_RADIOMETRY_DATA gData = new NET_RADIOMETRY_DATA();
+	
+	public HeatMapDialog() {
+		setTitle(Res.string().getShowInfo("HEATMAP"));
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(400, 440);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		///////////////////////////////
+		operatePanel = new OperatePanel();
+		showPanel = new HeatMapShowPanel();
+		
+	    add(showPanel, BorderLayout.CENTER);
+	    add(operatePanel, BorderLayout.NORTH);
+
+	    addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				try {
+					ThermalCameraModule.radiometryDetach();
+				}finally {
+					dispose();
+				}
+			}
+		});
+	}
+	
+	
+	/**
+	 * 订阅回调
+	 */
+	private RadiometryAttachCB cbNotify = new RadiometryAttachCB();
+	private class RadiometryAttachCB implements fRadiometryAttachCB {
+		
+		@Override
+		public void invoke(LLong lAttachHandle, final NET_RADIOMETRY_DATA pBuf,
+				int nBufLen, Pointer dwUser) {
+
+			copyRadiometryData(pBuf);
+			SwingUtilities.invokeLater(new Runnable() {
+    			public void run() {
+    				target.setTitle(Res.string().getShowInfo("HEATMAP"));
+    				operatePanel.saveBtn.setEnabled(true);
+    				showPanel.updateData();
+    			}
+    		});
+		}					
+	}
+	
+	private void copyRadiometryData(NET_RADIOMETRY_DATA data) {
+		lock.lock();
+		gData.stMetaData = data.stMetaData;
+		gData.dwBufSize = data.dwBufSize;
+		gData.pbDataBuf = new Memory(data.dwBufSize);
+		gData.pbDataBuf.write(0, data.pbDataBuf.getByteArray(0, data.dwBufSize), 0, data.dwBufSize);
+		lock.unlock();
+	}
+	
+	/**
+     * 操作界面
+     * */
+    public class OperatePanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	
+		public OperatePanel() {
+			BorderEx.set(this, Res.string().getShowInfo("HEATMAP_OPERATE"), 1);
+			setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10));			
+			
+			attachBtn = new JButton(Res.string().getShowInfo("RADIOMETRY_ATTACH"));
+			fetchBtn = new JButton(Res.string().getShowInfo("RADIOMETRY_FETCH"));
+			saveBtn = new JButton(Res.string().getShowInfo("SAVE_HEATMAP"));
+
+			Dimension btnDimension = new Dimension(120, 20);
+			attachBtn.setPreferredSize(btnDimension);
+			fetchBtn.setPreferredSize(btnDimension);
+			saveBtn.setPreferredSize(btnDimension);
+			
+			fetchBtn.setEnabled(false);
+			saveBtn.setEnabled(false);
+			
+			add(attachBtn);
+			add(fetchBtn);
+			add(saveBtn);
+						
+			attachBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					SwingUtilities.invokeLater(new Runnable() {
+		    			public void run() {
+							attach();
+		    			}
+		    		});
+				}
+			});
+			
+			fetchBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					SwingUtilities.invokeLater(new Runnable() {
+		    			public void run() {
+		    				fetch();
+		    			}
+		    		});
+				}
+			});	
+			
+			saveBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					SwingUtilities.invokeLater(new Runnable() {
+		    			public void run() {
+		    				try {
+								save();
+							} catch (IOException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							}
+		    			}
+		    		});
+				}
+			});	
+		}
+		
+		public void attach() {
+			
+			freeMemory();
+			
+			target.setTitle(Res.string().getShowInfo("HEATMAP"));
+			if (ThermalCameraModule.isAttaching()) {
+				ThermalCameraModule.radiometryDetach();
+				fetchBtn.setEnabled(false);
+				saveBtn.setEnabled(false);
+				attachBtn.setText(Res.string().getShowInfo("RADIOMETRY_ATTACH"));
+			}else {
+				if (ThermalCameraModule.radiometryAttach(ThermalCameraFrame.THERMAL_CHANNEL, cbNotify)) {
+					attachBtn.setText(Res.string().getShowInfo("RADIOMETRY_DETACH"));
+					showPanel.clearData();
+					fetchBtn.setEnabled(true);
+				}else {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+			}
+		}
+		
+		public void fetch() {
+			
+			freeMemory();
+			saveBtn.setEnabled(false);
+			int nStatus = ThermalCameraModule.radiometryFetch(ThermalCameraFrame.THERMAL_CHANNEL);
+			
+			if (nStatus != -1) {
+				showPanel.clearData();
+				String[] arrStatus = Res.string().getTemperStatusList();
+				if (nStatus >= 1 && nStatus <= arrStatus.length) {
+					target.setTitle(Res.string().getShowInfo("HEATMAP") + " : " + arrStatus[nStatus-1]);
+				}
+			}else {
+				JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}		
+		}
+		
+		public void save() throws IOException {
+			lock.lock();
+			boolean bSaved = ThermalCameraModule.saveData(gData);
+			lock.unlock();
+			if (bSaved) {
+				JOptionPane.showMessageDialog(null, Res.string().getShowInfo("HEATMAP_SAVE_SUCCESS"), Res.string().getPromptMessage(), JOptionPane.PLAIN_MESSAGE);
+			}else {
+				JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		}
+		
+		public void freeMemory() {
+			lock.lock();
+			if (gData.pbDataBuf != null) {	
+				Native.free(Pointer.nativeValue(gData.pbDataBuf));
+				Pointer.nativeValue(gData.pbDataBuf, 0);
+			}
+			lock.unlock();
+		}
+		
+		private JButton attachBtn;
+		private JButton fetchBtn;
+		private JButton saveBtn;
+    }
+	
+    /**
+     * 查询显示界面
+     * */
+    public class HeatMapShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+
+		public HeatMapShowPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("HEATMAP_METADATA_INFO"), 1);
+			setLayout(new FlowLayout(FlowLayout.CENTER, 15, 25));
+			
+			JLabel heightLabel = new JLabel(Res.string().getShowInfo("HEIGHT"), JLabel.LEFT);
+			heightTextField = new JTextField();
+			JLabel widthLabel = new JLabel(Res.string().getShowInfo("WIDTH"), JLabel.LEFT);
+			widthTextField = new JTextField();
+			JLabel channelLabel = new JLabel(Res.string().getShowInfo("CHANNEL"), JLabel.LEFT);
+			channelTextField = new JTextField();
+			JLabel timeLabel = new JLabel(Res.string().getShowInfo("TIME"), JLabel.LEFT);
+			timeTextField = new JTextField();
+			JLabel lengthLabel = new JLabel(Res.string().getShowInfo("LENGTH"), JLabel.LEFT);
+			lengthTextField = new JTextField();
+			JLabel sensorTypeLabel = new JLabel(Res.string().getShowInfo("SENSOR_TYPE"), JLabel.LEFT);
+			sensorTypeTextField = new JTextField();
+			
+			Dimension lableDimension = new Dimension(100, 20);
+			Dimension textFieldDimension = new Dimension(140, 20);
+			heightLabel.setPreferredSize(lableDimension);
+			widthLabel.setPreferredSize(lableDimension);
+			channelLabel.setPreferredSize(lableDimension);
+			timeLabel.setPreferredSize(lableDimension);
+			lengthLabel.setPreferredSize(lableDimension);
+			sensorTypeLabel.setPreferredSize(lableDimension);
+			heightTextField.setPreferredSize(textFieldDimension);
+			widthTextField.setPreferredSize(textFieldDimension);
+			channelTextField.setPreferredSize(textFieldDimension);
+			timeTextField.setPreferredSize(textFieldDimension);
+			lengthTextField.setPreferredSize(textFieldDimension);
+			sensorTypeTextField.setPreferredSize(textFieldDimension);
+			
+			heightTextField.setEditable(false);
+			widthTextField.setEditable(false);
+			channelTextField.setEditable(false);
+			timeTextField.setEditable(false);
+			lengthTextField.setEditable(false);
+			sensorTypeTextField.setEditable(false);
+
+			add(heightLabel);
+			add(heightTextField);
+			add(widthLabel);
+			add(widthTextField);
+			add(channelLabel);
+			add(channelTextField);
+			add(timeLabel);
+			add(timeTextField);
+			add(lengthLabel);
+			add(lengthTextField);
+			add(sensorTypeLabel);
+			add(sensorTypeTextField);
+		}
+		
+		public void updateData() {
+			String[] data = new String[6];
+
+			lock.lock();
+			data[0] = String.valueOf(gData.stMetaData.nHeight);
+			data[1] = String.valueOf(gData.stMetaData.nWidth);
+			data[2] = String.valueOf(gData.stMetaData.nChannel+1);
+			data[3] = gData.stMetaData.stTime.toStringTimeEx();
+			data[4] = String.valueOf(gData.stMetaData.nLength);
+			try {
+				data[5] = new String(gData.stMetaData.szSensorType, "GBK").trim();
+			} catch (UnsupportedEncodingException e) {
+				data[5] = new String(gData.stMetaData.szSensorType).trim();
+			}
+			lock.unlock();
+			
+			setData(data);
+		}
+		
+		public void clearData() {
+			setData(new String[6]);
+		}
+		
+		private void setData(String[] data) {
+			
+			if (data.length != 6) {
+				System.err.printf("data length  %d != 6", data.length);
+				return;
+			}
+
+			heightTextField.setText(data[0]);
+			widthTextField.setText(data[1]);
+			channelTextField.setText(data[2]);
+			timeTextField.setText(data[3]);
+			lengthTextField.setText(data[4]);
+			sensorTypeTextField.setText(data[5]);
+		}
+
+		private JTextField heightTextField;
+		private JTextField widthTextField;
+		private JTextField channelTextField;
+		private JTextField timeTextField;
+		private JTextField lengthTextField;
+		private JTextField sensorTypeTextField;
+    }
+	
+	
+	private OperatePanel operatePanel;
+	private HeatMapShowPanel showPanel;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ItemQueryDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ItemQueryDialog.java
new file mode 100644
index 0000000..ea3bfe4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ItemQueryDialog.java
@@ -0,0 +1,301 @@
+package com.netsdk.demo.frame.ThermalCamera;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.ThermalCameraModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.NET_RADIOMETRYINFO;
+
+
+/**
+ * 查询测温项对话框
+ */
+public class ItemQueryDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	public ItemQueryDialog() {
+		setTitle(Res.string().getShowInfo("ITEM_TEMPER"));
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(365, 460);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		///////////////////////////////
+		queryPanel = new QueryPanel();
+		showPanel = new QueryShowPanel();
+		
+	    add(queryPanel, BorderLayout.NORTH);
+	    add(showPanel, BorderLayout.CENTER);
+
+	}
+	
+	
+	/**
+     * 查询测温项界面
+     * */
+    public class QueryPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	
+		public QueryPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_CONDITION"), 1);
+			setLayout(new BorderLayout());			
+
+			JLabel presetIdLabel = new JLabel(Res.string().getShowInfo("PRESET_ID"), JLabel.CENTER);
+			presetIdTextField = new JTextField("1");
+			JLabel ruleIdLabel = new JLabel(Res.string().getShowInfo("RULE_ID"), JLabel.CENTER);
+			ruleIdTextField = new JTextField("1");
+			JLabel meterTypeLabel = new JLabel(Res.string().getShowInfo("METER_TYPE"), JLabel.CENTER);
+			meterTypeComboBox = new JComboBox();
+			meterTypeComboBox.setModel(new DefaultComboBoxModel(Res.string().getMeterTypeList()));
+			queryBtn = new JButton(Res.string().getShowInfo("QUERY"));
+			
+			Dimension lableDimension = new Dimension(85, 20);
+			Dimension textFieldDimension = new Dimension(80, 20);
+			Dimension btnDimension = new Dimension(100, 20);
+
+			presetIdLabel.setPreferredSize(lableDimension);
+			presetIdTextField.setPreferredSize(textFieldDimension);
+			ruleIdLabel.setPreferredSize(lableDimension);
+			ruleIdTextField.setPreferredSize(textFieldDimension);
+			meterTypeLabel.setPreferredSize(lableDimension);
+			meterTypeComboBox.setPreferredSize(textFieldDimension);
+			JLabel label = new JLabel();
+			label.setPreferredSize(new Dimension(40, 20));
+			queryBtn.setPreferredSize(btnDimension);
+			
+			JPanel topPanel = new JPanel();
+			topPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 10));			
+			topPanel.add(presetIdLabel);
+			topPanel.add(presetIdTextField);
+			topPanel.add(ruleIdLabel);
+			topPanel.add(ruleIdTextField);
+			
+			JPanel bottomPanel = new JPanel();
+			bottomPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 10));			
+			bottomPanel.add(meterTypeLabel);
+			bottomPanel.add(meterTypeComboBox);
+			bottomPanel.add(label);
+			bottomPanel.add(queryBtn);
+			
+			JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+			splitPane.setDividerSize(0);
+			splitPane.setBorder(null);
+			splitPane.add(topPanel, JSplitPane.TOP);
+			splitPane.add(bottomPanel, JSplitPane.BOTTOM);
+			
+			add(splitPane, BorderLayout.CENTER);
+			
+			listener = new NumberKeyListener();
+			
+			presetIdTextField.addKeyListener(listener);
+			ruleIdTextField.addKeyListener(listener);
+			
+			queryBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					queryItemInfo();
+				}
+			});
+		}
+		
+		public void queryItemInfo() {
+			try {
+				showPanel.clearData();
+				
+				int nPresetId = Integer.parseInt(presetIdTextField.getText());
+				int nRuleId = Integer.parseInt(ruleIdTextField.getText());
+				int nMeterType = meterTypeComboBox.getSelectedIndex() + 1;
+	
+				NET_RADIOMETRYINFO stItemInfo = 
+						ThermalCameraModule.queryItemTemper(ThermalCameraFrame.THERMAL_CHANNEL, nPresetId, nRuleId, nMeterType);
+				if (stItemInfo == null) {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				showPanel.updateData(stItemInfo);
+				
+			}catch(NumberFormatException e) {
+				JOptionPane.showMessageDialog(null, Res.string().getShowInfo("INPUT_ILLEGAL"), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		}
+		
+		private NumberKeyListener listener;
+		
+		private JTextField presetIdTextField;
+		private JTextField ruleIdTextField;
+	    private JComboBox meterTypeComboBox;
+		private JButton queryBtn;
+    }
+	
+    /**
+     * 查询显示界面
+     * */
+    public class QueryShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+
+		public QueryShowPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_RESULT"), 1);
+			setLayout(new FlowLayout(FlowLayout.CENTER, 5, 25));
+			
+			JLabel meterTypeLabel = new JLabel(Res.string().getShowInfo("METER_TYPE"), JLabel.LEFT);
+			meterTypeTextField = new JTextField();
+			JLabel temperUnitLabel = new JLabel(Res.string().getShowInfo("TEMPER_UNIT"), JLabel.LEFT);
+			temperUnitTextField = new JTextField();
+			JLabel temperAverLabel = new JLabel(Res.string().getShowInfo("TEMPER_AVER"), JLabel.LEFT);
+			temperAverTextField = new JTextField();
+			JLabel temperMaxLabel = new JLabel(Res.string().getShowInfo("TEMPER_MAX"), JLabel.LEFT);
+			temperMaxTextField = new JTextField();
+			JLabel temperMinLabel = new JLabel(Res.string().getShowInfo("TEMPER_MIN"), JLabel.LEFT);
+			temperMinTextField = new JTextField();
+			JLabel temperMidLabel = new JLabel(Res.string().getShowInfo("TEMPER_MID"), JLabel.LEFT);
+			temperMidTextField = new JTextField();
+			JLabel temperStdLabel = new JLabel(Res.string().getShowInfo("TEMPER_STD"), JLabel.LEFT);
+			temperStdTextField = new JTextField();
+			
+			Dimension lableDimension = new Dimension(120, 20);
+			Dimension textFieldDimension = new Dimension(130, 20);
+			meterTypeLabel.setPreferredSize(lableDimension);
+			temperUnitLabel.setPreferredSize(lableDimension);
+			temperAverLabel.setPreferredSize(lableDimension);
+			temperMaxLabel.setPreferredSize(lableDimension);
+			temperMinLabel.setPreferredSize(lableDimension);
+			temperMidLabel.setPreferredSize(lableDimension);
+			temperStdLabel.setPreferredSize(lableDimension);
+			meterTypeTextField.setPreferredSize(textFieldDimension);
+			temperUnitTextField.setPreferredSize(textFieldDimension);
+			temperAverTextField.setPreferredSize(textFieldDimension);
+			temperMaxTextField.setPreferredSize(textFieldDimension);
+			temperMinTextField.setPreferredSize(textFieldDimension);
+			temperMidTextField.setPreferredSize(textFieldDimension);
+			temperStdTextField.setPreferredSize(textFieldDimension);
+			
+			meterTypeTextField.setEditable(false);
+			temperUnitTextField.setEditable(false);
+			temperAverTextField.setEditable(false);
+			temperMaxTextField.setEditable(false);
+			temperMinTextField.setEditable(false);
+			temperMidTextField.setEditable(false);
+			temperStdTextField.setEditable(false);
+
+			add(meterTypeLabel);
+			add(meterTypeTextField);
+			add(temperUnitLabel);
+			add(temperUnitTextField);
+			add(temperMaxLabel);
+			add(temperMaxTextField);
+			add(temperMinLabel);
+			add(temperMinTextField);
+			add(temperMidLabel);
+			add(temperMidTextField);
+			add(temperStdLabel);
+			add(temperStdTextField);
+		}
+		
+		public void updateData(NET_RADIOMETRYINFO stItemInfo) {
+			String[] data = new String[7];
+
+			String [] arrMeterType = Res.string().getMeterTypeList();
+			if (stItemInfo.nMeterType >= 1 && 
+					stItemInfo.nMeterType <= arrMeterType.length) {
+				data[0] = arrMeterType[stItemInfo.nMeterType-1];
+			}else {
+				data[0] = Res.string().getShowInfo("UNKNOWN");
+			}
+			
+			String [] arrTemperUnit = Res.string().getTemperUnitList();
+			if (stItemInfo.nTemperUnit >= 1 && 
+					stItemInfo.nTemperUnit <= arrTemperUnit.length) {
+				data[1] = arrTemperUnit[stItemInfo.nTemperUnit-1];
+			}else {
+				data[1] = Res.string().getShowInfo("UNKNOWN");
+			}
+			
+			data[2] = String.valueOf(stItemInfo.fTemperAver);
+			data[3] = String.valueOf(stItemInfo.fTemperMax);
+			data[4] = String.valueOf(stItemInfo.fTemperMin);
+			data[5] = String.valueOf(stItemInfo.fTemperMid);
+			data[6] = String.valueOf(stItemInfo.fTemperStd);
+			
+			setData(data);
+		}
+		
+		public void clearData() {
+			setData(new String[7]);
+		}
+		
+		private void setData(String[] data) {
+			
+			if (data.length != 7) {
+				System.err.printf("data length  %d != 7", data.length);
+				return;
+			}
+
+			meterTypeTextField.setText(data[0]);
+			temperUnitTextField.setText(data[1]);
+			temperAverTextField.setText(data[2]);
+			temperMaxTextField.setText(data[3]);
+			temperMinTextField.setText(data[4]);
+			temperMidTextField.setText(data[5]);
+			temperStdTextField.setText(data[6]);
+		}
+				
+		private JTextField meterTypeTextField;
+		private JTextField temperUnitTextField;
+		private JTextField temperAverTextField;
+		private JTextField temperMaxTextField;
+		private JTextField temperMinTextField;
+		private JTextField temperMidTextField;
+		private JTextField temperStdTextField;
+    }
+    
+	class NumberKeyListener implements KeyListener {
+		
+		public void keyTyped(KeyEvent e) {
+			  int key = e.getKeyChar();
+			  if (key < 48 || key > 57) {
+				  e.consume();
+			  }
+		}
+
+		public void keyPressed(KeyEvent e) {}
+		
+		public void keyReleased(KeyEvent e) {}
+	}
+	
+	
+	private QueryPanel queryPanel;
+	private QueryShowPanel showPanel;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/PointQueryDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/PointQueryDialog.java
new file mode 100644
index 0000000..05d06f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/PointQueryDialog.java
@@ -0,0 +1,233 @@
+package com.netsdk.demo.frame.ThermalCamera;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.ThermalCameraModule;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.NET_RADIOMETRYINFO;
+
+/**
+ * 查询测温点对话框
+ */
+public class PointQueryDialog extends JDialog{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	public PointQueryDialog() {
+		setTitle(Res.string().getShowInfo("POINT_TEMPER"));
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(350, 300);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		///////////////////////////////
+		queryPanel = new QueryPanel();
+		showPanel = new QueryShowPanel();
+
+		add(queryPanel, BorderLayout.NORTH);
+		add(showPanel, BorderLayout.CENTER);
+	}
+	
+	
+	/**
+     * 查询界面
+     * */
+    public class QueryPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	
+		public QueryPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_CONDITION"), 1);
+			setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));			
+
+			JLabel XLabel = new JLabel(Res.string().getShowInfo("X"), JLabel.CENTER);
+			XTextField = new JTextField("0");
+			JLabel YLabel = new JLabel(Res.string().getShowInfo("Y"), JLabel.CENTER);
+			YTextField = new JTextField("0");
+			queryBtn = new JButton(Res.string().getShowInfo("QUERY"));
+			
+			Dimension lableDimension = new Dimension(10, 20);
+			Dimension textFieldDimension = new Dimension(70, 20);
+			Dimension btnDimension = new Dimension(100, 20);
+
+			XLabel.setPreferredSize(lableDimension);
+			XTextField.setPreferredSize(textFieldDimension);
+			YLabel.setPreferredSize(lableDimension);
+			YTextField.setPreferredSize(textFieldDimension);
+			queryBtn.setPreferredSize(btnDimension);
+			
+			add(XLabel);
+			add(XTextField);
+			add(YLabel);
+			add(YTextField);
+			add(queryBtn);
+			
+			listener = new NumberKeyListener();
+			XTextField.addKeyListener(listener);
+			YTextField.addKeyListener(listener);
+			
+			queryBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					queryPointInfo();
+				}
+			});
+		}
+		
+		private void queryPointInfo() {
+			try {
+				showPanel.clearData();
+				
+				short x = Short.parseShort(XTextField.getText());
+				short y = Short.parseShort(YTextField.getText());
+	
+				NET_RADIOMETRYINFO pointInfo = 
+						ThermalCameraModule.queryPointTemper(ThermalCameraFrame.THERMAL_CHANNEL, x, y);
+				if (pointInfo == null) {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				showPanel.updateData(pointInfo);
+				
+			}catch(NumberFormatException e) {
+				JOptionPane.showMessageDialog(null, Res.string().getShowInfo("COORDINATE_ILLEGAL"), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		}
+		
+		private NumberKeyListener listener;
+		
+		private JTextField XTextField;
+		private JTextField YTextField;
+		private JButton queryBtn;
+    }
+	
+    /**
+     * 查询显示界面
+     * */
+    public class QueryShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+
+		public QueryShowPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_RESULT"), 1);
+			setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30));
+			
+			JLabel meterTypeLabel = new JLabel(Res.string().getShowInfo("METER_TYPE"), JLabel.LEFT);
+			meterTypeTextField = new JTextField();
+			JLabel temperUnitLabel = new JLabel(Res.string().getShowInfo("TEMPER_UNIT"), JLabel.LEFT);
+			temperUnitTextField = new JTextField();
+			JLabel temperLabel = new JLabel(Res.string().getShowInfo("TEMPER"), JLabel.LEFT);
+			temperTextField = new JTextField();
+			
+			Dimension lableDimension = new Dimension(100, 20);
+			Dimension textFieldDimension = new Dimension(130, 20);
+			meterTypeLabel.setPreferredSize(lableDimension);
+			temperUnitLabel.setPreferredSize(lableDimension);
+			temperLabel.setPreferredSize(lableDimension);
+			meterTypeTextField.setPreferredSize(textFieldDimension);
+			temperUnitTextField.setPreferredSize(textFieldDimension);
+			temperTextField.setPreferredSize(textFieldDimension);
+			
+			meterTypeTextField.setEditable(false);
+			temperUnitTextField.setEditable(false);
+			temperTextField.setEditable(false);
+
+			add(meterTypeLabel);
+			add(meterTypeTextField);
+			add(temperUnitLabel);
+			add(temperUnitTextField);
+			add(temperLabel);
+			add(temperTextField);
+		}
+		
+		public void updateData(NET_RADIOMETRYINFO stPointInfo) {
+			String[] data = new String[3];
+			
+			String [] arrMeterType = Res.string().getMeterTypeList();
+			if (stPointInfo.nMeterType >= 1 && 
+					stPointInfo.nMeterType <= arrMeterType.length) {
+				data[0] = arrMeterType[stPointInfo.nMeterType-1];
+			}else {
+				data[0] = Res.string().getShowInfo("UNKNOWN");
+			}
+			
+			String [] arrTemperUnit = Res.string().getTemperUnitList();
+			if (stPointInfo.nTemperUnit >= 1 && 
+					stPointInfo.nTemperUnit <= arrTemperUnit.length) {
+				data[1] = arrTemperUnit[stPointInfo.nTemperUnit-1];
+			}else {
+				data[1] = Res.string().getShowInfo("UNKNOWN");
+			}
+			
+			data[2] = String.valueOf(stPointInfo.fTemperAver);
+			
+			setData(data);
+		}
+		
+		public void clearData() {
+			setData(new String[3]);
+		}
+		
+		private void setData(String[] data) {
+			
+			if (data.length != 3) {
+				System.err.printf("data length  %d != 3", data.length);
+				return;
+			}
+
+			meterTypeTextField.setText(data[0]);
+			temperUnitTextField.setText(data[1]);
+			temperTextField.setText(data[2]);
+		}
+				
+		private JTextField meterTypeTextField;
+		private JTextField temperUnitTextField;
+		private JTextField temperTextField;
+    }
+    
+	
+	
+	class NumberKeyListener implements KeyListener {
+		
+		public void keyTyped(KeyEvent e) {
+			  int key = e.getKeyChar();
+			  if (key < 48 || key > 57) {
+				  e.consume();
+			  }
+		}
+
+		public void keyPressed(KeyEvent e) {}
+		
+		public void keyReleased(KeyEvent e) {}
+	}
+	
+	private QueryPanel queryPanel;
+	private QueryShowPanel showPanel;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/TemperQueryDialog.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/TemperQueryDialog.java
new file mode 100644
index 0000000..7271699
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/TemperQueryDialog.java
@@ -0,0 +1,558 @@
+package com.netsdk.demo.frame.ThermalCamera;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.UnsupportedEncodingException;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.DateChooserJButton;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.ThermalCameraModule;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+
+public class TemperQueryDialog extends JDialog{
+
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	private NET_IN_RADIOMETRY_STARTFIND stuStartFind = new NET_IN_RADIOMETRY_STARTFIND();
+	
+	public TemperQueryDialog() {
+		setTitle(Res.string().getShowInfo("TEMPER_INFO"));
+		setLayout(new BorderLayout());
+		setModal(true);
+		pack();
+		setSize(800, 550);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+		
+		///////////////////////////////
+		queryPanel = new QueryPanel();
+		showPanel = new QueryShowPanel();
+		
+	    add(queryPanel, BorderLayout.NORTH);
+	    add(showPanel, BorderLayout.CENTER);
+
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e){
+				try {
+					ThermalCameraModule.stopFind();
+				}finally {
+					dispose();
+				}
+			}
+		});
+	}
+	
+	public void setSearchEnable(boolean b) {
+		showPanel.setButtonEnable(b);
+		queryPanel.setButtonEnable(b);
+	}
+	
+	public void queryHistoryInfo(final QUERY_TYPE type) {
+		SwingUtilities.invokeLater(new Runnable() {
+			@Override
+			public void run() {
+				setSearchEnable(false);
+				if (type == QUERY_TYPE.FIRST_PAGE_QUERY) {
+					showPanel.clearData();
+				}
+			}
+		});
+		new QuerySwingWorker(type).execute();
+	}
+	
+	/**
+     * 查询界面
+     * */
+    public class QueryPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	
+		public QueryPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_CONDITION"), 1);
+			setLayout(new BorderLayout());			
+
+			JLabel startTimeLabel = new JLabel(Res.string().getShowInfo("START_TIME"), JLabel.LEFT);
+			startTimeBtn = new DateChooserJButton();
+			JLabel endTimeLabel = new JLabel(Res.string().getShowInfo("END_TIME"), JLabel.LEFT);
+			endTimeBtn = new DateChooserJButton();
+			JLabel meterTypeLabel = new JLabel(Res.string().getShowInfo("METER_TYPE"), JLabel.LEFT);
+			meterTypeComboBox = new JComboBox();
+			meterTypeComboBox.setModel(new DefaultComboBoxModel(Res.string().getMeterTypeList()));
+			JLabel periodLabel = new JLabel(Res.string().getShowInfo("SAVE_PERIOD"), JLabel.LEFT);
+			periodComboBox = new JComboBox();
+			periodComboBox.setModel(new DefaultComboBoxModel(Res.string().getPeriodList()));
+			queryBtn = new JButton(Res.string().getShowInfo("QUERY"));
+			
+			Dimension lableDimension = new Dimension(85, 20);
+			Dimension btnDimension = new Dimension(125, 20);
+			
+			startTimeLabel.setPreferredSize(lableDimension);
+			startTimeBtn.setPreferredSize(btnDimension);
+			endTimeLabel.setPreferredSize(lableDimension);
+			endTimeBtn.setPreferredSize(btnDimension);
+			meterTypeLabel.setPreferredSize(lableDimension);
+			meterTypeComboBox.setPreferredSize(btnDimension);
+			periodLabel.setPreferredSize(lableDimension);
+			periodComboBox.setPreferredSize(btnDimension);
+			queryBtn.setPreferredSize(btnDimension);
+			
+			JPanel startTimePanel = new JPanel();
+			startTimePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+			startTimePanel.add(startTimeLabel);
+			startTimePanel.add(startTimeBtn);
+			JPanel endTimePanel = new JPanel();
+			endTimePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+			endTimePanel.add(endTimeLabel);
+			endTimePanel.add(endTimeBtn);
+			JPanel topPanel = new JPanel();
+			topPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 30, 2));
+			topPanel.add(startTimePanel);
+			topPanel.add(endTimePanel);
+			
+			JPanel meterTypePanel = new JPanel();
+			meterTypePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+			meterTypePanel.add(meterTypeLabel);
+			meterTypePanel.add(meterTypeComboBox);
+			JPanel periodPanel = new JPanel();
+			periodPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
+			periodPanel.add(periodLabel);
+			periodPanel.add(periodComboBox);
+			JPanel bottomPanel = new JPanel();
+			bottomPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 30, 2));
+			bottomPanel.add(meterTypePanel);
+			bottomPanel.add(periodPanel);
+			
+			JPanel leftPanel = new JPanel(new GridLayout(2,1));
+			BorderEx.set(leftPanel, "", 1);
+			leftPanel.add(topPanel);
+			leftPanel.add(bottomPanel);
+			
+			JPanel rightPanel = new JPanel();
+			rightPanel.setLayout(null);
+			BorderEx.set(rightPanel, "", 1);
+			queryBtn.setBounds(50, 30, 125, 20);
+			rightPanel.add(queryBtn);
+			
+			JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
+			pane.setDividerSize(0);
+			pane.setBorder(null);
+			
+			add(pane, BorderLayout.CENTER);
+			
+			queryBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					setStuStartFind();
+					queryHistoryInfo(QUERY_TYPE.FIRST_PAGE_QUERY);
+				}
+			});
+		}
+		
+		private void setStuStartFind() {
+			
+			setTime(stuStartFind.stStartTime, startTimeBtn.getText());
+			setTime(stuStartFind.stEndTime, endTimeBtn.getText());
+			stuStartFind.nMeterType = meterTypeComboBox.getSelectedIndex() + 1;
+			stuStartFind.nChannel = ThermalCameraFrame.THERMAL_CHANNEL;
+			int[] arrPeriod = {5, 10, 15, 30};
+			stuStartFind.emPeriod = arrPeriod[periodComboBox.getSelectedIndex()];
+		}
+		
+		private void setTime(NET_TIME netTime, String date) {
+  
+	    	String[] dateTime = date.split(" ");
+	        String[] arrDate = dateTime[0].split("-");
+	        String[] arrTime = dateTime[1].split(":");
+	        
+	        netTime.dwYear = Integer.parseInt(arrDate[0]);
+	        netTime.dwMonth = Integer.parseInt(arrDate[1]);
+	        netTime.dwDay = Integer.parseInt(arrDate[2]);
+	        netTime.dwHour = Integer.parseInt(arrTime[0]);
+	        netTime.dwMinute = Integer.parseInt(arrTime[1]);
+	        netTime.dwSecond = Integer.parseInt(arrTime[2]);
+		}
+		
+		public void setButtonEnable(boolean b) {
+			queryBtn.setEnabled(b);
+		}
+				
+		private DateChooserJButton startTimeBtn;
+		private DateChooserJButton endTimeBtn;
+	    private JComboBox meterTypeComboBox;
+	    private JComboBox periodComboBox;
+		private JButton queryBtn;
+    }
+	
+	/**
+     * 热成像查询结果信息显示界面
+     * */
+    public class QueryShowPanel extends JPanel {
+    	/**
+    	 * 
+    	 */
+    	private static final long serialVersionUID = 1L;
+    	public static final int INDEX = 0;
+    	public static final int RECORD_TIME = 1;
+    	public static final int PRESET_ID = 2;
+    	public static final int RULE_ID = 3;
+    	public static final int ITEM_NAME = 4;
+    	public static final int CHANNEL = 5;
+    	public static final int COORDINATE = 6;
+    	public static final int METER_TYPE = 7;
+    	public static final int TEMPER_UNIT = 8;
+    	public static final int TEMPER_AVER = 9;
+    	public static final int TEMPER_MAX = 10;
+    	public static final int TEMPER_MIN = 11;
+    	public static final int TEMPER_MID = 12;
+    	public static final int TEMPER_STD = 13;
+		
+    	public final static int QUERY_SHOW_COUNT = 20; // 查询个数
+        private int currentIndex = 0;		// 实际显示个数
+		
+        private String [] arrMeterType = Res.string().getMeterTypeList();
+        private String [] arrTemperUnit = Res.string().getTemperUnitList(); // 减少次数
+		
+		public QueryShowPanel() {
+			BorderEx.set(this, Res.string().getShowInfo("QUERY_LIST"), 1);
+			setLayout(new BorderLayout());
+			
+			String[] columnNames = {
+					Res.string().getShowInfo("INDEX"), Res.string().getShowInfo("RECORD_TIME"),
+					Res.string().getShowInfo("PRESET_ID"), Res.string().getShowInfo("RULE_ID"),
+					Res.string().getShowInfo("ITEM_NAME"), Res.string().getShowInfo("CHANNEL"),
+					Res.string().getShowInfo("COORDINATE"), Res.string().getShowInfo("METER_TYPE"),
+					Res.string().getShowInfo("TEMPER_UNIT"), Res.string().getShowInfo("TEMPER_AVER"),
+					Res.string().getShowInfo("TEMPER_MAX"), Res.string().getShowInfo("TEMPER_MIN"),
+					Res.string().getShowInfo("TEMPER_MID"), Res.string().getShowInfo("TEMPER_STD")
+			};
+						
+			tableModel = new DefaultTableModel(null, columnNames);
+	        table = new JTable(tableModel) {
+				private static final long serialVersionUID = 1L;
+
+				public boolean isCellEditable(int rowIndex, int columnIndex) { // 不可编辑
+	                return false;
+	            }
+	        };
+
+	        tableModel.setRowCount(QUERY_SHOW_COUNT);	// 设置最小显示行
+	        
+	        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+			
+	        Enumeration<TableColumn> columns = table.getColumnModel().getColumns();
+			while (columns.hasMoreElements()) {
+				columns.nextElement().setPreferredWidth(140);
+			}
+			
+			table.getColumnModel().getColumn(RECORD_TIME).setPreferredWidth(140);
+			table.getColumnModel().getColumn(ITEM_NAME).setPreferredWidth(180);
+
+			((DefaultTableCellRenderer)
+					table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment(SwingConstants.CENTER);
+			
+			DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
+			tcr.setHorizontalAlignment(SwingConstants.CENTER);
+			table.setDefaultRenderer(Object.class, tcr);
+						
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			
+			JScrollPane scrollPane = new JScrollPane(table);
+			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+			
+			JPanel functionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 120, 5));
+			prePageBtn = new JButton(Res.string().getPreviousPage());
+			nextPageBtn = new JButton(Res.string().getNextPage());
+			prePageBtn.setPreferredSize(new Dimension(120, 20));
+			nextPageBtn.setPreferredSize(new Dimension(120, 20));
+			
+			setButtonEnable(false);
+			
+//			functionPanel.add(prePageBtn);
+			functionPanel.add(nextPageBtn);
+			
+			add(scrollPane, BorderLayout.CENTER);
+			add(functionPanel, BorderLayout.SOUTH);
+			
+			prePageBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					queryHistoryInfo(QUERY_TYPE.PRE_PAGE_QUERY);
+				}
+			});
+			
+			nextPageBtn.addActionListener(new ActionListener() {
+
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					queryHistoryInfo(QUERY_TYPE.NEXT_PAGE_QUERY);
+				}
+			});
+		}
+		
+		public void setButtonEnable(boolean b) {
+	
+			prePageBtn.setEnabled(false);
+			nextPageBtn.setEnabled(false);
+			
+			if (b) {
+				if (currentIndex < ThermalCameraModule.getTotalCount()) {
+					nextPageBtn.setEnabled(true);
+				}
+				
+				if (currentIndex > QUERY_SHOW_COUNT) {
+					prePageBtn.setEnabled(true);
+				}
+			}
+		}
+		
+		public int getIndex() {
+			return currentIndex;
+		}
+		
+		public void setIndex(int index) {
+			currentIndex = index;
+		}
+		
+		public void insertData(NET_OUT_RADIOMETRY_DOFIND stuDoFind) {
+			if (stuDoFind == null) {
+				return;
+			}
+			
+			tableModel.setRowCount(0);
+			for (int i = 0; i < stuDoFind.nFound; ++i) {
+				insertData(stuDoFind.stInfo[i]);
+			}
+
+			tableModel.setRowCount(QUERY_SHOW_COUNT);
+			table.updateUI();
+		}
+    
+	    private void insertData(NET_RADIOMETRY_QUERY data) {
+			++currentIndex;
+			Vector<String> vector = new Vector<String>();
+			
+			vector.add(String.valueOf(currentIndex));
+			vector.add(data.stTime.toStringTimeEx());
+			vector.add(String.valueOf(data.nPresetId));
+			vector.add(String.valueOf(data.nRuleId));
+			try {
+				vector.add(new String(data.szName, "GBK").trim());
+			} catch (UnsupportedEncodingException e) {
+				vector.add(new String(data.szName).trim());
+			}
+			vector.add(String.valueOf(data.nChannel));
+			
+			if (data.stTemperInfo.nMeterType == NET_RADIOMETRY_METERTYPE.NET_RADIOMETRY_METERTYPE_SPOT) {
+				vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + ")");
+			}else if(data.stTemperInfo.nMeterType == NET_RADIOMETRY_METERTYPE.NET_RADIOMETRY_METERTYPE_LINE){
+				vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + ")");
+			}else{
+				switch(data.nCoordinateNum){
+				case 3:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+							+ "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + ")");
+					break;
+				case 4:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+						    + "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + "),"
+						    + "(" + data.stCoordinates[3].nx + "," + data.stCoordinates[3].ny + ")");
+					break;
+				case 5:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+						    + "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + "),"
+						    + "(" + data.stCoordinates[3].nx + "," + data.stCoordinates[3].ny + "),"
+						    + "(" + data.stCoordinates[4].nx + "," + data.stCoordinates[4].ny + ")");
+					break;
+				case 6:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+						    + "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + "),"
+						    + "(" + data.stCoordinates[3].nx + "," + data.stCoordinates[3].ny + "),"
+						    + "(" + data.stCoordinates[4].nx + "," + data.stCoordinates[4].ny + "),"
+						    + "(" + data.stCoordinates[5].nx + "," + data.stCoordinates[5].ny + "),");
+					break;
+				case 7:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+						    + "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + "),"
+						    + "(" + data.stCoordinates[3].nx + "," + data.stCoordinates[3].ny + "),"
+						    + "(" + data.stCoordinates[4].nx + "," + data.stCoordinates[4].ny + "),"
+						    + "(" + data.stCoordinates[5].nx + "," + data.stCoordinates[5].ny + "),"
+						    + "(" + data.stCoordinates[6].nx + "," + data.stCoordinates[6].ny + ")");
+					break;
+				case 8:
+					vector.add("(" + data.stCoordinates[0].nx + "," + data.stCoordinates[0].ny + "),"
+							+ "(" + data.stCoordinates[1].nx + "," + data.stCoordinates[1].ny + "),"
+						    + "(" + data.stCoordinates[2].nx + "," + data.stCoordinates[2].ny + "),"
+						    + "(" + data.stCoordinates[3].nx + "," + data.stCoordinates[3].ny + "),"
+						    + "(" + data.stCoordinates[4].nx + "," + data.stCoordinates[4].ny + "),"
+						    + "(" + data.stCoordinates[5].nx + "," + data.stCoordinates[5].ny + "),"
+						    + "(" + data.stCoordinates[6].nx + "," + data.stCoordinates[6].ny + "),"
+						    + "(" + data.stCoordinates[7].nx + "," + data.stCoordinates[7].ny + ")");
+					break;
+				}
+			}
+			
+			if (data.stTemperInfo.nMeterType >= 1 && 
+					data.stTemperInfo.nMeterType <= arrMeterType.length) {
+				vector.add(arrMeterType[data.stTemperInfo.nMeterType-1]);
+			}else {
+				vector.add(Res.string().getShowInfo("UNKNOWN"));
+			}
+			
+			if (data.stTemperInfo.nTemperUnit >= 1 && 
+					data.stTemperInfo.nTemperUnit <= arrTemperUnit.length) {
+				vector.add(arrTemperUnit[data.stTemperInfo.nTemperUnit-1]);
+			}else {
+				vector.add(Res.string().getShowInfo("UNKNOWN"));
+			}
+			
+			vector.add(String.valueOf(data.stTemperInfo.fTemperAver));
+			vector.add(String.valueOf(data.stTemperInfo.fTemperMax));
+			vector.add(String.valueOf(data.stTemperInfo.fTemperMin));
+			vector.add(String.valueOf(data.stTemperInfo.fTemperMid));
+			vector.add(String.valueOf(data.stTemperInfo.fTemperStd));
+		    
+		    tableModel.addRow(vector);
+		}
+			
+		public void clearData() {
+			currentIndex = 0;
+			tableModel.setRowCount(0);
+			tableModel.setRowCount(QUERY_SHOW_COUNT);
+			table.updateUI();
+			setButtonEnable(false);
+		}
+		
+		private JTable table = null;
+		private DefaultTableModel tableModel = null;
+		public JButton prePageBtn;
+		public JButton nextPageBtn;
+    }
+    
+    /**
+     * 查询类型
+     * */
+	public enum QUERY_TYPE {
+		UNKNOWN,						// 未知
+		FIRST_PAGE_QUERY,				// 第一页
+		PRE_PAGE_QUERY,					// 上一页
+		NEXT_PAGE_QUERY					// 下一页
+	};
+    
+    /**
+	 * 查找工作线程(完成异步搜索)
+	 */
+	public class QuerySwingWorker extends SwingWorker<NET_OUT_RADIOMETRY_DOFIND, Object> {
+		
+		private QUERY_TYPE type;
+		private int offset = 0;
+		
+		public QuerySwingWorker(QUERY_TYPE type) {
+			this.type = type;
+		}
+		
+		protected NET_OUT_RADIOMETRY_DOFIND doInBackground() {
+
+			int currentIndex = showPanel.getIndex();
+			try {
+				switch(type) {
+					case FIRST_PAGE_QUERY:
+						ThermalCameraModule.stopFind();
+						if (!ThermalCameraModule.startFind(stuStartFind)) {
+							return null;
+						}
+						offset = 0;
+						break;
+					case PRE_PAGE_QUERY:
+						offset = ((currentIndex-1)/QueryShowPanel.QUERY_SHOW_COUNT-1) * QueryShowPanel.QUERY_SHOW_COUNT;
+						break;
+					case NEXT_PAGE_QUERY:
+						offset = currentIndex;
+						break;
+					default:
+						break;
+				}
+				
+				
+				NET_OUT_RADIOMETRY_DOFIND stuDoFind = ThermalCameraModule.doFind(offset, QueryShowPanel.QUERY_SHOW_COUNT);
+	
+				return stuDoFind;
+			}catch (Exception e) {
+				System.out.println(" -------- doInBackground Exception -------- ");
+			}
+			return null;
+		}
+		
+		@Override
+		protected void done() {	
+			
+			try {
+
+				NET_OUT_RADIOMETRY_DOFIND stuDoFind = get();
+				if (stuDoFind == null) {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+//				System.out.println("offset " + offset + " nFound " + stuDoFind.nFound + " Total " + ThermalCameraModule.getTotalCount());
+
+				if (stuDoFind.nFound == 0) {
+					JOptionPane.showMessageDialog(null, Res.string().getFailed(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					return;
+				}
+				
+				showPanel.setIndex(offset);
+				showPanel.insertData(stuDoFind);				
+			} catch (Exception e) {
+//				e.printStackTrace();
+			}finally {
+				setSearchEnable(true);
+			}
+		}
+	}
+    
+    private QueryPanel queryPanel;
+	private QueryShowPanel showPanel;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ThermalCamera.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ThermalCamera.java
new file mode 100644
index 0000000..b28cf8b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/ThermalCamera/ThermalCamera.java
@@ -0,0 +1,567 @@
+package com.netsdk.demo.frame.ThermalCamera;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.BorderEx;
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.LoginPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.RealPlayModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * 热成像
+ */
+class ThermalCameraFrame extends JFrame {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public static int THERMAL_CHANNEL = 1; // thermal channel
+	
+	private Vector<String> chnlist = new Vector<String>(); 
+
+	private boolean isrealplayOne = false;
+	private boolean isrealplayTwo = false;
+
+	// 设备断线通知回调
+	private static DisConnect disConnect       = new DisConnect(); 
+	
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect(); 
+	
+	// 预览句柄
+	public static LLong m_hPlayHandleOne = new LLong(0);
+	
+	public static LLong m_hPlayHandleTwo = new LLong(0);
+	
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();   
+	
+	public ThermalCameraFrame() {
+	    setTitle(Res.string().getThermalCamera());
+	    setLayout(new BorderLayout());
+	    pack();
+	    setSize(800, 560);
+	    setResizable(false);
+	    setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+		
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+	 
+	    loginPanel = new LoginPanel();
+	    operatePanel = new ThermalOperatePanel();
+	    realPanelOne = new RealPanelOne();
+	    realPanelTwo = new RealPanelTwo();
+	    
+	    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, loginPanel, operatePanel);
+	    splitPane.setDividerSize(0);
+	    splitPane.setBorder(null);
+	    JPanel realPanel = new JPanel();;
+	    realPanel.setLayout(new GridLayout(1,  2));
+	    realPanel.add(realPanelOne);
+	    realPanel.add(realPanelTwo);
+	    
+		add(splitPane, BorderLayout.NORTH);
+	    add(realPanel, BorderLayout.CENTER);
+	    
+	    loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {	   	    
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getShowInfo("THERMAL_CAMERA") + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+	    
+	    loginPanel.addLogoutBtnActionListener(new ActionListener() {		
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getShowInfo("THERMAL_CAMERA"));
+				logout();	
+			}
+		});
+        
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+	    		RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+	    		LoginModule.logout();
+	    		LoginModule.cleanup();   // 关闭工程,释放资源
+	    		dispose();	
+	    		
+	    		SwingUtilities.invokeLater(new Runnable() {
+	    			public void run() {
+	    				FunctionList demo = new FunctionList();
+	    				demo.setVisible(true);
+	    			}
+	    		});
+	    	}
+	    });
+	}
+	
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getShowInfo("THERMAL_CAMERA") + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+	
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getShowInfo("THERMAL_CAMERA") + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	
+	// 登录
+	public boolean login() {
+		if(LoginModule.login(loginPanel.ipTextArea.getText(), 
+						Integer.parseInt(loginPanel.portTextArea.getText()), 
+						loginPanel.nameTextArea.getText(), 
+						new String(loginPanel.passwordTextArea.getPassword()))) {
+	
+			
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+			
+			setEnable(true);
+			
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+	
+	// 登出
+	public void logout() {
+		RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+		RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+		LoginModule.logout();
+		
+		setEnable(false);
+		chnlist.clear();
+	}
+	
+	public void setEnable(boolean b) {
+		loginPanel.setButtonEnable(b);
+		realPanelOne.setRealPlayEnable(b);
+		realPanelTwo.setRealPlayEnable(b);
+		operatePanel.setOperateEnabled(b);
+		isrealplayOne = false;
+		isrealplayTwo = false;
+	}
+	
+	/*
+	 * 热成像操作面板
+	 */
+	private class ThermalOperatePanel extends JPanel {
+		
+		private static final long serialVersionUID = 1L;
+		
+		public ThermalOperatePanel() {
+			BorderEx.set(this, Res.string().getShowInfo("THERMAL_OPERATE"), 2);
+			setLayout(new FlowLayout(FlowLayout.CENTER, 15, 5));
+			
+			JLabel chnlabel = new JLabel(Res.string().getChn());
+			chnComboBox = new JComboBox();
+			
+			pointQueryBtn = new JButton(Res.string().getShowInfo("POINT_QUERY"));
+			itemQueryBtn = new JButton(Res.string().getShowInfo("ITEM_QUERY"));
+			historyQueryBtn = new JButton(Res.string().getShowInfo("TEMPER_QUERY"));
+			heatMapBtn = new JButton(Res.string().getShowInfo("HEATMAP"));
+			
+			Dimension btnDimension = new Dimension(140, 20);
+			pointQueryBtn.setPreferredSize(btnDimension); 
+			itemQueryBtn.setPreferredSize(btnDimension); 
+			historyQueryBtn.setPreferredSize(btnDimension); 
+			heatMapBtn.setPreferredSize(btnDimension); 
+			chnComboBox.setPreferredSize(new Dimension(80, 20)); 
+
+			JPanel chnPanel = new JPanel();
+			chnPanel.add(chnlabel);
+			chnPanel.add(chnComboBox);
+
+			add(chnPanel);
+			add(pointQueryBtn);
+			add(pointQueryBtn);
+			add(itemQueryBtn);
+			add(historyQueryBtn);
+			add(heatMapBtn);
+			
+			setOperateEnabled(false);
+			
+			listener = new ThermalOperateActionListener();
+			pointQueryBtn.addActionListener(listener);
+			itemQueryBtn.addActionListener(listener);
+			historyQueryBtn.addActionListener(listener);
+			heatMapBtn.addActionListener(listener);
+		}
+		
+		public void setOperateEnabled(boolean b) {
+			pointQueryBtn.setEnabled(b);
+			itemQueryBtn.setEnabled(b);
+			historyQueryBtn.setEnabled(b);
+			heatMapBtn.setEnabled(b);
+			chnComboBox.setEnabled(b);
+			if (b) {
+				chnComboBox.setModel(new DefaultComboBoxModel(chnlist));
+				if (chnlist.size() > THERMAL_CHANNEL) {
+					chnComboBox.setSelectedIndex(THERMAL_CHANNEL);
+				}
+			}else {
+				chnComboBox.setModel(new DefaultComboBoxModel());
+			}
+		}
+		
+		private JComboBox chnComboBox;
+		private ThermalOperateActionListener listener;
+		private JButton pointQueryBtn;
+		private JButton itemQueryBtn;
+		private JButton historyQueryBtn;
+		private JButton heatMapBtn;
+	}
+	
+	private enum ThermalOperate {UNKNOWN, POINT_QUERY, ITEM_QUERY, TEMPER_QUERY, HEATMAP}
+	
+	/**
+	 * 按键监听实现类
+	 */
+	private class ThermalOperateActionListener implements ActionListener {	
+		
+		@Override
+		public void actionPerformed(ActionEvent arg0) {
+			
+			THERMAL_CHANNEL = operatePanel.chnComboBox.getSelectedIndex();
+			ThermalOperate emType = getOperateType(arg0.getSource());
+			switch(emType) {
+				case POINT_QUERY:
+					new PointQueryDialog().setVisible(true);
+					break;
+				case ITEM_QUERY:
+					new ItemQueryDialog().setVisible(true);
+					break;	
+				case TEMPER_QUERY:
+					new TemperQueryDialog().setVisible(true);
+					break;	
+				case HEATMAP:
+					new HeatMapDialog().setVisible(true);
+					break;	
+				default:
+					break;
+			}
+		}
+		
+		private ThermalOperate getOperateType(Object btn) {
+			ThermalOperate type = ThermalOperate.UNKNOWN;
+			
+			if (btn == operatePanel.pointQueryBtn) {
+				type = ThermalOperate.POINT_QUERY;
+			}else if (btn == operatePanel.itemQueryBtn) {
+				type = ThermalOperate.ITEM_QUERY;
+			}else if (btn == operatePanel.historyQueryBtn) {
+				type = ThermalOperate.TEMPER_QUERY;
+			}else if (btn == operatePanel.heatMapBtn) {
+				type = ThermalOperate.HEATMAP;
+			}else{
+				System.err.println("Unknown Event: " + btn);
+			}
+			
+			return type;
+			
+		}
+	}
+	
+	/*
+	 * 预览界面通道、码流设置  以及抓图面板
+	 */
+	private class RealPanelOne extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanelOne() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanelOne = new Panel();
+			realplayPanelOne = new JPanel();
+			
+			add(channelPanelOne, BorderLayout.NORTH);
+			add(realplayPanelOne, BorderLayout.CENTER);
+			
+			/************ 预览面板 **************/
+			realplayPanelOne.setLayout(new BorderLayout());
+			realplayPanelOne.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindowOne = new Panel();
+			realPlayWindowOne.setBackground(Color.GRAY);
+			realplayPanelOne.add(realPlayWindowOne, BorderLayout.CENTER);
+			
+			/************ 通道、码流面板 **************/
+			chnlabelOne = new JLabel(Res.string().getChn());
+			chnComboBoxOne = new JComboBox();	 			
+
+			streamLabelOne = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxOne = new JComboBox(stream);	 
+			
+			realplayBtnOne = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanelOne.setLayout(new FlowLayout());			
+			channelPanelOne.add(chnlabelOne);
+			channelPanelOne.add(chnComboBoxOne);
+			channelPanelOne.add(streamLabelOne);
+			channelPanelOne.add(streamComboBoxOne);
+			channelPanelOne.add(realplayBtnOne);
+			
+			chnComboBoxOne.setPreferredSize(new Dimension(80, 20)); 
+			streamComboBoxOne.setPreferredSize(new Dimension(95, 20)); 
+			realplayBtnOne.setPreferredSize(new Dimension(115, 20)); 
+		    
+			realPlayWindowOne.setEnabled(false);
+ 			chnComboBoxOne.setEnabled(false);
+			streamComboBoxOne.setEnabled(false);
+			realplayBtnOne.setEnabled(false);
+		    
+			realplayBtnOne.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realPlay();
+				}
+			});
+		}
+		
+		public void setRealPlayEnable(boolean bln) {
+			realPlayWindowOne.setEnabled(bln);
+			chnComboBoxOne.setEnabled(bln);
+			streamComboBoxOne.setEnabled(bln);
+			realplayBtnOne.setEnabled(bln);
+			if (bln) {
+				chnComboBoxOne.setModel(new DefaultComboBoxModel(chnlist));
+			}else {
+				realPlayWindowOne.repaint();    
+				realplayBtnOne.setText(Res.string().getStartRealPlay());
+				chnComboBoxOne.setModel(new DefaultComboBoxModel());
+			}
+		}
+		
+		private void realPlay() {
+			if(!isrealplayOne) {
+				m_hPlayHandleOne = RealPlayModule.startRealPlay(chnComboBoxOne.getSelectedIndex(), 
+					    streamComboBoxOne.getSelectedIndex()==0? 0:3,
+						realPlayWindowOne);
+				if(m_hPlayHandleOne.longValue() != 0) {
+					changePlayStatus(true);
+				} else {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+			} else {
+				RealPlayModule.stopRealPlay(m_hPlayHandleOne);
+				changePlayStatus(false);
+			}	
+		}
+		
+		private void changePlayStatus(boolean b) {
+			realPlayWindowOne.repaint();
+			isrealplayOne = b;
+			chnComboBoxOne.setEnabled(!b);
+			streamComboBoxOne.setEnabled(!b);
+			if (b) {
+				realplayBtnOne.setText(Res.string().getStopRealPlay());
+			} else {
+				m_hPlayHandleOne.setValue(0);
+				realplayBtnOne.setText(Res.string().getStartRealPlay());
+			}
+		}
+		
+		private JPanel realplayPanelOne;
+	    private Panel realPlayWindowOne;
+	    private Panel channelPanelOne;
+	    
+	    private JLabel chnlabelOne;
+	    private JComboBox chnComboBoxOne;	
+	    private JLabel streamLabelOne;
+	    private JComboBox streamComboBoxOne;
+	    private JButton realplayBtnOne;
+	}
+	
+	private class RealPanelTwo extends JPanel {
+		private static final long serialVersionUID = 1L;
+		
+		public RealPanelTwo() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			
+			channelPanelTwo = new Panel();
+			realplayPanelTwo = new JPanel();
+			
+			add(channelPanelTwo, BorderLayout.NORTH);
+			add(realplayPanelTwo, BorderLayout.CENTER);
+			
+			/************ 预览面板 **************/
+			realplayPanelTwo.setLayout(new BorderLayout());
+			realplayPanelTwo.setBorder(new EmptyBorder(5, 5, 5, 5));
+			realPlayWindowTwo = new Panel();
+			realPlayWindowTwo.setBackground(Color.GRAY);
+			realplayPanelTwo.add(realPlayWindowTwo, BorderLayout.CENTER);
+			
+			/************ 通道、码流面板 **************/
+			chnlabelTwo = new JLabel(Res.string().getChn());
+			chnComboBoxTwo = new JComboBox();				
+
+			streamLabelTwo = new JLabel(Res.string().getStreamType());
+			String[] stream = {Res.string().getMasterStream(), Res.string().getSubStream()};
+			streamComboBoxTwo = new JComboBox(stream);	
+			
+			realplayBtnTwo = new JButton(Res.string().getStartRealPlay());
+			
+			channelPanelTwo.setLayout(new FlowLayout());			
+			channelPanelTwo.add(chnlabelTwo);
+			channelPanelTwo.add(chnComboBoxTwo);
+			channelPanelTwo.add(streamLabelTwo);
+			channelPanelTwo.add(streamComboBoxTwo);
+			channelPanelTwo.add(realplayBtnTwo);
+			
+			chnComboBoxTwo.setPreferredSize(new Dimension(80, 20)); 
+			streamComboBoxTwo.setPreferredSize(new Dimension(95, 20)); 
+			realplayBtnTwo.setPreferredSize(new Dimension(115, 20)); 
+		    
+			realPlayWindowTwo.setEnabled(false);
+ 			chnComboBoxTwo.setEnabled(false);
+			streamComboBoxTwo.setEnabled(false);
+			realplayBtnTwo.setEnabled(false);
+		    
+			realplayBtnTwo.addActionListener(new ActionListener() {			
+				@Override
+				public void actionPerformed(ActionEvent e) {
+					realPlay();
+				}
+			});
+		}
+		
+		public void setRealPlayEnable(boolean bln) {
+			realPlayWindowTwo.setEnabled(bln);
+			chnComboBoxTwo.setEnabled(bln);
+			streamComboBoxTwo.setEnabled(bln);
+			realplayBtnTwo.setEnabled(bln);
+			if (bln) {
+				chnComboBoxTwo.setModel(new DefaultComboBoxModel(chnlist));
+				if (chnlist.size() > THERMAL_CHANNEL) {
+					chnComboBoxTwo.setSelectedIndex(THERMAL_CHANNEL);
+				}
+			}else {
+				realPlayWindowTwo.repaint();    
+				realplayBtnTwo.setText(Res.string().getStartRealPlay());
+				chnComboBoxTwo.setModel(new DefaultComboBoxModel());
+			}
+		}
+		
+		private void realPlay() {
+			if(!isrealplayTwo) {
+				m_hPlayHandleTwo = RealPlayModule.startRealPlay(chnComboBoxTwo.getSelectedIndex(), 
+					    streamComboBoxTwo.getSelectedIndex()==0? 0:3,
+						realPlayWindowTwo);
+				if(m_hPlayHandleTwo.longValue() != 0) {
+					changePlayStatus(true);
+				} else {
+					JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+				}
+			} else {
+				RealPlayModule.stopRealPlay(m_hPlayHandleTwo);
+				changePlayStatus(false);
+			}	
+		}
+		
+		private void changePlayStatus(boolean b) {
+			realPlayWindowTwo.repaint();
+			isrealplayTwo = b;
+			chnComboBoxTwo.setEnabled(!b);
+			streamComboBoxTwo.setEnabled(!b);
+			if (b) {
+				realplayBtnTwo.setText(Res.string().getStopRealPlay());
+			} else {
+				m_hPlayHandleTwo.setValue(0);
+				realplayBtnTwo.setText(Res.string().getStartRealPlay());
+			}
+		}
+		
+	    private JPanel realplayPanelTwo;
+	    private Panel realPlayWindowTwo;
+	    private Panel channelPanelTwo;
+	    
+	    private JLabel chnlabelTwo;
+	    private JComboBox chnComboBoxTwo;	
+	    private JLabel streamLabelTwo;
+	    private JComboBox streamComboBoxTwo;
+	    private JButton realplayBtnTwo;
+	}
+	
+	private LoginPanel loginPanel;	
+	private ThermalOperatePanel operatePanel;
+	private RealPanelOne realPanelOne;
+	private RealPanelTwo realPanelTwo;
+}
+
+
+public class ThermalCamera {
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+//				Res.string().switchLanguage(LanguageType.English);
+				ThermalCameraFrame demo = new ThermalCameraFrame();	
+				demo.setVisible(true);
+			}
+		});		
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficAllowList.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficAllowList.java
new file mode 100644
index 0000000..5f2a790
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficAllowList.java
@@ -0,0 +1,1344 @@
+package com.netsdk.demo.frame;
+
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.Res;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import com.sun.jna.ptr.LongByReference;
+
+import javax.swing.*;
+import javax.swing.border.Border;
+import javax.swing.table.DefaultTableModel;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_NAME_LEN;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_PLATE_NUMBER_LEN;
+import static java.util.Locale.ENGLISH;
+
+class JNATrafficListFrame extends Frame{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	static NetSDKLib NetSdk        = NetSDKLib.NETSDK_INSTANCE;
+	static NetSDKLib ConfigSdk     = NetSDKLib.CONFIG_INSTANCE;
+	
+	//登陆参数
+	private String m_strIp         = "172.13.138.22";
+	private Integer m_nPort        = new Integer("37777");
+	private String m_strUser       = "admin";
+	private String m_strPassword   = "hzci202239";
+	private int nNo = 0;
+	private String[] name = {Res.string().getSerialNumber(), Res.string().getLicensePlateNumber(), Res.string().getCarOwner(),
+			Res.string().getStartTime(), Res.string().getEndTime(),Res.string().getOpenModel()};
+
+	//设备信息
+	private NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); // 对应CLIENT_LoginEx2
+	private LLong m_hLoginHandle = new LLong(0);   //登陆句柄
+	private NetSDKLib.NET_TRAFFIC_LIST_RECORD pstRecordAdd = new NetSDKLib.NET_TRAFFIC_LIST_RECORD(); // 开闸权限
+	
+	//////////////////SDK相关信息///////////////////////////
+	//NetSDK 库初始化
+	public class SDKEnvironment {
+		
+		private boolean bInit    = false;
+		private boolean bLogopen = false;   
+		
+		private DisConnect disConnect       = new DisConnect();    //设备断线通知回调
+		private HaveReConnect haveReConnect = new HaveReConnect(); //网络连接恢复
+			
+		//设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+		public class DisConnect implements NetSDKLib.fDisConnect {
+			public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+				System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			}
+		}		
+		//网络连接恢复,设备重连成功回调
+		// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+		public class HaveReConnect implements NetSDKLib.fHaveReConnect {
+			public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+				System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+			}
+		}
+		
+		//初始化
+		public boolean init() {	
+			bInit = NetSdk.CLIENT_Init(disConnect, null);
+			if(!bInit) {
+				System.out.println("Initialize SDK failed");
+				return false;
+			}
+			
+			//打开日志,可选
+			NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
+			File path = new File(".");		
+			String logPath = path.getAbsoluteFile().getParent() + "\\sdk_log\\TrafficList" + System.currentTimeMillis() + ".log";			
+			
+			setLog.bSetFilePath = 1; 
+			System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
+			
+			setLog.bSetPrintStrategy = 1;
+			setLog.nPrintStrategy    = 0;
+			bLogopen = NetSdk.CLIENT_LogOpen(setLog);
+			if(!bLogopen ) {
+				System.err.println("Failed to open NetSDK log");
+			}
+			
+			// 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作
+			// 此操作为可选操作,但建议用户进行设置
+			NetSdk.CLIENT_SetAutoReconnect(haveReConnect, null);
+		    
+			//设置登录超时时间和尝试次数,可选
+			int waitTime = 5000; //登录请求响应超时时间设置为5S
+			int tryTimes = 3;    //登录时尝试建立链接3次
+			NetSdk.CLIENT_SetConnectTime(waitTime, tryTimes);
+			
+			// 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime 
+			// 接口设置的登录设备超时时间和尝试次数意义相同,可选
+			NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
+			netParam.nConnectTime = 10000; //登录时尝试建立链接的超时时间
+			NetSdk.CLIENT_SetNetworkParam(netParam);	
+			return true;
+		}
+		
+		//清除环境
+		public void cleanup() {
+			if(bLogopen) {
+				NetSdk.CLIENT_LogClose();
+			}
+			
+			if(bInit) {
+				NetSdk.CLIENT_Cleanup();
+			}
+		}
+	}
+		
+	private SDKEnvironment sdkEnv;
+
+	public JNATrafficListFrame() {	
+		sdkEnv = new SDKEnvironment();
+		sdkEnv.init();
+	    setTitle(Res.string().getTrafficAllowList());
+	    setSize(900, 650);
+	    setLayout(new BorderLayout());
+	    setLocationRelativeTo(null);
+	    setVisible(true);
+        	    
+	    loginPanel = new LoginPanel();
+	    TrafficPanel trafficPanel = new TrafficPanel();
+	    QueryViewPanel queryViewPanel = new QueryViewPanel();
+	     
+	    add(loginPanel, BorderLayout.NORTH);
+	    add(trafficPanel, BorderLayout.WEST);
+	    add(queryViewPanel, BorderLayout.CENTER);
+	    
+	    addWindowListener(new WindowAdapter() {
+	    	public void windowClosing(WindowEvent e) {
+	    		System.out.println("Window Closing");
+	    		//登出
+	    		logoutButtonPerformed(null);    		
+	    		dispose();
+
+				// 返回主菜单
+				SwingUtilities.invokeLater(new Runnable() {
+					public void run() {
+						FunctionList demo = new FunctionList();
+						demo.setVisible(true);
+					}
+				});
+	    	}
+	    });
+
+	}
+	
+	/////////////////面板///////////////////
+	//////////////////////////////////////
+	//设置边框
+	private void setBorderEx(JComponent object, String title, int width) {
+	    Border innerBorder = BorderFactory.createTitledBorder(title);
+	    Border outerBorder = BorderFactory.createEmptyBorder(width, width, width, width);
+	    object.setBorder(BorderFactory.createCompoundBorder(outerBorder, innerBorder));	 
+	}
+	
+	//登录面板
+	public class LoginPanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public LoginPanel() {
+			loginBtn = new JButton(Res.string().getLogin());
+			logoutBtn = new JButton(Res.string().getLogout());
+			nameLabel = new JLabel(Res.string().getUserName());
+			passwordLabel = new JLabel(Res.string().getPassword());
+			nameTextArea = new JTextField(m_strUser, 8);
+			passwordTextArea = new JPasswordField(m_strPassword, 8);
+			ipLabel = new JLabel(Res.string().getIp());
+			portLabel = new JLabel(Res.string().getPort());
+			ipTextArea = new JTextField(m_strIp, 16);
+			portTextArea = new JTextField(m_nPort.toString(), 8);
+
+			setLayout(new FlowLayout());
+		    setBorderEx(this, Res.string().getLogin(), 2);
+		    
+		    add(ipLabel);
+		    add(ipTextArea);
+		    add(portLabel);
+		    add(portTextArea);
+		    add(nameLabel);
+		    add(nameTextArea);
+		    add(passwordLabel);
+		    add(passwordTextArea);
+		    add(loginBtn);
+		    add(logoutBtn);
+		    
+		    logoutBtn.setEnabled(false);
+		    
+		    //登录按钮,监听事件
+		    loginBtn.addActionListener(new ActionListener() {
+		    	public void actionPerformed(ActionEvent e) {
+		    		new SDKEnvironment().init();
+		    		loginButtonPerformed(e);
+		    	}
+		    });
+			
+		    //登出按钮,监听事件
+		    logoutBtn.addActionListener(new ActionListener(){
+		    	public void actionPerformed(ActionEvent e) {
+		    		logoutButtonPerformed(e);
+		    	}
+		    });
+		}
+	}
+		
+	//允许名单操作面板
+	public class TrafficPanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public TrafficPanel() {
+			setBorderEx(this,Res.string().getAllowlistOperation(), 4);
+			Dimension dim = this.getPreferredSize();
+			dim.width = 300;
+			this.setPreferredSize(dim);	
+			
+			SinglePanel singlePanel = new SinglePanel();
+			BatchPanel batchPanel = new BatchPanel();
+			setLayout(new BorderLayout());
+            add(singlePanel, BorderLayout.NORTH);
+            add(batchPanel, BorderLayout.SOUTH);
+		}
+	}
+	
+	// 单个上传面板
+	public class SinglePanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public SinglePanel(){
+			setBorderEx(this, Res.string().getSingleUpload(), 4);
+			Dimension dim = this.getPreferredSize();
+			dim.height = 200;
+			this.setPreferredSize(dim);
+			setLayout(new GridLayout(4, 2, 30, 20));
+
+			numLabel = new JLabel( Res.string().getLicensePlateRun());
+			numTextArea = new JTextField("");
+		//	queryBtn = new JButton("查询");
+			queryExBtn = new JButton(Res.string().getFuzzyQuery());
+			addBtn = new JButton(Res.string().getAdd());
+			deleteBtn = new JButton(Res.string().getDelete());
+			modifyBtn = new JButton(Res.string().getModify());
+			alldeleteBtn = new JButton(Res.string().getDeleteAll());
+			
+		//	queryBtn.setEnabled(false);
+			queryExBtn.setEnabled(false);
+			addBtn.setEnabled(false);
+			deleteBtn.setEnabled(false);
+			modifyBtn.setEnabled(false);
+			alldeleteBtn.setEnabled(false);
+			
+			add(numLabel);
+			add(numTextArea);
+		//	add(queryBtn);
+			add(queryExBtn);
+			add(addBtn);
+			add(deleteBtn);
+			add(modifyBtn);
+			add(alldeleteBtn);
+			
+		/*	queryBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {			
+					DefaultTableModel model = (DefaultTableModel)table.getModel();
+					model.setRowCount(0);  // 在模糊查询前,清空表格
+					data = new Object[200][6];  // 再重设表格,
+					query();
+				}
+			});*/
+			queryExBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					DefaultTableModel model = (DefaultTableModel)table.getModel();
+					model.setRowCount(0);  // 在模糊查询前,清空表格
+					data = new Object[200][6];  // 再重设表格,
+					queryEx();
+				}
+			});
+			addBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					new AddFrame();
+				}					
+			});
+			deleteBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					int rowCount = table.getSelectedRowCount();
+					if(rowCount > 0) {
+						deleteOperate();
+						int row = table.getSelectedRow();
+						DefaultTableModel model = (DefaultTableModel)table.getModel();
+						model.removeRow(row);   // 删除选中的行
+						data = new Object[200][6];  // 再重设表格,
+					}	else {
+
+						JOptionPane.showMessageDialog(null, Res.string().getSelectData());
+					}
+				}
+			});
+			modifyBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					int rowCount = table.getSelectedRowCount();
+					if(rowCount > 0) {
+						new ModifyFrame();
+						int row = table.getSelectedRow(); //获得所选的单行
+						nullTextArea31.setText(String.valueOf(model.getValueAt(row, 1)));
+						nullTextArea41.setText(String.valueOf(model.getValueAt(row, 2)));
+						startTextArea1.setText(String.valueOf(model.getValueAt(row, 3)));
+						endTextArea1.setText(String.valueOf(model.getValueAt(row, 4)));
+						if((model.getValueAt(row, 5)).equals(Res.string().getAuthorization())) {
+							jr1.setSelected(true);
+						} else {
+							jr1.setSelected(false);
+						}
+					} else {
+						JOptionPane.showMessageDialog(null, Res.string().getSelectData());
+					}
+				}
+			});
+			alldeleteBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {		
+					alldeleteOperate();
+				}
+			});
+		}
+	}
+	
+	// 批量上传面板
+	public class BatchPanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public BatchPanel() {
+			setBorderEx(this, Res.string().getBatchUpload(), 4);
+			Dimension dim = this.getPreferredSize();
+			dim.height = 150;
+			this.setPreferredSize(dim);
+			setLayout(new GridLayout(3, 2, 30, 20));
+			
+			browseTextArea = new JTextField();
+			browseBtn = new JButton(Res.string().getBrowse());
+			nullLabel1 = new JLabel("");
+			upLoadBtn = new JButton(Res.string().getUpload());
+			nullLabel2 = new JLabel("");
+
+			browseTextArea.setEditable(false);
+			browseBtn.setEnabled(false);
+			upLoadBtn.setEnabled(false);
+
+			add(browseTextArea);
+			add(browseBtn);
+			add(nullLabel1);
+			add(upLoadBtn);
+			add(nullLabel2);
+
+			final File[] file = new File[1];
+			browseBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					jfc = new JFileChooser();
+					jfc.setMultiSelectionEnabled(true); //可以拖选多个文件
+					jfc.setAcceptAllFileFilterUsed(false); //关掉显示所有
+					//添加过滤器
+					jfc.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
+						public boolean accept(File f) {
+							if(f.getName().endsWith(".CSV")||f.isDirectory()) {
+								file[0] =f;
+								return true;
+							}
+							return false;
+						}
+						public String getDescription() {
+							return ".CSV";
+						}
+					});
+			        if(jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
+			        	System.out.println(jfc.getSelectedFile().getAbsolutePath());
+			        	browseTextArea.setText(jfc.getSelectedFile().getAbsolutePath());
+			        } 
+				}
+			});
+
+			upLoadBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+
+					if(browseTextArea.getText().isEmpty()){
+						
+					}else {
+
+
+						String uploading = Res.string().getUploading();
+						upLoadBtn.setLabel(uploading);
+						JOptionPane jOptionPane=new JOptionPane();
+								if(uploading.equals("uploading")){
+									jOptionPane.setDefaultLocale(ENGLISH);
+								}
+
+					if(	jOptionPane.showConfirmDialog(null, Res.string().getSureUpload())==JOptionPane.OK_OPTION){
+						upLoad();
+					}
+
+						upLoadBtn.setLabel(Res.string().getUpload());
+					}
+				}
+			});
+		}
+	}
+	
+	// 查询显示 面板
+	public class QueryViewPanel extends JPanel {
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+
+		public QueryViewPanel() {
+			setBorderEx(this, Res.string().getQueryInformation() , 4);
+			setLayout(new BorderLayout());
+			
+			// 在JTable列表里添加一个模版,信息存在模版里
+			data = new Object[200][6];
+			model = new DefaultTableModel(data, name);
+			table = new JTable(model);
+			
+			// 设置某列的宽度
+			table.getColumnModel().getColumn(0).setPreferredWidth(40);
+			table.getColumnModel().getColumn(3).setPreferredWidth(120);
+			table.getColumnModel().getColumn(4).setPreferredWidth(120);
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行		
+
+			// 建立滑动面板,并插入列表
+			JScrollPane scrollPane = new JScrollPane(table);
+			add(scrollPane, BorderLayout.CENTER);
+		}
+	}
+
+	//添加按钮窗口	
+	public class AddFrame extends Frame{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public AddFrame(){
+			setTitle(Res.string().getDialog());
+			setSize(450, 450);
+			setLocationRelativeTo(null);
+			setVisible(true);
+			setLayout(new BorderLayout());
+            DialogPanel dialogPanel = new DialogPanel();
+            add(dialogPanel, BorderLayout.CENTER);
+			addWindowListener(new WindowAdapter() {
+				public void windowClosing(WindowEvent e){
+					dispose();
+				}
+			});
+		}
+		public class DialogPanel extends JPanel{
+			/**
+			 * 
+			 */
+			private static final long serialVersionUID = 1L;
+
+			public DialogPanel() {
+				setBorderEx(this, Res.string().getAdd(), 4);
+				Dimension dim = this.getPreferredSize();
+				dim.height = 400;
+				dim.width = 400;
+				this.setPreferredSize(dim);
+				setLayout(new GridLayout(3, 1));
+				JPanel jp11 = new JPanel();
+				JPanel jp1 = new JPanel();
+				JPanel jp2 = new JPanel();
+				JPanel jp3 = new JPanel();
+				
+				numberLabel = new JLabel(Res.string().getLicensePlateNumber());
+				String[] str;
+				if(Res.string().getLicensePlateNumber().equals("license plate number")){
+					str= new String[]{"jing", "jin", "ji"};
+				}else {
+					//下拉菜单设置选项
+					str = new String[]{"京", "津", "冀", "晋", "内蒙古", "辽", "吉", "黑", "沪", "鲁", "苏", "浙", "皖", "闽", "赣", "豫", "鄂", "湘",
+							"粤", "桂", "琼", "渝", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "港", "澳", "台"};
+				}
+
+	            /*ComboBoxModel jComboBoxModel = new DefaultComboBoxModel(str);
+				jComboBox.setModel(jComboBoxModel);*/
+				jComboBox = new JComboBox(str);	
+				jComboBox.setPreferredSize(new Dimension(100, 25));  // 设置宽度
+				
+				nullTextArea3 = new JTextField(8);
+				userLabel = new JLabel(Res.string().getCarOwner());
+				nullTextArea4 = new JTextField(8);
+				startTime = new JLabel(Res.string().getStartTime());
+				startTextArea = new JTextField("2021/11/1 6:07:07");
+				stopTime = new JLabel(Res.string().getEndTime());
+				endTextArea = new JTextField("2021/11/1 8:08:07");
+				
+				jr = new JRadioButton(Res.string().getAuthorization());
+				jr.setSelected(true);
+				okBtn = new JButton(Res.string().getConfirm());
+				cancleBtn = new JButton(Res.string().getCancel());
+				
+				jp11.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp11.add(jComboBox);
+				jp11.add(nullTextArea3);
+				
+				jp1.setLayout(new GridLayout(4, 2, 1, 8));
+				jp1.add(numberLabel);
+				jp1.add(jp11);
+				jp1.add(userLabel);
+				jp1.add(nullTextArea4);
+				jp1.add(startTime);
+				jp1.add(startTextArea);
+				
+				jp1.add(stopTime);
+				jp1.add(endTextArea);
+				
+				jp2.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp2.add(jr);
+				
+				jp3.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp3.add(okBtn);
+				jp3.add(cancleBtn);
+								
+				add(jp1);
+				add(jp2);
+				add(jp3);
+				
+				okBtn.addActionListener(new ActionListener() {
+					public void actionPerformed(ActionEvent e) {
+						if(jr.isSelected()) {
+							pstRecordAdd.stAuthrityTypes[0].emAuthorityType = NetSDKLib.EM_NET_AUTHORITY_TYPE.NET_AUTHORITY_OPEN_GATE;
+							pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable = 1;	
+						} else {
+							pstRecordAdd.stAuthrityTypes[0].emAuthorityType = NetSDKLib.EM_NET_AUTHORITY_TYPE.NET_AUTHORITY_OPEN_GATE;
+							pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable = 0;	
+						}
+						addOperate();
+						dispose();
+					}
+				});
+				
+				cancleBtn.addActionListener(new ActionListener() {
+					public void actionPerformed(ActionEvent e) {
+						dispose();
+					}
+				});						
+			}		 
+		}	 	
+	}
+	// 修改按钮窗口	
+	public class ModifyFrame extends Frame{
+		/**
+		 * 
+		 */
+		private static final long serialVersionUID = 1L;
+		public ModifyFrame(){
+			setTitle(Res.string().getModifyPanel());
+			setSize(450, 350);
+			setLocationRelativeTo(null);
+			setVisible(true);
+			setLayout(new BorderLayout());
+            ModifyPanel modifyPanel = new ModifyPanel();
+            add(modifyPanel, BorderLayout.CENTER);
+			addWindowListener(new WindowAdapter() {
+				public void windowClosing(WindowEvent e){
+					dispose();
+				}
+			});
+		}
+		public class ModifyPanel extends JPanel{
+			/**
+			 * 
+			 */
+			private static final long serialVersionUID = 1L;
+
+			public ModifyPanel() {
+				setBorderEx(this, Res.string().getModify(), 3);
+				Dimension dim = this.getPreferredSize();
+				dim.height = 450;
+				dim.width = 350;
+
+				this.setPreferredSize(dim);
+				setLayout(new GridLayout(3, 1,2,2));
+				JPanel jp111 = new JPanel();
+				JPanel jp11 = new JPanel();
+				JPanel jp21 = new JPanel();
+				JPanel jp31 = new JPanel();
+				
+				numberLabel1 = new JLabel(Res.string().getLicensePlateNumber());
+				nullTextArea31 = new JTextField(33);
+				nullTextArea31.setEditable(true);
+				userLabel1 = new JLabel(Res.string().getCarOwner());
+				nullTextArea41 = new JTextField(8);
+				startTime1 = new JLabel(Res.string().getStartTime());
+				startTextArea1 = new JTextField("2021/11/1 6:07:07");
+				stopTime1 = new JLabel(Res.string().getEndTime());
+				endTextArea1 = new JTextField("2021/11/1 8:08:07");
+				
+				jr1 = new JRadioButton(Res.string().getAuthorization());
+				okBtn1 = new JButton(Res.string().getConfirm());
+				cancleBtn1 = new JButton(Res.string().getCancel());
+				
+				jp111.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp111.add(nullTextArea31);
+				
+				jp11.setLayout(new GridLayout(4, 2, 1, 1));
+
+				jp11.add(numberLabel1);
+				jp11.add(jp111);
+				jp11.add(userLabel1);
+				jp11.add(nullTextArea41);
+				jp11.add(startTime1);
+				jp11.add(startTextArea1);
+				
+				jp11.add(stopTime1);
+				jp11.add(endTextArea1);
+				
+				jp21.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp21.add(jr1);
+
+
+				jp31.setLayout(new FlowLayout(FlowLayout.CENTER));
+				jp31.add(okBtn1);
+				jp31.add(cancleBtn1);
+								
+				add(jp11);
+				add(jp21);
+				add(jp31);
+				
+				okBtn1.addActionListener(new ActionListener() {
+
+
+					public void actionPerformed(ActionEvent e) {
+
+
+
+						if(jr1.isSelected()) {
+							pstRecordAdd.stAuthrityTypes[0].emAuthorityType = NetSDKLib.EM_NET_AUTHORITY_TYPE.NET_AUTHORITY_OPEN_GATE;
+							pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable = 1;	
+						} else {
+							pstRecordAdd.stAuthrityTypes[0].emAuthorityType = NetSDKLib.EM_NET_AUTHORITY_TYPE.NET_AUTHORITY_OPEN_GATE;
+							pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable = 0;	
+						}
+						modifyOperate();
+						dispose();
+					}
+				});
+				
+				cancleBtn1.addActionListener(new ActionListener() {
+					public void actionPerformed(ActionEvent e) {
+						dispose();
+					}
+				});						
+			}		 
+		}	 	
+	}
+	
+	////////////////////事件执行//////////////////////
+	///////////////////////////////////////////////
+	//登录按钮事件
+	private void loginButtonPerformed(ActionEvent e) {
+		m_strIp = ipTextArea.getText();
+		m_nPort = Integer.parseInt(portTextArea.getText());	
+		m_strUser = nameTextArea.getText();
+		m_strPassword = new String(passwordTextArea.getPassword());
+		
+		System.out.println("设备地址:" + m_strIp + "\n端口号:" + m_nPort 
+				+ "\n用户名:" + m_strUser + "\n密码:" + m_strPassword);
+		
+		int nSpecCap = NetSDKLib.EM_LOGIN_SPAC_CAP_TYPE.EM_LOGIN_SPEC_CAP_TCP; //=0
+		IntByReference nError = new IntByReference(0);
+		m_hLoginHandle = NetSdk.CLIENT_LoginEx2(m_strIp, m_nPort.intValue(), m_strUser, m_strPassword, nSpecCap, null, m_stDeviceInfo, nError);
+		if(m_hLoginHandle.longValue() == 0) {
+			int error = 0;
+			error = NetSdk.CLIENT_GetLastError();
+			System.err.printf("Login Device[%s] Port[%d]Failed. Last Error[0x%x]\n", m_strIp, m_nPort, error);
+			JOptionPane.showMessageDialog(this, Res.string().getLoginFailed()+":" + String.format("[0x%x]", error));
+		} else {
+			System.out.println("Login Success [ " + m_strIp + " ]");
+			JOptionPane.showMessageDialog(this, Res.string().getLoginSuccess());
+			logoutBtn.setEnabled(true);
+			loginBtn.setEnabled(false);	
+		//	queryBtn.setEnabled(true);
+			queryExBtn.setEnabled(true);
+			addBtn.setEnabled(true);
+			deleteBtn.setEnabled(true);
+			modifyBtn.setEnabled(true);
+			browseBtn.setEnabled(true);
+			upLoadBtn.setEnabled(true);
+			alldeleteBtn.setEnabled(true);
+		}	
+	}
+	
+	//登出按钮事件
+	private void logoutButtonPerformed(ActionEvent e) {
+		if(m_hLoginHandle.longValue() != 0) {
+			System.out.println("Logout Button Action");
+		
+			if(NetSdk.CLIENT_Logout(m_hLoginHandle)) {
+				System.out.println("Logout Success [ " + m_strIp + " ]");
+				m_hLoginHandle.setValue(0);
+				logoutBtn.setEnabled(false);
+				loginBtn.setEnabled(true);	
+		//		queryBtn.setEnabled(false);
+				queryExBtn.setEnabled(false);
+				addBtn.setEnabled(false);
+				deleteBtn.setEnabled(false);
+				modifyBtn.setEnabled(false);
+				browseBtn.setEnabled(false);
+				upLoadBtn.setEnabled(false);
+				
+			}
+		}
+	}
+    
+	// 查询按钮事件
+	private void query() {
+		// 开始查询记录
+		NetSDKLib.NET_IN_FIND_RECORD_PARAM stuFindInParam = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+		stuFindInParam.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		
+		NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION stuRedListCondition = new NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION();
+		stuFindInParam.pQueryCondition = stuRedListCondition.getPointer();
+		byte[] numText;
+		try {
+
+			numText	= numTextArea.getText().trim().getBytes("GBK");
+			System.arraycopy(numText, 0, stuRedListCondition.szPlateNumber, 0, numText.length);
+		} catch (UnsupportedEncodingException e) {
+			System.err.println("字符串转码异常");
+		}
+
+		
+		NetSDKLib.NET_OUT_FIND_RECORD_PARAM stuFindOutParam = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+
+		if((numTextArea.getText()).equals("")) {
+			JOptionPane.showMessageDialog(this, Res.string().getEnterQueryData());
+		}else {
+			stuRedListCondition.write();
+			boolean bRet = NetSdk.CLIENT_FindRecord(m_hLoginHandle, stuFindInParam, stuFindOutParam, 5000);
+			stuRedListCondition.read();
+			System.out.println("FindRecord Succeed" + "\n" + "FindHandle :" + stuFindOutParam.lFindeHandle);
+			if(bRet) {
+				int nRecordCount = 10;
+				NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM stuFindNextInParam = new NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM();
+				stuFindNextInParam.lFindeHandle = stuFindOutParam.lFindeHandle;
+				stuFindNextInParam.nFileCount = nRecordCount;  //想查询的记录条数
+				
+				NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM stuFindNextOutParam = new NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM();
+				stuFindNextOutParam.nMaxRecordNum = nRecordCount;
+				NetSDKLib.NET_TRAFFIC_LIST_RECORD pstRecord = new NetSDKLib.NET_TRAFFIC_LIST_RECORD();
+				stuFindNextOutParam.pRecordList = pstRecord.getPointer();
+
+				pstRecord.write();
+				boolean zRet = NetSdk.CLIENT_FindNextRecord(stuFindNextInParam, stuFindNextOutParam, 5000);
+				pstRecord.read();
+				
+				if(zRet) {		
+					System.out.println("record are found!");
+					
+					for(int i=0; i < stuFindNextOutParam.nRetRecordNum; i++) {
+						data[i][0] = String.valueOf(i);
+						try {
+							data[i][1] = new String(pstRecord.szPlateNumber,"GBK").trim();
+							data[i][2] = new String(pstRecord.szMasterOfCar,"GBK").trim();
+							data[i][3] = pstRecord.stBeginTime.toStringTime();
+							data[i][4] = pstRecord.stCancelTime.toStringTime();
+						} catch (UnsupportedEncodingException e) {
+							System.err.println("字符串转码异常");
+						}
+
+						if(pstRecord.stAuthrityTypes[0].bAuthorityEnable == 1) {
+							data[i][5] = "授权";
+						} else {
+							data[i][5] = "不授权";
+						}
+						model.setDataVector(data, name);
+					}				
+				} 
+				
+				NetSdk.CLIENT_FindRecordClose(stuFindOutParam.lFindeHandle);      
+			}else {
+				System.err.println("Can Not Find This Record" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));					
+			}
+		}    		
+	}
+	public static void ByteArrZero(byte[] dst) {
+		// 清零
+		for (int i = 0; i < dst.length; ++i) {
+			dst[i] = 0;
+		}
+	}
+	// 模糊查询按钮事件
+		private   void queryEx() {
+
+		NetSDKLib.NET_IN_FIND_RECORD_PARAM stuFindInParam = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+		stuFindInParam.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		
+		NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION stuRedListConditionEx = new NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION();
+		stuFindInParam.pQueryCondition = stuRedListConditionEx.getPointer();
+		JNATrafficListFrame.ByteArrZero(stuRedListConditionEx.szPlateNumberVague);
+
+		try {
+			byte[] numText = numTextArea.getText().trim().getBytes("GBK");
+
+			System.arraycopy(numText, 0, stuRedListConditionEx.szPlateNumberVague, 0, numText.length);
+		} catch (UnsupportedEncodingException e) {
+			System.err.println("字符串转码异常");
+		}
+
+		
+		NetSDKLib.NET_OUT_FIND_RECORD_PARAM stuFindOutParam = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+		
+		stuRedListConditionEx.write(); 
+		boolean bRet = NetSdk.CLIENT_FindRecord(m_hLoginHandle, stuFindInParam, stuFindOutParam, 10000);
+		stuRedListConditionEx.read();
+			int total=0;
+		if(bRet) {
+			int doNextCount = 0;
+			while(true) {
+				int nRecordCount = 10;
+				NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM stuFindNextInParam = new NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM();
+				stuFindNextInParam.lFindeHandle = stuFindOutParam.lFindeHandle;
+				stuFindNextInParam.nFileCount = nRecordCount;
+				
+				NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM stuFindNextOutParam = new NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM();
+				stuFindNextOutParam.nMaxRecordNum = nRecordCount;
+				NetSDKLib.NET_TRAFFIC_LIST_RECORD pstRecordEx = new NetSDKLib.NET_TRAFFIC_LIST_RECORD();
+				stuFindNextOutParam.pRecordList = new Memory(pstRecordEx.dwSize * nRecordCount);   //分配(stRecordEx.dwSize * nRecordCount)个内存
+
+
+				// 把内存里的dwSize赋值
+				for (int i=0; i<stuFindNextOutParam.nMaxRecordNum; ++i)
+				{
+					ToolKits.SetStructDataToPointer(pstRecordEx, stuFindNextOutParam.pRecordList, i*pstRecordEx.dwSize);
+				}
+				
+				pstRecordEx.write();
+				boolean zRet = NetSdk.CLIENT_FindNextRecord(stuFindNextInParam, stuFindNextOutParam, 10000);
+				pstRecordEx.read();
+
+				int jnumber=stuFindNextOutParam.nRetRecordNum;
+
+				if(zRet) {
+
+					for(int i=0; i < jnumber; i++) {
+						int item = i + doNextCount * nRecordCount;
+						total=item+1;
+						if(item>data.length-1){
+
+							continue;
+						}
+						data[item][0] = String.valueOf(item);
+						ToolKits.GetPointerDataToStruct(stuFindNextOutParam.pRecordList, i*pstRecordEx.dwSize, pstRecordEx);
+						try {
+							data[item][1] = new String(pstRecordEx.szPlateNumber,"GBK").trim();
+							data[item][2] = new String(pstRecordEx.szMasterOfCar,"GBK").trim();
+							data[item][3] = pstRecordEx.stBeginTime.toStringTime();
+							data[item][4] = pstRecordEx.stCancelTime.toStringTime();
+						} catch (UnsupportedEncodingException e) {
+							System.err.println("字符串转码异常");
+						}
+
+						if(pstRecordEx.stAuthrityTypes[0].bAuthorityEnable == 1) {
+							data[item][5] = Res.string().getAuthorization();
+						} else {
+							data[item][5] =Res.string().getUnauthorization();
+						}
+
+						model.setDataVector(data, name);
+
+					}
+					
+					if (stuFindNextOutParam.nRetRecordNum < nRecordCount)
+					{
+						break;
+					} else {
+						doNextCount ++;
+					}
+				} else {
+					break;
+				}
+			}
+			NetSdk.CLIENT_FindRecordClose(stuFindOutParam.lFindeHandle);
+
+			JOptionPane.showMessageDialog(this, total+" "+Res.string().getDataNumber());
+
+		}else {
+			System.err.println("Can Not Find This Record" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+		}
+	}
+    
+	// 添加按钮事件
+	private void addOperate() {
+		NetSDKLib.NET_INSERT_RECORD_INFO stInsertInfo = new NetSDKLib.NET_INSERT_RECORD_INFO();  // 添加
+		
+		NetSDKLib.NET_TRAFFIC_LIST_RECORD.ByReference stRec = new NetSDKLib.NET_TRAFFIC_LIST_RECORD.ByReference();
+
+
+		try {
+
+			String plate = nullTextArea3.getText();
+
+			boolean matches = plate.matches("^[\\da-zA-Z]*$");
+
+			if(!matches){
+				JOptionPane.showMessageDialog(this, Res.string().getFillingRules());
+				return;
+			}
+
+			byte[] PlateNumber
+					= (jComboBox.getSelectedItem().toString() + plate).getBytes("GBK");
+
+			if(PlateNumber.length>NET_MAX_PLATE_NUMBER_LEN){
+				JOptionPane.showMessageDialog(this, Res.string().getLicensePlateLengthTooLong());
+
+				return;
+			}
+
+			byte[] MasterOfCar = nullTextArea4.getText().getBytes("GBK");
+
+			if(MasterOfCar.length>NET_MAX_NAME_LEN){
+				JOptionPane.showMessageDialog(this, Res.string().getNameTooLong());
+				return;
+			}
+
+			stRec.szPlateNumber =PlateNumber;
+			stRec.szMasterOfCar = MasterOfCar;
+		} catch (UnsupportedEncodingException e) {
+			System.err.println("字符串转码异常");
+		}
+
+		String[] start = startTextArea.getText().split(" ");
+		String st1 = start[0];
+		String st2 = start[1];
+		String[] start1 = st1.split("/"); //年月日
+		String[] start2 = st2.split(":"); // 时分
+		String[] end = endTextArea.getText().split(" ");
+		String ed1 = end[0];
+		String ed2 = end[1];
+		String[] end1 = ed1.split("/"); //年月日
+		String[] end2 = ed2.split(":"); // 时分
+		stRec.stBeginTime.dwYear = Integer.parseInt(start1[0]);
+		stRec.stBeginTime.dwMonth = Integer.parseInt(start1[1]);
+		stRec.stBeginTime.dwDay = Integer.parseInt(start1[2]);
+		stRec.stBeginTime.dwHour = Integer.parseInt(start2[0]);
+		stRec.stBeginTime.dwMinute = Integer.parseInt(start2[1]);
+		stRec.stBeginTime.dwSecond = Integer.parseInt(start2[2]);
+		stRec.stCancelTime.dwYear = Integer.parseInt(end1[0]);
+		stRec.stCancelTime.dwMonth = Integer.parseInt(end1[1]);
+		stRec.stCancelTime.dwDay = Integer.parseInt(end1[2]);
+		stRec.stCancelTime.dwHour = Integer.parseInt(end2[0]);
+		stRec.stCancelTime.dwMinute = Integer.parseInt(end2[1]);
+		stRec.stCancelTime.dwSecond = Integer.parseInt(end2[2]);
+		stRec.nAuthrityNum = 1;
+		stRec.stAuthrityTypes[0].emAuthorityType = pstRecordAdd.stAuthrityTypes[0].emAuthorityType;
+		stRec.stAuthrityTypes[0].bAuthorityEnable = pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable;
+		
+		stInsertInfo.pRecordInfo = stRec;
+
+		NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD stInParam = new NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD();
+		stInParam.emOperateType = NetSDKLib.EM_RECORD_OPERATE_TYPE.NET_TRAFFIC_LIST_INSERT;
+		stInParam.emRecordType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		stInParam.pstOpreateInfo = stInsertInfo.getPointer();
+	
+		NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD stOutParam = new NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD();
+		stRec.write();
+		stInsertInfo.write();
+		stInParam.write();
+
+		boolean zRet = NetSdk.CLIENT_OperateTrafficList(m_hLoginHandle, stInParam, stOutParam, 5000);
+		if(zRet) {
+			stInParam.read();
+			System.out.println("succeed!");
+			JOptionPane.showMessageDialog(this, Res.string().getAddSuccess());
+		} else {
+			System.err.println("failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+			JOptionPane.showMessageDialog(this, Res.string().getAddFail());
+		}
+	}
+
+	// 查询之前的记录号
+	private void findRecordCount() {
+		// 开始查询记录
+		NetSDKLib.NET_IN_FIND_RECORD_PARAM stuFindInParam = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+		stuFindInParam.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION stuRedListCondition = new NetSDKLib.FIND_RECORD_TRAFFICREDLIST_CONDITION();
+		stuFindInParam.pQueryCondition = stuRedListCondition.getPointer();
+		// 获取选中行的车牌号,并赋值
+		int row = table.getSelectedRow();
+		try {
+			System.arraycopy(String.valueOf(model.getValueAt(row, 1)).getBytes("GBK"), 0, stuRedListCondition.szPlateNumber,
+					0, String.valueOf(model.getValueAt(row, 1)).getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+
+		NetSDKLib.NET_OUT_FIND_RECORD_PARAM stuFindOutParam = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+
+		stuFindInParam.write();
+		stuRedListCondition.write();
+		boolean bRet = NetSdk.CLIENT_FindRecord(m_hLoginHandle, stuFindInParam, stuFindOutParam, 5000);
+		stuRedListCondition.read();
+		stuFindInParam.read();
+
+		if(bRet){
+			int nRecordCount = 1;
+
+			NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM stuFindNextInParam = new NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM();
+			stuFindNextInParam.lFindeHandle = stuFindOutParam.lFindeHandle;
+			stuFindNextInParam.nFileCount = nRecordCount;  //想查询的记录条数
+
+			NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM stuFindNextOutParam = new NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM();
+			stuFindNextOutParam.nMaxRecordNum = nRecordCount;
+			NetSDKLib.NET_TRAFFIC_LIST_RECORD pstRecord = new NetSDKLib.NET_TRAFFIC_LIST_RECORD();
+			stuFindNextOutParam.pRecordList = pstRecord.getPointer();
+
+			stuFindNextInParam.write();
+			stuFindNextOutParam.write();
+			pstRecord.write();
+			boolean zRet = NetSdk.CLIENT_FindNextRecord(stuFindNextInParam, stuFindNextOutParam, 5000);
+			pstRecord.read();
+			stuFindNextInParam.read();
+			stuFindNextOutParam.read();
+
+			if(zRet) {
+				// 获取当前记录号
+				nNo = pstRecord.nRecordNo;
+			}
+			// 停止查询
+			NetSdk.CLIENT_FindRecordClose(stuFindOutParam.lFindeHandle);
+		} else {
+			System.err.println("error occured!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+		}
+	}
+	
+	// 删除按钮事件
+	private void deleteOperate() {
+
+		findRecordCount();
+			
+		// 获得之前查询到的记录号后,开始删除数据
+		NetSDKLib.NET_REMOVE_RECORD_INFO stRemoveInfo = new NetSDKLib.NET_REMOVE_RECORD_INFO();
+
+		stRemoveInfo.nRecordNo = nNo;
+		System.out.println("nNo:"+nNo);
+		NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD stInParam = new NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD();
+		stInParam.emOperateType = NetSDKLib.EM_RECORD_OPERATE_TYPE.NET_TRAFFIC_LIST_REMOVE;
+		stInParam.emRecordType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;;
+		stInParam.pstOpreateInfo = stRemoveInfo.getPointer();
+		NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD stOutParam = new NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD();
+		
+		stInParam.write();
+		stRemoveInfo.write();
+		boolean zRet = NetSdk.CLIENT_OperateTrafficList(m_hLoginHandle, stInParam, stOutParam, 5000);
+
+		if(zRet) {
+			System.out.println("delete  succeed!");
+			JOptionPane.showMessageDialog(this, Res.string().getDeleteSuccess());
+		} else {
+			JOptionPane.showMessageDialog(this, Res.string().getDeleteFail());
+			System.err.println("failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+		}	
+	}
+
+	// 修改按钮事件
+	private void modifyOperate() {
+
+
+		findRecordCount();
+
+		NetSDKLib.NET_TRAFFIC_LIST_RECORD.ByReference stRec = new NetSDKLib.NET_TRAFFIC_LIST_RECORD.ByReference();
+		try {
+
+			stRec.szPlateNumber =  nullTextArea31.getText().getBytes("GBK");
+			stRec.szMasterOfCar = nullTextArea41.getText().getBytes("GBK");
+
+			if(	stRec.szPlateNumber.length>NET_MAX_PLATE_NUMBER_LEN-1){
+				JOptionPane.showMessageDialog(this, Res.string().getLicensePlateLengthTooLong());
+				return;
+			}
+
+
+			if(stRec.szMasterOfCar.length>NET_MAX_NAME_LEN){
+				JOptionPane.showMessageDialog(this, Res.string().getNameTooLong());
+				return;
+			}
+		} catch (UnsupportedEncodingException e) {
+			System.err.println("字符串转码异常");
+		}
+
+
+
+		String[] start = startTextArea1.getText().split(" ");
+		String st1 = start[0];
+		String st2 = start[1];
+		String[] start1 = st1.split("/"); //年月日
+		String[] start2 = st2.split(":"); // 时分
+		String[] end = endTextArea1.getText().split(" ");
+		String ed1 = end[0];
+		String ed2 = end[1];
+		String[] end1 = ed1.split("/"); //年月日
+		String[] end2 = ed2.split(":"); // 时分
+		stRec.stBeginTime.dwYear = Integer.parseInt(start1[0]);
+		stRec.stBeginTime.dwMonth = Integer.parseInt(start1[1]);
+		stRec.stBeginTime.dwDay = Integer.parseInt(start1[2]);
+		stRec.stBeginTime.dwHour = Integer.parseInt(start2[0]);
+		stRec.stBeginTime.dwMinute = Integer.parseInt(start2[1]);
+		stRec.stBeginTime.dwSecond = Integer.parseInt(start2[2]);
+		stRec.stCancelTime.dwYear = Integer.parseInt(end1[0]);
+		stRec.stCancelTime.dwMonth = Integer.parseInt(end1[1]);
+		stRec.stCancelTime.dwDay = Integer.parseInt(end1[2]);
+		stRec.stCancelTime.dwHour = Integer.parseInt(end2[0]);
+		stRec.stCancelTime.dwMinute = Integer.parseInt(end2[1]);	
+		stRec.stCancelTime.dwSecond = Integer.parseInt(end2[2]);
+		stRec.nAuthrityNum = 1;
+		stRec.stAuthrityTypes[0].emAuthorityType = pstRecordAdd.stAuthrityTypes[0].emAuthorityType;
+		stRec.stAuthrityTypes[0].bAuthorityEnable = pstRecordAdd.stAuthrityTypes[0].bAuthorityEnable;
+				
+		stRec.nRecordNo = nNo;
+
+		NetSDKLib.NET_UPDATE_RECORD_INFO stUpdateInfo = new NetSDKLib.NET_UPDATE_RECORD_INFO();
+		stUpdateInfo.pRecordInfo = stRec;
+		
+		NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD stInParam = new NetSDKLib.NET_IN_OPERATE_TRAFFIC_LIST_RECORD();
+		stInParam.emOperateType = NetSDKLib.EM_RECORD_OPERATE_TYPE.NET_TRAFFIC_LIST_UPDATE;
+		stInParam.emRecordType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		stInParam.pstOpreateInfo = stUpdateInfo.getPointer();
+		NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD stOutParam = new NetSDKLib.NET_OUT_OPERATE_TRAFFIC_LIST_RECORD();
+
+		stRec.write();
+		stUpdateInfo.write();
+		stInParam.write();
+		boolean zRet = NetSdk.CLIENT_OperateTrafficList(m_hLoginHandle, stInParam, stOutParam, 5000);
+		if(zRet) {
+			System.out.println("succeed!");
+			System.out.println("stOutParam:"+stOutParam.nRecordNo);
+			JOptionPane.showMessageDialog(this, Res.string().getModifySuccess());
+		} else {
+			JOptionPane.showMessageDialog(this, Res.string().getModifyFail());
+
+			System.err.println("failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+		}
+	}
+	
+	// 全部删除
+	private void alldeleteOperate() {
+		int type = NetSDKLib.CtrlType.CTRLTYPE_CTRL_RECORDSET_CLEAR;
+		NetSDKLib.NET_CTRL_RECORDSET_PARAM param = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+		param.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_TRAFFICREDLIST;
+		param.write();
+		boolean zRet = NetSdk.CLIENT_ControlDevice(m_hLoginHandle, type, param.getPointer(), 5000);
+		if(zRet) {
+			System.out.println("全部删除成功");
+			JOptionPane.showMessageDialog(this, Res.string().getDeleteSuccess());
+		} else {
+			System.err.println("全部删除失败");
+			JOptionPane.showMessageDialog(this, Res.string().getDeleteFail());
+		}
+	}
+	
+	// 上传按钮事件      注:上传*.CSV的文件,文件的数据会覆盖原数据库的数据,所以可以从数据库导出文件,并在文件里添加数据后,再上传
+	private void upLoad() {
+
+
+		JOptionPane jOptionPane=new JOptionPane();
+
+		NetSDKLib.NETDEV_BLACKWHITE_LIST_INFO stIn = new NetSDKLib.NETDEV_BLACKWHITE_LIST_INFO();
+		Pointer szInBuf = stIn.getPointer();
+		int nInBufLen = stIn.size();
+		try {
+			stIn.szFile = jfc.getSelectedFile().getAbsolutePath().getBytes("GBK");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		stIn.nFileSize = 1024*1024*3;  // 升级文件大小
+		stIn.byFileType = 1; //当前文件类型,0-禁止名单,1-允许名单
+		stIn.byAction = 0; //动作,0-覆盖,1-追加
+		stIn.write();
+		LLong zRet = NetSdk.CLIENT_FileTransmit(m_hLoginHandle, NetSDKLib.NET_DEV_BLACKWHITETRANS_START, szInBuf, nInBufLen, TransFileCall.getInstance(), null, 5000);
+
+
+		stIn.read();
+		if(zRet.longValue() == 0) {
+			System.err.println("Start failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+
+			String	type=Res.string().getUploadFail();
+			jOptionPane.showMessageDialog( this, type);
+
+			return;
+		}
+
+		stIn.write();
+		LongByReference handleReference = new LongByReference(zRet.longValue());   //LLong转为Pointer*
+		LLong zRet1 = NetSdk.CLIENT_FileTransmit(m_hLoginHandle, NetSDKLib.NET_DEV_BLACKWHITETRANS_SEND, handleReference.getPointer(), nInBufLen, TransFileCall.getInstance(), null, 20000);
+		stIn.read();
+		if(zRet1.longValue() == 0) {
+	    	System.err.println("Send failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+
+			String	type=Res.string().getUploadFail();
+			jOptionPane.showMessageDialog( this, type);
+	    }else {
+
+	    	try {
+				Thread.sleep(1000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+	    	stIn.write();
+	    	LLong zRet2 = NetSdk.CLIENT_FileTransmit(m_hLoginHandle, NetSDKLib.NET_DEV_BLACKWHITETRANS_STOP,  handleReference.getPointer(), nInBufLen, TransFileCall.getInstance(), null, 5000);
+			stIn.read();
+	    	if(zRet2.longValue() == 0) {
+
+	    		System.err.println("Stop failed!" + String.format("0x%x", NetSdk.CLIENT_GetLastError()));
+				String	type=Res.string().getUploadFail();
+				jOptionPane.showMessageDialog( this, type);
+	    	} else {
+
+				String	type=Res.string().getUploadSuccess();
+				jOptionPane.showMessageDialog( this, type);
+	    	}
+
+	    }
+
+
+	}
+
+	private static class TransFileCall implements NetSDKLib.fTransFileCallBack{
+		private static TransFileCall instance;
+		public static TransFileCall getInstance() {
+			if (instance == null) {
+						instance = new TransFileCall();
+			}
+			return instance;
+		}
+
+
+		@Override
+		public void invoke(LLong lHandle, int nTransType, int nState, int nSendSize, int nTotalSize, Pointer dwUser) {
+			/*	System.out.println("nTransType:"+nTransType);
+				System.out.println("nState:"+nState);*/
+		}
+	}
+
+	/////////////////////组件//////////////////////////
+	//////////////////////////////////////////////////
+
+	//登录组件
+	private LoginPanel loginPanel;
+	private JButton loginBtn;
+	private JButton logoutBtn;
+	
+	private JLabel numLabel;
+	private JTextField numTextArea;
+	//private JButton queryBtn;
+	private JButton queryExBtn;
+	private JButton addBtn;
+	private JButton deleteBtn;
+	private JButton modifyBtn;
+
+	private JTextField browseTextArea;
+	private JButton browseBtn;
+	private JLabel nullLabel1;
+	private JButton upLoadBtn;
+	private JLabel nullLabel2;
+
+	private JComboBox jComboBox;
+	private JLabel numberLabel;
+	private JTextField nullTextArea3;
+	private JLabel userLabel;
+	private JTextField nullTextArea4;
+	private JLabel startTime;
+	private JTextField startTextArea;
+	private JLabel stopTime;
+	private JTextField endTextArea;
+	private JRadioButton jr;
+	private JButton okBtn;
+	private JButton cancleBtn;
+	private JButton alldeleteBtn;
+	
+	private JLabel numberLabel1;
+	private JTextField nullTextArea31;
+	private JLabel userLabel1;
+	private JTextField nullTextArea41;
+	private JLabel startTime1;
+	private JTextField startTextArea1;
+	private JLabel stopTime1;
+	private JTextField endTextArea1;
+	private JRadioButton jr1;
+	private JButton okBtn1;
+	private JButton cancleBtn1;
+
+	private JFileChooser jfc;
+    private JLabel ipLabel;
+    private JTextField ipTextArea;
+	private JLabel nameLabel;
+	private JLabel passwordLabel;
+	private JLabel portLabel;
+	
+	private JTextField portTextArea;
+	private JTextField nameTextArea;
+	private JPasswordField passwordTextArea;	
+    
+	private DefaultTableModel model;
+	private JTable table;
+	private Object[][] data;
+}
+
+
+public class TrafficAllowList {  
+	public static void main(String[] args) {	
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				JNATrafficListFrame demo = new JNATrafficListFrame();
+				demo.setVisible(true);
+			}
+		});		
+	}
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficEvent.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficEvent.java
new file mode 100644
index 0000000..c6d62d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/TrafficEvent.java
@@ -0,0 +1,1689 @@
+package com.netsdk.demo.frame;
+
+import java.awt.AWTEvent;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.Panel;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+
+import javax.imageio.ImageIO;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.netsdk.common.*;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.RealPlayModule;
+import com.netsdk.demo.module.TrafficEventModule;
+import com.netsdk.lib.*;
+import com.netsdk.lib.NetSDKLib.LLong;
+
+import com.sun.jna.CallbackThreadInitializer;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+/*
+ * 智能交通Demo
+ */
+class TrafficEventFrame extends JFrame {
+	private static final long serialVersionUID = 1L;
+	private Vector<String> chnlist = new Vector<String>();
+
+	private DefaultTableModel model;
+	private AnalyzerDataCB m_AnalyzerDataCB = new AnalyzerDataCB();
+	// 设备断线通知回调
+	private static DisConnect disConnect       = new DisConnect();
+
+	// 网络连接恢复
+	private static HaveReConnect haveReConnect = new HaveReConnect();
+
+	// 预览句柄
+	public static LLong m_hPlayHandle = new LLong(0);
+
+	boolean b_openStrobe = false;
+	boolean b_realplay = false;
+	boolean b_attach = false;
+
+	private int i = 1;  // 列表序号
+
+	private class TRAFFIC_INFO {
+		private String m_EventName;         	  // 事件名称
+		private String m_PlateNumber;       	  // 车牌号
+		private String m_PlateType;               // 车牌类型
+		private String m_PlateColor;      	  	  // 车牌颜色
+		private String m_VehicleColor;    	  	  // 车身颜色
+		private String m_VehicleType;       	  // 车身类型
+		private String m_VehicleSize;     	  	  // 车辆大小
+		private String m_FileCount;				  // 文件总数
+		private String m_FileIndex;				  // 文件编号
+		private String m_GroupID;				  // 组ID
+		private String m_IllegalPlace;			  // 违法地点
+		private String m_LaneNumber;              // 通道号
+		private NetSDKLib.NET_TIME_EX m_Utc;      // 事件时间
+		private int m_bPicEnble;       	  		  // 车牌对应信息,BOOL类型
+		private int m_OffSet;          	  		  // 车牌偏移量
+		private int m_FileLength;                 // 文件大小
+		private NetSDKLib.DH_RECT m_BoundingBox;  // 包围盒
+	}
+
+	private  TRAFFIC_INFO trafficInfo = new TRAFFIC_INFO();
+	private BufferedImage snapImage = null;
+	private BufferedImage plateImage = null;
+
+	private java.awt.Component  target     = this;
+
+	// 获取界面窗口
+	private static JFrame frame = new JFrame();
+
+	public TrafficEventFrame() {
+		setTitle(Res.string().getITSEvent());
+		setLayout(new BorderLayout());
+		pack();
+		setSize(800, 565);
+		setResizable(false);
+		setLocationRelativeTo(null);
+		LoginModule.init(disConnect, haveReConnect);   // 打开工程,初始化
+
+		try {
+			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		loginPanel = new LoginPanel();
+		itsPanel = new ItsPanel();
+
+		add(loginPanel, BorderLayout.NORTH);
+		add(itsPanel, BorderLayout.CENTER);
+
+		loginPanel.addLoginBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				if(loginPanel.checkLoginText()) {
+					if(login()) {
+						frame = ToolKits.getFrame(e);
+						frame.setTitle(Res.string().getITSEvent() + " : " + Res.string().getOnline());
+					}
+				}
+			}
+		});
+
+		loginPanel.addLogoutBtnActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				frame.setTitle(Res.string().getITSEvent());
+				logout();
+			}
+		});
+
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				RealPlayModule.stopRealPlay(m_hPlayHandle);
+				TrafficEventModule.detachIVSEvent();
+				LoginModule.logout();
+				LoginModule.cleanup();  // 关闭工程,释放资源
+				dispose();
+
+				SwingUtilities.invokeLater(new Runnable() {
+					public void run() {
+						FunctionList demo = new FunctionList();
+						demo.setVisible(true);
+					}
+				});
+			}
+		});
+	}
+
+	/////////////////面板///////////////////
+	// 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+	private static class DisConnect implements NetSDKLib.fDisConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+			// 断线提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getITSEvent() + " : " + Res.string().getDisConnectReconnecting());
+				}
+			});
+		}
+	}
+
+	// 网络连接恢复,设备重连成功回调
+	// 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+	private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+		public void invoke(LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+			System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+			// 重连提示
+			SwingUtilities.invokeLater(new Runnable() {
+				public void run() {
+					frame.setTitle(Res.string().getITSEvent() + " : " + Res.string().getOnline());
+				}
+			});
+		}
+	}
+	// 登录
+	public boolean login() {
+		Native.setCallbackThreadInitializer(m_AnalyzerDataCB,
+				new CallbackThreadInitializer(false, false, "traffic callback thread"));
+		if(LoginModule.login(loginPanel.ipTextArea.getText(),
+				Integer.parseInt(loginPanel.portTextArea.getText()),
+				loginPanel.nameTextArea.getText(),
+				new String(loginPanel.passwordTextArea.getPassword()))) {
+
+			loginPanel.setButtonEnable(true);
+			setButtonEnable(true);
+
+			for(int i = 1; i < LoginModule.m_stDeviceInfo.byChanNum + 1; i++) {
+				chnlist.add(Res.string().getChannel() + " " + String.valueOf(i));
+			}
+
+			// 登陆成功,将通道添加到控件
+			chnComboBox.setModel(new DefaultComboBoxModel(chnlist));
+		} else {
+			JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			return false;
+		}
+		return true;
+	}
+
+	// 登出
+	public void logout() {
+		RealPlayModule.stopRealPlay(m_hPlayHandle);
+		TrafficEventModule.detachIVSEvent();
+		LoginModule.logout();
+
+		loginPanel.setButtonEnable(false);
+		setButtonEnable(false);
+		realPlayWindow.repaint();
+		eventnameTextField.setText("");
+		licensePlateTextField.setText("");
+		eventTimeTextField.setText("");
+
+		b_realplay = false;
+		realplayBtn.setText(Res.string().getStartRealPlay());
+		b_attach = false;
+		attachBtn.setText(Res.string().getAttach());
+		b_openStrobe = false;
+		openStrobeButton.setText(Res.string().getOpenStrobe());
+
+		i = 1; // 列表序号置1
+
+		for(int i = 0; i < LoginModule.m_stDeviceInfo.byChanNum; i++) {
+			chnlist.clear();
+		}
+
+		chnComboBox.setModel(new DefaultComboBoxModel());
+
+		// 列表清空
+		defaultModel.setRowCount(0);
+		defaultModel.setRowCount(8);
+		table.updateUI();
+
+		SnapImagePanel.setOpaque(true);
+		SnapImagePanel.repaint();
+
+		plateImagePanel.setOpaque(true);
+		plateImagePanel.repaint();
+	}
+
+	private class ItsPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public ItsPanel() {
+			BorderEx.set(this, null, 2);
+			setLayout(new BorderLayout());
+
+			operatePanel = new OperatePanel();
+			realPlayPanel = new RealPlayPanel();
+			eventInfoPanel = new EventInfoPanel();
+			messagePanel = new MessagePanel();
+
+			add(operatePanel, BorderLayout.NORTH);
+			add(realPlayPanel, BorderLayout.WEST);
+			add(eventInfoPanel, BorderLayout.CENTER);
+			add(messagePanel, BorderLayout.SOUTH);
+		}
+	}
+
+	/**
+	 * 操作面板
+	 */
+	private class OperatePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public OperatePanel() {
+			BorderEx.set(this, Res.string().getOperate(), 2);
+			setLayout(new FlowLayout());
+
+			chnlabel = new JLabel(Res.string().getChannel());
+			chnComboBox = new JComboBox();
+
+			JLabel nullLabel2 = new JLabel("   ");
+			JLabel nullLabel3 = new JLabel("   ");
+			JLabel nullLabel4 = new JLabel("   ");
+			JLabel nullLabel5 = new JLabel("   ");
+
+			realplayBtn = new JButton(Res.string().getStartRealPlay());
+			attachBtn = new JButton(Res.string().getAttach());
+			manualSnapBtn = new JButton(Res.string().getManualCapture());
+			openStrobeButton = new JButton(Res.string().getOpenStrobe());
+
+			chnComboBox.setPreferredSize(new Dimension(100, 20));
+			realplayBtn.setPreferredSize(new Dimension(125, 20));
+			attachBtn.setPreferredSize(new Dimension(120, 20));
+			manualSnapBtn.setPreferredSize(new Dimension(125, 20));
+			openStrobeButton.setPreferredSize(new Dimension(120, 20));
+
+			add(chnlabel);
+			add(chnComboBox);
+			add(nullLabel2);
+			add(realplayBtn);
+			add(nullLabel3);
+			add(attachBtn);
+			add(nullLabel4);
+			add(manualSnapBtn);
+			add(nullLabel5);
+			add(openStrobeButton);
+
+			chnComboBox.setEnabled(false);
+			realplayBtn.setEnabled(false);
+			attachBtn.setEnabled(false);
+			manualSnapBtn.setEnabled(false);
+			openStrobeButton.setEnabled(false);
+
+			realplayBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					realplay();
+				}
+			});
+
+			attachBtn.addActionListener(new ActionListener() {
+				@Override
+				public void actionPerformed(ActionEvent arg0) {
+					attach();
+				}
+			});
+
+			manualSnapBtn.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if(!TrafficEventModule.manualSnapPicture(chnComboBox.getSelectedIndex())) {
+						JOptionPane.showMessageDialog(null, Res.string().getManualCaptureFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+					}
+				}
+			});
+
+			openStrobeButton.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					openstrobe();
+				}
+			});
+		}
+	}
+
+	// 预览
+	public void realplay() {
+		if(!b_realplay) {
+			m_hPlayHandle = RealPlayModule.startRealPlay(chnComboBox.getSelectedIndex(), 0,
+					realPlayWindow);
+			if(m_hPlayHandle.longValue() != 0) {
+				realPlayWindow.repaint();
+				b_realplay = true;
+				chnComboBox.setEnabled(false);
+				realplayBtn.setText(Res.string().getStopRealPlay());
+			}
+		} else {
+			RealPlayModule.stopRealPlay(m_hPlayHandle);
+			realPlayWindow.repaint();
+			b_realplay = false;
+			chnComboBox.setEnabled(true);
+			realplayBtn.setText(Res.string().getStartRealPlay());
+		}
+	}
+
+	// 订阅
+	public void attach() {
+		if(!b_attach) {
+			if(TrafficEventModule.attachIVSEvent(chnComboBox.getSelectedIndex(),
+					m_AnalyzerDataCB)) {
+				b_attach = true;
+				attachBtn.setText(Res.string().getDetach());
+			}
+		} else {
+			TrafficEventModule.detachIVSEvent();
+			b_attach = false;
+			attachBtn.setText(Res.string().getAttach());
+		}
+	}
+
+	// 出入口开闸
+	public void openstrobe() {
+		if(!b_openStrobe) {
+			if(TrafficEventModule.New_OpenStrobe()) {
+				b_openStrobe = true;
+				openStrobeButton.setText(Res.string().getCloseStrobe());
+			} else {
+				JOptionPane.showMessageDialog(null, Res.string().getOpenStrobeFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+			}
+		} else {
+			TrafficEventModule.New_CloseStrobe();
+			b_openStrobe = false;
+			openStrobeButton.setText(Res.string().getOpenStrobe());
+		}
+	}
+	/**
+	 * 预览面板
+	 */
+	private class RealPlayPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public RealPlayPanel() {
+			BorderEx.set(this, Res.string().getRealplay(), 2);
+			setLayout(new BorderLayout());
+			Dimension dim = getPreferredSize();
+			dim.height = 280;
+			dim.width = 320;
+			setPreferredSize(dim);
+
+			JPanel reaJPanel = new JPanel();
+			reaJPanel.setLayout(new BorderLayout());
+			reaJPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			add(reaJPanel, BorderLayout.CENTER);
+
+			realPlayWindow = new Panel();
+			realPlayWindow.setBackground(Color.GRAY);
+
+			reaJPanel.add(realPlayWindow, BorderLayout.CENTER);
+		}
+	}
+
+	/**
+	 * 事件及图片面板
+	 */
+	private class EventInfoPanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public EventInfoPanel() {
+			Dimension dimension = new Dimension(-1, -1);
+
+			BorderEx.set(this, Res.string().getEventPicture(), 2);
+			setLayout(new BorderLayout());
+
+			//////// 车牌及抓图时间面板
+			JPanel paramPanel = new JPanel();
+			JPanel textPanel = new JPanel();
+			JPanel platePanel = new JPanel();
+
+			///////////车牌小图
+			plateImagePanel = new PaintPanel(); // 车牌小图
+			plateImageLabel = new JLabel(Res.string().getPlatePicture());
+
+			dimension.width = 145;
+			dimension.height = 49;
+			plateImagePanel.setPreferredSize(dimension);
+			platePanel.setLayout(new BorderLayout());
+			platePanel.add(plateImagePanel, BorderLayout.SOUTH);
+			platePanel.add(plateImageLabel, BorderLayout.CENTER);
+
+			///////////
+			eventnameLabel = new JLabel(Res.string().getEventName());
+			eventnameTextField = new JTextField("");
+			eventTimeLabel = new JLabel(Res.string().getEventTime());
+			eventTimeTextField = new JTextField("");
+			licensePlateLabel = new JLabel(Res.string().getLicensePlate());
+			licensePlateTextField = new JTextField("");
+
+			dimension.width = 165;
+			dimension.height = 45;
+			paramPanel.setPreferredSize(dimension);
+			paramPanel.setLayout(new BorderLayout());
+			paramPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+
+			textPanel.setLayout(new GridLayout(6, 2));
+			textPanel.add(eventnameLabel);
+			textPanel.add(eventnameTextField);
+			textPanel.add(eventTimeLabel);
+			textPanel.add(eventTimeTextField);
+			textPanel.add(licensePlateLabel);
+			textPanel.add(licensePlateTextField);
+			eventnameTextField.setEditable(false);
+			eventTimeTextField.setEditable(false);
+			licensePlateTextField.setEditable(false);
+
+
+			paramPanel.add(platePanel, BorderLayout.NORTH);
+			paramPanel.add(textPanel, BorderLayout.CENTER);
+
+			///////// 事件大图面板 ////////////////////////////
+			SnapImagePanel = new PaintPanel(); // 事件大图
+			SnapImagePanel.setSize(291, 200);
+
+			JPanel snapJPanel = new JPanel();
+			snapJPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+			snapJPanel.setLayout(new BorderLayout());
+			snapJPanel.add(SnapImagePanel, BorderLayout.CENTER);
+
+			add(snapJPanel, BorderLayout.CENTER);
+			add(paramPanel, BorderLayout.WEST);
+		}
+	}
+
+	/**
+	 * 事件信息显示面板
+	 */
+	private class MessagePanel extends JPanel {
+		private static final long serialVersionUID = 1L;
+
+		public MessagePanel() {
+			BorderEx.set(this, Res.string().getEventInfo(), 2);
+
+			Dimension dim = getPreferredSize();
+			dim.height = 195;
+			setPreferredSize(dim);
+			setLayout(new BorderLayout());
+
+			//////////////
+			defaultModel = new DefaultTableModel(null, Res.string().getTrafficTableName());
+			table = new JTable(defaultModel) {   // 列表不可编辑
+				private static final long serialVersionUID = 1L;
+				@Override
+				public boolean isCellEditable(int row, int column) {
+					return false;
+				}
+			};
+			defaultModel.setRowCount(8);
+			model = (DefaultTableModel)table.getModel();
+
+			table.getColumnModel().getColumn(0).setPreferredWidth(50);
+			table.getColumnModel().getColumn(1).setPreferredWidth(120);
+			table.getColumnModel().getColumn(2).setPreferredWidth(100);
+			table.getColumnModel().getColumn(3).setPreferredWidth(140);
+			table.getColumnModel().getColumn(4).setPreferredWidth(80);
+			table.getColumnModel().getColumn(5).setPreferredWidth(80);
+			table.getColumnModel().getColumn(6).setPreferredWidth(80);
+			table.getColumnModel().getColumn(7).setPreferredWidth(80);
+			table.getColumnModel().getColumn(8).setPreferredWidth(80);
+			table.getColumnModel().getColumn(9).setPreferredWidth(80);
+			table.getColumnModel().getColumn(10).setPreferredWidth(60);
+			table.getColumnModel().getColumn(11).setPreferredWidth(100);
+			table.getColumnModel().getColumn(12).setPreferredWidth(100);
+			table.getColumnModel().getColumn(13).setPreferredWidth(90);
+
+			table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  // 只能选中一行
+
+			// 列表显示居中
+			DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+			dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+			table.setDefaultRenderer(Object.class, dCellRenderer);
+
+			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+			JScrollPane scrollPane = new JScrollPane(table);
+			add(scrollPane, BorderLayout.CENTER);
+
+			table.addMouseListener(new MouseListener() {
+				@Override
+				public void mouseReleased(MouseEvent e) {
+				}
+
+				@Override
+				public void mousePressed(MouseEvent e) {
+				}
+
+				@Override
+				public void mouseExited(MouseEvent e) {
+				}
+
+				@Override
+				public void mouseEntered(MouseEvent e) {
+				}
+
+				@Override
+				public void mouseClicked(MouseEvent e) {
+					if(e.getClickCount() < 2) {
+						return;
+					}
+					// 列表点击显示图片
+					SwingUtilities.invokeLater(new Runnable() {
+						public void run() {
+							int row = table.getSelectedRow();
+
+							if(model.getValueAt(row, 3) == null || String.valueOf(model.getValueAt(row, 3)).trim().equals("")) {
+								return;
+							}
+
+							if(model.getValueAt(row, 9) == null || String.valueOf(model.getValueAt(row, 9)).trim().equals("")) {
+								return;
+							}
+
+							if(model.getValueAt(row, 10) == null || String.valueOf(model.getValueAt(row, 10)).trim().equals("")) {
+								return;
+							}
+
+							if(model.getValueAt(row, 11) == null || String.valueOf(model.getValueAt(row, 11)).trim().equals("")) {
+								return;
+							}
+
+							String str2 = String.valueOf(model.getValueAt(row, 3)).trim().replace(" ", "_").replace("/", "").replace(":", "");
+							String str9 = "_" +String.valueOf(model.getValueAt(row, 9)).trim();
+							String str10 = "-" + String.valueOf(model.getValueAt(row, 10)).trim();
+							String str11 = "-" + String.valueOf(model.getValueAt(row, 11)).trim();
+
+							String selectPicture = SavePath.getSavePath().getSaveTrafficImagePath() + "Big_Time_" + str2 + str9 + str10 + str11 + ".jpg";
+							BufferedImage bufferedImage = null;
+
+							if(selectPicture == null || selectPicture.equals("")) {
+								return;
+							}
+
+							File file = new File(selectPicture);
+							if(!file.exists()) {
+								return;
+							}
+							try {
+								bufferedImage = ImageIO.read(file);
+							} catch (IOException e) {
+								e.printStackTrace();
+							}
+							ListPictureShowDialog demo = new ListPictureShowDialog();
+							demo.listPanel.setOpaque(false);
+							demo.listPanel.setImage(bufferedImage);
+							demo.setVisible(true);
+						}
+					});
+				}
+			});
+		}
+	}
+
+	class TrafficEvent extends AWTEvent {
+		private static final long serialVersionUID = 1L;
+		public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
+
+		private TRAFFIC_INFO trafficInfo = null;
+		private BufferedImage snapImage = null;
+		private BufferedImage plateImage = null;
+
+		public TrafficEvent(Object target,
+							BufferedImage snapImage,
+							BufferedImage plateImage,
+							TRAFFIC_INFO info) {
+			super(target,EVENT_ID);
+
+			this.snapImage = snapImage;
+			this.plateImage = plateImage;
+			this.trafficInfo = info;
+		}
+
+		public BufferedImage getSnapBufferedImage() {
+			return snapImage;
+		}
+
+		public BufferedImage getPlaBufferedImage() {
+			return plateImage;
+		}
+
+		public TRAFFIC_INFO getTrafficInfo() {
+			return trafficInfo;
+		}
+	}
+
+	@Override
+	protected void processEvent( AWTEvent event)
+	{
+		if ( event instanceof TrafficEvent )
+		{
+
+			TrafficEvent ev = (TrafficEvent) event;
+
+			TRAFFIC_INFO trafficInfo =  ev.getTrafficInfo();
+			BufferedImage snapImage = ev.getSnapBufferedImage();
+			BufferedImage plateImage = ev.getPlaBufferedImage();
+
+			// 列表显示事件信息
+			showTrafficEventInfo(trafficInfo);
+
+			// 界面显示图片
+			showPicture(snapImage, plateImage);
+		}
+
+		else    // other events go to the system default process event handler
+		{
+			super.processEvent( event );
+		}
+	}
+
+	/*
+	 * 智能报警事件回调
+	 */
+	private class AnalyzerDataCB implements NetSDKLib.fAnalyzerDataCallBack {
+		public int invoke(LLong lAnalyzerHandle, int dwAlarmType,
+						  Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize,
+						  Pointer dwUser, int nSequence, Pointer reserved)
+		{
+			if (lAnalyzerHandle.longValue() == 0) {
+				return -1;
+			}
+
+			if(dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFICJUNCTION
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_RUNREDLIGHT
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_OVERLINE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_RETROGRADE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_TURNLEFT
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_TURNRIGHT
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_UTURN
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_OVERSPEED
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_UNDERSPEED
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_PARKING
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_WRONGROUTE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_CROSSLANE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_OVERYELLOWLINE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINROUTE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_BACKING
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING
+					|| dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT) {
+
+				// 获取识别对象 车身对象 事件发生时间 车道号等信息
+				GetStuObject(dwAlarmType, pAlarmInfo);
+
+				boolean flag=true;
+
+				if((dwAlarmType == NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP)){
+					NetSDKLib.DEV_EVENT_TRAFFIC_MANUALSNAP_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_MANUALSNAP_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+					byte bPicEnble = msg.stuObject.bPicEnble;
+
+					if(bPicEnble==0){
+						flag=false;
+					}
+				}
+
+				if(flag){
+					// 保存图片,获取图片缓存
+					savePlatePic(pBuffer, dwBufSize, trafficInfo);
+
+					// 列表、图片界面显示
+					EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+					if (eventQueue != null)
+					{
+						eventQueue.postEvent( new TrafficEvent(target,
+								snapImage,
+								plateImage,
+								trafficInfo));
+					}
+				}else {
+					// 保存图片,获取图片缓存
+					savePlatePic(pBuffer, dwBufSize, trafficInfo);
+
+					// 列表、图片界面显示
+					EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+					if (eventQueue != null)
+					{
+						eventQueue.postEvent( new TrafficEvent(target,
+								snapImage,
+								null,
+								trafficInfo));
+					}
+				}
+
+
+			}
+
+			return 0;
+		}
+
+		// 获取识别对象 车身对象 事件发生时间 车道号等信息
+		private void GetStuObject(int dwAlarmType, Pointer pAlarmInfo)  {
+			if(pAlarmInfo == null) {
+				return;
+			}
+
+			switch(dwAlarmType) {
+				case NetSDKLib.EVENT_IVS_TRAFFICJUNCTION: ///< 交通卡口事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFICJUNCTION);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_RUNREDLIGHT: ///< 闯红灯事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_RUNREDLIGHT);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_OVERLINE: ///< 压车道线事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_OVERLINE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_OVERLINE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_OVERLINE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_RETROGRADE: ///< 逆行事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_RETROGRADE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_RETROGRADE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_RETROGRADE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_TURNLEFT: ///< 违章左转
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_TURNLEFT_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_TURNLEFT_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_TURNLEFT);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_TURNRIGHT: ///< 违章右转
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_TURNRIGHT_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_TURNRIGHT_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_TURNRIGHT);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_UTURN: ///< 违章掉头
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_UTURN_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_UTURN_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_UTURN);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_OVERSPEED: ///< 超速
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_OVERSPEED_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_OVERSPEED_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_OVERSPEED);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_UNDERSPEED: ///< 低速
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_UNDERSPEED_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_UNDERSPEED_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_UNDERSPEED);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_PARKING: ///< 违章停车
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_PARKING_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_PARKING_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_PARKING);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_WRONGROUTE: ///< 不按车道行驶
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_WRONGROUTE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_WRONGROUTE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_WRONGROUTE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_CROSSLANE: ///< 违章变道
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_CROSSLANE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_CROSSLANE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_CROSSLANE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stuTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stuTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stuTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stuTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stuTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_OVERYELLOWLINE: ///< 压黄线
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_OVERYELLOWLINE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE: ///< 黄牌车占道事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY: ///< 斑马线行人优先事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP: ///< 交通手动抓拍事件
+				{
+					JOptionPane.showMessageDialog(null, Res.string().getManualCaptureSucceed(), Res.string().getPromptMessage(), JOptionPane.INFORMATION_MESSAGE);
+					NetSDKLib.DEV_EVENT_TRAFFIC_MANUALSNAP_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_MANUALSNAP_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_MANUALSNAP);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINROUTE: ///< 有车占道事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINROUTE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE: ///< 占用公交车道事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_BACKING: ///< 违章倒车事件
+				{
+					NetSDKLib.DEV_EVENT_IVS_TRAFFIC_BACKING_INFO msg = new NetSDKLib.DEV_EVENT_IVS_TRAFFIC_BACKING_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_BACKING);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING: ///< 车位有车事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING: ///< 车位无车事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO msg = new NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				case NetSDKLib.EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT: ///< 交通未系安全带事件
+				{
+					NetSDKLib.DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT msg = new NetSDKLib.DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT();
+					ToolKits.GetPointerData(pAlarmInfo, msg);
+
+					trafficInfo.m_EventName = Res.string().getEventName(NetSDKLib.EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT);
+					try {
+						trafficInfo.m_PlateNumber = new String(msg.stuObject.szText, "GBK").trim();
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					trafficInfo.m_PlateType = new String(msg.stuTrafficCar.szPlateType).trim();
+					trafficInfo.m_FileCount = String.valueOf(msg.stuFileInfo.bCount);
+					trafficInfo.m_FileIndex = String.valueOf(msg.stuFileInfo.bIndex);
+					trafficInfo.m_GroupID =  String.valueOf(msg.stuFileInfo.nGroupId);
+					trafficInfo.m_IllegalPlace = ToolKits.GetPointerDataToByteArr(msg.stuTrafficCar.szDeviceAddress);
+					trafficInfo.m_LaneNumber = String.valueOf(msg.nLane);
+					trafficInfo.m_PlateColor = new String(msg.stuTrafficCar.szPlateColor).trim();
+					trafficInfo.m_VehicleColor = new String(msg.stuTrafficCar.szVehicleColor).trim();
+					trafficInfo.m_VehicleType = new String(msg.stuVehicle.szObjectSubType).trim();
+					trafficInfo.m_VehicleSize = Res.string().getTrafficSize(msg.stuTrafficCar.nVehicleSize);
+					trafficInfo.m_Utc = msg.UTC;
+					trafficInfo.m_bPicEnble = msg.stuObject.bPicEnble;
+					trafficInfo.m_OffSet = msg.stuObject.stPicInfo.dwOffSet;
+					trafficInfo.m_FileLength = msg.stuObject.stPicInfo.dwFileLenth;
+					trafficInfo.m_BoundingBox = msg.stuObject.BoundingBox;
+
+					break;
+				}
+				default:
+					break;
+			}
+		}
+
+	}
+
+	/*
+	 * 显示事件名称、车牌号、事件时间
+	 */
+	private void showTrafficEventInfo(TRAFFIC_INFO trafficInfo) {
+		// 事件名称
+		if(trafficInfo.m_EventName.equals("")) {
+			eventnameTextField.setText("");
+		} else {
+			eventnameTextField.setText(trafficInfo.m_EventName);
+		}
+
+		// 车牌号
+		if(trafficInfo.m_PlateNumber.equals("") ) {
+			licensePlateTextField.setText(Res.string().getNoPlate());
+			plateImagePanel.setOpaque(true);
+			plateImagePanel.repaint();
+		} else {
+			licensePlateTextField.setText(trafficInfo.m_PlateNumber);
+		}
+
+		// 事件时间
+		if(trafficInfo.m_Utc == null
+				|| trafficInfo.m_Utc.toStringTime().equals("")) {
+			eventTimeTextField.setText("");
+		} else {
+			eventTimeTextField.setText(trafficInfo.m_Utc.toStringTime());
+		}
+
+		Vector<String> vector = new Vector<String>();
+
+
+		vector.add(String.valueOf(i)); 					// 序号
+		vector.add(trafficInfo.m_EventName); 			// 事件名称
+		vector.add(trafficInfo.m_PlateNumber); 			// 车牌号
+
+		// 事件时间
+		if(trafficInfo.m_Utc == null || trafficInfo.m_Utc.toStringTime().equals("")) {
+			vector.add("");
+		} else {
+			vector.add(trafficInfo.m_Utc.toStringTime());
+		}
+
+		vector.add(trafficInfo.m_PlateType); 			// 车牌类型
+		vector.add(trafficInfo.m_PlateColor); 			// 车牌颜色
+		vector.add(trafficInfo.m_VehicleColor); 		// 车身颜色
+		vector.add(trafficInfo.m_VehicleType); 			// 车身类型
+		vector.add(trafficInfo.m_VehicleSize); 			// 车辆大小
+		vector.add(trafficInfo.m_FileCount); 			// 文件总数
+		vector.add(trafficInfo.m_FileIndex); 			// 文件编号
+		vector.add(trafficInfo.m_GroupID); 				// 组ID
+		vector.add(trafficInfo.m_IllegalPlace); 		// 违法地点
+		vector.add(trafficInfo.m_LaneNumber); 			// 车道号
+
+		defaultModel.insertRow(0, vector);
+		defaultModel.setRowCount(8);
+
+		table.updateUI();
+
+		i++;
+	}
+
+	/*
+	 * 界面显示图片
+	 */
+	private void showPicture(BufferedImage snapImage, BufferedImage plateImage) {
+		if (snapImage == null) {
+			SnapImagePanel.setOpaque(true);  // 不透明
+			SnapImagePanel.repaint();
+
+			plateImagePanel.setOpaque(true);
+			plateImagePanel.repaint();
+			return;
+		}
+
+		SnapImagePanel.setOpaque(false);  // 透明
+		SnapImagePanel.setImage(snapImage);
+		SnapImagePanel.repaint();
+
+		if(plateImage == null) {
+			plateImagePanel.setOpaque(true);
+			plateImagePanel.repaint();
+			return;
+		}
+
+		plateImagePanel.setOpaque(false);
+		plateImagePanel.setImage(plateImage);
+		plateImagePanel.repaint();
+	}
+	/*
+	 * 保存车牌小图:DH早期交通抓拍机,设备不传单独的车牌小图文件,只传车牌在大图中的坐标;由应用来自行裁剪。
+	 * 2014年后,陆续有设备版本,支持单独传车牌小图,小图附录在pBuffer后面。
+	 */
+	private void savePlatePic(Pointer pBuffer, int dwBufferSize, TRAFFIC_INFO trafficInfo) {
+
+		String bigPicture; // 大图
+		String platePicture; // 车牌图
+
+		if (pBuffer == null || dwBufferSize <= 0 ) {
+			return;
+		}
+
+		// 保存大图
+		byte[] buffer = pBuffer.getByteArray(0, dwBufferSize);
+		ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buffer);
+
+		bigPicture = SavePath.getSavePath().getSaveTrafficImagePath() + "Big_" + trafficInfo.m_Utc.toStringTitle() + "_" +
+				trafficInfo.m_FileCount + "-" + trafficInfo.m_FileIndex + "-" + trafficInfo.m_GroupID + ".jpg";
+
+		try {
+			snapImage = ImageIO.read(byteArrInput);
+			if(snapImage == null) {
+				return;
+			}
+			ImageIO.write(snapImage, "jpg", new File(bigPicture));
+		} catch (IOException e2) {
+			e2.printStackTrace();
+		}
+
+		if(bigPicture == null || bigPicture.equals("")) {
+			return;
+		}
+
+		if (trafficInfo.m_bPicEnble == 1) {
+			//根据pBuffer中数据偏移保存小图图片文件
+			if (trafficInfo.m_FileLength > 0) {
+				platePicture = SavePath.getSavePath().getSaveTrafficImagePath() + "plate_" + trafficInfo.m_Utc.toStringTitle() + "_" +
+						trafficInfo.m_FileCount + "-" + trafficInfo.m_FileIndex + "-" + trafficInfo.m_GroupID + ".jpg";
+
+				int size = 0;
+				if(dwBufferSize <= trafficInfo.m_OffSet) {
+					return;
+				}
+
+				if(trafficInfo.m_FileLength <= dwBufferSize - trafficInfo.m_OffSet) {
+					size = trafficInfo.m_FileLength;
+				} else {
+					size = dwBufferSize - trafficInfo.m_OffSet;
+				}
+				byte[] bufPlate = pBuffer. getByteArray(trafficInfo.m_OffSet, size);
+				ByteArrayInputStream byteArrInputPlate = new ByteArrayInputStream(bufPlate);
+				try {
+					plateImage = ImageIO.read(byteArrInputPlate);
+					if(plateImage == null) {
+						return;
+					}
+					ImageIO.write(plateImage, "jpg", new File(platePicture));
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		else {
+			if(trafficInfo.m_BoundingBox == null) {
+				return;
+			}
+			//根据大图中的坐标偏移计算显示车牌小图
+
+			NetSDKLib.DH_RECT dhRect = trafficInfo.m_BoundingBox;
+			//1.BoundingBox的值是在8192*8192坐标系下的值,必须转化为图片中的坐标
+			//2.OSD在图片中占了64行,如果没有OSD,下面的关于OSD的处理需要去掉(把OSD_HEIGHT置为0)
+			final int OSD_HEIGHT = 0;
+
+			long nWidth = snapImage.getWidth(null);
+			long nHeight = snapImage.getHeight(null);
+
+			nHeight = nHeight - OSD_HEIGHT;
+			if ((nWidth <= 0) || (nHeight <= 0)) {
+				return ;
+			}
+
+			NetSDKLib.DH_RECT dstRect = new NetSDKLib.DH_RECT();
+
+			dstRect.left.setValue((long)((double)(nWidth * dhRect.left.longValue()) / 8192.0));
+			dstRect.right.setValue((long)((double)(nWidth * dhRect.right.longValue()) / 8192.0));
+			dstRect.bottom.setValue((long)((double)(nHeight * dhRect.bottom.longValue()) / 8192.0));
+			dstRect.top.setValue((long)((double)(nHeight * dhRect.top.longValue()) / 8192.0));
+
+			int x = dstRect.left.intValue();
+			int y = dstRect.top.intValue() + OSD_HEIGHT;
+			int w = dstRect.right.intValue() - dstRect.left.intValue();
+			int h = dstRect.bottom.intValue() - dstRect.top.intValue();
+
+			if(x == 0 || y == 0 || w <= 0 || h <= 0) {
+				return;
+			}
+
+			try {
+				plateImage = snapImage.getSubimage(x, y, w, h);
+				platePicture = SavePath.getSavePath().getSaveTrafficImagePath() + "plate_" + trafficInfo.m_Utc.toStringTitle() + "_" +
+						trafficInfo.m_FileCount + "-" + trafficInfo.m_FileIndex + "-" + trafficInfo.m_GroupID + ".jpg";
+				if(plateImage == null) {
+					return;
+				}
+				ImageIO.write(plateImage, "jpg", new File(platePicture));
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	private void setButtonEnable(boolean bln) {
+		chnComboBox.setEnabled(bln);
+		realplayBtn.setEnabled(bln);
+		attachBtn.setEnabled(bln);
+		manualSnapBtn.setEnabled(bln);
+		openStrobeButton.setEnabled(bln);
+	}
+
+	//登录组件
+	private LoginPanel loginPanel;
+
+	private ItsPanel itsPanel;
+	private OperatePanel operatePanel;
+	private JButton realplayBtn;
+	private JButton attachBtn;
+
+	/**
+	 * 事件信息显示组件
+	 */
+	private MessagePanel messagePanel;
+	private DefaultTableModel defaultModel;
+	private JTable table;
+
+	/**
+	 * 实时预览组件
+	 */
+	private RealPlayPanel realPlayPanel;
+	Panel realPlayWindow;
+	private JLabel chnlabel;
+	JComboBox chnComboBox;
+	JComboBox streamComboBox;
+
+	/**
+	 * 事件及图片组件
+	 */
+	private EventInfoPanel eventInfoPanel;
+	private PaintPanel SnapImagePanel;
+	private PaintPanel plateImagePanel;
+	private JLabel plateImageLabel;
+
+	private JLabel eventnameLabel;
+	private JTextField eventnameTextField;
+
+	private JLabel eventTimeLabel;
+	private JTextField eventTimeTextField;
+
+	private JLabel licensePlateLabel;
+	private JTextField licensePlateTextField;
+
+	private JButton manualSnapBtn;
+	private JButton openStrobeButton;
+
+}
+
+public class TrafficEvent {
+	public static void main(String[] args) {
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				TrafficEventFrame demo = new TrafficEventFrame();
+				demo.setVisible(true);
+			}
+		});
+	}
+};
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAlarmAttachInfoCallBack.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAlarmAttachInfoCallBack.java
new file mode 100644
index 0000000..4079e13
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAlarmAttachInfoCallBack.java
@@ -0,0 +1,66 @@
+package com.netsdk.demo.frame.scada;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+import com.sun.jna.Pointer;
+
+import javax.swing.*;
+import javax.swing.table.DefaultTableModel;
+import java.nio.charset.Charset;
+
+/**
+ * className:SCADAAlarmAttachInfoCallBack
+ * description:动环主机:智能事件回调函数 订阅监测点报警信息回调
+ * author:251589
+ * createTime:2021/4/10 16:54
+ *
+ * @version v1.0
+ */
+
+public class SCADAAlarmAttachInfoCallBack implements NetSDKLib.fSCADAAlarmAttachInfoCallBack {
+    // 多平台 编码
+    private final Charset encode = Charset.forName(Utils.getPlatformEncode());
+    private static SCADAAlarmAttachInfoCallBack INSTANCE;
+    private JTable table;
+
+    @Override
+    public void invoke(NetSDKLib.LLong lAttachHandle,
+                       NetSDKLib.NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST pInfo, int nBufLen,
+                       Pointer dwUser) {
+
+        System.out.println("————————————————————【订阅监测点报警信息回调】————————————————————");
+        //更新列表
+        if (table != null) {
+            DefaultTableModel model = (DefaultTableModel) table.getModel();
+            for (int i = 0; i < pInfo.nList; i++) {
+                System.out.println(" 设备ID:" + new String(pInfo.stuList[i].szDevID).trim());
+                System.out.println(" 点位ID:" + new String(pInfo.stuList[i].szPointID).trim());
+                String alarmDesc = new String(pInfo.stuList[i].szAlarmDesc, encode).trim();
+                System.out.println(" 报警描述:" + alarmDesc);
+
+                System.out.println(" 报警标志:" + (pInfo.stuList[i].bAlarmFlag == 1));
+                System.out.println(" 报警时间:" + pInfo.stuList[i].stuAlarmTime.toStringTime());
+                System.out.println(" 报警级别(0~6):" + pInfo.stuList[i].nAlarmLevel);
+                System.out.println(" 报警编号(同一个告警的开始和结束的编号是相同的):" + pInfo.stuList[i].nSerialNo);
+                model.addRow(new Object[]{new String(pInfo.stuList[i].szDevID).trim(), new String(pInfo.stuList[i].szPointID).trim(), alarmDesc, pInfo.stuList[i].stuAlarmTime.toStringTime(), pInfo.stuList[i].nAlarmLevel});
+            }
+        }
+        System.out.println("————————————————————【订阅监测点报警信息回调】————————————————————");
+    }
+
+    private SCADAAlarmAttachInfoCallBack(JTable table) {
+        this.table = table;
+    }
+
+    public static SCADAAlarmAttachInfoCallBack getINSTANCE(JTable table) {
+        if (INSTANCE == null) {
+            INSTANCE = new SCADAAlarmAttachInfoCallBack(table);
+        }
+        if (table != null) {
+            INSTANCE.table = table;
+        }
+
+        return INSTANCE;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAttachModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAttachModule.java
new file mode 100644
index 0000000..a7f44d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADAAttachModule.java
@@ -0,0 +1,42 @@
+package com.netsdk.demo.frame.scada;
+
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.demo.module.LoginModule.m_hLoginHandle;
+
+/**
+ * className:SCADAAttachModule
+ * description:
+ * author:251589
+ * createTime:2021/5/7 20:16
+ *
+ * @version v1.0
+ */
+
+public class SCADAAttachModule {
+    // 订阅实时信息句柄
+    public static NetSDKLib.LLong attachInfoHandle = new NetSDKLib.LLong(0);
+
+    // 订阅报警句柄
+    public static NetSDKLib.LLong alarmAttachInfoHandle = new NetSDKLib.LLong(0);
+
+    public static boolean attachInfo(NetSDKLib.fSCADAAttachInfoCallBack callBack){
+        // 入参
+        NetSDKLib.NET_IN_SCADA_ATTACH_INFO stIn = new NetSDKLib.NET_IN_SCADA_ATTACH_INFO();
+        stIn.cbCallBack = callBack;
+        // 出参
+        NetSDKLib.NET_OUT_SCADA_ATTACH_INFO stOut = new NetSDKLib.NET_OUT_SCADA_ATTACH_INFO();
+        attachInfoHandle = LoginModule.netsdk.CLIENT_SCADAAttachInfo(m_hLoginHandle, stIn, stOut, 3000);
+        if (attachInfoHandle.longValue() != 0){
+            System.out.println("AttachInfo succeed!");
+        } else {
+            System.err.println("AttachInfo failed!");
+            return false;
+        }
+        return true;
+    }
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADADemo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADADemo.java
new file mode 100644
index 0000000..0673b17
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/scada/SCADADemo.java
@@ -0,0 +1,898 @@
+package com.netsdk.demo.frame.scada;
+
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.Res;
+import com.netsdk.demo.frame.vto.DefaultDisConnect;
+import com.netsdk.demo.frame.vto.DefaultHaveReconnect;
+import com.netsdk.demo.frame.vto.OperateManager;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.Utils;
+import com.netsdk.lib.structure.NET_ATTRIBUTE_INFO;
+import com.netsdk.lib.structure.NET_GET_CONDITION_INFO;
+import com.netsdk.lib.structure.NET_IN_SCADA_GET_ATTRIBUTE_INFO;
+import com.netsdk.lib.structure.NET_OUT_SCADA_GET_ATTRIBUTE_INFO;
+import com.sun.jna.Memory;
+import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Vector;
+
+import static com.netsdk.demo.module.LoginModule.m_hLoginHandle;
+
+public class SCADADemo extends JFrame {
+
+    private static final long serialVersionUID = 1L;
+
+    private JPanel contentPane;
+    private JTextField ipTextField;
+    private JTextField portTextField;
+    private JTextField userNameTextField;
+    private JPasswordField passwordField;
+
+    private JButton btnLogin; // 登录
+    private JButton btnLogout; // 登出
+    private JButton btnGetDeviceList; // 获取设备列表
+    private JButton btnAlarmAttachInfo; // 遥信,订阅报警
+    private JButton btnAttachInfo; // 遥测,订阅信息
+    private JButton btnAlarmAttachInfoStop; // 遥信,取消订阅报警
+    private JButton btnAttachInfoStop; // 遥测,取消订阅信息
+
+    private JButton btnStartListen; // 停止监听
+    private JButton btnStopListen; // 停止监听
+
+
+    private JTable devicesTable; // 设备列表
+    private JTable pointListTable; // 设备点位列表
+    private JTable alarmAttachInfoTable;
+    private JScrollPane deviceScrollPane;
+
+
+    private JButton btnGetSCADAAttribute; // 获取点位信息
+    private boolean isListen = false;
+
+
+    ///////////////////// 主面板 /////////////////////
+
+    private static JFrame mainFrame = new JFrame();
+    private OperateManager manager = new OperateManager();
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                try {
+                    SCADADemo frame = new SCADADemo();
+                    frame.setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * enable button
+     *
+     * @param enable
+     */
+    public void setButtonEnable(boolean enable) {
+        btnLogin.setEnabled(enable);
+        btnLogout.setEnabled(enable);
+        btnGetDeviceList.setEnabled(enable);
+        btnAlarmAttachInfo.setEnabled(enable);
+        btnAttachInfo.setEnabled(enable);
+        btnGetSCADAAttribute.setEnabled(enable);
+        btnStartListen.setEnabled(enable);
+
+    }
+
+
+    private boolean isAlarmAttachInfo = false;
+    private boolean isAttachInfo = false;
+
+    /**
+     * 登录
+     */
+    public boolean login() {
+        if (LoginModule.login(ipTextField.getText(), Integer.parseInt(portTextField.getText()),
+                userNameTextField.getText(), new String(passwordField.getPassword()))) {
+            setButtonEnable(true); // login succeed,enable related button
+            btnLogin.setEnabled(false);
+            // 监听按钮使能
+        } else {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 登出
+     */
+    public void logout() {
+        if (LoginModule.logout()) {
+            setButtonEnable(false); // 所有按钮置灰
+            btnLogin.setEnabled(true);
+            if (isListen) {
+                stopListen();
+                isListen = false;
+            }
+
+            if (isAlarmAttachInfo) {
+                scadaDetachInfo();
+                isAlarmAttachInfo = false;
+            }
+            if (isAttachInfo) {
+                scadaAlarmDetachInfo();
+                isAttachInfo = false;
+            }
+
+            //清空表格
+            //普通事件table清空数据
+            ((DefaultTableModel) alarmTable.getModel()).setRowCount(0);
+
+            // 设备列表table清空数据
+            ((DefaultTableModel) devicesDataTable.getModel()).setRowCount(0);
+
+            // 监测点位实时信息table清空数据
+            ((DefaultTableModel) attachInfoDataTable.getModel()).setRowCount(0);
+
+            // 监测点位报警table清空数据
+            ((DefaultTableModel) alarmAttachInfoDataTable.getModel()).setRowCount(0);
+
+            // 点位信息table清空数据
+            ((DefaultTableModel) attributeDataTable.getModel()).setRowCount(0);
+        }
+    }
+
+
+    /**
+     * 获取当前主机接入的外部设备ID
+     */
+    Vector<String> deviceIds = new Vector<String>();
+    // 多平台 编码
+    private final static Charset encode = Charset.forName(Utils.getPlatformEncode());
+
+    public boolean getDeviceIdList() {
+        deviceIds.clear();
+
+        // model.setColumnCount(0);
+        int nCount = 64; //
+
+        NetSDKLib.NET_SCADA_DEVICE_ID_INFO[] stuDeviceIDList = new NetSDKLib.NET_SCADA_DEVICE_ID_INFO[nCount];
+        for (int i = 0; i < stuDeviceIDList.length; ++i) {
+            stuDeviceIDList[i] = new NetSDKLib.NET_SCADA_DEVICE_ID_INFO();
+        }
+
+        NetSDKLib.NET_SCADA_DEVICE_LIST stuSCADADeviceInfo = new NetSDKLib.NET_SCADA_DEVICE_LIST();
+        stuSCADADeviceInfo.nMax = nCount;
+        int nSize = stuDeviceIDList[0].size() * nCount;
+        stuSCADADeviceInfo.pstuDeviceIDInfo = new Memory(nSize);   // 监测设备信息
+        stuSCADADeviceInfo.pstuDeviceIDInfo.clear(nSize);
+        ToolKits.SetStructArrToPointerData(stuDeviceIDList, stuSCADADeviceInfo.pstuDeviceIDInfo);
+        if (queryDevState(NetSDKLib.NET_DEVSTATE_SCADA_DEVICE_LIST, stuSCADADeviceInfo)) {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+
+        if (stuSCADADeviceInfo.nRet == 0) {
+            System.out.println("当前主机接入的外部设备ID有效个数为0.");                        // 外部设备没有有效ID
+            return false;
+        }
+
+        // 从 Pointer 提取数据
+        ToolKits.GetPointerDataToStructArr(stuSCADADeviceInfo.pstuDeviceIDInfo, stuDeviceIDList);
+        // 打印数据并更新设备ID
+        System.out.println("获取当前主机接入的外部设备ID的有效个数:" + stuSCADADeviceInfo.nRet);
+        if (null != devicesDataTable) {
+            DefaultTableModel model = (DefaultTableModel) devicesDataTable.getModel();
+            model.getDataVector().clear();// 清空所有数据
+            for (int i = 0; i < stuSCADADeviceInfo.nRet; ++i) {
+                String deviceID = "";
+                String deviceName = "";
+
+                deviceName = new String(stuDeviceIDList[i].szDevName, encode).trim();
+                deviceID = new String(stuDeviceIDList[i].szDeviceID, encode).trim();
+                System.out.printf("外部设备[%d] 设备id[%s] 设备名称[%s]\n", i,
+                        new String(stuDeviceIDList[i].szDeviceID, encode).trim(), deviceName);
+
+
+                deviceIds.add(deviceID);
+                model.addRow(new Object[]{deviceID, deviceName});
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * 查询设备状态
+     */
+    public boolean queryDevState(int nType, NetSDKLib.SdkStructure stuInfo) {
+
+        IntByReference intRetLen = new IntByReference();
+        stuInfo.write();
+        if (!LoginModule.netsdk.CLIENT_QueryDevState(m_hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) {
+            return true;
+        }
+        stuInfo.read();
+        return false;
+    }
+
+
+    /**
+     * 订阅监测点位报警
+     */
+    public void scadaAlarmAttachInfo() {
+
+        if (!isAlarmAttachInfo) {
+            // 入参
+            NetSDKLib.NET_IN_SCADA_ALARM_ATTACH_INFO stIn = new NetSDKLib.NET_IN_SCADA_ALARM_ATTACH_INFO();
+            stIn.cbCallBack = SCADAAlarmAttachInfoCallBack.getINSTANCE(alarmAttachInfoDataTable);
+            // 出参
+            NetSDKLib.NET_OUT_SCADA_ALARM_ATTACH_INFO stOut = new NetSDKLib.NET_OUT_SCADA_ALARM_ATTACH_INFO();
+
+            alarmAttachInfoHandle = LoginModule.netsdk.CLIENT_SCADAAlarmAttachInfo(m_hLoginHandle, stIn, stOut, 3000);
+
+            if (alarmAttachInfoHandle.longValue() != 0) {
+                contentPane.repaint();
+                isAlarmAttachInfo = true;
+                btnAlarmAttachInfo.setText(Res.string().getCancel()); // 取消
+            }
+        } else {
+            scadaAlarmDetachInfo();
+        }
+
+    }
+
+    /**
+     * 取消订阅监测点位报警信息
+     */
+    public void scadaAlarmDetachInfo() {
+        if (alarmAttachInfoHandle.longValue() != 0) {
+            LoginModule.netsdk.CLIENT_SCADAAlarmDetachInfo(alarmAttachInfoHandle);
+            contentPane.repaint();
+            isAlarmAttachInfo = false;
+            alarmAttachInfoHandle.setValue(0);
+            alarmAttachInfoDataModel.getDataVector().clear();
+            btnAlarmAttachInfo.setText(Res.string().getSCADAAttach()); // 订阅
+
+        }
+    }
+
+    private NetSDKLib.LLong attachInfoHandle = new NetSDKLib.LLong(0);  // 监测点位信息,订阅句柄
+    private NetSDKLib.LLong alarmAttachInfoHandle = new NetSDKLib.LLong(0);  // 监测点位报警,订阅句柄
+
+    /**
+     * 普通报警监听回调
+     */
+    private static class MessCallback implements NetSDKLib.fMessCallBack {
+        private static MessCallback INSTANCE;
+        private JTable table;
+
+        private MessCallback(JTable table) {
+            this.table = table;
+        }
+
+        public static MessCallback getInstance(JTable table) {
+            if (INSTANCE == null) {
+                INSTANCE = new MessCallback(table);
+            }
+            if (table != null) {
+                INSTANCE.table = table;
+            }
+
+            return INSTANCE;
+        }
+
+        @Override
+        public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID, Pointer pStuEvent,
+                              int dwBufLen, String strDeviceIP, NativeLong nDevicePort,
+                              Pointer dwUser) {
+            switch (lCommand) {
+
+                case NetSDKLib.NET_ALARM_SCADA_DEV_ALARM: {  // 12706 检测采集设备报警事件   "SCADADevAlarm"
+
+                    NetSDKLib.ALARM_SCADA_DEV_INFO msg = new NetSDKLib.ALARM_SCADA_DEV_INFO();
+                    ToolKits.GetPointerData(pStuEvent, msg);
+                    String deviceId = new String(msg.szDevID,encode).trim();
+                    System.out.println("[检测采集设备报警事件] nChannel :" + msg.nChannel);
+                    System.out.println("设备ID :" + deviceId);
+                    String description = new String(msg.szDesc, encode).trim();
+                    String deviceName = new String(msg.szDevName,encode).trim();
+                    System.out.println( " nAction :" + msg.nAction +
+                            " nAlarmFlag :" + msg.nAlarmFlag + "\n" + "故障设备名称" + deviceName
+                    + "\n" + "描述" + description + "时间" + msg.stuTime);
+                    if (table != null) {
+//                        NetSDKLib.ALARM_SCADA_DEV_INFO msg = new NetSDKLib.ALARM_SCADA_DEV_INFO();
+//                        ToolKits.GetPointerData(pStuEvent, msg);
+                        DefaultTableModel model = (DefaultTableModel) table.getModel();
+                        model.addRow(new Object[]{deviceId, deviceName, msg.nChannel, description});
+                    }
+                    break;
+                }
+                default:
+                    System.out.println("What's lCommand: " + lCommand);
+                    break;
+
+            }
+
+            return true;
+        }
+    }
+
+    /**
+     * 订阅监测点位实时信息
+     */
+    public void scadaAttachInfo() {
+        if (!isBtnAttachInfo) {
+
+            // 入参
+            NetSDKLib.NET_IN_SCADA_ATTACH_INFO stIn = new NetSDKLib.NET_IN_SCADA_ATTACH_INFO();
+            stIn.cbCallBack = SCADAAttachInfoCallBack.getInstance(attachInfoDataTable);
+            // 出参
+            System.err.println("登录句柄: " + m_hLoginHandle);
+            NetSDKLib.NET_OUT_SCADA_ATTACH_INFO stOut = new NetSDKLib.NET_OUT_SCADA_ATTACH_INFO();
+            attachInfoHandle = LoginModule.netsdk.CLIENT_SCADAAttachInfo(m_hLoginHandle, stIn, stOut, 3000);
+            if (attachInfoHandle.longValue() != 0) {
+                contentPane.repaint();
+                isBtnAttachInfo = true;
+                btnAttachInfo.setText(Res.string().getCancel()); // 取消
+                System.out.println("CLIENT_SCADAAttachInfo: 订阅监测点位实时信息成功!");
+            } else {
+                JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+        } else {
+            scadaDetachInfo();
+        }
+    }
+
+
+    /**
+     * 获取设备点位信息
+     */
+    public void getDeviceAttribute() throws UnsupportedEncodingException {
+        Map<Integer, String> num2PointType = new HashMap<Integer, String>(6);
+        num2PointType.put(0, "UNKNOWN");
+        num2PointType.put(1, "ALL");
+        num2PointType.put(2, "YC");
+        num2PointType.put(3, "YX");
+        num2PointType.put(4, "YT");
+        num2PointType.put(5, "YK");
+        DefaultTableModel model = (DefaultTableModel) attributeDataTable.getModel();
+        model.getDataVector().clear(); // 清空所有数据
+        for (int i = 0; i < deviceIds.size(); i++) {
+            String deviceId = deviceIds.get(i);
+            int nMaxAttributeInfoNum = 20;
+            NET_IN_SCADA_GET_ATTRIBUTE_INFO inParam = new NET_IN_SCADA_GET_ATTRIBUTE_INFO(); // 获取设备点位信息 入参
+            NET_OUT_SCADA_GET_ATTRIBUTE_INFO outParam = new NET_OUT_SCADA_GET_ATTRIBUTE_INFO(); // 获取设备点位信息 出参
+            NET_GET_CONDITION_INFO conditionInfo = new NET_GET_CONDITION_INFO(); // 获取条件
+            conditionInfo.szDeviceID = deviceIds.get(i).getBytes();
+            conditionInfo.bIsSendID = 1;
+            outParam.nMaxAttributeInfoNum = nMaxAttributeInfoNum;
+            NET_ATTRIBUTE_INFO attributeInfo = new NET_ATTRIBUTE_INFO(); // 设备点位信息(内存由用户申请)
+
+            outParam.pstuAttributeInfo = new Memory(nMaxAttributeInfoNum * attributeInfo.size());
+            inParam.stuCondition = conditionInfo;
+            inParam.write();
+            outParam.write();
+            boolean ret = LoginModule.netsdk.CLIENT_SCADAGetAttributeInfo(m_hLoginHandle, inParam.getPointer(), outParam.getPointer(), 3000);
+            inParam.read();
+            outParam.read();
+
+            if (ret) {
+                System.out.println("SCADAGetAttributeInfo succeed!");
+                outParam.read();
+                int retAttributeInfoNum = outParam.nRetAttributeInfoNum;
+                System.out.println(outParam);
+
+                NET_ATTRIBUTE_INFO infos[] = new NET_ATTRIBUTE_INFO[retAttributeInfoNum];
+                for (int j = 0; j < retAttributeInfoNum; j++) {
+                    infos[j] = new NET_ATTRIBUTE_INFO();
+                }
+                System.err.println("infos 大小: " + infos.length);
+                ToolKits.GetPointerDataToStructArr(outParam.pstuAttributeInfo, infos);
+
+                for (int n = 0; n < retAttributeInfoNum; n++) {
+                    NET_ATTRIBUTE_INFO out = new NET_ATTRIBUTE_INFO();
+                    out = infos[n];
+                    model.addRow(new Object[]{deviceId, new String(out.szSignalName, encode).trim(), out.nDelay, out.bIsValid, num2PointType.get(out.emPointType)});
+
+                    System.out.println("设备ID:" + deviceId
+                            + "\n" + "点位类型: " + num2PointType.get(out.emPointType)
+                            + "\n" + "点位名称: " + new String(out.szSignalName, encode).trim()
+                            + "\n" + "时延: " + out.nDelay);
+
+                }
+            } else {
+                JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+        }
+
+
+    }
+
+    /**
+     * 取消订阅监测点位实时信息
+     */
+    public void scadaDetachInfo() {
+        if (attachInfoHandle.longValue() != 0) {
+            LoginModule.netsdk.CLIENT_SCADADetachInfo(attachInfoHandle);
+            //attachInfoHandle.setValue(0);
+            contentPane.repaint();
+            isBtnAttachInfo = false;
+            attachInfoDataModel.getDataVector().clear();
+            btnAttachInfo.setText(Res.string().getSCADAAttach()); // 订阅
+            System.out.println("CLIENT_SCADADetachInfo: 取消订阅监测点位实时信息成功!");
+        }
+    }
+
+
+    /**
+     * 订阅报警信息
+     */
+    public void startListenEx() {
+        if (!isListen) {
+
+            LoginModule.netsdk.CLIENT_SetDVRMessCallBack(MessCallback.getInstance(alarmTable), null); // set alarm listen callback
+
+            boolean b = LoginModule.netsdk.CLIENT_StartListenEx(m_hLoginHandle);
+            if (b) {
+                isListen = true;
+                contentPane.repaint();
+                btnStartListen.setText(Res.string().getCancel());
+                //btnStopListen.setEnabled(true);
+                System.out.println("CLIENT_StartListenEx success.");
+            }
+        } else {
+            stopListen();
+        }
+
+    }
+
+    public JTable tableInit(Object[][] data, String[] columnName) {
+        JTable table;
+        DefaultTableModel model;
+        model = new DefaultTableModel(data, columnName);
+        table = new JTable(model) {
+            @Override // 不可编辑
+            public boolean isCellEditable(int row, int column) {
+                return false;
+            }
+        };
+
+        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 只能选中一行
+        // 列表显示居中
+        DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+        dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+        table.setDefaultRenderer(Object.class, dCellRenderer);
+        return table;
+    }
+
+
+    /**
+     * 停止监听
+     */
+    public void stopListen() {
+        if (isListen) {
+            if (LoginModule.netsdk.CLIENT_StopListen(m_hLoginHandle)) {
+                isListen = false;
+                contentPane.repaint();
+                alarmModel.getDataVector().clear();
+                btnStartListen.setText(Res.string().getStart());
+
+            }
+        }
+
+    }
+
+    // 获取界面窗口
+    private static JFrame frame = new JFrame();
+
+
+    /**
+     * Create Frame
+     */
+    public SCADADemo() {
+        setTitle(Res.string().getSCADA());
+        setBounds(100, 100, 920, 750);
+        contentPane = new JPanel();
+        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
+        setContentPane(contentPane);
+        contentPane.setLayout(null);
+        setResizable(true);
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        LoginModule.init(DefaultDisConnect.GetInstance(), DefaultHaveReconnect.getINSTANCE());
+        JPanel panel = new JPanel();
+        panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), Res.string().getLogin(),
+                TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        panel.setBounds(0, 0, 905, 46);
+        contentPane.add(panel);
+        panel.setLayout(null);
+
+        JLabel ipLabel = new JLabel(Res.string().getIp());
+        ipLabel.setBounds(10, 15, 44, 21);
+        panel.add(ipLabel);
+
+        ipTextField = new JTextField();
+        ipTextField.setText("172.3.0.223"); // 172.24.31.185 172.3.4.104 172.3.4.101
+        ipTextField.setBounds(64, 15, 89, 21);
+        panel.add(ipTextField);
+        ipTextField.setColumns(10);
+
+        JLabel portLabel = new JLabel(Res.string().getPort());
+        portLabel.setBounds(174, 15, 44, 21);
+        panel.add(portLabel);
+
+        portTextField = new JTextField();
+        portTextField.setText("37777");
+        portTextField.setColumns(10);
+        portTextField.setBounds(228, 15, 66, 21);
+        panel.add(portTextField);
+
+        JLabel lblName = new JLabel(Res.string().getUserName());
+        lblName.setBounds(316, 15, 66, 21);
+        panel.add(lblName);
+
+        userNameTextField = new JTextField();
+        userNameTextField.setText("admin");
+        userNameTextField.setColumns(10);
+        userNameTextField.setBounds(383, 15, 87, 21);
+        panel.add(userNameTextField);
+
+        JLabel lblPassword = new JLabel(Res.string().getPassword());
+        lblPassword.setBounds(492, 15, 66, 21);
+        panel.add(lblPassword);
+
+        passwordField = new JPasswordField();
+        passwordField.setBounds(568, 15, 112, 21);
+        passwordField.setText("admin123");
+        panel.add(passwordField);
+
+        btnLogin = new JButton(Res.string().getLogin());
+        btnLogin.setBounds(684, 14, 99, 23);
+        panel.add(btnLogin);
+        btnLogin.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                login();
+            }
+        });
+
+        btnLogout = new JButton(Res.string().getLogout());
+        btnLogout.setBounds(785, 14, 110, 23);
+        panel.add(btnLogout);
+        btnLogout.setEnabled(false);
+        btnLogout.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                logout();
+
+
+                LoginModule.cleanup();   // 关闭工程,释放资源
+                dispose();
+                // 返回主菜单
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+
+        // 设备列表
+        JPanel devicesPanel = new JPanel();
+        devicesPanel.setBorder(new TitledBorder(null, Res.string().getSCADADeviceList(), TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        devicesPanel.setBounds(0, 50, 450, 260);
+        contentPane.add(devicesPanel);
+        devicesPanel.setLayout(new BorderLayout(0, 0));
+
+        btnGetDeviceList = new JButton(Res.string().getListBtn());
+        btnGetDeviceList.setBounds(260, 315, 100, 29);
+        contentPane.add(btnGetDeviceList);
+        btnGetDeviceList.addMouseListener(
+
+                new MouseAdapter() {
+                    @Override
+                    public void mouseClicked(MouseEvent e) {
+                        super.mouseClicked(e);
+                        getDeviceIdList();
+
+                    }
+                });
+        devicesData = new Object[0][3];
+        devicesDataTable = tableInit(devicesData, devicesDataTitle);
+        devicesDataModel = (DefaultTableModel) devicesDataTable.getModel();
+        JScrollPane deviceScrollPane = new JScrollPane(devicesDataTable);
+        deviceScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        devicesPanel.add(deviceScrollPane, BorderLayout.CENTER);
+
+
+        // 点位信息
+        JPanel pointListPanel = new JPanel();
+        pointListPanel.setBorder(new TitledBorder(null, Res.string().getSCADAPointList(), TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        pointListPanel.setBounds(0, 350, 450, 260);
+        contentPane.add(pointListPanel);
+        pointListPanel.setLayout(new BorderLayout(0, 0));
+        btnGetSCADAAttribute = new JButton(Res.string().getListBtn());
+        btnGetSCADAAttribute.setBounds(260, 615, 100, 29);
+        contentPane.add(btnGetSCADAAttribute);
+        btnGetSCADAAttribute.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                try {
+                    getDeviceAttribute();
+                } catch (UnsupportedEncodingException unsupportedEncodingException) {
+                    unsupportedEncodingException.printStackTrace();
+                }
+            }
+        });
+        attributeData = new Object[0][3];
+        attributeDataTable = tableInit(attributeData, attributeDataTitle);
+        attributeDataModel = (DefaultTableModel) attributeDataTable.getModel();
+        JScrollPane attributeDataScrollPane = new JScrollPane(attributeDataTable);
+        attributeDataScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        pointListPanel.add(attributeDataScrollPane, BorderLayout.CENTER);
+
+        // 遥测
+        JPanel attachAlarmPanel = new JPanel();
+        attachAlarmPanel.setBorder(new TitledBorder(null, Res.string().getSCADAAlarmAttachInfo(), TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        attachAlarmPanel.setBounds(450, 50, 450, 170);
+        contentPane.add(attachAlarmPanel);
+        attachAlarmPanel.setLayout(new BorderLayout(0, 0));
+        btnAlarmAttachInfo = new JButton(Res.string().getSCADAAttach());
+        btnAlarmAttachInfo.setBounds(450, 225, 100, 29);
+        contentPane.add(btnAlarmAttachInfo);
+        btnAlarmAttachInfo.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                scadaAlarmAttachInfo();
+            }
+        });
+        alarmAttachInfoData = new Object[0][3];
+        alarmAttachInfoDataTable = tableInit(alarmAttachInfoData, alarmAttachInfoDataTitle);
+        alarmAttachInfoDataModel = (DefaultTableModel) alarmAttachInfoDataTable.getModel();
+        JScrollPane alarmAttachInfoDataScrollPane = new JScrollPane(alarmAttachInfoDataTable);
+        alarmAttachInfoDataScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        attachAlarmPanel.add(alarmAttachInfoDataScrollPane, BorderLayout.CENTER);
+
+        // 普通报警
+        JPanel attachPanel = new JPanel();
+        attachPanel.setBorder(new TitledBorder(null, Res.string().getSCADAAttach(), TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        attachPanel.setBounds(450, 270, 450, 170);
+        contentPane.add(attachPanel);
+        attachPanel.setLayout(new BorderLayout(0, 0));
+        btnStartListen = new JButton(Res.string().getSCADAAttach());
+        btnStartListen.setBounds(450, 445, 100, 29);
+        contentPane.add(btnStartListen);
+        btnStartListen.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                startListenEx();
+            }
+        });
+//        btnStartListen.addMouseListener(new MouseAdapter() {
+//            @Override
+//            public void mouseClicked(MouseEvent e) {
+//                super.mouseClicked(e);
+//                isBtnStartListen = !isBtnStartListen;
+//                if (isBtnStartListen) {
+//                    startListenEx();
+//                    btnStartListen.setText(Res.string().getCancel());
+//                } else {
+//                    stopListen();
+//                    btnStartListen.setText(Res.string().getSCADAAttach());
+//                }
+//                contentPane.add(btnStartListen);
+//                contentPane.setOpaque(true);
+//                contentPane.repaint();
+//            }
+//        });
+        alarmData = new Object[0][3];
+        alarmTable = tableInit(alarmData, alarmTableTitle);
+        alarmModel = (DefaultTableModel) alarmTable.getModel();
+        JScrollPane scrollPane = new JScrollPane(alarmTable);
+        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        attachPanel.add(scrollPane, BorderLayout.CENTER);
+
+        // 遥信 订阅监测点位实时信息
+        boolean isBtnGetDeviceList = false;
+        JPanel attachInfoPanel = new JPanel();
+        attachInfoPanel.setBorder(new TitledBorder(null, Res.string().getSCADAAttachInfo(), TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        attachInfoPanel.setBounds(450, 480, 450, 170);
+        contentPane.add(attachInfoPanel);
+        attachInfoPanel.setLayout(new BorderLayout(0, 0));
+        btnAttachInfo = new JButton(Res.string().getSCADAAttach()); // 订阅
+        btnAttachInfo.setBounds(450, 655, 100, 29);
+        contentPane.add(btnAttachInfo);
+        btnAttachInfo.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent arg0) {
+                scadaAttachInfo();
+            }
+        });
+//        btnAttachInfo.addMouseListener(new MouseAdapter() {
+//            @Override
+//            public void mouseClicked(MouseEvent e) {
+//                super.mouseClicked(e);
+//                scadaAttachInfo();
+//            }
+//        });
+
+        attachInfoData = new Object[0][3];
+        attachInfoDataTable = tableInit(attachInfoData, attachInfoDataTitle);
+        attachInfoDataModel = (DefaultTableModel) attachInfoDataTable.getModel();
+        JScrollPane attachInfoDataScrollPane = new JScrollPane(attachInfoDataTable);
+        attachInfoDataScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        attachInfoPanel.add(attachInfoDataScrollPane, BorderLayout.CENTER);
+
+        setButtonEnable(false);
+        btnLogin.setEnabled(true);
+        addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                if (LoginModule.m_hLoginHandle.longValue() != 0) {
+                    logout();
+                }
+                LoginModule.cleanup();
+                dispose();
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+    }
+
+    private boolean isBtnGetDeviceList = false;
+    private boolean isBtnStartListen = false;
+    private boolean isBtnAlarmAttachInfo = false;
+    private boolean isBtnAttachInfo = false;
+    private boolean isBtnPointList = false;
+
+    // 普通订阅数据表
+    private Object[][] alarmData;
+    private JTable alarmTable;
+    private final String[] alarmTableTitle = {Res.string().getDeviceID(), Res.string().getDeviceName(), Res.string().getChannel(), Res.string().getAlarmDescribe()};
+    private DefaultTableModel alarmModel;
+
+    // 设备列表
+    private Object[][] devicesData;
+    private JTable devicesDataTable;
+    private final String[] devicesDataTitle = {Res.string().getDeviceID(), Res.string().getDeviceName()};
+    private DefaultTableModel devicesDataModel;
+
+    // 报警列表
+    private Object[][] alarmAttachInfoData;
+    private JTable alarmAttachInfoDataTable;
+    private final String[] alarmAttachInfoDataTitle = {Res.string().getDeviceID(), Res.string().getPointID(), Res.string().getAlarmDescribe(), Res.string().getCollectTime(), Res.string().getAlarmLevel()};
+    private DefaultTableModel alarmAttachInfoDataModel;
+
+
+    // 实时信息列表
+    private Object[][] attachInfoData;
+    private JTable attachInfoDataTable;
+    private final String[] attachInfoDataTitle = {Res.string().getDeviceName(), Res.string().getCollectTime(), Res.string().getPointID()};
+    private DefaultTableModel attachInfoDataModel;
+
+    // 点位信息列表
+    private Object[][] attributeData;
+    private JTable attributeDataTable;
+    private final String[] attributeDataTitle = {Res.string().getDeviceID(), Res.string().getPointName(), Res.string().getAlarmDelay(), Res.string().getIfValidSignalPoint(), Res.string().getAlarmType()};
+    private DefaultTableModel attributeDataModel;
+
+    // 设备断线通知回调
+    private DisConnect disConnectCallback = new DisConnect();
+
+    /////////////////面板///////////////////
+    // 设备断线回调: 通过 CLIENT_Init 设置该回调函数,当设备出现断线时,SDK会调用该函数
+    private static class DisConnect implements NetSDKLib.fDisConnect {
+        public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+            System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
+            // 断线提示
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    frame.setTitle(Res.string().getSCADA() + " : " + Res.string().getDisConnectReconnecting());
+                }
+            });
+        }
+    }
+
+//    // 网络连接恢复,设备重连成功回调
+//    // 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+//    private static class HaveReConnect implements NetSDKLib.fHaveReConnect {
+//        public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+//            System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+//
+//            // 重连提示
+//            SwingUtilities.invokeLater(new Runnable() {
+//                public void run() {
+//                    frame.setTitle(Res.string().getPowerEnvironmentMonitor() + " : " + Res.string().getOnline());
+//                }
+//            });
+//        }
+//    }
+
+    /**
+     * 订阅监测点位信息回调
+     */
+    private static class SCADAAttachInfoCallBack implements NetSDKLib.fSCADAAttachInfoCallBack {
+        private JTable attachInfoTable;
+        private static SCADAAttachInfoCallBack INSTANCE;
+
+        private SCADAAttachInfoCallBack(JTable attachInfoTable) {
+            this.attachInfoTable = attachInfoTable;
+        }
+
+        public static final SCADAAttachInfoCallBack getInstance(JTable table) {
+            if (INSTANCE == null) {
+                INSTANCE = new SCADAAttachInfoCallBack(table);
+            }
+            if (table != null) {
+                INSTANCE.attachInfoTable = table;
+            }
+            return INSTANCE;
+        }
+
+        @Override
+        public void invoke(NetSDKLib.LLong lLoginID, NetSDKLib.LLong lAttachHandle,
+                           NetSDKLib.NET_SCADA_NOTIFY_POINT_INFO_LIST pInfo, int nBufLen, Pointer dwUser) {
+            System.out.println("————————————————————【订阅监测点位信息回调】————————————————————");
+//            for (int i = 0; i < pInfo.nList; i++) {
+//                System.out.println(" 设备名称:" + new String(pInfo.stuList[i].szDevName).trim());
+//                System.out.println(" 点位名(与点位表的取值一致):" + new String(pInfo.stuList[i].szPointName).trim());
+//                System.out.println(" 现场监控单元ID:" + new String(pInfo.stuList[i].szFSUID).trim());
+//                System.out.println(" 点位ID:" + new String(pInfo.stuList[i].szID).trim());
+//                System.out.println(" 探测器ID:" + new String(pInfo.stuList[i].szSensorID).trim());
+//                System.out.println(" 点位类型:" + pInfo.stuList[i].emPointType);
+//                System.out.println(" 采集时间 : " + pInfo.stuList[i].stuCollectTime.toStringTime());
+//            }
+
+            //更新列表
+            if (attachInfoTable != null) {
+                DefaultTableModel model = (DefaultTableModel) attachInfoTable.getModel();
+                for (int i = 0; i < pInfo.nList; i++) {
+                    String deviceName = new String(pInfo.stuList[i].szDevName, encode).trim();
+                    String time = pInfo.stuList[i].stuCollectTime.toStringTime();
+                    System.out.println(" 设备名称:" + deviceName);
+                    System.out.println(" 采集时间:" + time);
+                    System.out.println(" 点位ID:" + new String(pInfo.stuList[i].szID).trim());
+                    model.addRow(new Object[]{deviceName, time, new String(pInfo.stuList[i].szID).trim()});
+                }
+            }
+
+            System.out.println("————————————————————【订阅监测点位信息回调】————————————————————");
+
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/CollectionFingerPrint.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/CollectionFingerPrint.java
new file mode 100644
index 0000000..a32f5de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/CollectionFingerPrint.java
@@ -0,0 +1,425 @@
+package com.netsdk.demo.frame.vto;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.event.*;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.Base64;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+public class CollectionFingerPrint extends JDialog {
+
+    private final JPanel contentPanel = new JPanel();
+    private JTextField ipTextField;
+    private JTextField portTextField;
+    private JTextField usernameTextField;
+    private JPasswordField passwordField;
+    private JLabel collectionResult;
+
+    private JButton btnLogin;
+    private JButton btnLogout;
+    private JButton btnCollection;
+
+    private byte[] packageData;
+    private int packageLen;
+    private boolean bcollectionResult = false;
+    private boolean isListen;
+
+    public byte[] getPackageData() {
+        return packageData;
+    }
+
+    public void setPackageData(byte[] packageData) {
+        this.packageData = packageData;
+
+    }
+
+    public void setLabelResult(byte[] packageData) {
+        collectionResult.setText(Base64.getEncoder().encodeToString(packageData));
+    }
+
+    public int getPackageLen() {
+        return packageLen;
+    }
+
+    public void setPackageLen(int packageLen) {
+        this.packageLen = packageLen;
+    }
+
+    public boolean isCollectionResult() {
+        return bcollectionResult;
+    }
+
+    public void setCollectionResult(boolean bcollectionResult) {
+        this.bcollectionResult = bcollectionResult;
+        //显示结果
+        collectionResult.setText(this.bcollectionResult ? "success" : "failed");
+    }
+
+    public void stopListen() {
+        //获取到信息,停止监听
+        if (loginHandler != null && loginHandler.longValue() != 0) {
+            stopListen(loginHandler);
+        }
+        //获取按钮使能
+        btnCollection.setEnabled(true);
+        //设置监听状态
+        isListen = false;
+    }
+
+    private NetSDKLib.LLong loginHandler;
+    private NetSDKLib.NET_DEVICEINFO_Ex deviceinfoEx = new NetSDKLib.NET_DEVICEINFO_Ex();
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        try {
+            CollectionFingerPrint dialog = new CollectionFingerPrint();
+            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+            dialog.setVisible(true);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Create the dialog.
+     */
+    public CollectionFingerPrint() {
+        setBounds(100, 100, 304, 397);
+        setTitle(Res.string().getVTOOperateCollectionFingerPrintTitle());
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (UnsupportedLookAndFeelException e) {
+            e.printStackTrace();
+        }
+        getContentPane().setLayout(new BorderLayout());
+        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+        getContentPane().add(contentPanel, BorderLayout.CENTER);
+        contentPanel.setLayout(null);
+        {
+            JPanel panel = new JPanel();
+            panel.setBorder(new TitledBorder(null, Res.string().getLogin(), TitledBorder.LEADING,
+                    TitledBorder.TOP, null, null));
+            panel.setBounds(10, 10, 268, 167);
+            contentPanel.add(panel);
+            panel.setLayout(null);
+            {
+                JLabel lblNewLabel = new JLabel(Res.string().getIp());
+                lblNewLabel.setBounds(10, 23, 66, 15);
+                panel.add(lblNewLabel);
+            }
+            {
+                ipTextField = new JTextField();
+                ipTextField.setText("172.23.32.61");
+                ipTextField.setBounds(103, 20, 155, 21);
+                panel.add(ipTextField);
+                ipTextField.setColumns(10);
+            }
+            {
+                JLabel lblPort = new JLabel(Res.string().getPort());
+                lblPort.setBounds(10, 48, 83, 15);
+                panel.add(lblPort);
+            }
+            {
+                portTextField = new JTextField();
+                portTextField.setText("37777");
+                portTextField.setColumns(10);
+                portTextField.setBounds(103, 45, 155, 21);
+                panel.add(portTextField);
+            }
+            {
+                JLabel lblName = new JLabel(Res.string().getUserName());
+                lblName.setBounds(10, 73, 83, 15);
+                panel.add(lblName);
+            }
+            {
+                usernameTextField = new JTextField();
+                usernameTextField.setText("admin");
+                usernameTextField.setColumns(10);
+                usernameTextField.setBounds(103, 70, 155, 21);
+                panel.add(usernameTextField);
+            }
+            {
+                JLabel lblPassword = new JLabel(Res.string().getPassword());
+                lblPassword.setBounds(10, 98, 90, 15);
+                panel.add(lblPassword);
+            }
+
+            passwordField = new JPasswordField();
+            passwordField.setBounds(103, 95, 155, 18);
+            passwordField.setText("admin123");
+            panel.add(passwordField);
+            {
+                btnLogin = new JButton(Res.string().getLogin());
+                btnLogin.setBounds(7, 134, 111, 23);
+                panel.add(btnLogin);
+                btnLogin.addMouseListener(new MouseAdapter() {
+                    @Override
+                    public void mouseClicked(MouseEvent e) {
+                        if (login()) {
+                            btnCollection.setEnabled(true);
+                        }
+                    }
+                });
+            }
+            {
+                btnLogout = new JButton(Res.string().getLogout());
+                btnLogout.setBounds(153, 134, 105, 23);
+                panel.add(btnLogout);
+                btnLogout.setEnabled(false);
+                btnLogout.addMouseListener(new MouseAdapter() {
+                    @Override
+                    public void mouseClicked(MouseEvent e) {
+                        logout();
+                    }
+                });
+            }
+        }
+        {
+            JPanel panel = new JPanel();
+            panel.setBorder(new TitledBorder(null, Res.string().getOperate(), TitledBorder.LEADING, TitledBorder.TOP,
+                    null, null));
+            panel.setBounds(10, 187, 268, 129);
+            contentPanel.add(panel);
+            panel.setLayout(null);
+            {
+                btnCollection = new JButton(Res.string().getStartCollection());
+                btnCollection.setBounds(10, 26, 227, 41);
+                panel.add(btnCollection);
+
+                collectionResult = new JLabel(Res.string().getCollectionResult());
+                collectionResult.setBounds(10, 77, 227, 26);
+                panel.add(collectionResult);
+                btnCollection.setEnabled(false);
+                final CollectionFingerPrint print = this;
+                btnCollection.addActionListener(new ActionListener() {
+                    @Override
+                    public void actionPerformed(ActionEvent e) {
+                        isListen = startListen(loginHandler, VTOMessageCallBack.getINSTANCE(null, print));
+                        if (isListen) {
+                            //下发采集信息指令
+                            if (!collectionFinger()) {
+                                stopListen(loginHandler);
+                            } else {
+                                // 使其失效
+                                btnCollection.setEnabled(false);
+                            }
+                            new Thread(new Runnable() {
+                                @Override
+                                public void run() {
+                                    try {
+                                        Thread.sleep(20000);
+                                        //等待二十秒,如果没有获取到信息,则停止获取
+                                        if (isListen) {
+                                            stopListen();
+                                        }
+
+                                    } catch (InterruptedException interruptedException) {
+                                        interruptedException.printStackTrace();
+                                    }
+                                }
+                            }).start();
+                        }
+
+                    }
+                });
+                addWindowListener(new WindowAdapter() {
+
+                    @Override
+                    public void windowClosed(WindowEvent e) {
+                        super.windowClosed(e);
+                        //已经登录
+                        if (loginHandler != null && loginHandler.longValue() != 0) {
+                            if (isListen) {
+                                //停止监听
+                                stopListen(loginHandler);
+                            }
+                            //登出
+                            logout();
+                        }
+                        //按钮复位
+                        btnLogin.setEnabled(true);
+                        btnLogout.setEnabled(false);
+                        btnCollection.setEnabled(false);
+                        //清除信息数据
+                        bcollectionResult=false;
+                        packageData=null;
+                        //清除label显示
+                        collectionResult.setText(Res.string().getCollectionResult());
+                    }
+                });
+            }
+
+        }
+        {
+            JPanel buttonPane = new JPanel();
+            buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
+            getContentPane().add(buttonPane, BorderLayout.SOUTH);
+            {
+                JButton okButton = new JButton("OK");
+                okButton.setActionCommand("OK");
+                buttonPane.add(okButton);
+                getRootPane().setDefaultButton(okButton);
+                okButton.addActionListener(new ActionListener() {
+                    @Override
+                    public void actionPerformed(ActionEvent e) {
+                        setVisible(false);
+                    }
+                });
+
+            }
+        }
+    }
+
+    /**
+     * 登录
+     */
+    public boolean login() {
+        if (login(ipTextField.getText(), Integer.parseInt(portTextField.getText()), usernameTextField.getText(),
+                new String(passwordField.getPassword()))) {
+            btnLogin.setEnabled(false);
+            btnLogout.setEnabled(true);
+            btnCollection.setEnabled(true);
+        } else {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * \if ENGLISH_LANG Login Device \else 登录设备 \endif
+     */
+    public boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
+        // IntByReference nError = new IntByReference(0);
+        // 入参
+        NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
+        pstInParam.nPort = m_nPort;
+        pstInParam.szIP = m_strIp.getBytes();
+        pstInParam.szPassword = m_strPassword.getBytes();
+        pstInParam.szUserName = m_strUser.getBytes();
+        // 出参
+        NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
+        pstOutParam.stuDeviceInfo = deviceinfoEx;
+        loginHandler = LoginModule.netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
+        if (loginHandler.longValue() == 0) {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+        } else {
+            System.out.println("Login Success [ " + m_strIp + " ]");
+        }
+
+        return loginHandler.longValue() == 0 ? false : true;
+    }
+
+    public long getLoginHandler() {
+        if (loginHandler != null) {
+            return loginHandler.longValue();
+        }
+        return 0;
+    }
+
+    /**
+     * \if ENGLISH_LANG Logout Device \else 登出设备 \endif
+     */
+    public boolean logout() {
+        if (loginHandler.longValue() == 0) {
+            return false;
+        }
+
+        boolean bRet = LoginModule.netsdk.CLIENT_Logout(loginHandler);
+        if (bRet) {
+            loginHandler.setValue(0);
+            btnLogin.setEnabled(true);
+            btnLogout.setEnabled(false);
+        } else {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+        }
+
+        return bRet;
+    }
+
+    /**
+     * 下发采集信息指令
+     *
+     * @return
+     */
+    public boolean collectionFinger() {
+        NetSDKLib.NET_CTRL_CAPTURE_FINGER_PRINT capture = new NetSDKLib.NET_CTRL_CAPTURE_FINGER_PRINT();
+        capture.nChannelID = 0;
+        System.arraycopy("1".getBytes(), 0, capture.szReaderID, 0, "1".getBytes().length);
+        Pointer pointer = new Memory(capture.size());
+        ToolKits.SetStructDataToPointer(capture, pointer, 0);
+        boolean ret = LoginModule.netsdk.CLIENT_ControlDevice(loginHandler, NetSDKLib.CtrlType.CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT, pointer, 100000);
+        if (!ret) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+
+    }
+
+    public boolean startListen(NetSDKLib.LLong loginHandler, NetSDKLib.fMessCallBack cbMessage) {
+
+        LoginModule.netsdk.CLIENT_SetDVRMessCallBack(cbMessage, null); // set alarm listen callback
+
+        if (!LoginModule.netsdk.CLIENT_StartListenEx(loginHandler)) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        } else {
+            System.out.println("CLIENT_StartListenEx success.");
+        }
+        return true;
+    }
+
+    public boolean stopListen(NetSDKLib.LLong loginHandler) {
+        if (!LoginModule.netsdk.CLIENT_StopListen(loginHandler)) {
+            JOptionPane.showMessageDialog(null, Res.string().getStopListenFailed()+","+ ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        } else {
+            System.out.println("CLIENT_StopListen success.");
+        }
+        return true;
+    }
+
+    /**
+     * 清除获取信息的状态
+     */
+    public void clearStatus() {
+        this.setPackageData(null);
+        this.setCollectionResult(false);
+        this.setPackageLen(0);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultDisConnect.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultDisConnect.java
new file mode 100644
index 0000000..3a7e17b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultDisConnect.java
@@ -0,0 +1,34 @@
+package com.netsdk.demo.frame.vto;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.fDisConnect;
+
+/**
+ * 设备断线回调函数,空实现。 建议回调函数使用单例模式
+ * 
+ * @author 47081
+ *
+ */
+public class DefaultDisConnect implements fDisConnect {
+	private static DefaultDisConnect INSTANCE;
+
+	private DefaultDisConnect() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static DefaultDisConnect GetInstance() {
+		if (INSTANCE == null) {
+			INSTANCE = new DefaultDisConnect();
+		}
+		return INSTANCE;
+	}
+
+	@Override
+	public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+		// TODO Auto-generated method stub
+		System.out.printf("Device[%s] Port[%d] DisConnectCallBack!\n", pchDVRIP, nDVRPort);
+
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultHaveReconnect.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultHaveReconnect.java
new file mode 100644
index 0000000..affdcb2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/DefaultHaveReconnect.java
@@ -0,0 +1,50 @@
+package com.netsdk.demo.frame.vto;
+
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.Res;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.fHaveReConnect;
+
+/**
+ * 网络连接恢复,设备重连成功回调 通过 CLIENT_SetAutoReconnect 设置该回调函数,当已断线的设备重连成功时,SDK会调用该函数
+ * 
+ * @author 47081
+ *
+ */
+public class DefaultHaveReconnect implements fHaveReConnect {
+	private static DefaultHaveReconnect INSTANCE;
+	private JFrame frame;
+
+	public void setFrame(JFrame frame) {
+		this.frame = frame;
+	}
+
+	private DefaultHaveReconnect() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static DefaultHaveReconnect getINSTANCE() {
+		if (INSTANCE == null) {
+			INSTANCE = new DefaultHaveReconnect();
+		}
+		return INSTANCE;
+	}
+
+	@Override
+	public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
+		System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
+
+		// 重连提示
+		SwingUtilities.invokeLater(new Runnable() {
+			public void run() {
+				if (frame != null) {
+					frame.setTitle(Res.string().getPTZ() + " : " + Res.string().getOnline());
+				}
+			}
+		});
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateInfo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateInfo.java
new file mode 100644
index 0000000..8102c69
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateInfo.java
@@ -0,0 +1,559 @@
+package com.netsdk.demo.frame.vto;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.Base64;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.event.*;
+import java.io.IOException;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import static com.netsdk.lib.NetSDKLib.CtrlType.*;
+
+public class OperateInfo extends JDialog {
+
+    private final JPanel contentPanel = new JPanel();
+    private JTextField cardNoTextField;
+    private JTextField roomNoTextField;
+    private CollectionFingerPrint fingerPrint = new CollectionFingerPrint();
+    private PaintPanel paintPanel;
+    private Memory memory;
+    private JCheckBox needFingerCheckBox;
+
+    private boolean bListen = false;
+    /**
+     * 窗口使用的类型:
+     * 0:新增卡信息
+     * 1:修改卡信息
+     */
+    private int infoType;
+    private String userId;
+    private String cardNo;
+    private String fingerPrintData;
+
+    public void setCardNoTextFieldEditEnable(boolean enable) {
+        this.cardNoTextField.setEditable(enable);
+    }
+    public void setRoomNoTextFieldEditEnable(boolean enable){
+        this.roomNoTextField.setEditable(enable);
+    }
+    public void syncData(String userId, String cardNo, String fingerPrintData) {
+        this.userId = userId;
+        this.cardNo = cardNo;
+        this.fingerPrintData = fingerPrintData;
+        if (fingerPrintData == null || fingerPrintData.trim().equals("")) {
+            needFingerCheckBox.setSelected(false);
+        } else {
+            needFingerCheckBox.setSelected(true);
+        }
+        cardNoTextField.setText(cardNo);
+        roomNoTextField.setText(userId);
+
+    }
+
+    public int getInfoType() {
+        return infoType;
+    }
+
+    public void setInfoType(int infoType) {
+        this.infoType = infoType;
+    }
+
+    public void receiveData(int infoType, String userId, String cardNo, String fingerPrintData) {
+        this.infoType = infoType;
+        //新增卡
+        if (infoType == 0) {
+            this.userId = "";
+            this.cardNo = "";
+            this.fingerPrintData = "";
+        } else if (infoType == 1) {
+            //修改卡
+            this.userId = userId;
+            this.cardNo = cardNo;
+            this.fingerPrintData = fingerPrintData;
+        }
+        this.cardNoTextField.setText(this.cardNo);
+        this.roomNoTextField.setText(this.userId);
+        if (!this.fingerPrintData.trim().equals("")) {
+            needFingerCheckBox.setSelected(true);
+        } else {
+            needFingerCheckBox.setSelected(false);
+        }
+    }
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        try {
+            OperateInfo dialog = new OperateInfo();
+            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+            dialog.setVisible(true);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Create the dialog.
+     */
+    public OperateInfo() {
+        setTitle(Res.string().getVTOOperateInfoTitle());
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (UnsupportedLookAndFeelException e) {
+            e.printStackTrace();
+        }
+        setBounds(100, 100, 476, 294);
+        getContentPane().setLayout(new BorderLayout());
+        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+        getContentPane().add(contentPanel, BorderLayout.CENTER);
+        contentPanel.setLayout(null);
+        {
+            JPanel panel = new JPanel();
+            panel.setBorder(new TitledBorder(null, Res.string().getCardInfo(), TitledBorder.LEFT, TitledBorder.TOP,
+                    null, null));
+            panel.setBounds(0, 0, 285, 87);
+            contentPanel.add(panel);
+            panel.setLayout(null);
+            {
+                JLabel lblNewLabel = new JLabel(Res.string().getCardNo());
+                lblNewLabel.setBounds(10, 22, 89, 15);
+                panel.add(lblNewLabel);
+            }
+            {
+                cardNoTextField = new JTextField();
+                cardNoTextField.setBounds(111, 19, 164, 21);
+                panel.add(cardNoTextField);
+                cardNoTextField.setColumns(10);
+            }
+            {
+                JLabel lblNewLabel_1 = new JLabel(Res.string().getVTOOperateManagerRoomNo());
+                lblNewLabel_1.setBounds(10, 62, 96, 15);
+                panel.add(lblNewLabel_1);
+            }
+            {
+                roomNoTextField = new JTextField();
+                roomNoTextField.setColumns(10);
+                roomNoTextField.setBounds(111, 59, 164, 21);
+                panel.add(roomNoTextField);
+            }
+        }
+
+        needFingerCheckBox = new JCheckBox(Res.string().getNeedFingerPrint());
+        needFingerCheckBox.setSelected(true);
+        needFingerCheckBox.setBounds(6, 106, 190, 23);
+        contentPanel.add(needFingerCheckBox);
+
+
+        JPanel panel = new JPanel();
+        panel.setBorder(new TitledBorder(null, Res.string().getFingerPrint(), TitledBorder.LEFT,
+                TitledBorder.TOP, null, null));
+        panel.setBounds(0, 135, 285, 84);
+        contentPanel.add(panel);
+        panel.setLayout(null);
+
+        JLabel lblNewLabel_2 = new JLabel(Res.string().getFingerPrint());
+        lblNewLabel_2.setBounds(10, 35, 109, 28);
+        panel.add(lblNewLabel_2);
+
+        final JButton btnGetFinger = new JButton(Res.string().getGet());
+        btnGetFinger.setBounds(129, 38, 93, 23);
+        panel.add(btnGetFinger);
+        btnGetFinger.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                if (fingerPrint == null) {
+                    fingerPrint = new CollectionFingerPrint();
+                    fingerPrint.setVisible(true);
+                    fingerPrint.setFocusable(true);
+                } else {
+                    //清除信息数据
+                    fingerPrint.dispose();
+                    //显示信息对话框
+                    fingerPrint.setVisible(true);
+                }
+            }
+        });
+        needFingerCheckBox.addChangeListener(new ChangeListener() {
+            @Override
+            public void stateChanged(ChangeEvent e) {
+                //获取事件源
+                JCheckBox checkBox = (JCheckBox) e.getSource();
+                //选中
+                if (checkBox.isSelected()) {
+                    btnGetFinger.setEnabled(true);
+                } else {
+                    btnGetFinger.setEnabled(false);
+                }
+            }
+        });
+
+        {
+            paintPanel = new PaintPanel();
+            paintPanel.setBackground(Color.GRAY);
+            paintPanel.setBorder(new TitledBorder(null, Res.string().getFaceInfo(), TitledBorder.LEADING,
+                    TitledBorder.TOP, null, null));
+            paintPanel.setBounds(295, 10, 155, 209);
+            contentPanel.add(paintPanel);
+            paintPanel.setLayout(null);
+            {
+                JButton open = new JButton(Res.string().getOpen());
+                open.setBounds(26, 90, 93, 23);
+                paintPanel.add(open);
+                // 选择图片,获取图片的信息
+                open.addActionListener(new ActionListener() {
+                    @Override
+                    public void actionPerformed(ActionEvent arg0) {
+                        String picPath = "";
+
+                        // 选择图片,获取图片路径,并在界面显示
+                        picPath = ToolKits.openPictureFile(paintPanel);
+
+                        if (!picPath.equals("")) {
+                            try {
+                                memory = ToolKits.readPictureFile(picPath);
+                            } catch (IOException e) {
+                                // TODO Auto-generated catch block
+                                e.printStackTrace();
+                            }
+                        }
+
+                    }
+                });
+            }
+        }
+        {
+            JPanel buttonPane = new JPanel();
+            buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
+            getContentPane().add(buttonPane, BorderLayout.SOUTH);
+            {
+                JButton okButton = new JButton("OK");
+                okButton.setActionCommand("OK");
+                buttonPane.add(okButton);
+                getRootPane().setDefaultButton(okButton);
+                okButton.addMouseListener(new MouseAdapter() {
+                    @Override
+                    public void mouseClicked(MouseEvent e) {
+                        super.mouseClicked(e);
+                        //获取到信息
+                        if (fingerPrint.isCollectionResult()) {
+                            fingerPrintData = Base64.getEncoder().encodeToString(fingerPrint.getPackageData()).trim();
+                        }
+                        if (infoType == 0) {
+                            //新增卡信息
+                            if (!checkCardNo(cardNoTextField.getText().trim().getBytes(), true)) {
+                                //卡号已存在
+                                return;
+                            }
+                            //添加失败,直接返回,不隐藏窗口
+                            if (!addCard(cardNoTextField.getText().trim().getBytes(), roomNoTextField.getText().getBytes(), needFingerCheckBox.isSelected() ? 1 : 0, fingerPrintData)) {
+                                return;
+                            }
+
+                        } else if (infoType == 1) {
+                            //修改卡信息
+                            if (!checkCardNo(cardNoTextField.getText().trim().getBytes(), false)) {
+                                //卡号不存在,不能修改
+                                return;
+                            }
+                            //修改失败,则直接返回,不隐藏界面
+                            if (!modifyCard(cardNoTextField.getText().trim().getBytes(), roomNoTextField.getText().trim().getBytes(), needFingerCheckBox.isSelected() ? 1 : 0, fingerPrintData)) {
+                                return;
+                            }
+                        }
+                        dispose();
+                    }
+                });
+            }
+            {
+                JButton cancelButton = new JButton("Cancel");
+                cancelButton.setActionCommand("Cancel");
+                buttonPane.add(cancelButton);
+                cancelButton.addMouseListener(new MouseAdapter() {
+                    @Override
+                    public void mouseClicked(MouseEvent e) {
+                        super.mouseClicked(e);
+                        dispose();
+                    }
+                });
+            }
+            addWindowListener(new WindowAdapter() {
+                @Override
+                public void windowClosed(WindowEvent e) {
+                    super.windowClosed(e);
+                    //清除信息状态
+                    if (fingerPrint.isCollectionResult()) {
+                        fingerPrint.clearStatus();
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * 检查下卡号是否存在
+     * true:不存在
+     * false:存在
+     *
+     * @param type true:卡存在即弹窗
+     * @return
+     */
+    public boolean checkCardNo(byte[] cardNo, boolean type) {
+        if (cardNo.length == 0) {
+            JOptionPane.showMessageDialog(null, Res.string().getInputCardNo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+
+        //check whether the card number already exists查询一下卡号是否已经存在
+        NetSDKLib.NET_IN_FIND_RECORD_PARAM inParam = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+        inParam.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;
+        //查询条件
+        NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION condition = new NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION();
+        //卡号查询有效
+        condition.abCardNo = 1;
+        if (cardNo.length > condition.szCardNo.length - 1) {
+            JOptionPane.showMessageDialog(null, Res.string().getCardNoExceedLength(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        System.arraycopy(cardNo, 0, condition.szCardNo, 0, cardNo.length);
+        inParam.pQueryCondition = new Memory(condition.size());
+        ToolKits.SetStructDataToPointer(condition, inParam.pQueryCondition, 0);
+        NetSDKLib.NET_OUT_FIND_RECORD_PARAM outParam = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+        boolean startFind = LoginModule.netsdk.CLIENT_FindRecord(LoginModule.m_hLoginHandle, inParam, outParam, 5000);
+        if (!startFind) {
+            JOptionPane.showMessageDialog(null, Res.string().getQueryCardExistFailed(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        //查询卡号是否已存在
+        int max = 1;
+        NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM inNextParam = new NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM();
+        inNextParam.lFindeHandle = outParam.lFindeHandle;
+        inNextParam.nFileCount = max;
+        NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM outNextParam = new NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM();
+        outNextParam.nMaxRecordNum = max;
+        NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD[] card = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD[1];
+        card[0] = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD();
+        outNextParam.pRecordList = new Memory(card[0].size() * max);
+        ToolKits.SetStructArrToPointerData(card, outNextParam.pRecordList);
+        LoginModule.netsdk.CLIENT_FindNextRecord(inNextParam, outNextParam, 5000);
+        if (outNextParam.nRetRecordNum != 0 && type) {
+            //卡号已存在
+            JOptionPane.showMessageDialog(null, Res.string().getFindCardExist(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            //停止查询
+            LoginModule.netsdk.CLIENT_FindRecordClose(outParam.lFindeHandle);
+            return false;
+        }
+        //停止查询
+        LoginModule.netsdk.CLIENT_FindRecordClose(outParam.lFindeHandle);
+        return true;
+    }
+
+    /**
+     * 新增卡
+     */
+    public boolean addCard(byte[] cardNo, byte[] userID, int enableFinger, String fingerPrintData) {
+        if (cardNo.length == 0) {
+            JOptionPane.showMessageDialog(null, Res.string().getInputCardNo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        if (userID.length == 0) {
+            JOptionPane.showMessageDialog(null, Res.string().getInputRoomNo(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        if (memory == null) {
+            JOptionPane.showMessageDialog(null, Res.string().getChooseFacePic(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD card = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD();
+        if (cardNo.length > card.szCardNo.length - 1) {
+            JOptionPane.showMessageDialog(null, Res.string().getCardNoExceedLength(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        if (userID.length > card.szUserID.length - 1) {
+            JOptionPane.showMessageDialog(null, Res.string().getRoomNoExceedLength(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        System.arraycopy(cardNo, 0, card.szCardNo, 0, cardNo.length);
+        System.arraycopy(userID, 0, card.szUserID, 0, userID.length);
+
+        card.nDoorNum = 1;
+        card.sznDoors[0] = 0;
+        if (enableFinger == 1) {
+            //信息不存在
+            if (fingerPrintData == null || fingerPrintData.trim().equals("")) {
+                JOptionPane.showMessageDialog(null, Res.string().getFingerPrintIdNotExist(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+            //base64 string to bytes
+            byte[] bytes = Base64.getDecoder().decode(fingerPrintData);
+            //增加信息
+            card.bEnableExtended = 1;
+            card.stuFingerPrintInfoEx.nCount = 1;
+            card.stuFingerPrintInfoEx.nLength = bytes.length;
+            card.stuFingerPrintInfoEx.nPacketLen = bytes.length;
+            card.stuFingerPrintInfoEx.pPacketData = new Memory(bytes.length);
+            card.stuFingerPrintInfoEx.pPacketData.clear(bytes.length);
+
+            card.stuFingerPrintInfoEx.pPacketData.write(0, bytes, 0, bytes.length);
+        } else {
+            card.bEnableExtended = 0;
+        }
+
+        NetSDKLib.NET_CTRL_RECORDSET_INSERT_PARAM inParam = new NetSDKLib.NET_CTRL_RECORDSET_INSERT_PARAM();
+        inParam.stuCtrlRecordSetInfo.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;
+        inParam.stuCtrlRecordSetInfo.nBufLen = card.size();
+        inParam.stuCtrlRecordSetInfo.pBuf = new Memory(card.size());
+        ToolKits.SetStructDataToPointer(card, inParam.stuCtrlRecordSetInfo.pBuf, 0);
+        Pointer pointer = new Memory(inParam.size());
+        ToolKits.SetStructDataToPointer(inParam, pointer, 0);
+        // 插入信息必须用  CTRLTYPE_CTRL_RECORDSET_INSERTEX,不能用 CTRLTYPE_CTRL_RECORDSET_INSERT
+        boolean res = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, CTRLTYPE_CTRL_RECORDSET_INSERTEX, pointer, 5000);
+        if (!res) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return res;
+        }
+        ToolKits.GetPointerData(pointer, inParam);
+
+        if (memory != null) {
+            //增加人脸图片
+            NetSDKLib.NET_IN_ADD_FACE_INFO inAddFaceInfo = new NetSDKLib.NET_IN_ADD_FACE_INFO();
+            System.arraycopy(userID, 0, inAddFaceInfo.szUserID, 0, userID.length);
+            inAddFaceInfo.stuFaceInfo.nFacePhoto = 1;
+            inAddFaceInfo.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
+            inAddFaceInfo.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = new Memory(memory.size());
+            inAddFaceInfo.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto.write(0, memory.getByteArray(0, (int) memory.size()), 0, (int) memory.size());
+            inAddFaceInfo.stuFaceInfo.nRoom = 1;
+            System.arraycopy(userID, 0, inAddFaceInfo.stuFaceInfo.szRoomNoArr[0].szRoomNo, 0, userID.length);
+
+            NetSDKLib.NET_OUT_ADD_FACE_INFO outAddFaceInfo = new NetSDKLib.NET_OUT_ADD_FACE_INFO();
+            Pointer outFaceParam = new Memory(outAddFaceInfo.size());
+            ToolKits.SetStructDataToPointer(outAddFaceInfo, outFaceParam, 0);
+            Pointer inFace = new Memory(inAddFaceInfo.size());
+            ToolKits.SetStructDataToPointer(inAddFaceInfo, inFace, 0);
+            boolean result = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, NetSDKLib.EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD,
+                    inFace, outFaceParam, 10000);
+            if (!result) {
+                JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+        }
+        return true;
+
+    }
+
+    /**
+     * 修改卡信息
+     *
+     * @param cardNo 卡号
+     * @param userID 房间号
+     * @param enableFinger 是否使用信息
+     * @param fingerPrintData 信息数据,Base64编码字符串
+     */
+    public boolean modifyCard(byte[] cardNo, byte[] userID, int enableFinger, String fingerPrintData) {
+        //modify card
+        NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD card = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD();
+        NetSDKLib.NET_CTRL_RECORDSET_PARAM inParam = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+        inParam.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;
+        card.nDoorNum = 1;
+        card.sznDoors[0] = 0;
+        System.arraycopy(cardNo, 0, card.szCardNo, 0, cardNo.length);
+        System.arraycopy(userID, 0, card.szUserID, 0, userID.length);
+        if (enableFinger == 1) {
+            //信息不存在,输入信息
+            if (fingerPrintData == null || fingerPrintData.trim().equals("")) {
+                JOptionPane.showMessageDialog(null, Res.string().getFingerPrintIdNotExist(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+                return false;
+            }
+            byte[] data = Base64.getDecoder().decode(fingerPrintData);
+            //modify finger print
+            card.bEnableExtended = 1;
+            card.stuFingerPrintInfoEx.nCount = 1;
+            card.stuFingerPrintInfoEx.nLength = data.length;
+            card.stuFingerPrintInfoEx.nPacketLen = data.length;
+            card.stuFingerPrintInfoEx.pPacketData = new Memory(data.length);
+            card.stuFingerPrintInfoEx.pPacketData.clear(data.length);
+            card.stuFingerPrintInfoEx.pPacketData.write(0, data, 0, data.length);
+        } else {
+            card.bEnableExtended = 0;
+        }
+        inParam.pBuf = new Memory(card.size());
+        ToolKits.SetStructDataToPointer(card, inParam.pBuf, 0);
+
+        Pointer pointer = new Memory(inParam.size());
+        ToolKits.SetStructDataToPointer(inParam, pointer, 0);
+
+        boolean res = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, CTRLTYPE_CTRL_RECORDSET_UPDATEEX, pointer, 10000);
+        if (!res) {
+            JOptionPane.showMessageDialog(null, Res.string().getFailedModifyCard() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return res;
+        }
+        //modify face
+        if (memory != null) {
+            NetSDKLib.NET_IN_UPDATE_FACE_INFO inUpdateFaceInfo = new NetSDKLib.NET_IN_UPDATE_FACE_INFO();
+            System.arraycopy(userID, 0, inUpdateFaceInfo.szUserID, 0, userID.length);
+            inUpdateFaceInfo.stuFaceInfo.nFacePhoto = 1;
+            inUpdateFaceInfo.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
+            //inUpdateFaceInfo.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto=memory;
+            inUpdateFaceInfo.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = new Memory(memory.size());
+            inUpdateFaceInfo.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto.write(0, memory.getByteArray(0, (int) memory.size()), 0, (int) memory.size());
+            inUpdateFaceInfo.stuFaceInfo.nRoom = 1;
+            System.arraycopy(userID, 0, inUpdateFaceInfo.stuFaceInfo.szRoomNoArr[0].szRoomNo, 0, userID.length);
+
+            NetSDKLib.NET_OUT_UPDATE_FACE_INFO outUpdateFaceInfo = new NetSDKLib.NET_OUT_UPDATE_FACE_INFO();
+            Pointer inUpdateParam = new Memory(inUpdateFaceInfo.size());
+            ToolKits.SetStructDataToPointer(inUpdateFaceInfo, inUpdateParam, 0);
+            Pointer outUpdateParam = new Memory(outUpdateFaceInfo.size());
+            ToolKits.SetStructDataToPointer(outUpdateFaceInfo, outUpdateParam, 0);
+            boolean result = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, NetSDKLib.EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE, inUpdateParam, outUpdateParam, 5000);
+            if (!result) {
+                JOptionPane.showMessageDialog(null, Res.string().getFailedModifyCard() +","+ ToolKits.getErrorCodeShow(),
+                        Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+                return result;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 清除人脸图片
+     */
+    public void clearImage() {
+        paintPanel.setOpaque(false);
+        paintPanel.setImage(null);
+        paintPanel.repaint();
+        memory = null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateManager.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateManager.java
new file mode 100644
index 0000000..b4fd7cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/OperateManager.java
@@ -0,0 +1,518 @@
+package com.netsdk.demo.frame.vto;
+
+import java.awt.BorderLayout;
+import java.awt.EventQueue;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+import com.netsdk.common.Base64;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import static com.netsdk.lib.NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;
+import static com.netsdk.lib.NetSDKLib.NET_DEVSTATE_DEV_RECORDSET_EX;
+
+public class OperateManager extends JDialog {
+
+    private NetSDKLib.LLong lFindHandle;
+
+    private JPanel contentPane;
+    private OperateInfo info;
+    private JTextField textField;
+    private JTable table;
+    private Object[][] data;
+    private String[] tableTitle = {
+            Res.string().getVTOOperateManagerRecNo(),
+            Res.string().getVTOOperateManagerRoomNo(),
+            Res.string().getVTOOperateManagerCardNo(),
+            Res.string().getVTOOperateManagerFingerPrintData()
+    };
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                try {
+                    OperateManager dialogManager = new OperateManager();
+                    dialogManager.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+                    dialogManager.setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * Create the frame.
+     */
+    public OperateManager() {
+        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        setTitle(Res.string().getVTOOperateManagerTitle());
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (UnsupportedLookAndFeelException e) {
+            e.printStackTrace();
+        }
+        setBounds(100, 100, 547, 414);
+        contentPane = new JPanel();
+        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
+        setContentPane(contentPane);
+        contentPane.setLayout(null);
+
+        JPanel panel = new JPanel();
+        panel.setBorder(new TitledBorder(null, Res.string().getCardInfo(), TitledBorder.LEFT,
+                TitledBorder.TOP, null, null));
+        panel.setBounds(0, 10, 328, 356);
+        contentPane.add(panel);
+        panel.setLayout(new BorderLayout(0, 0));
+
+        JScrollPane scrollPane = new JScrollPane();
+        panel.add(scrollPane, BorderLayout.CENTER);
+        data = new Object[0][5];
+        table = tableInit(data, tableTitle);
+        scrollPane.setViewportView(table);
+
+        JLabel lblNewLabel = new JLabel(Res.string().getVTORealLoadCardNo());
+        lblNewLabel.setBounds(338, 24, 95, 20);
+        contentPane.add(lblNewLabel);
+
+        textField = new JTextField();
+        textField.setBounds(338, 54, 136, 21);
+        contentPane.add(textField);
+        textField.setColumns(10);
+
+        JButton btnSearch = new JButton(Res.string().getSearch());
+        btnSearch.setBounds(338, 85, 136, 23);
+        contentPane.add(btnSearch);
+        btnSearch.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                search();
+            }
+        });
+
+        JButton btnAdd = new JButton(Res.string().getAdd());
+        btnAdd.setBounds(338, 138, 136, 23);
+        contentPane.add(btnAdd);
+
+        btnAdd.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                if (info == null) {
+                    info = new OperateInfo();
+                    info.addWindowListener(new WindowAdapter() {
+                        @Override
+                        public void windowClosed(WindowEvent e) {
+                            super.windowClosed(e);
+                            search();
+                        }
+                    });
+                }
+                info.setVisible(true);
+                //设置卡号可编辑
+                info.setCardNoTextFieldEditEnable(true);
+                //设置房间号可编辑
+                info.setRoomNoTextFieldEditEnable(true);
+                info.setFocusable(true);
+                //新增卡
+                info.receiveData(0, "", "", "");
+                info.clearImage();
+            }
+        });
+        JButton btnModify = new JButton(Res.string().getModify());
+        btnModify.setBounds(338, 193, 136, 23);
+        contentPane.add(btnModify);
+        btnModify.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                //modify();
+                if (table.getSelectedRowCount() != 1) {
+                    JOptionPane.showMessageDialog(null, Res.string().getSelectCard(), Res.string().getErrorMessage(),
+                            JOptionPane.ERROR_MESSAGE);
+                    return;
+                }
+                if (table.getSelectedRowCount() == 1) {
+                    if (info == null) {
+                        info = new OperateInfo();
+                        info.addWindowListener(new WindowAdapter() {
+                            @Override
+                            public void windowClosed(WindowEvent e) {
+                                super.windowClosed(e);
+                                search();
+                            }
+                        });
+                    }
+                    info.setVisible(true);
+                    //设置卡号不可编辑
+                    info.setCardNoTextFieldEditEnable(false);
+                    //设置房间号不可编辑
+                    info.setRoomNoTextFieldEditEnable(false);
+                    info.setFocusable(true);
+                    //修改卡信息
+                    /**
+                     * 设置info的数据
+                     */
+                    info.receiveData(1, ((String) table.getModel().getValueAt(table.getSelectedRow(), 1)).trim(),
+                            ((String) table.getModel().getValueAt(table.getSelectedRow(), 2)).trim(),
+                            ((String) table.getModel().getValueAt(table.getSelectedRow(), 3)).trim());
+                    //清除人脸缓存数据
+                    info.clearImage();
+                    info.setVisible(true);
+                    info.setFocusable(true);
+                }
+            }
+        });
+
+        JButton btnDelete = new JButton(Res.string().getDelete());
+        btnDelete.setBounds(338, 245, 136, 23);
+        contentPane.add(btnDelete);
+        btnDelete.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                delete();
+                //更新卡数据显示
+                search();
+            }
+        });
+
+        JButton btnClear = new JButton(Res.string().getClear());
+        btnClear.setBounds(338, 303, 136, 23);
+        contentPane.add(btnClear);
+        btnClear.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                clear();
+                //更新卡数据显示
+                search();
+            }
+        });
+    }
+
+    /**
+     * 表格初始化
+     *
+     * @param data       表格数据
+     * @param columnName 表头名称
+     * @return
+     */
+    public JTable tableInit(Object[][] data, String[] columnName) {
+        JTable table;
+        DefaultTableModel model;
+        model = new DefaultTableModel(data, columnName);
+        table = new JTable(model) {
+            @Override // 不可编辑
+            public boolean isCellEditable(int row, int column) {
+                return false;
+            }
+        };
+
+        model = (DefaultTableModel) table.getModel();
+
+        /*DefaultTableCellHeaderRenderer titleRender = new DefaultTableCellHeaderRenderer();
+        titleRender.setHorizontalAlignment(JLabel.CENTER);
+        table.getTableHeader().setDefaultRenderer(titleRender);*/
+
+        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 只能选中一行
+
+        // 列表显示居中
+        DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+        dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+        table.setDefaultRenderer(Object.class, dCellRenderer);
+        return table;
+    }
+
+    /**
+     * 查询卡数据
+     */
+    public void search() {
+        if (lFindHandle != null && lFindHandle.longValue() != 0) {
+            LoginModule.netsdk.CLIENT_FindRecordClose(lFindHandle);
+            lFindHandle = null;
+        }
+        //清除table数据
+        DefaultTableModel model = (DefaultTableModel) table.getModel();
+        model.setRowCount(0);
+
+        //开始查询记录
+        NetSDKLib.NET_IN_FIND_RECORD_PARAM inParam = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+        NetSDKLib.NET_OUT_FIND_RECORD_PARAM outParam = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+        //门禁卡
+        inParam.emType = NET_RECORD_ACCESSCTLCARD;
+        NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION condition = new NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION();
+        if (textField.getText() != null && !textField.getText().equals("")) {
+            //卡号非空,为条件查询
+            condition.abCardNo = 1;
+            String cardNo = textField.getText();
+            System.arraycopy(cardNo.getBytes(), 0, condition.szCardNo, 0, cardNo.getBytes().length);
+            inParam.pQueryCondition = new Memory(condition.size());
+            ToolKits.SetStructDataToPointer(condition, inParam.pQueryCondition, 0);
+        }
+
+        boolean bRet = LoginModule.netsdk.CLIENT_FindRecord(LoginModule.m_hLoginHandle, inParam, outParam, 10000);
+        if (!bRet) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        lFindHandle = outParam.lFindeHandle;
+        //Query查询所有数据
+        queryData();
+        //结束查询
+        boolean success = LoginModule.netsdk.CLIENT_FindRecordClose(lFindHandle);
+        if (!success) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+
+        }
+    }
+
+    /**
+     * 循环遍历获取卡数据
+     */
+    public void queryData() {
+        DefaultTableModel model = (DefaultTableModel) table.getModel();
+        while (true) {
+            int max = 20;
+            //query the next batch of data 查询下一组数据
+            NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM inParam = new NetSDKLib.NET_IN_FIND_NEXT_RECORD_PARAM();
+            NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM outParam = new NetSDKLib.NET_OUT_FIND_NEXT_RECORD_PARAM();
+
+            NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD[] cards = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD[max];
+            for (int i = 0; i < max; i++) {
+                cards[i] = new NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD();
+            }
+
+            outParam.pRecordList = new Memory(cards[0].size() * max);
+            outParam.nMaxRecordNum = max;
+            inParam.lFindeHandle = lFindHandle;
+            inParam.nFileCount = max;
+            ToolKits.SetStructArrToPointerData(cards, outParam.pRecordList);
+            boolean result = LoginModule.netsdk.CLIENT_FindNextRecord(inParam, outParam, 10000);
+            //获取数据
+            ToolKits.GetPointerDataToStructArr(outParam.pRecordList, cards);
+            NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD card;
+            for (int i = 0; i < outParam.nRetRecordNum; i++) {
+                //获取到卡数据
+                card = cards[i];
+                //有信息信息,则获取信息数据
+                String fingerPrint = "";
+                card.bEnableExtended = 1;
+                card.stuFingerPrintInfoEx.nPacketLen = 2048;
+                card.stuFingerPrintInfoEx.pPacketData = new Memory(2048);
+                //获取信息信息
+                fingerPrint = getFingerPrint(card);
+
+                //更新table数据显示
+                model.addRow(new Object[]{card.nRecNo, new String(card.szUserID).trim(), new String(card.szCardNo).trim(), fingerPrint.trim()});
+            }
+            //当前查询数与最大查询数不同,则查询结束
+            if (outParam.nRetRecordNum != outParam.nMaxRecordNum || (outParam.nRetRecordNum == 0 && outParam.nMaxRecordNum == 0)) {
+                break;
+            }
+        }
+
+    }
+
+    /**
+     * 获取信息数据信息
+     *
+     * @param card
+     * @return
+     */
+    public String getFingerPrint(NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD card) {
+        NetSDKLib.NET_CTRL_RECORDSET_PARAM inp = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+        inp.emType = NET_RECORD_ACCESSCTLCARD;
+        inp.pBuf = new Memory(card.size());
+        ToolKits.SetStructDataToPointer(card, inp.pBuf, 0);
+        inp.nBufLen = card.size();
+        Pointer pointer = new Memory(inp.size());
+        ToolKits.SetStructDataToPointer(inp, pointer, 0);
+        boolean re = LoginModule.netsdk.CLIENT_QueryDevState(LoginModule.m_hLoginHandle, NET_DEVSTATE_DEV_RECORDSET_EX, pointer, inp.size(), new IntByReference(0), 5000);
+        if (re) {
+            //提取信息数据
+            ToolKits.GetPointerDataToStruct(pointer, 0, inp);
+            //获取门禁卡信息
+            ToolKits.GetPointerData(inp.pBuf, card);
+            byte[] fpData = new byte[card.stuFingerPrintInfoEx.nRealPacketLen];
+            card.stuFingerPrintInfoEx.pPacketData.read(0, fpData, 0, fpData.length);
+            //转成base64编码
+            return Base64.getEncoder().encodeToString(fpData);
+
+        } else {
+            /*JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);*/
+            System.out.println("Get Finger print data error.there is no data");
+        }
+        return "";
+    }
+
+    /**
+     * 删除卡相关信息
+     */
+    public void delete() {
+        if (table.getSelectedRowCount() != 1) {
+            JOptionPane.showMessageDialog(null, "please select a card", Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+        int nRecNo = (Integer) table.getModel().getValueAt(table.getSelectedRow(), 0);
+        //删除卡
+        if (!deleteCard(nRecNo)) {
+            return;
+        }
+        //删除人脸
+        if (!deleteFaceInfo((String) table.getModel().getValueAt(table.getSelectedRow(), 1))) {
+            return;
+        }
+    }
+
+    /**
+     * 删除卡信息
+     *
+     * @param recNo
+     * @return
+     */
+    public boolean deleteCard(int recNo) {
+
+        NetSDKLib.NET_CTRL_RECORDSET_PARAM remove = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+        remove.emType = NET_RECORD_ACCESSCTLCARD;
+        remove.pBuf = new IntByReference(recNo).getPointer();
+
+        remove.write();
+        boolean result = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle,
+                NetSDKLib.CtrlType.CTRLTYPE_CTRL_RECORDSET_REMOVE, remove.getPointer(), 5000);
+        remove.read();
+
+        if (!result) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+        return result;
+    }
+
+    /**
+     * 删除人脸(单个删除)
+     *
+     * @param userId 用户ID
+     */
+    public boolean deleteFaceInfo(String userId) {
+        int emType = NetSDKLib.EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_REMOVE;
+
+        /**
+         * 入参
+         */
+        NetSDKLib.NET_IN_REMOVE_FACE_INFO inRemove = new NetSDKLib.NET_IN_REMOVE_FACE_INFO();
+
+        // 用户ID
+        System.arraycopy(userId.getBytes(), 0, inRemove.szUserID, 0, userId.getBytes().length);
+
+        /**
+         *  出参
+         */
+        NetSDKLib.NET_OUT_REMOVE_FACE_INFO outRemove = new NetSDKLib.NET_OUT_REMOVE_FACE_INFO();
+
+        inRemove.write();
+        outRemove.write();
+        boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, inRemove.getPointer(), outRemove.getPointer(), 5000);
+        inRemove.read();
+        outRemove.read();
+        if (!bRet) {
+            JOptionPane.showMessageDialog(null, Res.string().getRemoveCardFaceFailed() + "," + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+        return bRet;
+    }
+
+    /**
+     * 清除数据
+     */
+    public void clear() {
+        //清空人脸数据
+        if (!clearFace()) {
+            return;
+        }
+        //清空卡信息
+        if (clearCard()) {
+            return;
+        }
+        //重新查询,更新界面
+        search();
+    }
+
+    /**
+     * 清除人脸(清除所有)
+     */
+    private boolean clearFace() {
+        int emType = NetSDKLib.EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_CLEAR;
+
+        /**
+         *  入参
+         */
+        NetSDKLib.NET_IN_CLEAR_FACE_INFO inClear = new NetSDKLib.NET_IN_CLEAR_FACE_INFO();
+
+        /**
+         *  出参
+         */
+        NetSDKLib.NET_OUT_REMOVE_FACE_INFO outClear = new NetSDKLib.NET_OUT_REMOVE_FACE_INFO();
+
+        inClear.write();
+        outClear.write();
+        boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, inClear.getPointer(), outClear.getPointer(), 5000);
+        inClear.read();
+        outClear.read();
+        if (!bRet) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+        return bRet;
+    }
+
+    /**
+     * 清除卡信息
+     *
+     * @return
+     */
+    private boolean clearCard() {
+        NetSDKLib.NET_CTRL_RECORDSET_PARAM clear = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+        clear.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;    // 记录集信息类型
+
+        clear.write();
+        boolean result = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle,
+                NetSDKLib.CtrlType.CTRLTYPE_CTRL_RECORDSET_CLEAR, clear.getPointer(), 5000);
+        clear.read();
+        if (!result) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+        return result;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOAnalyzerCallBack.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOAnalyzerCallBack.java
new file mode 100644
index 0000000..1aec844
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOAnalyzerCallBack.java
@@ -0,0 +1,128 @@
+package com.netsdk.demo.frame.vto;
+
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.common.SavePath;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import javax.imageio.ImageIO;
+import javax.swing.*;
+import javax.swing.table.DefaultTableModel;
+
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+
+import static com.netsdk.lib.NetSDKLib.EVENT_IVS_ACCESS_CTL;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description vto智能分析的回调函数, 建议写成单例模式
+ * 对应接口 {@link NetSDKLib#CLIENT_RealLoadPictureEx(NetSDKLib.LLong, int, int, int, Callback, Pointer, Pointer)}
+ * @date 2020/8/15
+ */
+public class VTOAnalyzerCallBack implements NetSDKLib.fAnalyzerDataCallBack {
+    private static VTOAnalyzerCallBack INSTANCE;
+    private JTable table;
+    private PaintPanel paintPanel;
+    private BufferedImage bufferedImage;
+
+    private VTOAnalyzerCallBack(JTable table,PaintPanel panel) {
+        this.table = table;
+        this.paintPanel=panel;
+    }
+
+    public static VTOAnalyzerCallBack getINSTANCE(JTable table,PaintPanel paintPanel) {
+        if (INSTANCE == null) {
+            INSTANCE = new VTOAnalyzerCallBack(table,paintPanel);
+        }
+        return INSTANCE;
+    }
+
+    @Override
+    public int invoke(NetSDKLib.LLong lAnalyzerHandle, int dwAlarmType, Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize, Pointer dwUser, int nSequence, Pointer reserved) {
+        //门禁事件
+        if (dwAlarmType == EVENT_IVS_ACCESS_CTL) {
+            NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO info = new NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO();
+            ToolKits.GetPointerDataToStruct(pAlarmInfo, 0, info);
+            //更新列表
+            if(table!=null){
+                DefaultTableModel model= (DefaultTableModel) table.getModel();
+                NetSDKLib.NET_TIME_EX time=info.UTC;
+                if(info.UTC.dwYear==0&&info.UTC.dwMonth==0&&info.UTC.dwDay==0){
+                    time=info.stuFileInfo.stuFileTime;
+                }
+                model.addRow(new Object[]{new String(info.szUserID).trim(),new String(info.szCardNo).trim(),time.toString().trim(),getEventInfo(info).trim()});
+            }
+            if(pBuffer != null && dwBufSize > 0) {
+                String strFileName = SavePath.getSavePath().getSaveCapturePath();
+                byte[] buf = pBuffer.getByteArray(0, dwBufSize);
+                ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
+                try {
+                    bufferedImage = ImageIO.read(byteArrInput);
+                    if (bufferedImage == null) {
+                        return 0;
+                    }
+                    ImageIO.write(bufferedImage, "jpg", new File(strFileName));
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+
+                // 界面显示抓图
+                SwingUtilities.invokeLater(new Runnable() {
+                    @Override
+                    public void run() {
+                        paintPanel.setOpaque(false);
+                        paintPanel.setImage(bufferedImage);
+                        paintPanel.repaint();
+                    }
+                });
+            }
+        }
+        return 1;
+    }
+
+    /**
+     * 获取事件信息
+     * @param info
+     * @return
+     */
+    private String getEventInfo(NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO info){
+        StringBuilder builder=new StringBuilder();
+        builder.append(Res.string().getChannel()).append(info.nChannelID).append(",")
+                .append(Res.string().getOpenMethod()).append(openDoorMethod(info.emOpenMethod)).append(",")
+                .append(Res.string().getOpenStatus()).append(info.bStatus==1?Res.string().getSucceed():Res.string().getFailed());
+        return builder.toString();
+    }
+    /**
+     * 开门方式
+     * @param emOpenMethod
+     * @return
+     */
+    private String openDoorMethod(int emOpenMethod) {
+        String method;
+        switch (emOpenMethod) {
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD:
+                method = Res.string().getCard();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION:
+                method = Res.string().getTargetRecognition();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT:
+                method = Res.string().getFingerPrint();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_REMOTE:
+                method = Res.string().getRemoteCapture();
+                break;
+            default:
+                method = Res.string().getUnKnow();
+                break;
+        }
+        return method;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTODemo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTODemo.java
new file mode 100644
index 0000000..fdbe9cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTODemo.java
@@ -0,0 +1,640 @@
+package com.netsdk.demo.frame.vto;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.EventQueue;
+import java.awt.Panel;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.ScrollPaneConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+import com.netsdk.common.FunctionList;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.common.Res;
+import com.netsdk.demo.module.AlarmListenModule;
+import com.netsdk.demo.module.GateModule;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.demo.module.RealPlayModule;
+import com.netsdk.demo.module.TalkModule;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.CtrlType;
+import com.netsdk.lib.NetSDKLib.EM_OPEN_DOOR_TYPE;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.NET_CTRL_ACCESS_OPEN;
+import com.netsdk.lib.ToolKits;
+
+public class VTODemo extends JFrame {
+    private static final long serialVersionUID = 1L;
+
+    private JPanel contentPane;
+    private JTextField ipTextField;
+    private JTextField portTextField;
+    private JTextField userNameTextField;
+    private JPasswordField passwordField;
+    private JTable alarmTable;
+
+    private Panel realPlay;
+    private PaintPanel imagePanel;
+    private JButton btnLogin;
+    private JButton btnLogout;
+    private JButton btnRealPlay;
+    private JButton btnStopplay;
+    private JButton btnTalk;
+    private JButton btnStoptalk;
+    private JButton btnOpendoor;
+    private JButton btnClosedoor;
+    private JButton btnOperate;
+    private JButton btnStartlisten;
+    private JButton btnStoplisten;
+    private JButton btnStartrealload;
+    private JButton btnStoprealload;
+    JTabbedPane tabbedPane;
+    private static boolean b_RealPlay = false;
+    private static boolean b_Attachment = false;
+    private boolean isListen = false;
+
+///////////////////// 主面板 /////////////////////
+
+    private static JFrame mainFrame = new JFrame();
+    private OperateManager manager = new OperateManager();
+
+    private Object[][] alarmData;
+    private Object[][] realData;
+
+    private DefaultTableModel alarmModel;
+    private DefaultTableModel realModel;
+
+    private final String[] alarmTableTitle = {Res.string().getVTOAlarmEventRoomNo(),
+            Res.string().getVTOAlarmEventCardNo(), Res.string().getVTOAlarmEventTime(),
+            Res.string().getVTOAlarmEventOpenMethod(), Res.string().getVTOAlarmEventStatus()};
+    private final String[] realTableTitle = {Res.string().getVTORealLoadRoomNO(), Res.string().getVTORealLoadCardNo(),
+            Res.string().getVTORealLoadTime(), Res.string().getVTORealLoadEventInfo()};
+
+    /**
+     * Launch the application.
+     */
+    public static void main(String[] args) {
+        EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                try {
+                    VTODemo frame = new VTODemo();
+                    frame.setVisible(true);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * Create the frame.
+     */
+    public VTODemo() {
+        // setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setTitle(Res.string().getVTO());
+        setBounds(100, 100, 920, 651);
+        contentPane = new JPanel();
+        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
+        setContentPane(contentPane);
+        contentPane.setLayout(null);
+        try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        LoginModule.init(DefaultDisConnect.GetInstance(), DefaultHaveReconnect.getINSTANCE());
+        JPanel panel = new JPanel();
+        panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), Res.string().getLogin(),
+                TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
+        panel.setBounds(0, 0, 905, 46);
+        contentPane.add(panel);
+        panel.setLayout(null);
+
+        JLabel ipLabel = new JLabel(Res.string().getIp());
+        ipLabel.setBounds(10, 15, 44, 21);
+        panel.add(ipLabel);
+
+        ipTextField = new JTextField();
+        ipTextField.setText("10.34.3.63");
+        ipTextField.setBounds(64, 15, 89, 21);
+        panel.add(ipTextField);
+        ipTextField.setColumns(10);
+
+        JLabel portLabel = new JLabel(Res.string().getPort());
+        portLabel.setBounds(174, 15, 44, 21);
+        panel.add(portLabel);
+
+        portTextField = new JTextField();
+        portTextField.setText("37777");
+        portTextField.setColumns(10);
+        portTextField.setBounds(228, 15, 66, 21);
+        panel.add(portTextField);
+
+        JLabel lblName = new JLabel(Res.string().getUserName());
+        lblName.setBounds(316, 15, 66, 21);
+        panel.add(lblName);
+
+        userNameTextField = new JTextField();
+        userNameTextField.setText("admin");
+        userNameTextField.setColumns(10);
+        userNameTextField.setBounds(383, 15, 87, 21);
+        panel.add(userNameTextField);
+
+        JLabel lblPassword = new JLabel(Res.string().getPassword());
+        lblPassword.setBounds(492, 15, 66, 21);
+        panel.add(lblPassword);
+
+        passwordField = new JPasswordField();
+        passwordField.setBounds(568, 15, 112, 21);
+        passwordField.setText("admin123");
+        panel.add(passwordField);
+
+        btnLogin = new JButton(Res.string().getLogin());
+        btnLogin.setBounds(684, 14, 99, 23);
+        panel.add(btnLogin);
+        btnLogin.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                login();
+            }
+        });
+        btnLogout = new JButton(Res.string().getLogout());
+        btnLogout.setBounds(785, 14, 110, 23);
+        panel.add(btnLogout);
+        btnLogout.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                logout();
+            }
+        });
+        JPanel previewPanel = new JPanel();
+        previewPanel.setBorder(
+                new TitledBorder(null, Res.string().getRealplay(), TitledBorder.LEFT, TitledBorder.TOP, null, null));
+        previewPanel.setBounds(10, 56, 409, 313);
+        contentPane.add(previewPanel);
+        previewPanel.setLayout(new BorderLayout(0, 0));
+
+        realPlay = new Panel();
+        realPlay.setBackground(Color.GRAY);
+        previewPanel.add(realPlay, BorderLayout.CENTER);
+
+        JPanel operatePanel = new JPanel();
+        operatePanel.setBorder(
+                new TitledBorder(null, Res.string().getOperate(), TitledBorder.LEFT, TitledBorder.TOP, null, null));
+        operatePanel.setBounds(429, 56, 452, 194);
+        contentPane.add(operatePanel);
+        operatePanel.setLayout(null);
+
+        btnRealPlay = new JButton(Res.string().getStartRealPlay());
+        btnRealPlay.setBounds(37, 23, 162, 29);
+        operatePanel.add(btnRealPlay);
+        btnRealPlay.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                realPlay();
+            }
+        });
+        btnTalk = new JButton(Res.string().getStartTalk());
+        btnTalk.setBounds(248, 23, 152, 29);
+        operatePanel.add(btnTalk);
+        btnTalk.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                talk();
+            }
+        });
+        btnStopplay = new JButton(Res.string().getStopRealPlay());
+        btnStopplay.setBounds(37, 62, 162, 29);
+        operatePanel.add(btnStopplay);
+        btnStopplay.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                stopPlay();
+            }
+        });
+        btnStoptalk = new JButton(Res.string().getStopTalk());
+        btnStoptalk.setBounds(248, 62, 152, 29);
+        operatePanel.add(btnStoptalk);
+        btnStoptalk.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                stopTalk();
+            }
+        });
+        btnOpendoor = new JButton(Res.string().getDoorOpen());
+        btnOpendoor.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                openDoor();
+            }
+        });
+        btnOpendoor.setBounds(37, 110, 162, 29);
+        operatePanel.add(btnOpendoor);
+
+        btnClosedoor = new JButton(Res.string().getDoorClose());
+        btnClosedoor.setBounds(37, 149, 162, 29);
+        operatePanel.add(btnClosedoor);
+        btnClosedoor.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                super.mouseClicked(e);
+                closeDoor();
+            }
+        });
+        btnOperate = new JButton(Res.string().getCardOperate());
+        btnOperate.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                if (manager == null) {
+                    manager = new OperateManager();
+                }
+                manager.setVisible(true);
+            }
+        });
+        btnOperate.setBounds(248, 125, 152, 29);
+        operatePanel.add(btnOperate);
+
+        JPanel eventOperate = new JPanel();
+        eventOperate.setBorder(new TitledBorder(null, Res.string().getEventOperate(), TitledBorder.LEFT,
+                TitledBorder.TOP, null, null));
+        eventOperate.setBounds(429, 260, 452, 104);
+        contentPane.add(eventOperate);
+        eventOperate.setLayout(null);
+
+        btnStartlisten = new JButton(Res.string().getStartListen());
+        btnStartlisten.setBounds(35, 21, 178, 29);
+        eventOperate.add(btnStartlisten);
+        btnStartlisten.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                isListen = startListen();
+                tabbedPane.setSelectedIndex(0);
+            }
+        });
+
+        btnStoplisten = new JButton(Res.string().getStopListen());
+        btnStoplisten.setBounds(35, 60, 178, 29);
+        eventOperate.add(btnStoplisten);
+        btnStoplisten.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                //table清空数据
+                ((DefaultTableModel) alarmTable.getModel()).setRowCount(0);
+                stopListen();
+            }
+        });
+
+        btnStartrealload = new JButton(Res.string().getStartRealLoad());
+        btnStartrealload.setBounds(234, 21, 195, 29);
+        eventOperate.add(btnStartrealload);
+        btnStartrealload.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                startRealLoad();
+                tabbedPane.setSelectedIndex(1);
+            }
+        });
+
+        btnStoprealload = new JButton(Res.string().getStopRealLoad());
+        btnStoprealload.setBounds(234, 60, 195, 29);
+        eventOperate.add(btnStoprealload);
+        btnStoprealload.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                //清空table数据
+                ((DefaultTableModel) realLoadTable.getModel()).setRowCount(0);
+                stopRealLoad();
+                //图片清空
+                imagePanel.setImage(null);
+                imagePanel.repaint();
+            }
+        });
+
+        tabbedPane = new JTabbedPane(JTabbedPane.TOP);
+        tabbedPane.setBounds(10, 379, 871, 224);
+        contentPane.add(tabbedPane);
+
+        JPanel alarmPanel = new JPanel();
+        alarmPanel.setBorder(
+                new TitledBorder(null, Res.string().getEventInfo(), TitledBorder.LEFT, TitledBorder.TOP, null, null));
+        tabbedPane.addTab(Res.string().getAlarmEvent(), null, alarmPanel, null);
+        alarmPanel.setLayout(new BorderLayout(0, 0));
+
+        alarmData = new Object[0][5];
+        alarmTable = tableInit(alarmData, alarmTableTitle);
+        alarmModel = (DefaultTableModel) alarmTable.getModel();
+        JScrollPane scrollPane = new JScrollPane(alarmTable);
+        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        alarmPanel.add(scrollPane, BorderLayout.CENTER);
+
+        JPanel realLoadPanel = new JPanel();
+        realLoadPanel.setBorder(new TitledBorder(null, Res.string().getVTORealLoadEventInfo(), TitledBorder.LEFT,
+                TitledBorder.TOP, null, null));
+        tabbedPane.addTab(Res.string().getRealLoadEvent(), null, realLoadPanel, null);
+        realLoadPanel.setLayout(null);
+
+        imagePanel = new PaintPanel();
+        imagePanel.setBounds(671, 20, 185, 165);
+        realLoadPanel.add(imagePanel);
+        realData = new Object[0][4];
+        realLoadTable = tableInit(realData, realTableTitle);
+        realModel = (DefaultTableModel) realLoadTable.getModel();
+        realScrollPane = new JScrollPane(realLoadTable);
+        realScrollPane.setBounds(10, 20, 654, 165);
+        realScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        realLoadPanel.add(realScrollPane);
+
+        btnEnable(false);
+        btnLogin.setEnabled(true);
+        addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(WindowEvent e) {
+                if (LoginModule.m_hLoginHandle.longValue() != 0) {
+                    logout();
+                }
+                LoginModule.cleanup();
+                dispose();
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        FunctionList demo = new FunctionList();
+                        demo.setVisible(true);
+                    }
+                });
+            }
+        });
+    }
+
+    /**
+     * 按钮使能
+     *
+     * @param enable
+     */
+    public void btnEnable(boolean enable) {
+        btnLogin.setEnabled(enable);
+        btnLogout.setEnabled(enable);
+        btnRealPlay.setEnabled(enable);
+        btnStopplay.setEnabled(enable);
+        btnTalk.setEnabled(enable);
+        btnStoptalk.setEnabled(enable);
+        btnOpendoor.setEnabled(enable);
+        btnClosedoor.setEnabled(enable);
+        btnOperate.setEnabled(enable);
+        btnStartlisten.setEnabled(enable);
+        btnStoplisten.setEnabled(enable);
+        btnStartrealload.setEnabled(enable);
+        btnStoprealload.setEnabled(enable);
+    }
+
+    public JTable tableInit(Object[][] data, String[] columnName) {
+        JTable table;
+        DefaultTableModel model;
+        model = new DefaultTableModel(data, columnName);
+        table = new JTable(model) {
+            @Override // 不可编辑
+            public boolean isCellEditable(int row, int column) {
+                return false;
+            }
+        };
+        model = (DefaultTableModel) table.getModel();
+
+
+        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 只能选中一行
+
+        // 列表显示居中
+        DefaultTableCellRenderer dCellRenderer = new DefaultTableCellRenderer();
+        dCellRenderer.setHorizontalAlignment(JLabel.CENTER);
+        table.setDefaultRenderer(Object.class, dCellRenderer);
+        return table;
+    }
+
+    /**
+     * 登录
+     */
+    public boolean login() {
+        if (LoginModule.login(ipTextField.getText(), Integer.parseInt(portTextField.getText()),
+                userNameTextField.getText(), new String(passwordField.getPassword()))) {
+            btnEnable(true);
+            btnLogin.setEnabled(false);
+            // 监听按钮使能
+            btnRealPlay.setEnabled(true);
+            btnStopplay.setEnabled(false);
+            btnStartlisten.setEnabled(true);
+            btnStoplisten.setEnabled(false);
+            btnStartrealload.setEnabled(true);
+            btnStoprealload.setEnabled(false);
+            btnTalk.setEnabled(true);
+            btnStoptalk.setEnabled(false);
+        } else {
+            JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(),
+                    Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 登出
+     */
+    public void logout() {
+        if (b_RealPlay) {
+            stopPlay();
+        }
+        if (TalkModule.m_hTalkHandle != null) {
+            stopTalk();
+        }
+        if (isListen) {
+            stopListen();
+            isListen = false;
+        }
+        stopRealLoad();
+        LoginModule.logout();
+        btnEnable(false);
+        //清空两个表格
+        //普通事件table清空数据
+        ((DefaultTableModel) alarmTable.getModel()).setRowCount(0);
+        //智能事件table清空数据
+        ((DefaultTableModel) realLoadTable.getModel()).setRowCount(0);
+        //图片清空
+        imagePanel.setImage(null);
+        imagePanel.repaint();
+        btnLogin.setEnabled(true);
+    }
+
+    private LLong m_hPlayHandle;
+
+    public void realPlay() {
+        if (!b_RealPlay) {
+            m_hPlayHandle = RealPlayModule.startRealPlay(0, 0, realPlay);
+            if (m_hPlayHandle.longValue() != 0) {
+                b_RealPlay = true;
+                btnRealPlay.setEnabled(false);
+                btnStopplay.setEnabled(true);
+            } else {
+                JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+        }
+    }
+
+    /**
+     * 停止实时预览
+     */
+    public void stopPlay() {
+        if (b_RealPlay) {
+            RealPlayModule.stopRealPlay(m_hPlayHandle);
+            realPlay.repaint();
+            b_RealPlay = false;
+            btnRealPlay.setEnabled(true);
+            btnStopplay.setEnabled(false);
+        }
+    }
+
+    /**
+     * 对讲
+     */
+    public void talk() {
+        if (TalkModule.startTalk(0, 0)) {
+            btnTalk.setEnabled(false);
+            btnStoptalk.setEnabled(true);
+        } else {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    /**
+     * 停止对讲
+     */
+    public void stopTalk() {
+        TalkModule.stopTalk();
+        btnTalk.setEnabled(true);
+        btnStoptalk.setEnabled(false);
+    }
+
+    /**
+     * 开门
+     */
+    public void openDoor() {
+        NET_CTRL_ACCESS_OPEN openInfo = new NET_CTRL_ACCESS_OPEN();
+        openInfo.nChannelID = 0;
+        openInfo.emOpenDoorType = EM_OPEN_DOOR_TYPE.EM_OPEN_DOOR_TYPE_REMOTE;
+
+        Pointer pointer = new Memory(openInfo.size());
+        ToolKits.SetStructDataToPointer(openInfo, pointer, 0);
+        boolean ret = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle,
+                CtrlType.CTRLTYPE_CTRL_ACCESS_OPEN, pointer, null, 10000);
+        if (!ret) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return;
+        }
+    }
+
+    /**
+     * 关门
+     */
+    public void closeDoor() {
+        final NetSDKLib.NET_CTRL_ACCESS_CLOSE close = new NetSDKLib.NET_CTRL_ACCESS_CLOSE();
+        close.nChannelID = 0; // 对应的门编号 - 如何开全部的门
+        close.write();
+        Pointer pointer = new Memory(close.size());
+        boolean result = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle,
+                NetSDKLib.CtrlType.CTRLTYPE_CTRL_ACCESS_CLOSE, close.getPointer(), null, 5000);
+        close.read();
+        if (!result) {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    /**
+     * 监听事件
+     */
+    public boolean startListen() {
+        if (AlarmListenModule.startListen(VTOMessageCallBack.getINSTANCE(alarmTable, null))) {
+            btnStartlisten.setEnabled(false);
+            btnStoplisten.setEnabled(true);
+        } else {
+            JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                    JOptionPane.ERROR_MESSAGE);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 停止监听
+     */
+    public void stopListen() {
+        if (isListen) {
+            if (AlarmListenModule.stopListen()) {
+                isListen = false;
+                btnStartlisten.setEnabled(true);
+                btnStoplisten.setEnabled(false);
+            } else {
+                JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(),
+                        JOptionPane.ERROR_MESSAGE);
+            }
+        }
+
+    }
+
+    private LLong m_attachHandle;
+    private JTable realLoadTable;
+    private JScrollPane realScrollPane;
+
+    /**
+     * 智能事件监听
+     */
+    public void startRealLoad() {
+        m_attachHandle = GateModule.realLoadPic(0, VTOAnalyzerCallBack.getINSTANCE(realLoadTable, imagePanel));
+        if (m_attachHandle != null && m_attachHandle.longValue() != 0) {
+            btnStartrealload.setEnabled(false);
+            btnStoprealload.setEnabled(true);
+        }
+    }
+
+    /**
+     * 停止智能事件监听
+     */
+    public void stopRealLoad() {
+        if (m_attachHandle != null && m_attachHandle.longValue() != 0) {
+            GateModule.stopRealLoadPic(m_attachHandle);
+            m_attachHandle.setValue(0);
+            btnStartrealload.setEnabled(true);
+            btnStoprealload.setEnabled(false);
+        }
+
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOMessageCallBack.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOMessageCallBack.java
new file mode 100644
index 0000000..58b4777
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/frame/vto/VTOMessageCallBack.java
@@ -0,0 +1,103 @@
+package com.netsdk.demo.frame.vto;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
+import com.netsdk.common.Res;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import javax.swing.*;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description vto监听事件的回调函数, 建议写成单例模式
+ * @date 2020/8/15
+ */
+public class VTOMessageCallBack implements NetSDKLib.fMessCallBack {
+    private static VTOMessageCallBack INSTANCE;
+    private JTable table;
+    private CollectionFingerPrint print;
+
+    private VTOMessageCallBack(JTable table) {
+        this.table = table;
+    }
+
+    public static VTOMessageCallBack getINSTANCE(JTable table, CollectionFingerPrint print) {
+        if (INSTANCE == null) {
+            INSTANCE = new VTOMessageCallBack(table);
+        }
+        if (table != null) {
+            INSTANCE.table = table;
+        }
+        if (print != null) {
+            INSTANCE.print = print;
+        }
+        return INSTANCE;
+    }
+
+    @Override
+    public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, Pointer dwUser) {
+        //门禁事件
+        if (lCommand == NetSDKLib.NET_ALARM_ACCESS_CTL_EVENT) {
+            NetSDKLib.ALARM_ACCESS_CTL_EVENT_INFO info = new NetSDKLib.ALARM_ACCESS_CTL_EVENT_INFO();
+            ToolKits.GetPointerDataToStruct(pStuEvent, 0, info);
+            //更新列表
+            if (table != null) {
+                DefaultTableModel model = (DefaultTableModel) table.getModel();
+                model.addRow(new Object[]{new String(info.szUserID).trim(), new String(info.szCardNo).trim(), info.stuTime.toStringTime(), openDoorMethod(info.emOpenMethod), info.bStatus == 1 ? Res.string().getSucceed() : Res.string().getFailed()});
+
+            }
+        }
+        //信息事件
+        if (lCommand == NetSDKLib.NET_ALARM_FINGER_PRINT) {
+            if (print != null) {
+                if (lLoginID.longValue() == print.getLoginHandler()) {
+                    NetSDKLib.ALARM_CAPTURE_FINGER_PRINT_INFO info = new NetSDKLib.ALARM_CAPTURE_FINGER_PRINT_INFO();
+                    ToolKits.GetPointerDataToStruct(pStuEvent, 0, info);
+                    print.setCollectionResult(info.bCollectResult == 1);
+                    if (info.bCollectResult == 1) {
+                        print.setPackageLen(info.nPacketLen * info.nPacketNum);
+                        int length = info.nPacketLen * info.nPacketNum;
+                        byte[] data = new byte[length];
+                        info.szFingerPrintInfo.read(0, data, 0, length);
+                        print.setPackageData(data);
+                        //显示结果
+                        print.setLabelResult(data);
+                    }
+                    print.stopListen();
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 开门方式
+     *
+     * @param emOpenMethod
+     * @return
+     */
+    private String openDoorMethod(int emOpenMethod) {
+        String method;
+        switch (emOpenMethod) {
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_CARD:
+                method = Res.string().getCard();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION:
+                method = Res.string().getTargetRecognition();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT:
+                method = Res.string().getFingerPrint();
+                break;
+            case NetSDKLib.NET_ACCESS_DOOROPEN_METHOD.NET_ACCESS_DOOROPEN_METHOD_REMOTE:
+                method = Res.string().getRemoteOpenDoor();
+                break;
+            default:
+                method = Res.string().getUnKnow();
+                break;
+        }
+        return method;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AlarmListenModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AlarmListenModule.java
new file mode 100644
index 0000000..8f40366
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AlarmListenModule.java
@@ -0,0 +1,75 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.fMessCallBack;
+
+/**
+ * \if ENGLISH_LANG
+ * alarm listen interface
+ * contains: start and stop alarm listen
+ * \else
+ * 报警接口实现
+ * 包含 :向设备订阅报警和停止订阅报警
+ * \endif
+ */
+public class AlarmListenModule {
+
+	private static boolean bListening = false;
+
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * start alarm listen
+	 * \else
+	 * 向设备订阅报警
+	 * \endif
+	 */
+	public static boolean startListen(fMessCallBack cbMessage) {
+
+		if (bListening) {
+//			System.out.println("Had Subscribe Alarm.");
+			return true;
+		}
+		
+		LoginModule.netsdk.CLIENT_SetDVRMessCallBack(cbMessage, null); // set alarm listen callback
+
+		if (!LoginModule.netsdk.CLIENT_StartListenEx(LoginModule.m_hLoginHandle)) {
+			System.err.printf("CLIENT_StartListenEx Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		} else { 
+			System.out.println("CLIENT_StartListenEx success."); 
+		}
+		
+		bListening = true;
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * stop alarm listen
+	 * \else
+	 * 停止订阅报警
+	 * \endif
+	 */
+	public static boolean stopListen() {
+
+		if (!bListening) {
+			return true;
+		}
+		
+	   	if (!LoginModule.netsdk.CLIENT_StopListen(LoginModule.m_hLoginHandle)) { 
+			System.err.printf("CLIENT_StopListen Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		} else { 
+			System.out.println("CLIENT_StopListen success."); 
+		}
+	   	
+	   	bListening = false;	
+		return true;
+	}
+
+}	
+	
+
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AttendanceModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AttendanceModule.java
new file mode 100644
index 0000000..0b2f0e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AttendanceModule.java
@@ -0,0 +1,501 @@
+package com.netsdk.demo.module;
+
+import java.io.UnsupportedEncodingException;
+
+import com.sun.jna.Memory;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * \if ENGLISH_LANG
+ * Attendance Interface
+ * contains:smart subscribe、CRUD of user&&fingerprint and collection fingerprint 
+ * \else
+ * 考勤机接口实现
+ * 包含: 智能订阅、考勤用户及信息的增删改查、信息采集
+ * \endif
+ */
+public class AttendanceModule {
+	
+	public static final int TIME_OUT = 3000;
+	public static final int nMaxFingerPrintSize = 2048;
+	public static LLong m_hAttachHandle = new LLong(0);
+	
+	 /**
+	 * 智能订阅
+	 * @param callback   智能订阅回调函数
+	 */
+    public static boolean realLoadPicture(fAnalyzerDataCallBack callback) {
+
+        int bNeedPicture = 0; // 不需要图片
+
+        m_hAttachHandle =  LoginModule.netsdk.CLIENT_RealLoadPictureEx(LoginModule.m_hLoginHandle, -1,
+        		NetSDKLib.EVENT_IVS_ALL, bNeedPicture, callback, null, null);
+
+        if(m_hAttachHandle.longValue() == 0) {
+        	System.err.printf("CLIENT_RealLoadPictureEx Failed!" + ToolKits.getErrorCodePrint());
+        }
+        
+        return m_hAttachHandle.longValue() != 0;
+    }
+
+    /**
+	 * 停止智能订阅
+	 */
+    public static void stopRealLoadPicture(){
+        if (m_hAttachHandle.longValue() == 0) {
+            return;
+        }
+        
+        LoginModule.netsdk.CLIENT_StopLoadPic(m_hAttachHandle);
+        m_hAttachHandle.setValue(0);
+    }
+	
+	/**
+	 * 考勤新增加用户
+	 * @param userId   用户ID
+	 * @param userName 用户名
+	 * @param cardNo   卡号
+	 */
+	public static boolean addUser(String userId, String userName, String cardNo) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_ATTENDANCE_ADDUSER stuIn = new NET_IN_ATTENDANCE_ADDUSER();
+		stringToByteArray(userId, stuIn.stuUserInfo.szUserID);
+		stringToByteArray(userName, stuIn.stuUserInfo.szUserName);
+		stringToByteArray(cardNo, stuIn.stuUserInfo.szCardNo);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_ATTENDANCE_ADDUSER stuOut = new NET_OUT_ATTENDANCE_ADDUSER();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_AddUser(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_AddUser Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤删除用户
+	 * @param userId   用户ID
+	 */
+	public static boolean deleteUser(String userId) {
+		
+		removeFingerByUserId(userId); 	// 先去删除信息
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_ATTENDANCE_DELUSER stuIn = new NET_IN_ATTENDANCE_DELUSER();
+		stringToByteArray(userId, stuIn.szUserID);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_ATTENDANCE_DELUSER stuOut = new NET_OUT_ATTENDANCE_DELUSER();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_DelUser(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_DelUser Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤修改用户
+	 * @param userId   用户ID
+	 * @param userName 用户名
+	 * @param cardNo   卡号
+	 */
+	public static boolean modifyUser(String userId, String userName, String cardNo) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_ATTENDANCE_ModifyUSER stuIn = new NET_IN_ATTENDANCE_ModifyUSER();
+		stringToByteArray(userId, stuIn.stuUserInfo.szUserID);
+		stringToByteArray(userName, stuIn.stuUserInfo.szUserName);
+		stringToByteArray(cardNo, stuIn.stuUserInfo.szCardNo);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_ATTENDANCE_ModifyUSER stuOut = new NET_OUT_ATTENDANCE_ModifyUSER();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_ModifyUser(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_ModifyUser Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤机 查找用户
+	 * @param nOffset   		查询偏移
+	 * @param nPagedQueryCount 	查询个数
+	 * @return UserData[] 		用户信息组
+	 */
+	public static UserData[] findUser(int nOffset, int nPagedQueryCount) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_ATTENDANCE_FINDUSER stuIn = new NET_IN_ATTENDANCE_FINDUSER();
+		stuIn.nOffset = nOffset;
+		stuIn.nPagedQueryCount = nPagedQueryCount;
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_ATTENDANCE_FINDUSER stuOut = new NET_OUT_ATTENDANCE_FINDUSER();
+		NET_ATTENDANCE_USERINFO[]  userInfo = new NET_ATTENDANCE_USERINFO[nPagedQueryCount];
+		for(int i = 0; i < nPagedQueryCount; i++) {
+			userInfo[i] = new NET_ATTENDANCE_USERINFO();
+		}
+		stuOut.nMaxUserCount = nPagedQueryCount;
+		stuOut.stuUserInfo = new Memory(userInfo[0].size() * stuOut.nMaxUserCount);
+		stuOut.stuUserInfo.clear(userInfo[0].size() * stuOut.nMaxUserCount);
+		ToolKits.SetStructArrToPointerData(userInfo, stuOut.stuUserInfo);  // 将数组内存拷贝到Pointer
+		stuOut.nMaxPhotoDataLength = 128;
+		stuOut.pbyPhotoData = new Memory(stuOut.nMaxPhotoDataLength);    // 申请内存
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_FindUser(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_FindUser Failed!" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		ToolKits.GetPointerDataToStructArr(stuOut.stuUserInfo, userInfo); // 将 Pointer 的内容 输出到   数组
+		
+		UserData[]  userData = new UserData[stuOut.nRetUserCount];
+		for(int i = 0; i < stuOut.nRetUserCount; i++) {
+			userData[i] = new UserData();
+			try {
+				userData[i].userId = new String(userInfo[i].szUserID, "GBK").trim();
+				userData[i].userName = new String(userInfo[i].szUserName, "GBK").trim();
+				userData[i].cardNo = new String(userInfo[i].szCardNo, "GBK").trim();
+			}catch(Exception e) {	// 如果转化失败就采用原始数据
+				userData[i].userId = new String(userInfo[i].szUserID).trim();
+				userData[i].userName = new String(userInfo[i].szUserName).trim();
+				userData[i].cardNo = new String(userInfo[i].szCardNo).trim();
+			}
+			
+//			getFingerByUserId(userData[i].userId, userData[i]); // 获取信息信息
+		} 
+		
+		UserData.nTotalUser = stuOut.nTotalUser;
+		
+		return userData;
+	}
+	
+	/**
+	 * 考勤获取用户信息
+	 * @param userId   	用户ID
+	 * @return UserData 用户信息
+	 */
+	public static UserData getUser(String userId) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_ATTENDANCE_GetUSER stuIn = new NET_IN_ATTENDANCE_GetUSER();
+		stringToByteArray(userId, stuIn.szUserID);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_ATTENDANCE_GetUSER stuOut = new NET_OUT_ATTENDANCE_GetUSER();
+		stuOut.nMaxLength = 128;
+		stuOut.pbyPhotoData = new Memory(stuOut.nMaxLength);    // 申请内存
+		stuOut.pbyPhotoData.clear(stuOut.nMaxLength);
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_GetUser(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_GetUser Failed!" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		UserData userData = new UserData();
+		try {
+			userData.userId = new String(stuOut.stuUserInfo.szUserID, "GBK").trim();
+			userData.userName = new String(stuOut.stuUserInfo.szUserName, "GBK").trim();
+			userData.cardNo = new String(stuOut.stuUserInfo.szCardNo, "GBK").trim();
+		}catch(Exception e) {	// 如果转化失败就采用原始数据
+			userData.userId = new String(stuOut.stuUserInfo.szUserID).trim();
+			userData.userName = new String(stuOut.stuUserInfo.szUserName).trim();
+			userData.cardNo = new String(stuOut.stuUserInfo.szCardNo).trim();
+		}
+		
+//		getFingerByUserId(userId, userData); // 获取信息信息
+		
+		return userData;
+	}
+
+	/**
+	 * 考勤机  通过用户ID插入信息数据
+	 * @param userId   			用户ID
+	 * @param szFingerPrintInfo 信息信息
+	 */
+	public static boolean insertFingerByUserId(String userId, byte[] szFingerPrintInfo) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_FINGERPRINT_INSERT_BY_USERID stuIn = new NET_IN_FINGERPRINT_INSERT_BY_USERID();
+		stringToByteArray(userId, stuIn.szUserID);
+		stuIn.nPacketCount = 1;
+		stuIn.nSinglePacketLen = szFingerPrintInfo.length;
+		stuIn.szFingerPrintInfo = new Memory(stuIn.nPacketCount * stuIn.nSinglePacketLen);    // 申请内存
+		stuIn.szFingerPrintInfo.clear(stuIn.nPacketCount * stuIn.nSinglePacketLen);
+		stuIn.szFingerPrintInfo.write(0, szFingerPrintInfo, 0, szFingerPrintInfo.length);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_FINGERPRINT_INSERT_BY_USERID stuOut = new NET_OUT_FINGERPRINT_INSERT_BY_USERID();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_InsertFingerByUserID(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_InsertFingerByUserID Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤机 删除单个用户下所有信息数据
+	 * @param userId   用户ID
+	 */
+	public static boolean removeFingerByUserId(String userId) {
+		
+		/*
+		 * 入参
+		 */
+		NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID stuIn = new NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID();
+		stringToByteArray(userId, stuIn.szUserID);
+		
+		/*
+		 * 出参
+		 */
+		NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID stuOut = new NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_RemoveFingerByUserID(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_RemoveFingerByUserID Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤机 通过信息ID删除信息数据
+	 * @param nFingerPrintID  信息ID
+	 */
+	public static boolean removeFingerRecord(int nFingerPrintID) {
+		
+		/*
+		 * 入参
+		 */
+		NET_CTRL_IN_FINGERPRINT_REMOVE stuIn = new NET_CTRL_IN_FINGERPRINT_REMOVE();
+		stuIn.nFingerPrintID = nFingerPrintID;
+		
+		/*
+		 * 出参
+		 */
+		NET_CTRL_OUT_FINGERPRINT_REMOVE stuOut = new NET_CTRL_OUT_FINGERPRINT_REMOVE();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_RemoveFingerRecord(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_RemoveFingerRecord Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 考勤机 通过信息ID获取信息数据
+	 * @param nFingerPrintID  信息ID
+	 * @return userData 用户数据
+	 */
+	public static UserData getFingerRecord(int nFingerPrintID) {
+		
+		/*
+		 * 入参
+		 */
+		NET_CTRL_IN_FINGERPRINT_GET stuIn = new NET_CTRL_IN_FINGERPRINT_GET();
+		stuIn.nFingerPrintID = nFingerPrintID;
+		
+		/*
+		 * 出参
+		 */
+		NET_CTRL_OUT_FINGERPRINT_GET stuOut = new NET_CTRL_OUT_FINGERPRINT_GET();
+		stuOut.nMaxFingerDataLength = nMaxFingerPrintSize;
+		stuOut.szFingerPrintInfo = new Memory(stuOut.nMaxFingerDataLength);    // 申请内存
+		stuOut.szFingerPrintInfo.clear(stuOut.nMaxFingerDataLength);
+
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_GetFingerRecord(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_GetFingerRecord Failed!" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		if (stuOut.nRetLength == 0) {
+			System.err.println("GetFingerRecord Failed nRetLength == 0!");
+		}
+		
+		UserData userData = new UserData();
+		userData.userId = new String(stuOut.szUserID).trim();
+		userData.nFingerPrintIDs = new int[1];
+		userData.nFingerPrintIDs[0] = nFingerPrintID; 
+		userData.szFingerPrintInfo = new byte[1][stuOut.nRetLength];
+		stuOut.szFingerPrintInfo.read(0, userData.szFingerPrintInfo[0], 0, stuOut.nRetLength);
+		
+		return userData;
+	}
+	
+	/**
+	 * 考勤机 通过用户ID查找该用户下的所有信息数据
+	 * @param userId   用户ID
+	 * @param userData 用户数据
+	 */
+	public static boolean getFingerByUserId(String userId, UserData userData) {
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_FINGERPRINT_GETBYUSER stuIn = new NET_IN_FINGERPRINT_GETBYUSER();
+		stringToByteArray(userId, stuIn.szUserID);
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_FINGERPRINT_GETBYUSER stuOut = new NET_OUT_FINGERPRINT_GETBYUSER();
+		stuOut.nMaxFingerDataLength = NetSDKLib.NET_MAX_FINGER_PRINT * nMaxFingerPrintSize;
+		stuOut.pbyFingerData = new Memory(stuOut.nMaxFingerDataLength);    // 申请内存
+		stuOut.pbyFingerData.clear(stuOut.nMaxFingerDataLength);
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_Attendance_GetFingerByUserID(LoginModule.m_hLoginHandle, stuIn, stuOut, TIME_OUT);
+		if (!bRet) {
+			System.err.printf("CLIENT_Attendance_GetFingerByUserID Failed!" + ToolKits.getErrorCodePrint());
+		}else {
+			userData.nFingerPrintIDs = new int[stuOut.nRetFingerPrintCount];
+			userData.szFingerPrintInfo = new byte[stuOut.nRetFingerPrintCount][stuOut.nSinglePacketLength];
+			int offset = 0;
+			for (int i = 0; i < stuOut.nRetFingerPrintCount; ++i) {
+				userData.nFingerPrintIDs[i] = stuOut.nFingerPrintIDs[i];
+				stuOut.pbyFingerData.read(offset, userData.szFingerPrintInfo[i], 0, stuOut.nSinglePacketLength);
+				offset += stuOut.nSinglePacketLength;
+			}
+		}
+
+		return bRet;
+	}
+	
+	/**
+	 * 信息采集
+	 * @param nChannelID   门禁序号
+	 * @param szReaderID   读卡器ID
+	 */
+	public static boolean collectionFinger(int nChannelID, String szReaderID) {
+		/*
+		 * 入参
+		 */
+		NET_CTRL_CAPTURE_FINGER_PRINT stuCollection = new NET_CTRL_CAPTURE_FINGER_PRINT();
+		stuCollection.nChannelID = nChannelID;
+		stringToByteArray(szReaderID, stuCollection.szReaderID);
+		
+		stuCollection.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT, stuCollection.getPointer(), null, 5000);
+		if (!bRet) {
+			System.err.printf("CLIENT_ControlDeviceEx CAPTURE_FINGER_PRINT Failed!" + ToolKits.getErrorCodePrint());
+		}
+		return bRet;
+	}
+	
+	/**
+	 * 字符串转字符数组
+	 * @param src   源字符串
+	 * @param dst   目标字符数组
+	 */
+	public static void stringToByteArray(String src, byte[] dst) {
+		
+		if (src == null || src.isEmpty()) {
+			return;
+		}
+		
+		for(int i = 0; i < dst.length; i++) {
+			dst[i] = 0;
+		}
+		
+		byte []szSrc;
+		
+		try {
+			szSrc = src.getBytes("GBK");
+		} catch (UnsupportedEncodingException e) {
+			szSrc = src.getBytes();
+		} 
+		
+		if (szSrc != null) {
+			int len = szSrc.length >= dst.length ? dst.length-1:szSrc.length;
+			System.arraycopy(szSrc, 0, dst, 0, len);
+		}
+	}
+	
+	/**
+     * 用户信息
+     * */
+	public static class UserData {
+		public static int nTotalUser;		// 用户总数
+		
+		public String userId;				// 用户ID
+		public String userName;				// 用户名
+		public String cardNo;				// 卡号
+		public int[]    nFingerPrintIDs;	// 信息ID数组
+		public byte[][] szFingerPrintInfo;	// 信息数据数组
+	}
+	
+	 /**
+     * 门禁事件信息
+     * */
+	public static class AccessEventInfo {
+    	public String userId;		// 用户ID
+		public String cardNo;		// 卡号
+		public String eventTime;	// 事件发生时间
+    	public int openDoorMethod;	// 开门方式
+    }
+	
+	/**
+     * 操作类型
+     * */
+	public enum OPERATE_TYPE {
+		UNKNOWN,						// 未知
+		SEARCH_USER,					// 搜索用户(第一页)
+		PRE_SEARCH_USER,				// 搜索用户(上一页)
+		NEXT_SEARCH_USER,				// 搜索用户(下一页)
+		SEARCH_USER_BY_USERID,			// 通过用户ID搜索用户
+		ADD_USER,						// 添加用户
+		DELETE_USER,					// 删除用户
+		MODIFIY_USER,					// 修改用户
+		FINGERPRINT_OPEARTE_BY_USERID,	// 通过用户ID操作信息
+		FINGERPRINT_OPEARTE_BY_ID,		// 通过信息ID操作信息
+		SEARCH_FINGERPRINT_BY_USERID,	// 通过用户ID搜索信息
+		SEARCH_FINGERPRINT_BY_ID,		// 通过信息ID搜索信息
+		ADD_FINGERPRINT,				// 添加信息
+		DELETE_FINGERPRINT_BY_USERID,	// 通过用户ID删除信息
+		DELETE_FINGERPRINT_BY_ID		// 通过信息ID删除信息
+	};
+}
+
+
+
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AutoRegisterModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AutoRegisterModule.java
new file mode 100644
index 0000000..cb857b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/AutoRegisterModule.java
@@ -0,0 +1,346 @@
+package com.netsdk.demo.module;
+
+import java.awt.Panel;
+
+import com.netsdk.lib.NetSDKLib.CFG_DVRIP_INFO;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY;
+import com.netsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY;
+import com.netsdk.lib.NetSDKLib.fServiceCallBack;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+public class AutoRegisterModule {
+	// 监听服务句柄
+	public static LLong mServerHandler = new LLong(0);	
+	
+	// 设备信息
+	public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
+	
+	// 语音对讲句柄
+	public static LLong m_hTalkHandle = new LLong(0);
+	private static boolean m_bRecordStatus    = false;
+	
+	/**
+	 * 开启服务
+	 * @param address 本地IP地址
+	 * @param port 本地端口, 可以任意
+	 * @param callback 回调函数
+	 */
+	public static boolean startServer(String address, int port, fServiceCallBack callback) {
+		
+		mServerHandler = LoginModule.netsdk.CLIENT_ListenServer(address, port, 1000, callback, null);
+		if (0 == mServerHandler.longValue()) {
+			System.err.println("Failed to start server." + ToolKits.getErrorCodePrint());
+		} else {
+			System.out.printf("Start server, [Server address %s][Server port %d]\n", address, port);
+		}
+		return mServerHandler.longValue() != 0;
+	}
+	
+	/**
+	 * 结束服务
+	 */
+	public static boolean stopServer() {
+		boolean bRet = false;
+		
+		if(mServerHandler.longValue() != 0) {
+			bRet = LoginModule.netsdk.CLIENT_StopListenServer(mServerHandler);	
+			mServerHandler.setValue(0);
+			System.out.println("Stop server!");
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 登录设备(主动注册登陆接口)
+	 * @param m_strIp  设备IP
+	 * @param m_nPort  设备端口号
+	 * @param m_strUser  设备用户名
+	 * @param m_strPassword  设备密码
+	 * @param deviceId  设备ID
+	 * @return
+	 */
+	public static LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, String deviceIds) {	
+		Pointer deviceId = ToolKits.GetGBKStringToPointer(deviceIds);		
+		//IntByReference nError = new IntByReference(0);
+		//入参
+		NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam=new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
+		pstInParam.nPort=m_nPort;
+		pstInParam.szIP=m_strIp.getBytes();
+		pstInParam.szPassword=m_strPassword.getBytes();
+		pstInParam.szUserName=m_strUser.getBytes();
+		pstInParam.emSpecCap = 2;// 主动注册方式
+		pstInParam.pCapParam=deviceId;
+		//出参
+		NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
+		pstOutParam.stuDeviceInfo=m_stDeviceInfo;
+		/*LLong m_hLoginHandle = LoginModule.netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 
+								    tcpSpecCap, deviceId, m_stDeviceInfo, nError);*/
+		LLong m_hLoginHandle=LoginModule.netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
+		return m_hLoginHandle;
+	}
+	
+	/**
+	 * 登出设备
+	 * @param m_hLoginHandle  登陆句柄
+	 * @return
+	 */
+	public static boolean logout(LLong m_hLoginHandle) {
+		boolean bRet = false;
+		if(m_hLoginHandle.longValue() != 0) {
+			bRet = LoginModule.netsdk.CLIENT_Logout(m_hLoginHandle);
+			m_hLoginHandle.setValue(0);	
+		}
+
+		return bRet;
+	}
+	
+	/**
+	 * 开始预览
+	 * @param m_hLoginHandle 登陆句柄
+	 * @param channel  通道号
+	 * @param stream  码流类型
+	 * @param realPlayWindow  拉流窗口
+	 * @return
+	 */
+	public static LLong startRealPlay(LLong m_hLoginHandle, int channel, int stream, Panel realPlayWindow) {
+		LLong m_hPlayHandle = LoginModule.netsdk.CLIENT_RealPlayEx(m_hLoginHandle, channel, Native.getComponentPointer(realPlayWindow), stream);
+	
+	    if(m_hPlayHandle.longValue() == 0) {
+	  	    System.err.println("Failed to start realplay." + ToolKits.getErrorCodePrint());
+	    } else {
+	  	    System.out.println("Success to start realplay"); 
+	    }
+	    
+	    return m_hPlayHandle;
+	} 
+	
+	/**
+	 * 停止预览
+	 * @param m_hPlayHandle 实时预览句柄
+	 * @return
+	 */
+	public static boolean stopRealPlay(LLong m_hPlayHandle) {
+		boolean bRet = false;
+		if(m_hPlayHandle.longValue() != 0) {
+			bRet = LoginModule.netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle);
+			m_hPlayHandle.setValue(0);
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 远程抓图
+	 * @param m_hLoginHandle 登陆句柄
+	 * @param chn  通道号
+	 * @return
+	 */
+	public static boolean snapPicture(LLong m_hLoginHandle, int chn) {
+		// 发送抓图命令给前端设备,抓图的信息
+		NetSDKLib.SNAP_PARAMS msg = new NetSDKLib.SNAP_PARAMS(); 
+		msg.Channel = chn;  			// 抓图通道
+		msg.mode = 0;    			    // 抓图模式
+		msg.Quality = 3;				// 画质
+		msg.InterSnap = 0; 	            // 定时抓图时间间隔
+		msg.CmdSerial = 0;  			// 请求序列号,有效值范围 0~65535,超过范围会被截断为  
+		
+		IntByReference reserved = new IntByReference(0);
+		
+		if (!LoginModule.netsdk.CLIENT_SnapPictureEx(m_hLoginHandle, msg, reserved)) { 
+			System.err.printf("SnapPictureEx Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		} else { 
+			System.out.println("SnapPictureEx success"); 
+		}
+		return true;
+	}
+	
+	/**
+	 *设置抓图回调函数, 图片主要在m_SnapReceiveCB中返回
+	 * @param m_SnapReceiveCB
+	 */
+	public static void setSnapRevCallBack(NetSDKLib.fSnapRev m_SnapReceiveCB){ 	
+		LoginModule.netsdk.CLIENT_SetSnapRevCallBack(m_SnapReceiveCB, null);
+	}
+	
+	/**
+	 * 获取网络协议
+	 * @param m_hLoginHandle 登录句柄
+	 * @return
+	 */
+	public static CFG_DVRIP_INFO getDVRIPConfig(LLong m_hLoginHandle) {
+		CFG_DVRIP_INFO msg = new CFG_DVRIP_INFO();
+		
+		if(!ToolKits.GetDevConfig(m_hLoginHandle, -1, NetSDKLib.CFG_CMD_DVRIP, msg)) {
+			return null;
+		}
+		
+		return msg;
+	}
+	
+	/**
+	 * 网络协议配置
+	 * @param m_hLoginHandle 登陆句柄
+	 * @param enable  使能
+	 * @param address 服务器地址
+	 * @param nPort  服务器端口号
+	 * @param deviceId  设备ID
+	 * @param info 获取到的网络协议配置
+	 * @return
+	 */
+	public static boolean setDVRIPConfig(LLong m_hLoginHandle, boolean enable, String address, int nPort, byte[] deviceId, CFG_DVRIP_INFO info) {
+		CFG_DVRIP_INFO msg = info;
+		// 主动注册配置个数
+		msg.nRegistersNum = 1;  
+		
+		 // 主动注册使能
+		msg.stuRegisters[0].bEnable = enable? 1:0; 
+	
+		// 服务器个数
+		msg.stuRegisters[0].nServersNum = 1;
+		
+		// 服务器地址
+		ToolKits.StringToByteArray(address, msg.stuRegisters[0].stuServers[0].szAddress);
+	    
+		// 服务器端口号
+		msg.stuRegisters[0].stuServers[0].nPort = nPort;
+	    
+	    // 设备ID
+		ToolKits.ByteArrayToByteArray(deviceId, msg.stuRegisters[0].szDeviceID);
+		
+		return ToolKits.SetDevConfig(m_hLoginHandle, -1, NetSDKLib.CFG_CMD_DVRIP, msg);
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Start Talk
+	 * \else
+	 * 开始通话
+	 * \endif
+	 */
+	public static boolean startTalk(LLong m_hLoginHandle) {
+	
+		// 设置语音对讲编码格式
+		NetSDKLib.NETDEV_TALKDECODE_INFO talkEncode = new NetSDKLib.NETDEV_TALKDECODE_INFO();
+		talkEncode.encodeType = NetSDKLib.NET_TALK_CODING_TYPE.NET_TALK_PCM;
+		talkEncode.dwSampleRate = 8000;
+		talkEncode.nAudioBit = 16;
+		talkEncode.nPacketPeriod = 25;
+		talkEncode.write();
+		if(LoginModule.netsdk.CLIENT_SetDeviceMode(m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_ENCODE_TYPE, talkEncode.getPointer())) {
+			System.out.println("Set Talk Encode Type Succeed!");
+		} else {
+			System.err.println("Set Talk Encode Type Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		// 设置对讲模式
+		NetSDKLib.NET_SPEAK_PARAM speak = new NetSDKLib.NET_SPEAK_PARAM();
+        speak.nMode = 0;
+        speak.bEnableWait = false;
+        speak.nSpeakerChannel = 0;
+        speak.write();
+        
+        if (LoginModule.netsdk.CLIENT_SetDeviceMode(m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_SPEAK_PARAM, speak.getPointer())) {
+        	System.out.println("Set Talk Speak Mode Succeed!");
+        } else {
+        	System.err.println("Set Talk Speak Mode Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+        }
+		
+		// 设置语音对讲是否为转发模式
+		NetSDKLib.NET_TALK_TRANSFER_PARAM talkTransfer = new NetSDKLib.NET_TALK_TRANSFER_PARAM();
+		talkTransfer.bTransfer = 0;   // 是否开启语音对讲转发模式, 1-true; 0-false
+		talkTransfer.write();
+		if(LoginModule.netsdk.CLIENT_SetDeviceMode(m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_TRANSFER_MODE, talkTransfer.getPointer())) {
+			System.out.println("Set Talk Transfer Mode Succeed!");
+		} else {
+			System.err.println("Set Talk Transfer Mode Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		m_hTalkHandle = LoginModule.netsdk.CLIENT_StartTalkEx(m_hLoginHandle, AudioDataCB.getInstance(), null);
+		
+	    if(m_hTalkHandle.longValue() == 0) {
+	  	    System.err.println("Start Talk Failed!" + ToolKits.getErrorCodePrint());	  
+	  	    return false;
+	    } else {
+	  	    System.out.println("Start Talk Success");
+			if(LoginModule.netsdk.CLIENT_RecordStart()){
+				System.out.println("Start Record Success");
+				m_bRecordStatus = true;
+			} else {
+				System.err.println("Start Local Record Failed!" + ToolKits.getErrorCodePrint());
+				stopTalk(m_hTalkHandle);				
+				return false;
+			}
+	    }
+		
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Stop Talk
+	 * \else
+	 * 结束通话
+	 * \endif
+	 */
+	public static void stopTalk(LLong m_hTalkHandle) {
+		if(m_hTalkHandle.longValue() == 0) {
+			return;
+		}
+		
+		if (m_bRecordStatus){
+			LoginModule.netsdk.CLIENT_RecordStop();
+			m_bRecordStatus = false;
+		}
+		
+		if(!LoginModule.netsdk.CLIENT_StopTalkEx(m_hTalkHandle)) {			
+			System.err.println("Stop Talk Failed!" + ToolKits.getErrorCodePrint());
+    	} else {
+    		m_hTalkHandle.setValue(0);
+    	}
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Audio Data Callback
+	 * \else
+	 * 语音对讲的数据回调
+	 * \endif
+	 */
+	private static class AudioDataCB implements NetSDKLib.pfAudioDataCallBack {
+		
+		private AudioDataCB() {}
+		private static AudioDataCB audioCallBack = new AudioDataCB();
+		
+		public static AudioDataCB getInstance() {
+			return audioCallBack;
+		}
+		
+		public void invoke(LLong lTalkHandle, Pointer pDataBuf, int dwBufSize, byte byAudioFlag, Pointer dwUser){
+			
+			if(lTalkHandle.longValue() != m_hTalkHandle.longValue()) {
+				return;
+			}
+			
+			if (byAudioFlag == 0) { // 将收到的本地PC端检测到的声卡数据发送给设备端
+				
+				LLong lSendSize = LoginModule.netsdk.CLIENT_TalkSendData(m_hTalkHandle, pDataBuf, dwBufSize);
+				if(lSendSize.longValue() != (long)dwBufSize) {
+					System.err.println("send incomplete" + lSendSize.longValue() + ":" + dwBufSize);
+				} 
+			}else if (byAudioFlag == 1) { // 将收到的设备端发送过来的语音数据传给SDK解码播放
+				LoginModule.netsdk.CLIENT_AudioDecEx(m_hTalkHandle, pDataBuf, dwBufSize);
+			}
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/CapturePictureModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/CapturePictureModule.java
new file mode 100644
index 0000000..458e52b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/CapturePictureModule.java
@@ -0,0 +1,107 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * \if ENGLISH_LANG
+ * Capture Picture Interface
+ * contains:local、remote、timer and stop capture picture
+ * \else
+ * 抓图接口实现
+ * 包含: 本地、远程、定时和停止抓图
+ * \endif
+ */
+public class CapturePictureModule {
+
+	/**
+	 * \if ENGLISH_LANG
+	 * Local Capture Picture
+	 * \else
+	 * 本地抓图
+	 * \endif
+	 */
+	public static boolean localCapturePicture(LLong hPlayHandle, String picFileName) {
+				
+		if (!LoginModule.netsdk.CLIENT_CapturePictureEx(hPlayHandle, picFileName, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) { 
+			System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		} else { 
+			System.out.println("CLIENT_CapturePicture success"); 
+		}
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Remote Capture Picture
+	 * \else
+	 * 远程抓图
+	 * \endif
+	 */
+	public static boolean remoteCapturePicture(int chn) {
+		return snapPicture(chn, 0, 0);
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Timer Capture Picture
+	 * \else
+	 * 定时抓图
+	 * \endif
+	 */
+	public static boolean timerCapturePicture(int chn) {
+		return snapPicture(chn, 1, 2);
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Stop Timer Capture Picture
+	 * \else
+	 * 停止定时抓图
+	 * \endif
+	 */
+	public static boolean stopCapturePicture(int chn) {
+		return snapPicture(chn, -1, 0);
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Capture Picture (except local capture picture, others all call this interface)
+	 * \else
+	 * 抓图 (除本地抓图外, 其他全部调用此接口)
+	 * \endif
+	 */
+	public static boolean snapPicture(int chn, int mode, int interval) {
+		// send caputre picture command to device
+		NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS(); 
+		stuSnapParams.Channel = chn;  			// channel
+		stuSnapParams.mode = mode;    			// capture picture mode
+		stuSnapParams.Quality = 3;				// picture quality
+		stuSnapParams.InterSnap = interval; 	// timer capture picture time interval
+		stuSnapParams.CmdSerial = 0;  			// request serial  
+		
+		IntByReference reserved = new IntByReference(0);
+		if (!LoginModule.netsdk.CLIENT_SnapPictureEx(LoginModule.m_hLoginHandle, stuSnapParams, reserved)) { 
+			System.err.printf("CLIENT_SnapPictureEx Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		} else { 
+			System.out.println("CLIENT_SnapPictureEx success"); 
+		}
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Set Capture Picture Callback
+	 * \else
+	 * 设置抓图回调函数
+	 * \endif
+	 */
+	public static void setSnapRevCallBack(NetSDKLib.fSnapRev cbSnapReceive){ 
+		LoginModule.netsdk.CLIENT_SetSnapRevCallBack(cbSnapReceive, null);
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceControlModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceControlModule.java
new file mode 100644
index 0000000..0ce60c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceControlModule.java
@@ -0,0 +1,88 @@
+package com.netsdk.demo.module;
+
+import java.text.SimpleDateFormat;
+
+import com.netsdk.lib.NetSDKLib.CtrlType;
+import com.netsdk.lib.NetSDKLib.NET_TIME;
+import com.netsdk.lib.ToolKits;
+
+
+/**
+ * \if ENGLISH_LANG
+ * Device Control Interface
+ * contains:reboot device、setup device time and query device time
+ * \else
+ * 设备控制接口实现
+ * 包含: 重启、时间同步、获取时间功能
+ * \endif
+ */
+public class DeviceControlModule {
+    
+	/**
+	 * \if ENGLISH_LANG
+	 * Reboot Device
+	 * \else
+	 * 重启设备
+	 * \endif
+	 */
+    public static boolean reboot() {
+    	
+        if (!LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, CtrlType.CTRLTYPE_CTRL_REBOOT, null, 3000)) {
+        	System.err.println("CLIENT_ControlDevice Failed!" + ToolKits.getErrorCodePrint());
+    		return false;
+        }
+        return true;
+    }
+
+    /**
+	 * \if ENGLISH_LANG
+	 * Setup Device Time
+	 * \else
+	 * 时间同步
+	 * \endif
+	 */
+    public static boolean setTime(String date) {
+    	NET_TIME deviceTime = new NET_TIME();
+    	if (date == null) {
+    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            date = dateFormat.format(new java.util.Date());
+    	}
+    	
+    	String[] dateTime = date.split(" ");
+        String[] arrDate = dateTime[0].split("-");
+        String[] arrTime = dateTime[1].split(":");
+        deviceTime.dwYear = Integer.parseInt(arrDate[0]);
+        deviceTime.dwMonth = Integer.parseInt(arrDate[1]);
+        deviceTime.dwDay = Integer.parseInt(arrDate[2]);
+        deviceTime.dwHour = Integer.parseInt(arrTime[0]);
+        deviceTime.dwMinute = Integer.parseInt(arrTime[1]);
+        deviceTime.dwSecond = Integer.parseInt(arrTime[2]);
+
+        if (!LoginModule.netsdk.CLIENT_SetupDeviceTime(LoginModule.m_hLoginHandle, deviceTime)) {
+    		System.err.println("CLIENT_SetupDeviceTime Failed!" + ToolKits.getErrorCodePrint());
+    		return false;
+        }
+        return true;
+    }
+    
+    /**
+  	 * \if ENGLISH_LANG
+  	 * Get Device Current Time
+  	 * \else
+  	 * 获取设备当前时间
+  	 * \endif
+  	 */
+    public static String getTime() {
+    	NET_TIME deviceTime = new NET_TIME();
+    	
+    	if (!LoginModule.netsdk.CLIENT_QueryDeviceTime(LoginModule.m_hLoginHandle, deviceTime, 3000)) {
+    		System.err.println("CLIENT_QueryDeviceTime Failed!" + ToolKits.getErrorCodePrint());
+    		return null;
+    	}
+
+    	String date = deviceTime.toStringTime();
+    	date = date.replace("/", "-");
+    	
+    	return date;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceInitModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceInitModule.java
new file mode 100644
index 0000000..1d09bb3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceInitModule.java
@@ -0,0 +1,54 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 设备初始化接口实现
+ */
+public class DeviceInitModule {
+	/*
+	 * 设备初始化
+	 */
+	public static boolean initDevAccount(String localIp,String szMac, String password, String cellPhone_mail, byte byPwdResetWay) {
+		/**
+		 *  入参
+		 */
+		NET_IN_INIT_DEVICE_ACCOUNT inInit = new NET_IN_INIT_DEVICE_ACCOUNT();
+        // mac地址
+        System.arraycopy(szMac.getBytes(), 0, inInit.szMac, 0, szMac.getBytes().length);
+		
+        // 用户名
+        String username = "admin";
+        System.arraycopy(username.getBytes(), 0, inInit.szUserName, 0, username.getBytes().length);
+
+        // 密码,必须字母与数字结合,8位以上,否则设备不识别
+        if(password.getBytes().length <= 127) {
+        	System.arraycopy(password.getBytes(), 0, inInit.szPwd, 0, password.getBytes().length);
+        } else if(password.getBytes().length > 127){
+        	System.arraycopy(password.getBytes(), 0, inInit.szPwd, 0, 127);
+        }
+
+        // 设备支持的密码重置方式
+        inInit.byPwdResetWay = byPwdResetWay;
+        
+        // bit0-支持预置手机号 bit1-支持预置邮箱
+        if((byPwdResetWay >> 1 & 0x01) == 0) {  // 手机号
+        	System.arraycopy(cellPhone_mail.getBytes(), 0, inInit.szCellPhone, 0, cellPhone_mail.getBytes().length);
+        } else if((byPwdResetWay >> 1 & 0x01) == 1) {  // 邮箱
+        	System.arraycopy(cellPhone_mail.getBytes(), 0, inInit.szMail, 0, cellPhone_mail.getBytes().length);
+        }
+        
+		/**
+		 *  出参
+		 */
+		NET_OUT_INIT_DEVICE_ACCOUNT outInit = new NET_OUT_INIT_DEVICE_ACCOUNT();
+		
+		if(!LoginModule.netsdk.CLIENT_InitDevAccount(inInit, outInit, 5000, localIp)) {
+			System.err.println("初始化失败," + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		return true;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceSearchModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceSearchModule.java
new file mode 100644
index 0000000..5722dbc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DeviceSearchModule.java
@@ -0,0 +1,125 @@
+package com.netsdk.demo.module;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.enumeration.EM_SEND_SEARCH_TYPE;
+import com.netsdk.lib.structure.NET_IN_STARTSERACH_DEVICE;
+import com.netsdk.lib.structure.NET_OUT_STARTSERACH_DEVICE;
+
+
+/**
+ * 设备搜索接口实现
+ * 主要功能有 : 设备组播和广播搜索、设备IP单播搜索
+ */
+public class DeviceSearchModule {
+
+	/**
+	 * 设备组播和广播搜索
+	 * @throws SocketException 
+	 */
+	public static LLong multiBroadcastDeviceSearch(fSearchDevicesCBEx cbSearchDevices,String szlocalIp) throws SocketException {
+		NET_IN_STARTSERACH_DEVICE pInparm = new NET_IN_STARTSERACH_DEVICE();
+		
+		pInparm.cbSearchDevices=cbSearchDevices;		
+		System.arraycopy(szlocalIp.getBytes(), 0, pInparm.szLocalIp, 0, szlocalIp.getBytes().length);
+		pInparm.emSendType=EM_SEND_SEARCH_TYPE.EM_SEND_SEARCH_TYPE_MULTICAST_AND_BROADCAST.ordinal();
+		
+		Pointer pInBuf =new Memory(pInparm.size());
+		ToolKits.SetStructDataToPointer(pInparm, pInBuf, 0);
+		
+		NET_OUT_STARTSERACH_DEVICE pOutparm =new NET_OUT_STARTSERACH_DEVICE();
+		
+		Pointer pOutBuf =new Memory(pOutparm.size());
+		ToolKits.SetStructDataToPointer(pOutparm, pOutBuf, 0);
+		
+		return LoginModule.netsdk.CLIENT_StartSearchDevicesEx(pInBuf, pOutBuf);
+	}
+	
+	/**
+	 * 停止设备组播和广播搜索
+	 */
+	public static void stopDeviceSearch(LLong m_DeviceSearchHandle) {
+		if(m_DeviceSearchHandle.longValue() == 0) {
+			return;
+		}
+		
+		LoginModule.netsdk.CLIENT_StopSearchDevices(m_DeviceSearchHandle);
+		m_DeviceSearchHandle.setValue(0);
+	}
+	
+	/**
+	 * 设备IP单播搜索
+	 * @param startIP 起始IP
+	 * @param nIpNum IP个数,最大 256
+	 * @throws SocketException 
+	 */
+	public static boolean unicastDeviceSearch(String localIp,String startIP, int nIpNum, fSearchDevicesCB cbSearchDevices) throws SocketException {
+		String[] szIPStr = startIP.split("\\.");
+		
+		DEVICE_IP_SEARCH_INFO deviceSearchInfo = new DEVICE_IP_SEARCH_INFO();
+		deviceSearchInfo.nIpNum = nIpNum;
+		for(int i = 0; i < deviceSearchInfo.nIpNum; i++) {
+			System.arraycopy(getIp(szIPStr, i).getBytes(), 0, deviceSearchInfo.szIPArr[i].szIP, 0, getIp(szIPStr, i).getBytes().length);
+		}
+		if(LoginModule.netsdk.CLIENT_SearchDevicesByIPs(deviceSearchInfo, cbSearchDevices, null, localIp, 6000)) {
+			System.out.println("SearchDevicesByIPs Succeed!");
+			return true;
+		}
+		return false;
+	}
+	
+	public static String getIp(String[] ip, int num) {
+		String szIp = "";
+		if(Integer.parseInt(ip[3]) >= 255) {
+			szIp = ip[0] + "." + ip[1] + "." + String.valueOf(Integer.parseInt(ip[2]) + 1) + "." + String.valueOf(Integer.parseInt(ip[3]) + num - 255);
+		} else {
+			szIp = ip[0] + "." + ip[1] + "." + ip[2] + "." + String.valueOf(Integer.parseInt(ip[3]) + num);
+		}
+		
+		return szIp;
+	}
+	
+	/**
+	 * 获取多网卡IP 
+	 */
+	public static List<String> getHostAddress() throws SocketException {
+		
+	    List<String> ipList = new ArrayList<String>();
+	    if(NetworkInterface.getNetworkInterfaces() == null) {
+	    	return ipList;
+	    }	    
+	    Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();	   
+	    
+	    while (networkInterfaces.hasMoreElements()) {
+	        NetworkInterface networkInterface = networkInterfaces.nextElement();
+	        Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
+	        
+	        while (inetAddresses.hasMoreElements()) {
+	            InetAddress inetAddress = inetAddresses.nextElement();	            	         
+	            
+	            if (inetAddress.isLoopbackAddress()) {//回路地址,如127.0.0.1
+//	                System.out.println("loop addr:" + inetAddress);
+	            } else if (inetAddress.isLinkLocalAddress()) {//169.254.x.x
+//	                System.out.println("link addr:" + inetAddress);
+	            } else if(inetAddress instanceof Inet4Address){
+	                //非链接和回路真实ip	            	 	 				
+	            		 String localname = inetAddress.getHostName();
+			             String localip = inetAddress.getHostAddress();
+			             ipList.add(localip);	 					 				                					
+	            }
+	        }
+	    }	    
+		return ipList;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DotmatrixScreenModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DotmatrixScreenModule.java
new file mode 100644
index 0000000..2299f8b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DotmatrixScreenModule.java
@@ -0,0 +1,14 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib.NET_CTRL_SET_PARK_INFO;
+
+public class DotmatrixScreenModule {
+	
+	
+	public static boolean setDotmatrixScreen(int emType, NET_CTRL_SET_PARK_INFO msg) {
+		
+		boolean ret = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, emType, msg.getPointer(), 3000);
+		
+		return ret;	
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DownLoadRecordModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DownLoadRecordModule.java
new file mode 100644
index 0000000..1cd583c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/DownLoadRecordModule.java
@@ -0,0 +1,81 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * 下载录像接口实现
+ * 主要有 : 查询录像、下载录像、设置码流类型功能
+ */
+public class DownLoadRecordModule {
+	// 下载句柄
+	public static LLong m_hDownLoadHandle = new LLong(0);
+	
+	// 查找录像文件
+	public static boolean queryRecordFile(int nChannelId, 
+									   NetSDKLib.NET_TIME stTimeStart, 
+									   NetSDKLib.NET_TIME stTimeEnd, 
+									   NetSDKLib.NET_RECORDFILE_INFO[] stFileInfo,
+									   IntByReference nFindCount) {
+		// RecordFileType 录像类型 0:所有录像  1:外部报警  2:动态监测报警  3:所有报警  4:卡号查询   5:组合条件查询   
+		// 6:录像位置与偏移量长度   8:按卡号查询图片(目前仅HB-U和NVS特殊型号的设备支持)  9:查询图片(目前仅HB-U和NVS特殊型号的设备支持)  
+		// 10:按字段查询    15:返回网络数据结构(金桥网吧)  16:查询所有透明串数据录像文件
+		int nRecordFileType = 0; 
+		boolean bRet = LoginModule.netsdk.CLIENT_QueryRecordFile(LoginModule.m_hLoginHandle, nChannelId, 
+										nRecordFileType, stTimeStart, stTimeEnd, null, stFileInfo, 
+										stFileInfo.length * stFileInfo[0].size(), nFindCount, 5000, false);
+		
+		if(bRet) {
+			System.out.println("QueryRecordFile  Succeed! \n" + "查询到的视频个数:" + nFindCount.getValue());
+		} else {
+			System.err.println("QueryRecordFile  Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		return true;
+	}
+	
+	/**
+	 *  设置回放时的码流类型
+	 * @param m_streamType 码流类型
+	 */
+	public static void setStreamType(int m_streamType) {
+        
+        IntByReference steamType = new IntByReference(m_streamType);// 0-主辅码流,1-主码流,2-辅码流
+        int emType = NetSDKLib.EM_USEDEV_MODE.NET_RECORD_STREAM_TYPE;       
+
+        boolean bret = LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, emType, steamType.getPointer());
+        if (!bret) {
+        	System.err.println("Set Stream Type Failed, Get last error." + ToolKits.getErrorCodePrint());
+        } else {
+        	System.out.println("Set Stream Type  Succeed!");
+        }
+	}
+	
+	public static LLong downloadRecordFile(int nChannelId,    
+										     int nRecordFileType,
+										     NetSDKLib.NET_TIME stTimeStart, 
+										     NetSDKLib.NET_TIME stTimeEnd, 
+										     String SavedFileName,
+										     NetSDKLib.fTimeDownLoadPosCallBack cbTimeDownLoadPos) {
+		
+		m_hDownLoadHandle = LoginModule.netsdk.CLIENT_DownloadByTimeEx(LoginModule.m_hLoginHandle, nChannelId, nRecordFileType, 
+															stTimeStart, stTimeEnd, SavedFileName, 
+															cbTimeDownLoadPos, null, null, null, null);
+		if(m_hDownLoadHandle.longValue() != 0) {
+			System.out.println("Downloading RecordFile!");
+		} else {
+			System.err.println("Download RecordFile Failed!" + ToolKits.getErrorCodePrint());
+		}
+		return m_hDownLoadHandle;
+	}
+	
+	public static void stopDownLoadRecordFile(LLong m_hDownLoadHandle) {
+		if (m_hDownLoadHandle.longValue() == 0) {		
+			return;
+		}
+		LoginModule.netsdk.CLIENT_StopDownload(m_hDownLoadHandle);
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/GateModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/GateModule.java
new file mode 100644
index 0000000..9abff41
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/GateModule.java
@@ -0,0 +1,575 @@
+package com.netsdk.demo.module;
+
+import java.io.UnsupportedEncodingException;
+
+import com.sun.jna.Memory;
+import com.sun.jna.ptr.IntByReference;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+import com.netsdk.lib.ToolKits;
+
+public class GateModule {
+	// 查询句柄
+	private static LLong m_lFindHandle = new LLong(0);
+	
+    /**
+     * 订阅实时上传智能分析数据
+     * @return 
+     */
+    public static LLong realLoadPic(int ChannelId, NetSDKLib.fAnalyzerDataCallBack m_AnalyzerDataCB) { 	
+    	/**
+		 * 说明:
+		 * 	通道数可以在有登录是返回的信息 m_stDeviceInfo.byChanNum 获取
+		 *  下列仅订阅了0通道的智能事件.
+		 */
+		int bNeedPicture = 1; // 是否需要图片
+
+		LLong m_hAttachHandle = LoginModule.netsdk.CLIENT_RealLoadPictureEx(LoginModule.m_hLoginHandle, ChannelId,  NetSDKLib.EVENT_IVS_ALL, 
+				bNeedPicture , m_AnalyzerDataCB , null , null);
+		if( m_hAttachHandle.longValue() != 0  ) {
+			System.out.println("CLIENT_RealLoadPictureEx Success  ChannelId : \n" + ChannelId);
+		} else {
+			System.err.println("CLIENT_RealLoadPictureEx Failed!" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		return m_hAttachHandle;
+    }
+    
+    /**
+     * 停止上传智能分析数据-图片
+     */
+    public static void stopRealLoadPic(LLong m_hAttachHandle) {
+        if (0 != m_hAttachHandle.longValue()) {
+        	LoginModule.netsdk.CLIENT_StopLoadPic(m_hAttachHandle);
+            System.out.println("Stop detach IVS event");
+            m_hAttachHandle.setValue(0);
+        }
+    }
+    
+    //////////////////////////////////////  卡信息的增、删、改、清空  ////////////////////////////////////////
+    
+	/**
+	 * 添加卡
+	 * @param cardNo  	  卡号
+	 * @param userId  	  用户ID
+	 * @param cardName   卡名
+	 * @param cardPwd    卡密码
+	 * @param cardStatus 卡状态
+	 * @param cardType   卡类型
+	 * @param useTimes   使用次数
+	 * @param isFirstEnter  是否首卡, 1-true, 0-false
+	 * @param isValid  		是否有效, 1-true, 0-false
+	 * @param startValidTime  有效开始时间
+	 * @param endValidTime    有效结束时间
+	 * @return true:成功   false:失败
+	 */
+	public static boolean insertCard(String cardNo, String userId, String cardName, String cardPwd,
+								     int cardStatus, int cardType, int useTimes, int isFirstEnter,
+								     int isValid, String startValidTime, String endValidTime) {
+		/**
+		 * 门禁卡记录集信息 
+		 */
+		NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
+		
+		// 卡号
+		System.arraycopy(cardNo.getBytes(), 0, accessCardInfo.szCardNo, 0, cardNo.getBytes().length);
+		
+		// 用户ID
+		System.arraycopy(userId.getBytes(), 0, accessCardInfo.szUserID, 0, userId.getBytes().length);
+		
+		// 卡名(设备上显示的姓名)
+		try {
+			System.arraycopy(cardName.getBytes("GBK"), 0, accessCardInfo.szCardName, 0, cardName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		
+		// 卡密码
+		System.arraycopy(cardPwd.getBytes(), 0, accessCardInfo.szPsw, 0, cardPwd.getBytes().length);
+		
+		//-- 设置开门权限
+		accessCardInfo.nDoorNum = 2; 
+		accessCardInfo.sznDoors[0] = 0;
+		accessCardInfo.sznDoors[1] = 1;
+		accessCardInfo.nTimeSectionNum = 2; 	  // 与门数对应
+		accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
+		accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
+		
+		// 卡状态
+		accessCardInfo.emStatus = cardStatus;
+		
+		// 卡类型
+		accessCardInfo.emType = cardType;
+
+		// 使用次数
+		accessCardInfo.nUserTime = useTimes;
+		
+		// 是否首卡
+		accessCardInfo.bFirstEnter = isFirstEnter;
+		
+		// 是否有效
+		accessCardInfo.bIsValid = isValid;
+		
+		// 有效开始时间
+		String[] startTimes = startValidTime.split(" ");
+		accessCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]);
+		accessCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]);
+		accessCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]);
+		accessCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]);
+		accessCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]);
+		accessCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]);
+	
+		// 有效结束时间
+		String[] endTimes = endValidTime.split(" ");
+		accessCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]);
+		accessCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]);
+		accessCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]);
+		accessCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]);
+		accessCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]);
+		accessCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]);
+		
+		/**
+		 * 记录集操作
+		 */
+		NET_CTRL_RECORDSET_INSERT_PARAM insert = new NET_CTRL_RECORDSET_INSERT_PARAM();
+		insert.stuCtrlRecordSetInfo.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;   // 记录集类型
+		insert.stuCtrlRecordSetInfo.pBuf = accessCardInfo.getPointer();
+		
+		accessCardInfo.write();
+		insert.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, 
+								   CtrlType.CTRLTYPE_CTRL_RECORDSET_INSERT, insert.getPointer(), 5000);
+		insert.read();
+		accessCardInfo.read();
+		
+		if(!bRet) {
+			System.err.println("添加卡信息失败." + ToolKits.getErrorCodePrint());
+			return false;
+		} else {
+			System.out.println("添加卡信息成功,卡信息记录集编号 : " + insert.stuCtrlRecordSetResult.nRecNo);
+		}
+		
+		return true;
+	}
+	
+	/**
+	 * 修改卡信息
+	 * @param recordNo   记录集编号
+	 * @param cardNo  	  卡号
+	 * @param userId  	  用户ID
+	 * @param cardName   卡名
+	 * @param cardPwd    卡密码
+	 * @param cardStatus 卡状态
+	 * @param cardType   卡类型
+	 * @param useTimes   使用次数
+	 * @param isFirstEnter  是否首卡, 1-true, 0-false
+	 * @param isValid  		是否有效, 1-true, 0-false
+	 * @param startValidTime  有效开始时间
+	 * @param endValidTime    有效结束时间
+	 * @return true:成功   false:失败
+	 */
+	public static boolean modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd,
+								     int cardStatus, int cardType, int useTimes, int isFirstEnter,
+								     int isValid, String startValidTime, String endValidTime) {
+		/**
+		 * 门禁卡记录集信息 
+		 */
+		NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD();
+		// 记录集编号, 修改、删除卡信息必须填写
+		accessCardInfo.nRecNo = recordNo;  
+		
+		// 卡号
+		System.arraycopy(cardNo.getBytes(), 0, accessCardInfo.szCardNo, 0, cardNo.getBytes().length);
+		
+		// 用户ID
+		System.arraycopy(userId.getBytes(), 0, accessCardInfo.szUserID, 0, userId.getBytes().length);
+		
+		// 卡名(设备上显示的姓名)
+		try {
+			System.arraycopy(cardName.getBytes("GBK"), 0, accessCardInfo.szCardName, 0, cardName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+			
+		// 卡密码
+		System.arraycopy(cardPwd.getBytes(), 0, accessCardInfo.szPsw, 0, cardPwd.getBytes().length);
+		
+		//-- 设置开门权限
+		accessCardInfo.nDoorNum = 2; 
+		accessCardInfo.sznDoors[0] = 0;
+		accessCardInfo.sznDoors[1] = 1;
+		accessCardInfo.nTimeSectionNum = 2; 	  // 与门数对应
+		accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效
+		accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效
+		
+		// 卡状态
+		accessCardInfo.emStatus = cardStatus;
+		
+		// 卡类型
+		accessCardInfo.emType = cardType;
+
+		// 使用次数
+		accessCardInfo.nUserTime = useTimes;
+		
+		// 是否首卡
+		accessCardInfo.bFirstEnter = isFirstEnter;
+		
+		// 是否有效
+		accessCardInfo.bIsValid = isValid;
+		
+		// 有效开始时间
+		String[] startTimes = startValidTime.split(" ");
+		accessCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]);
+		accessCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]);
+		accessCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]);
+		accessCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]);
+		accessCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]);
+		accessCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]);
+	
+		// 有效结束时间
+		String[] endTimes = endValidTime.split(" ");
+		accessCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]);
+		accessCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]);
+		accessCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]);
+		accessCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]);
+		accessCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]);
+		accessCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]);
+		
+		/**
+		 * 记录集操作
+		 */
+		NET_CTRL_RECORDSET_PARAM update = new NET_CTRL_RECORDSET_PARAM();
+    	update.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;    // 记录集信息类型
+    	update.pBuf = accessCardInfo.getPointer();
+		
+    	accessCardInfo.write();
+		update.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, 
+								   CtrlType.CTRLTYPE_CTRL_RECORDSET_UPDATE, update.getPointer(), 5000);
+		update.read();
+		accessCardInfo.read();
+		
+		if(!bRet) {
+			System.err.println("修改卡信息失败." + ToolKits.getErrorCodePrint());
+			return false;
+		} else {
+			System.out.println("修改卡信息成功 ");
+		}
+		
+		return true;
+	}
+	
+	/**
+	 * 删除卡信息(单个删除)
+	 * @param recordNo 记录集编号
+	 */
+	public static boolean deleteCard(int recordNo) {
+    	/**
+		 * 记录集操作
+		 */
+    	NET_CTRL_RECORDSET_PARAM msg = new NET_CTRL_RECORDSET_PARAM();
+    	msg.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;
+    	msg.pBuf = new IntByReference(recordNo).getPointer();
+
+    	msg.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, 
+    							   CtrlType.CTRLTYPE_CTRL_RECORDSET_REMOVE, msg.getPointer(), 5000);
+    	msg.read();
+		
+    	if(!bRet){
+    		System.err.println("删除卡信息失败." + ToolKits.getErrorCodePrint());
+    	} else {
+    		System.out.println("删除卡信息成功.");
+    	}
+    	
+    	return bRet;
+	}
+	
+   /**
+	 * 清除所有卡信息
+	 */
+	public static boolean clearCard() {
+		/**
+		 * 记录集操作
+		 */
+		NetSDKLib.NET_CTRL_RECORDSET_PARAM msg = new NetSDKLib.NET_CTRL_RECORDSET_PARAM();
+		msg.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD;    // 门禁卡记录集信息类型
+    	
+		msg.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, 
+    					             CtrlType.CTRLTYPE_CTRL_RECORDSET_CLEAR, msg.getPointer(), 5000);
+    	msg.read();
+    	if(!bRet){
+    		System.err.println("清空卡信息失败." + ToolKits.getErrorCodePrint());
+    	} else {
+    		System.out.println("清空卡信息成功.");
+    	}
+    	
+    	return bRet;
+	}
+	
+	
+	/////////////////////////////////  人脸的增、删、改、清空   ///////////////////////////////////////
+	
+	/**
+	 * 添加人脸
+	 * @param userId 用户ID
+	 * @param memory 图片缓存
+	 * @return
+	 */
+	public static boolean addFaceInfo(String userId, Memory memory) {
+    	int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD;  // 添加
+    	
+    	/**
+    	 *  入参
+    	 */
+    	NET_IN_ADD_FACE_INFO stIn = new NET_IN_ADD_FACE_INFO();
+    	
+    	// 用户ID
+    	System.arraycopy(userId.getBytes(), 0, stIn.szUserID, 0, userId.getBytes().length);  
+    	
+    	// 人脸照片个数
+    	stIn.stuFaceInfo.nFacePhoto = 1;  
+    	
+    	// 每张图片的大小
+		stIn.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
+
+    	// 人脸照片数据,大小不超过100K, 图片格式为jpg
+		stIn.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory; 
+    	
+    	/**
+    	 *  出参
+    	 */
+    	NET_OUT_ADD_FACE_INFO stOut = new NET_OUT_ADD_FACE_INFO();
+    	
+    	stIn.write();
+    	stOut.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, stIn.getPointer(), stOut.getPointer(), 5000);
+    	stIn.read();
+    	stOut.read();
+    	if(bRet) {
+    		System.out.println("添加人脸成功!");
+    	} else {
+    		System.err.println("添加人脸失败!" + ToolKits.getErrorCodePrint());
+    		return false;
+    	}
+    	
+    	return true;
+    }
+	
+	/**
+	 * 修改人脸
+	 * @param userId 用户ID
+	 * @param memory 图片缓存
+	 * @return
+	 */
+	public static boolean modifyFaceInfo(String userId, Memory memory) {
+    	int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE;  // 修改
+    	
+    	/**
+    	 *  入参
+    	 */
+    	NET_IN_UPDATE_FACE_INFO stIn = new NET_IN_UPDATE_FACE_INFO();
+    	
+    	// 用户ID
+    	System.arraycopy(userId.getBytes(), 0, stIn.szUserID, 0, userId.getBytes().length);  
+    	
+    	// 人脸照片个数
+    	stIn.stuFaceInfo.nFacePhoto = 1;  
+    	
+    	// 每张图片的大小
+		stIn.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size();
+
+    	// 人脸照片数据,大小不超过100K, 图片格式为jpg
+		stIn.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory; 
+    	
+    	/**
+    	 *  出参
+    	 */
+		NET_OUT_UPDATE_FACE_INFO stOut = new NET_OUT_UPDATE_FACE_INFO();
+    	
+    	stIn.write();
+    	stOut.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, stIn.getPointer(), stOut.getPointer(), 5000);
+    	stIn.read();
+    	stOut.read();
+    	if(bRet) {
+    		System.out.println("修改人脸成功!");
+    	} else {
+    		System.err.println("修改人脸失败!" + ToolKits.getErrorCodePrint());
+    		return false;
+    	}
+    	
+    	return true;
+    }
+    
+ 	/**
+   	 * 删除人脸(单个删除)
+   	 * @param userId 用户ID
+   	 */
+    public static boolean deleteFaceInfo(String userId) {
+    	int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_REMOVE;
+    	
+    	/**
+    	 * 入参
+    	 */
+    	NET_IN_REMOVE_FACE_INFO inRemove = new NET_IN_REMOVE_FACE_INFO();
+    	
+    	// 用户ID
+    	System.arraycopy(userId.getBytes(), 0, inRemove.szUserID, 0, userId.getBytes().length);  
+    	
+    	/**
+    	 *  出参
+    	 */
+    	NET_OUT_REMOVE_FACE_INFO outRemove = new NET_OUT_REMOVE_FACE_INFO();
+    	
+    	inRemove.write();
+    	outRemove.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, inRemove.getPointer(), outRemove.getPointer(), 5000);
+    	inRemove.read();
+    	outRemove.read();
+    	if(bRet) {
+    		System.out.println("删除人脸成功!");
+    	} else {
+    		System.err.println("删除人脸失败!" + ToolKits.getErrorCodePrint());
+    	}
+    	
+    	return bRet;
+    }
+    
+  	/**
+  	 * 清除所有人脸
+  	 */
+    public static boolean clearFaceInfo() {
+    	int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_CLEAR;  // 清除
+    	
+    	/**
+    	 *  入参
+    	 */
+    	NET_IN_CLEAR_FACE_INFO stIn = new NET_IN_CLEAR_FACE_INFO();
+    	
+    	/**
+    	 *  出参
+    	 */
+    	NET_OUT_REMOVE_FACE_INFO stOut = new NET_OUT_REMOVE_FACE_INFO();
+    	
+    	stIn.write();
+    	stOut.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(LoginModule.m_hLoginHandle, emType, 
+    							stIn.getPointer(), stOut.getPointer(), 5000);
+    	stIn.read();
+    	stOut.read();
+    	if(bRet) {
+    		System.out.println("清空人脸成功!");
+    	} else {
+    		System.err.println("清空人脸失败!" + ToolKits.getErrorCodePrint());
+    	}
+    	
+    	return bRet;
+    }
+
+    /**
+     * 查询卡信息,获取查询句柄
+     * @param cardNo 卡号,为空,查询所有的
+     * @return
+     */
+    public static boolean findCard(String cardNo) {
+    	/**
+		 * 查询条件
+		 */
+		NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION findCondition = new NetSDKLib.FIND_RECORD_ACCESSCTLCARD_CONDITION();	
+
+		if(!cardNo.isEmpty()) {
+			// 卡号查询条件是否有效
+			findCondition.abCardNo = 1;   
+			
+			// 卡号
+			System.arraycopy(cardNo.getBytes(), 0, findCondition.szCardNo, 0, cardNo.getBytes().length);
+		}
+		
+		/**
+		 * CLIENT_FindRecord 接口入参
+		 */
+		NetSDKLib.NET_IN_FIND_RECORD_PARAM stIn = new NetSDKLib.NET_IN_FIND_RECORD_PARAM();
+		stIn.emType = NetSDKLib.EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; 
+		if(!cardNo.isEmpty()) {
+			stIn.pQueryCondition = findCondition.getPointer();
+		}
+		
+		/**
+		 * CLIENT_FindRecord 接口出参
+		 */
+		NetSDKLib.NET_OUT_FIND_RECORD_PARAM stOut = new NetSDKLib.NET_OUT_FIND_RECORD_PARAM();
+
+		findCondition.write();
+		if(!LoginModule.netsdk.CLIENT_FindRecord(LoginModule.m_hLoginHandle, stIn, stOut, 5000)) {
+			System.err.println("没查到卡信息!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		findCondition.read();
+		
+		m_lFindHandle = stOut.lFindeHandle;
+		return true;
+    }
+    
+    /**
+     * 查询具体的卡信息
+     * @param nFindCount 每次查询的个数
+     * @return 返回具体的查询信息
+     */
+    public static NET_RECORDSET_ACCESS_CTL_CARD[] findNextCard(int nFindCount) {
+    	// 用于申请内存
+		NET_RECORDSET_ACCESS_CTL_CARD[] pstRecord = new NET_RECORDSET_ACCESS_CTL_CARD[nFindCount];
+		for(int i = 0; i < nFindCount; i++) {
+			pstRecord[i] = new NET_RECORDSET_ACCESS_CTL_CARD();
+		}
+		
+		/**
+		 *  CLIENT_FindNextRecord 接口入参
+		 */
+		NET_IN_FIND_NEXT_RECORD_PARAM stNextIn = new NET_IN_FIND_NEXT_RECORD_PARAM();
+		stNextIn.lFindeHandle = m_lFindHandle;
+		stNextIn.nFileCount = nFindCount;  //想查询的记录条数
+		
+		/**
+		 *  CLIENT_FindNextRecord 接口出参
+		 */
+		NET_OUT_FIND_NEXT_RECORD_PARAM stNextOut = new NET_OUT_FIND_NEXT_RECORD_PARAM();
+		stNextOut.nMaxRecordNum = nFindCount;
+		stNextOut.pRecordList = new Memory(pstRecord[0].dwSize * nFindCount);  // 申请内存
+		stNextOut.pRecordList.clear(pstRecord[0].dwSize * nFindCount);	
+		
+		ToolKits.SetStructArrToPointerData(pstRecord, stNextOut.pRecordList); // 将数组内存拷贝给指针
+			
+		if(LoginModule.netsdk.CLIENT_FindNextRecord(stNextIn, stNextOut, 5000)) {												
+			if(stNextOut.nRetRecordNum == 0) {
+				return null;
+			}
+
+			ToolKits.GetPointerDataToStructArr(stNextOut.pRecordList, pstRecord);  // 获取卡信息
+					
+			// 获取有用的信息
+			NET_RECORDSET_ACCESS_CTL_CARD[] pstRecordEx = new NET_RECORDSET_ACCESS_CTL_CARD[stNextOut.nRetRecordNum];
+			for(int i = 0; i < stNextOut.nRetRecordNum; i++) {
+				pstRecordEx[i] = new NET_RECORDSET_ACCESS_CTL_CARD();
+				pstRecordEx[i] = pstRecord[i];
+			}
+			
+			return pstRecordEx;			
+		} 
+		
+		return null;
+    }
+    
+    /**
+     * 关闭查询
+     */
+    public static void findCardClose() {
+    	if(m_lFindHandle.longValue() != 0) {
+    		LoginModule.netsdk.CLIENT_FindRecordClose(m_lFindHandle);  
+    		m_lFindHandle.setValue(0);
+    	} 	
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/LoginModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/LoginModule.java
new file mode 100644
index 0000000..5cf73c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/LoginModule.java
@@ -0,0 +1,148 @@
+package com.netsdk.demo.module;
+
+import java.io.File;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY;
+import com.netsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * 登陆接口实现
+ * 主要有 :初始化、登陆、登出功能
+ */
+public class LoginModule {
+
+	public static NetSDKLib netsdk 		= NetSDKLib.NETSDK_INSTANCE;
+	public static NetSDKLib configsdk 	= NetSDKLib.CONFIG_INSTANCE; 
+	
+	// 设备信息
+	public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
+	
+	// 登陆句柄
+	public static LLong m_hLoginHandle = new LLong(0);   
+	
+	private static boolean bInit    = false;
+	private static boolean bLogopen = false;
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Init
+	 * \else
+	 * 初始化
+	 * \endif
+	 */
+	public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) {	
+		bInit = netsdk.CLIENT_Init(disConnect, null);
+		if(!bInit) {
+			System.out.println("Initialize SDK failed");
+			return false;
+		}
+
+		//打开日志,可选
+		NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
+        File path = new File("./sdklog/");
+        if (!path.exists()) {
+            path.mkdir();
+        }
+		String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log";
+		setLog.nPrintStrategy = 0;
+		setLog.bSetFilePath = 1;
+		System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
+		System.out.println(logPath);
+		setLog.bSetPrintStrategy = 1;
+		bLogopen = netsdk.CLIENT_LogOpen(setLog);
+		if(!bLogopen ) {
+			System.err.println("Failed to open NetSDK log");
+		}
+		
+		// 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作
+		// 此操作为可选操作,但建议用户进行设置
+		netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
+	    
+		//设置登录超时时间和尝试次数,可选
+		int waitTime = 5000; //登录请求响应超时时间设置为5S
+		int tryTimes = 1;    //登录时尝试建立链接1次
+		netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
+		
+		
+		// 设置更多网络参数,NET_PARAM的nWaittime,nConnectTryNum成员与CLIENT_SetConnectTime 
+		// 接口设置的登录设备超时时间和尝试次数意义相同,可选
+		NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
+		netParam.nConnectTime = 10000;      // 登录时尝试建立链接的超时时间
+		netParam.nGetConnInfoTime = 3000;   // 设置子连接的超时时间
+		netParam.nGetDevInfoTime = 3000;//获取设备信息超时时间,为0默认1000ms
+		netsdk.CLIENT_SetNetworkParam(netParam);	
+		
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * CleanUp
+	 * \else
+	 * 清除环境
+	 * \endif
+	 */
+	public static void cleanup() {
+		if(bLogopen) {
+			netsdk.CLIENT_LogClose();
+		}
+		
+		if(bInit) {
+			netsdk.CLIENT_Cleanup();
+		}
+	}
+
+	/**
+	 * \if ENGLISH_LANG
+	 * Login Device
+	 * \else
+	 * 登录设备
+	 * \endif
+	 */
+	public static boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {	
+		//IntByReference nError = new IntByReference(0);
+		//入参
+		NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam=new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
+		pstInParam.nPort=m_nPort;
+		pstInParam.szIP=m_strIp.getBytes();
+		pstInParam.szPassword=m_strPassword.getBytes();
+		pstInParam.szUserName=m_strUser.getBytes();
+		//出参
+		NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
+		pstOutParam.stuDeviceInfo=m_stDeviceInfo;
+		//m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError);		
+		m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
+		if(m_hLoginHandle.longValue() == 0) {
+			System.err.printf("Login Device[%s] Port[%d]Failed. %s\n", m_strIp, m_nPort, ToolKits.getErrorCodePrint());
+		} else {
+			System.out.println("Login Success [ " + m_strIp + " ]");
+		}	
+		
+		return m_hLoginHandle.longValue() == 0? false:true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Logout Device
+	 * \else
+	 * 登出设备
+	 * \endif
+	 */
+	public static boolean logout() {
+		if(m_hLoginHandle.longValue() == 0) {
+			return false;
+		}
+		
+		boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
+		if(bRet) {			
+			m_hLoginHandle.setValue(0);	
+		}
+		
+		return bRet;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/PtzControlModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/PtzControlModule.java
new file mode 100644
index 0000000..8ba67f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/PtzControlModule.java
@@ -0,0 +1,206 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 云台控制接口实现
+ * 主要有 :八个方向控制、变倍、变焦、光圈功能
+ */
+public class PtzControlModule {
+
+	/**
+	 * 向上
+	 */
+	public static boolean ptzControlUpStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+									NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 
+									lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlUpEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+									 NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 
+									 0, 0, 0, 1);
+	}
+	
+	/**
+	 * 向下
+	 */
+	public static boolean ptzControlDownStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, 
+											lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlDownEnd(int nChannelID) {
+		return 	LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											 NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, 
+											 0, 0, 0, 1);
+	}
+	
+	/**
+	 * 向左
+	 */
+	public static boolean ptzControlLeftStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, 
+											lParam1, lParam2, 0, 0);	
+	}
+	public static boolean ptzControlLeftEnd(int nChannelID) {
+		return	LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											 NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, 
+											 0, 0, 0, 1);	
+	}
+	
+	/**
+	 * 向右
+	 */
+	public static boolean ptzControlRightStart(int nChannelID, int lParam1,int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, 
+											lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlRightEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											 NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, 
+											 0, 0, 0, 1);		
+	}
+	
+	/**
+	 * 向左上
+	 */
+	public static boolean ptzControlLeftUpStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, 
+											lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlLeftUpEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											 NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, 
+											 0, 0, 0, 1);	
+	}
+	
+	/**
+	 * 向右上
+	 */
+	public static boolean ptzControlRightUpStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, 
+											lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlRightUpEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+											 NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, 
+											 0, 0, 0, 1);	
+	}
+
+	/**
+	 * 向左下
+	 */
+	public static boolean ptzControlLeftDownStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+													NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, 
+													lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlLeftDownEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+										 NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, 
+										 0, 0, 0, 1);
+	}
+	
+	/**
+	 * 向右下
+	 */
+	public static boolean ptzControlRightDownStart(int nChannelID, int lParam1, int lParam2) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+													NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, 
+													lParam1, lParam2, 0, 0);
+	}
+	public static boolean ptzControlRightDownEnd(int nChannelID) {
+		return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+										 NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, 
+										 0, 0, 0, 1);
+	}
+	
+    /**
+     * 变倍+
+     */
+    public static boolean ptzControlZoomAddStart(int nChannelID, int lParam2) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+							        	   NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 
+							        	   0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlZoomAddEnd(int nChannelID) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+					            		    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 
+					            		    0, 0, 0, 1);
+    }
+
+    /**
+     * 变倍-
+     */
+    public static boolean ptzControlZoomDecStart(int nChannelID, int lParam2) {
+       return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+							        	    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 
+							        	    0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlZoomDecEnd(int nChannelID) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+					            		     NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 
+					            		     0, 0, 0, 1);
+    }
+
+    /**
+     * 变焦+
+     */
+    public static boolean ptzControlFocusAddStart(int nChannelID, int lParam2) {
+    	return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+									        	    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 
+									        	    0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlFocusAddEnd(int nChannelID) {
+    	return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+				            		     NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 
+				            		     0, 0, 0, 1);
+    }
+
+    /**
+     * 变焦-
+     */
+    public static boolean ptzControlFocusDecStart(int nChannelID, int lParam2) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+							        	    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 
+							        	    0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlFocusDecEnd(int nChannelID) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+					            		     NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 
+					            		     0, 0, 0, 1);
+    }
+
+    /**
+     * 光圈+
+     */
+    public static boolean ptzControlIrisAddStart(int nChannelID, int lParam2) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+							        	    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 
+							        	    0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlIrisAddEnd(int nChannelID) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+					            		     NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 
+					            		     0, 0, 0, 1);
+    }
+
+    /**
+     * 光圈-
+     */
+    public static boolean ptzControlIrisDecStart(int nChannelID, int lParam2) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+									        	    NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 
+									        	    0, lParam2, 0, 0);
+    }
+    public static boolean ptzControlIrisDecEnd(int nChannelID) {
+        return LoginModule.netsdk.CLIENT_DHPTZControlEx(LoginModule.m_hLoginHandle, nChannelID, 
+					            		     NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 
+					            		     0, 0, 0, 1);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/RealPlayModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/RealPlayModule.java
new file mode 100644
index 0000000..617e269
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/RealPlayModule.java
@@ -0,0 +1,51 @@
+package com.netsdk.demo.module;
+
+import java.awt.Panel;
+
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.Native;
+
+/**
+ * 实时预览接口实现
+ * 主要有 :开始拉流、停止拉流功能
+ */
+public class RealPlayModule {	
+	/**
+	 * \if ENGLISH_LANG
+	 * Start RealPlay
+	 * \else
+	 * 开始预览
+	 * \endif
+	 */
+	public static LLong startRealPlay(int channel, int stream, Panel realPlayWindow) {
+		LLong m_hPlayHandle = LoginModule.netsdk.CLIENT_RealPlayEx(LoginModule.m_hLoginHandle, channel, Native.getComponentPointer(realPlayWindow), stream);
+	
+	    if(m_hPlayHandle.longValue() == 0) {
+	  	    System.err.println("开始实时预览失败,错误码" + ToolKits.getErrorCodePrint());
+	    } else {
+	  	    System.out.println("Success to start realplay"); 
+	    }
+	    
+	    return m_hPlayHandle;
+	} 
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Start RealPlay
+	 * \else
+	 * 停止预览
+	 * \endif
+	 */
+	public static void stopRealPlay(LLong m_hPlayHandle) {
+		if(m_hPlayHandle.longValue() == 0) {
+			return;
+		}
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_StopRealPlayEx(m_hPlayHandle);
+		if(bRet) {
+			m_hPlayHandle.setValue(0);
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/SearchByPictureModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/SearchByPictureModule.java
new file mode 100644
index 0000000..5b0141b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/SearchByPictureModule.java
@@ -0,0 +1,214 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+import com.sun.jna.Memory;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * 以图搜图接口实现,跟查询人脸库里的人员信息的查找接口是一样的,入参和实现有区别
+ * 目前只支持IVSS
+ */
+public class SearchByPictureModule {
+	// 查询密令
+	public static int nToken = 0;
+	
+	private static LLong m_FindHandle = null;
+	
+	// 订阅句柄
+	private static LLong attachFaceHandle = new LLong(0);
+	
+	/**
+	 * 按条件查询目标识别结果
+	 * @param memory 	  图片缓存
+	 * @param startTime  起始时间, 历史库需要时间,人脸库不需要时间
+	 * @param endTime    结束时间, 历史库需要时间,人脸库不需要时间
+	 * @param isHistory  是否是历史库, true-历史库; false-人脸库
+	 * @param nChn       通道号, 历史库需要通道号,人脸库不需要通道号
+	 * @param similary   相似度
+	 * @return 查询到的所有人员个数  
+	 */
+	public static int startFindPerson(Memory memory,
+									  String startTime, 
+									  String endTime,
+									  boolean isHistory,
+									  int nChn,
+									  String similary) {	
+		
+		m_FindHandle = null;
+		nToken = 0;
+		int nTotalCount = 0;  
+		
+		/*
+		 * 入参, IVVS设备,查询条件只有  stuInStartFind.stPerson 里的参数有效
+		 */
+		NET_IN_STARTFIND_FACERECONGNITION stuIn = new NET_IN_STARTFIND_FACERECONGNITION();
+
+		// 人员信息查询条件是否有效, 并使用扩展结构体
+		stuIn.bPersonExEnable = 1; 
+		
+		// 图片信息
+		if(memory != null) {
+			stuIn.pBuffer = memory;
+			stuIn.nBufferLen = (int)memory.size();
+			stuIn.stPersonInfoEx.wFacePicNum = 1;
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwOffSet = 0;
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwFileLenth = (int)memory.size();
+		}
+		
+		// 相似度
+		if(!similary.isEmpty()) {
+			stuIn.stMatchOptions.nSimilarity = Integer.parseInt(similary);
+		}
+		
+		stuIn.stFilterInfo.nGroupIdNum = 0;
+		stuIn.stFilterInfo.nRangeNum = 1;
+		
+		if(isHistory) {  // 历史库
+			// 通道号
+			stuIn.nChannelID = nChn; 
+			stuIn.stFilterInfo.szRange[0] = EM_FACE_DB_TYPE.NET_FACE_DB_TYPE_HISTORY;  // 待查询数据库类型,设备只支持一个
+			// 开始时间
+			String[] startTimeStr = startTime.split("-");
+			stuIn.stFilterInfo.stStartTime.dwYear = Integer.parseInt(startTimeStr[0]);
+			stuIn.stFilterInfo.stStartTime.dwMonth = Integer.parseInt(startTimeStr[1]);
+			stuIn.stFilterInfo.stStartTime.dwDay = Integer.parseInt(startTimeStr[2]);
+			stuIn.stFilterInfo.stStartTime.dwHour= 0;
+			stuIn.stFilterInfo.stStartTime.dwMinute= 0;
+			stuIn.stFilterInfo.stStartTime.dwSecond= 0;
+			// 结束时间
+			String[] endTimeStr = endTime.split("-");
+			stuIn.stFilterInfo.stEndTime.dwYear = Integer.parseInt(endTimeStr[0]);
+			stuIn.stFilterInfo.stEndTime.dwMonth = Integer.parseInt(endTimeStr[1]);
+			stuIn.stFilterInfo.stEndTime.dwDay = Integer.parseInt(endTimeStr[2]);
+			stuIn.stFilterInfo.stEndTime.dwHour=23;
+			stuIn.stFilterInfo.stEndTime.dwMinute=59;
+			stuIn.stFilterInfo.stEndTime.dwSecond=59;
+			stuIn.stFilterInfo.emFaceType = EM_FACERECOGNITION_FACE_TYPE.EM_FACERECOGNITION_FACE_TYPE_ALL;
+		} else {        // 人脸库
+			stuIn.stFilterInfo.szRange[0] = EM_FACE_DB_TYPE.NET_FACE_DB_TYPE_BLACKLIST;  // 待查询数据库类型,设备只支持一个
+		}
+	
+	    /*
+	     * 出参
+	     */
+	    NET_OUT_STARTFIND_FACERECONGNITION stuOut = new NET_OUT_STARTFIND_FACERECONGNITION();
+	    stuIn.write();
+	    stuOut.write();
+	    if(LoginModule.netsdk.CLIENT_StartFindFaceRecognition(LoginModule.m_hLoginHandle, stuIn,  stuOut, 4000)) {        
+	    	m_FindHandle = stuOut.lFindHandle;
+	    	nTotalCount = stuOut.nTotalCount;
+	    	nToken = stuOut.nToken;
+	    } else {
+	        System.out.println("CLIENT_StartFindFaceRecognition Failed, Error:" + ToolKits.getErrorCodePrint());
+	    }
+	    
+	    return nTotalCount;
+	}
+	
+	/**
+	 * 查找目标识别结果
+	 * @param beginNum 查询起始序号
+	 * @param nCount  当前想查询的记录条数
+	 * @return 返回的人员信息数组
+	 */
+	public static CANDIDATE_INFOEX[] doFindNextPerson(int beginNum, int nCount) {
+    	/*
+    	 *入参
+    	 */
+        NetSDKLib.NET_IN_DOFIND_FACERECONGNITION  stuIn = new NetSDKLib.NET_IN_DOFIND_FACERECONGNITION();
+        stuIn.lFindHandle = m_FindHandle;
+        stuIn.nCount      = nCount;  	 // 当前想查询的记录条数
+        stuIn.nBeginNum   = beginNum;     // 查询起始序号
+        
+        /*
+         * 出参
+         */
+        NetSDKLib.NET_OUT_DOFIND_FACERECONGNITION stuOut = new NetSDKLib.NET_OUT_DOFIND_FACERECONGNITION();;	
+        stuOut.bUseCandidatesEx = 1;				// 是否使用候选对象扩展结构体
+        
+        // 必须申请内存,每次查询几个,必须至少申请几个,最大申请20个
+        for(int i = 0; i < nCount; i++) {
+            stuOut.stuCandidatesEx[i].stPersonInfo.szFacePicInfo[0].nFilePathLen = 256;
+            stuOut.stuCandidatesEx[i].stPersonInfo.szFacePicInfo[0].pszFilePath = new Memory(256);
+        }
+        
+    	stuIn.write();
+    	stuOut.write();
+        if(LoginModule.netsdk.CLIENT_DoFindFaceRecognition(stuIn, stuOut, 4000)) {
+        	stuIn.read();
+        	stuOut.read();
+        	
+        	if(stuOut.nCadidateExNum == 0) {
+        		return null;
+        	}
+        	
+        	// 获取到的信息
+        	CANDIDATE_INFOEX[]	stuCandidatesEx = new CANDIDATE_INFOEX[stuOut.nCadidateExNum];
+        	for(int i = 0; i < stuOut.nCadidateExNum; i++) {
+        		stuCandidatesEx[i] = new CANDIDATE_INFOEX();
+        		stuCandidatesEx[i] = stuOut.stuCandidatesEx[i];
+        	}
+        	
+        	return stuCandidatesEx;
+        } else {
+        	System.out.println("CLIENT_DoFindFaceRecognition Failed, Error:" + ToolKits.getErrorCodePrint());
+        }
+    
+        return null;
+	}
+	
+	/**
+	 * 结束查询
+	 */
+	public static boolean doFindClosePerson() {
+		boolean bRet = false;
+		if(m_FindHandle.longValue() != 0) {
+			bRet = LoginModule.netsdk.CLIENT_StopFindFaceRecognition(m_FindHandle);
+		}
+		return bRet;
+	}
+	
+	/**
+	 * 订阅人脸查询状态
+	 * @param faceFindStateCb 人脸状态回调函数
+	 * @return
+	 */
+	public static boolean attachFaceFindState(fFaceFindState faceFindStateCb) {
+		/*
+		 * 入参
+		 */
+		NET_IN_FACE_FIND_STATE stuIn = new NET_IN_FACE_FIND_STATE();
+		stuIn.nTokenNum = 1;   
+		stuIn.nTokens = new IntByReference(nToken);  // 查询令牌
+		stuIn.cbFaceFindState = faceFindStateCb;
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_FACE_FIND_STATE stuOut = new NET_OUT_FACE_FIND_STATE();
+		
+		stuIn.write();
+		attachFaceHandle = LoginModule.netsdk.CLIENT_AttachFaceFindState(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		stuIn.read();
+		
+		if(attachFaceHandle.longValue() != 0) {
+			System.out.println("AttachFaceFindState Succeed!");
+			return true;
+		}
+		
+		return false;
+	}
+	
+	/**
+	 * 关闭订阅
+	 */
+	public static void detachFaceFindState() {
+		if(attachFaceHandle.longValue() != 0) {		
+			LoginModule.netsdk.CLIENT_DetachFaceFindState(attachFaceHandle);
+			attachFaceHandle.setValue(0);
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TalkModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TalkModule.java
new file mode 100644
index 0000000..2c21108
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TalkModule.java
@@ -0,0 +1,162 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * \if ENGLISH_LANG
+ * Talk Interface
+ * contains:start talk、stop talk and audio data callback implement class  
+ * \else
+ * 语音对讲接口实现
+ * 包含: 开始通话、结束通话、语音对讲的数据回调实现类
+ * \endif
+ */
+public class TalkModule {
+
+	public static LLong m_hTalkHandle = new LLong(0); // 语音对讲句柄 
+	
+	private static boolean m_bRecordStatus    = false; 			// 是否正在录音
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Start Talk
+	 * \else
+	 * 开始通话
+	 * \endif
+	 */
+	public static boolean startTalk(int transferType, int chn) {
+	
+		// 设置语音对讲编码格式
+		NetSDKLib.NETDEV_TALKDECODE_INFO talkEncode = new NetSDKLib.NETDEV_TALKDECODE_INFO();
+		talkEncode.encodeType = NetSDKLib.NET_TALK_CODING_TYPE.NET_TALK_PCM;
+		talkEncode.dwSampleRate = 8000;
+		talkEncode.nAudioBit = 16;
+		talkEncode.nPacketPeriod = 25;
+		talkEncode.write();
+		if(LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_ENCODE_TYPE, talkEncode.getPointer())) {
+			System.out.println("Set Talk Encode Type Succeed!");
+		} else {
+			System.err.println("Set Talk Encode Type Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		// 设置语音对讲喊话参数
+		NetSDKLib.NET_SPEAK_PARAM speak = new NetSDKLib.NET_SPEAK_PARAM();
+        speak.nMode = 0;
+        speak.bEnableWait = false;
+        speak.nSpeakerChannel = 0;
+        speak.write();
+        
+        if (LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_SPEAK_PARAM, speak.getPointer())) {
+        	System.out.println("Set Talk Speak Mode Succeed!");
+        } else {
+        	System.err.println("Set Talk Speak Mode Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+        }
+		
+		// 设置语音对讲是否为转发模式
+		NetSDKLib.NET_TALK_TRANSFER_PARAM talkTransfer = new NetSDKLib.NET_TALK_TRANSFER_PARAM();
+		talkTransfer.bTransfer = transferType;
+		talkTransfer.write();
+		if(LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_TRANSFER_MODE, talkTransfer.getPointer())) {
+			System.out.println("Set Talk Transfer Mode Succeed!");
+		} else {
+			System.err.println("Set Talk Transfer Mode Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		if (talkTransfer.bTransfer == 1) {  // 转发模式设置转发通道
+			
+			IntByReference nChn = new IntByReference(chn);
+			if(LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_TALK_CHANNEL, nChn.getPointer())) {
+				System.out.println("Set Talk Channel Succeed!");
+			} else {
+				System.err.println("Set Talk Channel Failed!" + ToolKits.getErrorCodePrint());
+				return false;
+			}
+		}
+		
+		
+		m_hTalkHandle = LoginModule.netsdk.CLIENT_StartTalkEx(LoginModule.m_hLoginHandle, AudioDataCB.getInstance(), null);
+		
+	    if(m_hTalkHandle.longValue() == 0) {
+	  	    System.err.println("Start Talk Failed!" + ToolKits.getErrorCodePrint());
+	  	    return false;
+	    } else {
+	  	    System.out.println("Start Talk Success");
+			if(LoginModule.netsdk.CLIENT_RecordStart()){
+				System.out.println("Start Record Success");
+				m_bRecordStatus = true;
+			} else {
+				System.err.println("Start Local Record Failed!" + ToolKits.getErrorCodePrint());
+				stopTalk();
+				return false;
+			}
+	    }
+		
+		return true;
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Stop Talk
+	 * \else
+	 * 结束通话
+	 * \endif
+	 */
+	public static void stopTalk() {
+		if(m_hTalkHandle.longValue() == 0) {
+			return;
+		}
+		
+		if (m_bRecordStatus){
+			LoginModule.netsdk.CLIENT_RecordStop();
+			m_bRecordStatus = false;
+		}
+		
+		if(LoginModule.netsdk.CLIENT_StopTalkEx(m_hTalkHandle)) {
+			m_hTalkHandle.setValue(0);
+		}else {
+			System.err.println("Stop Talk Failed!" + ToolKits.getErrorCodePrint());
+    	}
+	}
+	
+	/**
+	 * \if ENGLISH_LANG
+	 * Audio Data Callback
+	 * \else
+	 * 语音对讲的数据回调
+	 * \endif
+	 */
+	private static class AudioDataCB implements NetSDKLib.pfAudioDataCallBack {
+		
+		private AudioDataCB() {}
+		private static AudioDataCB audioCallBack = new AudioDataCB();
+		
+		public static AudioDataCB getInstance() {
+			return audioCallBack;
+		}
+		
+		public void invoke(LLong lTalkHandle, Pointer pDataBuf, int dwBufSize, byte byAudioFlag, Pointer dwUser){
+			
+			if(lTalkHandle.longValue() != m_hTalkHandle.longValue()) {
+				return;
+			}
+			
+			if (byAudioFlag == 0) { // 将收到的本地PC端检测到的声卡数据发送给设备端
+				
+				LLong lSendSize = LoginModule.netsdk.CLIENT_TalkSendData(m_hTalkHandle, pDataBuf, dwBufSize);
+				if(lSendSize.longValue() != (long)dwBufSize) {
+					System.err.println("send incomplete" + lSendSize.longValue() + ":" + dwBufSize);
+				} 
+			}else if (byAudioFlag == 1) { // 将收到的设备端发送过来的语音数据传给SDK解码播放
+				LoginModule.netsdk.CLIENT_AudioDecEx(m_hTalkHandle, pDataBuf, dwBufSize);
+			}
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TargetRecognitionModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TargetRecognitionModule.java
new file mode 100644
index 0000000..2b24712
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TargetRecognitionModule.java
@@ -0,0 +1,880 @@
+package com.netsdk.demo.module;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.netsdk.lib.NativeString;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib.*;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+/**
+ * IVSS 和 IPC-FR 人脸功能接口实现, IPC-FD只支持目标检测事件
+ */
+
+public class TargetRecognitionModule {
+	// 查找句柄
+	private static LLong m_FindHandle = null;   
+	
+	// 查询密令
+	public static int nToken = 0;
+	
+	////////////////////////////////  目标识别 和 目标检测 事件  /////////////////////////////////////////////
+	/**
+	 * 目标识别事件和目标检测事件订阅
+	 * @param channel 通道号
+	 * @param callback 回调函数
+	 * @return true:成功    false:失败
+	 */
+	public static LLong realLoadPicture(int channel, fAnalyzerDataCallBack callback) {
+		int bNeedPicture = 1; // 是否需要图片
+	
+		LLong m_hAttachHandle =  LoginModule.netsdk.CLIENT_RealLoadPictureEx(LoginModule.m_hLoginHandle, channel, 
+									NetSDKLib.EVENT_IVS_ALL, bNeedPicture, callback, null, null);
+        if(m_hAttachHandle.longValue() == 0) {
+        	System.err.println("CLIENT_RealLoadPictureEx Failed, Error:" + ToolKits.getErrorCodePrint());
+        } else {
+        	System.out.println("通道[" + channel + "]订阅成功!");
+        }
+
+		return m_hAttachHandle;
+	}
+	
+	/**
+	 * 停止订阅
+	 * @param m_hAttachHandle 智能订阅句柄
+	 */
+	public static void stopRealLoadPicture(LLong m_hAttachHandle) {
+		if(m_hAttachHandle.longValue() != 0) {
+			LoginModule.netsdk.CLIENT_StopLoadPic(m_hAttachHandle);
+			m_hAttachHandle.setValue(0);
+		}
+	}
+	
+	
+	///////////////////////////////////////  人脸库的增、删、改、查  ////////////////////////////////
+	
+	/**
+	 * 查询人脸库
+	 * @param groupId 需要查找的人脸库ID; 为空表示查找所有的人脸库
+	 */
+	public static NET_FACERECONGNITION_GROUP_INFO[] findGroupInfo(String groupId) {	
+		NET_FACERECONGNITION_GROUP_INFO[] groupInfoRet = null;
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_FIND_GROUP_INFO stuIn = new NET_IN_FIND_GROUP_INFO();
+		System.arraycopy(groupId.getBytes(), 0, stuIn.szGroupId, 0, groupId.getBytes().length);   
+
+		/*
+		 * 出参
+		 */
+		int max = 20;
+		NET_FACERECONGNITION_GROUP_INFO[] groupInfo  = new NET_FACERECONGNITION_GROUP_INFO[max];
+		for(int i = 0; i < max; i++) {
+			groupInfo[i] = new NET_FACERECONGNITION_GROUP_INFO();
+		}
+		
+		NET_OUT_FIND_GROUP_INFO stuOut = new NET_OUT_FIND_GROUP_INFO();   
+		stuOut.pGroupInfos = new Memory(groupInfo[0].size() * groupInfo.length);     // Pointer初始化
+		stuOut.pGroupInfos.clear(groupInfo[0].size() * groupInfo.length);
+		stuOut.nMaxGroupNum = groupInfo.length;
+		
+		ToolKits.SetStructArrToPointerData(groupInfo, stuOut.pGroupInfos);  // 将数组内存拷贝给Pointer
+
+		if(LoginModule.netsdk.CLIENT_FindGroupInfo(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000)) {
+			
+			// 将Pointer的值输出到 数组 NET_FACERECONGNITION_GROUP_INFO
+			ToolKits.GetPointerDataToStructArr(stuOut.pGroupInfos, groupInfo);   
+			
+			if(stuOut.nRetGroupNum > 0) {
+				// 根据设备返回的,将有效的人脸库信息返回
+				groupInfoRet = new NET_FACERECONGNITION_GROUP_INFO[stuOut.nRetGroupNum];
+				for(int i = 0; i < stuOut.nRetGroupNum; i++) {
+					groupInfoRet[i] = groupInfo[i];
+				}
+			}
+		} else {
+			System.err.println("查询人员信息失败" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		return groupInfoRet;
+	}
+	
+	/**
+	 * 添加人脸库
+	 * @param groupName 需要添加的人脸库名称
+	 */
+	public static boolean addGroup(String groupName) {
+		NET_ADD_FACERECONGNITION_GROUP_INFO addGroupInfo = new NET_ADD_FACERECONGNITION_GROUP_INFO();
+		
+		// 人脸库名称
+		try {
+			System.arraycopy(groupName.getBytes("GBK"), 0, addGroupInfo.stuGroupInfo.szGroupName, 0, groupName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}   
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_OPERATE_FACERECONGNITION_GROUP stuIn = new NET_IN_OPERATE_FACERECONGNITION_GROUP();
+		stuIn.emOperateType = EM_OPERATE_FACERECONGNITION_GROUP_TYPE.NET_FACERECONGNITION_GROUP_ADD; // 添加人员组信息
+		stuIn.pOPerateInfo = addGroupInfo.getPointer();		
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_OPERATE_FACERECONGNITION_GROUP stuOut = new NET_OUT_OPERATE_FACERECONGNITION_GROUP();
+		
+		addGroupInfo.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_OperateFaceRecognitionGroup(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		addGroupInfo.read();
+		
+		if(bRet) {
+			System.out.println("人员组ID : " + new String(stuOut.szGroupId).trim());  // 新增记录的人员组ID,唯一标识一组人员	
+		} 
+
+		return bRet;
+	}
+	
+	/**
+	 * 修改人脸库
+	 * @param groupName 修改后的人脸库名称
+	 * @param groupId 需要修改的人脸库ID
+	 */
+	public static boolean modifyGroup(String groupName, String groupId) {
+		NET_MODIFY_FACERECONGNITION_GROUP_INFO modifyGroupInfo = new NET_MODIFY_FACERECONGNITION_GROUP_INFO();
+		
+		// 人脸库名称
+		try {
+			System.arraycopy(groupName.getBytes("GBK"), 0, modifyGroupInfo.stuGroupInfo.szGroupName, 0, groupName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}  
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, modifyGroupInfo.stuGroupInfo.szGroupId, 0, groupId.getBytes().length);   
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_OPERATE_FACERECONGNITION_GROUP stuIn = new NET_IN_OPERATE_FACERECONGNITION_GROUP();
+		stuIn.emOperateType = EM_OPERATE_FACERECONGNITION_GROUP_TYPE.NET_FACERECONGNITION_GROUP_MODIFY; // 修改人员组信息
+		stuIn.pOPerateInfo = modifyGroupInfo.getPointer();		
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_OPERATE_FACERECONGNITION_GROUP stuOut = new NET_OUT_OPERATE_FACERECONGNITION_GROUP();
+		
+		modifyGroupInfo.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_OperateFaceRecognitionGroup(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		modifyGroupInfo.read();
+		
+		if(bRet) {
+			System.out.println("修改人脸库成功.");
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 删除人脸库
+	 * @param groupId 需要删除的人脸库ID; 为空表示删除所有的人脸库
+	 */
+	public static boolean deleteGroup(String groupId) {
+		NET_DELETE_FACERECONGNITION_GROUP_INFO deleteGroupInfo = new NET_DELETE_FACERECONGNITION_GROUP_INFO();
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, deleteGroupInfo.szGroupId, 0, groupId.getBytes().length);   
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_OPERATE_FACERECONGNITION_GROUP stuIn = new NET_IN_OPERATE_FACERECONGNITION_GROUP();
+		stuIn.emOperateType = EM_OPERATE_FACERECONGNITION_GROUP_TYPE.NET_FACERECONGNITION_GROUP_DELETE; // 删除人员组信息
+		stuIn.pOPerateInfo = deleteGroupInfo.getPointer();		
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_OPERATE_FACERECONGNITION_GROUP stuOut = new NET_OUT_OPERATE_FACERECONGNITION_GROUP();
+		
+		deleteGroupInfo.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_OperateFaceRecognitionGroup(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		deleteGroupInfo.read();
+		
+		if(bRet) {
+			System.out.println("删除人脸库成功.");
+		} 
+
+		return bRet;
+	}
+	
+	/////////////////////////////  按人脸库布控、撤控   ///////////////////////////////////////
+	/**
+	 * 以人脸库的角度进行布控
+	 * @param groupId 人脸库ID
+	 * @param hashMap  key:撤控通道     value:相似度 
+	 */
+	public static boolean putDisposition(String groupId, HashMap<Integer, Integer> hashMap) {
+		int i = 0;
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO stuIn = new NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO();
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.szGroupId, 0, groupId.getBytes().length);
+			
+		for(Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
+			stuIn.stuDispositionChnInfo[i].nChannelID = entry.getKey() - 1;
+			stuIn.stuDispositionChnInfo[i].nSimilary = entry.getValue();
+		
+			i++;
+		}
+
+		stuIn.nDispositionChnNum = hashMap.size();        // 布控视频通道个数
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO stuOut = new NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_FaceRecognitionPutDisposition(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		if(bRet) {
+			System.out.println("通道布控结果个数:" + stuOut.nReportCnt);
+		}
+		return bRet;
+	}
+	
+	/**
+	 * 以人脸库的角度进行撤控
+	 * @param groupId 人脸库ID
+	 * @param arrayList 撤控通道列表
+	 */
+	public static boolean delDisposition(String groupId, ArrayList<Integer> arrayList) {
+		/*
+		 * 入参
+		 */
+		NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO stuIn = new NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO();
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.szGroupId, 0, groupId.getBytes().length);
+		
+		// 撤控视频通道列表
+		for(int i = 0; i < arrayList.size(); i++) {
+			stuIn.nDispositionChn[i] = arrayList.get(i) - 1;  
+		}
+		
+		// 撤控视频通道个数
+		stuIn.nDispositionChnNum = arrayList.size();          
+		
+		/*
+		 *  出参
+		 */
+		NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO stuOut = new NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO();
+		
+		boolean bRet = LoginModule.netsdk.CLIENT_FaceRecognitionDelDisposition(LoginModule.m_hLoginHandle, stuIn, stuOut, 4000);
+		if(bRet) {
+			System.out.println("通道撤控结果个数:" + stuOut.nReportCnt);
+		}
+		return bRet;
+	}
+	
+	/////////////////////////////  按通道布控、撤控   ///////////////////////////////////////
+	/**
+	 * 获取布控在视频通道的组信息
+	 * @param channel 通道号
+	 */
+	public static void GetGroupInfoForChannel(int channel) {
+		/*
+		 * 入参
+		 */
+		NET_IN_GET_GROUPINFO_FOR_CHANNEL stIn = new NET_IN_GET_GROUPINFO_FOR_CHANNEL();
+		
+		// 通道号
+		stIn.nChannelID = channel;
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_GET_GROUPINFO_FOR_CHANNEL stOut = new NET_OUT_GET_GROUPINFO_FOR_CHANNEL();
+		
+		if(LoginModule.netsdk.CLIENT_GetGroupInfoForChannel(LoginModule.m_hLoginHandle, stIn, stOut, 4000)) {
+			for(int i = 0; i < stOut.nGroupIdNum; i++) {
+				System.out.println("人脸库ID:" + new String(stOut.szGroupIdArr[i].szGroupId).trim());
+				System.out.println("相似度:" + stOut.nSimilary[i] + "\n");
+			}
+		} else {
+			System.err.println("获取布控在视频通道的组信息失败, " + ToolKits.getErrorCodePrint());
+		}	
+	}
+	/**
+	 * 布控通道人员组信息
+	 * @param channel
+	 * @param groupIds 人脸库ID,长度等于相似度
+	 * @param similarys 相似度, 长度等于人脸库ID
+	 */
+	public static void SetGroupInfoForChannel(int channel, String[] groupIds, int[] similarys) {
+		/*
+		 * 入参
+		 */
+		NET_IN_SET_GROUPINFO_FOR_CHANNEL stIn = new NET_IN_SET_GROUPINFO_FOR_CHANNEL();
+		
+		// 通道号
+		stIn.nChannelID = channel;
+		
+		// 人脸库ID个数
+		stIn.nGroupIdNum = groupIds.length;
+		
+		// 相似度个数
+		stIn.nSimilaryNum = similarys.length;
+		
+		for(int i = 0; i < groupIds.length; i++) {
+			// 人脸库ID赋值,用数组拷贝
+			System.arraycopy(groupIds[i].getBytes(), 0, stIn.szGroupIdArr[i].szGroupId, 0, groupIds[i].getBytes().length);
+			
+			// 对应的人脸库的相似度
+			stIn.nSimilary[i] = similarys[i];
+		}
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_SET_GROUPINFO_FOR_CHANNEL stOut = new NET_OUT_SET_GROUPINFO_FOR_CHANNEL();
+		
+		if(LoginModule.netsdk.CLIENT_SetGroupInfoForChannel(LoginModule.m_hLoginHandle, stIn, stOut, 4000)) {
+			
+		}
+	}
+	
+	/////////////////////////////   人员操作    ////////////////////////////////////////////
+	/**
+	 * 按条件查询目标识别结果
+	 * @param groupId  人脸库ID
+	 * @param isStartBirthday  查询条件是否下发开始生日
+	 * @param startTime  生日起始时间
+	 * @param isEndBirthday  查询条件是否下发结束生日
+	 * @param endTime  生日结束时间
+	 * @param personName  姓名
+	 * @param sex  性别
+	 * @param idType  证件类型
+	 * @param idNo  证件号
+	 * @return 查询到的所有人员个数  
+	 */
+	public static int startFindPerson(String groupId, 
+									  boolean isStartBirthday, 
+									  String startTime, 
+									  boolean isEndBirthday,
+									  String endTime, 
+									  String personName, 
+									  int sex, 
+									  int idType, 
+									  String idNo) {	
+		
+		m_FindHandle = null;
+		nToken = 0;
+		
+		int nTotalCount = 0;  
+		
+		/*
+		 * 入参, IVVS设备,查询条件只有  stuInStartFind.stPerson 里的参数有效
+		 */
+		NET_IN_STARTFIND_FACERECONGNITION stuIn = new NET_IN_STARTFIND_FACERECONGNITION();
+
+		stuIn.bPersonExEnable = 1;  	// 人员信息查询条件是否有效, 并使用扩展结构体
+
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.stPersonInfoEx.szGroupID, 0, groupId.getBytes().length); 
+		
+		// 姓名
+		try {
+			System.arraycopy(personName.getBytes("GBK"), 0, stuIn.stPersonInfoEx.szPersonName, 0, personName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		} 
+		
+		// 性别
+		stuIn.stPersonInfoEx.bySex = (byte)sex;
+		
+		// 证件类型
+		stuIn.stPersonInfoEx.byIDType = (byte)idType;
+		
+		// 证件号
+		System.arraycopy(idNo.getBytes(), 0, stuIn.stPersonInfoEx.szID, 0, idNo.getBytes().length); 
+		
+		stuIn.stFilterInfo.nGroupIdNum = 1;
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.stFilterInfo.szGroupIdArr[0].szGroupId, 0, groupId.getBytes().length);  
+
+		// 待查询人脸类型
+		stuIn.stFilterInfo.emFaceType = EM_FACERECOGNITION_FACE_TYPE.EM_FACERECOGNITION_FACE_TYPE_ALL;
+		
+		// 开始生日
+		if(isStartBirthday) {
+			String[] startTimeStr = startTime.split("-");
+			
+			stuIn.stFilterInfo.stBirthdayRangeStart.dwYear = Integer.parseInt(startTimeStr[0]);
+			stuIn.stFilterInfo.stBirthdayRangeStart.dwMonth = Integer.parseInt(startTimeStr[1]);
+			stuIn.stFilterInfo.stBirthdayRangeStart.dwDay = Integer.parseInt(startTimeStr[2]);
+		}
+		
+		// 结束生日
+		if(isEndBirthday) {
+			String[] endTimeStr = endTime.split("-");
+			
+			stuIn.stFilterInfo.stBirthdayRangeEnd.dwYear = Integer.parseInt(endTimeStr[0]);
+			stuIn.stFilterInfo.stBirthdayRangeEnd.dwMonth = Integer.parseInt(endTimeStr[1]);
+			stuIn.stFilterInfo.stBirthdayRangeEnd.dwDay = Integer.parseInt(endTimeStr[2]);
+		}
+		
+		stuIn.stFilterInfo.nRangeNum = 1;
+		stuIn.stFilterInfo.szRange[0] = EM_FACE_DB_TYPE.NET_FACE_DB_TYPE_BLACKLIST;
+
+	    /*
+	     * 出参
+	     */
+	    NET_OUT_STARTFIND_FACERECONGNITION stuOut = new NET_OUT_STARTFIND_FACERECONGNITION();
+	    stuIn.write();
+	    stuOut.write();
+	    if(LoginModule.netsdk.CLIENT_StartFindFaceRecognition(LoginModule.m_hLoginHandle, stuIn,  stuOut, 4000)) {        
+	    	m_FindHandle = stuOut.lFindHandle;
+	    	nTotalCount = stuOut.nTotalCount;
+	    	nToken = stuOut.nToken;
+	    } else {
+	        System.out.println("Failed, Error:" + ToolKits.getErrorCodePrint());
+	    }
+	    
+	    return nTotalCount;
+	}
+	
+	/**
+	 * 查找目标识别结果
+	 * @param beginNum 查询起始序号
+	 * @param nCount  当前想查询的记录条数
+	 * @return 返回的人员信息数组
+	 */
+	public static CANDIDATE_INFOEX[] doFindPerson(int beginNum, int nCount) {
+    	/*
+    	 *入参
+    	 */
+        NetSDKLib.NET_IN_DOFIND_FACERECONGNITION  stuIn = new NetSDKLib.NET_IN_DOFIND_FACERECONGNITION();
+        stuIn.lFindHandle = m_FindHandle;
+        stuIn.nCount      = nCount;  	 // 当前想查询的记录条数
+        stuIn.nBeginNum   = beginNum;     // 查询起始序号
+        
+        /*
+         * 出参
+         */
+        NetSDKLib.NET_OUT_DOFIND_FACERECONGNITION stuOut = new NetSDKLib.NET_OUT_DOFIND_FACERECONGNITION();	
+        stuOut.bUseCandidatesEx = 1;				// 是否使用候选对象扩展结构体
+        
+        // 必须申请内存,每次查询几个,必须至少申请几个,最大申请20个
+        for(int i = 0; i < nCount; i++) {
+            stuOut.stuCandidatesEx[i].stPersonInfo.szFacePicInfo[0].nFilePathLen = 256;
+            stuOut.stuCandidatesEx[i].stPersonInfo.szFacePicInfo[0].pszFilePath = new Memory(256);
+        }
+        
+    	stuIn.write();
+    	stuOut.write();
+        if(LoginModule.netsdk.CLIENT_DoFindFaceRecognition(stuIn, stuOut, 4000)) {
+        	stuIn.read();
+        	stuOut.read();
+        	
+        	if(stuOut.nCadidateExNum == 0) {
+        		return null;
+        	}
+        	
+        	// 查询到的数据
+        	CANDIDATE_INFOEX[]	stuCandidatesEx = new CANDIDATE_INFOEX[stuOut.nCadidateExNum];
+        	for(int i = 0; i < stuOut.nCadidateExNum; i++) {
+        		stuCandidatesEx[i] = new CANDIDATE_INFOEX();
+        		stuCandidatesEx[i] = stuOut.stuCandidatesEx[i];
+        	}   
+        	
+        	return stuCandidatesEx;
+        } else {
+        	System.out.println("Failed, Error:" + ToolKits.getErrorCodePrint());
+        }
+    
+        return null;
+	}
+	
+	/**
+	 * 结束查询
+	 */
+	public static boolean doFindPerson() {
+		boolean bRet = false;
+		if(m_FindHandle.longValue() != 0) {
+			bRet = LoginModule.netsdk.CLIENT_StopFindFaceRecognition(m_FindHandle);
+		}
+		return bRet;
+	}
+	
+	/**
+	 * 添加人员
+	 * @param groupId  人脸库ID
+	 * @param memory  图片数据
+	 * @param personName 姓名
+	 * @param sex  性别
+	 * @param isBirthday 是否下发生日
+	 * @param birthday  生日
+	 * @param byIdType  证件类型
+	 * @param idNo  证件号
+	 * @return
+	 */
+	public static boolean addPerson(String groupId, 
+									Memory memory, 
+									String personName, 
+									int sex, 
+									boolean isBirthday, 
+									String birthday,  
+									int byIdType, 
+									String idNo) {
+		/*
+		 *  入参
+		 */
+		NET_IN_OPERATE_FACERECONGNITIONDB stuIn  = new NET_IN_OPERATE_FACERECONGNITIONDB();
+		stuIn.emOperateType = NetSDKLib.EM_OPERATE_FACERECONGNITIONDB_TYPE.NET_FACERECONGNITIONDB_ADD;
+		
+		///////// 使用人员扩展信息 //////////
+		stuIn.bUsePersonInfoEx = 1;   
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.stPersonInfoEx.szGroupID, 0, groupId.getBytes().length);
+		
+		// 生日设置
+		if(isBirthday) {
+			String[] birthdays = birthday.split("-");
+					
+			stuIn.stPersonInfoEx.wYear = (short)Integer.parseInt(birthdays[0]);
+			stuIn.stPersonInfoEx.byMonth = (byte)Integer.parseInt(birthdays[1]);
+			stuIn.stPersonInfoEx.byDay = (byte)Integer.parseInt(birthdays[2]);
+		}
+		
+		// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效	
+		stuIn.stPersonInfoEx.bySex = (byte)sex;	
+		
+		// 人员名字	
+		try {
+			System.arraycopy(personName.getBytes("GBK"), 0, stuIn.stPersonInfoEx.szPersonName, 0, personName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		} 
+		
+		// 证件类型
+		stuIn.stPersonInfoEx.byIDType = (byte)byIdType;  
+		
+		// 证件号
+		System.arraycopy(idNo.getBytes(), 0, stuIn.stPersonInfoEx.szID, 0, idNo.getBytes().length); 					  
+		
+		// 图片张数、大小、缓存设置
+		if(memory != null) {
+			stuIn.stPersonInfoEx.wFacePicNum = 1; // 图片张数
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwFileLenth = (int)memory.size();  // 图片大小
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwOffSet = 0;
+			
+			stuIn.nBufferLen = (int)memory.size();
+			stuIn.pBuffer = memory;
+		}
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_OPERATE_FACERECONGNITIONDB stuOut = new NET_OUT_OPERATE_FACERECONGNITIONDB() ;	
+		
+		stuIn.write();
+		boolean bRet = LoginModule.netsdk.CLIENT_OperateFaceRecognitionDB(LoginModule.m_hLoginHandle, stuIn, stuOut, 3000);
+		stuIn.read();
+		
+		if(bRet) {
+			System.out.println("szUID : " + new String(stuOut.szUID).trim());
+		} else {
+			System.err.println(ToolKits.getErrorCodePrint());
+		}
+		
+		return bRet;
+	}
+	
+	/**
+	 * 修改人员信息
+	 * @param groupId 人脸库ID
+	 * @param uid  人员唯一标识符
+	 * @param memory  图片数据
+	 * @param personName  姓名
+	 * @param sex  性别
+	 * @param isBirthday  是否下发生日
+	 * @param birthday  生日
+	 * @param byIdType  证件类型
+	 * @param idNo  证件号
+	 * @return true:成功 ,  false:失败
+	 */
+	public static boolean modifyPerson(String groupId, 
+									   String uid,
+									   Memory memory, 
+									   String personName, 
+									   int sex, 
+									   boolean isBirthday, 
+									   String birthday,  
+									   int byIdType, 
+									   String idNo) {
+		// 入参
+		NET_IN_OPERATE_FACERECONGNITIONDB stuIn  = new NET_IN_OPERATE_FACERECONGNITIONDB();
+		stuIn.emOperateType = NetSDKLib.EM_OPERATE_FACERECONGNITIONDB_TYPE.NET_FACERECONGNITIONDB_MODIFY;
+		
+		///////// 使用人员扩展信息  ////////
+		stuIn.bUsePersonInfoEx = 1;	
+		
+		// 人脸库ID
+		System.arraycopy(groupId.getBytes(), 0, stuIn.stPersonInfoEx.szGroupID, 0, groupId.getBytes().length);
+		
+		// 人员唯一标识符
+		System.arraycopy(uid.getBytes(), 0, stuIn.stPersonInfoEx.szUID, 0, uid.getBytes().length); 
+		
+		// 生日设置
+		if(isBirthday) {
+			String[] birthdays = birthday.split("-");
+					
+			stuIn.stPersonInfoEx.wYear = (short)Integer.parseInt(birthdays[0]);
+			stuIn.stPersonInfoEx.byMonth = (byte)Integer.parseInt(birthdays[1]);
+			stuIn.stPersonInfoEx.byDay = (byte)Integer.parseInt(birthdays[2]);
+		}
+		
+		// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效	
+		stuIn.stPersonInfoEx.bySex = (byte)sex;	
+		
+		// 人员名字	
+		try {
+			System.arraycopy(personName.getBytes("GBK"), 0, stuIn.stPersonInfoEx.szPersonName, 0, personName.getBytes("GBK").length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		} 
+		
+		// 证件类型
+		stuIn.stPersonInfoEx.byIDType = (byte)byIdType;  
+		
+		// 证件号
+		System.arraycopy(idNo.getBytes(), 0, stuIn.stPersonInfoEx.szID, 0, idNo.getBytes().length); 					  
+		
+		// 图片张数、大小、缓存设置
+		if(memory != null) {
+			stuIn.stPersonInfoEx.wFacePicNum = 1; // 图片张数
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwFileLenth = (int)memory.size();  // 图片大小
+			stuIn.stPersonInfoEx.szFacePicInfo[0].dwOffSet = 0;
+			
+			stuIn.nBufferLen = (int)memory.size();
+			stuIn.pBuffer = memory;
+		}					  
+
+		// 出参
+		NET_OUT_OPERATE_FACERECONGNITIONDB stuOut = new NET_OUT_OPERATE_FACERECONGNITIONDB() ;	
+		
+		stuIn.write();
+	    if(!LoginModule.netsdk.CLIENT_OperateFaceRecognitionDB(LoginModule.m_hLoginHandle, stuIn, stuOut, 3000)) {
+	    	System.err.println("修改人员失败" + ToolKits.getErrorCodePrint());
+	    	return false;
+	    }
+	    stuIn.read();
+
+		return true;
+	}
+	
+	/**
+	 * 删除人员信息
+	 * @param groupId 人脸库ID
+	 * @param sUID  人员唯一标识符
+	 */
+	public static boolean delPerson(String groupId, String sUID) {    
+		/*
+		 *  入参
+		 */
+		NET_IN_OPERATE_FACERECONGNITIONDB stuIn  = new NET_IN_OPERATE_FACERECONGNITIONDB();
+		stuIn.emOperateType = NetSDKLib.EM_OPERATE_FACERECONGNITIONDB_TYPE.NET_FACERECONGNITIONDB_DELETE;
+	
+		//////// 使用人员扩展信息  //////////
+		stuIn.bUsePersonInfoEx = 1;	
+		
+		// GroupID 赋值
+		System.arraycopy(groupId.getBytes(), 0, stuIn.stPersonInfoEx.szGroupID, 0, groupId.getBytes().length);
+
+		// UID赋值
+		System.arraycopy(sUID.getBytes(), 0, stuIn.stPersonInfoEx.szUID, 0, sUID.getBytes().length);
+
+		/*
+		 *  出参
+		 */
+		NET_OUT_OPERATE_FACERECONGNITIONDB stuOut = new NET_OUT_OPERATE_FACERECONGNITIONDB() ;	
+
+		boolean bRet = LoginModule.netsdk.CLIENT_OperateFaceRecognitionDB(LoginModule.m_hLoginHandle, stuIn, stuOut, 3000);
+	    if(!bRet) {
+	    	System.err.println(LoginModule.netsdk.CLIENT_GetLastError());
+	    }
+	    
+		return bRet;
+	}
+	
+	/**
+	 * 下载图片, 用于修改人员信息
+	 * @param szFileName 需要下载的文件名
+	 * @param pszFileDst 存放文件路径
+	 */
+	public static boolean downloadPersonPic(String szFileName, String pszFileDst) {
+		/*
+		 * 入参
+		 */
+		NET_IN_DOWNLOAD_REMOTE_FILE stuIn = new NET_IN_DOWNLOAD_REMOTE_FILE();
+		// 需要下载的文件名
+		stuIn.pszFileName = new NativeString(szFileName).getPointer();
+		
+		// 存放文件路径
+		stuIn.pszFileDst = new NativeString(pszFileDst).getPointer();
+
+		/*
+		 * 出参
+		 */
+		NET_OUT_DOWNLOAD_REMOTE_FILE stuOut = new NET_OUT_DOWNLOAD_REMOTE_FILE();
+		
+		if(!LoginModule.netsdk.CLIENT_DownloadRemoteFile(LoginModule.m_hLoginHandle, stuIn, stuOut, 5000)) {
+			System.err.println("下载图片失败!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * 显示/关闭规则库
+	 * @param RealPlayHandle  实时预览
+	 * @param bTrue    1-打开, 0-关闭
+	 * @return
+	 */
+	public static void renderPrivateData(LLong m_hRealPlayHandle, int bTrue) {
+		if(m_hRealPlayHandle.longValue() != 0) {
+			LoginModule.netsdk.CLIENT_RenderPrivateData(m_hRealPlayHandle, bTrue);
+		}	
+	}
+	
+	//////////////////////////  查询事件对比记录   /////////////////////////
+	private static LLong lFindHandle = new LLong(0);    // 查找句柄
+	
+	/**
+	 * 获取查找句柄
+	 * @param nChn  通道号
+	 * @param startTime 开始时间
+	 * @param endTime  结束时间
+	 */
+	public static boolean findFile(int nChn, String startTime, String endTime) {
+		int type = NetSDKLib.EM_FILE_QUERY_TYPE.NET_FILE_QUERY_FACE;
+
+		/**
+		 *  查询条件
+		 */
+		MEDIAFILE_FACERECOGNITION_PARAM findContion = new MEDIAFILE_FACERECOGNITION_PARAM();
+		
+		// 开始时间
+		String[] starts = startTime.split(" ");
+		
+		findContion.stStartTime.dwYear = Integer.parseInt(starts[0].split("-")[0]);
+		findContion.stStartTime.dwMonth = Integer.parseInt(starts[0].split("-")[1]);
+		findContion.stStartTime.dwDay = Integer.parseInt(starts[0].split("-")[2]);
+		findContion.stStartTime.dwHour = Integer.parseInt(starts[1].split(":")[0]);
+		findContion.stStartTime.dwMinute = Integer.parseInt(starts[1].split(":")[1]);
+		findContion.stStartTime.dwSecond = Integer.parseInt(starts[1].split(":")[2]);
+
+		// 结束时间
+		String[] ends = endTime.split(" ");
+		findContion.stEndTime.dwYear = Integer.parseInt(ends[0].split("-")[0]);
+		findContion.stEndTime.dwMonth = Integer.parseInt(ends[0].split("-")[1]);
+		findContion.stEndTime.dwDay = Integer.parseInt(ends[0].split("-")[2]);
+		findContion.stEndTime.dwHour = Integer.parseInt(ends[1].split(":")[0]);
+		findContion.stEndTime.dwMinute = Integer.parseInt(ends[1].split(":")[1]);
+		findContion.stEndTime.dwSecond = Integer.parseInt(ends[1].split(":")[2]);
+		
+		// 通道号
+		findContion.nChannelId = nChn;
+		
+		/**
+		 * 以下注释的查询条件参数,目前设备不支持,后续会逐渐增加
+		 */
+//		// 地点,支持模糊匹配 
+//		String machineAddress = "";
+//		System.arraycopy(machineAddress.getBytes(), 0, findContion.szMachineAddress, 0, machineAddress.getBytes().length);
+//		
+//		// 待查询报警类型
+//		findContion.nAlarmType = EM_FACERECOGNITION_ALARM_TYPE.NET_FACERECOGNITION_ALARM_TYPE_ALL;
+		
+//		// 人员组数 
+//		findContion.nGroupIdNum = 1;  
+//		
+//		// 人员组ID(人脸库ID)
+//		String groupId = "";
+//		System.arraycopy(groupId.getBytes(), 0, findContion.szGroupIdArr[0].szGroupId, 0, groupId.getBytes().length);
+//		
+//		// 人员信息扩展是否有效
+//		findContion.abPersonInfoEx = 1;     
+//		
+//		// 人员组ID(人脸库ID)
+//		System.arraycopy(groupId.getBytes(), 0, findContion.stPersonInfoEx.szGroupID, 0, groupId.getBytes().length);
+		
+		findContion.write();
+		lFindHandle = LoginModule.netsdk.CLIENT_FindFileEx(LoginModule.m_hLoginHandle, type, findContion.getPointer(), null, 3000);
+		if(lFindHandle.longValue() == 0) {
+			System.err.println("FindFileEx Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		findContion.read();
+		
+		return true;
+	}
+	
+	
+	/**
+	 * 查询对比数据
+	 * @param nFindCount 每次查询的个数
+	 */
+	public static MEDIAFILE_FACERECOGNITION_INFO[] findNextFile(int nFindCount) {
+		MEDIAFILE_FACERECOGNITION_INFO[] msg = new MEDIAFILE_FACERECOGNITION_INFO[nFindCount];
+		for (int i = 0; i < msg.length; ++i) {
+			msg[i] = new NetSDKLib.MEDIAFILE_FACERECOGNITION_INFO();
+			msg[i].bUseCandidatesEx = 1;
+		}
+		
+		int MemorySize = msg[0].size() * nFindCount;
+		Pointer pointer = new Memory(MemorySize);
+		pointer.clear(MemorySize);
+		
+		ToolKits.SetStructArrToPointerData(msg, pointer);
+
+		int nRetCount = LoginModule.netsdk.CLIENT_FindNextFileEx(lFindHandle, nFindCount, pointer, MemorySize, null, 3000);
+		ToolKits.GetPointerDataToStructArr(pointer, msg);
+		
+		if (nRetCount <= 0) {
+			System.err.println("FindNextFileEx failed!" + ToolKits.getErrorCodePrint());
+            return null;
+		} 
+
+		MEDIAFILE_FACERECOGNITION_INFO[] retInfo = new MEDIAFILE_FACERECOGNITION_INFO[nRetCount];
+		for (int i = 0; i < retInfo.length; ++i) {
+			retInfo[i] = new NetSDKLib.MEDIAFILE_FACERECOGNITION_INFO();
+			retInfo[i] = msg[i];
+		}
+		
+		return retInfo;	
+	}
+	
+	public static void findCloseFile() {
+		if(lFindHandle.longValue() != 0) {
+			LoginModule.netsdk.CLIENT_FindCloseEx(lFindHandle);	
+			lFindHandle.setValue(0);
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/ThermalCameraModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/ThermalCameraModule.java
new file mode 100644
index 0000000..94f10c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/ThermalCameraModule.java
@@ -0,0 +1,273 @@
+package com.netsdk.demo.module;
+
+import java.io.IOException;
+
+import com.netsdk.lib.ImageAlgLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+
+
+public class ThermalCameraModule {
+	
+	static ImageAlgLib imageAlgApi = ImageAlgLib.IMAGEALG_INSTANCE;
+	
+	public static class ThermalCameraStatus {
+		public boolean bSearching = false;				   			// 是否正在查找
+		public int     nFinderHanle;                      			// 取到的查询句柄
+		public int     nTotalCount;                       			// 符合此次查询条件的结果总条数
+		public LLong hRadiometryHandle = new LLong(0); // 订阅句柄
+	}
+	
+	private static ThermalCameraStatus status = new ThermalCameraStatus();
+	
+	/**
+	 * 订阅温度分布数据(热图)
+	 */
+	public static boolean radiometryAttach(int nChannel, fRadiometryAttachCB cbNotify) {
+		/*
+		 * 入参
+		 */
+		NET_IN_RADIOMETRY_ATTACH stIn = new NET_IN_RADIOMETRY_ATTACH();
+		stIn.nChannel = nChannel;  // 通道号
+		stIn.cbNotify = cbNotify;  // 回调函数
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_RADIOMETRY_ATTACH stOut = new NET_OUT_RADIOMETRY_ATTACH();
+		status.hRadiometryHandle = LoginModule.netsdk.CLIENT_RadiometryAttach(LoginModule.m_hLoginHandle, stIn, stOut, 3000);
+		
+		if(status.hRadiometryHandle.longValue() == 0) {
+        	System.err.printf("RadiometryAttach Failed!" + ToolKits.getErrorCodePrint());
+        }
+		
+		return status.hRadiometryHandle.longValue() != 0;
+	}
+	
+	/**
+	 * 获取查询总个数
+	 */
+	public static boolean isAttaching() {
+		return status.hRadiometryHandle.longValue() != 0;
+	}
+	
+	/**
+	 * 开始获取热图数据
+	 */
+	public static int radiometryFetch(int nChannel) {
+		
+		int nStatus = -1;
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_RADIOMETRY_FETCH stIn = new NET_IN_RADIOMETRY_FETCH();
+		stIn.nChannel = nChannel;  // 通道号
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_RADIOMETRY_FETCH stOut = new NET_OUT_RADIOMETRY_FETCH();
+		
+		if(!LoginModule.netsdk.CLIENT_RadiometryFetch(LoginModule.m_hLoginHandle, stIn, stOut, 3000)) {
+        	System.err.printf("RadiometryFetch Failed!" + ToolKits.getErrorCodePrint());
+		} else {
+			nStatus = stOut.nStatus;
+		}
+		
+		return nStatus;
+	}
+	
+	/**
+	 * 处理回调数据(热图)
+	 * @throws IOException 
+	 */
+	public static boolean saveData(NET_RADIOMETRY_DATA radiometryData) throws IOException {
+		
+		if (radiometryData == null) {
+			return false;
+		}
+		
+		int nWidth = radiometryData.stMetaData.nWidth;
+		int nHeight = radiometryData.stMetaData.nHeight;
+		
+		short[] pGrayImg = new short[nWidth * nHeight];
+		float[] pTempForPixels = new float[nWidth * nHeight];
+		
+		if(LoginModule.netsdk.CLIENT_RadiometryDataParse(radiometryData, pGrayImg, pTempForPixels)) {
+			byte[] pYData = new byte[nWidth*nHeight*2];
+			imageAlgApi.drcTable(pGrayImg, (short)nWidth, (short)nHeight, 0, pYData, null);
+			ToolKits.savePicture(pYData, "./GrayscaleMap.yuv");
+		} else {
+			System.err.println("saveData failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		return true;
+	}
+	
+	/**
+	 * 取消订阅温度分布数据
+	 */
+	public static void radiometryDetach() {
+		if(status.hRadiometryHandle.longValue() != 0) {
+			LoginModule.netsdk.CLIENT_RadiometryDetach(status.hRadiometryHandle);
+			status.hRadiometryHandle.setValue(0);
+		}
+	}
+	
+	/**
+	 * 查询测温点
+	 */
+	public static NET_RADIOMETRYINFO queryPointTemper(int nChannel, short x, short y) {
+		int nQueryType = NetSDKLib.NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER;
+
+		// 入参
+		NET_IN_RADIOMETRY_GETPOINTTEMPER stIn = new NET_IN_RADIOMETRY_GETPOINTTEMPER();
+		stIn.nChannel = nChannel;
+		stIn.stCoordinate.nx = x;
+		stIn.stCoordinate.ny = y;
+		
+		// 出参
+		NET_OUT_RADIOMETRY_GETPOINTTEMPER stOut = new NET_OUT_RADIOMETRY_GETPOINTTEMPER();
+	
+		stIn.write();
+		stOut.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_QueryDevInfo(LoginModule.m_hLoginHandle, nQueryType, stIn.getPointer(), stOut.getPointer(), null, 3000);
+		if(!bRet) {
+        	System.err.printf("QueryPointTemper Failed!" + ToolKits.getErrorCodePrint());
+        	return null;
+		}
+		
+		stOut.read();
+		return stOut.stPointTempInfo;
+	}
+	
+	/**
+	 * 查询测温项
+	 */
+	public static NET_RADIOMETRYINFO queryItemTemper(int nChannel, int nPresetId, int nRuleId, int nMeterType) {
+		int nQueryType = NetSDKLib.NET_QUERY_DEV_RADIOMETRY_TEMPER;
+		
+		// 入参
+		NET_IN_RADIOMETRY_GETTEMPER stIn = new NET_IN_RADIOMETRY_GETTEMPER();
+		stIn.stCondition.nPresetId = nPresetId;
+		stIn.stCondition.nRuleId = nRuleId;
+		stIn.stCondition.nMeterType = nMeterType; 	// eg: NET_RADIOMETRY_METERTYPE.NET_RADIOMETRY_METERTYPE_AREA;
+		stIn.stCondition.nChannel = nChannel;
+
+		// 出参
+		NET_OUT_RADIOMETRY_GETTEMPER stOut = new NET_OUT_RADIOMETRY_GETTEMPER();
+	
+		stIn.write();
+		stOut.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_QueryDevInfo(LoginModule.m_hLoginHandle, nQueryType, stIn.getPointer(), stOut.getPointer(), null, 3000);
+		if(!bRet) {
+        	System.err.printf("QueryPointTemper Failed!" + ToolKits.getErrorCodePrint());
+        	return null;
+		}
+		
+		stOut.read();
+		return stOut.stTempInfo;
+	}
+	
+	/**
+	 * 开始查询信息
+	 */
+	public static boolean startFind(NET_IN_RADIOMETRY_STARTFIND stuIn) {
+		if(status.bSearching) {
+			stopFind();
+		}
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_RADIOMETRY_STARTFIND stuOut = new NET_OUT_RADIOMETRY_STARTFIND();
+		stuIn.write();
+		stuOut.write();
+		status.bSearching = LoginModule.netsdk.CLIENT_StartFind(LoginModule.m_hLoginHandle, 
+				NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000);
+		if (status.bSearching) {
+			stuOut.read();
+			status.nFinderHanle = stuOut.nFinderHanle;
+			status.nTotalCount = stuOut.nTotalCount;
+		}else {
+			System.err.printf("startFind Failed!" + ToolKits.getErrorCodePrint());
+		}
+		
+		return status.bSearching;
+	}
+	
+	/**
+	 * 获取查询总个数
+	 */
+	public static int getTotalCount() {
+		return status.nTotalCount;
+	}
+	
+	/**
+	 * 查询信息
+	 */
+	public static NET_OUT_RADIOMETRY_DOFIND doFind(int nOffset, int nCount) {
+		if(!status.bSearching) {
+			System.err.printf("DoFind Failed! [need startFind]");
+			return null;
+		}
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_RADIOMETRY_DOFIND stuIn = new NET_IN_RADIOMETRY_DOFIND();
+		stuIn.nFinderHanle = status.nFinderHanle;
+		stuIn.nBeginNumber = nOffset;
+		stuIn.nCount = nCount;
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_RADIOMETRY_DOFIND stuOut = new NET_OUT_RADIOMETRY_DOFIND();
+		
+		stuIn.write();
+		stuOut.write();
+		if (!LoginModule.netsdk.CLIENT_DoFind(LoginModule.m_hLoginHandle,
+				NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000)) {
+			System.err.printf("DoFind Failed!" + ToolKits.getErrorCodePrint());
+			return null;
+		}
+		
+		stuOut.read();
+		return stuOut;
+	}
+	
+	/**
+	 * 停止查询信息
+	 */
+	public static void stopFind() {
+		if(!status.bSearching) {
+			return;
+		}
+		
+		/*
+		 * 入参
+		 */
+		NET_IN_RADIOMETRY_STOPFIND stuIn = new NET_IN_RADIOMETRY_STOPFIND();
+		stuIn.nFinderHanle = status.nFinderHanle;
+		
+		/*
+		 * 出参
+		 */
+		NET_OUT_RADIOMETRY_STOPFIND stuOut = new NET_OUT_RADIOMETRY_STOPFIND();
+		
+		stuIn.write();
+		stuOut.write();
+		LoginModule.netsdk.CLIENT_StopFind(LoginModule.m_hLoginHandle, 
+				NET_FIND.NET_FIND_RADIOMETRY, stuIn.getPointer(), stuOut.getPointer(), 5000);
+		
+		status.bSearching = false;
+		status.nFinderHanle = 0;
+//		status.nTotalCount = 0;
+		
+		return;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TrafficEventModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TrafficEventModule.java
new file mode 100644
index 0000000..6c0ddc8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/TrafficEventModule.java
@@ -0,0 +1,106 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.ToolKits;
+
+/**
+ * 智能交通接口实现
+ * 主要有 :智能订阅、开闸、关闸功能
+ */
+public class TrafficEventModule {
+	// 智能订阅句柄
+	public static LLong m_hAttachHandle = new LLong(0);
+	
+	/**
+	 * 新版本开闸
+	 */
+	public static boolean New_OpenStrobe() {		
+		NetSDKLib.NET_CTRL_OPEN_STROBE openStrobe = new NetSDKLib.NET_CTRL_OPEN_STROBE();
+		openStrobe.nChannelId = 0;
+		String plate = new String("浙A888888");
+		
+		System.arraycopy(plate.getBytes(), 0, openStrobe.szPlateNumber, 0, plate.getBytes().length);
+		openStrobe.write();
+		if (LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_CTRL_OPEN_STROBE, openStrobe.getPointer(), null, 3000)) {
+		    System.out.println("Open Success!");
+		} else {
+			System.err.println("Failed to Open." + ToolKits.getErrorCodePrint());
+			return false;
+		} 
+		openStrobe.read();
+		
+		return true;
+	}
+	
+	/**
+	 * 新版本关闸
+	 */
+	public static void New_CloseStrobe() {	
+		NetSDKLib.NET_CTRL_CLOSE_STROBE closeStrobe = new NetSDKLib.NET_CTRL_CLOSE_STROBE();
+        closeStrobe.nChannelId = 0;
+        closeStrobe.write();
+        if (LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_CTRL_CLOSE_STROBE, closeStrobe.getPointer(), null, 3000)) {
+        	System.out.println("Close Success!");
+        } else {
+        	System.err.println("Failed to Close." + ToolKits.getErrorCodePrint());
+        }
+        closeStrobe.read();
+	}
+	
+    /**
+     * 手动抓图按钮事件
+     */
+    public static boolean manualSnapPicture(int chn) { 	
+    	NetSDKLib.MANUAL_SNAP_PARAMETER snapParam = new NetSDKLib.MANUAL_SNAP_PARAMETER();
+    	snapParam.nChannel = chn;
+    	String sequence = "11111"; // 抓图序列号,必须用数组拷贝
+    	System.arraycopy(sequence.getBytes(), 0, snapParam.bySequence, 0, sequence.getBytes().length);
+    	
+    	snapParam.write();
+    	boolean bRet = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_MANUAL_SNAP, snapParam.getPointer(), null, 5000);
+    	if (!bRet) {
+    		System.err.println("Failed to manual snap, last error " + ToolKits.getErrorCodePrint());
+    		return false;
+    	} else {
+    		System.out.println("Seccessed to manual snap");
+    	}
+    	snapParam.read();
+    	return true;
+    }
+	
+    /**
+     * 订阅实时上传智能分析数据
+     * @return 
+     */
+    public static boolean attachIVSEvent(int ChannelId, NetSDKLib.fAnalyzerDataCallBack m_AnalyzerDataCB) { 	
+    	/**
+		 * 说明:
+		 * 	通道数可以在有登录是返回的信息 m_stDeviceInfo.byChanNum 获取
+		 *  下列仅订阅了0通道的智能事件.
+		 */
+		int bNeedPicture = 1; // 是否需要图片
+
+        m_hAttachHandle = LoginModule.netsdk.CLIENT_RealLoadPictureEx(LoginModule.m_hLoginHandle, ChannelId,  NetSDKLib.EVENT_IVS_ALL, 
+				bNeedPicture , m_AnalyzerDataCB , null , null);
+		if( m_hAttachHandle.longValue() != 0  ) {
+			System.out.println("CLIENT_RealLoadPictureEx Success  ChannelId : \n" + ChannelId);
+		} else {
+			System.err.println("CLIENT_RealLoadPictureEx Failed!" + ToolKits.getErrorCodePrint());
+			return false;
+		}
+		
+		return true;
+    }
+    
+    /**
+     * 停止上传智能分析数据-图片
+     */
+    public static void detachIVSEvent() {
+        if (0 != m_hAttachHandle.longValue()) {
+        	LoginModule.netsdk.CLIENT_StopLoadPic(m_hAttachHandle);
+            System.out.println("Stop detach IVS event");
+            m_hAttachHandle.setValue(0);
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/VideoStateSummaryModule.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/VideoStateSummaryModule.java
new file mode 100644
index 0000000..ea00aab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/demo/module/VideoStateSummaryModule.java
@@ -0,0 +1,128 @@
+package com.netsdk.demo.module;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+
+import java.util.*;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/7/25 17:59
+ */
+public class VideoStateSummaryModule {
+
+    public static Map<Integer, NetSDKLib.LLong> getM_hAttachMap() {
+        return m_hAttachMap;
+    }
+
+    // handle map
+    private static Map<Integer, NetSDKLib.LLong> m_hAttachMap = new HashMap<Integer, NetSDKLib.LLong>();
+
+    // Attach 订阅 人数统计事件
+    public static boolean attachVideoStatSummary(int channel, NetSDKLib.fVideoStatSumCallBack fVideoStatSumCallBack) {
+
+        if (!m_hAttachMap.containsKey(channel)) {
+
+            NetSDKLib.NET_IN_ATTACH_VIDEOSTAT_SUM inParam = new NetSDKLib.NET_IN_ATTACH_VIDEOSTAT_SUM();
+            inParam.nChannel = channel;
+            inParam.cbVideoStatSum = fVideoStatSumCallBack;
+
+            NetSDKLib.NET_OUT_ATTACH_VIDEOSTAT_SUM outParam = new NetSDKLib.NET_OUT_ATTACH_VIDEOSTAT_SUM();
+            NetSDKLib.LLong m_hAttachHandle = LoginModule.netsdk.CLIENT_AttachVideoStatSummary(LoginModule.m_hLoginHandle, inParam, outParam, 5000);
+            if (m_hAttachHandle.longValue() == 0) {
+                System.err.printf("Attach Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+                return false;
+            }
+            m_hAttachMap.put(channel, m_hAttachHandle);
+            System.out.printf("Attach Succeed at Channel %d ! AttachHandle: %d. Wait Device Notify Information\n", channel, m_hAttachHandle.longValue());
+            return true;
+        } else {    // 非 0 说明正在订阅,先退订,再返回订阅失败
+            System.err.print("Attach Handle is not Zero, Please Detach First.\n");
+            return false;
+        }
+    }
+
+    // Check if Channel is Attached 是否订阅通道
+    public static boolean channelAttached(int channel) {
+
+        return m_hAttachMap.containsKey(channel);
+    }
+
+    // Detach 退订 人数统计事件
+    public static boolean detachVideoStatSummary(int channel) {
+        if (m_hAttachMap.containsKey(channel)) {
+
+            NetSDKLib.LLong m_hAttachHandle = m_hAttachMap.get(channel);
+
+            if (m_hAttachHandle.longValue() != 0) {
+                if (!LoginModule.netsdk.CLIENT_DetachVideoStatSummary(m_hAttachHandle)) {
+                    System.err.printf("Detach Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+                    return false;
+                }
+                System.out.println("Channel " + channel + ". Handle: " + m_hAttachHandle.longValue() + ". Detach Succeed!");
+                m_hAttachHandle.setValue(0);
+                m_hAttachMap.remove(channel);
+                return true;
+            } else {
+                System.err.print("Attach Handle is Zero, no Need for Detach.\n");
+                return false;
+            }
+        } else {
+            System.err.print("Attach Handle not found.\n");
+            return false;
+        }
+    }
+
+    // Detach All 退订 人数统计事件
+    public static void detachAllVideoStatSummary() {
+        Set<Integer> keySet = m_hAttachMap.keySet();
+
+        for (Iterator<Integer> iter = keySet.iterator(); iter.hasNext(); ) {
+            int channel = iter.next();
+
+            NetSDKLib.LLong m_hAttachHandle = m_hAttachMap.get(channel);
+            if (!LoginModule.netsdk.CLIENT_DetachVideoStatSummary(m_hAttachHandle)) {
+                System.err.printf("Detach Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+            }
+            System.out.println("Channel " + channel + ". Handle: " + m_hAttachHandle.longValue() + ". Detach Succeed!");
+            iter.remove();
+        }
+    }
+
+    // reAttach 重订 人数统计事件
+    public static void reAttachAllVideoStatSummary(NetSDKLib.fVideoStatSumCallBack fVideoStatSumCallBack) {
+        Set<Integer> keySet = m_hAttachMap.keySet();
+        for (int channel : keySet) {
+            NetSDKLib.LLong m_hAttachHandle = m_hAttachMap.get(channel);
+            if (!LoginModule.netsdk.CLIENT_DetachVideoStatSummary(m_hAttachHandle)) {
+                System.err.printf("Detach Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+            }
+            System.out.println("Channel " + channel + ". Handle: " + m_hAttachHandle.longValue() + ". Detach Succeed!");
+
+            NetSDKLib.NET_IN_ATTACH_VIDEOSTAT_SUM inParam = new NetSDKLib.NET_IN_ATTACH_VIDEOSTAT_SUM();
+            inParam.nChannel = channel;
+            inParam.cbVideoStatSum = fVideoStatSumCallBack;
+
+            NetSDKLib.NET_OUT_ATTACH_VIDEOSTAT_SUM outParam = new NetSDKLib.NET_OUT_ATTACH_VIDEOSTAT_SUM();
+            m_hAttachHandle = LoginModule.netsdk.CLIENT_AttachVideoStatSummary(LoginModule.m_hLoginHandle, inParam, outParam, 5000);
+            if (m_hAttachHandle.longValue() == 0) {
+                System.err.printf("Attach Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+            }
+            m_hAttachMap.put(channel, m_hAttachHandle);
+            System.out.printf("Attach Succeed at Channel %d ! AttachHandle: %d. Wait Device Notify Information\n", channel, m_hAttachHandle.longValue());
+        }
+    }
+
+    // clear OSD info
+    public static boolean clearVideoStateSummary(int channel) {
+        NetSDKLib.NET_CTRL_CLEAR_SECTION_STAT_INFO info = new NetSDKLib.NET_CTRL_CLEAR_SECTION_STAT_INFO();
+        info.nChannel = channel;
+        info.write();
+        if (!LoginModule.netsdk.CLIENT_ControlDevice(LoginModule.m_hLoginHandle, NetSDKLib.CtrlType.CTRLTYPE_CTRL_CLEAR_SECTION_STAT, info.getPointer(), 5000)) {
+            System.err.printf("Clear Video State Summary Failed!LastError = %s\n", ToolKits.getErrorCodePrint());
+            return false;
+        }
+        System.out.println("Clear Video State Summary Succeed!");
+        return true;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/DynamicParseUtil.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/DynamicParseUtil.java
new file mode 100644
index 0000000..8708812
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/DynamicParseUtil.java
@@ -0,0 +1,124 @@
+package com.netsdk.lib;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2021/3/10
+ */
+public class DynamicParseUtil {
+  private DynamicLibParseHandler handler;
+  private SAXParserFactory saxParserFactory;
+  private SAXParser saxParser;
+
+  /**
+   * 适配各系统动态库名称大小写不同,以及lib前缀造成的找不到库的问题
+   *
+   * @param currentSystem 当前系统:win64,win32,linux64,linux32,mac64
+   * @param libName 动态库名称
+   * @return
+   */
+  public String compareLibName(String currentSystem, String libName) {
+    String dynamicLibName = libName;
+    List<String> libs = handler.getLibsBySystem(currentSystem);
+    if (currentSystem.toLowerCase().contains("win")) {
+      return findLibs(libs, libName);
+    }
+    if (libName.startsWith("lib")) {
+      dynamicLibName = libName.substring(3);
+    }
+    return findLibs(libs, dynamicLibName);
+  }
+
+  private String findLibs(List<String> libs, String libName) {
+    for (String lib : libs) {
+      if (libName.equalsIgnoreCase(lib)) {
+        return lib;
+      }
+    }
+    return "";
+  }
+
+  public List<String> getLibsSystem(String system) {
+    return handler.getLibsBySystem(system);
+  }
+
+  private DynamicParseUtil() throws ParserConfigurationException {
+    // 获取SAX分析器的工厂实例,专门负责创建SAXParser分析器
+    saxParserFactory = SAXParserFactory.newInstance();
+    // 获取SAXParser分析器的实例
+    try {
+      saxParser = saxParserFactory.newSAXParser();
+      handler = new DynamicLibParseHandler();
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+  }
+
+  public DynamicParseUtil(InputStream inputSteam)
+      throws ParserConfigurationException, IOException, SAXException {
+    this();
+    saxParser.parse(inputSteam, handler);
+  }
+
+  /** xml解析handler */
+  private class DynamicLibParseHandler extends DefaultHandler {
+    private HashMap<String, List<String>> dynamics = new HashMap<String, List<String>>();
+    private List<String> systems =
+        Arrays.asList("win64", "win32", "linux64", "linux32", "mac64", "linuxARM");
+    private String currentDynamicSystem;
+    private List<String> libs;
+
+    public List<String> getLibsBySystem(String system) {
+      return dynamics.get(system);
+    }
+
+    @Override
+    public void startDocument() throws SAXException {
+      super.startDocument();
+    }
+
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes attributes)
+        throws SAXException {
+      super.startElement(uri, localName, qName, attributes);
+      if (systems.contains(qName)) {
+        currentDynamicSystem = qName;
+        if (libs == null) {
+          libs = new ArrayList<String>();
+        }
+      }
+    }
+
+    @Override
+    public void endElement(String uri, String localName, String qName) throws SAXException {
+      super.endElement(uri, localName, qName);
+      if (systems.contains(qName)) {
+        // 保存到hashmap中
+        dynamics.put(currentDynamicSystem, libs);
+        // 清除libs
+        libs = null;
+      }
+    }
+
+    @Override
+    public void characters(char[] ch, int start, int length) throws SAXException {
+      super.characters(ch, start, length);
+      String lib = new String(ch, start, length);
+      if (!lib.trim().isEmpty()) {
+        libs.add(lib);
+      }
+    }
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ImageAlgLib.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ImageAlgLib.java
new file mode 100644
index 0000000..90f615f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ImageAlgLib.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+
+/**
+ * SDK JNA接口封装
+ */
+public interface ImageAlgLib extends Library {
+	ImageAlgLib IMAGEALG_INSTANCE = (ImageAlgLib)Native.loadLibrary(Utils.getLoadLibrary("ImageAlg"), ImageAlgLib.class);
+	
+	
+	/*******************************************************************************
+	* 函数名  : drcTable
+	* 描  述  : raw数据转换成Y数据
+	* 输  入  : - pRaw: 14bit裸数据
+	* 输  入  : - height: 输入裸数据的高
+	* 输  入  : - width:  输入裸数据的宽
+	* 输  入  : - sel:  默认填0
+	* 输  入  : - lut:  当sel为1时,该参数为本地drc表,默认填0
+	* 输  出  : pYData:转换后的Y数据
+	* 返回值  : 0  : 成功
+	*           -1: 失败
+	*******************************************************************************/
+	int drcTable(short[] pRaw, short width, short height, int sel, byte[] pYData, short[] lut);
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LastError.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LastError.java
new file mode 100644
index 0000000..1a49d97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LastError.java
@@ -0,0 +1,495 @@
+package com.netsdk.lib;
+
+/**
+ * 错误类型代号,对应CLIENT_GetLastError接口的返回值, 十进制
+ *
+ * @author 29779
+ */
+public class LastError {
+    public static final int NET_NOERROR = 0;               // 没有错误
+    public static final int NET_ERROR = -1;               // 未知错误
+    public static final int NET_SYSTEM_ERROR = (0x80000000 | 1);   // Windows系统出错
+    public static final int NET_NETWORK_ERROR = (0x80000000 | 2);   // 网络错误,可能是因为网络超时
+    public static final int NET_DEV_VER_NOMATCH = (0x80000000 | 3);   // 设备协议不匹配
+    public static final int NET_INVALID_HANDLE = (0x80000000 | 4);   // 句柄无效
+    public static final int NET_OPEN_CHANNEL_ERROR = (0x80000000 | 5);   // 打开通道失败
+    public static final int NET_CLOSE_CHANNEL_ERROR = (0x80000000 | 6);   // 关闭通道失败
+    public static final int NET_ILLEGAL_PARAM = (0x80000000 | 7);   // 用户参数不合法
+    public static final int NET_SDK_INIT_ERROR = (0x80000000 | 8);   // SDK初始化出错
+    public static final int NET_SDK_UNINIT_ERROR = (0x80000000 | 9);   // SDK清理出错
+    public static final int NET_RENDER_OPEN_ERROR = (0x80000000 | 10);  // 申请render资源出错
+    public static final int NET_DEC_OPEN_ERROR = (0x80000000 | 11);  // 打开解码库出错
+    public static final int NET_DEC_CLOSE_ERROR = (0x80000000 | 12);  // 关闭解码库出错
+    public static final int NET_MULTIPLAY_NOCHANNEL = (0x80000000 | 13);  // 多画面预览中检测到通道数为0
+    public static final int NET_TALK_INIT_ERROR = (0x80000000 | 14);  // 录音库初始化失败
+    public static final int NET_TALK_NOT_INIT = (0x80000000 | 15);  // 录音库未经初始化
+    public static final int NET_TALK_SENDDATA_ERROR = (0x80000000 | 16);  // 发送音频数据出错
+    public static final int NET_REAL_ALREADY_SAVING = (0x80000000 | 17);  // 实时数据已经处于保存状态
+    public static final int NET_NOT_SAVING = (0x80000000 | 18);  // 未保存实时数据
+    public static final int NET_OPEN_FILE_ERROR = (0x80000000 | 19);  // 打开文件出错
+    public static final int NET_PTZ_SET_TIMER_ERROR = (0x80000000 | 20);  // 启动云台控制定时器失败
+    public static final int NET_RETURN_DATA_ERROR = (0x80000000 | 21);  // 对返回数据的校验出错
+    public static final int NET_INSUFFICIENT_BUFFER = (0x80000000 | 22);  // 没有足够的缓存
+    public static final int NET_NOT_SUPPORTED = (0x80000000 | 23);  // 当前SDK未支持该功能
+    public static final int NET_NO_RECORD_FOUND = (0x80000000 | 24);  // 查询不到录像
+    public static final int NET_NOT_AUTHORIZED = (0x80000000 | 25);  // 无操作权限
+    public static final int NET_NOT_NOW = (0x80000000 | 26);  // 暂时无法执行
+    public static final int NET_NO_TALK_CHANNEL = (0x80000000 | 27);  // 未发现对讲通道
+    public static final int NET_NO_AUDIO = (0x80000000 | 28);  // 未发现音频
+    public static final int NET_NO_INIT = (0x80000000 | 29);  // 网络SDK未经初始化
+    public static final int NET_DOWNLOAD_END = (0x80000000 | 30);  // 下载已结束
+    public static final int NET_EMPTY_LIST = (0x80000000 | 31);  // 查询结果为空
+    public static final int NET_ERROR_GETCFG_SYSATTR = (0x80000000 | 32);  // 获取系统属性配置失败
+    public static final int NET_ERROR_GETCFG_SERIAL = (0x80000000 | 33);  // 获取序列号失败
+    public static final int NET_ERROR_GETCFG_GENERAL = (0x80000000 | 34);  // 获取常规属性失败
+    public static final int NET_ERROR_GETCFG_DSPCAP = (0x80000000 | 35);  // 获取DSP能力描述失败
+    public static final int NET_ERROR_GETCFG_NETCFG = (0x80000000 | 36);  // 获取网络配置失败
+    public static final int NET_ERROR_GETCFG_CHANNAME = (0x80000000 | 37);  // 获取通道名称失败
+    public static final int NET_ERROR_GETCFG_VIDEO = (0x80000000 | 38);  // 获取视频属性失败
+    public static final int NET_ERROR_GETCFG_RECORD = (0x80000000 | 39);  // 获取录象配置失败
+    public static final int NET_ERROR_GETCFG_PRONAME = (0x80000000 | 40);  // 获取解码器协议名称失败
+    public static final int NET_ERROR_GETCFG_FUNCNAME = (0x80000000 | 41);  // 获取232串口功能名称失败
+    public static final int NET_ERROR_GETCFG_485DECODER = (0x80000000 | 42);  // 获取解码器属性失败
+    public static final int NET_ERROR_GETCFG_232COM = (0x80000000 | 43);  // 获取232串口配置失败
+    public static final int NET_ERROR_GETCFG_ALARMIN = (0x80000000 | 44);  // 获取外部报警输入配置失败
+    public static final int NET_ERROR_GETCFG_ALARMDET = (0x80000000 | 45);  // 获取动态检测报警失败
+    public static final int NET_ERROR_GETCFG_SYSTIME = (0x80000000 | 46);  // 获取设备时间失败
+    public static final int NET_ERROR_GETCFG_PREVIEW = (0x80000000 | 47);  // 获取预览参数失败
+    public static final int NET_ERROR_GETCFG_AUTOMT = (0x80000000 | 48);  // 获取自动维护配置失败
+    public static final int NET_ERROR_GETCFG_VIDEOMTRX = (0x80000000 | 49);  // 获取视频矩阵配置失败
+    public static final int NET_ERROR_GETCFG_COVER = (0x80000000 | 50);  // 获取区域遮挡配置失败
+    public static final int NET_ERROR_GETCFG_WATERMAKE = (0x80000000 | 51);  // 获取图象水印配置失败
+    public static final int NET_ERROR_GETCFG_MULTICAST = (0x80000000 | 52);  // 获取配置失败位置:组播端口按通道配置
+    public static final int NET_ERROR_SETCFG_GENERAL = (0x80000000 | 55);  // 修改常规属性失败
+    public static final int NET_ERROR_SETCFG_NETCFG = (0x80000000 | 56);  // 修改网络配置失败
+    public static final int NET_ERROR_SETCFG_CHANNAME = (0x80000000 | 57);  // 修改通道名称失败
+    public static final int NET_ERROR_SETCFG_VIDEO = (0x80000000 | 58);  // 修改视频属性失败
+    public static final int NET_ERROR_SETCFG_RECORD = (0x80000000 | 59);  // 修改录象配置失败
+    public static final int NET_ERROR_SETCFG_485DECODER = (0x80000000 | 60);  // 修改解码器属性失败
+    public static final int NET_ERROR_SETCFG_232COM = (0x80000000 | 61);  // 修改232串口配置失败
+    public static final int NET_ERROR_SETCFG_ALARMIN = (0x80000000 | 62);  // 修改外部输入报警配置失败
+    public static final int NET_ERROR_SETCFG_ALARMDET = (0x80000000 | 63);  // 修改动态检测报警配置失败
+    public static final int NET_ERROR_SETCFG_SYSTIME = (0x80000000 | 64);  // 修改设备时间失败
+    public static final int NET_ERROR_SETCFG_PREVIEW = (0x80000000 | 65);  // 修改预览参数失败
+    public static final int NET_ERROR_SETCFG_AUTOMT = (0x80000000 | 66);  // 修改自动维护配置失败
+    public static final int NET_ERROR_SETCFG_VIDEOMTRX = (0x80000000 | 67);  // 修改视频矩阵配置失败
+    public static final int NET_ERROR_SETCFG_COVER = (0x80000000 | 68);  // 修改区域遮挡配置失败
+    public static final int NET_ERROR_SETCFG_WATERMAKE = (0x80000000 | 69);  // 修改图象水印配置失败
+    public static final int NET_ERROR_SETCFG_WLAN = (0x80000000 | 70);  // 修改无线网络信息失败
+    public static final int NET_ERROR_SETCFG_WLANDEV = (0x80000000 | 71);  // 选择无线网络设备失败
+    public static final int NET_ERROR_SETCFG_REGISTER = (0x80000000 | 72);  // 修改主动注册参数配置失败
+    public static final int NET_ERROR_SETCFG_CAMERA = (0x80000000 | 73);  // 修改摄像头属性配置失败
+    public static final int NET_ERROR_SETCFG_INFRARED = (0x80000000 | 74);  // 修改红外报警配置失败
+    public static final int NET_ERROR_SETCFG_SOUNDALARM = (0x80000000 | 75);  // 修改音频报警配置失败
+    public static final int NET_ERROR_SETCFG_STORAGE = (0x80000000 | 76);  // 修改存储位置配置失败
+    public static final int NET_AUDIOENCODE_NOTINIT = (0x80000000 | 77);  // 音频编码接口没有成功初始化
+    public static final int NET_DATA_TOOLONGH = (0x80000000 | 78);  // 数据过长
+    public static final int NET_UNSUPPORTED = (0x80000000 | 79);  // 设备不支持该操作
+    public static final int NET_DEVICE_BUSY = (0x80000000 | 80);  // 设备资源不足
+    public static final int NET_SERVER_STARTED = (0x80000000 | 81);  // 服务器已经启动
+    public static final int NET_SERVER_STOPPED = (0x80000000 | 82);  // 服务器尚未成功启动
+    public static final int NET_LISTER_INCORRECT_SERIAL = (0x80000000 | 83);  // 输入序列号有误
+    public static final int NET_QUERY_DISKINFO_FAILED = (0x80000000 | 84);  // 获取硬盘信息失败
+    public static final int NET_ERROR_GETCFG_SESSION = (0x80000000 | 85);  // 获取连接Session信息
+    public static final int NET_USER_FLASEPWD_TRYTIME = (0x80000000 | 86);  // 输入密码错误超过限制次数
+    public static final int NET_LOGIN_ERROR_PASSWORD = (0x80000000 | 100); // 密码不正确
+    public static final int NET_LOGIN_ERROR_USER = (0x80000000 | 101); // 帐户不存在
+    public static final int NET_LOGIN_ERROR_TIMEOUT = (0x80000000 | 102); // 等待登录返回超时
+    public static final int NET_LOGIN_ERROR_RELOGGIN = (0x80000000 | 103); // 帐号已登录
+    public static final int NET_LOGIN_ERROR_LOCKED = (0x80000000 | 104); // 帐号已被锁定
+    public static final int NET_LOGIN_ERROR_BLACKLIST = (0x80000000 | 105); // 帐号已被列为禁止名单
+    public static final int NET_LOGIN_ERROR_BUSY = (0x80000000 | 106); // 资源不足,系统忙
+    public static final int NET_LOGIN_ERROR_CONNECT = (0x80000000 | 107); // 登录设备超时,请检查网络并重试
+    public static final int NET_LOGIN_ERROR_NETWORK = (0x80000000 | 108); // 网络连接失败
+    public static final int NET_LOGIN_ERROR_SUBCONNECT = (0x80000000 | 109); // 登录设备成功,但无法创建视频通道,请检查网络状况
+    public static final int NET_LOGIN_ERROR_MAXCONNECT = (0x80000000 | 110); // 超过最大连接数
+    public static final int NET_LOGIN_ERROR_PROTOCOL3_ONLY = (0x80000000 | 111); // 只支持3代协议
+    public static final int NET_LOGIN_ERROR_UKEY_LOST = (0x80000000 | 112); // 未插入U盾或U盾信息错误
+    public static final int NET_LOGIN_ERROR_NO_AUTHORIZED = (0x80000000 | 113); // 客户端IP地址没有登录权限
+    public static final int NET_LOGIN_ERROR_USER_OR_PASSOWRD = (0x80000000 | 117); // 账号或密码错误
+    public static final int NET_LOGIN_ERROR_DEVICE_NOT_INIT = (0x80000000 | 118);    // 设备尚未初始化,不能登录,请先初始化设备
+    public static final int NET_RENDER_SOUND_ON_ERROR = (0x80000000 | 120); // Render库打开音频出错
+    public static final int NET_RENDER_SOUND_OFF_ERROR = (0x80000000 | 121); // Render库关闭音频出错
+    public static final int NET_RENDER_SET_VOLUME_ERROR = (0x80000000 | 122); // Render库控制音量出错
+    public static final int NET_RENDER_ADJUST_ERROR = (0x80000000 | 123); // Render库设置画面参数出错
+    public static final int NET_RENDER_PAUSE_ERROR = (0x80000000 | 124); // Render库暂停播放出错
+    public static final int NET_RENDER_SNAP_ERROR = (0x80000000 | 125); // Render库抓图出错
+    public static final int NET_RENDER_STEP_ERROR = (0x80000000 | 126); // Render库步进出错
+    public static final int NET_RENDER_FRAMERATE_ERROR = (0x80000000 | 127); // Render库设置帧率出错
+    public static final int NET_RENDER_DISPLAYREGION_ERROR = (0x80000000 | 128); // Render库设置显示区域出错
+    public static final int NET_RENDER_GETOSDTIME_ERROR = (0x80000000 | 129); // Render库获取当前播放时间出错
+    public static final int NET_GROUP_EXIST = (0x80000000 | 140); // 组名已存在
+    public static final int NET_GROUP_NOEXIST = (0x80000000 | 141); // 组名不存在
+    public static final int NET_GROUP_RIGHTOVER = (0x80000000 | 142); // 组的权限超出权限列表范围
+    public static final int NET_GROUP_HAVEUSER = (0x80000000 | 143); // 组下有用户,不能删除
+    public static final int NET_GROUP_RIGHTUSE = (0x80000000 | 144); // 组的某个权限被用户使用,不能删除
+    public static final int NET_GROUP_SAMENAME = (0x80000000 | 145); // 新组名同已有组名重复
+    public static final int NET_USER_EXIST = (0x80000000 | 146); // 用户已存在
+    public static final int NET_USER_NOEXIST = (0x80000000 | 147); // 用户不存在
+    public static final int NET_USER_RIGHTOVER = (0x80000000 | 148); // 用户权限超出组权限
+    public static final int NET_USER_PWD = (0x80000000 | 149); // 保留帐号,不容许修改密码
+    public static final int NET_USER_FLASEPWD = (0x80000000 | 150); // 密码不正确
+    public static final int NET_USER_NOMATCHING = (0x80000000 | 151); // 密码不匹配
+    public static final int NET_USER_INUSE = (0x80000000 | 152); // 账号正在使用中
+    public static final int NET_ERROR_GETCFG_ETHERNET = (0x80000000 | 300); // 获取网卡配置失败
+    public static final int NET_ERROR_GETCFG_WLAN = (0x80000000 | 301); // 获取无线网络信息失败
+    public static final int NET_ERROR_GETCFG_WLANDEV = (0x80000000 | 302); // 获取无线网络设备失败
+    public static final int NET_ERROR_GETCFG_REGISTER = (0x80000000 | 303); // 获取主动注册参数失败
+    public static final int NET_ERROR_GETCFG_CAMERA = (0x80000000 | 304); // 获取摄像头属性失败
+    public static final int NET_ERROR_GETCFG_INFRARED = (0x80000000 | 305); // 获取红外报警配置失败
+    public static final int NET_ERROR_GETCFG_SOUNDALARM = (0x80000000 | 306); // 获取音频报警配置失败
+    public static final int NET_ERROR_GETCFG_STORAGE = (0x80000000 | 307); // 获取存储位置配置失败
+    public static final int NET_ERROR_GETCFG_MAIL = (0x80000000 | 308); // 获取邮件配置失败
+    public static final int NET_CONFIG_DEVBUSY = (0x80000000 | 309); // 暂时无法设置
+    public static final int NET_CONFIG_DATAILLEGAL = (0x80000000 | 310); // 配置数据不合法
+    public static final int NET_ERROR_GETCFG_DST = (0x80000000 | 311); // 获取夏令时配置失败
+    public static final int NET_ERROR_SETCFG_DST = (0x80000000 | 312); // 设置夏令时配置失败
+    public static final int NET_ERROR_GETCFG_VIDEO_OSD = (0x80000000 | 313); // 获取视频OSD叠加配置失败
+    public static final int NET_ERROR_SETCFG_VIDEO_OSD = (0x80000000 | 314); // 设置视频OSD叠加配置失败
+    public static final int NET_ERROR_GETCFG_GPRSCDMA = (0x80000000 | 315); // 获取CDMA\GPRS网络配置失败
+    public static final int NET_ERROR_SETCFG_GPRSCDMA = (0x80000000 | 316); // 设置CDMA\GPRS网络配置失败
+    public static final int NET_ERROR_GETCFG_IPFILTER = (0x80000000 | 317); // 获取IP过滤配置失败
+    public static final int NET_ERROR_SETCFG_IPFILTER = (0x80000000 | 318); // 设置IP过滤配置失败
+    public static final int NET_ERROR_GETCFG_TALKENCODE = (0x80000000 | 319); // 获取语音对讲编码配置失败
+    public static final int NET_ERROR_SETCFG_TALKENCODE = (0x80000000 | 320); // 设置语音对讲编码配置失败
+    public static final int NET_ERROR_GETCFG_RECORDLEN = (0x80000000 | 321); // 获取录像打包长度配置失败
+    public static final int NET_ERROR_SETCFG_RECORDLEN = (0x80000000 | 322); // 设置录像打包长度配置失败
+    public static final int NET_DONT_SUPPORT_SUBAREA = (0x80000000 | 323); // 不支持网络硬盘分区
+    public static final int NET_ERROR_GET_AUTOREGSERVER = (0x80000000 | 324); // 获取设备上主动注册服务器信息失败
+    public static final int NET_ERROR_CONTROL_AUTOREGISTER = (0x80000000 | 325); // 主动注册重定向注册错误
+    public static final int NET_ERROR_DISCONNECT_AUTOREGISTER = (0x80000000 | 326); // 断开主动注册服务器错误
+    public static final int NET_ERROR_GETCFG_MMS = (0x80000000 | 327); // 获取mms配置失败
+    public static final int NET_ERROR_SETCFG_MMS = (0x80000000 | 328); // 设置mms配置失败
+    public static final int NET_ERROR_GETCFG_SMSACTIVATION = (0x80000000 | 329); // 获取短信激活无线连接配置失败
+    public static final int NET_ERROR_SETCFG_SMSACTIVATION = (0x80000000 | 330); // 设置短信激活无线连接配置失败
+    public static final int NET_ERROR_GETCFG_DIALINACTIVATION = (0x80000000 | 331); // 获取拨号激活无线连接配置失败
+    public static final int NET_ERROR_SETCFG_DIALINACTIVATION = (0x80000000 | 332); // 设置拨号激活无线连接配置失败
+    public static final int NET_ERROR_GETCFG_VIDEOOUT = (0x80000000 | 333); // 查询视频输出参数配置失败
+    public static final int NET_ERROR_SETCFG_VIDEOOUT = (0x80000000 | 334); // 设置视频输出参数配置失败
+    public static final int NET_ERROR_GETCFG_OSDENABLE = (0x80000000 | 335); // 获取osd叠加使能配置失败
+    public static final int NET_ERROR_SETCFG_OSDENABLE = (0x80000000 | 336); // 设置osd叠加使能配置失败
+    public static final int NET_ERROR_SETCFG_ENCODERINFO = (0x80000000 | 337); // 设置数字通道前端编码接入配置失败
+    public static final int NET_ERROR_GETCFG_TVADJUST = (0x80000000 | 338); // 获取TV调节配置失败
+    public static final int NET_ERROR_SETCFG_TVADJUST = (0x80000000 | 339); // 设置TV调节配置失败
+    public static final int NET_ERROR_CONNECT_FAILED = (0x80000000 | 340); // 请求建立连接失败
+    public static final int NET_ERROR_SETCFG_BURNFILE = (0x80000000 | 341); // 请求刻录文件上传失败
+    public static final int NET_ERROR_SNIFFER_GETCFG = (0x80000000 | 342); // 获取抓包配置信息失败
+    public static final int NET_ERROR_SNIFFER_SETCFG = (0x80000000 | 343); // 设置抓包配置信息失败
+    public static final int NET_ERROR_DOWNLOADRATE_GETCFG = (0x80000000 | 344); // 查询下载限制信息失败
+    public static final int NET_ERROR_DOWNLOADRATE_SETCFG = (0x80000000 | 345); // 设置下载限制信息失败
+    public static final int NET_ERROR_SEARCH_TRANSCOM = (0x80000000 | 346); // 查询串口参数失败
+    public static final int NET_ERROR_GETCFG_POINT = (0x80000000 | 347); // 获取预制点信息错误
+    public static final int NET_ERROR_SETCFG_POINT = (0x80000000 | 348); // 设置预制点信息错误
+    public static final int NET_SDK_LOGOUT_ERROR = (0x80000000 | 349); // SDK没有正常登出设备
+    public static final int NET_ERROR_GET_VEHICLE_CFG = (0x80000000 | 350); // 获取车载配置失败
+    public static final int NET_ERROR_SET_VEHICLE_CFG = (0x80000000 | 351); // 设置车载配置失败
+    public static final int NET_ERROR_GET_ATM_OVERLAY_CFG = (0x80000000 | 352); // 获取atm叠加配置失败
+    public static final int NET_ERROR_SET_ATM_OVERLAY_CFG = (0x80000000 | 353); // 设置atm叠加配置失败
+    public static final int NET_ERROR_GET_ATM_OVERLAY_ABILITY = (0x80000000 | 354); // 获取atm叠加能力失败
+    public static final int NET_ERROR_GET_DECODER_TOUR_CFG = (0x80000000 | 355); // 获取解码器解码轮巡配置失败
+    public static final int NET_ERROR_SET_DECODER_TOUR_CFG = (0x80000000 | 356); // 设置解码器解码轮巡配置失败
+    public static final int NET_ERROR_CTRL_DECODER_TOUR = (0x80000000 | 357); // 控制解码器解码轮巡失败
+    public static final int NET_GROUP_OVERSUPPORTNUM = (0x80000000 | 358); // 超出设备支持最大用户组数目
+    public static final int NET_USER_OVERSUPPORTNUM = (0x80000000 | 359); // 超出设备支持最大用户数目
+    public static final int NET_ERROR_GET_SIP_CFG = (0x80000000 | 368); // 获取SIP配置失败
+    public static final int NET_ERROR_SET_SIP_CFG = (0x80000000 | 369); // 设置SIP配置失败
+    public static final int NET_ERROR_GET_SIP_ABILITY = (0x80000000 | 370); // 获取SIP能力失败
+    public static final int NET_ERROR_GET_WIFI_AP_CFG = (0x80000000 | 371); // 获取WIFI ap配置失败
+    public static final int NET_ERROR_SET_WIFI_AP_CFG = (0x80000000 | 372); // 设置WIFI ap配置失败
+    public static final int NET_ERROR_GET_DECODE_POLICY = (0x80000000 | 373); // 获取解码策略配置失败
+    public static final int NET_ERROR_SET_DECODE_POLICY = (0x80000000 | 374); // 设置解码策略配置失败
+    public static final int NET_ERROR_TALK_REJECT = (0x80000000 | 375); // 拒绝对讲
+    public static final int NET_ERROR_TALK_OPENED = (0x80000000 | 376); // 对讲被其他客户端打开
+    public static final int NET_ERROR_TALK_RESOURCE_CONFLICIT = (0x80000000 | 377); // 资源冲突
+    public static final int NET_ERROR_TALK_UNSUPPORTED_ENCODE = (0x80000000 | 378); // 不支持的语音编码格式
+    public static final int NET_ERROR_TALK_RIGHTLESS = (0x80000000 | 379); // 无权限
+    public static final int NET_ERROR_TALK_FAILED = (0x80000000 | 380); // 请求对讲失败
+    public static final int NET_ERROR_GET_MACHINE_CFG = (0x80000000 | 381); // 获取机器相关配置失败
+    public static final int NET_ERROR_SET_MACHINE_CFG = (0x80000000 | 382); // 设置机器相关配置失败
+    public static final int NET_ERROR_GET_DATA_FAILED = (0x80000000 | 383); // 设备无法获取当前请求数据
+    public static final int NET_ERROR_MAC_VALIDATE_FAILED = (0x80000000 | 384); // MAC地址验证失败
+    public static final int NET_ERROR_GET_INSTANCE = (0x80000000 | 385); // 获取服务器实例失败
+    public static final int NET_ERROR_JSON_REQUEST = (0x80000000 | 386); // 生成的json字符串错误
+    public static final int NET_ERROR_JSON_RESPONSE = (0x80000000 | 387); // 响应的json字符串错误
+    public static final int NET_ERROR_VERSION_HIGHER = (0x80000000 | 388); // 协议版本低于当前使用的版本
+    public static final int NET_SPARE_NO_CAPACITY = (0x80000000 | 389); // 设备操作失败, 容量不足
+    public static final int NET_ERROR_SOURCE_IN_USE = (0x80000000 | 390); // 显示源被其他输出占用
+    public static final int NET_ERROR_REAVE = (0x80000000 | 391); // 高级用户抢占低级用户资源
+    public static final int NET_ERROR_NETFORBID = (0x80000000 | 392); // 禁止入网
+    public static final int NET_ERROR_GETCFG_MACFILTER = (0x80000000 | 393); // 获取MAC过滤配置失败
+    public static final int NET_ERROR_SETCFG_MACFILTER = (0x80000000 | 394); // 设置MAC过滤配置失败
+    public static final int NET_ERROR_GETCFG_IPMACFILTER = (0x80000000 | 395); // 获取IP/MAC过滤配置失败
+    public static final int NET_ERROR_SETCFG_IPMACFILTER = (0x80000000 | 396); // 设置IP/MAC过滤配置失败
+    public static final int NET_ERROR_OPERATION_OVERTIME = (0x80000000 | 397); // 当前操作超时
+    public static final int NET_ERROR_SENIOR_VALIDATE_FAILED = (0x80000000 | 398); // 高级校验失败
+    public static final int NET_ERROR_DEVICE_ID_NOT_EXIST = (0x80000000 | 399); // 设备ID不存在
+    public static final int NET_ERROR_UNSUPPORTED = (0x80000000 | 400); // 不支持当前操作
+    public static final int NET_ERROR_PROXY_DLLLOAD = (0x80000000 | 401); // 代理库加载失败
+    public static final int NET_ERROR_PROXY_ILLEGAL_PARAM = (0x80000000 | 402); // 代理用户参数不合法
+    public static final int NET_ERROR_PROXY_INVALID_HANDLE = (0x80000000 | 403); // 代理句柄无效
+    public static final int NET_ERROR_PROXY_LOGIN_DEVICE_ERROR = (0x80000000 | 404); // 代理登入前端设备失败
+    public static final int NET_ERROR_PROXY_START_SERVER_ERROR = (0x80000000 | 405); // 启动代理服务失败
+    public static final int NET_ERROR_SPEAK_FAILED = (0x80000000 | 406); // 请求喊话失败
+    public static final int NET_ERROR_NOT_SUPPORT_F6 = (0x80000000 | 407); // 设备不支持此F6接口调用
+    public static final int NET_ERROR_CD_UNREADY = (0x80000000 | 408); // 光盘未就绪
+    public static final int NET_ERROR_DIR_NOT_EXIST = (0x80000000 | 409); // 目录不存在
+    public static final int NET_ERROR_UNSUPPORTED_SPLIT_MODE = (0x80000000 | 410); // 设备不支持的分割模式
+    public static final int NET_ERROR_OPEN_WND_PARAM = (0x80000000 | 411); // 开窗参数不合法
+    public static final int NET_ERROR_LIMITED_WND_COUNT = (0x80000000 | 412); // 开窗数量超过限制
+    public static final int NET_ERROR_UNMATCHED_REQUEST = (0x80000000 | 413); // 请求命令与当前模式不匹配
+    public static final int NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR = (0x80000000 | 414); // Render库启用高清图像内部调整策略出错
+    public static final int NET_ERROR_UPGRADE_FAILED = (0x80000000 | 415); // 设备升级失败
+    public static final int NET_ERROR_NO_TARGET_DEVICE = (0x80000000 | 416); // 找不到目标设备
+    public static final int NET_ERROR_NO_VERIFY_DEVICE = (0x80000000 | 417); // 找不到验证设备
+    public static final int NET_ERROR_CASCADE_RIGHTLESS = (0x80000000 | 418); // 无级联权限
+    public static final int NET_ERROR_LOW_PRIORITY = (0x80000000 | 419); // 低优先级
+    public static final int NET_ERROR_REMOTE_REQUEST_TIMEOUT = (0x80000000 | 420); // 远程设备请求超时
+    public static final int NET_ERROR_LIMITED_INPUT_SOURCE = (0x80000000 | 421); // 输入源超出最大路数限制
+    public static final int NET_ERROR_SET_LOG_PRINT_INFO = (0x80000000 | 422); // 设置日志打印失败
+    public static final int NET_ERROR_PARAM_DWSIZE_ERROR = (0x80000000 | 423); // 入参的dwsize字段出错
+    public static final int NET_ERROR_LIMITED_MONITORWALL_COUNT = (0x80000000 | 424); // 电视墙数量超过上限
+    public static final int NET_ERROR_PART_PROCESS_FAILED = (0x80000000 | 425); // 部分过程执行失败
+    public static final int NET_ERROR_TARGET_NOT_SUPPORT = (0x80000000 | 426); // 该功能不支持转发
+    public static final int NET_ERROR_VISITE_FILE = (0x80000000 | 510); // 访问文件失败
+    public static final int NET_ERROR_DEVICE_STATUS_BUSY = (0x80000000 | 511); // 设备忙
+    public static final int NET_USER_PWD_NOT_AUTHORIZED = (0x80000000 | 512); // 修改密码无权限
+    public static final int NET_USER_PWD_NOT_STRONG = (0x80000000 | 513); // 密码强度不够
+    public static final int NET_ERROR_NO_SUCH_CONFIG = (0x80000000 | 514); // 没有对应的配置
+    public static final int NET_ERROR_AUDIO_RECORD_FAILED = (0x80000000 | 515); // 录音失败
+    public static final int NET_ERROR_SEND_DATA_FAILED = (0x80000000 | 516); // 数据发送失败
+    public static final int NET_ERROR_OBSOLESCENT_INTERFACE = (0x80000000 | 517); // 废弃接口
+    public static final int NET_ERROR_INSUFFICIENT_INTERAL_BUF = (0x80000000 | 518); // 内部缓冲不足
+    public static final int NET_ERROR_NEED_ENCRYPTION_PASSWORD = (0x80000000 | 519); // 修改设备ip时,需要校验密码
+    public static final int NET_ERROR_NOSUPPORT_RECORD = (0x80000000 | 520); // 设备不支持此记录集
+    public static final int NET_ERROR_ANALYSE_TASK_FULL = (0x80000000 | 523); // 智能分析任务已经满
+    public static final int NET_ERROR_SERIALIZE_ERROR = (0x80000000 | 1010);// 数据序列化错误
+    public static final int NET_ERROR_DESERIALIZE_ERROR = (0x80000000 | 1011);// 数据反序列化错误
+    public static final int NET_ERROR_LOWRATEWPAN_ID_EXISTED = (0x80000000 | 1012);// 该无线ID已存在
+    public static final int NET_ERROR_LOWRATEWPAN_ID_LIMIT = (0x80000000 | 1013);// 无线ID数量已超限
+    public static final int NET_ERROR_LOWRATEWPAN_ID_ABNORMAL = (0x80000000 | 1014);// 无线异常添加
+    public static final int NET_ERROR_ENCRYPT = (0x80000000 | 1015);// 加密数据失败
+    public static final int NET_ERROR_PWD_ILLEGAL = (0x80000000 | 1016);// 新密码不合规范
+    public static final int NET_ERROR_DEVICE_ALREADY_INIT = (0x80000000 | 1017);// 设备已经初始化
+    public static final int NET_ERROR_SECURITY_CODE = (0x80000000 | 1018);// 安全码错误
+    public static final int NET_ERROR_SECURITY_CODE_TIMEOUT = (0x80000000 | 1019);// 安全码超出有效期
+    public static final int NET_ERROR_GET_PWD_SPECI = (0x80000000 | 1020);// 获取密码规范失败
+    public static final int NET_ERROR_NO_AUTHORITY_OF_OPERATION = (0x80000000 | 1021);// 无权限进行该操作
+    public static final int NET_ERROR_DECRYPT = (0x80000000 | 1022);// 解密数据失败
+    public static final int NET_ERROR_2D_CODE = (0x80000000 | 1023);// 2D code校验失败
+    public static final int NET_ERROR_INVALID_REQUEST = (0x80000000 | 1024);// 非法的RPC请求
+    public static final int NET_ERROR_PWD_RESET_DISABLE = (0x80000000 | 1025);// 密码重置功能已关闭
+    public static final int NET_ERROR_PLAY_PRIVATE_DATA = (0x80000000 | 1026);// 显示私有数据,比如规则框等失败
+    public static final int NET_ERROR_ROBOT_OPERATE_FAILED = (0x80000000 | 1027);// 机器人操作失败
+    public static final int NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT = (0x80000000 | 1028);// 图片大小超限
+    public static final int NET_ERROR_USERID_INVALID = (0x80000000 | 1029);// 用户ID不存在
+    public static final int NET_ERROR_EXTRACTFEATURE_FAILED = (0x80000000 | 1030);// 照片特征值提取失败
+    public static final int NET_ERROR_PHOTO_EXIST = (0x80000000 | 1031);// 照片已存在
+    public static final int NET_ERROR_PHOTO_OVERFLOW = (0x80000000 | 1032);// 照片数量超过上限
+    public static final int NET_ERROR_CHANNEL_ALREADY_OPENED = (0x80000000 | 1033);// 通道已经打开
+    public static final int NET_ERROR_CREATE_SOCKET = (0x80000000 | 1034);// 创建套接字失败
+    public static final int NET_ERROR_CHANNEL_NUM = (0x80000000 | 1035);// 通道号错误
+    public static final int NET_ERROR_PHOTO_FORMAT = (0x80000000 | 1036);// 图片格式错误
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_INTERNAL_ERROR = (0x80000000 | 1037);      // 内部错误(比如:相关硬件问题,获取公钥失败,内部接口调用失败,写文件失败等等)
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_GET_ID_FAILED = (0x80000000 | 1038);      // 获取设备ID失败
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_IMPORT_ILLEGAL = (0x80000000 | 1039);      // 证书文件非法(格式不支持或者不是证书文件)
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_SN_ERROR = (0x80000000 | 1040);      // 证书sn重复或错误或不规范
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_COMMON_NAME_ILLEGAL = (0x80000000 | 1041);// 证书commonName非法(本地设备证书与系统中的不匹配devid_cryptoID,或者对端的不符合规则(devid_crytoID))
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_NO_ROOT_CERT = (0x80000000 | 1042);      // 根证书未导入或不存在
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_CERT_REVOKED = (0x80000000 | 1043);      // 证书被吊销
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_CERT_INVALID = (0x80000000 | 1044);      // 证书不可用或未生效或已过期
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_CERT_ERROR_SIGN = (0x80000000 | 1045);      // 证书签名不匹配
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_COUNTS_UPPER_LIMIT = (0x80000000 | 1046); // 超出证书导入上限
+    public static final int NET_ERROR_DIGITAL_CERTIFICATE_CERT_NO_EXIST = (0x80000000 | 1047);      // 证书文件不存在(导出证书或者获取对应证书的公钥)#define NET_ERROR_DEFULAT_SEARCH_PORT								_EC(1048)		  // 默认搜索端口无法使用(5050,37810)
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_STOUP = (0x80000000 | 1049);            // 批量添加人脸停止
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_ERROR = (0x80000000 | 1050);            // 批量添加人脸失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED = (0x80000000 | 1051);            // 组ID超过最大值
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_NOT_IN_REGISTER_GROUP = (0x80000000 | 1052);            // 组ID不存在或为空
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_NOT_FOUND = (0x80000000 | 1053);            // 无图片数据
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GENERATE_GROUP_ID_FAILED = (0x80000000 | 1054);            // 生成组ID超出范围
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_SET_CONFIG_FAILED = (0x80000000 | 1055);            // 设置配置失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FILE_OPEN_FAILED = (0x80000000 | 1056);            // 图片文件打开失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FILE_READ_FAILED = (0x80000000 | 1057);            // 图片文件读取失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FILE_WRITE_FAILED = (0x80000000 | 1058);            // 图片文件写入失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_DPI_ERROR = (0x80000000 | 1059);            // 图片分辨率异常
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_PX_ERROR = (0x80000000 | 1060);            // 图片像素异常
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_SIZE_ERROR = (0x80000000 | 1061);            // 图片大小不对
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_DATA_BASE_ERROR = (0x80000000 | 1062);            // 数据库操作失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FACE_MAX_NUM = (0x80000000 | 1063);            // 人员数量超过限制
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_BIRTH_DAY_FORMAT_ERROR = (0x80000000 | 1064);            // 生日日期格式错误
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_UID_ERROR = (0x80000000 | 1065);            // 人员UID不存在或为空
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_TOKEN_ERROR = (0x80000000 | 1066);            // 令牌不存在或为空
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_BEGIN_NUM_OVER_RUN = (0x80000000 | 1067);            // 查询起始数大于总数
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_NUM_ZERO = (0x80000000 | 1068);            // 需手动建模人数为0
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_INIT_ERROR = (0x80000000 | 1069);            // 建模分析器启动失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_AUTO_ABSTRACT_STATE = (0x80000000 | 1070);            // 设备正在自动建模
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_STATE = (0x80000000 | 1071);            // 设备正在手动建模
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_IM_EX_STATE = (0x80000000 | 1072);            // 设备正在导入导出
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_PIC_WRITE_FAILED = (0x80000000 | 1073);            // 图片写入失败
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_SPACE_EXCEED = (0x80000000 | 1074);            // 超出人脸库空间大小限制
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_PIC_COUNT_EXCEED = (0x80000000 | 1075);            // 超出人脸库图片数量限制
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_NOT_FOUND = (0x80000000 | 1076);            // 人脸库不存在
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_FIND_RECORDS_ERROR = (0x80000000 | 1077);            // 查询原人脸库数据结果无效
+    public static final int NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_PERSON_ERROR = (0x80000000 | 1078);            // 删除原人脸库数据失败
+    public static final int NET_ERROR_DEVICE_PARSE_PROTOCOL = (0x80000000 | 1079);          // 设备解析协议错误
+    public static final int NET_ERROR_DEVICE_INVALID_REQUEST = (0x80000000 | 1080);          // 设备返回无效请求
+    public static final int NET_ERROR_DEVICE_INTERNAL_ERROR = (0x80000000 | 1081);          // 设备内部错误
+    public static final int NET_ERROR_DEVICE_REQUEST_TIMEOUT = (0x80000000 | 1082);          // 设备内部请求超时
+    public static final int NET_ERROR_DEVICE_KEEPALIVE_FAIL = (0x80000000 | 1083);          // 设备保活失败
+    public static final int NET_ERROR_DEVICE_NETWORK_ERROR = (0x80000000 | 1084);          // 设备网络错误
+    public static final int NET_ERROR_DEVICE_UNKNOWN_ERROR = (0x80000000 | 1085);          // 设备内部未知错误
+    public static final int NET_ERROR_DEVICE_COM_INTERFACE_NOTFOUND = (0x80000000 | 1086);          // 设备组件接口没有找到
+    public static final int NET_ERROR_DEVICE_COM_IMPLEMENT_NOTFOUND = (0x80000000 | 1087);          // 设备组件实现没有找到
+    public static final int NET_ERROR_DEVICE_COM_NOTFOUND = (0x80000000 | 1088);          // 设备接入组件没有找到
+    public static final int NET_ERROR_DEVICE_COM_INSTANCE_NOTEXIST = (0x80000000 | 1089);          // 设备接入组件实例不存在
+    public static final int NET_ERROR_DEVICE_CREATE_COM_FAIL = (0x80000000 | 1090);          // 设备组件工厂创建组件失败
+    public static final int NET_ERROR_DEVICE_GET_COM_FAIL = (0x80000000 | 1091);          // 设备组件工厂获取组件实例失败
+    public static final int NET_ERROR_DEVICE_BAD_REQUEST = (0x80000000 | 1092);          // 设备业务请求不被接受
+    public static final int NET_ERROR_DEVICE_REQUEST_IN_PROGRESS = (0x80000000 | 1093);          // 设备已经在处理请求,不接受重复请求
+    public static final int NET_ERROR_DEVICE_LIMITED_RESOURCE = (0x80000000 | 1094);          // 设备资源不足
+    public static final int NET_ERROR_DEVICE_BUSINESS_TIMEOUT = (0x80000000 | 1095);          // 设备业务超时
+    public static final int NET_ERROR_DEVICE_TOO_MANY_REQUESTS = (0x80000000 | 1096);          // 设备接收过多请求
+    public static final int NET_ERROR_DEVICE_NOT_ALREADY = (0x80000000 | 1097);          // 设备未准备就绪,不接受业务请求
+    public static final int NET_ERROR_DEVICE_SEARCHRECORD_TIMEOUT = (0x80000000 | 1098);          // 设备录像查询超时
+    public static final int NET_ERROR_DEVICE_SEARCHTIME_INVALID = (0x80000000 | 1099);          // 设备录像查询时间无效
+    public static final int NET_ERROR_DEVICE_SSID_INVALID = (0x80000000 | 1100);          // 设备校验SSID无效
+    public static final int NET_ERROR_DEVICE_CHANNEL_STREAMTYPE_ERROR = (0x80000000 | 1101);    // 设备校验通道号或码流类型无效
+    public static final int NET_ERROR_DEVICE_STREAM_PACKINGFORMAT_UNSUPPORT = (0x80000000 | 1102);    // 设备不支持该码流打包格式
+    public static final int NET_ERROR_DEVICE_AUDIO_ENCODINGFORMAT_UNSUPPORT = (0x80000000 | 1103);    // 设备不支持该语音编码格式
+    public static final int NET_ERROR_SECURITY_ERROR_SUPPORT_GUI = (0x80000000 | 1104);    // 校验请求安全码失败,可使用本地GUI方式重置密码
+    public static final int NET_ERROR_SECURITY_ERROR_SUPPORT_MULT = (0x80000000 | 1105);    // 校验请求安全码失败,可使用DH渠道APP、configtool工具重置密码
+    public static final int NET_ERROR_SECURITY_ERROR_SUPPORT_UNIQUE = (0x80000000 | 1106);    // 校验请求安全码失败,可登陆Web页面重置密码
+    public static final int NET_ERROR_STREAMCONVERTOR_DEFECT = (0x80000000 | 1107);    // 转码库缺失
+
+
+    public static final int NET_ERROR_SECURITY_GENERATE_SAFE_CODE = (0x80000000 | 1108);    // 调用DH加密库产生安全码失败
+    public static final int NET_ERROR_SECURITY_GET_CONTACT = (0x80000000 | 1109);    // 获取联系方式失败
+    public static final int NET_ERROR_SECURITY_GET_QRCODE = (0x80000000 | 1110);    // 获取重置密码的二维码信息失败
+    public static final int NET_ERROR_SECURITY_CANNOT_RESET = (0x80000000 | 1111);    // 设备未初始化,无法重置
+    public static final int NET_ERROR_SECURITY_NOT_SUPPORT_CONTACT_MODE = (0x80000000 | 1112);    // 不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱
+    public static final int NET_ERROR_SECURITY_RESPONSE_TIMEOUT = (0x80000000 | 1113);    // 对端响应超时
+    public static final int NET_ERROR_SECURITY_AUTHCODE_FORBIDDEN = (0x80000000 | 1114);    // 尝试校验AuthCode次数过多,禁止校验
+    public static final int NET_ERROR_TRANCODE_LOGIN_REMOTE_DEV = (0x80000000 | 1115);        // (虚拟转码)登陆远程设备失败
+    public static final int NET_ERROR_TRANCODE_NOFREE_CHANNEL = (0x80000000 | 1116);        // (虚拟转码)没有可用的通道资源
+    public static final int NET_ERROR_VK_INFO_DECRYPT_FAILED = (0x80000000 | 1117);        // VK信息解密失败
+    public static final int NET_ERROR_VK_INFO_DESERIALIZE_FAILED = (0x80000000 | 1118);        // VK信息解析失败
+    public static final int NET_ERROR_GDPR_ABILITY_NOT_ENABLE = (0x80000000 | 1119);        // SDK GDPR功能未使能
+
+    /*门禁快速导入及复核错误码 start*/
+    public static final int NET_ERROR_FAST_CHECK_NO_AUTH = (0x80000000 | 1120);    // 门禁快速复核:无权限
+    public static final int NET_ERROR_FAST_CHECK_NO_FILE = (0x80000000 | 1121);    // 门禁快速复核:文件不存在
+    public static final int NET_ERROR_FAST_CHECK_FILE_FAIL = (0x80000000 | 1122);    // 门禁快速复核:文件准备失败
+    public static final int NET_ERROR_FAST_CHECK_BUSY = (0x80000000 | 1123);    // 门禁快速复核:系统忙
+    public static final int NET_ERROR_FAST_CHECK_NO_PASSWORD = (0x80000000 | 1124);    // 门禁快速复核:未定义密码, 不允许导出
+    public static final int NET_ERROR_IMPORT_ACCESS_SEND_FAILD = (0x80000000 | 1125);    // 门禁快速导入:发送门禁数据失败
+    public static final int NET_ERROR_IMPORT_ACCESS_BUSY = (0x80000000 | 1126);    // 门禁快速导入:系统忙, 已经有导入任务
+    public static final int NET_ERROR_IMPORT_ACCESS_DATAERROR = (0x80000000 | 1127);    // 门禁快速导入:数据包检验失败
+    public static final int NET_ERROR_IMPORT_ACCESS_DATAINVALID = (0x80000000 | 1128);    // 门禁快速导入:数据包非法
+    public static final int NET_ERROR_IMPORT_ACCESS_SYNC_FALID = (0x80000000 | 1129);    // 门禁快速导入:同步失败,数据库无法生成
+    public static final int NET_ERROR_IMPORT_ACCESS_DBFULL = (0x80000000 | 1130);    // 门禁快速导入:数据库已满, 无法导入
+    public static final int NET_ERROR_IMPORT_ACCESS_SDFULL = (0x80000000 | 1131);    // 门禁快速导入:存储空间已满, 无法导入
+    public static final int NET_ERROR_IMPORT_ACCESS_CIPHER_ERROR = (0x80000000 | 1132);    // 门禁快速导入:导入压缩包密码不对
+    /*门禁快速导入及复核错误码 end*/
+
+    public static final int NET_ERROR_INVALID_PARAM = (0x80000000 | 1133);    // 参数无效
+    public static final int NET_ERROR_INVALID_PASSWORD = (0x80000000 | 1134);    // 密码无效
+    public static final int NET_ERROR_INVALID_FINGERPRINT = (0x80000000 | 1135);    // 信息无效
+    public static final int NET_ERROR_INVALID_FACE = (0x80000000 | 1136);    // 人脸无效
+    public static final int NET_ERROR_INVALID_CARD = (0x80000000 | 1137);    // 卡无效
+    public static final int NET_ERROR_INVALID_USER = (0x80000000 | 1138);    // 用户无效
+    public static final int NET_ERROR_GET_SUBSERVICE = (0x80000000 | 1139);    // 能力集子服务获取失败
+    public static final int NET_ERROR_GET_METHOD = (0x80000000 | 1140);   // 获取组件的方法集失败
+    public static final int NET_ERROR_GET_SUBCAPS = (0x80000000 | 1141);    // 获取资源实体能力集失败
+    public static final int NET_ERROR_UPTO_INSERT_LIMIT = (0x80000000 | 1142);   // 已达插入上限
+    public static final int NET_ERROR_UPTO_MAX_INSERT_RATE = (0x80000000 | 1143);   // 已达最大插入速度
+    public static final int NET_ERROR_ERASE_FINGERPRINT = (0x80000000 | 1144);   // 清除信息数据失败
+    public static final int NET_ERROR_ERASE_FACE = (0x80000000 | 1145);   // 清除人脸数据失败
+    public static final int NET_ERROR_ERASE_CARD = (0x80000000 | 1146);   // 清除卡数据失败
+    public static final int NET_ERROR_NO_RECORD = (0x80000000 | 1147);   // 没有记录
+    public static final int NET_ERROR_NOMORE_RECORDS = (0x80000000 | 1148);   // 查找到最后,没有更多记录
+    public static final int NET_ERROR_RECORD_ALREADY_EXISTS = (0x80000000 | 1149);   // 下发卡或信息时,数据重复
+    public static final int NET_ERROR_EXCEED_MAX_FINGERPRINT_PERUSER = (0x80000000 | 1150);   // 超过个人最大信息记录数
+    public static final int NET_ERROR_EXCEED_MAX_CARD_PERUSER = (0x80000000 | 1151);   // 超过个人最大卡片记录数
+    public static final int NET_ERROR_EXCEED_ADMINISTRATOR_LIMIT = (0x80000000 | 1152);   // 超过门禁管理员个数限制
+
+    public static final int NET_LOGIN_ERROR_DEVICE_NOT_SUPPORT_HIGHLEVEL_SECURITY_LOGIN = (0x80000000 | 1153);   // 设备不支持高安全等级登录
+    public static final int NET_LOGIN_ERROR_DEVICE_ONLY_SUPPORT_HIGHLEVEL_SECURITY_LOGIN = (0x80000000 | 1154);   // 设备只支持高安全等级登录
+
+    public static final int NET_ERROR_VIDEO_CHANNEL_OFFLINE = (0x80000000 | 1155);   // 表示此视频通道处于离线,拉流失败
+    public static final int NET_ERROR_USERID_FORMAT_INCORRECT = (0x80000000 | 1156);    // 用户编号不规范
+    public static final int NET_ERROR_CANNOT_FIND_CHANNEL_RELATE_TO_SN = (0x80000000 | 1157);    // 找不到该SN对应的通道
+    public static final int NET_ERROR_TASK_QUEUE_OF_CHANNEL_IS_FULL = (0x80000000 | 1158);    // 该通道的任务队列满
+    public static final int NET_ERROR_APPLY_USER_INFO_BLOCK_FAIL = (0x80000000 | 1159);    // 申请不到新的用户信息(权限)块
+    public static final int NET_ERROR_EXCEED_MAX_PASSWD_PERUSER = (0x80000000 | 1160);    // 用户密码数量超过限制
+    public static final int NET_ERROR_PARSE_PROTOCOL = (0x80000000 | 1161);    // 设备内部异常引起协议解析错误
+    public static final int NET_ERROR_CARD_NUM_EXIST = (0x80000000 | 1162);    // 卡号已存在
+    public static final int NET_ERROR_FINGERPRINT_EXIST = (0x80000000 | 1163);    // 信息已存在
+
+    public static final int NET_ERROR_OPEN_PLAYGROUP_FAIL = (0x80000000 | 1164);    // 打开播放组失败
+    public static final int NET_ERROR_ALREADY_IN_PLAYGROUP = (0x80000000 | 1165);    // 已位于播放组中
+    public static final int NET_ERROR_QUERY_PLAYGROUP_TIME_FAIL = (0x80000000 | 1166);    // 查询播放组时间失败
+    public static final int NET_ERROR_SET_PLAYGROUP_BASECHANNEL_FAIL = (0x80000000 | 1167);    // 设置播放组基准通道失败
+    public static final int NET_ERROR_SET_PLAYGROUP_DIRECTION_FAIL = (0x80000000 | 1168);    // 设置播放组方向失败
+    public static final int NET_ERROR_SET_PLAYGROUP_SPEED_FAIL = (0x80000000 | 1169);    // 设置播放组速度失败
+    public static final int NET_ERROR_ADD_PLAYGROUP_FAIL = (0x80000000 | 1170);    // 加入播放组失败
+
+    public static final int NET_ERROR_EXPORT_AOL_LOGFILE_NO_AUTH = (0x80000000 | 1171);    // 导出AOL日志:无权限
+    public static final int NET_ERROR_EXPORT_AOL_LOGFILE_NO_FILE = (0x80000000 | 1172);    // 导出AOL日志:文件不存在
+    public static final int NET_ERROR_EXPORT_AOL_LOGFILE_FILE_FAIL = (0x80000000 | 1173);    // 导出AOL日志:文件准备失败
+    public static final int NET_ERROR_EXPORT_AOL_LOGFILE_BUSY = (0x80000000 | 1174);    // 导出AOL日志:系统忙
+
+    // 设备上APP安装相关错误码
+    public static final int NET_ERROR_EMPTY_LICENSE = (0x80000000 | 1175);   // License为空
+    public static final int NET_ERROR_UNSUPPORTED_MODE = (0x80000000 | 1176);   // 不支持该模式
+    public static final int NET_ERROR_URL_APP_NOT_MATCH = (0x80000000 | 1177);   // URL与APP不匹配
+    public static final int NET_ERROR_READ_INFO_FAILED = (0x80000000 | 1178);   // 读取信息失败
+    public static final int NET_ERROR_WRITE_FAILED = (0x80000000 | 1179);   // 写入失败
+    public static final int NET_ERROR_NO_SUCH_APP = (0x80000000 | 1180);   // 未找到APP
+    public static final int NET_ERROR_VERIFIF_FAILED = (0x80000000 | 1181);   // 校验失败
+    public static final int NET_ERROR_LICENSE_OUT_DATE = (0x80000000 | 1182);   // License已过期
+
+    public static final int NET_ERROR_UPGRADE_PROGRAM_TOO_OLD = (0x80000000 | 1183);    // 升级程序版本过低
+    public static final int NET_ERROR_SECURE_TRANSMIT_BEEN_CUT = (0x80000000 | 1184);    // 加密传输被裁剪
+    public static final int NET_ERROR_DEVICE_NOT_SUPPORT_SECURE_TRANSMIT = (0x80000000 | 1185);    // 设备不支持安全传输
+
+    public static final int NET_ERROR_EXTRA_STREAM_LOGIN_FAIL_CAUSE_BY_MAIN_STREAM = (0x80000000 | 1186);    // 主码流成功的情况下,辅码流登录失败
+    public static final int NET_ERROR_EXTRA_STREAM_CLOSED_BY_REMOTE_DEVICE = (0x80000000 | 1187);    // 辅码流被前端关闭
+
+    /*人脸库导入导出错误码 start*/
+    public static final int NET_ERROR_IMPORT_FACEDB_SEND_FAILD = (0x80000000 | 1188);    // 人脸库导入:发送人脸库数据失败
+    public static final int NET_ERROR_IMPORT_FACEDB_BUSY = (0x80000000 | 1189);    // 人脸库导入:系统忙, 已经有导入任务
+    public static final int NET_ERROR_IMPORT_FACEDB_DATAERROR = (0x80000000 | 1190);    // 人脸库导入:数据包检验失败
+    public static final int NET_ERROR_IMPORT_FACEDB_DATAINVALID = (0x80000000 | 1191);    // 人脸库导入:数据包非法
+    public static final int NET_ERROR_IMPORT_FACEDB_UPGRADE_FAILD = (0x80000000 | 1192);   // 人脸库导入:上传失败
+    public static final int NET_ERROR_IMPORT_FACEDB_NO_AUTHORITY = (0x80000000 | 1193);   // 人脸库导入:用户无权限
+    public static final int NET_ERROR_IMPORT_FACEDB_ABNORMAL_FILE = (0x80000000 | 1194);   // 人脸库导入:文件格式异常
+    public static final int NET_ERROR_IMPORT_FACEDB_SYNC_FALID = (0x80000000 | 1195);    // 人脸库导入:同步失败,数据库无法生成
+    public static final int NET_ERROR_IMPORT_FACEDB_DBFULL = (0x80000000 | 1196);    // 人脸库导入:数据库已满, 无法导入
+    public static final int NET_ERROR_IMPORT_FACEDB_SDFULL = (0x80000000 | 1197);    // 人脸库导入:存储空间已满, 无法导入
+    public static final int NET_ERROR_IMPORT_FACEDB_CIPHER_ERROR = (0x80000000 | 1198);    // 人脸库导入:导入压缩包密码不对
+
+    public static final int NET_ERROR_EXPORT_FACEDB_NO_AUTH = (0x80000000 | 1199);    // 人脸库导出:无权限
+    public static final int NET_ERROR_EXPORT_FACEDB_NO_FILE = (0x80000000 | 1200);    // 人脸库导出:文件不存在
+    public static final int NET_ERROR_EXPORT_FACEDB_FILE_FAIL = (0x80000000 | 1201);    // 人脸库导出:文件准备失败
+    public static final int NET_ERROR_EXPORT_FACEDB_BUSY = (0x80000000 | 1202);    // 人脸库导出:系统忙
+    public static final int NET_ERROR_EXPORT_FACEDB_NO_PASSWORD = (0x80000000 | 1203);    // 人脸库导出:未定义密码, 不允许导出
+    /*人脸库导入导出错误码 end*/
+
+    /* 人脸图片操作错误码 范围 _EC(1300) ~ _EC(1400) */
+    public static final int NET_ERROR_FACEMANAGER_NO_FACE_DETECTED = (0x80000000 | 1300);  // 图片中检测到0个人脸目标
+    public static final int NET_ERROR_FACEMANAGER_MULTI_FACE_DETECTED = (0x80000000 | 1301);  // 图片中检测到多个人脸,无法返回特征
+    public static final int NET_ERROR_FACEMANAGER_PICTURE_DECODING_ERROR = (0x80000000 | 1302);  // 图片解码错误
+    public static final int NET_ERROR_FACEMANAGER_LOW_PICTURE_QUALITY = (0x80000000 | 1303);  // 图片质量太低
+    public static final int NET_ERROR_FACEMANAGER_NOT_RECOMMENDED = (0x80000000 | 1304);  // 结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别
+    public static final int NET_ERROR_FACEMANAGER_FACE_FEATURE_ALREADY_EXIST = (0x80000000 | 1305); // 人脸特征已存在
+    public static final int NET_ERROR_FACEMANAGER_FACE_ANGLE_OVER_THRESHOLDS = (0x80000000 | 1307); // 人脸角度超过配置阈值
+    public static final int NET_ERROR_FACEMANAGER_FACE_RADIO_EXCEEDS_RANGE = (0x80000000 | 1308); // 人脸占比超出范围,算法建议占比:不要超过2/3;不要小于1/3
+    public static final int NET_ERROR_FACEMANAGER_FACE_OVER_EXPOSED = (0x80000000 | 1309);  // 人脸过爆
+    public static final int NET_ERROR_FACEMANAGER_FACE_UNDER_EXPOSED = (0x80000000 | 1310);  // 人脸欠爆
+    public static final int NET_ERROR_FACEMANAGER_BRIGHTNESS_IMBALANCE = (0x80000000 | 1311);  // 人脸亮度不均衡 ,用于判断阴阳脸
+    public static final int NET_ERROR_FACEMANAGER_FACE_LOWER_CONFIDENCE = (0x80000000 | 1312);  // 人脸的置信度低
+    public static final int NET_ERROR_FACEMANAGER_FACE_LOW_ALIGN = (0x80000000 | 1313);  // 人脸对齐分数低
+    public static final int NET_ERROR_FACEMANAGER_FRAGMENTARY_FACE_DETECTED = (0x80000000 | 1314);  // 人脸存在遮挡、残缺不全
+    public static final int NET_ERROR_FACEMANAGER_PUPIL_DISTANCE_NOT_ENOUGH = (0x80000000 | 1315);  // 人脸瞳距小于阈值
+    public static final int NET_ERROR_FACEMANAGER_FACE_DATA_DOWNLOAD_FAILED = (0x80000000 | 1316);  // 人脸数据下载失败
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LibraryLoad.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LibraryLoad.java
new file mode 100644
index 0000000..24f9623
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/LibraryLoad.java
@@ -0,0 +1,187 @@
+package com.netsdk.lib;
+
+import com.netsdk.lib.DynamicParseUtil;
+
+import java.io.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 动态库加载
+ * @date 2020/11/14
+ */
+public class LibraryLoad {
+  private static final String ARCH_WINDOWS = "win";
+  private static final String ARCH_LINUX = "linux";
+  private static final String ARCH_MAC = "mac";
+  private static final int PREFIX_64 = 64;
+  private static final int PREFIX_32 = 32;
+  private static final String PREFIX_ARM = "ARM";
+  private static final String EXTERNAL_WIN = ".dll";
+  private static final String EXTERNAL_LINUX = ".so";
+  private static final String EXTERNAL_MAC = ".dylib";
+  private static DynamicParseUtil dynamicParseUtil;
+  /** 当前读取的目录 */
+  private static String currentFold;
+  /** 动态库需要写入的目录 */
+  private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
+
+  private static boolean written = false;
+
+  /**
+   * 设置动态库写入的路径,适用于需要自定义加载路径的用户
+   *
+   * @param path 动态库写入的文件夹,从该文件夹下加载sdk的动态库
+   */
+  public static void setExtractPath(String path) {
+    EXTRACT_PATH = path;
+  }
+  
+  public static String  getExtractPath() {
+	return EXTRACT_PATH;
+	   
+	  }
+  /** 动态库路径 */
+  private static String INNER_PATH;
+
+  // private static final String EXTERNAL_MAC = ".so";
+
+  private static String extractNetSDKLib(String libName) {
+    return extractLibrary(libName);
+  }
+
+  public static String getLoadLibrary(String libraryName) {
+    currentFold = getLibraryFold();
+    if (dynamicParseUtil == null) {
+      try {
+        dynamicParseUtil =
+            new DynamicParseUtil(
+                LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
+        if (!written) {
+          for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
+            extractLibrary(libName);
+          }
+          written = true;
+        }
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+    String fullName = getLibraryName(libraryName);
+    String path = EXTRACT_PATH;
+    if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
+      path = EXTRACT_PATH + "/";
+    }
+    System.out.println("load library: " + path + fullName);
+    return path + fullName;
+  }
+
+  /**
+   * 将jar包里的动态库写入到系统缓存目录,使用绝对路径加载动态库
+   *
+   * @param libName
+   * @return
+   */
+  private static String extractLibrary(String libName) {
+    return extractLibrary("", libName);
+  }
+
+  /**
+   * 相对路径文件夹
+   *
+   * @param relativePath 相对路径
+   * @param libName 动态库路径
+   * @return
+   */
+  private static String extractLibrary(String relativePath, String libName) {
+    if (libName.trim().equals("")) {
+      return "";
+    }
+    String libFullName = getLibraryName(libName);
+    String dir = getLibraryFold();
+    if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
+      relativePath = relativePath + "/";
+    }
+    String fileName = relativePath + dir + "/" + libFullName;
+    InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
+    BufferedInputStream reader;
+    FileOutputStream writer;
+    File extractedLibFile = null;
+    try {
+      if (in == null) {
+        in = new FileInputStream(fileName);
+      }
+      String nativeTempDir = EXTRACT_PATH;
+      if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
+        nativeTempDir = nativeTempDir + "/";
+      }
+      extractedLibFile = new File(nativeTempDir + libFullName);
+      reader = new BufferedInputStream(in);
+      writer = new FileOutputStream(extractedLibFile);
+      byte[] buffer = new byte[1024];
+      while (true) {
+        int len = reader.read(buffer);
+        if (len == 0 || len == -1) break;
+        writer.write(buffer, 0, len);
+      }
+      reader.close();
+      writer.close();
+      in.close();
+    } catch (Exception e) {
+      //System.out.println("dynamic file[ "+ fileName+ " ] not found in project.please ensure you need this library.");
+    }
+    return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
+  }
+
+  /**
+   * 获取动态库完整名称
+   *
+   * @param libName
+   * @return
+   */
+  private static String getLibraryName(String libName) {
+    String dir = currentFold;
+    String libPrefix = "";
+    String libExtension = EXTERNAL_WIN;
+
+    if (!dir.contains("win")) {
+      libPrefix = "lib";
+      if (dir.contains("linux")) {
+        libExtension = EXTERNAL_LINUX;
+      } else {
+        // libExtension=".dylib";
+        libExtension = EXTERNAL_MAC;
+      }
+    }
+    libName = dynamicParseUtil.compareLibName(currentFold, libName);
+    // 动态库以lib开头,则不添加lib前缀
+    // 以lib开头的库则不添加lib前缀
+    return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
+  }
+
+  // 获取系统对应的动态库文件夹
+  private static String getLibraryFold() {
+    String osType;
+    String osName = System.getProperty("os.name");
+    if (osName.toLowerCase().startsWith("linux")) {
+      osType = ARCH_LINUX;
+    } else if (osName.toLowerCase().startsWith("mac")
+        || osName.toLowerCase().startsWith("darwin")) {
+      osType = ARCH_MAC;
+    } else if (osName.toLowerCase().startsWith("windows")) {
+      osType = ARCH_WINDOWS;
+    } else {
+      osType = "";
+    }
+    String arch = System.getProperty("os.arch");
+    arch = arch.toLowerCase().trim();
+    if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
+      arch = PREFIX_32 + "";
+    } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
+      arch = PREFIX_64 + "";
+    } else if (arch.startsWith("arm")) {
+      arch = PREFIX_ARM + "";
+    }
+    return osType + arch;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NativeString.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NativeString.java
new file mode 100644
index 0000000..541daeb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NativeString.java
@@ -0,0 +1,124 @@
+package com.netsdk.lib;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.CharBuffer;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+
+
+/** Provides a temporary allocation of an immutable C string 
+ * (<code>const char*</code> or <code>const wchar_t*</code>) for use when 
+ * converting a Java String into a native memory function argument.  
+ *
+ * @author  Todd Fast, todd.fast@sun.com
+ * @author twall@users.sf.net
+ */
+public class NativeString implements CharSequence, Comparable<Object> {
+
+    private Pointer pointer;
+    private boolean wide;
+
+    /** Create a native string (NUL-terminated array of <code>char</code>).<p>
+     * If the system property <code>jna.encoding</code> is set, its value will
+     * be used to encode the native string.  If not set or if the encoding
+     * is unavailable, the default platform encoding will be used. 
+     */
+    public NativeString(String string) {
+        this(string, false);
+    }
+
+    /** Create a native string as a NUL-terminated array of <code>wchar_t</code>
+     * (if <code>wide</code> is true) or <code>char</code>.<p>
+     * If the system property <code>jna.encoding</code> is set, its value will
+     * be used to encode the native <code>char</code>string.  
+     * If not set or if the encoding is unavailable, the default platform 
+     * encoding will be used. 
+     * 
+     * @param string value to write to native memory
+     * @param wide whether to store the String as <code>wchar_t</code>
+     */
+    public NativeString(String string, boolean wide) {
+        if (string == null) {
+            throw new NullPointerException("String must not be null");
+        }
+        // Allocate the memory to hold the string.  Note, we have to
+        // make this 1 element longer in order to accommodate the terminating 
+        // NUL (which is generated in Pointer.setString()).
+        this.wide = wide;
+        if (wide) {
+            int len = (string.length() + 1 ) * Native.WCHAR_SIZE;
+            pointer = new Memory(len);
+            pointer.setString(0, string);
+        }
+        else {
+            byte[] data = getBytes(string);
+            pointer = new Memory(data.length + 1);
+            pointer.write(0, data, 0, data.length);
+            pointer.setByte(data.length, (byte)0);
+        }
+    }
+    
+    static byte[] getBytes(String s) {
+        try {
+            return getBytes(s, System.getProperty("jna.encoding"));
+        }
+        catch (UnsupportedEncodingException e) {
+            return s.getBytes();
+        }
+    }
+
+    /** Return a byte array corresponding to the given String, using the given
+        encoding.
+    */
+    static byte[] getBytes(String s, String encoding) throws UnsupportedEncodingException {
+        if (encoding != null) {
+            return s.getBytes(encoding);
+        }
+        return s.getBytes();
+    }
+
+    public int hashCode() {
+        return toString().hashCode();
+    }
+
+    public boolean equals(Object other) {
+
+        if (other instanceof CharSequence) {
+            return compareTo(other) == 0;
+        }
+        return false;
+    }
+
+    public String toString() {
+        String s = wide ? "const wchar_t*" : "const char*";
+        s += "(" + pointer.getString(0) + ")";
+        return s;
+    }
+
+    public Pointer getPointer() {
+        return pointer;
+    }
+
+    public char charAt(int index) {
+        return toString().charAt(index);
+    }
+
+    public int length() {
+        return toString().length();
+    }
+
+    public CharSequence subSequence(int start, int end) {
+        return CharBuffer.wrap(toString()).subSequence(start, end);
+    }
+
+    public int compareTo(Object other) {
+
+        if (other == null)
+            return 1;
+
+        return toString().compareTo(other.toString());
+    }
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NetSDKLib.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NetSDKLib.java
new file mode 100644
index 0000000..a6114a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/NetSDKLib.java
@@ -0,0 +1,38558 @@
+package com.netsdk.lib;
+import com.netsdk.lib.NetSDKLib.LLong;
+import com.netsdk.lib.enumeration.*;
+import com.netsdk.lib.structure.*;
+import com.sun.jna.*;
+import com.sun.jna.ptr.IntByReference;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * NetSDK JNA接口封装
+ */
+public interface NetSDKLib extends Library {
+
+    NetSDKLib NETSDK_INSTANCE = Native.load(LibraryLoad.getLoadLibrary("dhnetsdk"), NetSDKLib.class);
+
+    NetSDKLib CONFIG_INSTANCE = Native.load(LibraryLoad.getLoadLibrary("dhconfigsdk"), NetSDKLib.class);
+
+    //NetSDKLib CONFIG_JNI = (NetSDKLib)Native.loadLibrary(util.getLoadLibrary("JNI1.dll"), INetSDK.class);
+    class LLong extends IntegerType {
+        private static final long serialVersionUID = 1L;
+
+        /** Size of a native long, in bytes. */
+        public static int size;
+        static {
+            size = Native.LONG_SIZE;
+            if (Utils.getOsPrefix().equalsIgnoreCase("linux-amd64")
+                    || Utils.getOsPrefix().equalsIgnoreCase("win32-amd64")
+                    || Utils.getOsPrefix().equalsIgnoreCase("mac-64")) {
+                size = 8;
+            } else if (Utils.getOsPrefix().equalsIgnoreCase("linux-i386")
+                    || Utils.getOsPrefix().equalsIgnoreCase("win32-x86")) {
+                size = 4;
+            }
+        }
+
+        /** Create a zero-valued LLong. */
+        public LLong() {
+            this(0);
+        }
+
+        /** Create a LLong with the given value. */
+        public LLong(long value) {
+            super(size, value);
+        }
+    }
+    public static class SdkStructure extends Structure {
+        @Override
+        protected  List<String> getFieldOrder(){
+            List<String> fieldOrderList = new ArrayList<String>();
+            for (Class<?> cls = getClass();
+                 !cls.equals(SdkStructure.class);
+                 cls = cls.getSuperclass()) {
+                Field[] fields = cls.getDeclaredFields();
+                int modifiers;
+                for (Field field : fields) {
+                    modifiers = field.getModifiers();
+                    if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
+                        continue;
+                    }
+                    fieldOrderList.add(field.getName());
+                }
+            }
+            //            System.out.println(fieldOrderList);
+
+            return fieldOrderList;
+        }
+
+        @Override
+        public int fieldOffset(String name){
+            return super.fieldOffset(name);
+        }
+    }
+
+    /************************************************************************
+     ** 常量定义
+     ***********************************************************************/
+    public static final int POINTERSIZE                           = new PointerSize().size();   // JNA指针长度
+    public static final int MAX_INSIDEOBJECT_NUM                  = 32;             // 最大包裹内物品个数
+    public static final int NET_SERIALNO_LEN                      = 48;             // 设备序列号字符长度
+    public static final int NET_CFG_Max_VideoColor                = 24;             // 每个通道最大视频输入颜色配置数量
+    public static final int NET_CFG_Custom_Title_Len              = 1024;           // 自定义标题名称长度(扩充到1024)
+    public static final int NET_CFG_Custom_TitleType_Len          = 32;             // 自定义标题类型长度
+    public static final int NET_CFG_Max_Video_Widget_Cover        = 16;             // 编码区域覆盖最大数量
+    public static final int NET_CFG_Max_Video_Widget_Custom_Title = 8;              // 编码物件自定义标题最大数量
+    public static final int NET_CFG_Max_Video_Widget_Sensor_Info  = 2;              // 编码物件叠加传感器信息的最大数目
+    public static final int NET_CFG_Max_Description_Num           = 4;              // 叠加区域描述信息的最大个数
+    public static final int NET_GATEWAY_MAX_SIM_NUM			      =8;				   // 网关SIM卡最大个数
+    // 错误类型代号,对应CLIENT_GetLastError接口的返回值, 十进制
+
+    // CLIENT_StartListenEx报警事件
+    public static final int NET_ALARM_ALARM_EX 					= 0x2101;     		// 外部报警,数据字节数与设备报警通道个数相同,每个字节表示一个报警通道的报警状态,1为有报警,0为无报警。
+    public static final int NET_MOTION_ALARM_EX                	= 0x2102;          	// 动态检测报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的动态检测报警状态,1为有报警,0为无报警。
+    public static final int NET_VIDEOLOST_ALARM_EX 				= 0x2103; 			// 视频丢失报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的视频丢失报警状态,1为有报警,0为无报警。
+    public static final int NET_SHELTER_ALARM_EX 				= 0x2104;   		// 视频遮挡报警,数据字节数与设备视频通道个数相同,每个字节表示一个视频通道的遮挡(黑屏)报警状态,1为有报警,0为无报警。
+    public static final int NET_DISKFULL_ALARM_EX 				= 0x2106;  			// 硬盘满报警,数据为1个字节,1为有硬盘满报警,0为无报警。
+    public static final int NET_DISKERROR_ALARM_EX 				= 0x2107; 			// 坏硬盘报警,数据为32个字节,每个字节表示一个硬盘的故障报警状态,1为有报警,0为无报警。
+    public static final int NET_TRAF_CONGESTION_ALARM_EX        = 0x211A;           // 交通阻塞报警(车辆出现异常停止或者排队)(对应结构体 ALARM_TRAF_CONGESTION_INFO)
+    public static final int NET_ALARM_ACC_POWEROFF              = 0x211E;           // ACC断电报警,数据为 DWORD 0:ACC通电 1:ACC断电
+    public static final int NET_ALARM_3GFLOW_EXCEED             = 0x211F;           // 3G流量超出阈值报警(对应结构体 DHDEV_3GFLOW_EXCEED_STATE_INFO)
+    public static final int NET_PTZ_LOCATION_EX                 = 0x2123;           // 云台定位信息(对应结构体 DH_PTZ_LOCATION_INFO)
+    public static final int NET_ALARM_ENCLOSURE                 = 0x2126;           // 电子围栏报警(对应结构体 ALARM_ENCLOSURE_INFO)
+    public static final int NET_ALARM_RAID_STATE				= 0x2128;           // RAID异常报警(对应结构体 ALARM_RAID_INFO)
+    public static final int NET_ALARM_TRAFFIC_FLUX_STAT         = 0x212E;           // 交通流量统计报警(对应结构体ALARM_TRAFFIC_FLUX_LANE_INFO)
+    public static final int NET_ALARM_FRONTDISCONNECT           = 0x2132;           // 前端IPC断网报警(对应结构体 ALARM_FRONTDISCONNET_INFO)
+    public static final int NET_ALARM_BATTERYLOWPOWER 			= 0x2134;      		// 电池电量低报警(对应结构体 ALARM_BATTERYLOWPOWER_INFO)
+    public static final int NET_ALARM_TEMPERATURE 				= 0x2135;  			// 温度异常报警(对应结构体 ALARM_TEMPERATURE_INFO)
+    public static final int NET_ALARM_STORAGE_LOW_SPACE         = 0x2145;           // 存储容量不足事件(对应 ALARM_STORAGE_LOW_SPACE_INFO)
+    public static final int NET_ALARM_FAN_SPEED                 = 0x2162;           // 风扇转速异常事件(对应 ALARM_FAN_SPEED)
+    public static final int NET_ALARM_STORAGE_FAILURE_EX        = 0x2163;           // 存储错误报警(对应结构体 ALARM_STORAGE_FAILURE_EX)
+    public static final int NET_ALARM_TALKING_INVITE            = 0x2171;           // 设备请求对方发起对讲事件(对应结构体  ALARM_TALKING_INVITE_INFO)
+    public static final int NET_ALARM_ALARM_EX2 				= 0x2175;    		// 本地报警事件(对应结构体ALARM_ALARM_INFO_EX2,对NET_ALARM_ALARM_EX升级)
+    public static final int NET_EVENT_LEFT_DETECTION            = 0x218a;           // 物品遗留事件( 对应结构体 ALARM_EVENT_LEFT_INFO )
+    public static final int NET_ALARM_IPC                       = 0x218c;           // IPC报警,IPC通过DVR或NVR上报的本地报警(对应结构体 ALARM_IPC_INFO)
+    public static final int NET_EVENT_TAKENAWAYDETECTION        = 0x218d;           // 物品搬移事件(对应结构体 ALARM_TAKENAWAY_DETECTION_INFO)
+    public static final int NET_EVENT_VIDEOABNORMALDETECTION    = 0x218e;           // 视频异常事件(对应ALARM_VIDEOABNORMAL_DETECTION_INFO)
+    public static final int NET_ALARM_MOVEDETECTION             = 0x2193;           // 移动事件(对应ALARM_MOVE_DETECTION_INFO)
+    public static final int NET_ALARM_WANDERDETECTION           = 0x2194;           // 徘徊事件(对应ALARM_WANDERDETECTION_INFO)
+    public static final int NET_ALARM_KEYPAD_TAMPER             = 0x2199;           // 键盘防拆报警/恢复(对应ALARM_KEYPAD_TAMPER_INFO)
+    public static final int NET_ALARM_USER_PASS_CONFIRM			= 0x21A2;	        // 用户通过闸机进入或离开事件(对应结构体 NET_ALARM_USER_PASS_CONFIRM_INFO)
+    public static final int NET_ALARM_REID_CLUSTER_STATE		= 0x21A5;		    // 聚档状态事件(对应结构体 NET_ALARM_REID_CLUSTER_STATE_INFO)
+    
+    public static final int NET_CONFIG_RESULT_EVENT_EX          = 0x3000;           // 修改配置的返回码;返回结构见 DEV_SET_RESULT
+    public static final int NET_ALARM_GYROABNORMALATTITUDE		= 0x3011;			// 车辆的紧急制动、侧翻等状态导致的姿态异常进行报警(对应 ALARM_GYROABNORMALATTITUDE_INFO)
+    public static final int NET_START_LISTEN_FINISH_EVENT       = 0x300c;           // 订阅事件接口完成异步通知事件, 信息为 START_LISTEN_FINISH_RESULT_INFO
+    public static final int NET_ALARM_STORAGE_NOT_EXIST         = 0x3167;           // 存储组不存在事件(对应结构体 ALARM_STORAGE_NOT_EXIST_INFO)
+    public static final int NET_ALARM_SCADA_DEV_ALARM           = 0x31a2;           // 检测采集设备报警事件(对应结构体 ALARM_SCADA_DEV_INFO)
+    public static final int NET_ALARM_PARKING_CARD				= 0x31a4;			// 停车刷卡事件(对应结构体  ALARM_PARKING_CARD)
+    public static final int NET_ALARM_VEHICLE_ACC               = 0x31a6;           // 车辆ACC报警事件(对应结构体 ALARM_VEHICLE_ACC_INFO)
+    public static final int NET_ALARM_HEATIMG_TEMPER            = 0x31aa;           // 热成像测温点温度异常报警事件(对应结构体 ALARM_HEATIMG_TEMPER_INFO)
+    public static final int NET_ALARM_NEW_FILE                  = 0x31b3;           // 新文件事件(对应 ALARM_NEW_FILE_INFO)
+    public static final int NET_ALARM_HUMAM_NUMBER_STATISTIC    = 0x31cc;           // 人数量/客流量统计事件 (对应结构体 ALARM_HUMAN_NUMBER_STATISTIC_INFO)
+    public static final int NET_ALARM_IP_CONFLICT               = 0x3170;           // IP冲突事件(对应结构体 ALARM_IP_CONFLICT_INFO)
+    public static final int NET_ALARM_ARMMODE_CHANGE_EVENT      = 0x3175;			// 布撤防状态变化事件(对应结构体 ALARM_ARMMODE_CHANGE_INFO)
+    public static final int NET_ALARM_ACCESS_CTL_NOT_CLOSE      = 0x3177;           // 门禁未关事件(对应结构体 ALARM_ACCESS_CTL_NOT_CLOSE_INFO)
+    public static final int NET_ALARM_ACCESS_CTL_BREAK_IN       = 0x3178;           // 闯入事件(对应结构体 ALARM_ACCESS_CTL_BREAK_IN_INFO)
+    public static final int NET_ALARM_ACCESS_CTL_EVENT          = 0x3181;           // 门禁事件(对应结构体 ALARM_ACCESS_CTL_EVENT_INFO)
+    public static final int NET_URGENCY_ALARM_EX2               = 0x3182;           // 紧急报警EX2(对 NET_URGENCY_ALARM_EX 的升级,对应结构体 ALARM_URGENCY_ALARM_EX2, 人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助
+    public static final int NET_ALARM_ACCESS_CTL_STATUS         = 0x3185;           // 门禁状态事件(对应结构体 ALARM_ACCESS_CTL_STATUS_INFO)
+    public static final int NET_ALARM_ALARMCLEAR                = 0x3187;           // 消警事件(对应结构体  ALARM_ALARMCLEAR_INFO )
+    public static final int NET_ALARM_TALKING_HANGUP            = 0x3189;           // 设备主动挂断对讲事件(对应结构体ALARM_TALKING_HANGUP_INFO)
+    public static final int NET_ALARM_RCEMERGENCY_CALL          = 0x318b;  			// 紧急呼叫报警事件(对应结构体 ALARM_RCEMERGENCY_CALL_INFO)
+    public static final int NET_ALARM_FINGER_PRINT              = 0x318d;           // 获取信息事件(对应结构体 ALARM_CAPTURE_FINGER_PRINT_INFO)
+    public static final int NET_ALARM_LOGIN_FAILIUR             = 0x3194;           // 登陆失败事件(对应结构体ALARM_LOGIN_FAILIUR_INFO)
+    public static final int NET_ALARM_MODULE_LOST               = 0x3195;           // 扩展模块掉线事件(对应结构体 ALARM_MODULE_LOST_INFO)
+    public static final int NET_ALARM_ENCLOSURE_ALARM      		= 0x319B;  			// 电子围栏事件(对应结构体 ALARM_ENCLOSURE_ALARM_INFO)
+    public static final int NET_ALARM_BUS_SHARP_ACCELERATE      = 0x31ae;           // 车辆急加速事件(对应结构体 ALARM_BUS_SHARP_ACCELERATE_INFO)
+    public static final int NET_ALARM_BUS_SHARP_DECELERATE      = 0x31af;           // 车辆急减速事件(对应结构体 ALARM_BUS_SHARP_DECELERATE_INFO)
+    public static final int NET_ALARM_ACCESS_CARD_OPERATE       = 0x31b0;           // 门禁卡数据操作事件(对应结构体ALARM_ACCESS_CARD_OPERATE_INFO)
+    public static final int NET_ALARM_FIREWARNING               = 0x31b5;           // 热成像着火点事件 (对应结构体 ALARM_FIREWARNING_INFO)
+    public static final int NET_ALARM_WIFI_SEARCH               = 0x31c7;           // 获取到周围环境中WIFI设备上报事件(对应结构体 ALARM_WIFI_SEARCH_INFO)
+    public static final int NET_ALARM_WIFI_SEARCH_EX			= 0x8000;          // 获取到周围环境中WIFI设备上报事件(对应结构体 ALARM_WIFI_SEARCH_INFO_EX)
+    public static final int NET_ALARM_HOTSPOT_WARNING           = 0X31d8;           // 热成像热点异常报警(对应结构体 ALARM_HOTSPOT_WARNING_INFO)
+    public static final int NET_ALARM_COLDSPOT_WARNING          = 0X31d9;           // 热成像冷点异常报警(对应结构体 ALARM_COLDSPOT_WARNING_INFO)
+    public static final int NET_ALARM_FIREWARNING_INFO          = 0X31da;           // 热成像火情事件信息上报(对应结构体 ALARM_FIREWARNING_INFO_DETAIL)
+    public static final int NET_ALARM_RADAR_HIGH_SPEED          = 0x31df;           // 雷达监测超速报警事件 智能楼宇专用 (对应结构体 ALARM_RADAR_HIGH_SPEED_INFO)
+    public static final int NET_ALARM_RAID_STATE_EX             = 0x31fc;           // RAID异常报警(对应结构体 ALARM_RAID_INFO_EX)
+    public static final int NET_ALARM_STORAGE_IPC_FAILURE       = 0x31fd;           // IPC的存储介质故障事件(IPC SD卡异常)(对应结构体 ALARM_STORAGE_IPC_FAILURE_INFO)
+    public static final int NET_ALARM_POLLING_ALARM             = 0x31e0;           // 设备巡检报警事件 智能楼宇专用 (对应结构体 ALARM_POLLING_ALARM_INFO)
+    public static final int NET_ALARM_TRAFFICSTROBESTATE        = 0x31e2;           // 道闸栏状态事件(对应结构体 ALARM_TRAFFICSTROBESTATE_INFO)
+    public static final int NET_ALARM_WIFI_VIRTUALINFO_SEARCH   = 0x31ef;           // WIFI虚拟身份上报事件(对应结构体 ALARM_WIFI_VIRTUALINFO_SEARCH_INFO)
+    public static final int NET_ALARM_USER_LOCK_EVENT           = 0x31f9;           // 用户锁定报警事件(对应结构体 ALARM_USER_LOCK_EVENT_INFO)
+    public static final int NET_ALARM_GPS_NOT_ALIGNED           = 0x321d;           // GPS未定位报警(对应结构体 ALARM_GPS_NOT_ALIGNED_INFO)
+    public static final int NET_ALARM_TRAFFIC_VEHICLE_POSITION  = 0x323c;           // 车辆位置事件(对应的结构体 ALARM_TRAFFIC_VEHICLE_POSITION)
+    public static final int NET_ALARM_VIDEOBLIND                = 0x323e;           // 视频遮挡事件(对应结构体 ALARM_VIDEO_BLIND_INFO)
+    public static final int NET_ALARM_AUDIO_ANOMALY             = 0x2178;           // 音频异常事件(对应结构体ALARM_AUDIO_ANOMALY)
+    public static final int NET_ALARM_DRIVER_NOTCONFIRM         = 0x323f;           // 司机未按确认按钮报警事件(对应结构体 ALARM_DRIVER_NOTCONFIRM_INFO)
+    public static final int NET_ALARM_FACEINFO_COLLECT          = 0x3240;           // 人脸信息录入事件(对应 ALARM_FACEINFO_COLLECT_INFO)
+    public static final int NET_ALARM_HIGH_SPEED	            = 0x3241;			// 车辆超速报警事件(对应 ALARM_HIGH_SPEED_INFO )
+    public static final int NET_ALARM_VIDEO_LOSS                = 0x3242;			// 视频丢失事件(对应 ALARM_VIDEO_LOSS_INFO )
+    public static final int NET_ALARM_DOWNLOAD_REMOTE_FILE		= 0x3301;			// 下载远程文件事件(对应 ALARM_DOWNLOAD_REMOTE_FILE_INFO)
+    public static final int NET_ALARM_TRAFFIC_LINKAGEALARM		= 0x3353;			// 各种违章事件联动报警输出事件(对应结构体 ALARM_TRAFFIC_LINKAGEALARM_INFO)
+    public static final int NET_ALARM_LABELINFO					= 0x3233;			// IPC新增(2017.4),RFID标签信息采集事件(对应结构体 ALARM_LABELINFO)
+    public static final int NET_ALARM_FLOATINGOBJECT_DETECTION  = 0x3442;			// 漂浮物检测事件(对应结构体 ALARM_FLOATINGOBJECT_DETECTION_INFO)
+    public static final int NET_ALARM_WATER_LEVEL_DETECTION		= 0x3443;			// 水位检测事件(对应结构体 ALARM_WATER_LEVEL_DETECTION_INFO)
+    public static final int NET_ALARM_TRAFFIC_JUNCTION			= 0x3446;			// 交通路口事件(对应结构体 ALARM_TAFFIC_JUNCTION_INFO)
+    public static final int NET_EVENT_CROSSLINE_DETECTION  		= 0x2188;  			// 拌线入侵事件( 对应结构体 ALARM_EVENT_CROSSLINE_INFO )
+    public static final int NET_EVENT_CROSSREGION_DETECTION 	= 0x2189;  			// 区域入侵事件( 对应结构体 ALARM_EVENT_CROSSREGION_INFO )
+    public static final int NET_ALARM_POWERFAULT           		= 0x3172;  			// 电源故障事件(对应结构体ALARM_POWERFAULT_INFO)
+    public static final int NET_ALARM_CHASSISINTRUDED      		= 0x3173;  			// 机箱入侵(防拆)报警事件(对应结构体ALARM_CHASSISINTRUDED_INFO)
+    public static final int NET_ALARM_BYPASSMODE_CHANGE_EVENT 	= 0x3176;  			// 旁路状态变化事件(对应结构体ALARM_BYPASSMODE_CHANGE_INFO)
+    public static final int NET_ALARM_ACCESS_CTL_REPEAT_ENTER 	= 0x3179;  			// 反复进入事件(对应结构体ALARM_ACCESS_CTL_REPEAT_ENTER_INFO)
+    public static final int NET_ALARM_ACCESS_CTL_DURESS    		= 0x3180;  			// 胁迫卡刷卡事件(对应结构体ALARM_ACCESS_CTL_DURESS_INFO)
+    public static final int NET_ALARM_INPUT_SOURCE_SIGNAL  		= 0x3183;  			// 报警输入源信号事件(只要有输入就会产生该事件, 不论防区当前的模式,无法屏蔽, 对应 ALARM_INPUT_SOURCE_SIGNAL_INFO )
+    public static final int NET_ALARM_OPENDOORGROUP        		= 0x318c;  			// 多人组合开门事件(对应结构体ALARM_OPEN_DOOR_GROUP_INFO)
+    public static final int NET_ALARM_SUBSYSTEM_STATE_CHANGE 	= 0x318f;  			// 子系统状态改变事件(对应结构体ALARM_SUBSYSTEM_STATE_CHANGE_INFO)
+    public static final int NET_ALARM_PSTN_BREAK_LINE      		= 0x3196;  			// PSTN掉线事件(对应结构体ALARM_PSTN_BREAK_LINE_INFO)
+    public static final int NET_ALARM_DEFENCE_ARMMODE_CHANGE 	= 0x31d2;  			// 防区布撤防状态改变事件(对应结构体 ALARM_DEFENCE_ARMMODECHANGE_INFO)
+    public static final int NET_ALARM_SUBSYSTEM_ARMMODE_CHANGE 	= 0x31d3;  			// 子系统布撤防状态改变事件(对应结构体 ALARM_SUBSYSTEM_ARMMODECHANGE_INFO)
+    public static final int NET_ALARM_SENSOR_ABNORMAL      		= 0x31dc;  			// 探测器异常报警(对应结构体 ALARM_SENSOR_ABNORMAL_INFO)
+    public static final int NET_ALARM_CROWD_DETECTION			= 0x3305;			// 人群密度检测事件(对应结构体 ALARM_CROWD_DETECTION_INFO)
+    public static final int NET_ALARM_FACE_FEATURE_ABSTRACT		= 0x3306;			// 目标特征向量重建结果事件(对应结构体 ALARM_FACE_FEATURE_ABSTRACT_INFO)
+    public static final int NET_ALARM_CITIZEN_PICTURE_COMPARE   = 0x330d;           // 人证比对事件(对应结构体 ALARM_CITIZEN_PICTURE_COMPARE_INFO)
+    public static final int NET_ALARM_MAN_NUM_DETECTION         = 0x3223;            // 立体视觉区域内人数统计报警(对应结构体ALARM_MAN_NUM_INFO)
+    public static final int NET_ALARM_ENGINE_FAILURE_STATUS		= 0x344F;			// 发动机故障状态上报(对应 ALARM_ENGINE_FAILURE_STATUS_INFO)
+    public static final int NET_ALARM_ANATOMY_TEMP_DETECT		= 0x3454;			// 人体温智能检测事件(对应结构体 ALARM_ANATOMY_TEMP_DETECT_INFO)
+    public static final int NET_ALARM_REGULATOR_ABNORMAL		= 0x3455;			// 标准黑体源异常报警事件(对应结构体 ALARM_REGULATOR_ABNORMAL_INFO)
+    public static final int NET_ALARM_MINIINDOOR_RADAR_ALARM    = 0x34A7;          // Mini雷达报警事件(对应结构体 NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO)
+    public static final int NET_ALARM_QR_CODE_CHECK             = 0x335a;           // 二维码上报事件(对应结构体 ALARM_QR_CODE_CHECK_INFO)
+    public static final int NET_ALARM_TRAFFIC_XINKONG			= 0x335f;		    // 交通态势报警事件(对接结构体 ALARM_TRAFFIC_XINKONG_INFO)
+    public static final int NET_ALARM_WIRELESSDEV_LOWPOWER      = 0x31C8;           // 获取无线设备低电量上报事件(对应结构体ALARM_WIRELESSDEV_LOWPOWER_INFO)
+    public static final int NET_ALARM_INTELLI_MODULE_HIGH_TEMP	= 0x34BB;			// 智能模块温度异常事件(对应结构体 NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO)
+    public static final int NET_ALARM_INTELLI_MODULE_OFFLINE	= 0x34BC;			// 智能模块断线事件(对应结构体 NET_ALARM_INTELLI_MODULE_OFFLINE_INFO)
+    public static final int NET_ALARM_RF_JAMMING				= 0x34C0;			// RF干扰事件(对应结构体 NET_ALARM_RF_JAMMING_INFO)
+    public static final int NET_ALARM_ARMING_FAILURE			= 0x34C1;			// 布防失败事件(对应结构体 NET_ALARM_ARMING_FAILURE_INFO)
+    public static final int NET_ALARM_USER_MODIFIED				= 0x34C2;			// 用户信息被修改(增加、删除、修改)事件(对应结构体 NET_ALARM_USER_MODIFIED_INFO)
+    public static final int NET_ALARM_MANUAL_TEST				= 0x34C3;			// 手动测试事件(对应结构体 NET_ALARM_MANUAL_TEST_INFO)
+    public static final int NET_ALARM_DEVICE_MODIFIED			= 0x34C4;			// 设备设息修改(增加、删除、修改)事件(对应结构体 NET_ALARM_DEVICE_MODIFIED_INFO)
+    public static final int NET_ALARM_ATS_FAULT					= 0x34C5;			// 报警传输系统故障事件(对应结构体 NET_ALARM_ATS_FAULT_INFO)
+    public static final int NET_ALARM_ARC_OFFLINE				= 0x34C6;			// 报警接收中心离线事件(对应结构体 NET_ALARM_ARC_OFFLINE_INFO)
+    public static final int NET_ALARM_WIFI_FAILURE				= 0x34C7;			// wifi故障事件(对应结构体 NET_ALARM_WIFI_FAILURE_INFO)
+    public static final int NET_ALARM_OVER_TEMPERATURE			= 0x34C8;			// 超温报警事件(对应结构体 NET_ALARM_OVER_TEMPERATURE_INFO)
+    public static final int NET_ALARM_WIRELESSDEV_POWERLESS     = 0x3498;           // 探测器主电丢失事件 (对应结构体 ALARM_WIRELESSDEV_POWERLESS_INFO)
+    public static final int NET_ALARM_KEYPAD_LOCK			    = 0x219E;		    // 键盘锁定事件(对应结构体 ALARM_KEYPAD_LOCK_INFO)
+    public static final int NET_ALARM_BETWEENRULE_TEMP_DIFF     = 0x31d6;          // 热成像规则间温差异常报警(对应结构体 ALARM_BETWEENRULE_DIFFTEMPER_INFO)
+    public static final int DH_ALARM_USERLOCK					= 0x3300;			// 用户锁定报警事件(对应 ALARM_USERLOCK_INFO)
+    /*  start  西欧报警主机事件,预留58个事件*/
+    public static final int NET_ALARM_AREAARM_MODECHANGE        =0x330e;          // 区域防区模式改变(对应结构体ALARM_AREAARM_MODECHANGE_INFO)
+    public static final int NET_ALARM_AREAALARM                 =0x3310;          // 区域报警(对应结构体ALARM_AREAALARM_INFO)
+    /*  end  西欧报警主机事件,预留58个事件 */
+    /*  start  雷球联动事件,预留64个事件*/
+    public static final int NET_ALARM_RADAR_REGIONDETECTION		= 0x3370;		    // 雷达区域检测事件(对应结构体 ALARM_RADAR_REGIONDETECTION_INFO)
+
+    public static final int NET_ALARM_TRAFFIC_PARKING_TIMEOUT	= 0x334C;			// 停车时长超限事件(对应的结构体 ALARM_TRAFFIC_PARKING_TIMEOUT_INFO)
+    public static final int NET_ALARM_TRAFFIC_SUSPICIOUSCAR     = 0x31a7;           // 嫌疑车辆上报事件(对应结构体 ALARM_TRAFFIC_SUSPICIOUSCAR_INFO)
+    public static final int NET_ALARM_PARKING_LOT_STATUS_DETECTION = 0x3451;        // 室外停车位状态检测事件 (对应结构体 ALARM_REGION_PARKING_TIMEOUT_INFO)
+    public static final int NET_ALARM_REGION_PARKING_TIMEOUT	= 0x3460;   		// 区间车位停车超时(对应结构体 ALARM_REGION_PARKING_TIMEOUT_INFO)
+    public static final int NET_ALARM_REGION_PARKING_NO_ENTRY_RECORD = 0x3461;  	// 区间车位停车,检测到车辆驶出区域时没有匹配到入场信息(对应结构体 ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO)
+    public static final int NET_ALARM_TRAFFIC_LIGHT_STATE		= 0x3458;   		// 交通灯状态报警(对应 ALARM_TRAFFIC_LIGHT_STATE_INFO)
+    public static final int NET_ALARM_VEHICLE_INOUT             = 0x346A;           // 车辆出入事件(对应结构体 ALARM_VEHICLE_INOUT_INFO)
+    public static final int NET_ALARM_FIRE_DETECTION			= 0x343D;			// 火警事件(对于的结构体 ALARM_FIRE_DETECTION_INFO)
+    public static final int NET_ALARM_WORKSUIT_FEATURE_ABSTRACT = 0x3481;           // 工装特征向量建模结果上报事件(对应结构体ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO)
+
+    public static final int NET_ALARM_TRAFFIC_FLOW_QUEUE        = 0x349C;          // 交通路口排队事件(对应结构体 ALARM_TRAFFIC_FLOW_QUEUE_INFO)
+    public static final int NET_ALARM_TRAFFIC_FLOW_JUNTION      = 0x349D;          // 交通路口过车事件(对应结构体 ALARM_TRAFFIC_FLOW_JUNTION_INFO)
+    public static final int NET_ALARM_TRAFFIC_FLOW_VEHICLE_STOP =0x349E;         // 交通路口停车事件(对应结构体 ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO)
+    public static final int NET_ALARM_TRAFFIC_FLOW_STAT         = 0x349F;         // 交通路口车道统计事件(对应结构体 ALARM_TRAFFIC_FLOW_STAT_INFO)
+    public static final int NET_ALARM_TRAFFIC_FLOW_STAT_EX      = 0x34A0;         // 交通路口车道统计拓展事件(对应结构体 ALARM_TRAFFIC_FLOW_STAT_EX_INFO)
+    public static final int NET_ALARM_DYNAMIC_PWDLOCK_UPLOAD_RANDOMCODE =0x34B5;   // 密码锁上报随机码事件(对应结构体 NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO)
+    public static final int NET_ALARM_DYNAMIC_PWDLOCK_CLOSE     = 0x34B7;          // 密码锁闭锁事件(对应结构体 NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO)
+    public static final int NET_UPLOAD_RCEMERGENCY_CALL         =0x4023;           // 紧急呼叫报警事件, 对应结构体 ALARM_RCEMERGENCY_CALL_INFO
+    public static final int NET_ALARM_HUMIDITY_ALARM            = 0x3490;         /// 湿度报警事件(对应结构体 ALARM_HUMIDITY_ALARM_INFO)
+
+
+
+    // 信号机事件
+    public static final int NET_ALARM_RTSC_PHASE_RUNING         = 0x5001;      // RTSC跑动暂停事件(对应ALARM_RTSC_PHASE_RUNNING_INFO)
+    public static final int NET_ALARM_RTSC_LAMP_RUNING		    = 0x5002;      // RTSC灯暂停事件(对应ALARM_RTSC_LAMP_RUNNING_INFO)
+    public static final int NET_ALARM_RTSC_RUNING			    = 0x5003;      // 信号机运行事件(对应ALARM_RTSC_RUNNING_INFO)
+    public static final int NET_ALARM_RTSC_TRAFFIC			    = 0x5004;      // 信号机交通信息事件(对应ALARM_RTSC_TRAFFIC_INFO)
+
+
+    // 订阅Bus状态对应事件上报(CLIENT_AttachBusState)
+    public static final int NET_ALARM_BUS_PASSENGER_CARD_CHECK  = 0x0009;           // 乘客刷卡事件(对应结构体 ALARM_PASSENGER_CARD_CHECK )
+
+    // 帧类型掩码定义
+    public static final int FRAME_TYPE_MOTION                   = 0x00000001;       // 动检帧
+
+
+    // CLIENT_RealLoadPictureEx 智能抓图事件
+    public static final int EVENT_IVS_ALL                       = 0x00000001;       // 订阅所有事件
+    public static final int EVENT_IVS_CROSSLINEDETECTION        = 0x00000002;       // 拌线入侵事件(对应 DEV_EVENT_CROSSLINE_INFO)
+    public static final int EVENT_IVS_CROSSREGIONDETECTION      = 0x00000003;       // 区域入侵事件(对应 DEV_EVENT_CROSSREGION_INFO)
+    public static final int EVENT_IVS_LEFTDETECTION        		= 0x00000005;  		// 物品遗留事件(对应 DEV_EVENT_LEFT_INFO)
+    public static final int EVENT_IVS_STAYDETECTION             = 0x00000006;       // 停留事件(对应 DEV_EVENT_STAY_INFO)
+    public static final int EVENT_IVS_WANDERDETECTION           = 0x00000007;       // 徘徊事件(对应  DEV_EVENT_WANDER_INFO)
+    public static final int EVENT_IVS_PRESERVATION              = 0x00000008;       // 物品保全事件(对应 DEV_EVENT_PRESERVATION_INFO)
+    public static final int EVENT_IVS_MOVEDETECTION        		= 0x00000009;  		// 移动事件(对应 DEV_EVENT_MOVE_INFO)
+    public static final int EVENT_IVS_NUMBERSTAT                = 0x00000010;       // 数量统计事件(对应 DEV_EVENT_NUMBERSTAT_INFO)
+    public static final int EVENT_IVS_RIOTERDETECTION      		= 0x0000000B; 		// 聚众事件(对应 DEV_EVENT_RIOTERL_INFO)
+    public static final int EVENT_IVS_FIREDETECTION             = 0x0000000C;       // 火警事件(对应 DEV_EVENT_FIRE_INFO)
+    public static final int EVENT_IVS_SMOKEDETECTION            = 0x0000000D;       // 烟雾报警事件(对应 DEV_EVENT_SMOKE_INFO)
+    public static final int EVENT_IVS_FIGHTDETECTION            = 0x0000000E;       // 斗殴事件(对应 DEV_EVENT_FIGHT_INFO)
+    public static final int EVENT_IVS_VIDEOABNORMALDETECTION    = 0x00000013;       // 视频异常事件(对应 DEV_EVENT_VIDEOABNORMALDETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFICACCIDENT           = 0x00000016;       /// 交通事故事件(对应 DEV_EVENT_TRAFFICACCIDENT_INFO)
+    public static final int EVENT_IVS_TRAFFICJUNCTION           = 0x00000017;       // 交通路口事件----老规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO)
+    public static final int EVENT_IVS_TRAFFICGATE               = 0x00000018;       // 交通卡口事件----老规则(对应 DEV_EVENT_TRAFFICGATE_INFO)
+    public static final int EVENT_IVS_FACEDETECT                = 0x0000001A;       // 目标检测事件 (对应 DEV_EVENT_FACEDETECT_INFO)(智能规则对应  EVENT_IVS_FACEDETECT)
+    public static final int EVENT_IVS_TRAFFICJAM                = 0x0000001B;       // 交通拥堵事件(对应 DEV_EVENT_TRAFFICJAM_INFO)
+    public static final int EVENT_IVS_TRAFFIC_RUNREDLIGHT       = 0x00000100;       // 交通违章-闯红灯事件(对应 DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO)
+    public static final int EVENT_IVS_TRAFFIC_OVERLINE          = 0x00000101;       // 交通违章-压车道线事件(对应 DEV_EVENT_TRAFFIC_OVERLINE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_RETROGRADE        = 0x00000102;       // 交通违章-逆行事件(对应  DEV_EVENT_TRAFFIC_RETROGRADE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TURNLEFT          = 0x00000103;       // 交通违章-违章左转(对应 DEV_EVENT_TRAFFIC_TURNLEFT_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TURNRIGHT         = 0x00000104;       // 交通违章-违章右转(对应 DEV_EVENT_TRAFFIC_TURNRIGHT_INFO)
+    public static final int EVENT_IVS_TRAFFIC_UTURN             = 0x00000105;       // 交通违章-违章掉头(对应 DEV_EVENT_TRAFFIC_UTURN_INFO)
+    public static final int EVENT_IVS_TRAFFIC_OVERSPEED         = 0x00000106;       // 交通违章-超速(对应 DEV_EVENT_TRAFFIC_OVERSPEED_INFO)
+    public static final int EVENT_IVS_TRAFFIC_UNDERSPEED        = 0x00000107;       // 交通违章-低速(对应 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKING           = 0x00000108;       // 交通违章-违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_INFO)
+    public static final int EVENT_IVS_TRAFFIC_WRONGROUTE        = 0x00000109;       // 交通违章-不按车道行驶(对应 DEV_EVENT_TRAFFIC_WRONGROUTE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_CROSSLANE         = 0x0000010A;       // 交通违章-违章变道(对应 DEV_EVENT_TRAFFIC_CROSSLANE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_OVERYELLOWLINE    = 0x0000010B;       // 交通违章-压黄线 (对应 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE = 0x0000010E;       // 交通违章-黄牌车占道事件(对应 DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY = 0x0000010F;      // 交通违章-斑马线行人优先事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO)
+    public static final int EVENT_IVS_TRAFFIC_NOPASSING         = 0x00000111;       // 交通违章-禁止通行事件(对应 DEV_EVENT_TRAFFIC_NOPASSING_INFO)
+    public static final int EVENT_IVS_ABNORMALRUNDETECTION 		= 0x00000112;  		// 异常奔跑事件(对应 DEV_EVENT_ABNORMALRUNDETECTION_INFO)
+    public static final int EVENT_IVS_RETROGRADEDETECTION       = 0x00000113;       // 人员逆行事件(对应 DEV_EVENT_RETROGRADEDETECTION_INFO)
+    public static final int EVENT_IVS_TAKENAWAYDETECTION   		= 0x00000115;  		// 物品搬移事件(对应 DEV_EVENT_TAKENAWAYDETECTION_INFO)
+    public static final int EVENT_IVS_PARKINGDETECTION     		= 0x00000116;  		// 非法停车事件(对应 DEV_EVENT_PARKINGDETECTION_INFO)
+    public static final int EVENT_IVS_FACERECOGNITION           = 0x00000117;       // 目标识别事件(对应 DEV_EVENT_FACERECOGNITION_INFO, (对应的智能规则配置  CFG_FACERECOGNITION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_MANUALSNAP        = 0x00000118;       // 交通手动抓拍事件(对应  DEV_EVENT_TRAFFIC_MANUALSNAP_INFO)
+    public static final int EVENT_IVS_TRAFFIC_FLOWSTATE         = 0x00000119;       // 交通流量统计事件(对应 DEV_EVENT_TRAFFIC_FLOW_STATE)
+    public static final int EVENT_IVS_TRAFFIC_VEHICLEINROUTE    = 0x0000011B;       // 有车占道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO)
+    public static final int EVENT_ALARM_LOCALALARM         		= 0x0000011D;  		// 外部报警事件(对应 DEV_EVENT_ALARM_INFO)
+    public static final int EVENT_IVS_PSRISEDETECTION           = 0x0000011E;       // 囚犯起身事件(对应 DEV_EVENT_PSRISEDETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TOLLGATE          = 0x00000120;       // 交通违章--卡口事件----新规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE = 0x00000124;       // 交通违章--占用公交车道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_BACKING           = 0x00000125;       // 交通违章--违章倒车事件(对应 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO)
+    public static final int EVENT_IVS_AUDIO_ABNORMALDETECTION   = 0x00000126;       // 声音异常检测(对应 DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT    = 0x00000127;       // 交通违章-闯黄灯事件(对应 DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO)
+    public static final int EVENT_IVS_CLIMBDETECTION            = 0x00000128;       // 攀高检测事件(对应 DEV_EVENT_IVS_CLIMB_INFO)
+    public static final int EVENT_IVS_LEAVEDETECTION            = 0x00000129;       // 离岗检测事件(对应 DEV_EVENT_IVS_LEAVE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX = 0x0000012A;      // 交通违章--黄网格线抓拍事件(对应 DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING = 0x0000012B;     // 车位有车事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO )
+    public static final int EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING = 0x0000012C;   // 车位无车事件(对应  DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO )
+    public static final int EVENT_IVS_TRAFFIC_PEDESTRAIN        = 0x0000012D;       // 交通行人事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO)
+    public static final int EVENT_IVS_TRAFFIC_THROW             = 0x0000012E;       // 交通抛洒物品事件(对应 DEV_EVENT_TRAFFIC_THROW_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE = 0x00000134;        // 车位压线事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_OVERSTOPLINE      = 0X00000137;       // 交通违章--压停止线事件(对应 DEV_EVENT_TRAFFIC_OVERSTOPLINE)
+    public static final int EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT  = 0x00000138;       // 交通违章--交通未系安全带事件(对应 DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT)
+    public static final int EVENT_IVS_TRAFFIC_DRIVER_SMOKING 	= 0x00000139;  		// 驾驶员抽烟事件(对应 DEV_EVENT_TRAFFIC_DRIVER_SMOKING)
+    public static final int EVENT_IVS_TRAFFIC_DRIVER_CALLING 	= 0x0000013A;  		// 驾驶员打电话事件(对应 DEV_EVENT_TRAFFIC_DRIVER_CALLING)
+    public static final int EVENT_IVS_TRAFFIC_PASSNOTINORDER    = 0x0000013C;       // 交通违章--未按规定依次通行(对应 DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO)
+    public static final int  EVENT_IVS_CROSSLINEDETECTION_EX    = 0x00000151;        // 警戒线扩展事件
+    public static final int EVENT_ALARM_VIDEOBLIND         		= 0x00000153;  		// 视频遮挡事件(对应 DEV_EVENT_ALARM_VIDEOBLIND)
+    public static final int EVENT_IVS_TRAFFIC_JAM_FORBID_INTO	= 0x00000163;       // 交通违章--车辆拥堵禁入事件(对应 DEV_EVENT_ALARM_JAMFORBIDINTO_INFO)
+    public static final int EVENT_IVS_TRAFFIC_FCC               = 0x0000016B;       // 加油站提枪、挂枪事件(对应  DEV_EVENT_TRAFFIC_FCC_INFO)
+    public static final int EVENT_IVS_TUMBLE_DETECTION          = 0x00000177;       // 倒地报警事件(对应 DEV_EVENT_TUMBLE_DETECTION_INFO)
+    public static final int EVENT_IVS_DISTANCE_DETECTION		= 0x0000024A; 	    // 异常间距事件 (对应 DEV_EVENT_DISTANCE_DETECTION_INFO)
+    public static final int EVENT_IVS_ACCESS_CTL                = 0x00000204;       // 门禁事件 (对应 DEV_EVENT_ACCESS_CTL_INFO)
+    public static final int EVENT_IVS_SNAPMANUAL                = 0x00000205;       // SnapManual事件(对应 DEV_EVENT_SNAPMANUAL)
+    public static final int EVENT_IVS_TRAFFIC_ELETAGINFO        = 0x00000206;      // RFID电子车牌标签事件(对应 DEV_EVENT_TRAFFIC_ELETAGINFO_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TIREDPHYSIOLOGICAL = 0x00000207;  	// 生理疲劳驾驶事件(对应 DEV_EVENT_TIREDPHYSIOLOGICAL_INFO)
+    public static final int EVENT_IVS_CITIZEN_PICTURE_COMPARE   = 0x00000209;       // 人证比对事件(对应  DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO )
+    public static final int EVENT_IVS_TRAFFIC_TIREDLOWERHEAD 	= 0x0000020A;  		// 开车低头报警事件(对应DEV_EVENT_TIREDLOWERHEAD_INFO)
+    public static final int EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND 	= 0x0000020B;  		// 开车左顾右盼报警事件(对应DEV_EVENT_DRIVERLOOKAROUND_INFO)
+    public static final int EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST 	= 0x0000020C;  		// 开车离岗报警事件(对应DEV_EVENT_DRIVERLEAVEPOST_INFO)
+    public static final int EVENT_IVS_MAN_STAND_DETECTION  		= 0x0000020D;  		// 立体视觉站立事件(对应DEV_EVENT_MANSTAND_DETECTION_INFO)
+    public static final int EVENT_IVS_MAN_NUM_DETECTION         = 0x0000020E;       // 立体视觉区域内人数统计事件(对应DEV_EVENT_MANNUM_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_DRIVERYAWN   		= 0x00000210;  		// 开车打哈欠事件(对应DEV_EVENT_DRIVERYAWN_INFO)
+    public static final int EVENT_IVS_HUMANTRAIT                = 0x00000215;       // 人体特征事件(对应 DEV_EVENT_HUMANTRAIT_INFO)
+    public static final int EVENT_IVS_FACEANALYSIS              = 0x00000217;       // 人脸分析事件 (暂未有具体事件)
+    public static final int EVENT_IVS_TRAFFIC_QUEUEJUMP         = 0x0000021C;      // 车辆加塞事件(对应 DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO)
+    public static final int EVENI_IVS_XRAY_DETECTION            = 0x00000223;       // X光检测事件 (对应 DEV_EVENT_XRAY_DETECTION_INFO)
+    public static final int EVENT_IVS_HIGHSPEED            		= 0x0000022B;       // 车辆超速报警事件(对应 DEV_EVENT_HIGHSPEED_INFO)
+    public static final int EVENT_IVS_CROWDDETECTION		    = 0x0000022C;		// 人群密度检测事件(对应结构体 DEV_EVENT_CROWD_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_CARDISTANCESHORT  = 0x0000022D;		// 车间距过小报警事件(对应 DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO)
+    public static final int EVENT_IVS_PEDESTRIAN_JUNCTION		= 0x00000230;		// 行人卡口事件(对应 DEV_EVENT_PEDESTRIAN_JUNCTION_INFO)
+    public static final int EVENT_IVS_VEHICLE_RECOGNITION       = 0x00000231;       // 车牌对比事件(对应 DEV_EVENT_VEHICLE_RECOGNITION_INFO)
+    public static final int EVENT_IVS_BANNER_DETECTION			= 0x0000023B;		// 拉横幅事件(对应 DEV_EVENT_BANNER_DETECTION_INFO)
+    public static final int EVENT_IVS_ELEVATOR_ABNORMAL         = 0x0000023D;		// 电动扶梯运行异常事件 (对应DEV_EVENT_ELEVATOR_ABNORMAL_INFO)
+    public static final int EVENT_IVS_VEHICLEDETECT             = 0x0000023F;       // 机动车检测 (只用于规则配置,事件采用EVENT_IVS_TRAFFICJUNCTION)
+    public static final int EVENT_IVSS_FACEATTRIBUTE            = 0x00000243;       // IVSS目标检测事件 (暂未有具体事件)
+    public static final int EVENT_IVSS_FACECOMPARE              = 0x00000244;       // IVSS目标识别事件 (暂未有具体事件)
+    public static final int EVENT_IVS_FIREWARNING				= 0x00000245;		// 火警事件(对应 DEV_EVENT_FIREWARNING_INFO)
+    public static final int EVENT_IVS_SHOPPRESENCE				= 0x00000246;       // 商铺占道经营事件(对应 DEV_EVENT_SHOPPRESENCE_INFO)
+    public static final int EVENT_IVS_FLOWBUSINESS				= 0x0000024E;       // 流动摊贩事件 (对应 DEV_EVENT_FLOWBUSINESS_INFO)
+    public static final int EVENT_IVS_LANEDEPARTURE_WARNNING 	= 0X00000251;  		// 车道偏移预警(对应 DEV_EVENT_LANEDEPARTURE_WARNNING_INFO)
+    public static final int EVENT_IVS_FORWARDCOLLISION_WARNNING = 0x00000252;  		// 前向碰撞预警(对应 DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO)
+    public static final int EVENT_IVS_FLOATINGOBJECT_DETECTION	= 0x00000257;		// 漂浮物检测事件 (对应 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO)
+    public static final int EVENT_IVS_PHONECALL_DETECT			= 0x0000025A;       // 打电话检测事件(对应 DEV_EVENT_PHONECALL_DETECT_INFO)
+    public static final int EVENT_IVS_SMOKING_DETECT        	= 0x0000025B;       // 吸烟检测事件(对应 DEV_EVENT_SMOKING_DETECT_INFO)
+    public static final int EVENT_IVS_RADAR_SPEED_LIMIT_ALARM   = 0x0000025C;       // 雷达限速报警事件(对应 DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO)
+    public static final int EVENT_IVS_WATER_LEVEL_DETECTION		= 0x0000025D;		// 水位检测事件 (对应 DEV_EVENT_WATER_LEVEL_DETECTION_INFO)
+    public static final int EVENT_IVS_CITY_MOTORPARKING			= 0x0000024F;		// 城市机动车违停事件 (对应 DEV_EVENT_CITY_MOTORPARKING_INFO)
+    public static final int EVENT_IVS_CITY_NONMOTORPARKING		= 0x00000250;		// 城市机非动车违停事件 (对应 DEV_EVENT_CITY_NONMOTORPARKING_INFO)
+    public static final int EVENT_IVS_HOLD_UMBRELLA			    = 0x0000025E;		// 违规撑伞检测事件 (对应 DEV_EVENT_HOLD_UMBRELLA_INFO)
+    public static final int EVENT_IVS_GARBAGE_EXPOSURE			= 0x0000025F;		// 垃圾暴露检测事件 (对应 DEV_EVENT_GARBAGE_EXPOSURE_INFO)
+    public static final int EVENT_IVS_DUSTBIN_OVER_FLOW			= 0x00000260;		// 垃圾桶满溢检测事件 (对应 DEV_EVENT_DUSTBIN_OVER_FLOW_INFO)
+    public static final int EVENT_IVS_DOOR_FRONT_DIRTY			= 0x00000261;		// 门前脏乱检测事件 (对应 DEV_EVENT_DOOR_FRONT_DIRTY_INFO)
+    public static final int EVENT_IVS_QUEUESTAY_DETECTION		= 0X00000262;		// 排队滞留时间报警事件 (对应 DEV_EVENT_QUEUESTAY_DETECTION_INFO)
+    public static final int EVENT_IVS_QUEUENUM_DETECTION		= 0X00000263;		// 排队人数异常报警事件(对应 DEV_EVENT_QUEUENUM_DETECTION_INFO)
+    public static final int EVENT_IVS_GENERATEGRAPH_DETECTION	= 0X00000264;		// 生成图规则事件(对应 DEV_EVENT_GENERATEGRAPH_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKING_MANUAL	= 0x00000265;		// 交通违章-手动取证(对应  DEV_EVENT_TRAFFIC_PARKING_MANUAL_INFO)
+    public static final int EVENT_IVS_HELMET_DETECTION      	= 0x00000266;		// 安全帽检测事件(对应 DEV_EVENT_HELMET_DETECTION_INFO)
+    public static final int EVENT_IVS_DEPOSIT_DETECTION      	= 0x00000267;		// 包裹堆积程度检测事件(对应 DEV_EVENT_DEPOSIT_DETECTION_INFO)
+    public static final int EVENT_IVS_HOTSPOT_WARNING			= 0x00000268;		// 热点异常报警事件(对应 DEV_EVENT_HOTSPOT_WARNING_INFO)
+    public static final int EVENT_IVS_WEIGHING_PLATFORM_DETECTION =	0x00000269;		// 称重平台检测事件(对应 DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO)
+    public static final int EVENT_IVS_CLASSROOM_BEHAVIOR		= 0x0000026A;		// 课堂行为分析事件(对应 DEV_EVENT_CLASSROOM_BEHAVIOR_INFO)
+    public static final int EVENT_IVS_VEHICLE_DISTANCE_NEAR		= 0x0000026B;		// 安全驾驶车距过近报警事件(对应 DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO)
+
+    public static final int EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL      = 0x0000026C;	// 驾驶员异常报警事件(对应 DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO)
+    public static final int	EVENT_IVS_WORKCLOTHES_DETECT		= 0x0000026E;		// 工装(安全帽/工作服等)检测事件(对应 DEV_EVENT_WORKCLOTHES_DETECT_INFO)
+    public static final int EVENT_IVS_SECURITYGATE_PERSONALARM  = 0x0000026F;       // 安检门人员报警事件(对应 DEV_EVENT_SECURITYGATE_PERSONALARM_INFO)
+    public static final int EVENT_IVS_STAY_ALONE_DETECTION      = 0x00000270;		// 单人独处事件(对应 DEV_EVENT_STAY_ALONE_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION = 0x00000272;		// 交通道路施工检测事件(对应 DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO)
+
+    public static final int EVENT_IVS_WORKSTATDETECTION         = 0x00000274;       // 作业统计事件(对应 DEV_EVENT_WORKSTATDETECTION_INFO)
+    public static final int EVENT_IVS_INTELLI_SHELF             = 0x00000277;       // 智能补货事件(对应 DEV_EVENT_INTELLI_SHELF_INFO)
+    public static final int EVENT_IVS_CAR_DRIVING_IN_OUT		= 0x0000027B;       // 车辆驶入驶出状态事件(对应 DEV_EVENT_CAR_DRIVING_IN_OUT_INFO)
+    public static final int EVENT_IVS_VIOLENT_THROW_DETECTION	= 0x0000027D;		// 暴力抛物检测(对应 DEV_EVENT_VIOLENT_THROW_DETECTION_INFO)
+    public static final int EVENT_IVS_GASSTATION_VEHICLE_DETECT = 0x00000283;       // 加油站车辆检测事件 (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO)
+    public static final int EVENT_IVS_HIGH_TOSS_DETECT          = 0x0000028D;       // 高空抛物检测(对应DEV_EVENT_HIGH_TOSS_DETECT_INFO)
+    public static final int EVENT_IVS_BREED_DETECTION           = 0x00000289;     // 智慧养殖检测事件 (对应 DEV_EVENT_BREED_DETECTION_INFO)
+    public static final int EVENT_IVS_PARKING_LOT_STATUS_DETECTION = 0x00000297;    // 室外停车位状态检测 (对应 DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO)
+    public static final int EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION=0x0000029D;	// 智慧厨房穿着检测事件(对不戴口罩、厨师帽以及颜色不符合规定的厨师服进行报警)(对应 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO)
+    public static final int EVENT_IVS_ANATOMY_TEMP_DETECT		= 0x00000303;		// 人体温智能检测事件(对应 DEV_EVENT_ANATOMY_TEMP_DETECT_INFO)
+    public static final int	EVENT_IVS_FOG_DETECTION				= 0x00000308;		// 起雾检测事件(对应 DEV_EVENT_FOG_DETECTION)
+    public static final int EVENT_IVS_TRAFFIC_VEHICLE_BC		= 0x00000309;		// 飙车事件(对应 DEV_EVENT_TRAFFIC_VEHICLE_BC )
+
+    public static final int EVENT_IVS_WATER_STAGE_MONITOR       = 0x0000030D;       // 水位监测事件
+    public static final int EVENT_IVS_NONMOTOR_ENTRYING			= 0x0000030C;    // 非机动车进入电梯(对应 DEV_EVENT_NONMOTOR_ENTRYING_INFO)
+    public static final int EVENT_IVS_TRAFFIC_ROAD_ALERT        = 0x0000030E;       // 道路安全预警(对应 DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO)
+    public static final int EVENT_IVS_BREAK_RULE_BUILDING_DETECTION= 0x0000030F;	// 违章建筑检测事件(对应 DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_CAR_MEASUREMENT	=0x00000320;		// 交通卡口测量(车辆长、宽、高度、重量等)事件 (对应 DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO)
+
+    public static final int EVENT_IVS_CAR_DRIVING_IN            = 0x00000330;       // 车辆驶入事件(对应 DEV_EVENT_CAR_DRIVING_IN_INFO)
+    public static final int EVENT_IVS_CAR_DRIVING_OUT           = 0x00000331;       // 车辆驶出事件(对应 DEV_EVENT_CAR_DRIVING_OUT_INFO)
+    public static final int EVENT_IVS_TRUCKNOTCLEAN_FOR_PRMA    = 0x0000033A;      // 工程车未清洗 对应 DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO
+    public static final int EVENT_IVS_DRIVE_ACTION_ANAYLSE = 0x00000342; // 驾驶行为分析 (只用于规则配置)
+    public static final int EVENT_IVS_TRAFFIC_PARKINGSPACE_MANUALSNAP = 0x00000346; // 路侧停车位手动抓图 (对应 DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO )
+	public static final int EVENT_IVS_CONVEYER_BELT_BULK         = 0x00000351;      // 传送带大块异物检测事件(对应DEV_EVENT_CONVEYER_BELT_BULK_INFO )
+    public static final int EVENT_IVS_CONVEYER_BELT_NONLOAD     = 0x00000352;      // 传送带空载检测事件(对应DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO )
+    public static final int EVENT_IVS_CONVEYER_BELT_RUNOFF      = 0x00000353;      // 传送带跑偏检测事件(对应 DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO )
+    public static final int EVENT_IVS_OBJECT_REMOVAL_DETECTION	=	0x0000036A;      // 物品拿取检测事件(对应DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO)
+    public static final int EVENT_IVS_WATERCOLOR_DETECTION		=	0x00000363;		// 水体颜色事件(对应 DEV_EVENT_WATERCOLOR_DETECTION_INFO)
+    public static final int EVENT_IVS_SEWAGE_DETECTION		   =	0x00000362;		// 排污检测事件(对应 DEV_EVENT_SEWAGE_DETECTION_INFO)
+    public static final int EVENT_IVS_OBJECT_PLACEMENT_DETECTION  =  0x00000369;      // 物品放置检测事件(对应DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO)
+    public static final int EVENT_IVS_DIALRECOGNITION			=	0x00000371;      // 仪表检测事件(对应DEV_EVENT_DIALRECOGNITION_INFO)
+    public static final int EVENT_IVS_ELECTRICFAULT_DETECT		=	0x00000372;      // 仪表类缺陷检测事件(对应DEV_EVENT_ELECTRICFAULTDETECT_INFO)
+    public static final int EVENT_IVS_TRASH_WITHOUT_COVER_DETECTION = 0x00000373;      // 垃圾桶未盖盖子检测事件(对应DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_PARKING_BACKING  =    0x0000037C;      // 出入口倒车驶离事件(对应DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO)
+    public static final int EVENT_IVS_BARELAND_DETECTION       =    0x00000380;     // 裸土检测事件(DEV_EVENT_BARELAND_DETECTION_INFO)
+    public static final int EVENT_IVS_CONSUMPTION_EVENT		=	0x00000381;		// 消费事件(对应 DEV_EVENT_CONSUMPTION_EVENT_INFO)
+    public static final int EVENT_IVS_XRAY_UNPACKING_CHECK  =  0x00000384;      // X光开包检查事件(对应DEV_EVENT_XRAY_UPACKING_CHECK_INFO)
+    public static final int EVENT_IVS_TRAFFIC_CHANGE_LANE_CONTINUES	= 0x00000387;		//机动车连续变道违法事件(对应 DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO)
+    public static final int EVENT_IVS_FISHING_DETECTION	   = 0x00000390;		// 钓鱼检测事件(对应 DEV_EVENT_FISHING_DETECTION_INFO )
+    public static final int EVENT_IVS_ROAD_CONDITIONS_DETECTION	=0x0000039A;    // 路面检测事件(对应DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO)
+    public static final int EVENT_IVS_VIDEO_NORMAL_DETECTION =0x00000365;  // 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件 DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
+    public static final int EVENT_IVS_OPEN_INTELLI           =0x0000039D;  // 开放智能事件(对应 DEV_EVENT_OPEN_INTELLI_INFO)
+    public static final int EVENT_IVS_TRAFFIC_SERPENTINE_CHANGE_LANE	=0x0000040F;     // 蛇形变道事件(对应 DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO)
+    public static final int EVENT_IVS_TRAFFIC_SPEED_DROP_SHARPLY =	0x00000404;	// 车辆速度剧减事件(对应 DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO)
+    public static final int EVENT_IVS_TRAFFIC_OVERTAKE_ONRIGHT  =  0x0000040A;  // 右侧超车事件(对应 DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED    =  0x0000040B;  // 大车占道事件(对应 DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO)
+    public static final int EVENT_IVS_REMOTE_APPROVAL_ALARM	 =0x00000438; // 金融远程审批事件(对应 NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO)
+    public static final int EVENT_IVS_ANTI_COUNTERFEIT		=0x00000439;	// 防造假检测事件(对应 NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO)
+    public static final int EVENT_IVS_USERMANAGER_FOR_TWSDK =0x00000441;	// 用户信息上报事件(对应 NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO)
+    public static final int EVENT_IVS_POSITION_SNAP		=0x00000447;	// 按位置抓图事件(对应 NET_DEV_EVENT_POSITION_SNAP_INFO)
+    public static final int EVENT_IVS_CIGARETTE_CASE_DETECTION	=0x00000450;		// 烟盒检测事件(对应 NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO)
+    public static final int EVENT_IVS_TRAFFIC_ACCELERATION_RAPID =0x00000457;			// 急加速事件(对应 NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO)
+    public static final int EVENT_IVS_TRAFFIC_TURN_SHARP   =0x00000458;			// 急转弯事件(对应 NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO)
+    public static final int EVENT_IVS_COLLISION_CONFLICT	 =0x0000045B;			// 碰撞冲突事件(对应 NET_DEV_EVENT_COLLISION_CONFLICT_INFO)
+    public static final int EVENT_IVS_SAME_OBJECT_SEARCH_DETECT =0x00000472;        // 按图索骥物品检测事件(对应 NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO)
+    public static final int EVENT_IVS_SAME_OBJECT_SEARCH_COUNT =0x00000480;         // 按图索骥物品计数事件(对应 NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO)
+    public static final int EVENT_IVS_GRANARY_TRANS_ACTION_DETECTION =0x00000484;         // 粮面异动检测事件上报(对应 NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO)
+    public static final int EVENT_IVS_REGION_PROPORTION_DETECTION =0x00000485;         // 区域占比检测事件(对应 NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO)
+    // CLIENT_GetNewDevConfig / CLIENT_SetNewDevConfig 配置项
+    public static final String  CFG_CMD_MOTIONDETECT            = "MotionDetect";              // 动态检测报警配置(对应 CFG_MOTION_INFO)
+    public static final String CFG_CMD_VIDEOWIDGET              = "VideoWidget";         // 视频编码物件配置(对应 NET_CFG_VideoWidget )
+    public static final String CFG_CMD_ANALYSEGLOBAL            = "VideoAnalyseGlobal";  // 视频分析全局配置(对应 CFG_ANALYSEGLOBAL_INFO)
+    public static final String CFG_CMD_ANALYSEMODULE            = "VideoAnalyseModule";  // 物体的检测模块配置(对应 CFG_ANALYSEMODULES_INFO)
+    public static final String CFG_CMD_ANALYSERULE              = "VideoAnalyseRule";    // 视频分析规则配置(对应 CFG_ANALYSERULES_INFO)
+    public static final String CFG_CMD_VIDEOINOPTIONS           = "VideoInOptions";      // 视频输入前端选项(对应CFG_VIDEO_IN_OPTIONS)
+    public static final String CFG_CMD_RTSP                     =  "RTSP";               // RTSP的配置( 对应 CFG_RTSP_INFO_IN和CFG_RTSP_INFO_OUT )
+    public static final String CFG_CMD_RAINBRUSHMODE            = "RainBrushMode";       // 雨刷模式相关配置(对应CFG_RAINBRUSHMODE_INFO数组)
+    public static final String CFG_CMD_RAINBRUSH                = "RainBrush";           // 雨刷配置(对应CFG_RAINBRUSH_INFO)
+    public static final String CFG_CMD_ENCODE                   = "Encode";              // 图像通道属性配置(对应CFG_ENCODE_INFO)
+	public static final String CFG_CMD_VIDEOIN_FOCUS            = "VideoInFocus";        // 聚焦设置(对应 CFG_VIDEO_IN_FOCUS)
+    public static final String CFG_CMD_VIDEO_IN_ZOOM            = "VideoInZoom";         // 云台通道变倍配置(对应CFG_VIDEO_IN_ZOOM)
+    public static final String CFG_CMD_REMOTEDEVICE				= "RemoteDevice";		 // 远程设备信息(对应  AV_CFG_RemoteDevice 数组, 通道无关)
+    public static final String CFG_CMD_ANALYSESOURCE			= "VideoAnalyseSource";  // 视频分析资源配置(对应 CFG_ANALYSESOURCE_INFO)
+    public static final String CFG_CMD_TRAFFICGLOBAL            = "TrafficGlobal";       // 智能交通全局配置(CFG_TRAFFICGLOBAL_INFO)
+    public static final String CFG_CMD_RECORDMODE               = "RecordMode";          // 录像模式(对应  AV_CFG_RecordMode )
+    public static final String CFG_CMD_ALARMLAMP                = "AlarmLamp";           // 警灯配置(对应 CFG_ALARMLAMP_INFO)
+    public static final String CFG_CMD_ALARMOUT                 = "AlarmOut";            // 报警输出通道配置(对应  CFG_ALARMOUT_INFO )
+    public static final String CFG_CMD_INTELLECTIVETRAFFIC      = "TrafficSnapshot";     // 智能交通抓拍(对应 CFG_TRAFFICSNAPSHOT_INFO )
+    public static final String CFG_CMD_TRAFFICSNAPSHOT_MULTI    = "TrafficSnapshotNew" ; // 智能交通抓拍( CFG_TRAFFICSNAPSHOT_NEW_INFO )
+    public static final String CFG_CMD_NTP       				= "NTP";     			 // 时间同步服务器(对应  CFG_NTP_INFO )
+    public static final String CFG_CMD_ALARMINPUT               = "Alarm";               // 外部输入报警配置(对应 CFG_ALARMIN_INFO)
+    public static final String CFG_CMD_DVRIP                    = "DVRIP";               // 网络协议配置(对应 CFG_DVRIP_INFO)
+    public static final String CFG_CMD_NETWORK                  = "Network";             // 网络配置(对应 CFG_NETWORK_INFO)
+    public static final String CFG_CMD_NASEX                    = "NAS";                 // 网络存储服务器配置, 多服务器(对应 CFG_NAS_INFO_EX)
+    public static final String CFG_CMD_MONITORWALL              = "MonitorWall";         // 电视墙配置(对应  AV_CFG_MonitorWall 数组, 通道无关)
+    public static final String CFG_CMD_RTMP                  	= "RTMP";             	 // RTMP配置(对应  CFG_RTMP_INFO)
+    public static final String CFG_CMD_ACCESS_EVENT             = "AccessControl";       // 门禁事件配置(对应 CFG_ACCESS_EVENT_INFO 数组)
+    public static final String CFG_CMD_ACCESSTIMESCHEDULE       = "AccessTimeSchedule";  // 门禁刷卡时间段(对应 CFG_ACCESS_TIMESCHEDULE_INFO)
+    public static final String CFG_CMD_DEV_GENERRAL             = "General";             // 普通配置 (对应 CFG_DEV_DISPOSITION_INFO)
+    public static final String CFG_CMD_VIDEODIAGNOSIS_PROFILE   = "VideoDiagnosisProfile";// 视频诊断参数表(CFG_VIDEODIAGNOSIS_PROFILE)
+    public static final String CFG_CMD_VIDEODIAGNOSIS_TASK      = "VideoDiagnosisTask";   // 视频诊断任务表(CFG_VIDEODIAGNOSIS_TASK)
+    public static final String CFG_CMD_VIDEODIAGNOSIS_TASK_ONE  = "VideoDiagnosisTask.x"; // 视频诊断任务表(CFG_VIDEODIAGNOSIS_TASK)
+    public static final String CFG_CMD_VIDEODIAGNOSIS_PROJECT   = "VideoDiagnosisProject";// 视频诊断计划表(CFG_VIDEODIAGNOSIS_PROJECT)
+    public static final String CFG_CMD_GUIDESCREEN              = "GuideScreen";         // 诱导屏系统配置(CFG_GUIDESCREEN_INFO)
+    public static final String CFG_CMD_THERMO_GRAPHY			= "ThermographyOptions";  // 热成像摄像头属性配置(CFG_THERMOGRAPHY_INFO)
+    public static final String CFG_CMD_THERMOMETRY_RULE         = "ThermometryRule";      // 热成像测温规则配置(对应 CFG_RADIOMETRY_RULE_INFO)
+    public static final String CFG_CMD_TEMP_STATISTICS          = "TemperatureStatistics"; // 温度统计配置(CFG_TEMP_STATISTICS_INFO)
+    public static final String CFG_CMD_THERMOMETRY              = "HeatImagingThermometry";// 热成像测温全局配置(CFG_THERMOMETRY_INFO)
+    public static final String CFG_CMD_DEVRECORDGROUP			= "DevRecordGroup";        // 通道录像组状态(对应 CFG_DEVRECORDGROUP_INFO)
+    public static final String CFG_CMD_STORAGEGROUP				= "StorageGroup";          // 存储组信息(对应 AV_CFG_StorageGroup数组, 通道无关)
+    public static final String CFG_CMD_PTZTOUR					= "PtzTour";          	   // 云台巡航路径配置(对应 CFG_PTZTOUR_INFO)
+    public static final String CFG_CMD_PTZ_PRESET               = "PtzPreset";             // 云台预置点配置(对应结构 PTZ_PRESET_INFO)
+    public static final String CFG_CMD_VIDEOIN                  = "VideoIn";               // 输入通道配置(对应 CFG_VIDEO_IN_INFO)
+    public static final String CFG_CMD_CHANNELTITLE             = "ChannelTitle";          // 通道名称(对应 AV_CFG_ChannelName)
+    public static final String CFG_CMD_WIFI_SEARCH				= "AroudWifiSearch";       // 设备通过Wifi模块扫描周围无线设备配置(CFG_WIFI_SEARCH_INFO)
+    public static final String CFG_CMD_RECORD                   =  "Record";               // 定时录像配置(对应 CFG_RECORD_INFO)
+    public static final String CFG_CMD_SCADA_DEV              	= "SCADADev";  			   // 检测采集设备配置(CFG_SCADA_DEV_INFO)
+    public static final String CFG_CMD_ALARM_SHIELD_RULE     	= "AlarmShieldRule";  	   // 告警屏蔽规则( CFG_ALARM_SHIELD_RULE_INFO)
+    public static final String CFG_CMD_JUDICATURE             	= "Judicature";  		   // 刻录配置(对应 CFG_JUDICATURE_INFO)
+    public static final String CFG_CMD_PTZ                      = "Ptz";                   // 云台配置(对应 CFG_PTZ_INFO)
+    public static final String CFG_CMD_PTZ_AUTO_MOVEMENT        = "PtzAutoMovement";       //云台定时动作配置(对应 CFG_PTZ_AUTOMOVE_INFO)
+    public static final String CFG_CMD_OPEN_DOOR_GROUP          = "OpenDoorGroup";         // 多人多开门方式组合配置(CFG_OPEN_DOOR_GROUP_INFO)
+    public static final String CFG_CMD_PARKING_SPACE_LIGHT_GROUP= "ParkingSpaceLightGroup";// 车位指示灯本机配置(对应 CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL)
+    public static final String CFG_CMD_LIGHT                    = "Light";                 // 灯光设备配置 (对应结构体 CFG_LIGHT_INFO)
+    public static final String CFG_CMD_LIGHTING                 = "Lighting";              // 灯光设置(CFG_LIGHTING_INFO)
+    public static final String CFG_CMD_COMPOSE_CHANNEL          = "ComposeChannel";        // 合成通道配置(对应 CFG_COMPOSE_CHANNEL)
+    public static final String CFG_CMD_PICINPIC                 = "PicInPic";              // 审讯画中画(对应 CFG_PICINPIC_INFO)改为数组方式,兼容以前单个配置,根据长度区分
+    public static final String CFG_CMD_IDLEMOTION_INFO          = "IdleMotion";            // 空闲动作配置(CFG_IDLE_MOTION_INFO)
+    public static final String CFG_CMD_INFRARED_CONFIG          = "InfraredSet";           // 红外功能配置 (对应 CFG_INFRARED_INFO, 手持设备使用)
+    public static final String CFG_CMD_REGULATOR_DETECT			="RegulatorDetect";			// 标准黑体源异常报警,对应结构体 CFG_REGULATOR_DETECT_INFO. 热成像通道有效
+    public static final String CFG_CMD_RECORD_STORAGEPOINT_EX   ="RecordStoragePoint";     // 录像存储点映射配置扩展 (对应 CFG_RECORDTOSTORAGEPOINT_EX_INFO)
+    /**
+     * 扬声器播放能力(CFG_CAP_SPEAK)
+     */
+    public static final String CFG_CAP_CMD_SPEAK                = "speak.getCaps";
+    // CLIENT_FileTransmit接口传输文件类型
+    public static final int NET_DEV_BLACKWHITETRANS_START      = 0x0003;           // 开始发送禁止/允许名单(对应结构体 NETDEV_BLACKWHITE_LIST_INFO)
+    public static final int NET_DEV_BLACKWHITETRANS_SEND       = 0x0004;           // 发送禁止/允许名单
+    public static final int NET_DEV_BLACKWHITETRANS_STOP       = 0x0005;           // 停止发送禁止/允许名单
+
+    // 配置类型,对应CLIENT_GetDevConfig和CLIENT_SetDevConfig接口
+    public static final int NET_DEV_DEVICECFG                   = 0x0001;           // 设备属性配置
+    public static final int NET_DEV_VIDEO_OSD_CFG               = 0x0023;           // 视频OSD叠加配置(对应结构体 NET_DVR_VIDEOOSD_CFG)
+    public static final int NET_DEV_NETCFG_EX                   = 0x005b;           // 网络扩展配置(对应结构体 NETDEV_NET_CFG_EX )
+    public static final int NET_DEV_TIMECFG                     = 0x0008;           // DVR时间配置
+    public static final int NET_DEV_AUTOMTCFG					= 0x000A;           // 自动维护配置(对应结构体NETDEV_AUTOMT_CFG)
+    public static final int NET_DEV_ENCLOSURE_CFG               = 0x0066;           // 电子围栏配置(对应结构体 NETDEV_ENCLOSURE_CFG)
+    public static final int NET_DEV_ENCLOSURE_VERSION_CFG       = 0x0067;           // 电子围栏版本号配置(对应结构体 NETDEV_ENCLOSURE_VERSION_CFG)
+    public static final int NET_DEV_ENCODER_CFG                 = 0x0040;           // 数字通道的前端编码器信息(混合DVR使用,结构体DEV_ENCODER_CFG)
+    
+    public static final int NET_EM_CFG_RADIO_REGULATOR          = 11102;		    // 人体测温标准黑体配置, 对应结构体 NET_CFG_RADIO_REGULATOR,通道号不能为-1
+    // 命令类型, 对应 CLIENT_QueryNewSystemInfo 接口
+    public static final String CFG_CAP_CMD_DEVICE_STATE         = "trafficSnap.getDeviceStatus";   // 获取设备状态信息 (对应 CFG_CAP_TRAFFIC_DEVICE_STATUS)
+    public static final String CFG_CAP_CMD_RECORDFINDER         = "RecordFinder.getCaps";          // 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
+    public static final String CFG_CMD_VIDEODIAGNOSIS_GETSTATE  = "videoDiagnosisServer.getState"; // 获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
+    public static final String CFG_CAP_CMD_PTZ_ENABLE			= "ptz.factory.instance";		   // 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO)
+
+    // 远程配置结构体相关常量
+    public static final int NET_MAX_MAIL_ADDR_LEN              = 128;              // 邮件发(收)地址最大长度
+    public static final int NET_MAX_MAIL_SUBJECT_LEN           = 64;               // 邮件主题最大长度
+    public static final int NET_MAX_IPADDR_LEN                 = 16;               // IP地址字符串长度
+    public static final int NET_MAX_IPADDR_LEN_EX              = 40;               // 扩展IP地址字符串长度, 支持IPV6
+    public static final int NET_USER_NAME_LEN_EX               = 32;               // 用户名长度,用于新平台扩展
+    public static final int NET_USER_PSW_LEN_EX                = 32;               // 用户密码长度,用于新平台扩展
+
+    public static final int NET_MAX_DEV_ID_LEN                 = 48;               // 机器编号最大长度
+    public static final int NET_MAX_HOST_NAMELEN               = 64;               // 主机名长度,
+    public static final int NET_MAX_HOST_PSWLEN                = 32;               // 密码长度
+    public static final int NET_MAX_ETHERNET_NUM               = 2;                // 以太网口最大个数
+    public static final int NET_MAX_ETHERNET_NUM_EX            = 10;               // 扩展以太网口最大个数
+    public static final int NET_DEV_CLASS_LEN                  = 16;               // 设备类型字符串(如"IPC")长度
+    public static final int NET_N_WEEKS                        = 7;                // 一周的天数
+    public static final int NET_N_TSECT                        = 6;                // 通用时间段个数
+    public static final int NET_N_REC_TSECT                    = 6;                // 录像时间段个数
+    public static final int NET_N_COL_TSECT                    = 2;                // 颜色时间段个数
+    public static final int NET_N_ENCODE_AUX                   = 3;                // 扩展码流个数
+    public static final int NET_N_TALK                         = 1;                // 最多对讲通道个数
+    public static final int NET_N_COVERS                       = 1;                // 遮挡区域个数
+    public static final int NET_N_CHANNEL                      = 16;               // 最大通道个数
+    public static final int NET_N_ALARM_TSECT                  = 2;                // 报警提示时间段个数
+    public static final int NET_MAX_ALARMOUT_NUM               = 16;               // 报警输出口个数上限
+    public static final int NET_MAX_AUDIO_IN_NUM               = 16;               // 音频输入口个数上限
+    public static final int NET_MAX_VIDEO_IN_NUM               = 16;               // 视频输入口个数上限
+    public static final int NET_MAX_ALARM_IN_NUM               = 16;               // 报警输入口个数上限
+    public static final int NET_MAX_DISK_NUM                   = 16;               // 硬盘个数上限,暂定为16
+    public static final int NET_MAX_DECODER_NUM                = 16;               // 解码器(485)个数上限
+    public static final int NET_MAX_232FUNCS                   = 10;               // 232串口功能个数上限
+    public static final int NET_MAX_232_NUM                    = 2;                // 232串口个数上限
+    public static final int NET_MAX_232_NUM_EX                 = 16;               // 扩展串口配置个数上限
+    public static final int NET_MAX_DECPRO_LIST_SIZE           = 100;              // 解码器协议列表个数上限
+    public static final int NET_FTP_MAXDIRLEN                  = 240;              // FTP文件目录最大长度
+    public static final int NET_MATRIX_MAXOUT                  = 16;               // 矩阵输出口最大个数
+    public static final int NET_TOUR_GROUP_NUM                 = 6;                // 矩阵输出组最大个数
+    public static final int NET_MAX_DDNS_NUM                   = 10;               // 设备支持的ddns服务器最大个数
+    public static final int NET_MAX_SERVER_TYPE_LEN            = 32;               // ddns服务器类型,最大字符串长度
+    public static final int NET_MAX_DOMAIN_NAME_LEN            = 256;              // ddns域名,最大字符串长度
+    public static final int NET_MAX_DDNS_ALIAS_LEN             = 32;               // ddns服务器别名,最大字符串长度
+    public static final int NET_MAX_DEFAULT_DOMAIN_LEN         = 60;               // ddns默认域名,最大字符串长度
+    public static final int NET_MOTION_ROW                     = 32;               // 动态检测区域的行数
+    public static final int NET_MOTION_COL                     = 32;               // 动态检测区域的列数
+    public static final int NET_STATIC_ROW                     = 32;               // 静态检测区域的行数
+    public static final int NET_STATIC_COL                     = 32;               // 静态检测区域的列数
+    public static final int NET_FTP_USERNAME_LEN               = 64;               // FTP配置,用户名最大长度
+    public static final int NET_FTP_PASSWORD_LEN               = 64;               // FTP配置,密码最大长度
+    public static final int NET_TIME_SECTION                   = 2;                // FTP配置,每天时间段个数
+    public static final int NET_FTP_MAX_PATH                   = 240;              // FTP配置,文件路径名最大长度
+    public static final int NET_FTP_MAX_SUB_PATH               = 128;              // FTP配置,文件路径名最大长度
+    public static final int NET_INTERVIDEO_UCOM_CHANID         = 32;               // 平台接入配置,U网通通道ID
+    public static final int NET_INTERVIDEO_UCOM_DEVID          = 32;               // 平台接入配置,U网通设备ID
+    public static final int NET_INTERVIDEO_UCOM_REGPSW         = 16;               // 平台接入配置,U网通注册密码
+    public static final int NET_INTERVIDEO_UCOM_USERNAME       = 32;               // 平台接入配置,U网通用户名
+    public static final int NET_INTERVIDEO_UCOM_USERPSW        = 32;               // 平台接入配置,U网通密码
+    public static final int NET_INTERVIDEO_NSS_IP              = 32;              // 平台接入配置,力维IP
+    public static final int NET_INTERVIDEO_NSS_SERIAL          = 32;               // 平台接入配置,力维serial
+    public static final int NET_INTERVIDEO_NSS_USER            = 32;               // 平台接入配置,力维user
+    public static final int NET_INTERVIDEO_NSS_PWD             = 50;              // 平台接入配置,力维password
+    public static final int NET_MAX_VIDEO_COVER_NUM            = 16;               // 遮挡区域最大个数
+    public static final int NET_MAX_WATERMAKE_DATA             = 4096;             // 水印图片数据最大长度
+    public static final int NET_MAX_WATERMAKE_LETTER           = 128;              // 水印文字最大长度
+    public static final int NET_MAX_WLANDEVICE_NUM             = 10;               // 最多搜索出的无线设备个数
+    public static final int NET_MAX_WLANDEVICE_NUM_EX          = 32;               // 最多搜索出的无线设备个数
+    public static final int NET_MAX_ALARM_NAME                 = 64;               // 地址长度
+    public static final int NET_MAX_REGISTER_SERVER_NUM        = 10;               // 主动注册服务器个数
+    public static final int NET_SNIFFER_FRAMEID_NUM            = 6;                // 6个FRAME ID 选项
+    public static final int NET_SNIFFER_CONTENT_NUM            = 4;                // 每个FRAME对应的4个抓包内容
+    public static final int NET_SNIFFER_CONTENT_NUM_EX         = 8;                // 每个FRAME对应的8个抓包内容
+    public static final int NET_SNIFFER_PROTOCOL_SIZE          = 20;               // 协议名字长度
+    public static final int NET_MAX_PROTOCOL_NAME_LENGTH       = 20;
+    public static final int NET_SNIFFER_GROUP_NUM              = 4;                // 4组抓包设置
+    public static final int NET_ALARM_OCCUR_TIME_LEN           = 40;               // 新的报警上传时间的长度
+    public static final int NET_VIDEO_OSD_NAME_NUM             = 64;               // 叠加的名称长度,目前支持32个英文,16个中文
+    public static final int NET_VIDEO_CUSTOM_OSD_NUM           = 8;               // 支持的自定义叠加的数目,不包含时间和通道
+    public static final int NET_VIDEO_CUSTOM_OSD_NUM_EX        = 256;              // 支持的自定义叠加的数目,不包含时间和通道
+    public static final int NET_CONTROL_AUTO_REGISTER_NUM      = 100;              // 支持定向主动注册服务器的个数
+    public static final int NET_MMS_RECEIVER_NUM               = 100;              // 支持短信接收者的个数
+    public static final int NET_MMS_SMSACTIVATION_NUM          = 100;              // 支持短信发送者的个数
+    public static final int NET_MMS_DIALINACTIVATION_NUM       = 100;              // 支持拨号发送者的个数
+    public static final int NET_MAX_ALARM_IN_NUM_EX            = 32;               // 报警输入口个数上限
+    public static final int NET_MAX_IPADDR_OR_DOMAIN_LEN       = 64;               // IP地址字符串长度
+    public static final int NET_MAX_CALLID                     = 32;               // 呼叫ID
+    public static final int DH_MAX_OBJECT_NUM		       	   = 32;		   	   // 最大object个数
+    public static final int NET_MAX_OBJECT_NUM		       	   = 32;		   	   // 最大object个数
+    public static final int NET_MAX_FENCE_LINE_NUM             = 2;                // 围栏最大曲线数
+    public static final int MAX_SMART_VALUE_NUM                = 30;               // 最多的smart信息个数
+    public static final int NET_INTERVIDEO_AMP_DEVICESERIAL    = 48;               // 平台接入配置,天地阳光 设备序列号字符串长度
+    public static final int NET_INTERVIDEO_AMP_DEVICENAME      = 16;               // 平台接入配置,天地阳光 设备名称字符串长度
+    public static final int NET_INTERVIDEO_AMP_USER            = 32;               // 平台接入配置,天地阳光 注册用户名字符串长度
+    public static final int NET_INTERVIDEO_AMP_PWD             = 32;               // 平台接入配置,天地阳光 注册密码字符串长度
+    public static final int MAX_SUBMODULE_NUM                  = 32;               // 最多子模块信息个数
+    public static final int NET_MAX_CARWAY_NUM                 = 8;                // 交通抓拍,最大车道数
+    public static final int NET_MAX_SNAP_SIGNAL_NUM            = 3;                // 一个车道的最大抓拍张数
+    public static final int NET_MAX_CARD_NUM                   = 128;              // 卡号的最大个数
+    public static final int NET_MAX_CARDINFO_LEN               = 32;               // 每条卡号最长字符数
+    public static final int NET_MAX_CONTROLER_NUM              = 64;               // 最大支持控制器数目
+    public static final int NET_MAX_LIGHT_NUM                  = 32;               // 最多控制灯组数
+    public static final int NET_MAX_SNMP_COMMON_LEN            = 64;               // snmp 读写数据长度
+    public static final int NET_MAX_DDNS_STATE_LEN             = 128;              // DDNS 状态信息长度
+    public static final int NET_MAX_PHONE_NO_LEN               = 16;               // 电话号码长度
+    public static final int NET_MAX_MSGTYPE_LEN                = 32;               // 导航类型或短信息类型长度
+    public static final int NET_MAX_MSG_LEN                    = 256;              // 导航和短信息长度
+    public static final int NET_MAX_GRAB_INTERVAL_NUM          = 4;                // 多张图片抓拍个数
+    public static final int NET_MAX_FLASH_NUM                  = 5;                // 最多支持闪光灯个数
+    public static final int NET_MAX_ISCSI_PATH_NUM             = 64;               // ISCSI远程目录最大数量
+    public static final int NET_MAX_WIRELESS_CHN_NUM           = 256;              // 无线路由最大信道数
+    public static final int NET_PROTOCOL3_BASE                 = 100;              // 三代协议版本基数
+    public static final int NET_PROTOCOL3_SUPPORT              = 11;               // 只支持3代协议
+    public static final int NET_MAX_STAFF_NUM                  = 20;               // 浓缩视频配置信息中标尺数上限
+    public static final int NET_MAX_CALIBRATEBOX_NUM           = 10;               // 浓缩视频配置信息中标定区域数上限
+    public static final int NET_MAX_EXCLUDEREGION_NUM          = 10;               // 浓缩视频配置信息中排除区域数上限
+    public static final int NET_MAX_POLYLINE_NUM               = 20;               // 浓缩视频配置信息中标尺线数
+    public static final int NET_MAX_COLOR_NUM                  = 16;               // 最大颜色数目
+    public static final int MAX_OBJFILTER_NUM                  = 16;               // 最大过滤种类个数
+    public static final int NET_MAX_SYNOPSIS_STATE_NAME        = 64;               // 视频浓缩状态字符串长度
+    public static final int NET_MAX_SYNOPSIS_QUERY_FILE_COUNT  = 10;               // 视频浓缩相关原始文件按照路径查找时文件个数上限
+    public static final int NET_MAX_SSID_LEN                   = 36;               // SSID长度
+    public static final int NET_MAX_APPIN_LEN                  = 16;               // PIN码长度
+    public static final int NET_NETINTERFACE_NAME_LEN          = 260;              // 网口名称长度
+    public static final int NET_NETINTERFACE_TYPE_LEN          = 260;              // 网络类型长度
+    public static final int NET_MAX_CONNECT_STATUS_LEN         = 260;              // 连接状态字符串长度
+    public static final int NET_MAX_MODE_LEN                   = 64;               // 3G支持的网络模式长度
+    public static final int NET_MAX_MODE_NUM                   = 64;               // 3G支持的网络模式个数
+    public static final int NET_MAX_COMPRESSION_TYPES_NUM      = 16;               // 视频编码格式最多种类个数
+    public static final int NET_MAX_CAPTURE_SIZE_NUM           = 64;               // 视频分辨率个数
+    public static final int NET_NODE_NAME_LEN                  = 64;               // 组织结构节点名称长度
+    public static final int MAX_CALIBPOINTS_NUM                = 256;              // 支持最大标定点数
+    public static final int NET_MAX_ATTR_NUM                   = 32;               // 显示单元属性最大数量
+    public static final int NET_MAX_CLOUDCONNECT_STATE_LEN     = 128;              // 云注册连接状态信息长度
+    public static final int NET_MAX_IPADDR_EX_LEN              = 128;              // 扩展IP地址最大长度
+    public static final int MAX_EVENT_NAME                     = 128;              // 最长事件名
+    public static final int NET_MAX_ETH_NAME                   = 64;               // 最大网卡名
+    public static final int NET_N_SCHEDULE_TSECT               = 8;                // 时间表元素个数
+    public static final int NET_MAX_URL_NUM                    = 8;                // URL最大个数
+    public static final int NET_MAX_LOWER_MITRIX_NUM           = 16;               // 最大下位矩阵数
+    public static final int NET_MAX_BURN_CHANNEL_NUM           = 32;               // 最大刻录通道数
+    public static final int NET_MAX_NET_STRORAGE_BLOCK_NUM     = 64;               // 最大远程存储区块数量
+    public static final int NET_MAX_CASE_PERSON_NUM            = 32;               // 案件人员最大数量
+    public static final int NET_MAX_MULTIPLAYBACK_CHANNEL_NUM  = 64;               // 最大多通道预览回放通道数
+    public static final int NET_MAX_MULTIPLAYBACK_SPLIT_NUM    = 32;               // 最大多通道预览回放分割模式数
+    public static final int NET_MAX_AUDIO_ENCODE_TYPE          = 64;               // 最大语音编码类型个数
+    public static final int MAX_CARD_RECORD_FIELD_NUM          = 16;               // 卡号录像最大域数量
+    public static final int NET_BATTERY_NUM_MAX                = 16;               // 最大电池数量
+    public static final int NET_POWER_NUM_MAX                  = 16;               // 最大电源数量
+    public static final int NET_MAX_AUDIO_PATH                 = 260;              // 最大音频文件路长度
+    public static final int NET_MAX_DOORNAME_LEN               = 128;              // 最大门禁名称长度
+    public static final int NET_MAX_CARDPWD_LEN                = 64;               // 最大门禁名称长度
+    public static final int NET_MAX_FISHEYE_MOUNTMODE_NUM      = 4;                // 最大鱼眼安装模式个数
+    public static final int NET_MAX_FISHEYE_CALIBRATEMODE_NUM  = 16;               // 最大鱼眼矫正模式个数
+    public static final int NET_MAX_FISHEYE_EPTZCMD_NUM        = 64;               // 最大鱼眼电子云台操作个数
+    public static final int POINT_NUM_IN_PAIR                  = 2;                // 标定点对中的点数量
+    public static final int MAX_POINT_PAIR_NUM                 = 128;              // 标定点最大数量
+    public static final int CHANNEL_NUM_IN_POINT_GROUP         = 2;                // 标定点中的视频通道数
+    public static final int MAX_POINT_GROUP_NUM                = 32;               // 标定点组最大数量, 每两个通道进行拼接需要一组标定点
+    public static final int MAX_LANE_INFO_NUM                  = 32;               // 最大车道信息数
+    public static final int MAX_LANE_DIRECTION_NUM             = 8;                // 车道方向总数
+    public static final int NET_MAX_MONITORWALL_NUM            = 32;               // 电视墙最大数量
+    public static final int NET_MAX_OPTIONAL_URL_NUM           = 8;                // 备用url最大数量
+    public static final int NET_MAX_CAMERA_CHANNEL_NUM         = 1024;             // 最大摄像机通道数
+    public static final int MAX_FILE_SUMMARY_NUM               = 32;               // 最大文件摘要数
+    public static final int MAX_AUDIO_ENCODE_NUM               = 64;               // 最大支持音频编码个数
+
+    public static final int MAX_FLASH_LIGHT_NUM                = 8;                // 最大支持的爆闪灯(闪光灯)个数
+    public static final int MAX_STROBOSCOPIC_LIGHT_NUM         = 8;                // 最大支持的频闪灯个数
+    public static final int MAX_MOSAIC_NUM					   = 8;				   // 最大支持的马赛克数量
+    public static final int MAX_MOSAIC_CHANNEL_NUM			   = 256;			   // 支持马赛克叠加的最多通道数量
+    public static final int MAX_FIREWARNING_INFO_NUM           = 4;                // 最大热成像着火点报警信息个数
+    public static final int MAX_AXLE_NUM                       = 8;                // 最大车轴数量
+    public static final int MAX_ACCESSDOOR_NUM                 = 128;              // 最大门数量
+    public static final int MAX_SIMILARITY_COUNT			   = 1024;			   // 最大人脸对比库阈值个数
+    public static final int MAX_FEATURESTATE_NUM		       = 4;				   // 最大人脸组建模状态个数
+
+    public static final int NET_MAX_BULLET_HOLES               = 10;               // 最大的弹孔数
+
+    public static final int MAX_NTP_SERVER                     = 4;                // 最大备用NTP服务器地址
+    public static final int MAX_PLATE_NUM                      = 64;               // 每张图片中包含的最大车牌个数
+    public static final int MAX_PREVIEW_CHANNEL_NUM            = 64;               // 最大导播预览的通道数量
+    public static final int MAX_ADDRESS_LEN                    = 256;              // 最大的地址长度
+    public static final int MAX_DNS_SERVER_NUM                 = 2;                // DNS最大数量
+    public static final int MAX_NETWORK_INTERFACE_NUM          = 32;               // 最大网卡数量
+
+    public static final int MAX_EVENT_RESTORE_UUID			   = 36;			   // 事件重传uuid数组大小
+    public static final int MAX_EVENT_RESTORE_CODE_NUM         = 8;			       // 最大事件重传类型个数
+    public static final int MAX_EVENT_RESOTER_CODE_TYPE	       = 32;			   // 事件重传类型数组大小
+    public static final int MAX_SNAP_TYPE                      = 3;                // 抓图类型数量
+    public static final int MAX_MAINFORMAT_NUM                 = 4;                // 最大支持主码流类型数量
+
+    public static final int CUSTOM_TITLE_LEN				   = 1024;			   // 自定义标题名称长度(扩充到1024)
+    public static final int MAX_CUSTOM_TITLE_NUM    		   = 8;                // 编码物件自定义标题最大数量
+    public static final int FORMAT_TYPE_LEN					   = 16;			   // 编码类型名最大长度
+
+    public static final int MAX_CHANNEL_NAME_LEN			   = 256;     		   // 通道名称最大长度
+
+    public static final int MAX_VIRTUALINFO_DOMAIN_LEN		   = 64;			   // 虚拟身份上网域名长度
+    public static final int MAX_VIRTUALINFO_TITLE_LEN		   = 64;			   // 虚拟身份上网标题长度
+    public static final int MAX_VIRTUALINFO_USERNAME_LEN	   = 32;			   // 虚拟身份用户名长度
+    public static final int MAX_VIRTUALINFO_PASSWORD_LEN	   = 32;			   // 虚拟身份密码长度
+    public static final int MAX_VIRTUALINFO_PHONENUM_LEN	   = 12;			   // 虚拟身份手机号长度
+    public static final int MAX_VIRTUALINFO_IMEI_LEN	       = 16;			   // 虚拟身份国际移动设备标识长度
+    public static final int MAX_VIRTUALINFO_IMSI_LEN	       = 16;			   // 虚拟身份国际移动用户识别码长度
+    public static final int MAX_VIRTUALINFO_LATITUDE_LEN	   = 16;			   // 虚拟身份经度长度
+    public static final int MAX_VIRTUALINFO_LONGITUDE_LEN	   = 16;			   // 虚拟身份纬度长度
+    public static final int MAX_VIRTUALINFO_NUM				   = 1024;             // 最大虚拟身份信息个数
+    public static final int MAX_SCREENTIME_COUNT			   = 8;				   // 诱导屏最大开关屏时间个数
+    public static final int MAX_PLAYDATES_COUNT				   = 32;			   // 最大日期个数
+    public static final int MAX_ELEMENTS_COUNT				   = 8;				   // 诱导屏窗口支持的最大元素个数
+    public static final int MAX_ELEMENTTEXT_LENGTH			   = 512;			   // 文本元素最大文本长度
+    public static final int MAX_NOTE_COUNT					   = 4;				   // 诱导屏窗口元素注释信息最大个数
+    public static final int MAX_PROGRAMMES_COUNT			   = 32;			   // 最多支持的节目个数
+    public static final int MAX_CALL_ID_LEN					   = 64;			   // 呼叫ID长度
+    public static final int MAX_GD_COUNT					   = 170;
+    public static final int MAX_SUNTIME_COUNT				   = 12;    		   // 日出日落时间个数
+    public static final int MAX_DOOR_TIME_SECTION			   = 4;				   // 门禁每天分时时间段最大个数
+    public static final int MAX_SCADA_POINT_LIST_INDEX     	   = 8;    			   // 最大SCADADev配置下标个数, 即最大通道
+    public static final int MAX_SCADA_YX_NUM               	   = 128;  			   // 最大遥信个数
+    public static final int MAX_SCADA_YC_NUM               	   = 128;  			   // 最大遥测个数
+    public static final int MAX_SCADA_POINT_INFO_NUM       	   = 8;    			   // 最大点表个数
+    public static final int MAX_NET_SCADA_CAPS_TYPE        	   = 16;
+    public static final int MAX_NET_SCADA_CAPS_NAME        	   = 16;
+    public static final int MAX_SCADA_ID_NUM               	   = 1024;  		   // 监测点位id的最大个数
+    public static final int MAX_SCADA_ID_OF_SENSOR_NUM     	   = 128;  			   // 最大检测点位ID个数
+
+    public static final int MAX_REMOTEDEVICEINFO_IPADDR_LEN    = 128;      		   // 远程设备IP地址最大长度
+    public static final int MAX_REMOTEDEVICEINFO_USERNAME_LEN  = 128;              // 远程设备用户名最大长度
+    public static final int MAX_REMOTEDEVICEINFO_USERPSW_LENGTH = 128;             // 远程设备密码最大长度
+
+    public static final int MAX_MANUFACTURER_LEN               = 32;               // 最大的 MAC地址所属制造商长度
+    public static final int MAX_MACHISTORY_SSID_LEN            = 24;               // 最大的历史SSID长度
+    public static final int MAX_MACHISTORY_SSID_NUM	           = 5;	               // 历史SSID的最大个数
+
+    public static final int CFG_MAX_SN_LEN					   = 32;			   // 最大设备序列号长度
+    public static final int CFG_MAX_ACCESS_CONTROL_ADDRESS_LEN = 64;			   // 最大的地址长度
+
+    public static final int MAX_MACADDR_NUM					   = 8;				   // 最大物理地址个数
+    public static final int MAX_ADD_DEVICE_NUM                 = 16;               // 最大添加设备个数
+    public static final int MAX_LINK_DEVICE_NUM                = 1024;             // 最大连接设备个数
+    public static final int MAX_DEVICE_CHANNEL_NUM             = 1024;             // 设备最大通道个数
+    public static final int NET_CFG_MAX_CTRLTYPE_NUM     	   = 16;               // 最大道闸控制方式
+    public static final int NET_MAX_ALL_SNAP_CAR_COUNT	  	   = 32;			   // 所有车开闸种类个数
+    public static final int NET_MAX_BURNING_DEV_NUM			   = 32;			   // 最大刻录设备个数
+    public static final int NET_BURNING_DEV_NAMELEN			   = 32;			   // 刻录设备名字最大长度
+    public static final int PTZ_PRESET_NAME_LEN				   = 64;			   // 云台预置点名称长度
+    public static final int NET_RADIOMETRY_DOFIND_MAX		   = 32;			   // 热成像温度统计最大个数
+    public static final int CFG_MAX_PTZTOUR_NUM          	   = 64;          	   // 巡航路径数量
+    public static final int CFG_MAX_PTZTOUR_PRESET_NUM   	   = 64;          	   // 巡航路径包含的预置点数量
+    public static final int MAX_PTZ_PRESET_NAME_LEN		 	   = 64;               // 云台预置点名称长度
+    public static final int MAX_COMPANY_NAME_LEN			   = 200;              // 单位名称最大长度
+    public static final int NET_MAX_PLAYAUDIO_COUNT        	   = 16;   			   // 最大播报内容数目
+    public static final int MAX_TARGET_OBJECT_NUM          	   = 100;  			   // 最大目标物体信息个数
+    public static final int MAX_CROWD_DETECTION_NAME_LEN	   = 128;			   // 最大人群密度检测事件名称长度
+    public static final int MAX_CROWD_LIST_NUM				   = 5;				   // 最大全局拥挤人群密度列表个数
+    public static final int MAX_REGION_LIST_NUM			       = 8;				   // 最大人数超限的报警区域ID列表个数
+    public static final int MAX_CROWD_RECT_LIST                = 5;                // 矩形描述信息的最大个数
+    public static final int RECT_POINT                         = 2;              // 表示矩形的2个点(左上角与右下角)
+
+    public static final int MAX_OBJECT_NUM					   = 32;			// 最大物体个数
+    // 查询类型,对应CLIENT_QueryDevState接口
+    public static final int NET_DEVSTATE_COMM_ALARM            = 0x0001;           // 查询普通报警状态(包括外部报警,视频丢失,动态检测)
+    public static final int NET_DEVSTATE_SHELTER_ALARM         = 0x0002;           // 查询遮挡报警状态
+    public static final int NET_DEVSTATE_RECORDING             = 0x0003;           // 查询录象状态
+    public static final int NET_DEVSTATE_DISK                  = 0x0004;           // 查询硬盘信息
+    public static final int NET_DEVSTATE_RESOURCE              = 0x0005;           // 查询系统资源状态
+    public static final int NET_DEVSTATE_BITRATE               = 0x0006;           // 查询通道码流
+    public static final int NET_DEVSTATE_CONN                  = 0x0007;           // 查询设备连接状态
+    public static final int NET_DEVSTATE_PROTOCAL_VER          = 0x0008;           // 查询网络协议版本号,pBuf = int*
+    public static final int NET_DEVSTATE_TALK_ECTYPE           = 0x0009;           // 查询设备支持的语音对讲格式列表,见结构体NETDEV_TALKFORMAT_LIST
+    public static final int NET_DEVSTATE_SD_CARD               = 0x000A;           // 查询SD卡信息(IPC类产品)
+    public static final int NET_DEVSTATE_BURNING_DEV           = 0x000B;           // 查询刻录机信息,见结构体NET_BURNING_DEVINFO
+    public static final int NET_DEVSTATE_BURNING_PROGRESS      = 0x000C;           // 查询刻录进度
+    public static final int NET_DEVSTATE_PLATFORM              = 0x000D;           // 查询设备支持的接入平台
+    public static final int NET_DEVSTATE_CAMERA                = 0x000E;           // 查询摄像头属性信息(IPC类产品),pBuf = NETDEV_CAMERA_INFO *,可以有多个结构体
+    public static final int NET_DEVSTATE_SOFTWARE              = 0x000F;           // 查询设备软件版本信息  NETDEV_VERSION_INFO
+    public static final int NET_DEVSTATE_LANGUAGE              = 0x0010;           // 查询设备支持的语音种类
+    public static final int NET_DEVSTATE_DSP                   = 0x0011;           // 查询DSP能力描述(对应结构体NET_DEV_DSP_ENCODECAP)
+    public static final int NET_DEVSTATE_OEM                   = 0x0012;           // 查询OEM信息
+    public static final int NET_DEVSTATE_NET                   = 0x0013;           // 查询网络运行状态信息
+    public static final int NET_DEVSTATE_TYPE                  = 0x0014;           // 查询设备类型
+    public static final int NET_DEVSTATE_SNAP                  = 0x0015;           // 查询功能属性(IPC类产品)
+    public static final int NET_DEVSTATE_RECORD_TIME           = 0x0016;           // 查询最早录像时间和最近录像时间
+    public static final int NET_DEVSTATE_NET_RSSI              = 0x0017;           // 查询无线网络信号强度,见结构体NETDEV_WIRELESS_RSS_INFO
+    public static final int NET_DEVSTATE_BURNING_ATTACH        = 0x0018;           // 查询附件刻录选项
+    public static final int NET_DEVSTATE_BACKUP_DEV            = 0x0019;           // 查询备份设备列表
+    public static final int NET_DEVSTATE_BACKUP_DEV_INFO       = 0x001a;           // 查询备份设备详细信息 NETDEV_BACKUP_INFO
+    public static final int NET_DEVSTATE_BACKUP_FEEDBACK       = 0x001b;           // 备份进度反馈
+    public static final int NET_DEVSTATE_ATM_QUERY_TRADE       = 0x001c;           // 查询ATM交易类型
+    public static final int NET_DEVSTATE_SIP                   = 0x001d;           // 查询sip状态
+    public static final int NET_DEVSTATE_VICHILE_STATE         = 0x001e;           // 查询车载wifi状态
+    public static final int NET_DEVSTATE_TEST_EMAIL            = 0x001f;           // 查询邮件配置是否成功
+    public static final int NET_DEVSTATE_SMART_HARD_DISK       = 0x0020;           // 查询硬盘smart信息 ,(见结构体 DHDEV_SMART_HARDDISK)
+    public static final int NET_DEVSTATE_TEST_SNAPPICTURE      = 0x0021;           // 查询抓图设置是否成功
+    public static final int NET_DEVSTATE_STATIC_ALARM          = 0x0022;           // 查询静态报警状态
+    public static final int NET_DEVSTATE_SUBMODULE_INFO        = 0x0023;           // 查询设备子模块信息
+    public static final int NET_DEVSTATE_DISKDAMAGE            = 0x0024;           // 查询硬盘坏道能力
+    public static final int NET_DEVSTATE_IPC                   = 0x0025;           // 查询设备支持的IPC能力, 见结构体NET_DEV_IPC_INFO
+    public static final int NET_DEVSTATE_ALARM_ARM_DISARM      = 0x0026;           // 查询报警布撤防状态
+    public static final int NET_DEVSTATE_ACC_POWEROFF_ALARM    = 0x0027;           // 查询ACC断电报警状态(返回一个DWORD, 1表示断电,0表示通电)
+    public static final int NET_DEVSTATE_TEST_FTP_SERVER       = 0x0028;           // 测试FTP服务器连接
+    public static final int NET_DEVSTATE_3GFLOW_EXCEED         = 0x0029;           // 查询3G流量超出阈值状态,(见结构体 NETDEV_3GFLOW_EXCEED_STATE_INFO)
+    public static final int NET_DEVSTATE_3GFLOW_INFO           = 0x002a;           // 查询3G网络流量信息,见结构体 NET_DEV_3GFLOW_INFO
+    public static final int NET_DEVSTATE_VIHICLE_INFO_UPLOAD   = 0x002b;           // 车载自定义信息上传(见结构体 ALARM_VEHICLE_INFO_UPLOAD)
+    public static final int NET_DEVSTATE_SPEED_LIMIT           = 0x002c;           // 查询限速报警状态(见结构体ALARM_SPEED_LIMIT)
+    public static final int NET_DEVSTATE_DSP_EX                = 0x002d;           // 查询DSP扩展能力描述(对应结构体 NET_DEV_DSP_ENCODECAP_EX)
+    public static final int NET_DEVSTATE_3GMODULE_INFO         = 0x002e;           // 查询3G模块信息(对应结构体NET_DEV_3GMODULE_INFO)
+    public static final int NET_DEVSTATE_MULTI_DDNS            = 0x002f;           // 查询多DDNS状态信息(对应结构体NET_DEV_MULTI_DDNS_INFO)
+    public static final int NET_DEVSTATE_CONFIG_URL            = 0x0030;           // 查询设备配置URL信息(对应结构体NET_DEV_URL_INFO)
+    public static final int NET_DEVSTATE_HARDKEY               = 0x0031;           // 查询HardKey状态(对应结构体NETDEV_HARDKEY_STATE)
+    public static final int NET_DEVSTATE_ISCSI_PATH            = 0x0032;           // 查询ISCSI路径列表(对应结构体NETDEV_ISCSI_PATHLIST)
+    public static final int NET_DEVSTATE_DLPREVIEW_SLIPT_CAP   = 0x0033;           // 查询设备本地预览支持的分割模式(对应结构体DEVICE_LOCALPREVIEW_SLIPT_CAP)
+    public static final int NET_DEVSTATE_WIFI_ROUTE_CAP        = 0x0034;           // 查询无线路由能力信息(对应结构体NETDEV_WIFI_ROUTE_CAP)
+    public static final int NET_DEVSTATE_ONLINE                = 0x0035;           // 查询设备的在线状态(返回一个DWORD, 1表示在线, 0表示断线)
+    public static final int NET_DEVSTATE_PTZ_LOCATION          = 0x0036;           // 查询云台状态信息(对应结构体 NET_PTZ_LOCATION_INFO)
+    public static final int NET_DEVSTATE_MONITOR_INFO          = 0x0037;           // 画面监控辅助信息(对应结构体NETDEV_MONITOR_INFO)
+    public static final int NET_DEVSTATE_SUBDEVICE             = 0x0300;           // 查询子设备(电源, 风扇等)状态(对应结构体CFG_DEVICESTATUS_INFO)
+    public static final int NET_DEVSTATE_RAID_INFO             = 0x0038;           // 查询RAID状态(对应结构体ALARM_RAID_INFO)
+    public static final int NET_DEVSTATE_TEST_DDNSDOMAIN       = 0x0039;           // 测试DDNS域名是否可用
+    public static final int NET_DEVSTATE_VIRTUALCAMERA         = 0x003a;           // 查询虚拟摄像头状态(对应 NETDEV_VIRTUALCAMERA_STATE_INFO)
+    public static final int NET_DEVSTATE_TRAFFICWORKSTATE      = 0x003b;           // 获取设备工作视频/线圈模式状态等(对应NETDEV_TRAFFICWORKSTATE_INFO)
+    public static final int NET_DEVSTATE_ALARM_CAMERA_MOVE     = 0x003c;           // 获取摄像机移位报警事件状态(对应ALARM_CAMERA_MOVE_INFO)
+    public static final int NET_DEVSTATE_ALARM                 = 0x003e;           // 获取外部报警状态(对应 NET_CLIENT_ALARM_STATE)
+    public static final int NET_DEVSTATE_VIDEOLOST             = 0x003f;           // 获取视频丢失报警状态(对应 NET_CLIENT_VIDEOLOST_STATE)
+    public static final int NET_DEVSTATE_MOTIONDETECT          = 0x0040;           // 获取动态监测报警状态(对应 NET_CLIENT_MOTIONDETECT_STATE)
+    public static final int NET_DEVSTATE_DETAILEDMOTION        = 0x0041;           // 获取详细的动态监测报警状态(对应 NET_CLIENT_DETAILEDMOTION_STATE)
+    public static final int NET_DEVSTATE_VEHICLE_INFO          = 0x0042;           // 获取车载自身各种硬件信息(对应 NETDEV_VEHICLE_INFO)
+    public static final int NET_DEVSTATE_VIDEOBLIND            = 0x0043;           // 获取视频遮挡报警状态(对应 NET_CLIENT_VIDEOBLIND_STATE)
+    public static final int NET_DEVSTATE_3GSTATE_INFO          = 0x0044;           // 查询3G模块相关信息(对应结构体NETDEV_VEHICLE_3GMODULE)
+    public static final int NET_DEVSTATE_NETINTERFACE          = 0x0045;           // 查询网络接口信息(对应 NETDEV_NETINTERFACE_INFO)
+
+    public static final int NET_DEVSTATE_PICINPIC_CHN          = 0x0046;           // 查询画中画通道号(对应DWORD数组)
+    public static final int NET_DEVSTATE_COMPOSITE_CHN         = 0x0047;           // 查询融合屏通道信息(对应 NET_COMPOSITE_CHANNEL数组)
+    public static final int NET_DEVSTATE_WHOLE_RECORDING       = 0x0048;           // 查询设备整体录像状态(对应BOOL), 只要有一个通道在录像,即为设备整体状态为录像
+    public static final int NET_DEVSTATE_WHOLE_ENCODING        = 0x0049;           // 查询设备整体编码状态(对应BOOL), 只要有一个通道在编码,即为设备整体状态为编码
+    public static final int NET_DEVSTATE_DISK_RECORDE_TIME     = 0x004a;           // 查询设备硬盘录像时间信息(pBuf = DEV_DISK_RECORD_TIME*,可以有多个结构体)
+    public static final int NET_DEVSTATE_BURNER_DOOR           = 0x004b;           // 是否已弹出刻录机光驱门(对应结构体 NET_DEVSTATE_BURNERDOOR)
+    public static final int NET_DEVSTATE_GET_DATA_CHECK        = 0x004c;           // 查询光盘数据校验进度(对应 NET_DEVSTATE_DATA_CHECK)
+    public static final int NET_DEVSTATE_ALARM_IN_CHANNEL      = 0x004f;           // 查询报警输入通道信息(对应NET_ALARM_IN_CHANNEL数组)
+    public static final int NET_DEVSTATE_ALARM_CHN_COUNT       = 0x0050;           // 查询报警通道数(对应NET_ALARM_CHANNEL_COUNT)
+    public static final int NET_DEVSTATE_PTZ_VIEW_RANGE        = 0x0051;           // 查询云台可视域状态(对应 NET_OUT_PTZ_VIEW_RANGE_STATUS	)
+    public static final int NET_DEVSTATE_DEV_CHN_COUNT         = 0x0052;           // 查询设备通道信息(对应NET_DEV_CHN_COUNT_INFO)
+    public static final int NET_DEVSTATE_RTSP_URL              = 0x0053;           // 查询设备支持的RTSP URL列表,见结构体DEV_RTSPURL_LIST
+    public static final int NET_DEVSTATE_LIMIT_LOGIN_TIME      = 0x0054;           // 查询设备登录的在线超时时间,返回一个BTYE,(单位:分钟) ,0表示不限制,非零正整数表示限制的分钟数
+    public static final int NET_DEVSTATE_GET_COMM_COUNT        = 0x0055;           // 获取串口数 见结构体NET_GET_COMM_COUNT
+    public static final int NET_DEVSTATE_RECORDING_DETAIL      = 0x0056;           // 查询录象状态详细信息(pBuf = NET_RECORD_STATE_DETAIL*)
+    public static final int NET_DEVSTATE_PTZ_PRESET_LIST       = 0x0057;           // 获取当前云台的预置点列表(对应结构NET_PTZ_PRESET_LIST)
+    public static final int NET_DEVSTATE_EXTERNAL_DEVICE       = 0x0058;           // 外接设备信息(pBuf = NET_EXTERNAL_DEVICE*)
+    public static final int NET_DEVSTATE_GET_UPGRADE_STATE     = 0x0059;           // 获取设备升级状态(对应结构 NETDEV_UPGRADE_STATE_INFO)
+    public static final int NET_DEVSTATE_MULTIPLAYBACK_SPLIT_CAP = 0x005a;         // 获取多通道预览分割能力( 对应结构体 NET_MULTIPLAYBACK_SPLIT_CAP )
+    public static final int NET_DEVSTATE_BURN_SESSION_NUM      = 0x005b;           // 获取刻录会话总数(pBuf = int*)
+    public static final int NET_DEVSTATE_PROTECTIVE_CAPSULE    = 0X005c;           // 查询防护舱状态(对应结构体ALARM_PROTECTIVE_CAPSULE_INFO)
+    public static final int NET_DEVSTATE_GET_DOORWORK_MODE     = 0X005d;           // 获取门锁控制模式( 对应 NET_GET_DOORWORK_MODE)
+    public static final int NET_DEVSTATE_PTZ_ZOOM_INFO         = 0x005e;           // 查询云台获取光学变倍信息(对应 NET_OUT_PTZ_ZOOM_INFO )
+
+    public static final int NET_DEVSTATE_POWER_STATE           = 0x0152;           // 查询电源状态(对应结构体NET_POWER_STATUS)
+    public static final int NET_DEVSTATE_ALL_ALARM_CHANNELS_STATE  = 0x153;        // 查询报警通道状态(对应结构体 NET_CLIENT_ALARM_CHANNELS_STATE)
+    public static final int NET_DEVSTATE_ALARMKEYBOARD_COUNT   = 0x0154;           // 查询串口上连接的报警键盘数(对应结构体NET_ALARMKEYBOARD_COUNT)
+    public static final int NET_DEVSTATE_EXALARMCHANNELS       = 0x0155;           // 查询扩展报警模块通道映射关系(对应结构体 NET_EXALARMCHANNELS)
+    public static final int NET_DEVSTATE_GET_BYPASS            = 0x0156;           // 查询通道旁路状态(对应结构体 NET_DEVSTATE_GET_BYPASS)
+    public static final int NET_DEVSTATE_ACTIVATEDDEFENCEAREA  = 0x0157;           // 获取激活的防区信息(对应结构体 NET_ACTIVATEDDEFENCEAREA)
+    public static final int NET_DEVSTATE_DEV_RECORDSET         = 0x0158;           // 查询设备记录集信息(对应 NET_CTRL_RECORDSET_PARAM)
+    public static final int NET_DEVSTATE_DOOR_STATE            = 0x0159;           // 查询门禁状态(对应NET_DOOR_STATUS_INFO)
+    public static final int NET_DEVSTATE_ANALOGALARM_CHANNELS  = 0x1560;           // 模拟量报警输入通道映射关系(对应NET_ANALOGALARM_CHANNELS)
+    public static final int NET_DEVSTATE_GET_SENSORLIST        = 0x1561;           // 获取设备支持的传感器列表(对应 NET_SENSOR_LIST)
+    public static final int NET_DEVSTATE_ALARM_CHANNELS        = 0x1562;           // 查询开关量报警模块通道映射关系(对应结构体 NET_ALARM_CHANNELS)
+    // 如果设备不支持查询扩展报警模块通道,可以用该功能查询扩展通道的逻辑通道号,并当做本地报警通道使用
+    public static final int NET_DEVSTATE_GET_ALARM_SUBSYSTEM_ACTIVATESTATUS = 0x1563;  // 获取当前子系统启用状态( 对应 NET_GET_ALARM_SUBSYSTEM_ACTIVATE_STATUES)
+    public static final int NET_DEVSTATE_AIRCONDITION_STATE    = 0x1564;           // 获取空调工作状态(对应 NET_GET_AIRCONDITION_STATE)
+    public static final int NET_DEVSTATE_ALARMSUBSYSTEM_STATE  = 0x1565;           // 获取子系统状态(对应NET_ALARM_SUBSYSTEM_STATE)
+    public static final int NET_DEVSTATE_ALARM_FAULT_STATE     = 0x1566;           // 获取故障状态(对应 NET_ALARM_FAULT_STATE_INFO)
+    public static final int NET_DEVSTATE_DEFENCE_STATE         = 0x1567;           // 获取防区状态(对应 NET_DEFENCE_STATE_INFO, 和旁路状态变化事件、本地报警事件、报警信号源事件的状态描述有区别,不能混用,仅个别设备使用)
+    public static final int NET_DEVSTATE_CLUSTER_STATE         = 0x1568;           // 获取集群状态(对应 NET_CLUSTER_STATE_INFO)
+    public static final int NET_DEVSTATE_SCADA_POINT_LIST      = 0x1569;           // 获取点位表路径信息(对应 NET_SCADA_POINT_LIST_INFO)
+    public static final int NET_DEVSTATE_SCADA_INFO            = 0x156a;           // 获取监测点位信息(对应 NET_SCADA_INFO)
+    public static final int NET_DEVSTATE_SCADA_CAPS            = 0X156b;           // 获取SCADA能力集(对应 NET_SCADA_CAPS)
+    public static final int NET_DEVSTATE_GET_CODEID_COUNT      = 0x156c;           // 获取对码成功的总条数(对应 NET_GET_CODEID_COUNT)
+    public static final int NET_DEVSTATE_GET_CODEID_LIST       = 0x156d;           // 查询对码信息(对应 NET_GET_CODEID_LIST)
+    public static final int NET_DEVSTATE_ANALOGALARM_DATA      = 0x156e;           // 查询模拟量通道数据(对应 NET_GET_ANALOGALARM_DATA)
+    public static final int NET_DEVSTATE_VTP_CALLSTATE         = 0x156f;           // 获取视频电话呼叫状态(对应 NET_GET_VTP_CALLSTATE)
+    public static final int NET_DEVSTATE_SCADA_INFO_BY_ID      = 0x1570;           // 通过设备、获取监测点位信息(对应 NET_SCADA_INFO_BY_ID)
+    public static final int NET_DEVSTATE_SCADA_DEVICE_LIST     = 0x1571;           // 获取当前主机所接入的外部设备ID(对应 NET_SCADA_DEVICE_LIST)
+    public static final int NET_DEVSTATE_DEV_RECORDSET_EX      = 0x1572;           // 查询设备记录集信息(带二进制数据)(对应NET_CTRL_RECORDSET_PARAM)
+    public static final int NET_DEVSTATE_ACCESS_LOCK_VER       = 0x1573;           // 获取门锁软件版本号(对应 NET_ACCESS_LOCK_VER)
+    public static final int NET_DEVSTATE_MONITORWALL_TVINFO    = 0x1574;           // 获取电视墙显示信息(对应 NET_CTRL_MONITORWALL_TVINFO)
+    public static final int NET_DEVSTATE_GET_ALL_POS           = 0x1575;           // 获取所有用户可用Pos设备配置信息(对应 NET_POS_ALL_INFO)
+    public static final int NET_DEVSTATE_GET_ROAD_LIST         = 0x1576;           // 获取城市及路段编码信息(对应 NET_ROAD_LIST_INFO)
+    public static final int NET_DEVSTATE_GET_HEAT_MAP          = 0x1577;           // 获取热度统计信息(对应 NET_QUERY_HEAT_MAP)
+    public static final int NET_DEVSTATE_GET_WORK_STATE        = 0x1578;           // 获取盒子工作状态信息(对应 NET_QUERY_WORK_STATE )
+    public static final int NET_DEVSTATE_GET_WIRESSLESS_STATE  = 0x1579;           // 获取无线设备状态信息(对应 NET_GET_WIRELESS_DEVICE_STATE)
+    public static final int NET_DEVSTATE_GET_REDUNDANCE_POWER_INFO = 0x157a;       // 获取冗余电源信息(对应 NET_GET_REDUNDANCE_POWER_INFO)
+    public static final int NET_DEVSTATE_GET_ACCESSORY_INFO	   =0x157e;		   // 获取配件信息(对应 NET_GET_ACCESSORY_INFO)
+
+    // 查询设备信息类型, 对应接口 CLIENT_QueryDevInfo
+    // 设备信息类型,对应CLIENT_QueryDevInfo接口
+    public static final int NET_QUERY_DEV_STORAGE_NAMES                 = 0x01;                // 查询设备的存储模块名列表 , pInBuf=NET_IN_STORAGE_DEV_NAMES *, pOutBuf=NET_OUT_STORAGE_DEV_NAMES *
+    public static final int NET_QUERY_DEV_STORAGE_INFOS                 = 0x02;                // 查询设备的存储模块信息列表, pInBuf=NET_IN_STORAGE_DEV_INFOS*, pOutBuf= NET_OUT_STORAGE_DEV_INFOS *
+    public static final int NET_QUERY_RECENCY_JNNCTION_CAR_INFO         = 0x03;                // 查询最近的卡口车辆信息接口, pInBuf=NET_IN_GET_RECENCY_JUNCTION_CAR_INFO*, pOutBuf=NET_OUT_GET_RECENCY_JUNCTION_CAR_INFO*
+    public static final int NET_QUERY_LANES_STATE                       = 0x04;                // 查询车道信息,pInBuf = NET_IN_GET_LANES_STATE , pOutBuf = NET_OUT_GET_LANES_STATE
+    public static final int NET_QUERY_DEV_FISHEYE_WININFO               = 0x05;                // 查询鱼眼窗口信息 , pInBuf= NET_IN_FISHEYE_WININFO*, pOutBuf=NET_OUT_FISHEYE_WININFO *
+    public static final int NET_QUERY_DEV_REMOTE_DEVICE_INFO            = 0x06;;               // 查询远程设备信息 , pInBuf= NET_IN_GET_DEVICE_INFO*, pOutBuf= NET_OUT_GET_DEVICE_INFO *
+    public static final int NET_QUERY_SYSTEM_INFO                       = 0x07;                // 查询设备系统信息 , pInBuf= NET_IN_SYSTEM_INFO*, pOutBuf= NET_OUT_SYSTEM_INFO*
+    public static final int NET_QUERY_REG_DEVICE_NET_INFO               = 0x08;                // 查询主动注册设备的网络连接 , pInBuf=NET_IN_REGDEV_NET_INFO * , pOutBuf=NET_OUT_REGDEV_NET_INFO *
+    public static final int NET_QUERY_DEV_THERMO_GRAPHY_PRESET          = 0x09;                // 查询热成像预设信息 , pInBuf= NET_IN_THERMO_GET_PRESETINFO*, pOutBuf= NET_OUT_THERMO_GET_PRESETINFO *
+    public static final int NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION       = 0x0a;                // 查询热成像感兴趣区域信息,pInBuf= NET_IN_THERMO_GET_OPTREGION*, pOutBuf= NET_OUT_THERMO_GET_OPTREGION *
+    public static final int NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO      = 0x0b;                // 查询热成像外部系统信息, pInBuf= NET_IN_THERMO_GET_EXTSYSINFO*, pOutBuf= NET_OUT_THERMO_GET_EXTSYSINFO *
+    public static final int NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER       = 0x0c;                // 查询测温点的参数值, pInBuf= NET_IN_RADIOMETRY_GETPOINTTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETPOINTTEMPER *
+    public static final int NET_QUERY_DEV_RADIOMETRY_TEMPER             = 0x0d;                // 查询测温项的参数值, pInBuf= NET_IN_RADIOMETRY_GETTEMPER*, pOutBuf= NET_OUT_RADIOMETRY_GETTEMPER *
+    public static final int NET_QUERY_GET_CAMERA_STATE                  = 0x0e;                // 获取摄像机状态, pInBuf= NET_IN_GET_CAMERA_STATEINFO*, pOutBuf= NET_OUT_GET_CAMERA_STATEINFO *
+    public static final int NET_QUERY_GET_REMOTE_CHANNEL_AUDIO_ENCODE   = 0x0f;                // 获取远程通道音频编码方式, pInBuf= NET_IN_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO*, pOutBuf= NET_OUT_GET_REMOTE_CHANNEL_AUDIO_ENCODEINFO *
+    public static final int NET_QUERY_GET_COMM_PORT_INFO                = 0x10;                // 获取设备串口信息, pInBuf=NET_IN_GET_COMM_PORT_INFO* , pOutBuf=NET_OUT_GET_COMM_PORT_INFO*
+    public static final int NET_QUERY_GET_LINKCHANNELS                  = 0x11;                // 查询某视频通道的关联通道列表,pInBuf=NET_IN_GET_LINKCHANNELS* , pOutBuf=NET_OUT_GET_LINKCHANNELS*
+    public static final int NET_QUERY_GET_VIDEOOUTPUTCHANNELS           = 0x12;                // 获取解码通道数量统计信息, pInBuf=NET_IN_GET_VIDEOOUTPUTCHANNELS*, pOutBuf=NET_OUT_GET_VIDEOOUTPUTCHANNELS*
+    public static final int NET_QUERY_GET_VIDEOINFO                     = 0x13;                // 获取解码通道信息, pInBuf=NET_IN_GET_VIDEOINFO*, pOutBuf=NET_OUT_GET_VIDEOINFO*
+    public static final int NET_QUERY_GET_ALLLINKCHANNELS               = 0x14;                // 查询全部视频关联通道列表,pInBuf=NET_IN_GET_ALLLINKCHANNELS* , pOutBuf=NET_OUT_GET_ALLLINKCHANNELS*
+    public static final int NET_QUERY_VIDEOCHANNELSINFO                 = 0x15;                // 查询视频通道信息,pInBuf=NET_IN_GET_VIDEOCHANNELSINFO* , pOutBuf=NET_OUT_GET_VIDEOCHANNELSINFO*
+    public static final int NET_QUERY_TRAFFICRADAR_VERSION              = 0x16;                // 查询雷达设备版本,pInBuf=NET_IN_TRAFFICRADAR_VERSION* , pOutBuf=NET_OUT_TRAFFICRADAR_VERSION*
+    public static final int NET_QUERY_WORKGROUP_NAMES                   = 0x17;                // 查询所有的工作目录组名,pInBuf=NET_IN_WORKGROUP_NAMES* , pOutBuf=NET_OUT_WORKGROUP_NAMES*
+    public static final int NET_QUERY_WORKGROUP_INFO                    = 0x18;                // 查询工作组信息,pInBuf=NET_IN_WORKGROUP_INFO* , pOutBuf=NET_OUT_WORKGROUP_INFO*
+    public static final int NET_QUERY_WLAN_ACCESSPOINT                  = 0x19;                // 查询无线网络接入点信息,pInBuf=NET_IN_WLAN_ACCESSPOINT* , pOutBuf=NET_OUT_WLAN_ACCESSPOINT*
+    public static final int NET_QUERY_GPS_INFO							= 0x1a;				   // 查询设备GPS信息,pInBuf=NET_IN_DEV_GPS_INFO* , pOutBuf=NET_OUT_DEV_GPS_INFO*
+    public static final int NET_QUERY_IVS_REMOTE_DEVICE_INFO            = 0x1b;                // 查询IVS的前端设备所关联的远程设备信息, pInBuf = NET_IN_IVS_REMOTE_DEV_INFO*, pOutBuf = NET_OUT_IVS_REMOTE_DEV_INFO*
+    public static final int NET_QUERY_VIDEO_ENCODE_CAPS					= 0x1e;				   // 获取视频编码能力集, pInBuf = NET_IN_VIDEO_ENCODE_CAPS*, pOutBuf = NET_OUT_VIDEO_ENCODE_CAPS* 
+    public static final int NET_ACCESSCONTROL_CAPS                      = 0x20;                // 获取门禁能力, pInBuf = NET_IN_AC_CAPS*, pOutBuf = NET_OUT_AC_CAPS*
+    public static final int NET_QUERY_HARDDISK_TEMPERATURE				= 0x22;				   // 获取硬盘温度,pInBuf = NET_IN_HDD_TEMPERATURE*, pOutBuf = NET_OUT_HDD_TEMPERATURE*
+    public static final int NET_QUERY_AUDIO_DECODE_CAPS					= 0x25;				   // 获取音频解码能力集, pInBuf = NET_IN_AUDIO_DECODE_CAPS*, pOutBuf = NET_OUT_AUDIO_DECODE_CAPS*
+    public static final int NET_QUERY_REMOTE_DEVICE_CAPS                = 0x27;                // 获取远程设备管理能力集, pInBuf = NET_IN_REMOTEDEVICE_CAP*, pOutBuf= NET_OUT_REMOTEDEVICE_CAP
+    public static final int NET_QUERY_TRAFFIC_SNAP_RADAR                = 0x28;                // 获取智能交通雷达信息, pInfo = NET_IN_TRAFFIC_SNAP_RADAR_INFO*,  pOutBuf = NET_OUT_TRAFFIC_SNAP_RADAR_INFO*
+    public static final int NET_QUERY_TRAFFIC_SNAP_STROBE               = 0x29;                // 获取智能交通道闸信息, pInfo = NET_IN_TRAFFIC_SNAP_STROBE_INFO*, pOutBuf = NET_OUT_TRAFFIC_SNAP_STROBE_INFO*
+    public static final int NET_QUERY_PTZ_CURRENT_FOV_VALUE				= 0x36;				   // 获取镜头当前倍率下水平视场角参数,pInBuf = NET_IN_PTZ_CURRENT_FOV_VALUE*,pOutBuf = NET_OUT_PTZ_CURRENT_FOV_VALUE* 
+    public static final int NET_QUERY_DEV_IO_STATS                      = 0x37;                // 获取所有存储设备的io信息参数,pInBuf = NET_IN_DEV_IO_STATS*,pOutBuf = NET_OUT_DEV_IO_STAT*
+    public static final int NET_QUERY_PTZBASE_GET_HFOV_VALUE			= 0x39;				   // 获取镜头不同倍率下水平视场角参数,pInBuf = NET_IN_PTZBASE_GET_HFOV_VALUE*,pOutBuf = NET_OUT_PTZBASE_GET_HFOV_VALUE*
+    public static final int NET_QUERY_PTZBASE_GET_CENTER_GPS			= 0x3a;				   // 获取中心位置GPS信息,pInBuf = NET_IN_PTZBASE_GET_CENTER_GPS*,pOutBuf = NET_OUT_PTZBASE_GET_CENTER_GPS*
+    public static final int NET_QUERY_PTZBASE_GET_VFOV_VALUE			= 0x3f;				   // 获取镜头不同倍率下垂直视场角参数,pInBuf = NET_IN_PTZBASE_GET_VFOV_VALUE*,pOutBuf = NET_OUT_PTZBASE_GET_VFOV_VALUE*
+
+    // 设备能力类型, 对应CLIENT_GetDevCaps接口
+    public static final int NET_THERMO_GRAPHY_CAPS                 		= 0x06;                // 热成像摄像头属性能力,pInBuf=NET_IN_THERMO_GETCAPS*, pOutBuf=NET_OUT_THERMO_GETCAPS*
+    public static final int NET_RADIOMETRY_CAPS                 		= 0x07;                // 热成像测温全局配置能力,pInBuf=NET_IN_RADIOMETRY_GETCAPS*, pOutBuf=NET_OUT_RADIOMETRY_GETCAPS*
+
+    public static final int NET_QUERY_TRAFFIC_RADAR_GET_OBJECT		    = 0x35;			        // 获取雷达物体目标信息,pInBuf = NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO*,pOutBuf = NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO*
+
+    /////////////////////////////////// 矩阵 ///////////////////////////////////////
+
+    public static final int NET_MATRIX_INTERFACE_LEN          			= 16;          // 信号接口名称长度
+    public static final int NET_MATRIX_MAX_CARDS             			= 128;         // 矩阵子卡最大数量
+    public static final int NET_SPLIT_PIP_BASE               			= 1000;        // 分割模式画中画的基础值
+    public static final int NET_MAX_SPLIT_MODE_NUM           			= 64;          // 最大分割模式数
+    public static final int NET_MATRIX_MAX_CHANNEL_IN        			= 1500;        // 矩阵最大输入通道数
+    public static final int NET_MATRIX_MAX_CHANNEL_OUT       			= 256;         // 矩阵最大输出通道数
+    public static final int NET_DEVICE_NAME_LEN              			= 64;          // 设备名称长度
+    public static final int NET_MAX_CPU_NUM                  			= 16;          // 最大CPU数量
+    public static final int NET_MAX_FAN_NUM                  			= 16;          // 最大风扇数量
+    public static final int NET_MAX_POWER_NUM                			= 16;          // 最大电源数量
+    public static final int NET_MAX_BATTERY_NUM              			= 16;          // 最大电池数量
+    public static final int NET_MAX_RAID_DEVICE_NAME                   = 16;          // RAID异常信息-RAID设备名称
+    public static final int NET_MAX_TEMPERATURE_NUM          			= 256;         // 最大温度传感器数量
+    public static final int NET_MAX_ISCSI_NAME_LEN           			= 128;         // ISCSI名称长度
+    public static final int NET_VERSION_LEN                  			= 64;          // 版本信息长度
+    public static final int NET_MAX_STORAGE_PARTITION_NUM    			= 32;          // 存储分区最大数量
+    public static final int NET_STORAGE_MOUNT_LEN            			= 64;          // 挂载点长度
+    public static final int NET_STORAGE_FILE_SYSTEM_LEN      			= 16;          // 文件系统名称长度
+    public static final int NET_MAX_MEMBER_PER_RAID          			= 32;          // RAID成员最大数量
+    public static final int NET_DEV_ID_LEN_EX                			= 128;         // 设备ID最大长度
+    public static final int NET_MAX_BLOCK_NUM                			= 32;          // 最大区块数量
+    public static final int NET_MAX_SPLIT_WINDOW             			= 128;         // 最大分割窗口数量
+    public static final int NET_FILE_TYPE_LEN                			= 64;          // 文件类型长度
+    public static final int NET_DEV_ID_LEN                  			= 128;         // 设备ID最大长度
+    public static final int NET_DEV_NAME_LEN                 			= 128;         // 设备名称最大长度
+    public static final int NET_TSCHE_DAY_NUM                			= 8;           // 时间表第一维大小, 表示天数
+    public static final int NET_TSCHE_SEC_NUM                			= 6;           // 时间表第二维大小, 表示时段数
+    public static final int NET_SPLIT_INPUT_NUM              			= 256;         // 设备二级切换时第一级split支持的输入通道数
+
+    public static final String NET_DEVICE_ID_LOCAL               		= "Local";     // 本地设备ID
+    public static final String NET_DEVICE_ID_REMOTE              		= "Remote";    // 远程设备ID
+    public static final String NET_DEVICE_ID_UNIQUE             		= "Unique";    // 设备内统一编
+
+    public static final String NET_DIAGNOSIS_DITHER                     = "VideoDitherDetection";                       // 视频抖动检测 对应结构体(NET_VIDEO_DITHER_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_STRIATION                  = "VideoStriationDetection";                    // 视频条纹检测 对应结构体(NET_VIDEO_STRIATION_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_LOSS                       = "VideoLossDetection";                         // 视频丢失检测 对应结构体(NET_VIDEO_LOSS_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_COVER                      ="VideoCoverDetection";                        // 视频遮挡检测 对应结构体(NET_VIDEO_COVER_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_FROZEN                     = "VideoFrozenDetection";                       // 视频冻结检测 对应结构体(NET_VIDEO_FROZEN_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_BRIGHTNESS                 ="VideoBrightnessDetection";                   // 视频亮度异常检测 对应结构体(NET_VIDEO_BRIGHTNESS_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_CONTRAST                   ="VideoContrastDetection";                     // 视频对比度异常检测 对应结构体(NET_VIDEO_CONTRAST_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_UNBALANCE                  ="VideoUnbalanceDetection";                    // 视频偏色检测 对应结构体(NET_VIDEO_UNBALANCE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_NOISE                      ="VideoNoiseDetection";                        // 视频噪声检测 对应结构体(NET_VIDEO_NOISE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_BLUR                       ="VideoBlurDetection";                         // 视频模糊检测 对应结构体(NET_VIDEO_BLUR_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_SCENECHANGE                ="VideoSceneChangeDetection";                  // 视频场景变化检测 对应结构体(NET_VIDEO_SCENECHANGE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_VIDEO_DELAY                ="VideoDelay";                                 // 视频延时检测 对应结构体(NET_VIDEO_DELAY_DETECTIONRESUL)
+    public static final String NET_DIAGNOSIS_PTZ_MOVING                 ="PTZMoving";                                  // 云台移动检测 对应结构体(NET_PTZ_MOVING_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_BLACK_WHITE				="VideoBlackAndWhite";						 // 黑白图像检测, 对应结构体(NET_BLACK_WHITE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_DRAMATIC_CHANGE			="VideoDramaticChange";						 // 场景剧变检测, 对应结构体(NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_VIDEO_AVAILABILITY	        ="VideoAvailability";						     // 视频完好率监测, 对应结构体(NET_VIDEO_AVAILABILITY_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_SNOWFLAKE                  ="SnowflakeDetection";                         // 雪花屏检测, 对应结构体(NET_VIDEO_SNOWFLAKE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_VIDEO_ALGORITHMTYPE		="VideoAlgorithmType";						 // 视频算法类型检测,对应结构体(NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT)
+    public static final String NET_DIAGNOSIS_VIDEO_FILCKERING_DETECTION	="VideoFilckeringDetection";			// 视频闪频检测, 对应结构体(NET_VIDEO_FILCKERING_DETECTION_RESULT)
+    public static final String NET_DIAGNOSIS_VIDEO_LOSS_FRAME_DETECTION	="VideoLossFrameDetection";			// 视频丢帧检测, 对应结构体(NET_VIDEO_LOSS_FRAME_DETECTION_RESULT)
+
+     //其他定义
+    public static final int NET_MAX_NAME_LEN                    = 16;   // 通用名字字符串长度
+    public static final int NET_MAX_PERSON_ID_LEN               = 32;   // 人员id最大长度
+    public static final int NET_MAX_PERSON_IMAGE_NUM            = 48;   // 每个人员对应的最大人脸图片数
+    public static final int NET_MAX_PROVINCE_NAME_LEN           = 64;   // 省份名称最大长度
+    public static final int NET_MAX_CITY_NAME_LEN               = 64;   // 城市名称最大长度
+    public static final int NET_MAX_PERSON_NAME_LEN             = 64;   // 人员名字最大长度
+    public static final int MAX_FACE_AREA_NUM                   = 8;    // 最大人脸区域个数
+    public static final int MAX_PATH                            = 260;
+    public static final int MAX_FACE_DB_NUM                     = 8;    // 最大人脸数据库个数
+    public static final int MAX_GOURP_NUM                       = 128;  // 人脸库最大个数
+    public static final int MAX_AGE_NUM						    = 2;	// 最大年龄个数
+    public static final int MAX_EMOTION_NUM					    = 8;	// 最大表情条件的个数
+
+    public static final int MAX_FIND_COUNT                      = 20;
+    public static final int NET_MAX_POLYGON_NUM                 = 16;   // 多边形最大顶点个数
+    public static final int NET_MAX_CANDIDATE_NUM               = 50;   // 目标识别最大匹配数
+    public static final int MAX_POLYGON_NUM                     = 20;   // 视频分析设备区域顶点个数上限
+    public static final int MAX_CALIBRATEBOX_NUM                = 10;   // 智能分析校准框个数上限
+    public static final int MAX_NAME_LEN                        = 128;  // 通用名字字符串长度
+    public static final int MAX_EXCLUDEREGION_NUM               = 10;   // 智能分析检测区域中需要排除的区域个数上限
+    public static final int MAX_SCENE_LIST_SIZE                 = 32;   // 视频分析设备支持的场景类型列表个数上限
+    public static final int MAX_OBJECT_LIST_SIZE                = 16;   // 视频分析设备支持的检测物体类型列表个数上限
+    public static final int MAX_RULE_LIST_SIZE                  = 128;  // 视频分析设备支持的规则列表个数上限
+    public static final int MAX_ACTION_LIST_SIZE                = 16;   // 视频分析设备支持的规则的动作类型列表个数上限
+    public static final int MAX_SPECIALDETECT_NUM               = 10;   // 智能分析特殊检测区域上限
+    public static final int MAX_OBJECT_ATTRIBUTES_SIZE          = 16;   // 视频分析设备支持的检测物体属性类型列表个数上限
+    public static final int MAX_CATEGORY_TYPE_NUMBER            = 128;  // 子类别类型数
+    public static final int MAX_ANALYSE_MODULE_NUM              = 16;   // 视频分析设备最大检测模块个数
+    public static final int MAX_LOG_PATH_LEN                    = 260;  // 日志路径名最大长度
+    public static final int MAX_CHANNELNAME_LEN                 = 64;   // 最大通道名称长度
+    public static final int MAX_VIDEO_CHANNEL_NUM               = 256;  // 最大通道数256
+    public static final int MAX_PSTN_SERVER_NUM                 = 8;    // 最大报警电话服务器数
+    public static final int MAX_TIME_SCHEDULE_NUM               = 8;    // 时间表元素个数
+    public static final int MAX_REC_TSECT                       = 6;    // 录像时间段个数
+    public static final int MAX_REC_TSECT_EX                    = 10;   // 录像时间段扩展个数
+    public static final int MAX_NAS_TIME_SECTION                = 2;    // 网络存储时间段个数
+    public static final int MAX_CHANNEL_COUNT                   = 16;
+    public static final int MAX_ACCESSCONTROL_NUM               = 8;    // 最大门禁操作的组合数
+    public static final int MAX_DBKEY_NUM                       = 64;   // 数据库关键字最大值
+    public static final int MAX_SUMMARY_LEN                     = 1024; // 叠加到JPEG图片的摘要信息最大长度
+    public static final int WEEK_DAY_NUM                        = 7;    // 一周的天数
+    public static final int NET_MAX_FACEDETECT_FEATURE_NUM      = 32;   // 人脸特征最大个数
+    public static final int NET_MAX_OBJECT_LIST                 = 16;   // 智能分析设备检测到的物体ID个数上限
+    public static final int NET_MAX_RULE_LIST                   = 16;   // 智能分析设备规则个数上限
+    public static final int MAX_HUMANFACE_LIST_SIZE             = 8;    // 视频分析设备支持的目标检测类型列表个数上限
+    public static final int MAX_FEATURE_LIST_SIZE				= 32;	// 视频分析设备支持的人脸属性列表个数上限
+    public static final int NET_MAX_DETECT_REGION_NUM           = 20;   // 规则检测区域最大顶点数
+    public static final int NET_MAX_DETECT_LINE_NUM             = 20;   // 规则检测线最大顶点数
+    public static final int NET_MAX_TRACK_LINE_NUM              = 20;   // 物体运动轨迹最大顶点数
+    public static final int NET_MACADDR_LEN                     = 40;   // MAC地址字符串长度
+    public static final int NET_DEV_TYPE_LEN                    = 32;   // 设备型号字符串(如"IPC-F725")长度
+    public static final int NET_DEV_SERIALNO_LEN                = 48;   // 序列号字符串长度
+    public static final int NET_MAX_URL_LEN                     = 128;  // URL字符串长度
+    public static final int NET_MAX_STRING_LEN                  = 128;
+    public static final int NET_MACHINE_NAME_NUM                = 64;   // 机器名称长度
+    public static final int NET_USER_NAME_LENGTH_EX             = 16;   // 用户名长度
+    public static final int NET_USER_NAME_LENGTH                = 8;    // 用户名长度
+    public static final int NET_USER_PSW_LENGTH                 = 8;    // 用户密码长度
+    public static final int NET_EVENT_NAME_LEN                  = 128;  // 事件名称长度
+    public static final int NET_MAX_LANE_NUM                    = 8;    // 视频分析设备每个通道对应车道数上限
+    public static final int MAX_DRIVING_DIR_NUM                 = 16;   // 车道行驶方向最大个数
+    public static final int FLOWSTAT_ADDR_NAME                  = 16;   // 上下行地点名长
+    public static final int NET_MAX_DRIVINGDIRECTION            = 256;  // 行驶方向字符串长度
+    public static final int COMMON_SEAT_MAX_NUMBER              = 8;    // 默认检测最大座驾个数
+    public static final int NET_MAX_ATTACHMENT_NUM              = 8;    // 最大车辆物件数量
+    public static final int NET_MAX_ANNUUALINSPECTION_NUM       = 8;    // 最大年检标识位置
+    public static final int NET_MAX_EVENT_PIC_NUM				= 6;    // 最大原始图片张数
+    public static final int NET_COMMON_STRING_4                 = 4;    // 通用字符串长度4
+    public static final int NET_COMMON_STRING_8                 = 8;    // 通用字符串长度8
+    public static final int NET_COMMON_STRING_16                = 16;   // 通用字符串长度16
+    public static final int NET_COMMON_STRING_20                = 20;   // 通用字符串长度20
+    public static final int NET_COMMON_STRING_32                = 32;   // 通用字符串长度32
+    public static final int NET_COMMON_STRING_64                = 64;   // 通用字符串长度64
+    public static final int NET_COMMON_STRING_128               = 128;  // 通用字符串长度128
+    public static final int NET_COMMON_STRING_256               = 256;  // 通用字符串长度256
+    public static final int NET_COMMON_STRING_512               = 512;  // 通用字符串长度512
+    public static final int NET_COMMON_STRING_1024              = 1024; // 通用字符串长度1024
+    public static final int NET_COMMON_STRING_2048              = 2048; // 通用字符串长度2048
+    public static final int MAX_VIDEOSTREAM_NUM                 = 4;    // 最大码流个数
+    public static final int MAX_VIDEO_COVER_NUM                 = 16;   // 最大遮挡区域个数
+    public static final int MAX_VIDEO_IN_ZOOM                   = 32;   // 单通道最大变速配置个数
+    public static final int NET_EVENT_CARD_LEN                  = 36;   // 卡片名称长度
+    public static final int NET_EVENT_MAX_CARD_NUM              = 16;   // 事件上报信息包含最大卡片个数
+    public static final int MAX_STATUS_NUM                      = 16;   // 交通设备状态最大个数
+    public static final int NET_MAX_CHANMASK 					= 64;   // 通道掩码最大值
+    public static final int NET_CHAN_NAME_LEN                   = 32;   // 通道名长度,DVR DSP能力限制,最多32字节
+    public static final int MAX_LANE_NUM                        = 8;    // 视频分析设备每个通道对应车道数上限
+    public static final int MAX_STAFF_NUM                       = 20;   // 视频分析设备每个通道对应的标尺数上限
+    public static final int MAX_ANALYSE_RULE_NUM                = 32;   // 视频分析设备最大规则个数
+    public static final int MAX_POLYLINE_NUM                    = 20;   // 视频分析设备折线顶点个数上限
+    public static final int MAX_TEMPLATEREGION_NUM              = 32;   // 视频分析设备模拟区域信息点对个数上限
+    public static final int POINT_PAIR_NUM                      = 2;    // 视频分析设备模拟区域点对包含的点个数
+    public static final int MAX_VEHICLE_SIZE_LIST               = 4;    // 视频分析设备车辆大小个数上限
+    public static final int MAX_VEHICLE_TYPE_LIST               = 4;    // 视频分析设备车辆类型个数上限
+    public static final int MAX_PLATE_TYPE_LIST                 = 32;   // 视频分析设备车牌类型个数上限
+    public static final int MAX_CALIBRATEAREA_NUM               = 20;   // 视频分析设备标定区域的上限
+    public static final int MAX_ANALYSE_SCENE_NUM               = 32;   // 视频分析全局配置场景最大数量
+    public static final int MAX_PLATEHINT_NUM                   = 8;    // 车牌字符暗示个数上限
+    public static final int MAX_LIGHT_NUM                       = 8;    // 交通灯个数上限
+    public static final int MAX_LIGHTGROUP_NUM                  = 8;    // 交通灯组个数上限
+    public static final int MAX_LIGHT_TYPE                      = 8;    // 交通灯类型上限
+    public static final int MAX_PARKING_SPACE_NUM          		= 6;    // 最多配置6个车位信息
+    public static final int MAX_SHIELD_AREA_NUM            		= 16;   // 1个车位最多对应16个屏蔽区域
+    public static final int MAX_SCENE_TYPE_LIST_SIZE            = 8;    // 场景列表中最多支持的场景个数
+    public static final int MAX_LIGHT_DIRECTION                 = 8;    // 交通灯指示方向数上限
+    public static final int CFG_FLOWSTAT_ADDR_NAME			    = 16;	//上下行地点名长
+    public static final int MAX_ACCESS_READER_NUM               = 32;   // 门禁单个门最大读卡器数量
+    public static final int MAX_ACCESSSUBCONTROLLER_NUM         = 64;   // 最大门禁分控器数量
+    public static final int MAX_BACKPIC_COUNT					= 8;	// 最大背景图片个数
+    public static final int NET_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN = 32;// 无线设备序列号最大长度
+    public static final int NET_MAX_CUSTOM_PERSON_INFO_NUM		= 4;    // 注册人员信息扩展最大个数
+    public static final int NET_MAX_PERSON_INFO_LEN         	= 64;   // 人员扩展信息最大长度
+    public static final int MAX_ALARMEXT_MODULE_NUM        		= 256;  // 最大扩展模块数目
+    public static final int MAX_CALIBRATEAREA_TYPE_NUM          = 4;    // 标定区域类型上限
+    public static final int MAX_SCENE_SUBTYPE_LEN               = 64;   // 场景子类型字符串长度
+    public static final int MAX_SCENE_SUBTYPE_NUM               = 32;   // 场景子类型最大个数
+    public static final int	MAX_SUPPORTED_COMP_SIZE             = 4;    // 最大支持的场景组合项
+    public static final int	MAX_SUPPORTED_COMP_DATA             = 8;    // 每个组合项里最多支持的场景个数
+    public static final int MAX_NUMBER_STAT_MAULT_NUM			= 32;	// 最大客流量统计场景PD个数
+
+    public static final int NET_NEW_MAX_RIGHT_NUM               = 1024; // 用户权限个数上限
+    public static final int NET_MAX_GROUP_NUM                   = 20;   // 用户组个数上限
+    public static final int NET_MAX_USER_NUM                    = 200;  // 用户个数上限
+    public static final int NET_RIGHT_NAME_LENGTH               = 32;   // 权限名长度
+    public static final int NET_MEMO_LENGTH                     = 32;   // 备注长度
+    public static final int NET_NEW_USER_NAME_LENGTH            = 128;  // 用户名长度
+    public static final int NET_NEW_USER_PSW_LENGTH             = 128;  // 密码
+    public static final int NET_MAX_RIGHT_NUM                   = 100;  // 用户权限个数上限
+    public static final int NET_COMMENT_LENGTH					= 100;	// 备注信息长度
+    public static final int NET_GROUPID_LENGTH					= 64;	// group id 信息长度
+    public static final int NET_GROUPNAME_LENGTH				= 128;	// group name 信息长度
+    public static final int NET_FEATUREVALUE_LENGTH				= 128;	// 人脸特征 信息长度
+
+    public static final int	MAX_GROUP_ID_LEN					= 64;	// 最大布控组ID长度
+    public static final int	MAX_COLOR_NAME_LEN					= 32;	// 最大颜色名长度
+    public static final int	MAX_COLOR_HEX_LEN					= 8;	// 最大HEX颜色长度
+    public static final int	MAX_LINK_GROUP_NUM					= 20;	// 联动的布控组最大数量
+    public static final int MAX_PATH_LEN					    = 260;	// 最大路径长度
+    public static final int MAX_RIDER_NUM 						= 16;	// 骑车人数组上限
+    public static final int MAX_ALARM_CHANNEL_NAME_LEN		    = 64;   // 最大报警名称长度
+    public static final int MAX_ATTACHMENT_NUM				    = 8;	// 最大车内物品个数
+    public static final int NET_MAX_FRAMESEQUENCE_NUM				= 2;	// 最大帧序号个数
+    public static final int NET_MAX_TIMESTAMP_NUM					= 2;	// 最大时间戳个数
+    public static final int NET_VIDEOANALYSE_SCENES   			 = 32;		// 最大场景个数
+    public static final int NET_VIDEOANALYSE_RULES   			 = 64;		// 最大规则个数
+    public static final int SDK_EVENT_NAME_LEN                  = 128;        // 事件名称长度
+    // 支持用户名最大长度为8位或16位的设备,对应扩展接口CLIENT_QueryUserInfoEx和CLIENT_OperateUserInfoEx
+    public static final int NET_USER_PSW_LENGTH_EX       		= 16;   // 密码
+
+    public static final int AV_CFG_Device_ID_Len				= 64;   // 设备ID长度
+    public static final int AV_CFG_Channel_Name_Len             = 64;   // 通道名称长度
+    public static final int AV_CFG_Monitor_Name_Len				= 64;	// 电视墙名称长度
+    public static final int AV_CFG_Max_TV_In_Block				= 128;	// 区块中TV的最大数量
+    public static final int AV_CFG_Max_Block_In_Wall			= 128;	// 电视墙中区块的最大数量
+    public static final int AV_CFG_IP_Address_Len				= 32;   // IP 长度
+    public static final int AV_CFG_Protocol_Len 				= 32;   // 协议名长度
+    public static final int AV_CFG_User_Name_Len 				= 64;   // 用户名长度
+    public static final int	AV_CFG_Password_Len 				= 64;   // 密码长度
+    public static final int AV_CFG_Serial_Len					= 32;	// 序列号长度
+    public static final int AV_CFG_Device_Class_Len				= 16;   // 设备类型长度
+    public static final int AV_CFG_Device_Type_Len				= 32;	// 设备具体型号长度
+    public static final int AV_CFG_Device_Name_Len				= 128;	// 机器名称
+    public static final int AV_CFG_Address_Len					= 128;	// 机器部署地点
+    public static final int AV_CFG_Max_Path						= 260;	// 路径长度
+    public static final int AV_CFG_Group_Name_Len               = 64;   // 分组名称长度
+    public static final int AV_CFG_DeviceNo_Len                 = 32;   // 设备编号长度
+    public static final int AV_CFG_Group_Memo_Len               = 128;  // 分组说明长度
+    public static final int AV_CFG_Max_Channel_Num              = 1024; // 最大通道数量
+    public static final int MAX_DEVICE_NAME_LEN					= 64;   // 机器名称
+    public static final int MAX_DEV_ID_LEN_EX					= 128;  // 设备ID最大长度
+    public static final int MAX_PATH_STOR                       = 240;  // 远程目录的长度
+    public static final int	MAX_REMOTE_DEV_NUM       			= 256;  // 最大远程设备数量
+    public static final int NET_MAX_PLATE_NUMBER_LEN            = 32;   // 车牌字符长度
+    public static final int NET_MAX_AUTHORITY_LIST_NUM          = 16;   // 权限列表最大个数
+    public static final int NET_MAX_ALARMOUT_NUM_EX 			= 32;   //报警输出口个数上限扩展
+    public static final int NET_MAX_VIDEO_IN_NUM_EX 			= 32;   //视频输入口个数上限扩展
+    public static final int NET_MAX_SAERCH_IP_NUM               = 256;  // 最大搜索IP个数
+    public static final int NET_MAX_POS_MAC_NUM                 = 8;    // 刷卡机Mac码最大长度
+    public static final int NET_MAX_BUSCARD_NUM                 = 64;   // 公交卡号最大长度
+    public static final int NET_STORAGE_NAME_LEN                = 128;  // 存储设备名称长度
+
+    public static final int NET_MAX_DOOR_NUM               		= 32;   // 最大有权限门禁数目
+    public static final int NET_MAX_TIMESECTION_NUM        		= 32;   // 最大有效时间段数目
+    public static final int NET_MAX_CARDNAME_LEN           		= 64;   // 门禁卡命名最大长度
+    public static final int NET_MAX_CARDNO_LEN             		= 32;   // 门禁卡号最大长度
+    public static final int NET_MAX_USERID_LEN             		= 32;   // 门禁卡用户ID最大长度
+    public static final int NET_MAX_IC_LEN				  		= 32;	// 证件最大长度
+    public static final int NET_MAX_QRCODE_LEN			  		= 128;	// QRCode 最大长度
+    public static final int NET_MAX_CARD_INFO_LEN               = 256;  // 卡号信息最大长度
+    public static final int NET_MAX_SIM_LEN                     = 16;   // SIM卡的值的最大长度
+    public static final int NET_MAX_DISKNUM                     = 256;  // 最大硬盘个数
+    public static final int MAX_FACE_DATA_NUM                	= 20;   // 人脸模版最大个数
+    public static final int MAX_FINGERPRINT_NUM              	= 10;   // 最大信息个数
+    public static final int MAX_FACE_DATA_LEN                   = 2 * 1024; // 人脸模版数据最大长度
+    public static final int MAX_COMMON_STRING_8              	= 8;    // 通用字符串长度8
+    public static final int MAX_COMMON_STRING_16             	= 16;   // 通用字符串长度16
+    public static final int MAX_COMMON_STRING_32             	= 32;   // 通用字符串长度32
+    public static final int MAX_COMMON_STRING_64             	= 64;   // 通用字符串长度64
+    public static final int MAX_COMMON_STRING_128               = 128;  // 通用字符串长度128
+    public static final int MAX_USER_NAME_LEN                   = 128;  // 最大用户名长度
+    public static final int MAX_ROOMNUM_COUNT					= 32;	// 房间最大个数
+    public static final int MAX_FACE_COUTN						= 20;	// 人脸模板数据最大个数
+    public static final int MAX_PHOTO_COUNT                     = 5;    // 人脸照片最大个数
+    public static final int MAX_WINDOWS_COUNT					= 16;	// 诱导屏最大窗口个数
+    public static final int MAX_CLASS_NUMBER_LEN			    = 32;	// 最大班级长度
+    public static final int MAX_PHONENUMBER_LEN				    = 16;   // 最大电话长度
+    public static final int MAX_NASFILE_NUM                     = 8;    // 最大NAS文件个数
+    public static final int MAX_CELL_PHONE_NUMBER_LEN           = 32;   // 最大手机号长度
+    public static final int MAX_MAIL_LEN                        = 64;   // 邮箱最大长度
+    public static final int MAX_PWD_LEN                         = 128;  // 最大密码长度
+    public static final int MAX_ACCESS_FLOOR_NUM                = 64;   // 最大楼层数量
+    public static final int MAX_ORDER_NUMBER 					= 6;	// 排序规则的最大数量
+    public static final int MAX_NUMBER_REGISTER_INFO			= 32;
+    public static final int MAX_COMPANION_CARD_NUM              = 6;    // 陪同者卡号最大个数
+
+    public static final int CFG_COMMON_STRING_8                 = 8;    // 通用字符串长度8
+    public static final int CFG_COMMON_STRING_16                = 16;   // 通用字符串长度16
+    public static final int CFG_COMMON_STRING_32                = 32;   // 通用字符串长度32
+    public static final int CFG_COMMON_STRING_64                = 64;   // 通用字符串长度64
+    public static final int CFG_COMMON_STRING_128               = 128;  // 通用字符串长度128
+    public static final int CFG_COMMON_STRING_256               = 256;  // 通用字符串长度256
+    public static final int CFG_COMMON_STRING_512               = 512;  // 通用字符串长度512
+
+    public static final int MAX_COILCONFIG          			= 3;    // 智能交通车检器线圈配置上限
+    public static final int MAX_DETECTOR            			= 6;    // 智能交通车检器配置上限
+    public static final int MAX_VIOLATIONCODE					= 16;   // 智能交通违章代码长度上限
+    public static final int MAX_LANE_CONFIG_NUMBER              = 32;   // 车道最大个数
+    public static final int MAX_VIOLATIONCODE_DESCRIPT          = 64;   // 智能交通违章代码长度上限
+    public static final int MAX_ROADWAYNO           			= 128;  // 道路编号	由32个数字和字母构成
+    public static final int MAX_PRIORITY_NUMBER                 = 256;  // 违章优先级包含违章最大个数
+    public static final int MAX_DRIVINGDIRECTION          		= 256;  // 行驶方向字符串长度
+
+    public static final int MAX_OSD_CUSTOM_SORT_NUM       		= 8;
+    public static final int MAX_OSD_CUSTOM_SORT_ELEM_NUM  		= 8;
+    public static final int MAX_OSD_CUSTOM_GENERAL_NUM    		= 8;
+    public static final int MAX_OSD_ITEM_ATTR_NUM         		= 8;
+    public static final int MAX_PRE_POX_STR_LEN           		= 32;
+    public static final int MAX_OSD_CUSTOM_NAME_LEN       		= 32;
+    public static final int MAX_OSD_CUSTOM_VALUE_LEN      		= 256;
+    public static final int MAX_CONF_CHAR 						= 256;
+    public static final int MAX_IVS_EVENT_NUM    				= 256;
+    public static final int MAX_QUERY_USER_NUM   				= 4;    // 最大查询用户个数
+    public static final int MAX_DEVICE_ADDRESS      			= 256;  // TrafficSnapshot智能交通设备地址
+    public static final int MAX_STORAGE_NUM                 	= 8;    // 存储设备最大个数
+    public static final int MAX_PARTITION_NUM               	= 8;    // 最大分区个数
+    public static final int MAX_SCADA_POINT_LIST_INFO_NUM       = 256;  // 最大点位表路径个数
+    public static final int MAX_SCADA_POINT_LIST_ALARM_INFO_NUM = 256;  // 最大点位表报警个数
+    public static final int	MAX_LABEL_ARRAY						= 1024;
+
+    public static final int	MAX_DELIVERY_FILE_NUM  				= 128;  // 最大投放文件数量
+    public static final int	DELIVERY_FILE_URL_LEN  				= 128;  // 投放文件的URL长度
+
+    public static final int MAX_COMMON_STRING_512               = 512;  // 通用字符串长度512
+    public static final int	MAX_RFIDELETAG_CARDID_LEN		    = 16;	// RFID 电子车牌标签信息中卡号最大长度
+    public static final int	MAX_RFIDELETAG_DATE_LEN		 	    = 16;	// RFID 电子车牌标签信息中时间最大长度
+    public static final int MAX_REPEATENTERROUTE_NUM   			= 12;   //反潜路径个数
+    public static final int ECK_SCREEN_NUM_MAX                  = 8;    // 智能停车系统出入口机最大屏数量
+    public static final int MAX_CAR_CANDIDATE_NUM				= 50;
+    public static final int MAX_REGISTER_NUM                    = 10;   // 主动注册配置最大个数
+    public static final int MAX_SERVER_NUM                      = 10;   // 服务器最大个数
+    public static final int	NET_COUNTRY_LENGTH				    = 3;	// 国家缩写长度
+    public static final int	MAX_ATTENDANCE_USERNAME_LEN			= 36;	// 考勤用户名长度
+    public static final int	NET_MAX_FINGER_PRINT				= 10;	// 信息最大个数
+    public static final int	MAX_EVENT_ID_LEN					= 52;   // 国标事件ID最大长度
+    public static final int	MAX_HUMANTRAIT_EVENT_LEN			= 36; 	// 补充人体特征上报事件最大长度
+    public static final int MAX_EXIT_MAN_NUM					= 32;	// 最大支持的离开人员数量
+    public static final int NET_MAX_CALLTYPE_LIST_NUM           = 16;   // 呼叫类型查询条件列表最大个数
+    public static final int NET_MAX_ENDSTATE_LIST_NUM           = 16;   // 最终状态查询条件列表最大个数
+    public static final int MAX_CHAN_NUM						= 256;  // 最大通道数上限
+    public static final int AV_CFG_Max_ChannelRule				= 32;   // 通道存储规则最大长度, 仅通道部分
+    public static final int MAX_DEV_NUM							= 16;   // 最大设备上限
+    public static final int CFG_MAX_CHANNEL_NAME_LEN			= 256;  // 通道名称最大长度
+    public static final int HDBJ_MAX_OBJECTS_NUM 				= 200;  // 检测到目标的最大个数
+    public static final int NET_MAX_RAID_NUM  					= 16;	// Raid最大个数
+    public static final int MAX_PLATE_NUMBER_LEN           		= 64;   // 最大车牌号码长度
+    public static final int MAX_MASTER_OF_CAR_LEN          		= 32;   // 最大车主姓名长度
+    public static final int MAX_USER_TYPE_LEN              		= 32;   // 最大用户类型长度
+    public static final int MAX_SUB_USER_TYPE_LEN         		= 64;   // 最大用户子类型长度
+    public static final int MAX_REMARKS_LEN                		= 64;   // 最大备注信息长度
+    public static final int MAX_PARK_CHARGE_LEN            		= 32;   // 最大停车费长度
+    public static final int MAX_CUSTOM_LEN                 		= 128;  // 最大自定义显示长度
+    public static final int MAX_RESOURCE_LEN               		= 64;   // 最大资源文件长度
+    public static final int MAX_PARKINGLOCK_STATE_NUM      		= 6;    // 最大车位锁状态个数
+    public static final int MAX_SMALLPIC_NUM  					= 32;	// 最大小图张数
+    public static final int MAX_PASSWORD_LEN               		= 64;   // 最大密码长度
+    public static final int MAX_OSD_SUMMARY_LEN            		= 256;  // osd叠加内容最大长度
+    public static final int MAX_OSD_TITLE_LEN              		= 128;  // osd叠加标题最大长度
+    public static final int MAX_CUSTOMCASE_NUM             		= 16;   // 自定义案件最大个数
+    public static final int MAX_CARGO_CHANNEL_NUM          		= 8;    // 最大货物通道数
+    public static final int MAX_MAN_LIST_COUNT             		= 64;   // 人员列表最大数量
+    public static final int MAX_SNAP_SHOT_NUM              		= 8;    // 最大抓拍张数
+    public static final int MAX_TEMPERATUREEX_POINT_NUM		    = 12;	//最大监测温度点的个数
+
+    // 矩阵子卡类型, 多种类型可以组合
+    public static final int NET_MATRIX_CARD_MAIN                = 0x10000000;   // 主卡
+    public static final int NET_MATRIX_CARD_INPUT               = 0x00000001;   // 输入卡
+    public static final int NET_MATRIX_CARD_OUTPUT              = 0x00000002;   // 输出卡
+    public static final int NET_MATRIX_CARD_ENCODE              = 0x00000004;   // 编码卡
+    public static final int NET_MATRIX_CARD_DECODE              = 0x00000008;   // 解码卡
+    public static final int NET_MATRIX_CARD_CASCADE             = 0x00000010;   // 级联卡
+    public static final int NET_MATRIX_CARD_INTELLIGENT         = 0x00000020;   // 智能卡
+    public static final int NET_MATRIX_CARD_ALARM               = 0x00000040;   // 报警卡
+    public static final int NET_MATRIX_CARD_RAID                = 0x00000080;   // 硬Raid卡
+    public static final int NET_MATRIX_CARD_NET_DECODE          = 0x00000100;   // 网络解码卡
+
+    public static final int RESERVED_TYPE_FOR_INTEL_BOX 		= 0x00000001;
+    public static final int RESERVED_TYPE_FOR_COMMON   			= 0x00000010;
+    public static final int RESERVED_TYPE_FOR_PATH         		= 0x00000100;
+
+    public static final int NET_DATA_CALL_BACK_VALUE      		= 1000;       	// 配合EM_REAL_DATA_TYPE使用,码流转换后的数据回调函数(fRealDataCallBackEx,fDataCallBack)中的参数dwDataType的值
+    // 为所转换的码流类型加上NET_DATA_CALL_BACK_VALUE.
+    // 即,dwDataType = NET_DATA_CALL_BACK_VALUE + emDataType
+    // 在回调函数中接受码流转换后的数据,必须要先判断 dwDataType 的值是否为 NET_DATA_CALL_BACK_VALUE和emDataType之和
+    // 另,EM_REAL_DATA_TYPE_PRIVATE不用做此判断
+
+    public static final int DH_MAX_PERSON_INFO_LEN         = 64;      // 人员扩展信息最大长度
+
+    public static final int ARM_DISARM_ZONE_MAX         = 256;      // 防区最大个数
+    public static final int MAX_AREA_NUMBER		= 8;      //最大area数量
+    public static final int MAX_AREA_NUMBER_EX  = 64;     //最大area数量扩展
+
+    /**************************录像二次分析接口*************************/
+    public static final int MAX_SECONDARY_ANALYSE_TASK_NUM		= 32;  // 二次分析任务支持的最大个数
+    public static final int MAX_SECONDARY_ANALYSE_RULE_NUM		= 8;	  // 二次分析规则支持的最大个数
+    public static final int MAX_SECONDARY_ANALYSE_EVENT_NUM		= 8;	  // 二次分析事件支持的最大个数
+
+    /************************************************************************
+     ** 结构体
+     ***********************************************************************/
+    // 设置登入时的相关参数
+    public static class NET_PARAM  extends SdkStructure
+    {
+        public int                    nWaittime;                // 等待超时时间(毫秒为单位),为0默认5000ms
+        public int                    nConnectTime;            	// 连接超时时间(毫秒为单位),为0默认1500ms
+        public int                    nConnectTryNum;           // 连接尝试次数,为0默认1次
+        public int                    nSubConnectSpaceTime;    	// 子连接之间的等待时间(毫秒为单位),为0默认10ms
+        public int                    nGetDevInfoTime;        	// 获取设备信息超时时间,为0默认1000ms
+        public int                    nConnectBufSize;        	// 每个连接接收数据缓冲大小(字节为单位),为0默认250*1024
+        public int                    nGetConnInfoTime;         // 获取子连接信息超时时间(毫秒为单位),为0默认1000ms
+        public int                    nSearchRecordTime;      	// 按时间查询录像文件的超时时间(毫秒为单位),为0默认为3000ms
+        public int                    nsubDisconnetTime;      	// 检测子链接断线等待时间(毫秒为单位),为0默认为60000ms
+        public byte                   byNetType;                // 网络类型, 0-LAN, 1-WAN
+        public byte                   byPlaybackBufSize;      	// 回放数据接收缓冲大小(M为单位),为0默认为4M
+        public byte                   bDetectDisconnTime;       // 心跳检测断线时间(单位为秒),为0默认为60s,最小时间为2s
+        public byte                   bKeepLifeInterval;        // 心跳包发送间隔(单位为秒),为0默认为10s,最小间隔为2s
+        public int                    nPicBufSize;              // 实时图片接收缓冲大小(字节为单位),为0默认为2*1024*1024
+        public byte[]                 bReserved = new byte[4];  // 保留字段字段
+    }
+
+    // 设备设备参数
+    public static class NET_DEVICE_SEARCH_PARAM extends SdkStructure {
+
+        public int       	dwSize;						// 结构体大小
+        /**
+         * 是否使用默认配置,默认为TRUE
+         */
+        public int        	bUseDefault;
+        /**
+         * 广播本地端口, 默认5050, 值为0时使用最近一次配置
+         */
+        public short        wBroadcastLocalPort;
+        /**
+         * 广播远程端口, 默认5050, 值为0时使用最近一次配置
+         */
+        public short        wBroadcastRemotePort;
+        /**
+         * 组播远程端口, 默认37810, 值为0时使用最近一次配置
+         */
+        public short        wMulticastRemotePort;
+        /**
+         * 组播修改设备时是否只支持组播回复,默认FALSE表示单播或组播回复
+         */
+        public int        	bMulticastModifyRespond;
+        /**
+         * 组播本地端口, 默认37810, 值为0时使用最近一次配置
+         */
+        public short        wMulticastLocalPort;
+        /**
+         * 端口不可用时自动更新端口次数,默认50次,范围[0-65534]
+         */
+        public int			iAutoUpdatePortTimes;
+        /**
+         * AOL 组播远程端口, 默认8087, 值为0时使用最近一次配置
+         */
+        public short        wAOLMulticastRemotePort;
+        /**
+         * AOL 组播本地端口, 默认37811, 值为0时使用最近一次配置
+         */
+        public short        wAOLMulticastLocalPort;
+
+        public NET_DEVICE_SEARCH_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备信息
+    public static class NET_DEVICEINFO extends SdkStructure {
+        public byte[]              sSerialNumber = new byte[NET_SERIALNO_LEN];    // 序列号
+        public byte                byAlarmInPortNum;         // DVR报警输入个数
+        public byte                byAlarmOutPortNum;        // DVR报警输出个数
+        public byte                byDiskNum;                // DVR硬盘个数
+        public byte                byDVRType;                // DVR类型, 见枚举NET_DEV_DEVICE_TYPE
+        public union 			   union = new union();
+        public static class union extends Union {
+            public byte                byChanNum;                // DVR通道个数
+            public byte                byLeftLogTimes;           // 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效
+        }
+    }
+
+    // 设备信息扩展///////////////////////////////////////////////////
+    public static class NET_DEVICEINFO_Ex extends SdkStructure {
+        public byte[]     sSerialNumber = new byte[NET_SERIALNO_LEN];    // 序列号
+        public int        byAlarmInPortNum;                              // DVR报警输入个数
+        public int        byAlarmOutPortNum;                             // DVR报警输出个数
+        public int        byDiskNum;                                     // DVR硬盘个数
+        public int        byDVRType;                                     // DVR类型,见枚举NET_DEVICE_TYPE
+        public int        byChanNum;                                     // DVR通道个数
+        public byte       byLimitLoginTime;                              // 在线超时时间,为0表示不限制登陆,非0表示限制的分钟数
+        public byte       byLeftLogTimes;                                // 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效
+        public byte[]     bReserved = new byte[2];                       // 保留字节,字节对齐
+        public int        byLockLeftTime;                                // 当登陆失败,用户解锁剩余时间(秒数), -1表示设备未设置该参数
+        public byte[]     Reserved = new byte[24];                       // 保留
+    }
+
+    // 对应接口 CLIENT_LoginEx2/////////////////////////////////////////////////////////
+    public static class EM_LOGIN_SPAC_CAP_TYPE extends SdkStructure {
+        public static final int EM_LOGIN_SPEC_CAP_TCP               = 0;    // TCP登陆, 默认方式
+        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;    // 组播登陆
+        public static final int	EM_LOGIN_SPEC_CAP_UDP               = 4;    // UDP方式下的登入
+        public static final int	EM_LOGIN_SPEC_CAP_MAIN_CONN_ONLY    = 6;    // 只建主连接下的登入
+        public static final int	EM_LOGIN_SPEC_CAP_SSL               = 7;    // SSL加密方式登陆
+
+        public static final int	EM_LOGIN_SPEC_CAP_INTELLIGENT_BOX   = 9;    // 登录智能盒远程设备
+        public static final int	EM_LOGIN_SPEC_CAP_NO_CONFIG         = 10;   // 登录设备后不做取配置操作
+        public static final int EM_LOGIN_SPEC_CAP_U_LOGIN           = 11;   // 用U盾设备的登入
+        public static final int	EM_LOGIN_SPEC_CAP_LDAP              = 12;   // LDAP方式登录
+        public static final int EM_LOGIN_SPEC_CAP_AD                = 13;   // AD(ActiveDirectory)登录方式
+        public static final int EM_LOGIN_SPEC_CAP_RADIUS            = 14;   // Radius 登录方式
+        public static final int EM_LOGIN_SPEC_CAP_SOCKET_5          = 15;   // Socks5登陆方式
+        public static final int EM_LOGIN_SPEC_CAP_CLOUD             = 16;   // 云登陆方式
+        public static final int EM_LOGIN_SPEC_CAP_AUTH_TWICE        = 17;   // 二次鉴权登陆方式
+        public static final int EM_LOGIN_SPEC_CAP_TS                = 18;   // TS码流客户端登陆方式
+        public static final int	EM_LOGIN_SPEC_CAP_P2P               = 19;   // 为P2P登陆方式
+        public static final int	EM_LOGIN_SPEC_CAP_MOBILE            = 20;   // 手机客户端登陆
+    }
+
+    // 时间
+    public static class NET_TIME extends SdkStructure {
+        public int                dwYear;                   // 年
+        public int                dwMonth;                  // 月
+        public int                dwDay;                    // 日
+        public int                dwHour;                   // 时
+        public int                dwMinute;                 // 分
+        public int                dwSecond;                 // 秒
+
+        public NET_TIME() {
+            this.dwYear = 0;
+            this.dwMonth = 0;
+            this.dwDay = 0;
+            this.dwHour = 0;
+            this.dwMinute = 0;
+            this.dwSecond = 0;
+        }
+
+        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;
+        }
+
+        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 String toStringTime() {
+            return  String.format("%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+
+        public String toStringTimeEx() {
+            return  String.format("%02d-%02d-%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+
+        public String toString() {
+            return String.format("%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+    }
+
+    public static class NET_TIME_EX extends SdkStructure
+    {
+        public int                dwYear;                    // 年
+        public int                dwMonth;                   // 月
+        public int                dwDay;                     // 日
+        public int                dwHour;                    // 时
+        public int                dwMinute;                  // 分
+        public int                dwSecond;                  // 秒
+        public int                dwMillisecond;             // 毫秒
+        public int                dwUTC;             		 // utc时间(获取时0表示无效,非0有效   下发无效)
+        public int[]              dwReserved = new int[1];   // 保留字段
+
+        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;
+            this.dwMillisecond = 0;
+        }
+
+        public String toString() {
+            return dwYear + "/" + dwMonth + "/" + dwDay + " " + dwHour + ":" + dwMinute + ":" + dwSecond;
+        }
+
+        //用于列表中显示
+        public String toStringTime()
+        {
+            return  String.format("%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+
+        //存储文件名使用
+        public String toStringTitle()
+        {
+            return  String.format("Time_%02d%02d%02d_%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+        }
+    }
+
+    // 区域
+    public static class  NET_CFG_Rect extends SdkStructure
+    {
+        public int            nStructSize;
+        public int            nLeft;
+        public int            nTop;
+        public int            nRight;
+        public int            nBottom;
+
+        public NET_CFG_Rect()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 颜色
+    public static class  NET_CFG_Color extends SdkStructure
+    {
+        public int            nStructSize;
+        public int            nRed;                            		// 红
+        public int            nGreen;                            	// 绿
+        public int            nBlue;                            	// 蓝
+        public int            nAlpha;                            	// 透明
+
+        public NET_CFG_Color()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 编码物件-通道标题
+    public static class  NET_CFG_VideoWidgetChannelTitle extends SdkStructure
+    {
+        public int                nStructSize;
+        public int            	  bEncodeBlend;                    // 叠加到主码流, 类型为BOOL, 取值0或者1
+        public int            	  bEncodeBlendExtra1;              // 叠加到辅码流1, 类型为BOOL, 取值0或者1
+        public int                bEncodeBlendExtra2;              // 叠加到辅码流2, 类型为BOOL, 取值0或者1
+        public int            	  bEncodeBlendExtra3;              // 叠加到辅码流3, 类型为BOOL, 取值0或者1
+        public int            	  bEncodeBlendSnapshot;            // 叠加到抓图, 类型为BOOL, 取值0或者1
+        public NET_CFG_Color      stuFrontColor = new NET_CFG_Color();    // 前景色
+        public NET_CFG_Color      stuBackColor = new NET_CFG_Color();    // 背景色
+        public NET_CFG_Rect       stuRect = new NET_CFG_Rect();        // 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public int            bPreviewBlend;                    // 叠加到预览视频, 类型为BOOL, 取值0或者1
+
+        public NET_CFG_VideoWidgetChannelTitle()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 编码物件-时间标题
+    public static class  NET_CFG_VideoWidgetTimeTitle extends SdkStructure
+    {
+        public int                nStructSize;
+        public int            bEncodeBlend;                        // 叠加到主码流, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra1;                    // 叠加到辅码流1, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra2;                    // 叠加到辅码流2, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra3;                    // 叠加到辅码流3, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendSnapshot;                // 叠加到抓图, 类型为BOOL, 取值0或者1
+        public NET_CFG_Color        stuFrontColor = new NET_CFG_Color();    // 前景色
+        public NET_CFG_Color        stuBackColor = new NET_CFG_Color();    // 背景色
+        public NET_CFG_Rect        stuRect = new NET_CFG_Rect();        // 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public int            bShowWeek;                            // 是否显示星期, 类型为BOOL, 取值0或者1
+        public int            bPreviewBlend;                        // 叠加到预览视频, 类型为BOOL, 取值0或者1
+
+        public NET_CFG_VideoWidgetTimeTitle()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 编码物件-区域覆盖配置
+    public static class  NET_CFG_VideoWidgetCover extends SdkStructure
+    {
+        public int                nStructSize;
+        public int            bEncodeBlend;                    // 叠加到主码流, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra1;                // 叠加到辅码流1, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra2;                // 叠加到辅码流2, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra3;                // 叠加到辅码流3, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendSnapshot;            // 叠加到抓图, 类型为BOOL, 取值0或者1
+        public NET_CFG_Color        stuFrontColor = new NET_CFG_Color();        // 前景色
+        public NET_CFG_Color        stuBackColor = new NET_CFG_Color();        // 背景色
+        public NET_CFG_Rect        stuRect = new NET_CFG_Rect();            // 区域, 坐标取值0~8191
+        public int            bPreviewBlend;                    // 叠加到预览视频, 类型为BOOL, 取值0或者1
+
+        public NET_CFG_VideoWidgetCover()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    public class EM_TITLE_TEXT_ALIGN
+    {
+        public static final int EM_TEXT_ALIGN_INVALID         = 0;     // 无效的对齐方式
+        public static final int EM_TEXT_ALIGN_LEFT            = 1;       // 左对齐
+        public static final int EM_TEXT_ALIGN_XCENTER        = 2;    // X坐标中对齐
+        public static final int EM_TEXT_ALIGN_YCENTER        = 3;    // Y坐标中对齐
+        public static final int EM_TEXT_ALIGN_CENTER        = 4;      // 居中
+        public static final int EM_TEXT_ALIGN_RIGHT            = 5;       // 右对齐
+        public static final int EM_TEXT_ALIGN_TOP            = 6;       // 按照顶部对齐
+        public static final int EM_TEXT_ALIGN_BOTTOM        = 7;     // 按照底部对齐
+        public static final int EM_TEXT_ALIGN_LEFTTOP        = 8;    // 按照左上角对齐
+        public static final int EM_TEXT_ALIGN_CHANGELINE    = 9;      // 换行对齐
+    }
+
+    // 编码物件-自定义标题
+    public static class  NET_CFG_VideoWidgetCustomTitle extends SdkStructure
+    {
+        public int                nStructSize;
+        public int            bEncodeBlend;                        // 叠加到主码流, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra1;                    // 叠加到辅码流1, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra2;                    // 叠加到辅码流2, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendExtra3;                    // 叠加到辅码流3, 类型为BOOL, 取值0或者1
+        public int            bEncodeBlendSnapshot;                // 叠加到抓图, 类型为BOOL, 取值0或者1
+        public NET_CFG_Color        stuFrontColor = new NET_CFG_Color();    // 前景色
+        public NET_CFG_Color        stuBackColor = new NET_CFG_Color();    // 背景色
+        public NET_CFG_Rect        stuRect = new NET_CFG_Rect();        // 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public byte[]            szText = new byte[NET_CFG_Custom_Title_Len];// 标题内容
+        public int            bPreviewBlend;                    // 叠加到预览视频, 类型为BOOL, 取值0或者1
+        public byte[]           szType = new byte[NET_CFG_Custom_TitleType_Len];// 标题类型 "Rtinfo" 实时刻录信息 "Custom" 自定义叠加、温湿度叠加 "Title" :片头信息 "Check"  校验码
+        // 地理信息 "Geography"  ATM卡号信息 "ATMCardInfo" 摄像机编号 "CameraID"
+        public int                  emTextAlign;                    // 标题对齐方式 (参见EM_TITLE_TEXT_ALIGN)
+        public int				bUpdate;						// 是否需要设备端更新叠加内容 true:更新  false:不更新, 类型为BOOL, 取值0或者1
+
+        public NET_CFG_VideoWidgetCustomTitle()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    //  编码物件-叠加传感器信息-叠加内容描述
+    public static class  NET_CFG_VideoWidgetSensorInfo_Description extends SdkStructure
+    {
+        public int            nStructSize;
+        public int            nSensorID;                        // 需要描述的传感器的ID(即模拟量报警通道号)
+        public byte[]         szDevID =  new byte[CFG_COMMON_STRING_32];  // 设备ID
+        public byte[]         szPointID = new byte[CFG_COMMON_STRING_32];// 测点ID
+        public byte[]         szText = new byte[CFG_COMMON_STRING_256];  // 需要叠加的内容
+        public NET_CFG_VideoWidgetSensorInfo_Description()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 编码物件-叠加传感器信息
+    public static class  NET_CFG_VideoWidgetSensorInfo extends SdkStructure
+    {
+        public int            nStructSize;
+        public int        bPreviewBlend;                    // 叠加到预览视频, 类型为BOOL, 取值0或者1
+        public int        bEncodeBlend;                    // 叠加到主码流视频编码, 类型为BOOL, 取值0或者1
+        public NET_CFG_Rect    stuRect = new NET_CFG_Rect();                        // 区域, 坐标取值0~8191
+        public int            nDescriptionNum;                // 叠加区域描述数目
+        public NET_CFG_VideoWidgetSensorInfo_Description[]  stuDescription = (NET_CFG_VideoWidgetSensorInfo_Description[])new NET_CFG_VideoWidgetSensorInfo_Description().toArray(NET_CFG_Max_Description_Num);// 叠加区域描述信息
+
+        public NET_CFG_VideoWidgetSensorInfo()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 视频编码物件配置
+    public static class NET_CFG_VideoWidget extends SdkStructure
+    {
+        public int                              nStructSize;
+        public NET_CFG_VideoWidgetChannelTitle  stuChannelTitle = new NET_CFG_VideoWidgetChannelTitle();        // 通道标题
+        public NET_CFG_VideoWidgetTimeTitle     stuTimeTitle = new NET_CFG_VideoWidgetTimeTitle();            // 时间标题
+        public int                              nConverNum;              // 区域覆盖数量
+        public NET_CFG_VideoWidgetCover[]       stuCovers = new NET_CFG_VideoWidgetCover[NET_CFG_Max_Video_Widget_Cover];                        // 覆盖区域
+        public int                              nCustomTitleNum;         // 自定义标题数量
+        public NET_CFG_VideoWidgetCustomTitle[] stuCustomTitle = new NET_CFG_VideoWidgetCustomTitle[NET_CFG_Max_Video_Widget_Custom_Title];    // 自定义标题
+        public int                              nSensorInfo;             // 传感器信息叠加区域数目
+        public NET_CFG_VideoWidgetSensorInfo[]  stuSensorInfo = new NET_CFG_VideoWidgetSensorInfo[NET_CFG_Max_Video_Widget_Sensor_Info];        // 传感器信息叠加区域信息
+        public double                           fFontSizeScale;          //叠加字体大小放大比例
+        //当fFontSizeScale≠0时,nFontSize不起作用
+        //当fFontSizeScale=0时,nFontSize起作用
+        //设备默认fFontSizeScale=1.0
+        //如果需要修改倍数,修改该值
+        //如果需要按照像素设置,则置该值为0,nFontSize的值生效
+        public int                               nFontSize;              //叠加到主码流上的全局字体大小,单位 px.
+        //和fFontSizeScale共同作用
+        public int                               nFontSizeExtra1;        //叠加到辅码流1上的全局字体大小,单位 px
+        public int                               nFontSizeExtra2;        //叠加到辅码流2上的全局字体大小,单位 px
+        public int                               nFontSizeExtra3;        //叠加到辅码流3上的全局字体大小,单位 px
+        public int                               nFontSizeSnapshot;      //叠加到抓图流上的全局字体大小, 单位 px
+        public int                               nFontSizeMergeSnapshot; //叠加到抓图流上合成图片的字体大小,单位 px
+        public int							     emFontSolutionSnapshot; //叠加到抓图流上的字体方案   // 0 未知 ; 1- 默认字体 "default-font" 2-楷体 "simkai" 3- 宋体"simsun"
+        public NET_CFG_VideoWidgetCover			 stuGPSTitle;			 //GPS标题显示, 车载设备用
+        public NET_CFG_VideoWidgetCover			 stuCarNoTitle;			 //车牌标题显示, 车载设备用
+
+        public byte[]	szChannelName = new byte[256];			         // 通道名称(只为Onvif使用)
+
+        public NET_CFG_VideoWidget()
+        {
+            this.nStructSize = this.size();
+            for (int i = 0; i < stuCustomTitle.length; i++) {
+                stuCustomTitle[i] = new NET_CFG_VideoWidgetCustomTitle();
+            }
+
+            for (int i = 0; i < stuCovers.length; i++) {
+                stuCovers[i] = new NET_CFG_VideoWidgetCover();
+            }
+
+            for (int i = 0; i < stuSensorInfo.length; i++) {
+                stuSensorInfo[i] = new NET_CFG_VideoWidgetSensorInfo();
+            }
+        }
+    }
+
+    // 报警事件类型 NET_EVENT_VIDEOABNORMALDETECTION 对应的数据描述信息
+    public static class ALARM_VIDEOABNORMAL_DETECTION_INFO extends SdkStructure
+    {
+        public int          dwSize;
+        public int          nChannelID;                     // 通道号
+        public double       PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX  UTC;                            // 事件发生的时间
+        public int             nEventID;                       // 事件ID
+        public int          nEventAction;                   // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public int          nType;                          // 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化
+        // 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测
+        // 11-视频运动, 12-视频闪烁, 13-视频颜色, 14-虚焦检测, 15-过曝检测
+        public int          nValue;                         // 检测值,值越高表示视频质量越差, GB30147定义
+        public int          nOccurrenceCount;               // 规则被触发生次数
+
+        public ALARM_VIDEOABNORMAL_DETECTION_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 停车发卡刷卡类型
+    public static class NET_PARKING_CARD_TYPE extends SdkStructure
+    {
+        public static final int NET_PARKING_CARD_TYPE_UNKNOWN = 0;
+        public static final int NET_PARKING_CARD_TYPE_SEND = 1;   // 发卡
+        public static final int NET_PARKING_CARD_TYPE_DETECT = 2; // 刷卡
+    }
+
+    // 报警事件类型 NET_ALARM_PARKING_CARD (停车刷卡事件)对应的数据描述信息
+    public static class ALARM_PARKING_CARD extends SdkStructure {
+        public int                   dwSize;
+        public int   				 emType;                       // 类型, 参考 NET_PARKING_CARD_TYPE
+        public int                   dwCardNo;                     // 卡号
+        public byte[]                szPlate = new byte[NET_COMMON_STRING_16]; // 车牌
+
+        public ALARM_PARKING_CARD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 报警事件类型 NET_ALARM_NEW_FILE 对应的数据描述信息
+    public static class ALARM_NEW_FILE_INFO extends SdkStructure
+    {
+        public int      dwSize;
+        public int      nChannel;                           // 抓图通道号
+        public int      nEventID;                           // 事件ID
+        public int      dwEvent;                            // 事件类型
+        public int      FileSize;                           // 文件大小,单位是字节
+        public int      nIndex;                             // 事件源通道
+        public int      dwStorPoint;                        // 存储点
+        public byte[]   szFileName = new byte[128];         // 文件名
+
+        public ALARM_NEW_FILE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人数越上限类型
+    public static class EM_UPPER_LIMIT_TYPE extends SdkStructure
+    {
+        public static final int EM_UPPER_LIMIT_TYPE_UNKNOWN     = 0;
+        public static final int EM_UPPER_LIMIT_TYPE_ENTER_OVER  = 1; // 进入越上限
+        public static final int EM_UPPER_LIMIT_TYPE_EXIT_OVER   = 2; // 出来越上限
+        public static final int EM_UPPER_LIMIT_TYPE_INSIDE_OVER = 3; // 内部越上限
+    	public static final int EM_UPPER_LIMIT_TYPE_PASS_OVER   = 4; // 经过越上限
+    }
+
+
+    // 事件类型 NET_ALARM_HUMAM_NUMBER_STATISTIC (人数量/客流量统计事件NumberStat对应的数据描述信息)
+    public static class  ALARM_HUMAN_NUMBER_STATISTIC_INFO extends SdkStructure
+    {
+        public double              PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                            // 事件发生的时间
+        public int                 nEventAction;                   // 事件动作,0-事件持续, 1-表示事件开始, 2-表示事件结束;
+        public int                 nNumber;                        // 区域内物体的个数
+        public int                 nEnteredNumber;                 // 进入区域或者出入口内的物体个数
+        public int                 nExitedNumber;                  // 出来区域或者出入口内的物体个数
+        public int                 emUpperLimitType;               // 人数越上限类型,参见EM_UPPER_LIMIT_TYPE定义
+    	public int                 nChannelID;                     // 通道号
+    	public int				   nPassedNumber;				   // 经过区域物体的个数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体    	
+        public byte[]              reserved = new byte[504];       // 预留
+    }
+
+    /////////////////////////////////智能支持/////////////////////////////////
+    //物体对应图片文件信息,对应DH_PIC_INFO
+    public static class NET_PIC_INFO extends SdkStructure
+    {
+        public int 			dwOffSet;				 // 文件在二进制数据块中的偏移位置,单位:字节
+        public int 			dwFileLenth;			 // 文件大小,单位:字节
+        public short 		wWidth;					 // 图片宽度,单位:像素
+        public short 		wHeight;				 // 图片高度,单位:像素
+        public Pointer 		pszFilePath;			 // 鉴于历史原因,该成员只在事件上报时有效, char *
+        // 文件路径
+        // 用户使用该字段时需要自行申请空间进行拷贝保存
+        public byte 		bIsDetected;			 // 图片是否算法检测出来的检测过的提交识别服务器时,
+        // 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
+        public byte[] 		bReserved = new byte[2]; // 预留字节数
+        public byte         byQulityScore;           // 人脸抓拍质量分数, 0-100
+        public int			nFilePathLen;			 // 文件路径长度 既pszFilePath 用户申请的大小
+        public NET_POINT 	stuPoint;			 	 // 小图左上角在大图的位置,使用绝对坐标系
+        public	int		nIndexInData;					// 在上传图片数据中的图片序号
+        public NET_PIC_INFO() {
+        }
+    }
+
+    // 人员类型
+    public static class EM_PERSON_TYPE extends SdkStructure
+    {
+        public static final int PERSON_TYPE_UNKNOWN = 0;
+        public static final int PERSON_TYPE_NORMAL = 1; 	//普通人员
+        public static final int PERSON_TYPE_SUSPICION = 2;  //
+    }
+
+    // 证件类型
+    public static class EM_CERTIFICATE_TYPE extends SdkStructure
+    {
+        public static final int CERTIFICATE_TYPE_UNKNOWN = 0;
+        public static final int CERTIFICATE_TYPE_IC = 1; 		//证件
+        public static final int CERTIFICATE_TYPE_PASSPORT = 2;  //护照
+        public static final int CERTIFICATE_TYPE_OUTERGUARD = 3;  //军官证
+        public static final int CERTIFICATE_TYPE_STUDENT = 4;  //学生证
+        public static final int CERTIFICATE_TYPE_POLICE = 5;  //警官证
+        public static final int CERTIFICATE_TYPE_LAWYER = 6;  //律师
+    }
+
+    //人员信息
+    public static class FACERECOGNITION_PERSON_INFO extends SdkStructure
+    {
+        public byte[] 	 szPersonName = new byte[NET_MAX_NAME_LEN]; 	// 姓名,此参数作废
+        public short	 wYear;											// 出生年,作为查询条件时,此参数填0,则表示此参数无效
+        public byte 	 byMonth;										// 出生月,作为查询条件时,此参数填0,则表示此参数无效
+        public byte 	 byDay;									    	// 出生日,作为查询条件时,此参数填0,则表示此参数无效
+        public byte[] 	 szID = new byte[NET_MAX_PERSON_ID_LEN];		// 人员唯一标示(证件号码,工号,或其他编号)
+        public byte		 bImportantRank;								// 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
+        public byte 	 bySex;											// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
+        public short 	 wFacePicNum;									// 图片张数
+        public NET_PIC_INFO[] szFacePicInfo =  new NET_PIC_INFO[NET_MAX_PERSON_IMAGE_NUM];//当前人员对应的图片信息
+        public byte		 byType;										// 人员类型,详见EM_PERSON_TYPE
+        public byte 	 byIDType;										// 证件类型,详见EM_CERTIFICATE_TYPE
+        public byte		 byGlasses;										// 是否戴眼镜,0-未知 1-不戴 2-戴
+        public byte      byAge;											// 年龄,0表示未知
+        public byte[]	 szProvince = new byte[NET_MAX_PROVINCE_NAME_LEN];// 省份
+        public byte[]	 szCity = new byte[NET_MAX_CITY_NAME_LEN];		// 城市
+        public byte[]	 szPersonNameEx = new byte[NET_MAX_PERSON_NAME_LEN];// 姓名,因存在姓名过长,16字节无法存放问题,故增加此参数,
+        public byte[] 	 szUID = new byte[NET_MAX_PERSON_ID_LEN];		// 人员唯一标识符,首次由服务端生成,区别于ID字段
+        // 修改,删除操作时必填
+        public byte[] 	 szCountry = new byte[NET_COUNTRY_LENGTH];		// 国籍,符合ISO3166规范
+        public byte		 byIsCustomType;								// 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szPersonName字段
+        public Pointer	 pszComment;									// 备注信息, 用户自己申请内存的情况时,
+        // 下方bCommentLen需填写对应的具体长度值,推荐长度 NET_COMMENT_LENGTH
+
+        public Pointer	 pszGroupID;									// 人员所属组ID, 用户自己申请内存的情况时,
+        // 下方bGroupIdLen需填写对应的具体长度值,推荐长度 NET_GROUPID_LENGTH
+
+        public Pointer	 pszGroupName;									// 人员所属组名, 用户自己申请内存的情况时,
+        // 下方bGroupNameLen需填写对应的具体长度值,推荐长度 NET_GROUPNAME_LENGTH
+
+        public Pointer	 pszFeatureValue;								// 人脸特征, 用户自己申请内存的情况时,
+        // 下方bFeatureValueLen需填写对应的具体长度值,推荐长度 NET_FEATUREVALUE_LENGTH
+
+        public byte		 bGroupIdLen;									// pszGroupID的长度
+        public byte		 bGroupNameLen;									// pszGroupName的长度
+        public byte		 bFeatureValueLen;								// pszFeatureValue的长度
+        public byte		 bCommentLen;									// pszComment的长度
+        public int		 emEmotion;										// 表情, 参考 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+
+        public FACERECOGNITION_PERSON_INFO() {
+            for(int i=0;i<szFacePicInfo.length;i++){
+                szFacePicInfo[i]=new NET_PIC_INFO();
+            }
+
+        }
+    }
+
+    ///////////////////////////////////目标识别模块相关结构体///////////////////////////////////////
+    public static class NET_UID_CHAR extends SdkStructure
+    {
+        public byte[] szUID = new byte[NET_MAX_PERSON_ID_LEN];//UID内容
+    }
+
+    public static class NET_UUID_CHAR extends SdkStructure
+    {
+        public byte[] szUUID = new byte[64];//UUID内容
+    }
+
+    //目标识别数据库操作
+    public static class EM_OPERATE_FACERECONGNITIONDB_TYPE
+    {
+        public static final int NET_FACERECONGNITIONDB_UNKOWN = 0;
+        public static final int NET_FACERECONGNITIONDB_ADD = 1;             //添加人员信息和人脸样本,如果人员已经存在,图片数据和原来的数据合并
+        public static final int NET_FACERECONGNITIONDB_DELETE = 2;          //删除人员信息和人脸样本
+        public static final int NET_FACERECONGNITIONDB_MODIFY = 3;          //修改人员信息和人脸样本,人员的UID标识必填
+        public static final int NET_FACERECONGNITIONDB_DELETE_BY_UID = 4;   //通过UID删除人员信息和人脸样本
+    }
+
+    //CLIENT_OperateFaceRecognitionDB接口输入参数
+    public static class NET_IN_OPERATE_FACERECONGNITIONDB extends SdkStructure
+    {
+        public int 								dwSize;
+        public int 								emOperateType;		//操作类型, 取EM_OPERATE_FACERECONGNITIONDB_TYPE中的值
+        public FACERECOGNITION_PERSON_INFO  	stPersonInfo;		//人员信息
+        //emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用,stPeronInfo字段无效
+        public int 								nUIDNum;			//UID个数
+        public Pointer 							stuUIDs;			//人员唯一标识符,首次由服务端生成,区别于ID字段, NET_UID_CHAR[]
+
+        // 图片二进制数据
+        public Pointer 							pBuffer;			//缓冲地址, char *
+        public int 								nBufferLen;			//缓冲数据长度
+
+        public int			  					bUsePersonInfoEx;	// 使用人员扩展信息, 1:true   0:false
+        public FACERECOGNITION_PERSON_INFOEX	stPersonInfoEx;	    // 人员信息扩展
+
+
+        //emOperateType操作类型为NET_FACERECONGNITIONDB_DELETE_BY_UUID时使用,stPeronInfo字段无效
+        public int                              nUUIDNum;           //UUID个数
+        public Pointer                          stuUUIDs;           //人员唯一标识符,由平台端下发,区别于UID字段. 由用户申请内存,大小为sizeof(NET_UUID_CHAR)*nUUIDNum
+
+        public NET_IN_OPERATE_FACERECONGNITIONDB()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 错误代码,emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用
+    public static class EM_ERRORCODE_TYPE extends SdkStructure
+    {
+        public static final int EM_ERRORCODE_TYPE_UNKNOWN = -1;               // 未知错误
+        public static final int EM_ERRORCODE_TYPE_SUCCESS=0;               // 成功
+        public static final int EM_ERRORCODE_TYPE_PERSON_NOT_EXIST=1;            // 人员不存在
+        public static final int EM_ERRORCODE_TYPE_DATABASE_ERROR=2;             //  数据库操作失败
+    };
+
+    //CLIENT_OperateFaceRecognitionDB接口输出参数
+    public static class NET_OUT_OPERATE_FACERECONGNITIONDB extends SdkStructure
+    {
+        public int 		dwSize;
+        public byte[]	szUID = new byte[NET_MAX_PERSON_ID_LEN];	// 人员唯一标识符, 只有在操作类型为NET_FACERECONGNITIONDB_ADD时有效
+
+        //emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用
+        public int                nErrorCodeNum; // 错误码个数
+        public int[]          emErrorCodes=new int[512]; // 错误码
+        // emOperateType操作类型为ET_FACERECONGNITIONDB_DELETE_BY_UID时使用
+
+        public NET_OUT_OPERATE_FACERECONGNITIONDB()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //人脸对比模式
+    public static class EM_FACE_COMPARE_MODE extends SdkStructure
+    {
+        public static final int NET_FACE_COMPARE_MODE_UNKOWN = 0;
+        public static final int NET_FACE_COMPARE_MODE_NORMAL = 1; //正常
+        public static final int NET_FACE_COMPARE_MODE_AREA = 2; //指定人脸区域组合区域
+        public static final int  NET_FACE_COMPARE_MODE_AUTO = 3; //智能模式,算法根据人脸各个区域情况自动选取组合
+    }
+
+    //人脸区域
+    public static class EM_FACE_AREA_TYPE extends SdkStructure
+    {
+        public static final int NET_FACE_AREA_TYPE_UNKOWN = 0;
+        public static final int NET_FACE_AREA_TYPE_EYEBROW = 1; //眉毛
+        public static final int NET_FACE_AREA_TYPE_EYE = 2; //眼睛
+        public static final int NET_FACE_AREA_TYPE_NOSE= 3; //鼻子
+        public static final int NET_FACE_AREA_TYPE_MOUTH = 4; //嘴巴
+        public static final int NET_FACE_AREA_TYPE_CHEEK =5; //脸颊
+    }
+
+    public static class NET_FACE_MATCH_OPTIONS extends SdkStructure
+    {
+        public int 			dwSize;
+        public int 			nMatchImportant;						// 人员重要等级1~10,数值越高越重要,(查询重要等级大于等于此等级的人员), 类型为unsigned int
+        public int 			emMode;									// 人脸比对模式,详见EM_FACE_COMPARE_MODE, 取EM_FACE_COMPARE_MODE中的值
+        public int 			nAreaNum;								// 人脸区域个数
+        public int[] 		szAreas= new int[MAX_FACE_AREA_NUM];	// 人脸区域组合,emMode为NET_FACE_COMPARE_MODE_AREA时有效, 数组元素取EM_FACE_AREA_TYPE中的值
+        public int 			nAccuracy;								// 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1表示检测速度优先,最大值为10表示检测精度优先。暂时只对目标检测有效)
+        public int 			nSimilarity;							// 相似度(必须大于该相识度才报告;百分比表示,1~100)
+        public int 			nMaxCandidate;							// 报告的最大候选个数(根据相似度进行排序,取相似度最大的候选人数报告)
+        public int 			emQueryMode;                 			// 以图搜图查询模式,详见EM_FINDPIC_QUERY_MODE
+        public int 			emOrdered;                 				// 以图搜图结果上报排序方式,详见EM_FINDPIC_QUERY_ORDERED
+
+        public NET_FACE_MATCH_OPTIONS()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 以图搜图查询模式
+    public static class EM_FINDPIC_QUERY_MODE extends SdkStructure
+    {
+        public static final int EM_FINDPIC_QUERY_UNKNOWN             = 0;   // 未知
+        public static final int EM_FINDPIC_QUERY_PASSIVE             = 1;   // 被动查询
+        public static final int EM_FINDPIC_QUERY_ACTIVE              = 2;   // 主动推送
+    }
+
+    // 以图搜图结果上报排序方式
+    public static class EM_FINDPIC_QUERY_ORDERED extends SdkStructure
+    {
+        public static final int EM_FINDPIC_QUERY_BY_SIMILARITY       = 0;   // 按相似度从高到底
+        public static final int EM_FINDPIC_QUERY_BY_TIME_FORWARD     = 1;   // 按时间正序
+        public static final int EM_FINDPIC_QUERY_BY_TIME_REVERSE     = 2;   // 按时间倒序
+    }
+
+    //目标识别人脸类型
+    public static class EM_FACERECOGNITION_FACE_TYPE extends SdkStructure
+    {
+        public static final int  EM_FACERECOGNITION_FACE_TYPE_UNKOWN = 0;
+        public static final int  EM_FACERECOGNITION_FACE_TYPE_ALL = 1; 			// 所有人脸
+        public static final int  EM_FACERECOGNITION_FACE_TYPE_REC_SUCCESS=  2;	// 识别成功
+        public static final int  EM_FACERECOGNITION_FACE_TYPE_REC_FAIL = 3;		// 识别失败
+    }
+
+    public static class NET_FACE_FILTER_CONDTION extends SdkStructure
+    {
+        public int 			dwSize;
+        public NET_TIME 	stStartTime=new NET_TIME();							// 开始时间
+        public NET_TIME 	stEndTime=new NET_TIME();								// 结束时间
+        public byte[] 		szMachineAddress = new byte[MAX_PATH];	// 地点,支持模糊匹配
+        public int 			nRangeNum;								// 实际数据库个数
+        public byte[] 		szRange = new byte[MAX_FACE_DB_NUM];	// 待查询数据库类型,详见EM_FACE_DB_TYPE
+        public int 			emFaceType;								// 待查询人脸类型,详见EM_FACERECOGNITION_FACE_TYPE, 取EM_FACERECOGNITION_FACE_TYPE中的值
+        public int 			nGroupIdNum;							// 人员组数
+        public GROUP_ID[] 	szGroupIdArr = new GROUP_ID[MAX_GOURP_NUM]; // 人员组ID
+        public NET_TIME 	stBirthdayRangeStart=new NET_TIME();   				// 生日起始时间
+        public NET_TIME 	stBirthdayRangeEnd=new NET_TIME();    				// 生日结束时间
+        public byte[]		byAge = new byte[MAX_AGE_NUM];			// 年龄区间,当byAge[0]=0与byAge[1]=0时,表示查询全年龄
+        public byte[]		byReserved = new byte[2];				// 保留字节对齐
+        public int[]	    emEmotion = new int[MAX_EMOTION_NUM];	// 表情条件
+        public int			nEmotionNum;				   			// 表情条件的个数
+        public int                 nUIDNum;                       // 人员唯一标识数
+        public byte[]                szUIDs=new byte[64*32];                // 人员唯一标识列表
+        public int                 nUUIDNum;                      // 平台端人员唯一标识数
+        public byte[]				szUUIDs=new byte[64*32];               // 平台端人员唯一标识列表,根据faceRecognitionServer.getCaps获取到的能力是否存在字段SupportIDFromServer且值为true时有效
+        public int          bIsUsingRealUTCTime;           // 是否使用UTC格式的开始、结束时间
+        public NET_TIME     stuStartTimeRealUTC = new NET_TIME();    // 开始时间(UTC时间格式)
+        public NET_TIME     stuEndTimeRealUTC = new NET_TIME();      // 结束时间(UTC时间格式)备注:与StartTimeRealUTC配对使用
+    	public int			bIsUsingRegisterStorageTime;             // 是否使用注册库人员的开始、结束时间
+    	public NET_TIME		stuStartRegisterStorageTime = new NET_TIME();	// 注册库人员的入库开始时间
+    	public NET_TIME		stuEndRegisterStorageTime = new NET_TIME();		// 注册库人员的入库结束时间
+    	public int			bIsUsingModifyTime;				         // 是否使用注册库人员的修改开始、结束时间
+    	public NET_TIME		stuStartModifyTime= new NET_TIME();		 // 注册库人员的修改开始时间
+    	public NET_TIME		stuEndModifyTime= new NET_TIME();		 // 注册库人员的修改结束时间
+        public NET_FACE_FILTER_CONDTION()
+        {
+            for(int i=0;i<szGroupIdArr.length;i++){
+                szGroupIdArr[i]=new GROUP_ID();
+            }
+
+            this.dwSize = this.size();
+
+        }
+    }
+
+    // 人员组ID
+    public static class GROUP_ID extends SdkStructure
+    {
+        public byte[]   szGroupId= new byte[NET_COMMON_STRING_64];  //人员组ID
+    }
+
+    //CLIENT_StartFindFaceRecognition接口输入参数
+    public static class NET_IN_STARTFIND_FACERECONGNITION extends SdkStructure
+    {
+        public int 								dwSize;
+        public int 								bPersonEnable;		// 人员信息查询条件是否有效, BOOL类型,取值0或1
+        public FACERECOGNITION_PERSON_INFO  	stPerson=new FACERECOGNITION_PERSON_INFO();			// 人员信息查询条件
+        public NET_FACE_MATCH_OPTIONS 			stMatchOptions=new NET_FACE_MATCH_OPTIONS(); 	// 人脸匹配选项
+        public NET_FACE_FILTER_CONDTION 		stFilterInfo=new NET_FACE_FILTER_CONDTION();		// 查询过滤条件
+
+        // 图片二进制数据
+        public Pointer 							pBuffer;			// 缓冲地址, char *
+        public int 								nBufferLen;			// 缓冲数据长度
+        public int 								nChannelID;			// 通道号
+
+        public int								bPersonExEnable;	// 人员信息查询条件是否有效, 并使用扩展结构体
+        public FACERECOGNITION_PERSON_INFOEX	stPersonInfoEx=new FACERECOGNITION_PERSON_INFOEX();		// 人员信息扩展
+        public int								nSmallPicIDNum;		// 小图ID数量
+        public int[]							nSmallPicID = new int[MAX_SMALLPIC_NUM];	// 小图ID
+        public int                              emObjectType;       // 搜索的目标类型,参考EM_OBJECT_TYPE
+        public byte[]                           szChannel = new byte[NET_COMMON_STRING_32]; // 通道号(使用)
+        public NET_IN_STARTFIND_FACERECONGNITION()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_StartFindFaceRecognition接口输出参数
+    public static class NET_OUT_STARTFIND_FACERECONGNITION extends SdkStructure {
+        public int 		dwSize;
+        public int 		nTotalCount;	// 返回的符合查询条件的记录个数
+        // -1表示总条数未生成,要推迟获取
+        // 使用CLIENT_AttachFaceFindState接口状态
+        public LLong 	lFindHandle;	// 查询句柄
+        public int 		nToken;			// 获取到的查询令牌
+
+        public NET_OUT_STARTFIND_FACERECONGNITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_DoFindFaceRecognition 接口输入参数
+    public static class NET_IN_DOFIND_FACERECONGNITION extends SdkStructure {
+        public int 			dwSize;
+        public LLong 		lFindHandle;	// 查询句柄
+        public int 			nBeginNum;		// 查询起始序号
+        public int 			nCount;			// 当前想查询的记录条数
+        public int			emDataType;		// 指定查询结果返回图片的格式. 参考  EM_NEEDED_PIC_RETURN_TYPE
+
+        public NET_IN_DOFIND_FACERECONGNITION()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 查询结果返回图片的格式
+    public static class EM_NEEDED_PIC_RETURN_TYPE extends SdkStructure {
+        public static final int EM_NEEDED_PIC_TYPE_UNKOWN = 0;            // 未知类型
+        public static final int EM_NEEDED_PIC_TYPE_HTTP_URL = 1;          // 返回图片HTTP链接
+        public static final int EM_NEEDED_PIC_TYPE_BINARY_DATA = 2;       // 返回图片二进制数据
+        public static final int EM_NEEDED_PIC_TYPE_HTTP_AND_BINARY = 3;   // 返回二进制和HTTP链接
+    }
+
+    //候选人员信息
+    public static class CANDIDATE_INFO extends SdkStructure {
+        public FACERECOGNITION_PERSON_INFO stPersonInfo;					// 人员信息
+        // 布控(禁止名单)库,指布控库中人员信息;
+        // 历史库,指历史库中人员信息
+        // 报警库,指布控库的人员信息
+        public byte 						bySimilarity;					// 和查询图片的相似度,百分比表示,1~100
+        public byte 						byRange;						// 人员所属数据库范围,详见EM_FACE_DB_TYPE
+        public byte[] 						byReserved1 = new byte[2];
+        public NET_TIME 					stTime;							// 当byRange为历史数据库时有效,表示查询人员出现的时间
+        public byte[] 						szAddress = new byte[MAX_PATH]; // 当byRange为历史数据库时有效,表示查询人员出现的地点
+        public int 							bIsHit; 						// BOOL类型,是否有识别结果,指这个检测出的人脸在库中有没有比对结果
+        public NET_PIC_INFO_EX3 			stuSceneImage;  				// 人脸全景图
+        public int 							nChannelID;				 		// 通道号
+        public byte[] 						byReserved = new byte[32];		// 保留字节
+
+        public CANDIDATE_INFO() {}
+    }
+
+    // 物体对应图片文件信息(包含图片路径),对应C++头文件DH_PIC_INFO_EX3
+    public static class NET_PIC_INFO_EX3 extends SdkStructure
+    {
+        public int          dwOffSet;                       // 文件在二进制数据块中的偏移位置, 单位:字节
+        public int          dwFileLenth;                    // 文件大小, 单位:字节
+        public short        wWidth;                         // 图片宽度, 单位:像素
+        public short        wHeight;                        // 图片高度, 单位:像素
+        public byte[]       szFilePath = new byte[64];      // 文件路径
+        public byte         bIsDetected;                    // 图片是否算法检测出来的检测过的提交识别服务器时,
+        // 则不需要再时检测定位抠图,1:检测过的,0:没有检测过
+        public byte[]       bReserved = new byte[11];       // 保留
+    }
+
+    //CLIENT_DoFindFaceRecognition接口输出参数
+    public static class NET_OUT_DOFIND_FACERECONGNITION extends SdkStructure
+    {
+        public int 					dwSize;
+        public int 					nCadidateNum;					// 实际返回的候选信息结构体个数
+        public CANDIDATE_INFO[] 	stCadidateInfo = (CANDIDATE_INFO[])new CANDIDATE_INFO().toArray(MAX_FIND_COUNT);//候选信息数组
+
+        // 图片二进制数据
+        public Pointer 				pBuffer;						// 缓冲地址, char *
+        public int 					nBufferLen;					 	// 缓冲数据长度
+
+        public int					bUseCandidatesEx;				// 是否使用候选对象扩展结构体,
+        // 若为1-true, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反
+        public int 					nCadidateExNum;					// 实际返回的候选信息结构体个数
+        public CANDIDATE_INFOEX[]	stuCandidatesEx = (CANDIDATE_INFOEX[])new CANDIDATE_INFOEX().toArray(MAX_FIND_COUNT); // 当前人脸匹配到的候选对象信息, 实际返回个数同nCandidateNum
+
+        public NET_OUT_DOFIND_FACERECONGNITION()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    /////////////////////////////////智能支持/////////////////////////////////
+    //CLIENT_DetectFace接口输入参数
+    public static class NET_IN_DETECT_FACE extends SdkStructure
+    {
+        public int dwSize;
+        public NET_PIC_INFO stPicInfo;//大图信息
+        // 图片二进制数据
+        public Pointer pBuffer;//缓冲地址, char *
+        public int nBufferLen;//缓冲数据长度
+
+        public NET_IN_DETECT_FACE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_DetectFace接口输出参数
+    public static class NET_OUT_DETECT_FACE extends SdkStructure
+    {
+        public int dwSize;
+        public Pointer pPicInfo;//检测出的人脸图片信息,由用户申请空间, NET_PIC_INFO*
+        public int nMaxPicNum;//最大人脸图片信息个数
+        public int nRetPicNum;//实际返回的人脸图片个数
+        // 图片二进制数据
+        public Pointer pBuffer;//缓冲地址,由用户申请空间,存放检测出的人脸图片数据, char *
+        public int nBufferLen;//缓冲数据长度
+
+        public NET_OUT_DETECT_FACE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 目标识别事件类型
+    public static class EM_FACERECOGNITION_ALARM_TYPE extends SdkStructure
+    {
+        public static final int NET_FACERECOGNITION_ALARM_TYPE_UNKOWN = 0;
+        public static final int NET_FACERECOGNITION_ALARM_TYPE_ALL = 1; //禁止/允许名单
+        public static final int NET_FACERECOGNITION_ALARM_TYPE_BLACKLIST = 2; //禁止名单
+        public static final int NET_FACERECOGNITION_ALARM_TYPE_WHITELIST = 3; //允许名单
+    }
+
+    // NET_FILE_QUERY_FACE 对应的目标识别服务查询参数
+    public static class MEDIAFILE_FACERECOGNITION_PARAM extends SdkStructure
+    {
+        public int 								dwSize;			// 结构体大小
+
+        //////// 查询过滤条件
+        public NET_TIME 						stStartTime;	// 开始时间
+        public NET_TIME 						stEndTime;		// 结束时间
+        public byte[] 							szMachineAddress = new byte[MAX_PATH];//地点,支持模糊匹配
+        public int 								nAlarmType;		// 待查询报警类型,详见 EM_FACERECOGNITION_ALARM_TYPE
+        public int 								abPersonInfo;	// 人员信息是否有效, BOOL类型,取值0或1
+        public FACERECOGNITION_PERSON_INFO 	 	stPersonInfo;	// 人员信息
+        public int 								nChannelId;		// 通道号
+        public int 								nGroupIdNum;	// 人员组数
+        public GROUP_ID[]						szGroupIdArr = (GROUP_ID[])new GROUP_ID().toArray(MAX_GOURP_NUM); // 人员组ID
+        public int                				abPersonInfoEx; // 人员信息扩展是否有效
+        public FACERECOGNITION_PERSON_INFOEX	stPersonInfoEx; // 人员信息扩展
+        public int				                bSimilaryRangeEnable;       			//相似度是否有效
+        public int[]					        nSimilaryRange=new int[2];				//相似度范围
+        public int                              nFileType;      // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
+        public int				              bOnlySupportRealUTC;// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stEndTime), 为FALSE表示仅下发stStartTime, stEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+    	public NET_TIME			              stuStartTimeRealUTC;// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥
+    	public NET_TIME			              stuEndTimeRealUTC;// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stStartTime, stEndTime)互斥	
+        public MEDIAFILE_FACERECOGNITION_PARAM()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 图片类型
+    public static class EM_FACEPIC_TYPE extends SdkStructure
+    {
+        public static final int  NET_FACEPIC_TYPE_UNKOWN = 0;            // 未知类型
+        public static final int  NET_FACEPIC_TYPE_GLOBAL_SENCE = 1;      // 人脸全景大图
+        public static final int  NET_FACEPIC_TYPE_SMALL = 2;             // 人脸小图
+    }
+
+    // 参数详细信息
+    public static class MEDIAFILE_FACE_DETECTION_DETAIL_PARAM extends SdkStructure
+    {
+        public int               			dwSize;				// 结构体大小
+        public int							dwObjectId;			// 物体ID
+        public int 							dwFrameSequence;	// 帧序号
+        public NET_TIME_EX					stTime;             // 发生时间
+
+        public MEDIAFILE_FACE_DETECTION_DETAIL_PARAM()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 目标检测人脸戴眼镜特征类型
+    public static class EM_FACEDETECT_GLASSES_TYPE extends SdkStructure
+    {
+        public static final int EM_FACEDETECT_GLASSES_UNKNOWN = 0;      // 未知
+        public static final int EM_FACEDETECT_WITH_GLASSES = 1;         // 戴眼镜
+        public static final int EM_FACEDETECT_WITHOUT_GLASSES = 2;      // 不戴眼镜
+    }
+
+    //体温类型
+    public static class EM_TEMPERATURE_TYPE extends SdkStructure
+    {
+        public static final int   EM_TEMPERATURE_TYPE_UNKNOWN = -1;		// 未知
+        public static final int   EM_TEMPERATURE_TYPE_UNDEFINE=0;		// 未识别
+        public static final int   EM_TEMPERATURE_TYPE_LOW=1;			// 体温过低
+        public static final int   EM_TEMPERATURE_TYPE_NORMAL=2;           // 体温正常
+        public static final int   EM_TEMPERATURE_TYPE_HIGH=3;			// 体温过高
+
+    }
+
+
+    // NET_FILE_QUERY_FACE_DETECTION 对应的目标识别服务查询参数
+    public static class MEDIAFILE_FACE_DETECTION_PARAM extends SdkStructure
+    {
+        public int               			dwSize;			// 结构体大小
+        ////////查询过滤条件
+        public int							nChannelID;		// 通道号
+        public NET_TIME 					stuStartTime;	// 起始时间
+        public NET_TIME 					stuEndTime;		// 结束时间
+        public int							emPicType;		// 图片类型,对应枚举 EM_FACEPIC_TYPE
+        public int							bDetailEnable;	// 是否有详细信息,boolean类型,为1或者0
+        public MEDIAFILE_FACE_DETECTION_DETAIL_PARAM	stuDetail;	// 参数详细信息
+        public int 							emSex;					// 性别类型, 参考 EM_DEV_EVENT_FACEDETECT_SEX_TYPE
+        public int   						bAgeEnable;             // 是否指定年龄段
+        public int[]               			nAgeRange = new int[2]; // 年龄范围
+        public int							nEmotionValidNum;		// 人脸特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情
+        public int[]						emEmotion = new int[NET_MAX_FACEDETECT_FEATURE_NUM]; // 人脸特征数组,与 byFeatureValidNum 结合使用,对应 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public int							emGlasses;		// 是否戴眼镜,参考 EM_FACEDETECT_GLASSES_TYPE
+        public int 							emMask;			// 是否带口罩,参考 EM_MASK_STATE_TYPE
+        public int 							emBeard;		// 是否有胡子,参考 EM_BEARD_STATE_TYPE
+        public int 							nIsStranger;	// 0-都查询;1-仅查未开启陌生人模式;2-仅查开启陌生人模式
+        public int				            bOnlySupportRealUTC;// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+    	public NET_TIME			            stuStartTimeRealUTC;// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+    	public NET_TIME			            stuEndTimeRealUTC;// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+    	public int[]                        nChannelIDs = new int[256];	// 通道号数组
+    	public int					        nChannelNum;				// 通道号数组数量
+
+        public MEDIAFILE_FACE_DETECTION_PARAM()
+        {
+            this.dwSize = this.size();
+        }
+
+    }
+
+    // NET_FILE_QUERY_FACE_DETECTION对应的目标识别服务FINDNEXT查询返回参数
+    public static class MEDIAFILE_FACE_DETECTION_INFO extends SdkStructure
+    {
+        public int               dwSize;                               // 结构体大小
+        public int				  ch;									// 通道号
+        public byte[]			  szFilePath = new byte[128];			// 文件路径
+        public int				  size;									// 文件长度,该字段废弃,请使用sizeEx
+        public NET_TIME		  starttime;                            // 开始时间
+        public NET_TIME		  endtime;								// 结束时间
+        public int 			  nWorkDirSN;							// 工作目录编号
+        public byte 			  nFileType;							// 文件类型  1:jpg图片
+        public byte			  bHint;								// 文件定位索引
+        public byte			  bDriveNo;								// 磁盘号
+        public byte			  byPictureType;						// 图片类型, 0-普通, 1-合成, 2-抠图
+        public int				  nCluster;								// 簇号
+        public int				  emPicType;   							// 图片类型,详见  EM_FACEPIC_TYPE
+        public int 			  dwObjectId;							// 物体ID
+        public int[] 			  dwFrameSequence = new int[NET_MAX_FRAMESEQUENCE_NUM];			// 帧序号,数组有2个元素时,第一个表示小图,第二个表示大图
+        public int 			  nFrameSequenceNum;					// 帧序号个数
+        public NET_TIME_EX[]	  stTimes = (NET_TIME_EX[])new NET_TIME_EX().toArray(NET_MAX_TIMESTAMP_NUM); // 发生时间,数组有2个元素时,第一个表示小图,第二个表示大图
+        public int 			  nTimeStampNum;						// 表示在簇中的图片序号
+        public int 			  nPicIndex;							// 表示在簇中的图片序号
+        // 对于同一个簇中打包多张图片,提供索引方式定位图片
+        public int				  emSex;								// 性别类型,参考 EM_DEV_EVENT_FACEDETECT_SEX_TYPE
+        public int 			  nAge;									// 年龄
+        public int 			  emEmotion;							// 人脸表情,参考 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public int 			  emGlasses;							// 是否戴眼镜,参考 EM_FACEDETECT_GLASSES_TYPE
+        public long			  sizeEx;								// 文件长度扩展,支持文件长度大于4G,单位字节
+        public int 			  emMask;								// 是否带口罩,参考 EM_MASK_STATE_TYPE
+        public int				  emBeard;							// 是否有胡子,参考 EM_BEARD_STATE_TYPE
+        public byte[]             szReserved = new byte[4];			
+        public int				  emEye;								// 眼睛状态,参考 EM_EYE_STATE_TYPE
+        public int				  emMouth;								// 嘴巴状态,参考 EM_MOUTH_STATE_TYPE
+        public int 			  nAttractive;							// 魅力值
+        public int 			  nIsStranger; 			 				// 0-未知;1-未开启陌生人模式;2-开启了陌生人模式
+        public byte[]			  szFaceObjectUrl = new byte[128];		// 当 emPicType 为 NET_FACEPIC_TYPE_GLOBAL_SENCE 时, 代表人脸小图路径
+        public NET_EULER_ANGLE             stuFaceCaptureAngle;                // 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
+        // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
+        public int                        nFaceQuality;                       // 人脸抓拍质量分数
+        public NET_FACEDETECT_IMAGE_INFO   stuSceneImage;                      // 大图信息
+        public NET_POINT                   stuFaceCenter;                      // 人脸型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
+    	public int						bRealUTC;						    // 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅starttime和endtime有效(仅使用starttime和endtime)
+    	public NET_TIME					stuStartTimeRealUTC;			    // UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+    	public NET_TIME					stuEndTimeRealUTC;				    // UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+        public MEDIAFILE_FACE_DETECTION_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // NET_MEDIA_QUERY_TRAFFICCAR对应的查询条件
+    public static class MEDIA_QUERY_TRAFFICCAR_PARAM extends SdkStructure
+    {
+        public int                 nChannelID;                     // 通道号从0开始,-1表示查询所有通道
+        public NET_TIME            StartTime;                      // 开始时间
+        public NET_TIME            EndTime;                        // 结束时间
+        public int                 nMediaType;                     // 文件类型,0:任意类型, 1:jpg图片, 2:dav文件
+        public int                 nEventType;                     // 事件类型,详见"智能分析事件类型", 0:表示查询任意事件,此参数废弃,请使用pEventTypes
+        public byte[]              szPlateNumber = new byte[32];   // 车牌号, "\0"则表示查询任意车牌号
+        public int                 nSpeedUpperLimit;               // 查询的车速范围; 速度上限 单位: km/h
+        public int                 nSpeedLowerLimit;               // 查询的车速范围; 速度下限 单位: km/h
+        public int                 bSpeedLimit;                    // 是否按速度查询; TRUE:按速度查询,nSpeedUpperLimit和nSpeedLowerLimit有效。
+        public int                 dwBreakingRule;                 // 违章类型:
+        // 当事件类型为 EVENT_IVS_TRAFFICGATE时
+        //        第一位:逆行;  第二位:压线行驶; 第三位:超速行驶;
+        //        第四位:欠速行驶; 第五位:闯红灯;
+        // 当事件类型为 EVENT_IVS_TRAFFICJUNCTION
+        //        第一位:闯红灯;  第二位:不按规定车道行驶;
+        //        第三位:逆行; 第四位:违章掉头;
+        //        第五位:压线行驶;
+
+        public byte[]              szPlateType=new byte[32];       // 车牌类型,"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌 ,
+        // "SAR" 港澳特区号牌,"Trainning" 教练车号牌
+        // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌
+        public byte[]              szPlateColor = new byte[16];    // 车牌颜色, "Blue"蓝色,"Yellow"黄色, "White"白色,"Black"黑色
+        public byte[]              szVehicleColor = new byte[16];  // 车身颜色:"White"白色, "Black"黑色, "Red"红色, "Yellow"黄色, "Gray"灰色, "Blue"蓝色,"Green"绿色
+        public byte[]              szVehicleSize = new byte[16];   // 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车; "Unknown": 未知
+        public int                 nGroupID;                       // 事件组编号(此值>=0时有效)
+        public short               byLane;                         // 车道号(此值>=0时表示具体车道,-1表示所有车道,即不下发此字段)
+        public byte                byFileFlag;                     // 文件标志, 0xFF-使用nFileFlagEx, 0-表示所有录像, 1-定时文件, 2-手动文件, 3-事件文件, 4-重要文件, 5-合成文件
+        public byte                byRandomAccess;                 // 是否需要在查询过程中随意跳转,0-不需要,1-需要
+        public int                 nFileFlagEx;                    // 文件标志, 按位表示: bit0-定时文件, bit1-手动文件, bit2-事件文件, bit3-重要文件, bit4-合成文件, bit5-禁止名单图片 0xFFFFFFFF-所有录像
+        public int                 nDirection;                     // 车道方向(车开往的方向)    0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北 8-未知 -1-所有方向
+        public Pointer             szDirs;                         // 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有
+        public Pointer             pEventTypes;                    // 待查询的事件类型数组指针,事件类型,详见"智能分析事件类型",若为NULL则认为查询所有事件(缓冲需由用户申请)
+        public int                 nEventTypeNum;                  // 事件类型数组大小
+        public Pointer             pszDeviceAddress;               // 设备地址, NULL表示该字段不起作用
+        public Pointer             pszMachineAddress;              // 机器部署地点, NULL表示该字段不起作用
+        public Pointer             pszVehicleSign;                 // 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田... NULL表示该字段不起作用
+        public short               wVehicleSubBrand;               // 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
+        public short               wVehicleYearModel;              // 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
+        public int				   emSafeBeltState;				   // 安全带状态, 参考枚举  EM_SAFE_BELT_STATE
+        public int                 emCallingState;				   // 打电话状态, 参考枚举 EM_CALLING_STATE
+        public int 				   emAttachMentType;			   // 车内饰品类型, 参考枚举 EM_ATTACHMENT_TYPE
+        public int				   emCarType;					   // 车辆类型, 参考枚举  EM_CATEGORY_TYPE
+        public Pointer	           pstuTrafficCarParamEx;	// 参数扩展,对应结构体NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX
+        public int[]               bReserved=new int[4];                  // 保留字段
+    }
+
+    // NET_MEDIA_QUERY_TRAFFICCAR_EX对应的查询条件
+    public static class MEDIA_QUERY_TRAFFICCAR_PARAM_EX extends SdkStructure
+    {
+        public int               dwSize;
+        public MEDIA_QUERY_TRAFFICCAR_PARAM stuParam;                  // 基本查询参数
+
+        public MEDIA_QUERY_TRAFFICCAR_PARAM_EX() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // NET_MEDIA_QUERY_TRAFFICCAR查询出来的media文件信息
+    public static class MEDIAFILE_TRAFFICCAR_INFO extends SdkStructure
+    {
+        public int				   ch;                                 // 通道号
+        public byte[]              szFilePath = new byte[128];         // 文件路径
+        public int        		   size;                               // 文件长度
+        public NET_TIME            starttime;                          // 开始时间
+        public NET_TIME            endtime;                            // 结束时间
+        public int                 nWorkDirSN;                         // 工作目录编号
+        public byte                nFileType;                          // 文件类型  1:jpg图片
+        public byte                bHint;                              // 文件定位索引
+        public byte                bDriveNo;                           // 磁盘号
+        public byte                bReserved2;
+        public int                 nCluster;                           // 簇号
+        public byte                byPictureType;                      // 图片类型, 0-普通, 1-合成, 2-抠图
+        public byte[]              bReserved = new byte[3];            // 保留字段
+
+        //以下是交通车辆信息
+        public byte[]              szPlateNumber = new byte[32];       // 车牌号码
+        public byte[]              szPlateType = new byte[32];         // 号牌类型"Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌
+        // "Police" 警牌; 
+        // "SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌
+        // "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌
+        public byte[]              szPlateColor = new byte[16];        // 车牌颜色:"Blue","Yellow", "White","Black"
+        public byte[]              szVehicleColor = new byte[16];      // 车身颜色:"White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
+        public int                 nSpeed;                             // 车速,单位 Km/H
+        public int                 nEventsNum;                         // 关联的事件个数
+        public int[]               nEvents = new int[32];              // 关联的事件列表,数组值表示相应的事件,详见"智能分析事件类型"
+        public int                 dwBreakingRule;                     // 具体违章类型掩码,第一位:闯红灯; 第二位:不按规定车道行驶;
+        // 第三位:逆行; 第四位:违章掉头;否则默认为:交通路口事件
+        public byte[]              szVehicleSize = new byte[16];       // 车辆大小类型:"Light-duty":小型车;"Medium":中型车; "Oversize":大型车
+        public byte[]              szChannelName = new byte[NET_CHAN_NAME_LEN];    // 本地或远程的通道名称
+        public byte[]              szMachineName = new byte[NET_MAX_NAME_LEN];     // 本地或远程设备名称
+
+        public int                 nSpeedUpperLimit;                   // 速度上限 单位: km/h
+        public int                 nSpeedLowerLimit;                   // 速度下限 单位: km/h
+        public int                 nGroupID;                           // 事件里的组编号
+        public byte                byCountInGroup;                     // 一个事件组内的抓拍张数
+        public byte                byIndexInGroup;                     // 一个事件组内的抓拍序号
+        public byte                byLane;                             // 车道,参见MEDIA_QUERY_TRAFFICCAR_PARAM
+        public byte[]              bReserved1 = new byte[21];          // 保留
+        public NET_TIME            stSnapTime;                         // 抓拍时间
+        public int                 nDirection;                         // 车道方向,参见MEDIA_QUERY_TRAFFICCAR_PARAM
+        public byte[]              szMachineAddress = new byte[MAX_PATH]; // 机器部署地点
+        public long                sizeEx;                             // 文件长度扩展,支持文件长度大于4G,单位字节
+    }
+
+    // NET_MEDIA_QUERY_TRAFFICCAR_EX查询出来的文件信息
+    public static class MEDIAFILE_TRAFFICCAR_INFO_EX extends SdkStructure
+    {
+
+        public int dwSize;
+        /**
+         * 基本信息
+         */
+        public MEDIAFILE_TRAFFICCAR_INFO stuInfo = new MEDIAFILE_TRAFFICCAR_INFO();
+        /**
+         * 设备地址
+         */
+        public byte[] szDeviceAddr = new byte[256];
+        /**
+         * 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田...
+         */
+        public byte[] szVehicleSign = new byte[32];
+        /**
+         * 自定义车位号(停车场用)
+         */
+        public byte[] szCustomParkNo = new byte[64];
+        /**
+         * 车辆子品牌,需要通过映射表得到真正的子品牌
+         */
+        public short wVehicleSubBrand;
+        /**
+         * 车辆年款,需要通过映射表得到真正的年款
+         */
+        public short wVehicleYearModel;
+        /**
+         * 对应电子车牌标签信息中的过车时间(ThroughTime)
+         */
+        public NET_TIME stuEleTagInfoUTC = new NET_TIME();
+        /**
+         * 录像或抓图文件标志
+         */
+        public int[] emFalgLists = new int[EM_RECORD_SNAP_FLAG_TYPE.FLAG_TYPE_MAX];
+        /**
+         * 标志总数
+         */
+        public int nFalgCount;
+        /**
+         * 安全带状态 {@link EM_SAFE_BELT_STATE}
+         */
+        public int emSafeBelSate;
+        /**
+         * 打电话状态 {@link EM_CALLING_STATE}
+         */
+        public int emCallingState;
+        /**
+         * 车内物品个数
+         */
+        public int nAttachMentNum;
+        /**
+         * 车内物品信息
+         */
+        public NET_ATTACH_MENET_INFO[] stuAttachMent = new NET_ATTACH_MENET_INFO[8];
+        /**
+         * 车牌所属国家和地区
+         */
+        public byte[] szCountry = new byte[32];
+        /**
+         * 车辆类型 {@link EM_CATEGORY_TYPE}
+         */
+        public int emCarType;
+        /**
+         * 遮阳板状态 {@link NET_SUNSHADE_STATE}
+         */
+        public int emSunShadeState;
+        /**
+         * 是否抽烟 {@link EM_SMOKING_STATE}
+         */
+        public int emSmokingState;
+        /**
+         * 年检标个数
+         */
+        public int nAnnualInspection;
+        /**
+         * 字节对齐
+         */
+        public byte[] byReserved = new byte[4];
+        /**
+         * PictureID高四字节
+         */
+        public int nPicIDHigh;
+        /**
+         * PictureID低四字节
+         */
+        public int nPicIDLow;
+        /**
+         * 平台客户端1上传信息
+         */
+        public NET_UPLOAD_CLIENT_INFO stuClient1 = new NET_UPLOAD_CLIENT_INFO();
+        /**
+         * 平台客户端2上传信息
+         */
+        public NET_UPLOAD_CLIENT_INFO stuClient2 = new NET_UPLOAD_CLIENT_INFO();
+        /**
+         * 三地车牌
+         */
+        public byte[] szExtraPlateNumber = new byte[3 * 32];
+        /**
+         * 车牌个数
+         */
+        public int nExtraPlateNumberNum;
+        /**
+         * 车辆进站时间,时间格式:UTC时间(IVSS, 用于加油站场景)
+         */
+        public int nEntranceTime;
+        /**
+         * 车辆加油时间,时间格式:UTC时间(IVSS, 用于加油站场景)
+         */
+        public int nOilTime;
+        /**
+         * 车辆出站时间,时间格式:UTC时间(IVSS, 用于加油站场景)
+         */
+        public int nExitTime;
+        /**
+         * 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅starttime和endtime有效(仅使用starttime和endtime, starttime和endtime在MEDIAFILE_TRAFFICCAR_INFO中)
+         */
+        public int bRealUTC;
+        /**
+         * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+         */
+        public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+        /**
+         * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+         */
+        public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+        /**
+         * 字节补齐
+         */
+        public byte[] byReserved1 = new byte[784];
+
+        public MEDIAFILE_TRAFFICCAR_INFO_EX() {
+            for (int i = 0; i < stuAttachMent.length; i++) {
+                stuAttachMent[i] = new NET_ATTACH_MENET_INFO();
+            }
+            this.dwSize = this.size();
+        }
+    }
+
+
+
+
+    // 车内饰品信息
+    public static class NET_ATTACH_MENET_INFO extends SdkStructure
+    {
+        public int							emAttachMentType;									// 车内物品类型, 对应枚举  EM_ATTACHMENT_TYPE
+        public byte[]                		bReserved1 = new byte[128];                    		// 保留字节
+    }
+
+    // 安全带状态
+    public static class EM_SAFE_BELT_STATE extends SdkStructure
+    {
+        public static final int EM_SAFE_BELT_UNKNOWN = 0;			// 未知
+        public static final int EM_SAFE_BELT_OTHER = 1;				// 未识别
+        public static final int EM_SAFE_BELT_WITH = 2;				// 有安全带
+        public static final int EM_SAFE_BELT_WITHOUT = 3;			// 无安全带
+    }
+
+    // 车内饰品类型
+    public static class EM_ATTACHMENT_TYPE extends SdkStructure
+    {
+        public static final int EM_ATTACHMENT_UNKNOWN = 0;			// 未知
+        public static final int EM_ATTACHMENT_OTHER = 1;			// 其他类型
+        public static final int EM_ATTACHMENT_FURNITURE = 2;		// 摆件
+        public static final int EM_ATTACHMENT_PENDANT = 3;			// 挂件
+        public static final int EM_ATTACHMENT_TISSUEBOX = 4;		// 纸巾盒
+        public static final int EM_ATTACHMENT_DANGER = 5;			// 危险品
+        public static final int EM_ATTACHMENT_PERFUMEBOX = 6;		// 香水
+    }
+
+    // 打电话状态
+    public static class EM_CALLING_STATE extends SdkStructure
+    {
+        public static final int EM_CALLING_UNKNOWN = 0;				// 未知
+        public static final int EM_CALLING_OTHER = 1;				// 未识别
+        public static final int EM_CALLING_NO = 2;					// 未打电话
+        public static final int EM_CALLING_YES = 3;					// 打电话
+    }
+
+    // 车辆类型
+    public static class EM_CATEGORY_TYPE extends SdkStructure
+    {
+        public static final int EM_CATEGORY_UNKNOWN = 0;						// 未知
+        public static final int EM_CATEGORY_OTHER = 1;							// 其他
+        public static final int EM_CATEGORY_MOTOR = 2;							// 机动车
+        public static final int EM_CATEGORY_BUS = 3;							// 公交车
+        public static final int EM_CATEGORY_UNLICENSED_MOTOR = 4;				// 无牌机动车
+        public static final int EM_CATEGORY_LARGE_CAR = 5;						// 大型汽车
+        public static final int EM_CATEGORY_MICRO_CAR = 6;						// 小型汽车
+        public static final int EM_CATEGORY_EMBASSY_CAR = 7;					// 使馆汽车
+        public static final int EM_CATEGORY_MARGINAL_CAR = 8;					// 领馆汽车
+        public static final int EM_CATEGORY_AREAOUT_CAR = 9;					// 境外汽车
+        public static final int EM_CATEGORY_FOREIGN_CAR = 10;					// 外籍汽车
+        public static final int EM_CATEGORY_FARMTRANSMIT_CAR = 11;				// 农用运输车
+        public static final int EM_CATEGORY_TRACTOR = 12;						// 拖拉机
+        public static final int EM_CATEGORY_TRAILER = 13;						// 挂车
+        public static final int EM_CATEGORY_COACH_CAR = 14;						// 教练汽车
+        public static final int EM_CATEGORY_TRIAL_CAR = 15;						// 试验汽车
+        public static final int EM_CATEGORY_TEMPORARY_ENTRY_CAR = 16;			// 临时入境汽车
+        public static final int EM_CATEGORY_TEMPORARY_ENTRY_MOTORCYCLE = 17;	// 临时入境摩托
+        public static final int EM_CATEGORY_TEMPORARY_STEER_CAR = 18;			// 临时行驶车
+        public static final int EM_CATEGORY_LARGE_TRUCK = 19;					// 大货车
+        public static final int EM_CATEGORY_MID_TRUCK = 20;						// 中货车
+        public static final int EM_CATEGORY_MICRO_TRUCK = 21;					// 小货车
+        public static final int EM_CATEGORY_MICROBUS = 22;						// 面包车
+        public static final int EM_CATEGORY_SALOON_CAR = 23;					// 轿车
+        public static final int EM_CATEGORY_CARRIAGE = 24;						// 小轿车
+        public static final int EM_CATEGORY_MINI_CARRIAGE = 25;					// 微型轿车
+        public static final int EM_CATEGORY_SUV_MPV = 26;						// SUV或者MPV
+        public static final int EM_CATEGORY_SUV = 27;							// SUV
+        public static final int EM_CATEGORY_MPV = 28;							// MPV
+        public static final int EM_CATEGORY_PASSENGER_CAR = 29;					// 客车
+        public static final int EM_CATEGORY_MOTOR_BUS = 30;						// 大客
+        public static final int EM_CATEGORY_MID_PASSENGER_CAR = 31;				// 中客车
+        public static final int EM_CATEGORY_MINI_BUS = 32;						// 小客车
+        public static final int EM_CATEGORY_PICKUP = 33;						// 皮卡车
+        public static final int EM_CATEGORY_OILTANK_TRUCK = 34;					// 油罐车
+        public static final int EM_CATEGORY_TANK_CAR = 35;						// 危化品车辆
+        public static final int EM_CATEGORY_SLOT_TANK_CAR = 36;					// 槽罐车
+        public static final int EM_CATEGORY_DREGS_CAR = 37;						// 渣土车
+        public static final int EM_CATEGORY_CONCRETE_MIXER_TRUCK = 38;			// 混凝土搅拌车
+        public static final int EM_CATEGORY_TAXI = 39;							// 出租车
+        public static final int EM_CATEGORY_POLICE = 40;						// 警车
+        public static final int EM_CATEGORY_AMBULANCE = 41;						// 救护车
+        public static final int EM_CATEGORY_GENERAL = 42;						// 普通车
+        public static final int EM_CATEGORY_WATERING_CAR = 43;					// 洒水车
+        public static final int EM_CATEGORY_FIRE_ENGINE = 44;					// 消防车
+        public static final int EM_CATEGORY_MACHINE_TRUCK = 45;					// 工程车
+        public static final int EM_CATEGORY_POWER_LOT_VEHICLE = 46;				// 粉粒物料车
+        public static final int EM_CATEGORY_SUCTION_SEWAGE_TRUCK = 47;			// 吸污车
+        public static final int EM_CATEGORY_NORMAL_TANK_TRUCK = 48;				// 普通罐车
+    }
+
+    // 是否抽烟
+    public static class EM_SMOKING_STATE
+    {
+        public static final int EM_SMOKING_UNKNOWN = 0;							// 未知
+        public static final int EM_SMOKING_NO = 1;								// 未抽烟
+        public static final int EM_SMOKING_YES = 2;								// 抽烟
+    }
+
+    // 对应C++头文件DH_PIC_INFO_EX
+    public static class NET_PIC_INFO_EX extends SdkStructure
+    {
+        public int dwSize;//结构体大小
+        public int dwFileLenth;//文件大小,单位:字节
+        public byte[] szFilePath = new byte[MAX_PATH];// 文件路径
+
+        public NET_PIC_INFO_EX()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //区域;各边距按整长8192的比例
+    public static class NET_RECT extends SdkStructure
+    {
+        public int left;
+        public int top;
+        public int right;
+        public int bottom;
+
+        public String toString() {
+            return "[" + left + " " + top + " " + right + " " + bottom + "]";
+        }
+    }
+
+
+    // 时间段结构
+    public static class NET_TSECT extends SdkStructure
+    {
+        public int             bEnable;        // 当表示录像时间段时,按位表示四个使能,从低位到高位分别表示动检录象、报警录象、普通录象、动检和报警同时发生才录像
+                                               // 当表示布撤防时间段时, 表示使能
+                                               // 当表示推送时间段时, 表示使能:1表示使能,0表示非使能
+        public int             iBeginHour;
+        public int             iBeginMin;
+        public int             iBeginSec;
+        public int             iEndHour;
+        public int             iEndMin;
+        public int             iEndSec;
+
+        public String startTime() {
+            return iBeginHour + ":" + iBeginMin + ":" + iBeginSec;
+        }
+
+        public String endTime() {
+            return iEndHour + ":" + iEndMin + ":" + iEndSec;
+        }
+    }
+
+
+    public static class DH_RECT extends SdkStructure
+    {
+        public NativeLong  	left;
+        public NativeLong  	top;
+        public NativeLong  	right;
+        public NativeLong  	bottom;
+    }
+
+    //二维空间点
+    public static class NET_POINT extends SdkStructure
+    {
+        public short nx;
+        public short ny;
+
+        @Override
+        public String toString() {
+            return "NET_POINT{" +
+                    "nx=" + nx +
+                    ", ny=" + ny +
+                    '}';
+        }
+
+        public NET_POINT() {
+        }
+    }
+
+    //二维空间点
+    public static class DH_POINT extends SdkStructure
+    {
+        public short nx;
+        public short ny;
+
+        public DH_POINT(){}
+
+        public DH_POINT(short x, short y){
+            this.nx = x;
+            this.ny = y;
+        }
+    }
+
+    public static class NET_CANDIDAT_PIC_PATHS extends SdkStructure
+    {
+        public int dwSize;//结构体大小
+        public int nFileCount;//实际文件个数
+        public NET_PIC_INFO_EX[] stFiles = (NET_PIC_INFO_EX[])new NET_PIC_INFO_EX().toArray(NET_MAX_PERSON_IMAGE_NUM);//文件信息
+
+        public NET_CANDIDAT_PIC_PATHS()
+        {
+            this.dwSize = this.size();
+        }
+
+        @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+    }
+
+    //颜色类型
+    public static class EM_COLOR_TYPE extends SdkStructure
+    {
+        public static final int NET_COLOR_TYPE_RED = 0;//红色
+        public static final int NET_COLOR_TYPE_YELLOW = 1;//黄色
+        public static final int NET_COLOR_TYPE_GREEN = 2; //绿色
+        public static final int NET_COLOR_TYPE_CYAN = 3; //青色
+        public static final int NET_COLOR_TYPE_BLUE = 4; //蓝色
+        public static final int NET_COLOR_TYPE_PURPLE = 5; //紫色
+        public static final int NET_COLOR_TYPE_BLACK = 6; //黑色
+        public static final int NET_COLOR_TYPE_WHITE = 7; //白色
+        public static final int NET_COLOR_TYPE_MAX = 8;
+    }
+
+    //视频分析物体信息结构体
+    public static class NET_MSG_OBJECT extends SdkStructure
+    {
+        public int 			nObjectID;							//物体ID,每个ID表示一个唯一的物体
+        public byte[] 		szObjectType = new byte[128];		//物体类型
+        public int 			nConfidence;						//置信度(0~255),值越大表示置信度越高
+        public int 			nAction;						    //物体动作:1:Appear2:Move3:Stay
+        public DH_RECT 		BoundingBox=new DH_RECT();						//包围盒
+        public NET_POINT 	Center=new NET_POINT();								//物体型心
+        public int 			nPolygonNum;						//多边形顶点个数
+        public NET_POINT[]  Contour = new NET_POINT[NET_MAX_POLYGON_NUM];//较精确的轮廓多边形
+        public int 			rgbaMainColor;						//表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时,其值为0x00ff0000.
+
+        public byte[] 		szText = new byte[128];			    // 物体上相关的带0结束符文本,比如车牌,集装箱号等等
+        // "ObjectType"为"Vehicle"或者"Logo"时(尽量使用Logo。Vehicle是为了兼容老产品)表示车标,支持:
+        // "Unknown"未知
+        // "Audi" 奥迪
+        // "Honda" 本田
+        // "Buick" 别克
+        // "Volkswagen" 大众
+        // "Toyota" 丰田
+        // "BMW" 宝马
+        // "Peugeot" 标致
+        // "Ford" 福特
+        // "Mazda" 马自达
+        // "Nissan" 尼桑
+        // "Hyundai" 现代
+        // "Suzuki" 铃木
+        // "Citroen" 雪铁龙
+        // "Benz" 奔驰
+        // "BYD" 比亚迪
+        // "Geely" 吉利
+        // "Lexus" 雷克萨斯
+        // "Chevrolet" 雪佛兰
+        // "Chery" 奇瑞
+        // "Kia" 起亚
+        // "Charade" 夏利
+        // "DF" 东风
+        // "Naveco" 依维柯
+        // "SGMW" 五菱
+        // "Jinbei" 金杯
+        // "JAC" 江淮
+        // "Emgrand" 帝豪
+        // "ChangAn" 长安
+        // "Great Wall" 长城
+        // "Skoda" 斯柯达
+        // "BaoJun" 宝骏
+        // "Subaru" 斯巴鲁
+        // "LandWind" 陆风
+        // "Luxgen" 纳智捷
+        // "Renault" 雷诺
+        // "Mitsubishi" 三菱
+        // "Roewe" 荣威
+        // "Cadillac" 凯迪拉克
+        // "MG" 名爵
+        // "Zotye" 众泰
+        // "ZhongHua" 中华
+        // "Foton" 福田
+        // "SongHuaJiang" 松花江
+        // "Opel" 欧宝
+        // "HongQi" 一汽红旗
+        // "Fiat" 菲亚特
+        // "Jaguar" 捷豹
+        // "Volvo" 沃尔沃
+        // "Acura" 讴歌
+        // "Porsche" 保时捷
+        // "Jeep" 吉普
+        // "Bentley" 宾利
+        // "Bugatti" 布加迪
+        // "ChuanQi" 传祺
+        // "Daewoo" 大宇
+        // "DongNan" 东南
+        // "Ferrari" 法拉利
+        // "Fudi" 福迪
+        // "Huapu" 华普
+        // "HawTai" 华泰
+        // "JMC" 江铃
+        // "JingLong" 金龙客车
+        // "JoyLong" 九龙
+        // "Karry" 开瑞
+        // "Chrysler" 克莱斯勒
+        // "Lamborghini" 兰博基尼
+        // "RollsRoyce" 劳斯莱斯
+        // "Linian" 理念
+        // "LiFan" 力帆
+        // "LieBao" 猎豹
+        // "Lincoln" 林肯
+        // "LandRover" 路虎
+        // "Lotus" 路特斯
+        // "Maserati" 玛莎拉蒂
+        // "Maybach" 迈巴赫
+        // "Mclaren" 迈凯轮
+        // "Youngman" 青年客车
+        // "Tesla" 特斯拉
+        // "Rely" 威麟
+        // "Lsuzu" 五十铃
+        // "Yiqi" 一汽
+        // "Infiniti" 英菲尼迪
+        // "YuTong" 宇通客车
+        // "AnKai" 安凯客车
+        // "Canghe" 昌河
+        // "HaiMa" 海马
+        // "Crown" 丰田皇冠
+        // "HuangHai" 黄海
+        // "JinLv" 金旅客车
+        // "JinNing" 精灵
+        // "KuBo" 酷博
+        // "Europestar" 莲花
+        // "MINI" 迷你
+        // "Gleagle" 全球鹰
+        // "ShiDai" 时代
+        // "ShuangHuan" 双环
+        // "TianYe" 田野
+        // "WeiZi" 威姿
+        // "Englon" 英伦
+        // "ZhongTong" 中通客车
+        // "Changan" 长安轿车
+        // "Yuejin" 跃进
+        // "Taurus" 金牛星
+        // "Alto" 奥拓
+        // "Weiwang" 威旺
+        // "Chenglong" 乘龙
+        // "Haige" 海格
+        // "Shaolin" 少林客车
+        // "Beifang" 北方客车
+        // "Beijing" 北京汽车
+        // "Hafu" 哈弗
+
+        public byte[] 		szObjectSubType = new byte[62];		// 物体子类别,根据不同的物体类型,可以取以下子类型:
+        // Vehicle Category:"Unknown"  未知,"Motor" 机动车,"Non-Motor":非机动车,"Bus": 公交车,"Bicycle" 自行车,"Motorcycle":摩托车,"PassengerCar":客车,
+        // "LargeTruck":大货车,    "MidTruck":中货车,"SaloonCar":轿车,"Microbus":面包车,"MicroTruck":小货车,"Tricycle":三轮车,    "Passerby":行人
+        // Plate Category:"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,
+        // "SAR" 港澳特区号牌,"Trainning" 教练车号牌
+        // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌
+        // HumanFace Category:"Normal" 普通人脸,"HideEye" 眼部遮挡,"HideNose" 鼻子遮挡,"HideMouth" 嘴部遮挡
+
+        public short        wColorLogoIndex;                    // 车标索引
+        public short 		wSubBrand;   						// 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
+        public byte 		byReserved1;
+        public byte 		bPicEnble;							//是否有物体对应图片文件信息, 类型小bool, 取值0或者1
+        public NET_PIC_INFO stPicInfo=new NET_PIC_INFO();							//物体对应图片信息
+        public byte 		bShotFrame;							//是否是抓拍张的识别结果,  类型小bool, 取值0或者1
+        public byte 		bColor;								//物体颜色(rgbaMainColor)是否可用, 类型小bool, 取值0或者1
+        public byte 		byReserved2;
+        public byte 		byTimeType;							//时间表示类型,详见 EM_TIME_TYPE 说明
+        public NET_TIME_EX  stuCurrentTime=new NET_TIME_EX();						//针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
+        public NET_TIME_EX  stuStartTime=new NET_TIME_EX();						//开始时间戳(物体开始出现时)
+        public NET_TIME_EX  stuEndTime=new NET_TIME_EX();							//结束时间戳(物体最后出现时)
+        public DH_RECT 		stuOriginalBoundingBox=new DH_RECT();				//包围盒(绝对坐标)
+        public DH_RECT 		stuSignBoundingBox=new DH_RECT();					//车标坐标包围盒
+        public int 			dwCurrentSequence;					//当前帧序号(抓下这个物体时的帧)
+        public int 			dwBeginSequence;					//开始帧序号(物体开始出现时的帧序号)
+        public int 			dwEndSequence;						//结束帧序号(物体消逝时的帧序号)
+        public long 		nBeginFileOffse;					//开始时文件偏移,单位:字(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public long 		nEndFileOffset;						//结束时文件偏移,单位:字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public byte[] 		byColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];			//物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见 EM_COLOR_TYPE
+        public byte[] 		byUpperBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];	//上半身物体颜色相似度(物体类型为人时有效)
+        public byte[] 		byLowerBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];	//下半身物体颜色相似度(物体类型为人时有效)
+        public int 			nRelativeID;						//相关物体ID
+        public byte[] 		szSubText = new byte[20];			//"ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
+        public short 		wBrandYear;   						// 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
+
+        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
+            int alignment = super.getNativeAlignment(type, value, isFirstElement);
+            return Math.min(4, alignment);
+        }
+        public NET_MSG_OBJECT(){
+
+        for(int i=0;i<Contour.length;i++){
+            Contour[i]=new NET_POINT();
+        }
+        }
+    }
+
+
+    // 物体截图信息
+    public static class IMAGE_INFO extends SdkStructure
+    {
+        public int					nLength;			// 图片大小,单位:字节
+        public int					nWidth;				// 图片宽度
+        public int					nHeight;			// 图片高度
+        public byte[]				szFilePath=new byte[260];	// 文件路径
+        public byte[]				byReserved=new byte[512];	// 预留字节
+    };
+
+    // 目标人脸信息
+    public static class FACE_INFO_OBJECT extends SdkStructure
+    {
+        public IMAGE_INFO			   stuImageInfo;			// 物体截图信息
+        public int                     emSex;                   // 性别类型
+        public int                     nAge;                    // 年龄
+        public int                     emGlasses;               // 是否戴眼镜
+        public int                     emEmotion;               // 人脸表情
+        public byte[]                  szReserved = new byte[4];
+        public int			           emEye;					// 眼睛状态
+        public int			           emMouth;					// 嘴巴状态
+        public int			           emMask;				    // 是否带口罩
+        public int			           emBeard;				    // 是否有胡子
+        public int					   nAttractive;				// 魅力值,0表示未识别,识别时范围1-100,得分高魅力高
+        public NET_EULER_ANGLE		   stuFaceCaptureAngle;		// 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
+        // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
+        public int					   nFaceQuality;			// 人脸抓拍质量分数
+        public double                  fMaxTemp;                // 温度信息
+        public int                     nIsOverTemp;             // 是否温度异常
+        public int                     nIsUnderTemp;            // 是否温度异常
+        public int                     emTempUnit;              // 温度单位 EM_TEMPERATURE_UNIT
+        public byte[]                  byReserved=new byte[2012];			// 保留字段
+    };
+
+    public static class EM_TEMPERATURE_UNIT extends SdkStructure
+    {
+        public final static int EM_TEMPERATURE_CENTIGRADE = 0;          // 摄氏度
+        public final static int EM_TEMPERATURE_FAHRENHEIT = 1;          // 华氏度
+        public final static int EM_TEMPERATURE_KELVIN = 2;              // 开尔文
+    }
+
+    // NET_FILE_QUERY_FACE 对应的目标识别服务FINDNEXT查询返回参数
+    public static class MEDIAFILE_FACERECOGNITION_INFO extends SdkStructure
+    {
+        public int 						dwSize;							// 结构体大小
+        public int 						bGlobalScenePic;				// 全景图是否存在, BOOL类型,取值0或1
+        public NET_PIC_INFO_EX 			stGlobalScenePic;				// 全景图片文件路径
+        public NET_MSG_OBJECT 			stuObject;						// 目标人脸物体信息
+        public NET_PIC_INFO_EX 			stObjectPic;					// 目标人脸文件路径
+        public int 						nCandidateNum;					// 当前人脸匹配到的候选对象数量
+        public CANDIDATE_INFO[] 		stuCandidates = (CANDIDATE_INFO[])new CANDIDATE_INFO().toArray(NET_MAX_CANDIDATE_NUM); //当前人脸匹配到的候选对象信息
+        public NET_CANDIDAT_PIC_PATHS[] stuCandidatesPic = (NET_CANDIDAT_PIC_PATHS[])new NET_CANDIDAT_PIC_PATHS().toArray(NET_MAX_CANDIDATE_NUM);// 当前人脸匹配到的候选对象图片文件路径
+        public NET_TIME 				stTime;							// 报警发生时间
+        public byte[] 					szAddress = new byte[MAX_PATH]; // 报警发生地点
+        public int 						nChannelId;						// 通道号
+        public int						bUseCandidatesEx;				// 是否使用候选对象扩展结构体, 1-true, 0-false
+        // 若为TRUE, 则表示使用stuCandidatesEx, 且stuCandidates无效, 否则相反
+        public int						nCandidateExNum;				// 当前人脸匹配到的候选对象(扩展结构体) 数量
+        public CANDIDATE_INFOEX[]		stuCandidatesEx = (CANDIDATE_INFOEX[])new CANDIDATE_INFOEX().toArray(NET_MAX_CANDIDATE_NUM);	// 当前人脸匹配到的候选对象信息, 实际返回个数同nCandidateNum
+        public FACE_INFO_OBJECT			stuFaceInfoObject;                      // 目标人脸信息
+        public NET_POINT                stuFaceCenter;                          // 人脸型心(不是包围盒中心), 0-8191相对坐标, 相对于小图
+        public NET_MEDIAFILE_GENERAL_INFO	stuGeneralInfo;							// 通用信息
+    	public int						nRecNo;									// 数据库记录号
+    	public int						bRealUTC;								// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示stuStartTimeRealUTC和stuEndTimeRealUTC无效
+    	public NET_TIME					stuStartTimeRealUTC;					// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+    	public NET_TIME					stuEndTimeRealUTC;						// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+        public MEDIAFILE_FACERECOGNITION_INFO()
+        {
+            this.dwSize = this.size();
+        }
+
+        @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+
+    }
+
+    //每个视频输入通道对应的所有事件规则:缓冲区pRuleBuf填充多个事件规则信息,每个事件规则信息内容为 CFG_RULE_INFO + "事件类型对应的规则配置结构体"。
+    public static class CFG_ANALYSERULES_INFO extends SdkStructure
+    {
+        public int 			nRuleCount;  // 事件规则个数
+        public Pointer  	pRuleBuf;    // 每个视频输入通道对应的视频分析事件规则配置缓冲, 对应  CFG_RULE_INFO[]
+        public int 			nRuleLen;    // 缓冲大小
+    }
+
+    // 规则通用信息
+    public static class CFG_RULE_COMM_INFO extends SdkStructure
+    {
+        public byte 		bRuleId;							// 规则编号
+        public int   		emClassType;						// 规则所属的场景, EM_SCENE_TYPE
+        public byte[] 		bReserved = new byte[512];			// 保留字节
+    }
+
+    public static class CFG_RULE_INFO extends SdkStructure
+    {
+        public int 					dwRuleType;			// 事件类型,详见dhnetsdk.h中"智能分析事件类型"
+        public int 					nRuleSize;			// 该事件类型规则配置结构体大小
+        public CFG_RULE_COMM_INFO   stuRuleCommInfo;	// 规则通用信息
+    }
+
+    // 应用场景, 内容与 EM_SCENE_CLASS_TYPE 一致
+    public static class EM_SCENE_TYPE extends SdkStructure
+    {
+        public static final int EM_SCENE_UNKNOW = 0;				// 未知
+        public static final int EM_SCENE_NORMAL = 1;				// "Normal" 普通场景
+        public static final int EM_SCENE_TRAFFIC = 2;				// "Traffic" 交通场景
+        public static final int EM_SCENE_TRAFFIC_PATROL = 3;		// "TrafficPatrol" 交通巡视
+        public static final int EM_SCENE_FACEDETECTION = 4;			// "FaceDetection" 目标检测/目标识别
+        public static final int EM_SCENE_ATM = 5;					// "ATM"
+        public static final int EM_SCENE_INDOOR = 6;				// "Indoor"  室内行为分析,和普通规则相同,对室内场景的算法优化版
+        public static final int EM_SCENE_FACERECOGNITION = 7;		// "FaceRecognition" 目标识别
+        public static final int EM_SCENE_PS = 8;				
+        public static final int EM_SCENE_NUMBERSTAT = 9;			// "NumberStat" 客流量统计
+        public static final int EM_SCENE_HEAT_MAP = 10;				// "HeatMap" 热度图
+        public static final int EM_SCENE_VIDEODIAGNOSIS = 11;		// "VideoDiagnosis" 视频诊断
+        public static final int EM_SCENE_VEHICLEANALYSE = 12;		// "VehicleAnalyse" 车辆特征检测分析
+        public static final int EM_SCENE_COURSERECORD = 13;			// "CourseRecord" 自动录播
+        public static final int EM_SCENE_VEHICLE = 14;				// "Vehicle" 车载场景(车载行业用,不同于智能交通的Traffic)
+        public static final int EM_SCENE_STANDUPDETECTION = 15;		// "StandUpDetection" 起立检测
+        public static final int EM_SCENE_GATE = 16;					// "Gate" 卡口
+        public static final int EM_SCENE_SDFACEDETECTION = 17;		// "SDFaceDetect"  多预置点目标检测,配置一条规则但可以在不同预置点下生效
+        public static final int EM_SCENE_HEAT_MAP_PLAN = 18;		// "HeatMapPlan" 球机热度图计划
+        public static final int EM_SCENE_NUMBERSTAT_PLAN = 19;		// "NumberStatPlan"	球机客流量统计计划
+        public static final int EM_SCENE_ATMFD = 20;				// "ATMFD"金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
+        public static final int EM_SCENE_HIGHWAY = 21;				// "Highway" 高速交通事件检测
+        public static final int EM_SCENE_CITY = 22;					// "City" 城市交通事件检测
+        public static final int EM_SCENE_LETRACK = 23;				// "LeTrack" 民用简易跟踪
+        public static final int EM_SCENE_SCR = 24;					// "SCR"打靶相机
+        public static final int EM_SCENE_STEREO_VISION = 25;    	// "StereoVision"立体视觉(双目)
+        public static final int EM_SCENE_HUMANDETECT = 26;      	// "HumanDetect"人体检测
+        public static final int EM_SCENE_FACEANALYSIS = 27;			// "FaceAnalysis" 人脸分析(同时支持目标检测、目标识别、人脸属性等综合型业务)
+        public static final int EM_SCENE_XRAY_DETECTION = 28;		// "XRayDetection" X光检测
+        public static final int EM_SCENE_STEREO_NUMBER = 29;    	// "StereoNumber" 双目相机客流量统计
+        public static final int EM_SCENE_CROWD_DISTRI_MAP = 30;		// "CrowdDistriMap" 人群分布图
+        public static final int EM_SCENE_CLASS_OBJECTDETECT = 31;	// "ObjectDetect"目标检测
+
+        public static final int EM_SCENE_FACEATTRIBUTE = 32;		// "FaceAttribute" IVSS目标检测
+        public static final int EM_SCENE_FACECOMPARE = 33;		// "FaceCompare" IVSS目标识别
+        public static final int EM_SCENE_STEREO_BEHAVIOR = 34;	// "StereoBehavior" 立体行为分析(典型场景ATM舱)
+        public static final int EM_SCENE_INTELLICITYMANAGER = 35;// "IntelliCityMgr" 智慧城管
+        public static final int EM_SCENE_PROTECTIVECABIN = 36;	// "ProtectiveCabin" 防护舱(ATM舱内)
+        public static final int EM_SCENE_AIRPLANEDETECT = 37;	// "AirplaneDetect" 飞机行为检测
+        public static final int EM_SCENE_CROWDPOSTURE = 38;		// "CrowdPosture" 人群态势(人群分布图服务)
+        public static final int EM_SCENE_PHONECALLDETECT = 39;	// "PhoneCallDetect"  打电话检测
+        public static final int EM_SCENE_SMOKEDETECTION = 40;	// "SmokeDetection"   烟雾检测
+        public static final int EM_SCENE_BOATDETECTION = 41;		// "BoatDetection"	  船只检测
+        public static final int EM_SCENE_SMOKINGDETECT = 42;		// "SmokingDetect"	  吸烟检测
+        public static final int EM_SCENE_WATERMONITOR = 43;		// "WaterMonitor"	  水利监测
+        public static final int EM_SCENE_GENERATEGRAPHDETECTION = 44; // GenerateGraphDetection 生成图规则
+        public static final int EM_SCENE_TRAFFIC_PARK = 45;		// "TrafficPark"		交通停车
+        public static final int EM_SCENE_OPERATEMONITOR = 46; 	// "OperateMonitor"     作业检测
+        public static final int EM_SCENE_INTELLI_RETAIL = 47;	// "IntelliRetail" 智慧零售大类
+        public static final int EM_SCENE_CLASSROOM_ANALYSE = 48;	// "ClassroomAnalyse" 教育智慧课堂
+        public static final int EM_SCENE_FEATURE_ABSTRACT = 49;     // "FeatureAbstract" 特征向量提取大类
+        public static final int EM_SCENE_FACEBODY_DETECT = 50; 	    // "FaceBodyDetect"人体检测
+        public static final int EM_SCENE_FACEBODY_ANALYSE = 51;	    // "FaceBodyAnalyse"人体识别
+        public static final int EM_SCENE_VEHICLES_DISTRI = 52;	    // "VehiclesDistri"车辆密度
+        public static final int EM_SCENE_INTELLI_BREED = 53;        // "IntelliBreed" 智慧养殖检测
+        public static final int EM_SCENE_INTELLI_PS = 54;   
+        public static final int EM_SCENE_ELECTRIC_DETECT = 55;      // "ElectricDetect" 电力检测
+        public static final int EM_SCENE_RADAR_DETECT = 56;		    // "RadarDetect" 雷检检测        
+        public static final int EM_SCENE_PARKINGSPACE=57;           // "ParkingSpace" 车位检测大类
+        public static final int EM_SCENE_INTELLI_FINANCE = 58;      // "IntelliFinance" 智慧金融
+        public static final int EM_SCENE_CROWD_ABNORMAL = 59;	    // "CrowdAbnormal"        
+        public static final int EM_SCENE_ANATOMYTEMP_DETECT = 60;   // "AnatomyTempDetect" 超温检测
+        public static final int EM_SCENE_WEATHER_MONITOR = 61;	    // "WeatherMonitor"天气监控
+        public static final int EM_SCENE_ELEVATOR_ACCESS_CONTROL = 62;// "ElevatorAccessControl" 电梯门禁
+        public static final int EM_SCENE_BREAK_RULE_BUILDING = 63;  //  "BreakRuleBuilding"违章建筑
+        public static final int EM_SCENE_PANORAMA_TRAFFIC = 64;     // "PanoramaTraffic"全景交通
+        public static final int EM_SCENE_PORTRAIT_DETECT = 65;      // "PortraitDetect"人像检测
+        public static final int EM_SCENE_CONVEY_OR_BLOCK = 66;	    // "ConveyorBlock" 传送带阻塞
+        public static final int EM_SCENE_KITCHEN_ANIMAL = 67;       // "KitchenAnimal" 厨房有害动物检测
+        public static final int EM_SCENE_ALLSEEINGEYE = 68;         // "AllSeeingEye" 万物检测
+        public static final int EM_SCENE_DRIVE = 69;                // "Drive" 驾驶行为分析
+        public static final int EM_SCENE_DRIVEASSISTANT = 70;       // "DriveAssistant" 高级驾驶辅助系统
+        public static final int EM_SCENE_INCABINMONITOR = 71;       // "InCabinMonitor" 车内驾驶舱监测
+        public static final int EM_SCENE_BLINDSPOTDETECTION = 72;   // "BlindSpotDetection" 盲区检测
+        public static final int EM_SCENE_CONVERYER_BELT = 73;       // "ConveyerBelt" 传送带检测
+        public static final int EM_SCENE_INTELLI_LOGISTICS = 74;    // "IntelliLogistics"  智慧物流
+        public static final int EM_SCENE_SMOKE_FIRE = 75;           // "SmokeFire" 烟火检测
+        public static final int EM_SCENE_OBJECT_MONITOR = 76;       // "ObjectMonitor" 物品监控
+        public static final int EM_SCENE_FIRE_FACILITIES = 77;      // "FireFacilities" 消防设施检测
+        public static final int EM_SCENE_FIRE_CONTROL = 78;		    // "IntelliFireControl" 智慧消防
+        public static final int EM_SCENE_INTELLI_PARKING = 79;      // "IntelliParking" 智能停车
+        public static final int EM_SCENE_FINANCE_REGULATION = 80;   // "FinanceRegulation" 金融常规
+        public static final int EM_SCENE_ENERGY = 81;               // "Energy" 智慧能源
+        public static final int EM_SCENE_FIRE_CONTROL_EX = 82;	    // "FireControl" 智慧消防
+        public static final int EM_SCENE_ANIMAL_DETECTION = 83;		// "AnimalDetection" 动物检测
+        public static final int EM_SCENE_FIRE_CONTROL_MONITOR = 84;	// "FireControlMonitor" 火警监控
+        public static final int EM_SCENE_PROTECTIVE_SUIT = 85;      // "ProtectiveSuit" 防护服或工作服检测
+        public static final int EM_SCENE_FISH_MONITOR = 86;			// "FishMonitor" 鱼群监测
+        public static final int EM_SCENE_SHOPTRUCK_DETECT = 87;		// "ShopTruckDetect" 工程车检测
+        
+    }
+
+    public static class EM_SCENE_CLASS_TYPE extends SdkStructure
+    {
+
+        public static final int EM_SCENE_CLASS_UNKNOW = 0;			// 未知
+        public static final int EM_SCENE_CLASS_NORMAL = 1;			// "Normal" 普通场景
+        public static final int EM_SCENE_CLASS_TRAFFIC = 2;			// "Traffic" 交通场景
+        public static final int EM_SCENE_CLASS_TRAFFIC_PATROL = 3;	// "TrafficPatrol" 交通巡视
+        public static final int EM_SCENE_CLASS_FACEDETECTION = 4;	// "FaceDetection" 目标检测/目标识别
+        public static final int EM_SCENE_CLASS_ATM = 5;				// "ATM"
+        public static final int EM_SENCE_CLASS_INDOOR = 6;			// "Indoor"  室内行为分析,和普通规则相同,对室内场景的算法优化版
+        public static final int EM_SENCE_CLASS_FACERECOGNITION = 7;	// "FaceRecognition" 目标识别
+        public static final int EM_SENCE_CLASS_PS = 8;			
+        public static final int EM_SENCE_CLASS_NUMBERSTAT = 9;		// "NumberStat" 客流量统计
+        public static final int EM_SENCE_CLASS_HEAT_MAP = 10;		// "HeatMap" 热度图
+        public static final int EM_SENCE_CLASS_VIDEODIAGNOSIS = 11;	// "VideoDiagnosis" 视频诊断
+        public static final int EM_SENCE_CLASS_VEHICLEANALYSE = 12;	// "VehicleAnalyse" 车辆特征检测分析
+        public static final int EM_SENCE_CLASS_COURSERECORD = 13;	// "CourseRecord" 自动录播
+        public static final int EM_SENCE_CLASS_VEHICLE = 14;			// "Vehicle" 车载场景(车载行业用,不同于智能交通的Traffic)
+        public static final int EM_SENCE_CLASS_STANDUPDETECTION = 15;	// "StandUpDetection" 起立检测
+        public static final int EM_SCENE_CLASS_GATE = 16;			// "Gate" 卡口
+        public static final int EM_SCENE_CLASS_SDFACEDETECTION = 17;	// "SDFaceDetect"  多预置点目标检测,配置一条规则但可以在不同预置点下生效
+        public static final int EM_SCENE_CLASS_HEAT_MAP_PLAN = 18;	// "HeatMapPlan" 球机热度图计划
+        public static final int EM_SCENE_CLASS_NUMBERSTAT_PLAN = 19;	// "NumberStatPlan"	球机客流量统计计划
+        public static final int EM_SCENE_CLASS_ATMFD = 20;			// "ATMFD"金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
+        public static final int EM_SCENE_CLASS_HIGHWAY = 21;			// "Highway" 高速交通事件检测
+        public static final int EM_SCENE_CLASS_CITY = 22;			// "City" 城市交通事件检测
+        public static final int EM_SCENE_CLASS_LETRACK = 23;			// "LeTrack" 民用简易跟踪
+        public static final int EM_SCENE_CLASS_SCR = 24;				// "SCR" 打靶相机
+        public static final int EM_SCENE_CLASS_STEREO_VISION = 25;   // "StereoVision" 立体视觉(双目)
+        public static final int EM_SCENE_CLASS_HUMANDETECT = 26;		// "HumanDetect"人体检测
+        public static final int EM_SCENE_CLASS_FACEANALYSIS = 27;	// "FaceAnalysis" 人脸分析
+        public static final int EM_SCENE_CLASS_XRAY_DETECTION = 28;	// "XRayDetection" X光检测
+        public static final int EM_SCENE_CLASS_STEREO_NUMBER = 29;	// "StereoNumber" 双目相机客流量统计
+        public static final int EM_SCENE_CLASS_CROWDDISTRIMAP = 30;	// "CrowdDistriMap"人群分布图
+        public static final int EM_SCENE_CLASS_OBJECTDETECT = 31;	// "ObjectDetect"目标检测
+        public static final int EM_SCENE_CLASS_FACEATTRIBUTE = 32;	// "FaceAttribute" IVSS目标检测
+        public static final int EM_SCENE_CLASS_FACECOMPARE = 33;		// "FaceCompare" IVSS目标识别
+        public static final int EM_SCENE_CLASS_STEREO_BEHAVIOR = 34;	// "StereoBehavior" 立体行为分析(典型场景ATM舱)
+        public static final int EM_SCENE_CLASS_INTELLICITYMANAGER = 35;	// "IntelliCityMgr" 智慧城管
+        public static final int EM_SCENE_CLASS_PROTECTIVECABIN = 36;	// "ProtectiveCabin" 防护舱(ATM舱内)
+        public static final int EM_SCENE_CLASS_AIRPLANEDETECT = 37;	// "AirplaneDetect" 飞机行为检测
+        public static final int EM_SCENE_CLASS_CROWDPOSTURE = 38;	// "CrowdPosture" 人群态势(人群分布图服务)
+        public static final int EM_SCENE_CLASS_PHONECALLDETECT = 39;	// "PhoneCallDetect"  打电话检测
+        public static final int EM_SCENE_CLASS_SMOKEDETECTION = 40;	// "SmokeDetection"   烟雾检测
+        public static final int EM_SCENE_CLASS_BOATDETECTION = 41;	// "BoatDetection"	  船只检测
+        public static final int EM_SCENE_CLASS_SMOKINGDETECT = 42;	// "SmokingDetect"	  吸烟检测
+        public static final int EM_SCENE_CLASS_WATERMONITOR = 43;	// "WaterMonitor"	  水利监测
+        public static final int EM_SCENE_CLASS_GENERATEGRAPHDETECTION = 44;// "GenerateGraphDetection" 生成图规则
+        public static final int EM_SCENE_CLASS_TRAFFIC_PARK = 45;	// "TrafficPark"		  交通停车
+        public static final int EM_SCENE_CLASS_OPERATEMONITOR = 46; 	// "OperateMonitor" 作业检测
+        public static final int EM_SCENE_CLASS_INTELLI_RETAIL = 47;	// IntelliRetail" 智慧零售大类
+        public static final int EM_SCENE_CLASS_CLASSROOM_ANALYSE = 48;// "ClassroomAnalyse" 教育智慧课堂
+        public static final int EM_SCENE_CLASS_FEATURE_ABSTRACT = 49;  // "FeatureAbstract" 特征向量提取大类
+        public static final int EM_SCENE_CLASS_FACEBODY_DETECT = 50;	// "FaceBodyDetect" 人像检测大类
+        public static final int EM_SCENE_CLASS_FACEBODY_ANALYSE = 51;// "FaceBodyAnalyse"人像识别大类
+        public static final int EM_SCENE_CLASS_VEHICLES_DISTRI = 52;	// "VehiclesDistri" 车辆密度 
+        public static final int EM_SCENE_CLASS_INTELLI_BREED = 53;   // "IntelliBreed"智慧养殖检测
+        public static final int EM_SCENE_CLASS_INTELLI_PS = 54; 
+        public static final int EM_SCENE_CLASS_ELECTRIC_DETECT = 55; // "ElectricDetect" 电力检测
+        public static final int EM_SCENE_CLASS_RADAR_DETECT = 56;    // "RadarDetect"雷达检测
+        public static final int EM_SCENE_CLASS_PARKINGSPACE = 57;    // "ParkingSpace" 车位检测大类
+        public static final int EM_SCENE_CLASS_INTELLI_FINANCE = 58; // "IntelliFinance"智慧金融        
+        public static final int EM_SCENE_CLASS_CROWD_ABNORMAL=59;	  // "CrowdAbnormal" 人群异常检测
+        public static final int EM_SCENE_CLASS_ANATOMYTEMP_DETECT = 60;	// "AnatomyTempDetect" 
+        public static final int EM_CLASS_WEATHER_MONITOR  = 61;	// 天气监控 "WeatherMonitor"
+        public static final int EM_SCENE_CLASS_ELEVATOR_ACCESS_CONTROL = 62;	// "ElevatorAccessControl" 电梯门禁
+        public static final int EM_SCENE_CLASS_BREAK_RULE_BUILDING = 63;		// 	"BreakRuleBuilding"违章建筑
+        public static final int EM_SCENE_CLASS_PANORAMA_TRAFFIC = 64;   // "PanoramaTraffic"全景交通
+        public static final int EM_SCENE_CLASS_PORTRAIT_DETECT = 65;   // "PortraitDetect"人像检测
+        public static final int EM_SCENE_CLASS_CONVEY_OR_BLOCK = 66;	   // "ConveyorBlock" 传送带阻塞
+        public static final int EM_SCENE_CLASS_KITCHEN_ANIMAL = 67;      // "KitchenAnimal" 厨房有害动物检测
+        public static final int EM_SCENE_CLASS_ALLSEEINGEYE = 68;       // "AllSeeingEye" 万物检测
+        public static final int EM_SCENE_CLASS_DRIVE = 69;             // "Drive" 驾驶行为分析
+        public static final int EM_SCENE_CLASS_DRIVEASSISTANT = 70;    // "DriveAssistant" 高级驾驶辅助系统
+        public static final int EM_SCENE_CLASS_INCABINMONITOR = 71;    // "InCabinMonitor" 车内驾驶舱监测
+        public static final int EM_SCENE_CLASS_BLINDSPOTDETECTION =72; // "BlindSpotDetection" 盲区检测
+        public static final int EM_SCENE_CLASS_CONVERYER_BELT = 73;     // "ConveyerBelt" 传送带检测
+        public static final int EM_SCENE_CLASS_INTELLI_LOGISTICS = 74; // "IntelliLogistics"  智慧物流
+        public static final int EM_SCENE_CLASS_SMOKE_FIRE = 75;          // "SmokeFire" 烟火检测
+        public static final int EM_SCENE_CLASS_OBJECT_MONITOR = 76;      // "ObjectMonitor" 物品监控
+        public static final int EM_SCENE_CLASS_FIRE_FACILITIES = 77;   // "FireFacilities" 消防设施检测
+        public static final int EM_SCENE_CLASS_FIRE_CONTROL = 78;		//  "IntelliFireControl" 智慧消防
+        public static final int EM_SCENE_CLASS_INTELLI_PARKING = 79;	// "IntelliParking" 智能停车
+        public static final int EM_SCENE_CLASS_FINANCE_REGULATION = 80;		// "FinanceRegulation" 金融常规
+        public static final int EM_SCENE_CLASS_ENERGY = 81;                 // "Energy" 智慧能源
+        public static final int EM_SCENE_CLASS_FIRE_CONTROL_EX = 82;		// "FireControl" 智慧消防
+        public static final int EM_SCENE_CLASS_ANIMAL_DETECTION = 83;    // "AnimalDetection" 动物检测
+        public static final int EM_SCENE_CLASS_FIRE_CONTROL_MONITOR = 84;    // "FireControlMonitor" 火警监控
+        public static final int EM_SCENE_CLASS_PROTECTIVE_SUIT =85;         // "ProtectiveSuit" 防护服或工作服检测
+        public static final int EM_SCENE_CLASS_FISH_MONITOR = 86;			// "FishMonitor" 鱼群监测
+        public static final int EM_SCENE_CLASS_SHOPTRUCK_DETECT = 87;	// "ShopTruckDetect"工程车检测
+    }
+
+    //区域顶点信息
+    public static class CFG_POLYGON extends SdkStructure
+    {
+        public int nX;//0~8191
+        public int nY;
+    }
+
+    //区域信息
+    public static class CFG_REGION extends SdkStructure
+    {
+        public int nPointNum;
+        public CFG_POLYGON[] stuPolygon = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);
+    }
+
+    public static class CFG_SIZE_Attribute extends Union
+    {
+        public float nWidth;//宽
+        public float nArea;//面积
+    }
+
+    //Size
+    public static class CFG_SIZE extends SdkStructure
+    {
+        public CFG_SIZE_Attribute attr=new CFG_SIZE_Attribute();
+        public float nHeight;//高
+    }
+
+    public static class NET_SIZE extends SdkStructure
+    {
+        public int                 nWidth;                     // 宽度
+        public int                 nHeight;                    // 高度
+    }
+
+    //校准框信息
+    public static class CFG_CALIBRATEBOX_INFO extends SdkStructure
+    {
+        public CFG_POLYGON stuCenterPoint;//校准框中心点坐标(点的坐标归一化到[0,8191]区间)
+        public float fRatio;//相对基准校准框的比率(比如1表示基准框大小,0.5表示基准框大小的一半)
+    }
+
+    //尺寸过滤器
+    public static class CFG_SIZEFILTER_INFO extends SdkStructure
+    {
+        public int nCalibrateBoxNum;//校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//校准框(远端近端标定模式下有效)
+        public byte bMeasureModeEnable;//计量方式参数是否有效, 类型bool, 取值0或1
+        public byte bMeasureMode;//计量方式,0-像素,不需要远端、近端标定,1-实际长度,单位:米,2-远端近端标定后的像素
+        public byte bFilterTypeEnable;//过滤类型参数是否有效, 类型bool, 取值0或1
+        // ByArea,ByRatio仅作兼容,使用独立的ByArea和ByRatio选项代替 2012/03/06
+        public byte bFilterType;//过滤类型:0:"ByLength",1:"ByArea",2"ByWidthHeight"
+        public byte[] bReserved=new byte[2];                             // 保留字段
+        public byte bFilterMinSizeEnable;//物体最小尺寸参数是否有效, 类型bool, 取值0或1
+        public byte bFilterMaxSizeEnable;//物体最大尺寸参数是否有效, 类型bool, 取值0或1
+        public CFG_SIZE stuFilterMinSize;//物体最小尺寸"ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。
+        public CFG_SIZE stuFilterMaxSize;//物体最大尺寸"ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。
+        public byte abByArea;//类型bool, 取值0或1
+        public byte abMinArea;//类型bool, 取值0或1
+        public byte abMaxArea;//类型bool, 取值0或1
+        public byte abMinAreaSize;//类型bool, 取值0或1
+        public byte abMaxAreaSize;//类型bool, 取值0或1
+        public byte bByArea;//是否按面积过滤通过能力ComplexSizeFilter判断是否可用, 类型bool, 取值0或1
+        public byte[] bReserved1 = new byte[2];                            // 补齐
+        public float nMinArea;//最小面积
+        public float nMaxArea;//最大面积
+        public CFG_SIZE stuMinAreaSize;//最小面积矩形框尺寸"计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸;
+        public CFG_SIZE stuMaxAreaSize;//最大面积矩形框尺寸,同上
+        public byte abByRatio;//类型bool, 取值0或1
+        public byte abMinRatio;//类型bool, 取值0或1
+        public byte abMaxRatio;//类型bool, 取值0或1
+        public byte abMinRatioSize;//类型bool, 取值0或1
+        public byte abMaxRatioSize;//类型bool, 取值0或1
+        public byte bByRatio;//是否按宽高比过滤通过能力ComplexSizeFilter判断是否可用, 类型bool, 取值0或1
+        public byte[] bReserved2 = new byte[6];
+        public double dMinRatio;//最小宽高比
+        public double dMaxRatio;//最大宽高比
+        public CFG_SIZE stuMinRatioSize;//最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。
+        public CFG_SIZE stuMaxRatioSize;//最大宽高比矩形框尺寸,同上
+        public byte nAreaCalibrateBoxNum;//面积校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//面积校准框
+        public byte nRatioCalibrateBoxs;//宽高校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//宽高校准框
+        public byte abBySize;//长宽过滤使能参数是否有效, 类型bool, 取值0或1
+        public byte bBySize;//长宽过滤使能, 类型bool, 取值0或1
+        public byte[]  bReserved3=new byte[6]; // 保留字段
+    }
+
+    //各种物体特定的过滤器
+    public static class CFG_OBJECT_SIZEFILTER_INFO extends SdkStructure
+    {
+        public byte[] szObjectType = new byte[MAX_NAME_LEN];//物体类型
+        public CFG_SIZEFILTER_INFO stSizeFilter;//对应的尺寸过滤器
+    }
+
+    //特殊区域的属性类型
+    public static class EM_SEPCIALREGION_PROPERTY_TYPE extends SdkStructure
+    {
+        public static final int EM_SEPCIALREGION_PROPERTY_TYPE_HIGHLIGHT = 1;//高亮,键盘检测区域具有此特性
+        public static final int EM_SEPCIALREGION_PROPERTY_TYPE_REGULARBLINK = 2; //规律的闪烁,插卡区域具有此特性
+        public static final int EM_SEPCIALREGION_PROPERTY_TYPE_IREGULARBLINK = 3; //不规律的闪烁,屏幕区域具有此特性
+        public static final int EM_SEPCIALREGION_PROPERTY_TYPE_NUM = 4;
+    }
+
+    //特殊检测区,是指从检测区中区分出来,有特殊检测属性的区域
+    public static class CFG_SPECIALDETECT_INFO extends SdkStructure
+    {
+        public int nDetectNum;//检测区域顶点数
+        public CFG_POLYGON[] stDetectRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);//检测区域
+        public int nPropertyNum;//特殊检测区属性个数
+        public int[] nPropertys = new int[EM_SEPCIALREGION_PROPERTY_TYPE.EM_SEPCIALREGION_PROPERTY_TYPE_NUM];//特殊检测区属性
+    }
+
+    //各类物体的子类型
+    public static class CFG_CATEGORY_TYPE extends SdkStructure
+    {
+        public static final int CFG_CATEGORY_TYPE_UNKNOW = 0; //未知类型
+        //车型相关子类别
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MOTOR = 1; //"Motor"机动车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_NON_MOTOR = 2; //"Non-Motor"非机动车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_BUS = 3; //"Bus"公交车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_BICYCLE = 4; //"Bicycle"自行车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MOTORCYCLE = 5; //"Motorcycle"摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_UNLICENSEDMOTOR = 6; //"UnlicensedMotor":无牌机动车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_LARGECAR = 7; //"LargeCar"大型汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MICROCAR = 8; //"MicroCar"小型汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_EMBASSYCAR = 9; //"EmbassyCar"使馆汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MARGINALCAR = 10; //"MarginalCar"领馆汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_AREAOUTCAR = 11; //"AreaoutCar"境外汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_FOREIGNCAR = 12; //"ForeignCar"外籍汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_DUALTRIWHEELMOTORCYCLE = 13; //"DualTriWheelMotorcycle"两、三轮摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_LIGHTMOTORCYCLE = 14; //"LightMotorcycle"轻便摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_EMBASSYMOTORCYCLE = 15 ; //"EmbassyMotorcycle"使馆摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MARGINALMOTORCYCLE = 16; //"MarginalMotorcycle"领馆摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_AREAOUTMOTORCYCLE = 17; //"AreaoutMotorcycle"境外摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_FOREIGNMOTORCYCLE = 18; //"ForeignMotorcycle"外籍摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_FARMTRANSMITCAR = 19; //"FarmTransmitCar"农用运输车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TRACTOR = 20; //"Tractor"拖拉机
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TRAILER = 21; //"Trailer"挂车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_COACHCAR = 22; //"CoachCar"教练汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_COACHMOTORCYCLE = 23; //"CoachMotorcycle"教练摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TRIALCAR = 24; //"TrialCar"试验汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TRIALMOTORCYCLE = 25; //"TrialMotorcycle"试验摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYCAR = 26; //"TemporaryEntryCar"临时入境汽车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYMOTORCYCLE = 27; //"TemporaryEntryMotorcycle"临时入境摩托车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYSTEERCAR = 28; //"TemporarySteerCar"临时行驶车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_PASSENGERCAR = 29; //"PassengerCar"客车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_LARGETRUCK = 30; //"LargeTruck"大货车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MIDTRUCK =31 ; //"MidTruck"中货车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_SALOONCAR = 32; //"SaloonCar"轿车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MICROBUS = 33; //"Microbus"面包车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_MICROTRUCK = 34; //"MicroTruck"小货车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_TRICYCLE = 35; //"Tricycle"三轮车
+        public static final int CFG_CATEGORY_VEHICLE_TYPE_PASSERBY = 36; //"Passerby"行人
+        //车牌相关子类别
+        public static final int CFG_CATEGORY_PLATE_TYPE_NORMAL = 37; //"Normal"蓝牌黑字
+        public static final int CFG_CATEGORY_PLATE_TYPE_YELLOW = 38; //"Yellow"黄牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_DOUBLEYELLOW = 39; //"DoubleYellow"双层黄尾牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_POLICE = 40; //"Police"警牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_WJ = 41; //
+        public static final int CFG_CATEGORY_PLATE_TYPE_OUTERGUARD = 42; //
+        public static final int CFG_CATEGORY_PLATE_TYPE_DOUBLEOUTERGUARD = 43; //
+        public static final int CFG_CATEGORY_PLATE_TYPE_SAR = 44; //"SAR"港澳特区号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_TRAINNING = 45; //"Trainning"教练车号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_PERSONAL = 46; //"Personal"个性号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_AGRI = 47; //"Agri"农用牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_EMBASSY = 48; //"Embassy"使馆号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_MOTO = 49; //"Moto"摩托车号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_TRACTOR = 50; //"Tractor"拖拉机号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_OFFICIALCAR = 51; //"OfficialCar"公务车
+        public static final int CFG_CATEGORY_PLATE_TYPE_PERSONALCAR = 52; //"PersonalCar"私家车
+        public static final int CFG_CATEGORY_PLATE_TYPE_WARCAR = 53; //
+        public static final int CFG_CATEGORY_PLATE_TYPE_OTHER = 54; //"Other"其他号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_CIVILAVIATION = 55; //"Civilaviation"民航号牌
+        public static final int CFG_CATEGORY_PLATE_TYPE_BLACK = 56; //"Black"黑牌
+    }
+
+    //不同区域各种类型物体的检测模块配置
+    public static class CFG_MODULE_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[] szObjectType = new byte[MAX_NAME_LEN];//默认物体类型,详见"支持的检测物体类型列表"
+        public byte bSnapShot;//是否对识别物体抓图,类型bool,取值0或1
+        public byte bSensitivity;//灵敏度,取值1-10,值越小灵敏度越低
+        public byte bMeasureModeEnable;//计量方式参数是否有效,类型bool,取值0或1
+        public byte bMeasureMode;//计量方式,0-像素,不需要远端、近端标定,1-实际长度,单位:米,2-远端近端标定后的像素
+        public int nDetectRegionPoint;//检测区域顶点数
+        public CFG_POLYGON[] stuDetectRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);//检测区域
+        public int nTrackRegionPoint;//跟踪区域顶点数
+        public CFG_POLYGON[] stuTrackRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);//跟踪区域
+        public byte bFilterTypeEnable;//过滤类型参数是否有效,类型bool,取值0或1
+        // ByArea,ByRatio仅作兼容使枚懒⒌腂yArea和ByRatio选项代替 2012/03/06
+        public byte nFilterType;//过滤类型:0:"ByLength",1:"ByArea",2:"ByWidthHeight",3:"ByRatio":
+        public byte bBackgroudEnable;//区域的背景类型参数是否有效,类型bool,取值0或1
+        public byte bBackgroud;//区域的背景类型,0-普通类型,1-高光类型
+        public byte abBySize;//长宽过滤使能参数是否有效,类型bool,取值0或1
+        public byte bBySize;//长宽过滤使能,类型bool,取值0或1
+        public byte bFilterMinSizeEnable;//物体最小尺寸参数是否有效,类型bool,取值0或1
+        public byte bFilterMaxSizeEnable;//物体最大尺寸参数是否有效,类型bool,取值0或1
+        public CFG_SIZE stuFilterMinSize;//物体最小尺寸"ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效。
+        public CFG_SIZE stuFilterMaxSize;//物体最大尺寸"ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效。
+        public int nExcludeRegionNum;//排除区域数
+        public CFG_REGION[] stuExcludeRegion = (CFG_REGION[])new CFG_REGION().toArray(MAX_EXCLUDEREGION_NUM);//排除区域
+        public int nCalibrateBoxNum;//校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//校准框(远端近端标定模式下有效)
+        public byte bAccuracy;//检测精度是否有效,类型bool,取值0或1
+        public byte byAccuracy;//检测精度
+        public byte bMovingStep;//算法移动步长是否有效,类型bool,取值0或1
+        public byte byMovingStep;//算法移动步长
+        public byte bScalingFactor;//算法缩放因子是否有效,类型bool,取值0或1
+        public byte byScalingFactor;//算法缩放因子
+        public byte[] bReserved2 = new byte[1];//保留字段
+        public byte abDetectBalance;//漏检和误检平衡参数是否有效,类型bool,取值0或1
+        public int nDetectBalance;//漏检和误检平衡0-折中模式(默认)1-漏检更少2-误检更少
+        public byte abByRatio;//类型bool,取值0或1
+        public byte abMinRatio;;//类型bool,取值0或1
+        public byte abMaxRatio;;//类型bool,取值0或1
+        public byte abMinAreaSize;;//类型bool,取值0或1
+        public byte abMaxAreaSize;;//类型bool,取值0或1
+        public byte bByRatio;//是否按宽高比过滤通过能力ComplexSizeFilter判断是否可用可以和nFilterType复用,类型bool,取值0或1
+    	public byte	byLowDetectSensitivity;	// 车辆检测低灵敏度, 取值1~100
+    	public byte	byHighDetectSensitivity;// 车辆检测高灵敏度, 取值1~100
+        public double dMinRatio;//最小宽高比
+        public double dMaxRatio;//最大宽高比
+        public CFG_SIZE stuMinAreaSize;//最小面积矩形框尺寸"计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸;
+        public CFG_SIZE stuMaxAreaSize;//最大面积矩形框尺寸,同上
+        public byte abByArea;//类型bool,取值0或1
+        public byte abMinArea;//类型bool,取值0或1
+        public byte abMaxArea;//类型bool,取值0或1
+        public byte abMinRatioSize;//类型bool,取值0或1
+        public byte abMaxRatioSize;//类型bool,取值0或1
+        public byte bByArea;//是否按面积过滤通过能力ComplexSizeFilter判断是否可用可以和nFilterType复用,类型bool,取值0或1
+        public byte[] bReserved3 = new byte[2];
+        public float nMinArea;//最小面积
+        public float nMaxArea;//最大面积
+        public CFG_SIZE stuMinRatioSize;//最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。
+        public CFG_SIZE stuMaxRatioSize;//最大宽高比矩形框尺寸,同上
+        public int nAreaCalibrateBoxNum;//面积校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//面积校准框
+        public int nRatioCalibrateBoxs;//比例校准框个数
+        public CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs = (CFG_CALIBRATEBOX_INFO[])new CFG_CALIBRATEBOX_INFO().toArray(MAX_CALIBRATEBOX_NUM);//比例校准框个数
+        public byte bAntiDisturbance;//是否开启去扰动模块,类型bool,取值0或1
+        public byte bBacklight;//是否有逆光,类型bool,取值0或1
+        public byte bShadow;//是否有阴影,类型bool,取值0或1
+        public byte bContourAssistantTrack;//是否开启轮廓辅助跟踪,例:在目标识别时可以通过跟踪人体来辅助识别脸,类型bool,取值0或1
+        public int nPtzPresetId;//云台预置点,0~255,0表示固定场景,忽略预置点。大于0表示在此预置点时模块有效
+        public int nObjectFilterNum;//物体特定的过滤器个数
+        public CFG_OBJECT_SIZEFILTER_INFO[] stObjectFilter= (CFG_OBJECT_SIZEFILTER_INFO[])new CFG_OBJECT_SIZEFILTER_INFO().toArray(MAX_OBJECT_LIST_SIZE);//物体特定的过滤器信息
+        public int abObjectImageSize; //BOOL类型,取值0或1
+        public CFG_SIZE stObjectImageSize;//保证物体图像尺寸相同,单位是像素,不支持小数,取值:>=0,0表示自动调整大小
+        public int nSpecailDetectNum;//特殊检测区域个数
+        public CFG_SPECIALDETECT_INFO[] stSpecialDetectRegions= (CFG_SPECIALDETECT_INFO[])new CFG_SPECIALDETECT_INFO().toArray(MAX_SPECIALDETECT_NUM);//特殊检测区信息
+        public int nAttribute;//需要识别物体的属性个数, 类型为unsigned int
+        public byte[] szAttributes = new byte[MAX_OBJECT_ATTRIBUTES_SIZE*MAX_NAME_LEN];//需要识别物体的属性列表,“Category”
+        public int abPlateAnalyseMode;//nPlateAnalyseMode是否有效, BOOL类型,取值0或1
+        public int nPlateAnalyseMode;//车牌识别模式,0-只识别车头牌照1-只识别车尾牌照2-车头牌照优先(场景中大部分车均是车头牌照)3-车尾牌照优先(场景中大部分车均是车尾牌照)
+        //szAttributes属性存在"Category"时生效
+        public int nCategoryNum;//需要识别物体的子类型总数
+        public int[] emCategoryType= new int[MAX_CATEGORY_TYPE_NUMBER];//子类型信息, 元素取CFG_CATEGORY_TYPE中的值
+        public byte[] szSceneType = new byte[CFG_COMMON_STRING_16];		// 检测区参数用于的场景类型
+        public CFG_LENGTH_FILETER_INFO		stuLengthFilter;				// 物体类型过滤器,如果指定新的过滤器以新的为准
+        public boolean						bSceneTypeEx;								// szSceneTypeEx 是否有效
+        public byte[]						szSceneTypeEx=new byte[128];							// 检测区参数用于的场景类型扩展
+    }
+
+    // 计量方式
+    public static class EM_CFG_MEASURE_MODE_TYPE extends SdkStructure
+    {
+        public static final int EM_CFG_NEASURE_MODE_TYPE_UNKNOW=0;				// 未知
+        public static final int EM_CFG_NEASURE_MODE_TYPE_PIXEL=1;					// 像素
+        public static final int EM_CFG_NEASURE_MODE_TYPE_METRIC=2;				// 实际长度
+    };
+
+    // 过滤类型
+    public static class CFG_FILTER_HEIGHT_TYPE extends SdkStructure
+    {
+        public static final int CFG_FILTER_HEIGHT_TYPE_UNKNOW=0;				// 未知
+        public static final int CFG_FILTER_HEIGHT_TYPE_BYHEIGHT=1;			// 高度
+    };
+
+    // 物体类型长度过滤器
+    public static class CFG_LENGTH_FILETER_INFO extends SdkStructure
+    {
+        public int	emMeasureMode;	// 计量方式
+        public int		emFilterType;	// 过滤类型
+        public int							nDetectType;	// 0:大于且小于 1:大于或等于且小于或等于 2:大于且小于或等于 3:大于或等于且小于
+        public int							nMinLen;		// 最小检测长度,单位:cm
+        public int							nMaxLen;		// 最大检测长度,单位:cm
+    };
+
+    public static class CFG_ANALYSEMODULES_INFO extends SdkStructure
+    {
+        public int nMoudlesNum;//检测模块数
+        public CFG_MODULE_INFO[] stuModuleInfo= (CFG_MODULE_INFO[])new CFG_MODULE_INFO().toArray(MAX_ANALYSE_MODULE_NUM);//每个视频输入通道对应的各种类型物体的检测模块配置
+    }
+
+    // CLIENT_FindGroupInfo接口输入参数
+    public static class NET_IN_FIND_GROUP_INFO extends SdkStructure
+    {
+        public int dwSize;
+        public byte[] szGroupId = new byte[NET_COMMON_STRING_64];//人员组ID,唯一标识一组人员,为空表示查询全部人员组信息
+
+        public NET_IN_FIND_GROUP_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人脸数据类型
+    public static class EM_FACE_DB_TYPE extends SdkStructure
+    {
+        public static final int NET_FACE_DB_TYPE_UNKOWN = 0;
+        public static final int NET_FACE_DB_TYPE_HISTORY = 1;    // 历史数据库,存放的是检测出的人脸信息,一般没有包含人脸对应人员信息
+        public static final int NET_FACE_DB_TYPE_BLACKLIST = 2;  // 禁止名单数据库
+        public static final int NET_FACE_DB_TYPE_WHITELIST = 3;  // 允许名单数据库,废弃
+        public static final int NET_FACE_DB_TYPE_ALARM = 4;      // 报警库, 废弃
+        public static final int NET_FACE_DB_TYPE_PASSERBY = 5;   // 路人库
+    }
+
+    // 人员组信息
+    public static class NET_FACERECONGNITION_GROUP_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+        public int 			emFaceDBType;							   		  // 人员组类型,详见EM_FACE_DB_TYPE, 取值为EM_FACE_DB_TYPE中的值
+        public byte[] 		szGroupId = new byte[NET_COMMON_STRING_64];		  // 人员组ID,唯一标识一组人员(不可修改,添加操作时无效)
+        public byte[] 		szGroupName = new byte[NET_COMMON_STRING_128];	  // 人员组名称
+        public byte[] 		szGroupRemarks = new byte[NET_COMMON_STRING_256]; // 人员组备注信息
+        public int 			nGroupSize;									      // 当前组内人员数
+        public int			nRetSimilarityCount;							  // 实际返回的库相似度阈值个数
+        public int[]		nSimilarity = new int[MAX_SIMILARITY_COUNT];	  // 库相似度阈值,人脸比对高于阈值认为匹配成功
+        public int			nRetChnCount;									  // 实际返回的通道号个数
+        public int[] 		nChannel = new int[NET_MAX_CAMERA_CHANNEL_NUM];   // 当前组绑定到的视频通道号列表
+        public int[] 		nFeatureState = new int[MAX_FEATURESTATE_NUM];	  // 人脸组建模状态信息:
+        // [0]-准备建模的人员数量,不保证一定建模成功
+        // [1]-建模失败的人员数量,图片不符合算法要求,需要更换图片
+        // [2]-已建模成功人员数量,数据可用于算法进行目标识别
+        // [3]-曾经建模成功,但因算法升级变得不可用的数量,重新建模就可用
+        public int          emRegisterDbType;                     			  // 注册库类型,详见EM_REGISTER_DB_TYPE
+        public byte[]		byReserved1=new byte[4];						  // 字节对齐
+        public NET_PASSERBY_DB_CONFIG_INFO	stuPasserbyDBConfig;		      // 路人库配置(选填)
+        public int          nGroupSimilarity;                                 // 组相似度阈值,人脸比对高于阈值认为匹配成功
+        public int          nMaskSimilarity;                                  // 库口罩相似度阈值,取值范围0-100,可用于口罩检测
+    	public int			dwCapacity;								          // 最大注册数目
+    	public int			nOverWrite;								          // 注册库满覆盖策略: 0:未知, 1:满停止, 2:满覆盖
+        public NET_FACERECONGNITION_GROUP_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 注册库属性
+    public static class EM_REGISTER_DB_TYPE extends SdkStructure
+    {
+        public static final int EM_REGISTER_DB_TYPE_UNKNOWN          = 0;   // 未知
+        public static final int EM_REGISTER_DB_TYPE_NORMAL           = 1;   // 普通库
+        public static final int EM_REGISTER_DB_TYPE_BLACKLIST        = 2;   // 禁止名单
+        public static final int EM_REGISTER_DB_TYPE_WHITELIST        = 3;   // 允许名单
+        public static final int EM_REGISTER_DB_TYPE_VIP              = 4;   // 库
+        public static final int EM_REGISTER_DB_TYPE_STAFF            = 5;   // 员工库
+        public static final int EM_REGISTER_DB_TYPE_LEADER           = 6;   // 领导库
+    }
+
+    // CLIENT_FindGroupInfo接口输出参数
+    public static class NET_OUT_FIND_GROUP_INFO extends SdkStructure
+    {
+        public int 		dwSize;
+        public Pointer  pGroupInfos;	// 人员组信息,由用户申请空间, 指向 NET_FACERECONGNITION_GROUP_INFO 的指针
+        public int 		nMaxGroupNum;	// 当前申请的数组大小
+        public int 		nRetGroupNum;	// 设备返回的人员组个数
+
+        public NET_OUT_FIND_GROUP_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人员组操作枚举
+    public static class EM_OPERATE_FACERECONGNITION_GROUP_TYPE extends SdkStructure
+    {
+        public static final int NET_FACERECONGNITION_GROUP_UNKOWN = 0;
+        public static final int NET_FACERECONGNITION_GROUP_ADD = 1; 	// 添加人员组信息, 对应结构体为 NET_ADD_FACERECONGNITION_GROUP_INFO
+        public static final int NET_FACERECONGNITION_GROUP_MODIFY = 2;  // 修改人员组信息, 对应结构体为 NET_MODIFY_FACERECONGNITION_GROUP_INFO
+        public static final int NET_FACERECONGNITION_GROUP_DELETE = 3;  // 删除人员组信息, 对应结构体为 NET_DELETE_FACERECONGNITION_GROUP_INFO
+    }
+
+    // CLIENT_OperateFaceRecognitionGroup 接口输入参数
+    public static class NET_IN_OPERATE_FACERECONGNITION_GROUP extends SdkStructure
+    {
+        public int 		dwSize;
+        public int 		emOperateType;	// 操作类型, 取值为 EM_OPERATE_FACERECONGNITION_GROUP_TYPE 中的值
+        public Pointer 	pOPerateInfo;	// 相关操作信息,指向void *
+
+        public NET_IN_OPERATE_FACERECONGNITION_GROUP()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_OperateFaceRecognitionGroup接口输出参数
+    public static class NET_OUT_OPERATE_FACERECONGNITION_GROUP extends SdkStructure
+    {
+        public int 		dwSize;
+        public byte[] 	szGroupId = new byte[NET_COMMON_STRING_64]; // 新增记录的人员组ID,唯一标识一组人员
+
+        public NET_OUT_OPERATE_FACERECONGNITION_GROUP()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加人员组信息
+    public static class NET_ADD_FACERECONGNITION_GROUP_INFO extends SdkStructure
+    {
+        public int               				dwSize;
+        public NET_FACERECONGNITION_GROUP_INFO  stuGroupInfo;      // 人员组信息
+
+        public NET_ADD_FACERECONGNITION_GROUP_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 修改人员组信息
+    public static class NET_MODIFY_FACERECONGNITION_GROUP_INFO extends SdkStructure
+    {
+        public int               				dwSize;
+        public NET_FACERECONGNITION_GROUP_INFO  stuGroupInfo;      // 人员组信息
+
+        public NET_MODIFY_FACERECONGNITION_GROUP_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除人员组信息
+    public static class NET_DELETE_FACERECONGNITION_GROUP_INFO extends SdkStructure
+    {
+        public int               dwSize;
+        public byte[]            szGroupId = new byte[NET_COMMON_STRING_64];  // 人员组ID,唯一标识一组人员
+
+        public NET_DELETE_FACERECONGNITION_GROUP_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SetGroupInfoForChannel接口输入参数
+    public static class NET_IN_SET_GROUPINFO_FOR_CHANNEL extends SdkStructure
+    {
+        public int 			dwSize;
+        public int 			nChannelID;															// 通道号
+        public int 			nGroupIdNum;														// 人员组数
+        public GROUP_ID[]   szGroupIdArr = (GROUP_ID[])new GROUP_ID().toArray(MAX_GOURP_NUM);	// 人员组ID
+        public int			nSimilaryNum;														// 相似度阈值个数, 与人员组数相同
+        public int[]		nSimilary = new int[MAX_GOURP_NUM];									// 每个人脸组的相似度阈值, 0-100
+
+        public NET_IN_SET_GROUPINFO_FOR_CHANNEL()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SetGroupInfoForChannel接口输出参数
+    public static class NET_OUT_SET_GROUPINFO_FOR_CHANNEL extends SdkStructure
+    {
+        public int dwSize;
+
+        public NET_OUT_SET_GROUPINFO_FOR_CHANNEL()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人脸查询状态信息回调函数, lAttachHandle是CLIENT_AttachFaceFindState的返回值
+    public static class NET_CB_FACE_FIND_STATE extends SdkStructure
+    {
+        public int 		dwSize;
+        public int 		nToken;					// 视频浓缩任务数据库主键ID
+        public int 		nProgress;				// 正常取值范围:0-100,-1,表示查询token不存在(当订阅一个不存在或结束的查询时)
+        public int 		nCurrentCount;			// 目前符合查询条件的人脸数量
+
+        public NET_CB_FACE_FIND_STATE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_AttachFaceFindState接口输入参数
+    public static class NET_IN_FACE_FIND_STATE extends SdkStructure
+    {
+        public int 				dwSize;			 //结构体大小,必须填写
+        public int 				nTokenNum;		 //查询令牌数,为0时,表示订阅所有的查询任务
+        public IntByReference 	nTokens;		 //查询令牌, 指向int的指针
+        public Callback  cbFaceFindState;        //回调函数 fFaceFindState 回调
+        public Pointer 			dwUser;			 //用户数据
+
+        public NET_IN_FACE_FIND_STATE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_AttachFaceFindState接口输入参数
+    public static class NET_OUT_FACE_FIND_STATE extends SdkStructure
+    {
+        public int dwSize;
+
+        public NET_OUT_FACE_FIND_STATE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // SDK全局日志打印信息
+    public static class LOG_SET_PRINT_INFO extends SdkStructure
+    {
+        public int 		dwSize;
+        public int 		bSetFilePath;//是否重设日志路径, BOOL类型,取值0或1
+        public byte[] 	szLogFilePath = new byte[MAX_LOG_PATH_LEN];//日志路径(默认"./sdk_log/sdk_log.log")
+        public int 		bSetFileSize;//是否重设日志文件大小, BOOL类型,取值0或1
+        public int 		nFileSize;//每个日志文件的大小(默认大小10240),单位:比特, 类型为unsigned int
+        public int 		bSetFileNum;//是否重设日志文件个数, BOOL类型,取值0或1
+        public int 		nFileNum;//绕接日志文件个数(默认大小10), 类型为unsigned int
+        public int 		bSetPrintStrategy;//是否重设日志打印输出策略, BOOL类型,取值0或1
+        public int 		nPrintStrategy;//日志输出策略,0:输出到文件(默认); 1:输出到窗口, 类型为unsigned int
+        public byte[]	byReserved=new byte[4];							// 字节对齐
+        public Pointer	cbSDKLogCallBack;						// 日志回调,需要将sdk日志回调出来时设置,默认为NULL
+        public Pointer	dwUser;									// 用户数据
+        public LOG_SET_PRINT_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // media文件查询条件
+    public static class EM_FILE_QUERY_TYPE extends SdkStructure
+    {
+        public static final int NET_FILE_QUERY_TRAFFICCAR = 0; 		    // 交通车辆信息, 对应结构体为 MEDIA_QUERY_TRAFFICCAR_PARAM
+        public static final int NET_FILE_QUERY_ATM = 1; 			    // ATM信息
+        public static final int NET_FILE_QUERY_ATMTXN = 2; 			    // ATM交易信息
+        public static final int NET_FILE_QUERY_FACE = 3; 			    // 人脸信息 MEDIAFILE_FACERECOGNITION_PARAM 和 MEDIAFILE_FACERECOGNITION_INFO
+        public static final int NET_FILE_QUERY_FILE = 4; 			    // 文件信息对应 NET_IN_MEDIA_QUERY_FILE 和 NET_OUT_MEDIA_QUERY_FILE
+        public static final int NET_FILE_QUERY_TRAFFICCAR_EX = 5; 	    // 交通车辆信息,扩展 NET_FILE_QUERY_TRAFFICCAR,支持更多的字段, 对应结构体为 MEDIA_QUERY_TRAFFICCAR_PARAM_EX
+        public static final int NET_FILE_QUERY_FACE_DETECTION = 6; 	    // 目标检测事件信息MEDIAFILE_FACE_DETECTION_PARAM和 MEDIAFILE_FACE_DETECTION_INFO
+        public static final int NET_FILE_QUERY_SNAPSHOT_WITH_MARK = 17; // 标记抓图查询, 对应MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM 和MEDIAFILE_SNAPSHORT_WITH_MARK_INFO
+        public static final int NET_FILE_QUERY_ANATOMY_TEMP_DETECT = 18;// 人体测温信息查询, 对应 MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM 和 MEDIAFILE_ANATOMY_TEMP_DETECT_INFO
+        public static final int NET_FILE_QUERY_FIRE_CONTROL_MONITOR = 21;//消控室值班行为检测事件查询,对应 MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM 和 MEDIAFILE_FIRE_CONTROL_MONITOR_INFO
+        public static final int NET_FILE_QUERY_MOBILE_ENFORCE = 27;		// 采集站和手持终端文件信息查询,对应 MEDIAFILE_MOBILE_ENFORCE_PARAM 和 MEDIAFILE_MOBILE_ENFORCE_INFO
+        public static final int NET_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION=28;		// 智慧厨房查询,对应 MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM 和 MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO
+        public static final int NET_FILE_QUERY_EXAM=33;                              //按照考生或考场信息查找录像, 对应 NET_MEDIAFILE_EXAM_PARAM 和 NET_MEDIAFILE_EXAM_INFO
+    }
+
+    // 查询跳转条件
+    public static class NET_FINDING_JUMP_OPTION_INFO extends SdkStructure
+    {
+        public int dwSize;
+        public int nOffset;//查询结果偏移量,是相对于当前查询的第一条查询结果的位置偏移
+
+        public NET_FINDING_JUMP_OPTION_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云台联动类型
+    public static class CFG_LINK_TYPE extends SdkStructure
+    {
+        public static final int LINK_TYPE_NONE = 0; //无联动
+        public static final int LINK_TYPE_PRESET = 1; //联动预置点
+        public static final int LINK_TYPE_TOUR = 2; //联动巡航
+        public static final int LINK_TYPE_PATTERN = 3; //联动轨迹
+        public static final int LINK_TYPE_ZOOM = 4;			// 联动变倍
+        public static final int LINK_TYPE_SINGLESCENE = 5;	// 联动智能单场景
+        public static final int LINK_TYPE_QUICKFOCUS = 6;	// 热成像云台联动快速定位
+    }
+
+    // 联动云台信息
+    public static class CFG_PTZ_LINK extends SdkStructure
+    {
+        public int emType;//联动类型, 取值为CFG_LINK_TYPE中的值
+        public int nValue;//联动取值分别对应预置点号,巡航号等等
+    }
+
+    // 联动云台信息扩展
+    public static class CFG_PTZ_LINK_EX extends SdkStructure
+    {
+        public int emType;//联动类型, 取值为CFG_LINK_TYPE中的值
+        public int nParam1;//联动参数1
+        public int nParam2;//联动参数2
+        public int nParam3;//联动参数3
+        public int nChannelID;//所联动云台通道
+    }
+
+    // RGBA信息
+    public static class CFG_RGBA extends SdkStructure
+    {
+        public int nRed;
+        public int nGreen;
+        public int nBlue;
+        public int nAlpha;
+    }
+
+    // 事件标题内容结构体
+    public static class CFG_EVENT_TITLE extends SdkStructure
+    {
+        public			byte[]					szText=new byte[64];
+        /**
+         标题左上角坐标, 采用0-8191相对坐标系
+         */
+        public			CFG_POLYGON					stuPoint=new CFG_POLYGON();
+        /**
+         标题的宽度和高度,采用0-8191相对坐标系,某项或者两项为0表示按照字体自适应宽高
+         */
+        public CFG_SIZE stuSize=new CFG_SIZE();
+        /**
+         前景颜色
+         */
+        public			CFG_RGBA					stuFrontColor=new CFG_RGBA();
+        /**
+         背景颜色
+         */
+        public			CFG_RGBA					stuBackColor=new CFG_RGBA();
+    }
+
+    public static class NET_CFG_EVENT_TITLE extends SdkStructure
+    {
+        public byte[] szText = new byte[MAX_CHANNELNAME_LEN];
+        public NET_POINT stuPoint;//标题左上角坐标,采用0-8191相对坐标系
+        public NET_SIZE stuSize;//标题的宽度和高度,采用0-8191相对坐标系,某项或者两项为0表示按照字体自适应宽高
+        public CFG_RGBA stuFrontColor;//前景颜色
+        public CFG_RGBA stuBackColor;//背景颜色
+    }
+
+
+    // 邮件附件类型
+    public static class CFG_ATTACHMENT_TYPE extends SdkStructure
+    {
+        public static final int ATTACHMENT_TYPE_PIC = 0; //图片附件
+        public static final int ATTACHMENT_TYPE_VIDEO = 1; //视频附件
+        public static final int ATTACHMENT_TYPE_NUM = 2; //附件类型总数
+    }
+
+    // 分割模式
+    public static class CFG_SPLITMODE extends SdkStructure
+    {
+        public static final int SPLITMODE_1 =1;//1画面
+        public static final int SPLITMODE_2 =2;//2画面
+        public static final int SPLITMODE_4 =4;//4画面
+        public static final int SPLITMODE_5 =5;//5画面
+        public static final int SPLITMODE_6 =6;//6画面
+        public static final int SPLITMODE_8 =8;//8画面
+        public static final int SPLITMODE_9 =9;//9画面
+        public static final int SPLITMODE_3  = 10; // 3画面
+        public static final int SPLITMODE_3B = 11; // 3画面倒品
+        public static final int SPLITMODE_12 =12;//12画面
+        public static final int SPLITMODE_16 =16;//16画面
+        public static final int SPLITMODE_20 =20;//20画面
+        public static final int SPLITMODE_25 =25;//25画面
+        public static final int SPLITMODE_36 =36;//36画面
+        public static final int SPLITMODE_64 =64;//64画面
+        public static final int SPLITMODE_144 =144;//144画面
+        public static final int SPLITMODE_PIP =1000;//画中画分割模式基础值
+        public static final int SPLITMODE_PIP1 =SPLITMODE_PIP+1;//画中画模式, 1个全屏大画面+1个小画面窗口
+        public static final int SPLITMODE_PIP3 =SPLITMODE_PIP+3;//画中画模式, 1个全屏大画面+3个小画面窗口
+        public static final int SPLITMODE_FREE =SPLITMODE_PIP*2;//自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序
+        public static final int SPLITMODE_COMPOSITE_1 = SPLITMODE_PIP * 3 + 1;  // 融合屏成员1分割
+        public static final int SPLITMODE_COMPOSITE_4 = SPLITMODE_PIP * 3 + 4;  // 融合屏成员4分割
+    }
+
+    // 轮巡联动配置
+    public static class CFG_TOURLINK extends SdkStructure
+    {
+        public int bEnable;//轮巡使能, BOOL类型,取值0或1
+        public int emSplitMode;//轮巡时的分割模式,取值范围为CFG_SPLITMODE中的值
+        public int[] nChannels = new int[MAX_VIDEO_CHANNEL_NUM];//轮巡通道号列表
+        public int nChannelCount;//轮巡通道数量
+    }
+
+    // 门禁操作类型
+    public static class EM_CFG_ACCESSCONTROLTYPE extends SdkStructure
+    {
+        public static final int EM_CFG_ACCESSCONTROLTYPE_NULL = 0;//不做操作
+        public static final int EM_CFG_ACCESSCONTROLTYPE_AUTO = 1; //自动
+        public static final int EM_CFG_ACCESSCONTROLTYPE_OPEN = 2; //开门
+        public static final int EM_CFG_ACCESSCONTROLTYPE_CLOSE = 3; //关门
+        public static final int EM_CFG_ACCESSCONTROLTYPE_OPENALWAYS = 4; //永远开启
+        public static final int EM_CFG_ACCESSCONTROLTYPE_CLOSEALWAYS = 5; //永远关闭
+    }
+
+    // 邮件详细内容
+    public static class CFG_MAIL_DETAIL extends SdkStructure
+    {
+        public int emAttachType;//附件类型, 取值范围为CFG_ATTACHMENT_TYPE中的值
+        public int nMaxSize;//文件大小上限,单位kB
+        public int nMaxTimeLength;//最大录像时间长度,单位秒,对video有效
+    }
+
+    // 语音呼叫发起方
+    public static class EM_CALLER_TYPE extends SdkStructure
+    {
+        public static final int EM_CALLER_DEVICE = 0;//设备发起
+    }
+
+    // 呼叫协议
+    public static class EM_CALLER_PROTOCOL_TYPE extends SdkStructure
+    {
+        public static final int EM_CALLER_PROTOCOL_CELLULAR = 0;//手机方式
+    }
+
+    // 语音呼叫联动信息
+    public static class CFG_TALKBACK_INFO extends SdkStructure
+    {
+        public int bCallEnable;//语音呼叫使能, BOOL类型,取值0或1
+        public int emCallerType;//语音呼叫发起方, 取值范围为EM_CALLER_TYPE中的值
+        public int emCallerProtocol;//语音呼叫协议, 取值范围为EM_CALLER_PROTOCOL_TYPE中的值
+    }
+
+    // 电话报警中心联动信息
+    public static class CFG_PSTN_ALARM_SERVER extends SdkStructure
+    {
+        public int bNeedReport;//是否上报至电话报警中心, BOOL类型,取值0或1
+        public int nServerCount;//电话报警服务器个数
+        public byte[] byDestination = new byte[MAX_PSTN_SERVER_NUM];//上报的报警中心下标,详见配置CFG_PSTN_ALARM_CENTER_INFO
+    }
+
+    // 时间表信息
+    public static class CFG_TIME_SCHEDULE extends SdkStructure
+    {
+        /**
+         是否支持节假日配置,默认为不支持,除非获取配置后返回为TRUE,不要使能假日配置
+         */
+        public			int					bEnableHoliday;
+        /**
+         第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段
+         */
+        public			CFG_TIME_SECTION[]					stuTimeSectionWeekDay=new CFG_TIME_SECTION[8*6];
+
+        public			CFG_TIME_SCHEDULE(){
+            for(int i=0;i<stuTimeSectionWeekDay.length;i++){
+                stuTimeSectionWeekDay[i]=new CFG_TIME_SECTION();
+            }
+        }
+    }
+
+    // 报警联动信息
+    public static class CFG_ALARM_MSG_HANDLE extends SdkStructure
+    {
+        /**
+         能力
+         */
+        public			byte					abRecordMask;
+
+        public			byte					abRecordEnable;
+
+        public			byte					abRecordLatch;
+
+        public			byte					abAlarmOutMask;
+
+        public			byte					abAlarmOutEn;
+
+        public			byte					abAlarmOutLatch;
+
+        public			byte					abExAlarmOutMask;
+
+        public			byte					abExAlarmOutEn;
+
+        public			byte					abPtzLinkEn;
+
+        public			byte					abTourMask;
+
+        public			byte					abTourEnable;
+
+        public			byte					abSnapshot;
+
+        public			byte					abSnapshotEn;
+
+        public			byte					abSnapshotPeriod;
+
+        public			byte					abSnapshotTimes;
+
+        public			byte					abTipEnable;
+
+        public			byte					abMailEnable;
+
+        public			byte					abMessageEnable;
+
+        public			byte					abBeepEnable;
+
+        public			byte					abVoiceEnable;
+
+        public			byte					abMatrixMask;
+
+        public			byte					abMatrixEnable;
+
+        public			byte					abEventLatch;
+
+        public			byte					abLogEnable;
+
+        public			byte					abDelay;
+
+        public			byte					abVideoMessageEn;
+
+        public			byte					abMMSEnable;
+
+        public			byte					abMessageToNetEn;
+
+        public			byte					abTourSplit;
+
+        public			byte					abSnapshotTitleEn;
+
+        public			byte					abChannelCount;
+
+        public			byte					abAlarmOutCount;
+
+        public			byte					abPtzLinkEx;
+
+        public			byte					abSnapshotTitle;
+
+        public			byte					abMailDetail;
+
+        public			byte					abVideoTitleEn;
+
+        public			byte					abVideoTitle;
+
+        public			byte					abTour;
+
+        public			byte					abDBKeys;
+
+        public			byte					abJpegSummary;
+
+        public			byte					abFlashEn;
+
+        public			byte					abFlashLatch;
+        /**
+         补齐
+         */
+        public			byte[]					byReserved1=new byte[2];
+        /**
+         设备的视频通道数
+         */
+        public			int					nChannelCount;
+        /**
+         设备的报警输出个数
+         */
+        public			int					nAlarmOutCount;
+        /**
+         录像通道掩码(按位)
+         */
+        public			int[]					dwRecordMask=new int[16];
+        /**
+         录像使能
+         */
+        public			int					bRecordEnable;
+        /**
+         录像延时时间(秒)
+         */
+        public			int					nRecordLatch;
+        /**
+         报警输出通道掩码
+         */
+        public			int[]					dwAlarmOutMask=new int[16];
+        /**
+         报警输出使能
+         */
+        public			int					bAlarmOutEn;
+        /**
+         报警输出延时时间(秒)
+         */
+        public			int					nAlarmOutLatch;
+        /**
+         扩展报警输出通道掩码
+         */
+        public			int[]					dwExAlarmOutMask=new int[16];
+        /**
+         扩展报警输出使能
+         */
+        public			int					bExAlarmOutEn;
+        /**
+         云台联动项
+         */
+        public			CFG_PTZ_LINK[]					stuPtzLink=new CFG_PTZ_LINK[256];
+        /**
+         云台联动使能
+         */
+        public			int					bPtzLinkEn;
+        /**
+         轮询通道掩码
+         */
+        public			int[]					dwTourMask=new int[16];
+        /**
+         轮询使能
+         */
+        public			int					bTourEnable;
+        /**
+         快照通道号掩码
+         */
+        public			int[]					dwSnapshot=new int[16];
+        /**
+         快照使能
+         */
+        public			int					bSnapshotEn;
+        /**
+         连拍周期(秒)
+         */
+        public			int					nSnapshotPeriod;
+        /**
+         连拍次数
+         */
+        public			int					nSnapshotTimes;
+        /**
+         本地消息框提示
+         */
+        public			int					bTipEnable;
+        /**
+         发送邮件,如果有图片,作为附件
+         */
+        public			int					bMailEnable;
+        /**
+         上传到报警服务器
+         */
+        public			int					bMessageEnable;
+        /**
+         蜂鸣
+         */
+        public			int					bBeepEnable;
+        /**
+         语音提示
+         */
+        public			int					bVoiceEnable;
+        /**
+         联动视频矩阵通道掩码
+         */
+        public			int[]					dwMatrixMask=new int[16];
+        /**
+         联动视频矩阵
+         */
+        public			int					bMatrixEnable;
+        /**
+         联动开始延时时间(秒),0-15
+         */
+        public			int					nEventLatch;
+        /**
+         是否记录日志
+         */
+        public			int					bLogEnable;
+        /**
+         设置时先延时再生效,单位为秒
+         */
+        public			int					nDelay;
+        /**
+         叠加提示字幕到视频。叠加的字幕包括事件类型,通道号,秒计时。
+         */
+        public			int					bVideoMessageEn;
+        /**
+         发送彩信使能
+         */
+        public			int					bMMSEnable;
+        /**
+         消息上传给网络使能
+         */
+        public			int					bMessageToNetEn;
+        /**
+         轮巡时的分割模式 0: 1画面; 1: 8画面
+         */
+        public			int					nTourSplit;
+        /**
+         是否叠加图片标题
+         */
+        public			int					bSnapshotTitleEn;
+        /**
+         云台配置数
+         */
+        public			int					nPtzLinkExNum;
+        /**
+         扩展云台信息
+         */
+        public			CFG_PTZ_LINK_EX[]					stuPtzLinkEx=new CFG_PTZ_LINK_EX[256];
+        /**
+         图片标题内容数
+         */
+        public			int					nSnapTitleNum;
+        /**
+         图片标题内容
+         */
+        public			CFG_EVENT_TITLE[]					stuSnapshotTitle=new CFG_EVENT_TITLE[256];
+        /**
+         邮件详细内容
+         */
+        public			CFG_MAIL_DETAIL					stuMailDetail=new CFG_MAIL_DETAIL();
+        /**
+         是否叠加视频标题,主要指主码流
+         */
+        public			int					bVideoTitleEn;
+        /**
+         视频标题内容数目
+         */
+        public			int					nVideoTitleNum;
+        /**
+         视频标题内容
+         */
+        public			CFG_EVENT_TITLE[]					stuVideoTitle=new CFG_EVENT_TITLE[256];
+        /**
+         轮询联动数目
+         */
+        public			int					nTourNum;
+        /**
+         轮询联动配置
+         */
+        public			CFG_TOURLINK[]					stuTour=new CFG_TOURLINK[256];
+        /**
+         指定数据库关键字的有效数
+         */
+        public			int					nDBKeysNum;
+        /**
+         指定事件详细信息里需要写到数据库的关键字
+         */
+        public			byte[]					szDBKeys=new byte[64*64];
+        /**
+         叠加到JPEG图片的摘要信息
+         */
+        public			byte[]					byJpegSummary=new byte[1024];
+        /**
+         是否使能补光灯
+         */
+        public			int					bFlashEnable;
+        /**
+         补光灯延时时间(秒),延时时间范围:[10,300]
+         */
+        public			int					nFlashLatch;
+
+        public			byte					abAudioFileName;
+
+        public			byte					abAlarmBellEn;
+
+        public			byte					abAccessControlEn;
+
+        public			byte					abAccessControl;
+        /**
+         联动语音文件绝对路径
+         */
+        public			byte[]					szAudioFileName=new byte[MAX_PATH];
+        /**
+         警号使能
+         */
+        public			int					bAlarmBellEn;
+        /**
+         门禁使能
+         */
+        public			int					bAccessControlEn;
+        /**
+         门禁组数
+         */
+        public			int					dwAccessControl;
+        /**
+         门禁联动操作信息
+         */
+        public			int[]					emAccessControlType=new int[8];
+
+        public			byte					abTalkBack;
+        /**
+         补齐
+         */
+        public			byte[]					byReserved2=new byte[3];
+        /**
+         语音呼叫联动信息
+         */
+        public			CFG_TALKBACK_INFO					stuTalkback=new CFG_TALKBACK_INFO();
+
+        public			byte					abPSTNAlarmServer;
+        /**
+         补齐
+         */
+        public			byte[]					byReserved3=new byte[3];
+        /**
+         电话报警中心联动信息
+         */
+        public			CFG_PSTN_ALARM_SERVER					stuPSTNAlarmServer=new CFG_PSTN_ALARM_SERVER();
+        /**
+         事件响应时间表
+         */
+        public			CFG_TIME_SCHEDULE					stuTimeSection=new CFG_TIME_SCHEDULE();
+
+        public			byte					abAlarmBellLatch;
+        /**
+         补齐
+         */
+        public			byte[]					byReserved4=new byte[3];
+        /**
+         警号输出延时时间(10-300秒)
+         */
+        public			int					nAlarmBellLatch;
+
+        public			byte					abAudioPlayTimes;
+
+        public			byte					abAudioLinkTime;
+        /**
+         补齐
+         */
+        public			byte[]					byReserved5=new byte[2];
+        /**
+         联动语音播放次数
+         */
+        public			int					nAudioPlayTimes;
+        /**
+         联动语音播放的时间, 单位:秒
+         */
+        public			int					nAudioLinkTime;
+        /**
+         nAlarmOutTime 是否有效
+         */
+        public			byte					abAlarmOutTime;
+        /**
+         报警输出持续时间,单位秒, 如果无此字段,按设备原来的方式实现
+         */
+        public			int					nAlarmOutTime;
+        /**
+         nBeepTime 是否有效
+         */
+        public			byte					abBeepTime;
+        /**
+         蜂鸣时长,单位秒,最大值为3600,0代表持续蜂鸣
+         */
+        public			int					nBeepTime;
+
+        public			CFG_ALARM_MSG_HANDLE(){
+            for(int i=0;i<stuPtzLink.length;i++){
+                stuPtzLink[i]=new CFG_PTZ_LINK();
+            }
+            for(int i=0;i<stuPtzLinkEx.length;i++){
+                stuPtzLinkEx[i]=new CFG_PTZ_LINK_EX();
+            }
+            for(int i=0;i<stuSnapshotTitle.length;i++){
+                stuSnapshotTitle[i]=new CFG_EVENT_TITLE();
+            }
+            for(int i=0;i<stuVideoTitle.length;i++){
+                stuVideoTitle[i]=new CFG_EVENT_TITLE();
+            }
+            for(int i=0;i<stuTour.length;i++){
+                stuTour[i]=new CFG_TOURLINK();
+            }
+        }
+    }
+
+    // 报警联动信息
+    public static class NET_ALARM_MSG_HANDLE extends SdkStructure
+    {
+        //能力
+        public byte                				abChannelCount;                                 // 是否支持通道数量 bool类型,取值0或1
+        public byte                				abAlarmOutCount;                                // 是否支持报警输出数量 bool类型,取值0或1
+
+        public byte								abRecordMask;                                   // 是否支持录像通道 bool类型,取值0或1
+        public byte								abRecordEnable;                                 // 是否支持录像使能 bool类型,取值0或1
+        public byte								abRecordLatch;                                  // 是否支持录像延时 bool类型,取值0或1
+
+        public byte								abAlarmOutMask;                                 // 是否支持报警输出通道 bool类型,取值0或1
+
+        public byte								abAlarmOutEn;                                   // 是否支持报警输出使能 bool类型,取值0或1
+        public byte								abAlarmOutLatch;                                // 是否支持报警输出延时 bool类型,取值0或1
+        public byte								abExAlarmOutMask;                               // 是否支持扩展报警输出通道 bool类型,取值0或1
+        public byte								abExAlarmOutEn;                                 // 是否支持扩展报警输出使能 bool类型,取值0或1
+
+        public byte								abPtzLinkEn;                                    // 是否支持云台联动使能 bool类型,取值0或1
+        public byte								abTourMask;                                     // 是否支持轮巡掩码 bool类型,取值0或1
+        public byte								abTourEnable;                                   // 是否支持轮巡使能 bool类型,取值0或1
+
+        public byte								abSnapshot;                                     // 是否支持快照 bool类型,取值0或1
+        public byte								abSnapshotEn;                                   // 是否支持快照使能 bool类型,取值0或1
+        public byte								abSnapshotPeriod;                               // 是否支持帧间隔,每隔多少帧抓一张图片 bool类型,取值0或1
+        public byte								abSnapshotTimes;                                // 是否支持连拍次数 bool类型,取值0或1
+        public byte								abTipEnable;                                    // 是否支持本地消息框提示 bool类型,取值0或1
+
+        public byte								abMailEnable;                                   // 是否支持发送邮件 bool类型,取值0或1
+        public byte								abMessageEnable;                                // 是否支持上传到报警中心服务器 bool类型,取值0或1
+        public byte								abBeepEnable;                                   // 是否支持蜂鸣 bool类型,取值0或1
+        public byte								abVoiceEnable;                                  // 是否支持语音提示 bool类型,取值0或1
+
+        public byte								abMatrixMask;                                   // 是否支持联动视频矩阵掩码 bool类型,取值0或1
+        public byte								abMatrixEnable;                                 // 是否支持联动视频矩阵使能 bool类型,取值0或1
+        public byte								abEventLatch;                                   // 是否支持联动开始延时时间 bool类型,取值0或1
+        public byte								abLogEnable;                                    // 是否支持日志使能 bool类型,取值0或1
+
+        public byte								abDelay;                                        // 是否支持报警延时 bool类型,取值0或1
+        public byte								abVideoMessageEn;                               // 是否支持叠加提示字幕到视频 bool类型,取值0或1
+        public byte								abMMSEnable;                                    // 是否支持发送短消息 bool类型,取值0或1
+        public byte								abMessageToNetEn;                               // 是否支持消息上传给网络使能 bool类型,取值0或1
+        public byte								abTourSplit;                                    // 是否支持换面分割轮巡 bool类型,取值0或1
+
+        public byte								abSnapshotTitleEn;                              // 是否支持叠加图片标题使能 bool类型,取值0或1
+        public byte                				abPtzLinkEx;                                    // 是否支持云台联动使能 bool类型,取值0或1
+        public byte                				abSnapshotTitle;                                // 是否支持叠加图片标题 bool类型,取值0或1
+        public byte                				abMailDetail;                                   // 是否支持邮件详情 bool类型,取值0或1
+        public byte                				abVideoTitleEn;                                 // 是否支持叠加视频标题,主要指主码流 bool类型,取值0或1
+        public byte                				abVideoTitle;                                   // 是否支持视频标题内容 bool类型,取值0或1
+
+        public byte                				abTour;                                         // 是否支持轮巡 bool类型,取值0或1
+        public byte                				abDBKeys;                                       // 是否支持指定事件详细信息里需要写到数据库的关键字 bool类型,取值0或1
+        public byte                				abJpegSummary;                                  // 是否支持叠加到JPEG图片的摘要信息 bool类型,取值0或1
+        public byte                				abFlashEn;                                      // 是否支持补光灯使能 bool类型,取值0或1
+        public byte                				abFlashLatch;                                   // 是否支持补光灯延时bool类型,取值0或1
+
+        public byte								abAudioFileName;                                // 是否支持联动语音文件绝对路径 bool类型,取值0或1
+        public byte								abAlarmBellEn;                                  // 是否支持警号使能 bool类型,取值0或1
+        public byte								abAccessControlEn;                              // 是否支持门禁控制使能 bool类型,取值0或1
+        public byte								abAccessControl;                                // 是否支持门禁控制 bool类型,取值0或1
+
+        public byte								abTalkBack;	                                    // 是否支持语音呼叫 bool类型,取值0或1
+        public byte								abPSTNAlarmServer;                              // 是否支持电话报警中心 bool类型,取值0或1
+        public byte								abAlarmBellLatch;                               // 是否支持警号输出延时 bool类型,取值0或1
+
+        public byte                             abPlayTimes;                                    // 是否支持联动语音播放次数 bool类型,取值0或1
+        public byte                             abReboot;                                       // 是否支持重启使能 bool类型,取值0或1
+        public byte                             abBeepTime;                                     // 是否支持蜂鸣时长 bool类型,取值0或1
+
+        public byte[]                           byReserved = new byte[68];                      // 能力保留字段
+
+        //信息
+        public CFG_TIME_SCHEDULE				stuTimeSection;									// 事件响应时间表
+
+        public int								nChannelCount;									// 设备的视频通道数
+        public int								nAlarmOutCount;									// 设备的报警输出个数
+
+        public int[]							dwRecordMask = new int[MAX_CHANNEL_COUNT];		// 录像通道掩码(按位)
+        public int								bRecordEnable;									// 录像使能
+        public int								nRecordLatch;									// 录像延时时间(秒)
+        public int[]							dwAlarmOutMask = new int[MAX_CHANNEL_COUNT];	// 报警输出通道掩码
+
+        public int								bAlarmOutEn;									// 报警输出使能
+        public int								nAlarmOutLatch;									// 报警输出延时时间(秒)
+        public int[]							dwExAlarmOutMask = new int[MAX_CHANNEL_COUNT];	// 扩展报警输出通道掩码
+        public int								bExAlarmOutEn;									// 扩展报警输出使能
+
+        public CFG_PTZ_LINK[]					stuPtzLink = (CFG_PTZ_LINK [])new CFG_PTZ_LINK().toArray(MAX_VIDEO_CHANNEL_NUM);	// 云台联动项		//这个参数并没有被解析,应该是被扩展替代
+        public int								bPtzLinkEn;										// 云台联动使能
+        public int[]							dwTourMask = new int[MAX_CHANNEL_COUNT];		// 轮询通道掩码
+        public int								bTourEnable;									// 轮询使能
+
+        public int[]							dwSnapshot = new int[MAX_CHANNEL_COUNT];		// 快照通道号掩码
+        public int								bSnapshotEn;									// 快照使能
+        public int								nSnapshotPeriod;								// 连拍周期(秒)
+        public int								nSnapshotTimes;									// 连拍次数
+        public int								bTipEnable;										// 本地消息框提示
+
+        public int								bMailEnable;									// 发送邮件,如果有图片,作为附件
+        public int								bMessageEnable;									// 上传到报警服务器
+        public int								bBeepEnable;							 		// 蜂鸣
+
+        public int								bVoiceEnable;									// 语音提示
+        public int                              nPlayTimes;                                  	// 联动语音播放次数bVoiceEnable=TRUE时生效
+
+        public int[]							dwMatrixMask = new int[MAX_CHANNEL_COUNT];		// 联动视频矩阵通道掩码
+        public int								bMatrixEnable;									// 联动视频矩阵
+        public int								nEventLatch;									// 联动开始延时时间(秒),0-15
+        public int								bLogEnable;										// 是否记录日志
+
+        public int								nDelay;											// 设置时先延时再生效,单位为秒
+        public int								bVideoMessageEn;								// 叠加提示字幕到视频。叠加的字幕包括事件类型,通道号,秒计时。
+        public int								bMMSEnable;										// 发送彩信使能
+        public int								bMessageToNetEn;								// 消息上传给网络使能
+        public int								nTourSplit;										// 轮巡时的分割模式 0: 1画面; 1: 8画面
+
+        public int								bSnapshotTitleEn;								// 是否叠加图片标题
+        public int                 				nPtzLinkExNum;									// 云台配置数
+        public CFG_PTZ_LINK_EX[] 				stuPtzLinkEx = (CFG_PTZ_LINK_EX [])new CFG_PTZ_LINK_EX().toArray(MAX_VIDEO_CHANNEL_NUM);  // 扩展云台信息
+        public int                 				nSnapTitleNum;									// 图片标题内容数
+        public NET_CFG_EVENT_TITLE[] 			stuSnapshotTitle = (NET_CFG_EVENT_TITLE [])new NET_CFG_EVENT_TITLE().toArray(MAX_VIDEO_CHANNEL_NUM);	// 图片标题内容
+        public CFG_MAIL_DETAIL 					stuMailDetail;									// 邮件详细内容
+        public int                				bVideoTitleEn;									// 是否叠加视频标题,主要指主码流
+        public int                 				nVideoTitleNum;									// 视频标题内容数目
+        public NET_CFG_EVENT_TITLE[] 			stuVideoTitle = (NET_CFG_EVENT_TITLE [])new NET_CFG_EVENT_TITLE().toArray(MAX_VIDEO_CHANNEL_NUM);		// 视频标题内容
+
+        public int                 				nTourNum;										// 轮询联动数目
+        public CFG_TOURLINK[]    				stuTour = (CFG_TOURLINK [])new CFG_TOURLINK().toArray(MAX_VIDEO_CHANNEL_NUM);// 轮询联动配置
+        public int                 				nDBKeysNum;										// 指定数据库关键字的有效数
+        public byte[]                			szDBKeys = new byte[MAX_DBKEY_NUM * MAX_CHANNELNAME_LEN];	// 指定事件详细信息里需要写到数据库的关键字
+        public byte[]                			byJpegSummary = new byte[MAX_SUMMARY_LEN];						// 叠加到JPEG图片的摘要信息
+        public int                				bFlashEnable;											// 是否使能补光灯
+        public int                 				nFlashLatch;											// 补光灯延时时间(秒),延时时间范围:[10,300]
+
+        public byte[]							szAudioFileName = new byte[MAX_PATH];						// 联动语音文件绝对路径
+        public int								bAlarmBellEn;									// 警号使能
+        public int								bAccessControlEn;								// 门禁使能
+        public int								dwAccessControl;								// 门禁组数
+        public int[]							emAccessControlType = new int[MAX_ACCESSCONTROL_NUM];	// 门禁联动操作信息,详见EM_CFG_ACCESSCONTROLTYPE
+
+        public CFG_TALKBACK_INFO				stuTalkback;									// 语音呼叫联动信息
+        public CFG_PSTN_ALARM_SERVER			stuPSTNAlarmServer;								// 电话报警中心联动信息
+        public int								nAlarmBellLatch;								// 警号输出延时时间(10-300秒)
+
+        public int                              bReboot;                                        //重启使能TRUE:使能 FALSE:不使能
+        public int                              nBeepTime;                                      //蜂鸣时长最大值为3600,0代表持续蜂鸣
+        public int                              abAudioLinkTime;                                //联动语音时间使能
+        public int							    nAudioLinkTime;									// 联动语音播放的时间, 单位:秒
+        public int							    abAudioPlayTimes;								// 联动语音播放使能
+        public int								nAudioPlayTimes;								// 联动语音播放次数
+        public byte[]							byReserve = new byte[2036];						// 预留字节
+    }
+
+    // 时间段信息
+    public static class CFG_TIME_SECTION extends SdkStructure
+    {
+        public int 		dwRecordMask;//录像掩码,按位分别为动态检测录像、报警录像、定时录像、Bit3~Bit15保留、Bit16动态检测抓图、Bit17报警抓图、Bit18定时抓图
+                                     // 当表示推送时间段时, 表示使能:1表示使能,0表示非使能
+        public int 		nBeginHour;
+        public int 		nBeginMin;
+        public int 		nBeginSec;
+        public int 		nEndHour;
+        public int 		nEndMin;
+        public int 		nEndSec;
+
+        public void setStartTime(int nBeginHour, int nBeginMin, int nBeginSec) {
+            this.nBeginHour = nBeginHour;
+            this.nBeginMin = nBeginMin;
+            this.nBeginSec = nBeginSec;
+        }
+
+        public void setEndTime(int nEndHour, int nEndMin, int nEndSec) {
+            this.nEndHour = nEndHour;
+            this.nEndMin = nEndMin;
+            this.nEndSec = nEndSec;
+        }
+
+        public String startTime() {
+            return nBeginHour + ":" + nBeginMin + ":" + nBeginSec;
+        }
+
+        public String endTime() {
+            return nEndHour + ":" + nEndMin + ":" + nEndSec;
+        }
+    }
+
+    // 事件类型EVENT_IVS_FACERECOGNITION(目标识别)对应的规则配置
+    public static class CFG_FACERECOGNITION_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[] 						szRuleName = new byte[MAX_NAME_LEN];	// 规则名称,不同规则不能重名
+        public byte 						bRuleEnable;						    // 规则使能,bool类型,取值0或1
+        public byte[] 						bReserved = new byte[2];				// 保留字段
+        public int 							nObjectTypeNum;							// 相应物体类型个数
+        public byte[] 						szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];//相应物体类型列表
+        public int 							nPtzPresetId;							// 云台预置点编号0~65535
+        public byte 						bySimilarity;							// 相似度,必须大于该相识度才报告(1~100)
+        public byte 						byAccuracy;								// 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1表示检测速度优先,最大值为10表示检测精度优先)
+        public byte				    		byMode;									// 对比模式,0-正常,1-指定人脸区域组合,
+        public byte 						byImportantRank;						// 查询重要等级大于等于此等级的人员(1~10,数值越高越重要)
+        public int 							nAreaNum;								// 区域数
+        public byte[]						byAreas = new byte[8];					// 人脸区域组合,0-眉毛,1-眼睛,2-鼻子,3-嘴巴,4-脸颊(此参数在对比模式为1时有效)
+        public int 							nMaxCandidate;							// 报告的最大匹配图片个数
+        public CFG_ALARM_MSG_HANDLE 		stuEventHandler;						// 报警联动
+        public TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_10[])new TIME_SECTION_WEEK_DAY_10().toArray(WEEK_DAY_NUM); // 事件响应时间段
+    }
+
+    // 事件类型EVENT_IVSS_FACEATTRIBUTE(IVSS目标检测事件) 对应的规则配置
+    public static class CFG_FACEATTRIBUTE_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[] 						szRuleName = new byte[MAX_NAME_LEN];							// 规则名称,不同规则不能重名
+        public byte 						bRuleEnable;						    						// 规则使能,bool类型,取值0或1
+        public byte[] 						bReserved = new byte[3];										// 保留字
+        public int							nObjectTypeNum;													// 相应物体类型个数
+        public byte[] 						szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN]; 	// 相应物体类型列表
+        public int							nDetectRegionPoint;												// 检测区顶点数
+        public CFG_POLYGON[]                stuDetectRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM); // 检测区
+        public CFG_ALARM_MSG_HANDLE 		stuEventHandler;												// 报警联动
+        public TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_10[])new TIME_SECTION_WEEK_DAY_10().toArray(WEEK_DAY_NUM);// 事件响应时间段
+        public int                 			nPtzPresetId;													// 云台预置点编号	0~65535
+        public int                 			nMinDuration;                                           		// 最短触发时间,单位:秒
+        public int                 			nTriggerTargetsNumber;                                  		// 触发报警的人脸个数
+        public int                 			nSensitivity;                                           		// 灵敏度,范围[1,10],灵敏度越高越容易检测
+        public int                 			nReportInterval;                                        		// 重复报警间隔,单位:秒,[0,600](等于0表示不重复报警)
+        public int               		 	bSizeFileter;                                           		// 规则特定的尺寸过滤器是否有效,bool类型 取值0或1
+        public CFG_SIZEFILTER_INFO 			stuSizeFileter;                                         		// 规则特定的尺寸过滤器
+        public int							nFaceFeatureNum;												// 需要检测的人脸属性个数
+        public int[]  						emFaceFeatureType = new int[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性, 参考  EM_FACEFEATURE_TYPE
+        public boolean                      bFeatureFilter;                                         // 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性
+        public int                          nMinQuality;                                            // 人脸图片质量阈值,和bFeatureFilter一起使用 范围[0,100]
+    }
+
+    // 联动的布控组
+    public static class CFG_LINKGROUP_INFO extends SdkStructure
+    {
+        public int 					bEnable;									// 布控组是否启用,bool类型 取值0或1
+        public byte[]					szGroupID = new byte[MAX_GROUP_ID_LEN];		// 布控组ID
+        public byte                		bySimilarity;                       		// 相似度阈值
+        public byte[]					szColorName = new byte[MAX_COLOR_NAME_LEN];	// 事件触发时绘制人脸框的颜色
+        public int 					bShowTitle;									// 事件触发时规则框上是否显示报警标题,bool类型 取值0或1
+        public int 					bShowPlate;									// 事件触发时是否显示比对面板	,bool类型 取值0或1
+        public byte[]					bReserved=new byte[511];						// 保留字段
+        public CFG_ALARM_MSG_HANDLE 	stuEventHandler;							// 报警联动
+    }
+
+    // 陌生人布防模式
+    public static class CFG_STRANGERMODE_INFO extends SdkStructure
+    {
+        public int 					    bEnable;									// 模式是否启用,bool类型 取值0或1
+        public byte[]					szColorHex = new byte[MAX_COLOR_HEX_LEN];	// 事件触发时绘制人脸框的颜色
+        public int 					    bShowTitle;									// 事件触发时规则框上是否显示报警标题,bool类型 取值0或1
+        public int 					    bShowPlate;									// 事件触发时是否显示比对面板,bool类型 取值0或1
+        public byte[]					bReserved=new byte[512];									// 保留字段
+        public CFG_ALARM_MSG_HANDLE 	stuEventHandler;							// 报警联动
+    }
+
+    // 事件类型EVENT_IVS_FACEANALYSIS(人脸分析事件) 对应的规则配置
+    public static class CFG_FACEANALYSIS_INFO extends SdkStructure
+    {
+        public byte[] 						szRuleName = new byte[MAX_NAME_LEN];							// 规则名称,不同规则不能重名
+        public byte 						bRuleEnable;						    						// 规则使能,bool类型,取值0或1
+        public byte[] 						bReserved = new byte[3];										// 保留字
+        public int							nObjectTypeNum;													// 相应物体类型个数
+        public byte[] 						szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN]; 	// 相应物体类型列表
+        public int							nDetectRegionPoint;												// 检测区顶点数
+        public CFG_POLYGON[]                stuDetectRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM); // 检测区
+        public CFG_ALARM_MSG_HANDLE 		stuEventHandler;												// 报警联动
+        public TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_10[])new TIME_SECTION_WEEK_DAY_10().toArray(WEEK_DAY_NUM);// 事件响应时间段
+        public int                 			nPtzPresetId;													// 云台预置点编号	0~65535
+        public int                 			nSensitivity;                                           		// 灵敏度,范围[1,10],灵敏度越高越容易检测
+        public int                 			nLinkGroupNum;                                        			// 联动布控个数
+        public CFG_LINKGROUP_INFO[]		    stuLinkGroupArr = (CFG_LINKGROUP_INFO[])new CFG_LINKGROUP_INFO().toArray(MAX_LINK_GROUP_NUM); // 联动的布控组
+        public CFG_STRANGERMODE_INFO		stuStrangerMode;												// 陌生人布防模式
+        public int               		 	bSizeFileter;                                           		// 规则特定的尺寸过滤器是否有效
+        public CFG_SIZEFILTER_INFO 			stuSizeFileter;                                         		// 规则特定的尺寸过滤器, 1-true  0-false
+        public int							bFeatureEnable;													// 是否开启人脸属性识别
+        public int							nFaceFeatureNum;												// 需要检测的人脸属性个数
+        public int[]  						emFaceFeatureType = new int[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性, 参考  EM_FACEFEATURE_TYPE
+        public int							bFeatureFilter;													// 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性
+        // true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准,影响用户体验)
+        public int							nMinQuality;													// 人脸图片质量阈值,和bFeatureFilter一起使用 范围[1,100]
+    }
+
+    // 事件类型EVENT_IVSS_FACECOMPARE(IVSS目标识别事件) 对应的规则配置
+    public static class CFG_FACECOMPARE_INFO extends SdkStructure
+    {
+        public byte[] 						szRuleName = new byte[MAX_NAME_LEN];							// 规则名称,不同规则不能重名
+        public byte 						bRuleEnable;						    						// 规则使能,bool类型,取值0或1
+        public byte[] 						bReserved = new byte[3];										// 保留字
+        public int							nObjectTypeNum;													// 相应物体类型个数
+        public byte[] 						szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN]; 	// 相应物体类型列表
+        public CFG_ALARM_MSG_HANDLE 		stuEventHandler;												// 报警联动
+        public TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_10[])new TIME_SECTION_WEEK_DAY_10().toArray(WEEK_DAY_NUM);// 事件响应时间段
+        public int                 			nPtzPresetId;													// 云台预置点编号	0~65535
+        public int                 			nLinkGroupNum;                                        			// 联动布控个数
+        public CFG_LINKGROUP_INFO[]		    stuLinkGroupArr = (CFG_LINKGROUP_INFO[])new CFG_LINKGROUP_INFO().toArray(MAX_LINK_GROUP_NUM); // 联动的布控组
+        public CFG_STRANGERMODE_INFO		stuStrangerMode;												// 陌生人布防模式
+    }
+
+    // 智能报警事件公共信息
+    public static class EVENT_INTELLI_COMM_INFO extends SdkStructure
+    {
+        public int 			emClassType;				// 智能事件所属大类, 取值为  EM_CLASS_TYPE 中的值
+        public int			nPresetID;					// 该事件触发的预置点,对应该设置规则的预置点
+        public byte[]       bReserved = new byte[124];  // 保留字节,留待扩展.
+    }
+
+    // 事件类型EVENT_IVS_FACERECOGNITION(目标识别)对应的数据块描述信息
+    public static class DEV_EVENT_FACERECOGNITION_INFO extends SdkStructure
+    {
+        public int 						nChannelID;									// 通道号
+        public byte[] 					szName = new byte[128]; 					// 事件名称
+        public int 						nEventID;									// 事件ID
+        public NET_TIME_EX  			UTC;										// 事件发生的时间
+        public NET_MSG_OBJECT   		stuObject;									// 检测到的物体
+        public int 						nCandidateNum;								// 当前人脸匹配到的候选对象数量
+        public CANDIDATE_INFO[] 		stuCandidates = (CANDIDATE_INFO[])new CANDIDATE_INFO().toArray(NET_MAX_CANDIDATE_NUM);//当前人脸匹配到的候选对象信息
+        public byte 					bEventAction;								// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte 					byImageIndex;								// 图片的序号,同一时间内(精确到秒)可能有多张图片,从0开始
+        public byte[] 					byReserved1 = new byte[2];  				// 对齐
+        public int 						bGlobalScenePic;							// 全景图是否存在, 类型为BOOL, 取值为0或者1
+        public NET_PIC_INFO 			stuGlobalScenePicInfo;						// 全景图片信息
+        public byte[] 					szSnapDevAddress = new byte[MAX_PATH];		// 抓拍当前人脸的设备地址
+        public int 						nOccurrenceCount;							// 事件触发累计次数, 类型为unsigned int
+        public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;							// 智能事件公共信息
+        public NET_FACE_DATA 			stuFaceData;								// 人脸数据
+        public byte[]					szUID = new byte[NET_COMMON_STRING_32];		// 抓拍人员写入数据库的唯一标识符
+        public NET_FEATURE_VECTOR	    stuFeatureVector;							// 特征值信息
+        public byte[]				    szFeatureVersion = new byte[32];			// 特征值算法版本
+        public int 						emFaceDetectStatus;                       	// 人脸在摄像机画面中的状态,详见EM_FACE_DETECT_STATUS
+        public byte[]					szSourceID = new byte[32];					// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public NET_PASSERBY_INFO		stuPasserbyInfo;							// 路人库信息
+        public int						nStayTime;									// 路人逗留时间 单位:秒     
+        public NET_GPS_INFO             stuGPSInfo;                                 // GPS信息
+        public byte[]                   szCameraID = new byte[64];                  // 国标编码
+    	public NET_RESOLUTION_INFO      stuResolution;                              // 对应图片的分辨率
+    	public int					    nPerFlag;									// ICC人脸子系统, 人脸标签标志位, -1:未知, 0:授权人脸, 1:未授权人脸, 2:陌生人       
+        public byte[]                	bReserved = new byte[360];                  // 保留字节,留待扩展.  
+        public int					    nRetCandidatesExNum;						// 当前人脸匹配到的候选对象数量实际返回值
+        public CANDIDATE_INFOEX[]       stuCandidatesEx = (CANDIDATE_INFOEX[])new CANDIDATE_INFOEX().toArray(NET_MAX_CANDIDATE_NUM);     // 当前人脸匹配到的候选对象信息扩展
+        public byte[]					szSerialUUID = new byte[22];				// 级联物体ID唯一标识
+            																		// 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他;
+    																				// 中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001
+        public byte[]                	byReserved = new byte[2];                   // 对齐
+        public NET_CUSTOM_PROJECTS_INFO stuCustomProjects;						// 项目信息
+        public boolean				bIsDuplicateRemove;							// 智慧零售,是否符合去重策略(TRUE:符合 FALSE:不符合)
+        public byte[]				byReserved2=new byte[4];								// 字节对齐
+        public NET_IMAGE_INFO_EX2[]       stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);	// 图片信息数组
+
+        public int					nImageInfoNum;								// 图片信息个数
+        public NET_MSG_OBJECT_SUPPLEMENT    stuObjectSupplement;                // 检测到的物体补充字段
+        public int					nMode;                                      //0-普通  1-开启陌生人模式
+        public	SCENE_IMAGE_INFO					stuThumImageInfo=new SCENE_IMAGE_INFO();        //大图(全景图)的缩略图信息
+        public	SCENE_IMAGE_INFO					stuHumanImageInfo=new SCENE_IMAGE_INFO();       //人体图片信息
+        public	byte[]					szVideoPath=new byte[256];                  //违章关联视频FTP上传路径
+        public  int                bIsHighFrequencyAlarm;                      // 是否是高频次报警
+        public byte[]                szFrequencyAlarmName=new byte[32];                   // 频次报警名称, 当bIsHighFrequencyAlarm字段值为TRUE时才有效,表示高频次报警名称
+        public double				PTS;										// 时间戳(单位是毫秒)
+        public byte[]				szSubCode=new byte[32];								// 触发人脸抓拍的事件类型
+        public int					nRegionCode;								// 区域编码
+        public	byte[]					byReserved3=new byte[236];                  //保留字节
+
+        @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+    }
+
+    // 路人信息
+    public static class NET_PASSERBY_INFO extends SdkStructure
+    {
+        public byte[]				szPasserbyUID = new byte[MAX_COMMON_STRING_32];			// 路人唯一标识符
+        public byte[]               szPasserbyGroupId = new byte[MAX_COMMON_STRING_64];		// 路人库ID
+        public byte[]				szPasserbyGroupName = new byte[MAX_COMMON_STRING_128];	// 路人库名称
+        public byte[]				byReserved = new byte[128];								// 保留
+    }
+
+    // 候选人员信息扩展结构体
+    public static class CANDIDATE_INFOEX extends SdkStructure
+    {
+        public FACERECOGNITION_PERSON_INFOEX  stPersonInfo;            			  // 1 人员信息扩展
+        // 布控(禁止名单)库,指布控库中人员信息;
+        // 历史库,指历史库中人员信息
+        // 报警库,指布控库的人员信息
+        public byte                           bySimilarity;            			  // 1 和查询图片的相似度,百分比表示,1~100
+        public byte                           byRange;                 			  // 人员所属数据库范围,详见EM_FACE_DB_TYPE
+        public byte[]                         byReserved1 = new byte[2];
+        public NET_TIME                       stTime=new NET_TIME();                  			  // 当byRange为历史数据库时有效,表示查询人员出现的时间
+        public byte[]                         szAddress = new byte[MAX_PATH];     // 当byRange为历史数据库时有效,表示查询人员出现的地点
+        public int                         	  bIsHit;                  			  // 是否有识别结果,指这个检测出的人脸在库中有没有比对结果
+        public NET_PIC_INFO_EX3               stuSceneImage=new NET_PIC_INFO_EX3();           			  // 人脸全景图
+        public int							  nChannelID;			    		  // 通道号
+        public byte[]            			  szFilePathEx = new byte[256];  	  // 文件路径
+        public byte[]                         byReserved = new byte[1024];   	  // 保留字节
+
+        @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+
+        @Override
+        public String toString() {
+            return "CANDIDATE_INFOEX{" +
+                    "stPersonInfo=" + stPersonInfo +
+                    ", bySimilarity=" + bySimilarity +
+                    ", byRange=" + byRange +
+                    ", stTime=" + stTime +
+                    ", szAddress=" + new String(szAddress) +
+                    ", bIsHit=" + bIsHit +
+                    ", stuSceneImage=" + stuSceneImage +
+                    ", nChannelID=" + nChannelID +
+                    ", szFilePathEx=" + new  String(szFilePathEx) +
+                    '}';
+        }
+    }
+
+    // 存储IVSS需求,特征值信息
+    public static class NET_FEATURE_VECTOR extends SdkStructure
+    {
+        public int							 dwOffset;							// 人脸小图特征值在二进制数据块中的偏移
+        public int							 dwLength;							// 人脸小图特征值长度,单位:字节
+        public byte[]						 byReserved = new byte[120];					// 保留
+    }
+
+    // 人员信息扩展结构体
+    public static class FACERECOGNITION_PERSON_INFOEX extends SdkStructure
+    {
+        public byte[]                		szPersonName = new byte[NET_MAX_PERSON_NAME_LEN];   // ---姓名
+        public short                		wYear;                                          	// 出生年,作为查询条件时,此参数填0,则表示此参数无效
+        public byte                			byMonth;                                        	// 出生月,作为查询条件时,此参数填0,则表示此参数无效
+        public byte                			byDay;                                          	// 出生日,作为查询条件时,此参数填0,则表示此参数无效
+        public byte                			bImportantRank;                                 	// 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
+        public byte                			bySex;                                          	// 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
+        public byte[]                		szID = new byte[NET_MAX_PERSON_ID_LEN];             // ---人员唯一标示(证件号码,工号,或其他编号)
+        public short                		wFacePicNum;                                    	// 图片张数
+        public NET_PIC_INFO[]         		szFacePicInfo = new NET_PIC_INFO[NET_MAX_PERSON_IMAGE_NUM];  // 当前人员对应的图片信息
+        public byte                			byType;                                         	// 人员类型,详见 EM_PERSON_TYPE
+        public byte                			byIDType;                                       	// 证件类型,详见 EM_CERTIFICATE_TYPE
+        public byte							byGlasses;											// 是否戴眼镜,0-未知 1-不戴 2-戴
+        public byte                			byAge;												// 年龄,0表示未知
+        public byte[]                		szProvince = new byte[NET_MAX_PROVINCE_NAME_LEN];   // 省份
+        public byte[]                		szCity = new byte[NET_MAX_CITY_NAME_LEN];           // 城市
+        public byte[]                		szUID = new byte[NET_MAX_PERSON_ID_LEN];            // ---人员唯一标识符,首次由服务端生成,区别于ID字段
+        // 修改,删除操作时必填
+        public byte[]						szCountry = new byte[NET_COUNTRY_LENGTH];			// 国籍,符合ISO3166规范
+        public byte							byIsCustomType;										// 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szCustomType字段
+        public byte[]						szCustomType = new byte[NET_COMMON_STRING_16];	    // 人员自定义类型
+        public byte[]						szComment = new byte[NET_COMMENT_LENGTH];			// ---备注信息
+        public byte[]						szGroupID = new byte[NET_GROUPID_LENGTH];			// 人员所属组ID
+        public byte[]						szGroupName = new byte[NET_GROUPNAME_LENGTH];		// ---人员所属组名, 用户自己申请内存的情况时,
+        public int							emEmotion;											// 表情, 参考  EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public byte[]						szHomeAddress = new byte[NET_COMMON_STRING_128];	// 注册人员家庭地址
+        public int							emGlassesType;										// 眼镜类型, 参考 EM_GLASSES_TYPE
+        public byte[]                       szReserved1 = new byte[4];							//
+        public int							emEye;												// 眼睛状态, 参考 EM_EYE_STATE_TYPE
+        public int							emMouth;											// 嘴巴状态, 参考  EM_MOUTH_STATE_TYPE
+        public int 							emMask;												// 口罩状态, 参考 EM_MASK_STATE_TYPE
+        public int							emBeard;											// 胡子状态, 参考  EM_BEARD_STATE_TYPE
+        public int							nAttractive;										// 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高
+        public int							emFeatureState;										// 人员建模状态, 参考 EM_PERSON_FEATURE_STATE
+        public int                			bAgeEnable;                     					// 是否指定年龄段, 1-true; 0-false
+        public int[]                 		nAgeRange = new int[2];                  	 		// 年龄范围
+        public int							nEmotionValidNum;               					// 人脸特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情
+        public int[]    					emEmotions = new int[NET_MAX_FACEDETECT_FEATURE_NUM];// 人脸特征数组,与 byFeatureValidNum 结合使用  设置查询条件的时候使用, 参考 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public int                			nCustomPersonInfoNum;                                // 注册人员信息扩展个数
+        public CUSTOM_PERSON_INFO[]         szCustomPersonInfo
+                = new CUSTOM_PERSON_INFO[NET_MAX_CUSTOM_PERSON_INFO_NUM];  //注册人员信息扩展
+        public int							emRegisterDbType;									// 注册库类型,详见EM_REGISTER_DB_TYPE
+        public NET_TIME                     stuEffectiveTime=new NET_TIME();                           // 有效期时间
+        /**
+         * 建模失败原因,对应{@link com.netsdk.lib.enumeration.EM_PERSON_FEATURE_ERRCODE}
+         */
+        public int                          emFeatureErrCode;
+        public int    wFacePicNumEx;    // 人脸图片张数
+        public NET_FACE_PIC_INFO[]    szFacePicInfoEx = new NET_FACE_PIC_INFO[6];    // 当前人员对应的图片信息
+        public NET_PERSON_FEATURE_VALUE_INFO    stuPersonFeatureValue=new NET_PERSON_FEATURE_VALUE_INFO();    // 人员特征信息
+        public   int                     bFrozenStatus;                              // 人员冻结状态
+        public byte[]   szReserved=new byte[4];								// 保留字节
+        public NET_PERSON_FREQUENCY_INFO	stuFrequencyInfo=new NET_PERSON_FREQUENCY_INFO();							// 频次报警信息
+        public  byte[]		szUUID=new byte[64];
+        public byte[]    byReserved = new byte[188];    // 保留字节
+
+        public FACERECOGNITION_PERSON_INFOEX(){
+            for(int i=0;i<szFacePicInfo.length;i++){
+                szFacePicInfo[i]=new NET_PIC_INFO();
+            }
+            for(int i=0;i<szCustomPersonInfo.length;i++){
+                szCustomPersonInfo[i]=new CUSTOM_PERSON_INFO();
+            }
+            for(int i=0;i<szFacePicInfoEx.length;i++){
+                szFacePicInfoEx[i]=new NET_FACE_PIC_INFO();
+            }
+
+        }
+
+    }
+
+    //注册人员信息扩展结构体
+    public static class CUSTOM_PERSON_INFO extends SdkStructure
+    {
+        public byte[] 						szPersonInfo = new byte[NET_MAX_PERSON_INFO_LEN];   //人员扩展信息
+        public byte[]                       byReserved = new byte[124];   						// 保留字节
+    }
+
+    // 人体测温温度单位
+    public static class EM_HUMAN_TEMPERATURE_UNIT extends SdkStructure
+    {
+        public static final int EM_HUMAN_TEMPERATURE_UNKNOWN        = -1;   // 未知
+        public static final int EM_HUMAN_TEMPERATURE_CENTIGRADE		= 0;	// 摄氏度
+        public static final int EM_HUMAN_TEMPERATURE_FAHRENHEIT 	= 1;    // 华氏度
+        public static final int EM_HUMAN_TEMPERATURE_KELVIN			= 2;	// 开尔文
+    };
+
+    // 人脸数据
+    public static class NET_FACE_DATA extends SdkStructure
+    {
+        public int 				emSex;							// 性别, 参考 EM_DEV_EVENT_FACEDETECT_SEX_TYPE
+        public int        		nAge;							// 年龄,-1表示该字段数据无效
+        public int        		nFeatureValidNum;           	// 人脸特征数组有效个数,与 emFeature 结合使用
+        public int[]    		emFeature = new int[NET_MAX_FACEDETECT_FEATURE_NUM];   // 人脸特征数组,与 nFeatureValidNum 结合使用, 参考 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public byte[]           szReserved1 = new byte[4];		// 
+        public int				emEye;							// 眼睛状态, 参考 EM_EYE_STATE_TYPE
+        public int				emMouth;						// 嘴巴状态, 参考 EM_MOUTH_STATE_TYPE
+        public int 				emMask;							// 口罩状态, 参考 EM_MASK_STATE_TYPE
+        public int				emBeard;						// 胡子状态, 参考 EM_BEARD_STATE_TYPE
+        public int				nAttractive;					// 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高
+        public byte[]           bReserved1 = new byte[4];       // 保留字节
+        public NET_EULER_ANGLE	stuFaceCaptureAngle;		    // 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
+        // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
+        public int				nFaceQuality;				    // 人脸抓拍质量分数
+        public int              nFaceAlignScore;                // 人脸对齐得分分数,范围 0~10000,-1为无效值
+        public int              nFaceClarity;                   // 人脸清晰度分数,范围 0~10000,-1为无效值
+
+        public double			dbTemperature;				    // 温度, bAnatomyTempDetect 为TRUE时有效
+        public int			    bAnatomyTempDetect;			    // 是否人体测温
+        public int              emTemperatureUnit;              // 温度单位, bAnatomyTempDetect 为TRUE时有效
+        public boolean          bIsOverTemp;                    // 是否温度异常, bAnatomyTempDetect 为TRUE时有效
+        public boolean          bIsUnderTemp;                   // 是否温度异常, bAnatomyTempDetect 为TRUE时有效
+        public NET_FACE_ORIGINAL_SIZE                  stuOriginalSize;            // 算法人脸分析时的实际人脸图片尺寸, 宽高为0时无效
+        public int emGlass;                    /** 戴眼镜状态  {@link  EM_GLASS_STATE_TYPE} */
+        public byte[]           bReserved = new byte[64];       // 保留字节,留待扩展.
+    }
+
+    //目标检测对应性别类型
+    public static class EM_DEV_EVENT_FACEDETECT_SEX_TYPE extends SdkStructure
+    {
+        public static final int EM_DEV_EVENT_FACEDETECT_SEX_TYPE_UNKNOWN = 0; //未知
+        public static final int EM_DEV_EVENT_FACEDETECT_SEX_TYPE_MAN = 1; //男性
+        public static final int EM_DEV_EVENT_FACEDETECT_SEX_TYPE_WOMAN = 2; //女性
+    }
+
+    //目标检测对应人脸特征类型
+    public static class EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE extends SdkStructure
+    {
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_UNKNOWN = 0; //未知
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_WEAR_GLASSES = 1; //戴眼镜
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SMILE = 2; //微笑
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_ANGER = 3; //愤怒
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SADNESS = 4; //悲伤
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_DISGUST = 5; //厌恶
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_FEAR = 6; //害怕
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SURPRISE = 7; //惊讶
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_NEUTRAL = 8; //正常
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_LAUGH = 9; //大笑
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_NOGLASSES = 10; // 没戴眼镜
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_HAPPY = 11;	 // 高兴
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_CONFUSED = 12;	 // 困惑
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_SCREAM = 13;	 // 尖叫
+        public static final int EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE_WEAR_SUNGLASSES = 14; // 戴太阳眼镜
+    }
+
+
+    // 眼睛状态
+    public static class EM_EYE_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_EYE_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_EYE_STATE_NODISTI = 1;		// 未识别
+        public static final int EM_EYE_STATE_CLOSE = 2;		    // 闭眼
+        public static final int EM_EYE_STATE_OPEN = 3;			// 睁眼
+    }
+
+    // 嘴巴状态
+    public static class EM_MOUTH_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_MOUTH_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_MOUTH_STATE_NODISTI = 1;		// 未识别
+        public static final int EM_MOUTH_STATE_CLOSE = 2;		// 闭嘴
+        public static final int EM_MOUTH_STATE_OPEN = 3;		// 张嘴
+    }
+
+    // 口罩状态
+    public static class EM_MASK_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_MASK_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_MASK_STATE_NODISTI = 1;		// 未识别
+        public static final int EM_MASK_STATE_NOMASK = 2;		// 没戴口罩
+        public static final int EM_MASK_STATE_WEAR = 3;			// 戴口罩
+    }
+
+    // 胡子状态
+    public static class EM_BEARD_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_BEARD_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_BEARD_STATE__NODISTI = 1;	// 未识别
+        public static final int EM_BEARD_STATE_NOBEARD = 2;		// 没胡子
+        public static final int EM_BEARD_STATE_HAVEBEARD = 3;	// 有胡子
+    }
+
+    // 人员建模状态
+    public static class EM_PERSON_FEATURE_STATE extends SdkStructure
+    {
+        public static final int EM_PERSON_FEATURE_UNKNOWN = 0;		// 未知
+        public static final int EM_PERSON_FEATURE_FAIL = 1;			// 建模失败,可能是图片不符合要求,需要换图片
+        public static final int EM_PERSON_FEATURE_USEFUL = 2;		// 有可用的特征值
+        public static final int EM_PERSON_FEATURE_CALCULATING = 3;	// 正在计算特征值
+        public static final int EM_PERSON_FEATURE_UNUSEFUL = 4;		// 已建模,但算法升级导致数据不可用,需要重新建模
+    }
+
+    // 事件文件的文件标签类型
+    public static class EM_EVENT_FILETAG extends SdkStructure
+    {
+        public static final int NET_ATMBEFOREPASTE = 1; //ATM贴条前
+        public static final int NET_ATMAFTERPASTE = 2;  //ATM贴条后
+    }
+
+    // 事件对应文件信息
+    public static class NET_EVENT_FILE_INFO extends SdkStructure
+    {
+        public byte 		bCount;			// 当前文件所在文件组中的文件总数
+        public byte 		bIndex;			// 当前文件在文件组中的文件编号(编号1开始)
+        public byte 		bFileTag;		// 文件标签,具体说明见枚举类型 EM_EVENT_FILETAG
+        public byte 		bFileType;		// 文件类型,0-普通1-合成2-抠图
+        public NET_TIME_EX  stuFileTime;	// 文件时间
+        public int 			nGroupId;		// 同一组抓拍文件的唯一标识
+
+        @Override
+        public String toString() {
+            return "事件对应文件信息,NET_EVENT_FILE_INFO{" +
+                    "bCount=" + bCount +
+                    ", bIndex=" + bIndex +
+                    ", bFileTag=" + bFileTag +
+                    ", bFileType=" + bFileType +
+                    ", stuFileTime=" + stuFileTime.toStringTime() +
+                    ", nGroupId=" + nGroupId +
+                    '}';
+        }
+    }
+
+    // 多目标检测信息
+    public static class NET_FACE_INFO extends SdkStructure
+    {
+        public int 			nObjectID;						// 物体ID,每个ID表示一个唯一的物体
+        public byte[] 		szObjectType = new byte[128];	// 物体类型
+        public int 			nRelativeID;					// Relative与另一张图片ID相同,表示这张人脸抠图是从大图中取出的
+        public DH_RECT 		BoundingBox;					// 包围盒
+        public NET_POINT 	Center;							// 物体型心
+    }
+
+    public static class EM_FACE_DETECT_STATUS extends SdkStructure
+    {
+        public static final int EM_FACE_DETECT_UNKNOWN = 0; 	// 未知
+        public static final int EM_FACE_DETECT_APPEAR = 1;  	//出现
+        public static final int EM_FACE_DETECT_INPICTURE = 2;  	//在画面中
+        public static final int EM_FACE_DETECT_EXIT = 3;  		//离开
+    }
+
+    // 姿态角数据
+    public static class NET_EULER_ANGLE extends SdkStructure
+    {
+        public int 			nPitch;	// 仰俯角
+        public int 			nYaw;	// 偏航角
+        public int 			nRoll;	// 翻滚角
+    }
+
+    //事件类型EVENT_IVS_FACEDETECT(目标检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_FACEDETECT_INFO extends SdkStructure
+    {
+        public int 						nChannelID;					// 通道号
+        public byte[] 					szName = new byte[128];		// 事件名称
+        public byte[] 					bReserved1 = new byte[4];	// 字节对齐
+        public double 					PTS;						// 时间戳(单位是毫秒)
+        public NET_TIME_EX  			UTC;						// 事件发生的时间
+        public int 						nEventID;					// 事件ID
+        public NET_MSG_OBJECT 			stuObject;					// 检测到的物体
+        public NET_EVENT_FILE_INFO  	stuFileInfo;				// 事件对应文件信息
+        public byte 					bEventAction;				// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[] 					reserved = new byte[2];		// 保留字节
+        public byte 					byImageIndex;				// 图片的序号,同一时间内(精确到秒)可能有多张图片,从0开始
+        public int 						nDetectRegionNum;			// 规则检测区域顶点数
+        public NET_POINT[] 				DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);// 规则检测区域
+        public int 						dwSnapFlagMask;				// 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public byte[] 					szSnapDevAddress = new byte[MAX_PATH];// 抓拍当前人脸的设备地址,如:滨康路37号
+        public int 						nOccurrenceCount;			// 事件触发累计次数, 类型为unsigned int
+        public int 						emSex;						// 性别, 取值为EM_DEV_EVENT_FACEDETECT_SEX_TYPE中的值
+        public int 						nAge;						// 年龄,-1表示该字段数据无效
+        public int 						nFeatureValidNum;			//人脸特征数组有效个数,与emFeature结合使用, 类型为unsigned int
+        public int[] 					emFeature = new int[NET_MAX_FACEDETECT_FEATURE_NUM];		// 人脸特征数组,与nFeatureValidNum, 取值为EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE中的值
+        public int 						nFacesNum;					// 指示stuFaces有效数量
+        public NET_FACE_INFO[] 			stuFaces = (NET_FACE_INFO[])new NET_FACE_INFO().toArray(10);// 多张人脸时使用,此时没有Object
+        public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;			// 智能事件公共信息
+        public byte[]                   szReserved1 = new byte[4];
+        /**眼睛状态 {@link com.netsdk.lib.enumeration.EM_EYE_STATE_TYPE}
+        * */
+        public int 						emEye;
+        /**嘴巴状态 {@link com.netsdk.lib.enumeration.EM_MOUTH_STATE_TYPE}
+         * */
+        public int 						emMouth;
+        /**口罩状态 {@link com.netsdk.lib.enumeration.EM_MASK_STATE_TYPE}
+         * */
+        public int  					emMask;
+        /**胡子状态 {@link com.netsdk.lib.enumeration.EM_BEARD_STATE_TYPE}
+         * */
+        public int 						emBeard;
+        public int 						nAttractive;			    // 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高
+        public byte[] 					szUID = new byte[NET_COMMON_STRING_32];			// 抓拍人员写入数据库的唯一标识符
+
+        public byte[]                   bReserved2 = new byte[4];	        // 保留字节
+        public NET_FEATURE_VECTOR		stuFeatureVector;					// 特征值信息
+        public byte[]				    szFeatureVersion = new byte[32];				// 特征值算法版本
+        public int						emFaceDetectStatus;                 // 人脸在摄像机画面中的状态 ,参考EM_FACE_DETECT_STATUS
+        public NET_EULER_ANGLE			stuFaceCaptureAngle;				// 人脸在抓拍图片中的角度信息, nPitch:抬头低头的俯仰角, nYaw左右转头的偏航角, nRoll头在平面内左偏右偏的翻滚角
+        // 角度值取值范围[-90,90], 三个角度值都为999表示此角度信息无效
+        public int						nFaceQuality;                      // 人脸抓拍质量分数,范围 0~10000 
+        public double                   dHumanSpeed;                        // 人的运动速度, km/h
+        public int                      nFaceAlignScore;                    // 人脸对齐得分分数,范围 0~10000,-1为无效值
+        public int                      nFaceClarity;                       // 人脸清晰度分数,范围 0~10000,-1为无效值
+        public int						bHumanTemperature;					// 人体温信息是否有效
+        public NET_HUMAN_TEMPERATURE_INFO	stuHumanTemperature = new NET_HUMAN_TEMPERATURE_INFO();				// 人体温信息, bHumanTemperature为TURE时有效
+        public byte[]                   szCameraID = new byte[64];          // 国标编码
+    	public NET_RESOLUTION_INFO	    stuResolution = new NET_RESOLUTION_INFO();                      // 对应图片的分辨率
+        public NET_FACE_ORIGINAL_SIZE   stuOriginalSize = new NET_FACE_ORIGINAL_SIZE();                    // 算法人脸分析时的实际人脸尺寸. 宽高为0是无效
+    	public int                      emGlass;                            // 戴眼镜状态,参考枚举EM_GLASS_STATE_TYPE
+    	public int				        emHat;                              // 帽子状态,参考枚举EM_HAT_STYLE
+    	public NET_EVENT_INFO_EXTEND    stuEventInfoEx = new NET_EVENT_INFO_EXTEND();	// 事件公共扩展字段结构体
+    	public Pointer 			        pstuImageInfo;					    // 图片信息数组 ,指正对应结构体   NET_IMAGE_INFO_EX3的数组
+    	public int						nImageInfoNum;						// 图片信息个数                
+        public byte[] 					bReserved = new byte[392 - POINTERSIZE];                          // 保留字节,留待扩展
+    }
+
+    // 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFICJAM_INFO extends SdkStructure {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐
+         */
+        public byte[] bReserved1 = new byte[4];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public double PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX UTC = new NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 对应车道号
+         */
+        public int nLane;
+        /**
+         * 事件对应文件信息
+         */
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+        /**
+         * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+         */
+        public byte bEventAction;
+        /**
+         * 表示拥堵长度(总车道长度百分比)0-100
+         */
+        public byte bJamLenght;
+        /**
+         * 保留字节
+         */
+        public byte reserved;
+        /**
+         * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+         */
+        public byte byImageIndex;
+        /**
+         * 开始停车时间
+         */
+        public NET_TIME_EX stuStartJamTime = new NET_TIME_EX();
+        /**
+         * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效)
+         */
+        public int nSequence;
+        /**
+         * 报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了)
+         */
+        public int nAlarmIntervalTime;
+        /**
+         * 抓图标志(按位),具体见NET_RESERVED_COMMON
+         */
+        public int dwSnapFlagMask;
+        /**
+         * 对应图片的分辨率
+         */
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();
+        /**
+         * 表实际的拥堵长度,单位米
+         */
+        public int nJamRealLength;
+        /**
+         * 扩展信息
+         */
+        public NET_EXTENSION_INFO stuExtensionInfo = new NET_EXTENSION_INFO();
+        /**
+         * 区域拥堵标志是否有效
+         */
+        public int bJamRegionFlagValid;
+        /**
+         * 区域拥堵标志 0-车道拥堵 1-区域拥堵
+         */
+        public int nJamRegionFlag;
+        /**
+         * 保留字节,留待扩展.
+         */
+        public byte[] bReserved = new byte[868];
+        /**
+         * 交通车辆信息
+         */
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+        /**
+         * 公共信息
+         */
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();
+
+        public DEV_EVENT_TRAFFICJAM_INFO() {
+        }                           // 公共信息
+    }
+
+    // 车辆行驶方向
+    public static class NET_FLOWSTAT_DIRECTION extends SdkStructure
+    {
+        public static final int DRIVING_DIR_UNKNOW   = 0 ;     //兼容之前
+        public static final int DRIVING_DIR_APPROACH = 1 ;     //上行,即车辆离设备部署点越来越近
+        public static final int DRIVING_DIR_LEAVE    = 2 ;     //下行,即车辆离设备部署点越来越远
+    }
+
+    //车辆流量统计车辆行驶方向信息
+    public static class NET_TRAFFIC_FLOWSTAT_INFO_DIR extends SdkStructure
+    {
+        public int                         emDrivingDir;      //行驶方向 (参见NET_FLOWSTAT_DIRECTION)
+        public byte[]                      szUpGoing = new byte[FLOWSTAT_ADDR_NAME];      //上行地点
+        public byte[]                      szDownGoing = new byte[FLOWSTAT_ADDR_NAME];    //下行地点
+        public byte[]                      reserved= new byte[32];                       //保留字节
+
+    }
+
+    public static class NET_TRAFFIC_JAM_STATUS extends SdkStructure
+    {
+        public static final int JAM_STATUS_UNKNOW = 0; //未知
+        public static final int JAM_STATUS_CLEAR  = 1; //通畅
+        public static final int JAM_STATUS_JAMMED = 2; //拥堵
+    }
+
+
+    public static class  NET_TRAFFIC_FLOW_STATE  extends SdkStructure
+    {
+        public int                             nLane;                          // 车道号
+        public int                             dwState;                        // 状态值
+        // 1- 流量过大
+        // 2- 流量过大恢复
+        // 3- 正常
+        // 4- 流量过小
+        // 5- 流量过小恢复
+        public int                             dwFlow;                         // 流量值, 单位: 辆
+        public int                             dwPeriod;                       // 流量值对应的统计时间
+        public NET_TRAFFIC_FLOWSTAT_INFO_DIR   stTrafficFlowDir;               // 车道方向信息
+        public int                             nVehicles;                      // 通过车辆总数
+        public float                           fAverageSpeed;                  // 平均车速,单位km/h
+        public float                           fAverageLength;                 // 平均车长,单位米
+        public float                           fTimeOccupyRatio;               // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
+        public float                           fSpaceOccupyRatio;              // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+        public float                           fSpaceHeadway;                  // 车头间距,相邻车辆之间的距离,单位米/辆
+        public float                           fTimeHeadway;                   // 车头时距,单位秒/辆
+        public float                           fDensity;                       // 车辆密度,每公里的车辆数,单位辆/km
+        public int                             nOverSpeedVehicles;             // 超速车辆数
+        public int                             nUnderSpeedVehicles;            // 低速车辆数
+        public int                             nLargeVehicles;                 // 大车交通量(9米<车长<12米),辆/单位时间
+        public int                             nMediumVehicles;                // 中型车交通量(6米<车长<9米),辆/单位时间
+        public int                             nSmallVehicles;                 // 小车交通量(4米<车长<6米),辆/单位时间,
+        public int                             nMotoVehicles;                  // 摩托交通量(微型车,车长<4米),辆/单位时间,
+        public int                             nLongVehicles;                  // 超长交通量(车长>=12米),辆/单位时间,
+        public int                             nVolume;                        // 交通量, 辆/单位时间, 某时间间隔通过车道、道路或其他通道上一点的车辆数,常以1小时计,
+        public int                             nFlowRate;                      // 流率小车当量,辆/小时, 车辆通过车道、道路某一断面或某一路段的当量小时流量
+        public int                             nBackOfQueue;                   // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离
+        public int                             nTravelTime;                    // 旅行时间,单位:秒, 车辆通过某一条道路所用时间。包括所有停车延误
+        public int                             nDelay;                         // 延误,单位:秒,驾驶员、乘客或行人花费的额外的行程时间
+        public byte[]                          byDirection = new byte[MAX_DRIVING_DIR_NUM]; // 车道方向,详见NET_ROAD_DIRECTION
+        public byte                            byDirectionNum;                 // 车道行驶方向个数
+        public byte[]                          reserved1 = new byte[3];        // 字节对齐
+        public int          				   emJamState;                     // 道路拥挤状况 (参见 NET_TRAFFIC_JAM_STATUS )
+        //  按车辆类型统计交通量
+        public int                             nPassengerCarVehicles;          // 客车交通量(辆/单位时间)
+        public int                             nLargeTruckVehicles;            // 大货车交通量(辆/单位时间)
+        public int                             nMidTruckVehicles;              // 中货车交通量(辆/单位时间)
+        public int                             nSaloonCarVehicles;             // 轿车交通量(辆/单位时间)
+        public int                             nMicrobusVehicles;              // 面包车交通量(辆/单位时间)
+        public int                             nMicroTruckVehicles;            // 小货车交通量(辆/单位时间)
+        public int                             nTricycleVehicles;              // 三轮车交通量(辆/单位时间)
+        public int                             nMotorcycleVehicles;            // 摩托车交通量(辆/单位时间)
+        public int                             nPasserbyVehicles;              // 行人交通量(辆/单位时间)
+        public int							   emRank;						   // 道路等级, 参考  NET_TRAFFIC_ROAD_RANK
+        public int							   nState;						   // 流量状态
+        // 1- 流量过大(拥堵)
+        // 2- 流量过大恢复(略堵)
+        // 3- 正常
+        // 4- 流量过小(通畅)
+        // 5- 流量过小恢复(良好)
+        public int                            bOccupyHeadCoil;                 // 车头虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用
+        public int                            bOccupyTailCoil;                 // 车尾虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用
+        public int                            bStatistics;                     // 流量数据是否有效 TURE表示有效,FALSE表示无效
+
+        public int							  nLeftVehicles;				   // 左转车辆总数,单位:分钟
+        public int							  nRightVehicles;				   // 右转车辆总数,单位:分钟
+        public int							  nStraightVehicles;			   // 直行车辆总数,单位:分钟
+        public int							  nUTurnVehicles;				   // 掉头车辆总数,单位:分钟
+        public NET_POINT                      stQueueEnd;                      // 每个车道的最后一辆车坐标,采用8192坐标系
+        public double						  dBackOfQueue;					   // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离
+        public int							  dwPeriodByMili;				   // 流量值的毫秒时间,值不超过60000,和dwPeriod一起使用,流量值总时间:dwPeriod*60*1000+dwPeriodByMili(单位:毫秒)
+        public int							  nBusVehicles;					   // 公交车交通量(辆/单位时间)
+        public int							  nMPVVehicles;					   // MPV交通量(辆/单位时间)
+        public int							  nMidPassengerCarVehicles;		   // 中客车交通量(辆/单位时间)
+        public int							  nMiniCarriageVehicles;		   // 微型轿车交通量(辆/单位时间)
+        public int							  nOilTankTruckVehicles;		   // 油罐车交通量(辆/单位时间)
+        public int							  nPickupVehicles;				   // 皮卡车交通量(辆/单位时间)
+        public int							  nSUVVehicles;					   // SUV交通量(辆/单位时间)
+        public int							  nSUVorMPVVehicles;			   // SUV或者MPV交通量(辆/单位时间)
+        public int							  nTankCarVehicles;				   // 槽罐车交通量(辆/单位时间)
+        public int							  nUnknownVehicles;				   // 未知车辆交通量(辆/单位时间)
+        public int	                    	  emCustomFlowAttribute;		   // 车道流量信息属性
+        public int                            nRoadFreeLength;                 // 道路空闲长度,例:如设定路段长度为100米,实际检测到排队长度为30米,那么道路空闲长度就为70米,单位:米
+        public int                            emOverflowState;                 // 溢出状态。例:如给当前路段设定允许排队长度阀值,实际排队长度超过阀值后就判定当前时刻该路段有溢出。
+        public int                            nQueueVehicleNum;                // 排队车辆数,单位:辆
+        public int                            nSpaceOccupyRatioMultiCount;     // 空间占有率统计个数
+        public NET_SPACE_OCCUPY_RATIO_MULTI[] stuSpaceOccupyRatioMulti = new NET_SPACE_OCCUPY_RATIO_MULTI[32]; // 空间占有率统计信息
+        public int                            nTotalStopNum;                    // 停车次数,周期内该车道内所有目标的总停车次数,单位:次
+        public int                            nTotalDelayTime;                  // 延误时间,周期内该车道内所有目标的总延误时间,单位:毫秒
+        public int                            nTotalNum;                        // 目标总数量,周期内进入该车道内所有目标总数量,单位 辆
+        public float                          fAverageStopNum;                  // 平均停车次数,周期内该车道所有目标的平均停车次数。单位:次
+        public float                          fAverageDelayTime;                // 平均延误时间,周期内该车道所有目标的平均延误时间。单位:毫秒
+        public float                          fFlowSaturationRatio;             // 流量饱和度,该车道内的流量饱和度
+        public float                          fMaxQueueLen;                     // 最大排队长度,周期内最大排队长度,单位:米
+        public float                          fQueueStartingPoint;              // 排队开始位置,排队时队首距设备的位置,以设备方向为正,负数表示队首在设备后方,单位:米
+        public float                          fQueueFinishingPoint;             // 排队结束位置,排队时队尾距设备的位置,以设备方向为正,负数表示队尾在设备后方,单位:米
+        public byte[]                         szSpaceOccupyNum = new byte[64];  // 空间占有目标个数,即区域车辆数,该车道内指定区域的车辆数目,支持车道内多区域统计,不同区域车辆数使用|符号分隔。
+        public int                            nPresetID;                        // 云台预置点,球机预置点必大于0
+        public byte[]                         reserved = new byte[88];        // 保留字节
+
+        @Override
+        public String toString() {
+            return "NET_TRAFFIC_FLOW_STATE{" +
+                    "nLane=" + nLane +
+                    ", dwState=" + dwState +
+                    ", dwFlow=" + dwFlow +
+                    ", dwPeriod=" + dwPeriod +
+                    ", stTrafficFlowDir=" + stTrafficFlowDir +
+                    ", nVehicles=" + nVehicles +
+                    ", fAverageSpeed=" + fAverageSpeed +
+                    ", fAverageLength=" + fAverageLength +
+                    ", fTimeOccupyRatio=" + fTimeOccupyRatio +
+                    ", fSpaceOccupyRatio=" + fSpaceOccupyRatio +
+                    ", fSpaceHeadway=" + fSpaceHeadway +
+                    ", fTimeHeadway=" + fTimeHeadway +
+                    ", fDensity=" + fDensity +
+                    ", nOverSpeedVehicles=" + nOverSpeedVehicles +
+                    ", nUnderSpeedVehicles=" + nUnderSpeedVehicles +
+                    ", nLargeVehicles=" + nLargeVehicles +
+                    ", nMediumVehicles=" + nMediumVehicles +
+                    ", nSmallVehicles=" + nSmallVehicles +
+                    ", nMotoVehicles=" + nMotoVehicles +
+                    ", nLongVehicles=" + nLongVehicles +
+                    ", nVolume=" + nVolume +
+                    ", nFlowRate=" + nFlowRate +
+                    ", nBackOfQueue=" + nBackOfQueue +
+                    ", nTravelTime=" + nTravelTime +
+                    ", nDelay=" + nDelay +
+                    ", byDirection=" + Arrays.toString(byDirection) +
+                    ", byDirectionNum=" + byDirectionNum +
+                    ", reserved1=" + Arrays.toString(reserved1) +
+                    ", emJamState=" + emJamState +
+                    ", nPassengerCarVehicles=" + nPassengerCarVehicles +
+                    ", nLargeTruckVehicles=" + nLargeTruckVehicles +
+                    ", nMidTruckVehicles=" + nMidTruckVehicles +
+                    ", nSaloonCarVehicles=" + nSaloonCarVehicles +
+                    ", nMicrobusVehicles=" + nMicrobusVehicles +
+                    ", nMicroTruckVehicles=" + nMicroTruckVehicles +
+                    ", nTricycleVehicles=" + nTricycleVehicles +
+                    ", nMotorcycleVehicles=" + nMotorcycleVehicles +
+                    ", nPasserbyVehicles=" + nPasserbyVehicles +
+                    ", emRank=" + emRank +
+                    ", nState=" + nState +
+                    ", bOccupyHeadCoil=" + bOccupyHeadCoil +
+                    ", bOccupyTailCoil=" + bOccupyTailCoil +
+                    ", bStatistics=" + bStatistics +
+                    ", nLeftVehicles=" + nLeftVehicles +
+                    ", nRightVehicles=" + nRightVehicles +
+                    ", nStraightVehicles=" + nStraightVehicles +
+                    ", nUTurnVehicles=" + nUTurnVehicles +
+                    ", stQueueEnd=" + stQueueEnd +
+                    ", dBackOfQueue=" + dBackOfQueue +
+                    ", dwPeriodByMili=" + dwPeriodByMili +
+                    ", nBusVehicles=" + nBusVehicles +
+                    ", nMPVVehicles=" + nMPVVehicles +
+                    ", nMidPassengerCarVehicles=" + nMidPassengerCarVehicles +
+                    ", nMiniCarriageVehicles=" + nMiniCarriageVehicles +
+                    ", nOilTankTruckVehicles=" + nOilTankTruckVehicles +
+                    ", nPickupVehicles=" + nPickupVehicles +
+                    ", nSUVVehicles=" + nSUVVehicles +
+                    ", nSUVorMPVVehicles=" + nSUVorMPVVehicles +
+                    ", nTankCarVehicles=" + nTankCarVehicles +
+                    ", nUnknownVehicles=" + nUnknownVehicles +
+                    ", emCustomFlowAttribute=" + emCustomFlowAttribute +
+                    ", nRoadFreeLength=" + nRoadFreeLength +
+                    ", emOverflowState=" + emOverflowState +
+                    '}';
+        }
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量事件)对应数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_FLOW_STATE extends SdkStructure
+    {
+        public int                       nChannelID;                             // 通道号
+        public byte[]                    szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public int                       nRuleID;                                // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+        public byte[]                    bReserved1 = new byte[4];               // 字节对齐
+        public int                       PTS;                                    // 时间戳(单位是毫秒)
+        public NET_TIME_EX               UTC;                                    // 事件发生的时间
+        public int                       nEventID;                               // 事件ID
+        public int                       nSequence;                              // 序号
+        public int                       nStateNum;                              // 流量状态数量
+        public NET_TRAFFIC_FLOW_STATE[]  stuStates = (NET_TRAFFIC_FLOW_STATE[])new NET_TRAFFIC_FLOW_STATE().toArray(NET_MAX_LANE_NUM);             // 流量状态, 每个车道对应数组中一个元素
+        public EVENT_INTELLI_COMM_INFO   stuIntelliCommInfo;                 	 // 智能事件公共信息
+        public int                       nStopVehiclenum;                        // 静止车辆数,当前时刻检测范围内车速小于某个阀值的车辆数,单位:辆
+        public int                       nDetectionAreaVehicleNum;               // 车辆总数,当前时刻检测范围内检测到的所有车道内的车辆总数,单位:辆
+        public byte[]                    bReserved = new byte[884];              // 保留字节
+    }
+
+    // 图片分辨率
+    public static class NET_RESOLUTION_INFO extends SdkStructure
+    {
+        public short snWidth;//宽
+        public short snHight;//高
+
+        @Override
+        public String toString() {
+            return "NET_RESOLUTION_INFO{" +
+                    "宽=" + snWidth +
+                    ",高=" + snHight +
+                    '}';
+        }
+    }
+
+    public static class EM_COMMON_SEAT_TYPE extends SdkStructure
+    {
+        public static final int COMMON_SEAT_TYPE_UNKNOWN = 0;//未识别
+        public static final int COMMON_SEAT_TYPE_MAIN = 1;//主驾驶
+        public static final int COMMON_SEAT_TYPE_SLAVE = 2;//副驾驶
+    }
+
+    // 违规状态
+    public static class EVENT_COMM_STATUS extends SdkStructure
+    {
+        public byte bySmoking;//是否抽烟
+        public byte byCalling;//是否打电话
+        public byte[] szReserved = new byte[14];//预留字段
+    }
+
+    public static class NET_SAFEBELT_STATE extends SdkStructure
+    {
+        public static final int SS_NUKNOW = 0;//未知
+        public static final int SS_WITH_SAFE_BELT = 1;//已系安全带
+        public static final int SS_WITHOUT_SAFE_BELT = 2;//未系安全带
+    }
+
+    //遮阳板状态
+    public static class NET_SUNSHADE_STATE extends SdkStructure
+    {
+        public static final int SS_NUKNOW_SUN_SHADE = 0;//未知
+        public static final int SS_WITH_SUN_SHADE = 1;//有遮阳板
+        public static final int SS_WITHOUT_SUN_SHADE = 2;//无遮阳板
+    }
+
+    // 驾驶位违规信息
+    public static class EVENT_COMM_SEAT extends SdkStructure
+    {
+        public int bEnable;//是否检测到座驾信息, 类型BOOL, 取值0或者1
+        public int emSeatType;//座驾类型,0:未识别;1:主驾驶; 取值为EM_COMMON_SEAT_TYPE中的值
+        public EVENT_COMM_STATUS stStatus;//违规状态
+        public int emSafeBeltStatus;//安全带状态, 取值为NET_SAFEBELT_STATE中的值
+        public int emSunShadeStatus;//遮阳板状态, 取值为NET_SUNSHADE_STATE中的值
+        public byte[] szReserved = new byte[24];//预留字节
+    }
+
+    // 车辆物件
+    public static class EVENT_COMM_ATTACHMENT extends SdkStructure
+    {
+        public int emAttachmentType;//物件类型, 取值为EM_COMM_ATTACHMENT_TYPE中的值
+        public NET_RECT stuRect;//坐标
+        public byte[] bReserved = new byte[20];//预留字节
+    }
+
+    //NTP校时状态
+    public static class EM_NTP_STATUS extends SdkStructure
+    {
+        public static final int NET_NTP_STATUS_UNKNOWN = 0;
+        public static final int NET_NTP_STATUS_DISABLE = 1;
+        public static final int NET_NTP_STATUS_SUCCESSFUL = 2;
+        public static final int NET_NTP_STATUS_FAILED = 3;
+    }
+
+    // 交通抓图图片信息
+    public static class EVENT_PIC_INFO extends SdkStructure
+    {
+        public int                       nOffset;                // 原始图片偏移,单位字节
+        public int                       nLength;                // 原始图片长度,单位字节
+        public int                       nIndexInData;           // 在上传图片数据中的图片序号
+    }
+
+    public static class EVENT_COMM_INFO extends SdkStructure
+    {
+        public int 						emNTPStatus;					// NTP校时状态, 取值为EM_NTP_STATUS中的值
+        public int 						nDriversNum;					// 驾驶员信息数
+        public Pointer 					pstDriversInfo;					// 驾驶员信息数据,类型为 NET_MSG_OBJECT_EX*
+        public Pointer 					pszFilePath;					// 本地硬盘或者sd卡成功写入路径,为NULL时,路径不存在, 类型为char *
+        public Pointer 					pszFTPPath;						// 设备成功写到ftp服务器的路径, 类型为char *
+        public Pointer 					pszVideoPath;					// 当前接入需要获取当前违章的关联视频的FTP上传路径, 类型为char *
+        public EVENT_COMM_SEAT[] 		stCommSeat = new EVENT_COMM_SEAT[COMMON_SEAT_MAX_NUMBER];// 驾驶位信息
+        public int 						nAttachmentNum;					// 车辆物件个数
+        public EVENT_COMM_ATTACHMENT[]  stuAttachment = new EVENT_COMM_ATTACHMENT[NET_MAX_ATTACHMENT_NUM];//车辆物件信息
+        public int 						nAnnualInspectionNum;			// 年检标志个数
+        public NET_RECT[] 				stuAnnualInspection = new NET_RECT[NET_MAX_ANNUUALINSPECTION_NUM];//年检标志
+        public float 					fHCRatio; 						// HC所占比例,单位:%
+        public float 					fNORatio; 						// NO所占比例,单位:%
+        public float 					fCOPercent; 					// CO所占百分比,单位:% 取值0~100
+        public float 					fCO2Percent; 					// CO2所占百分比,单位:% 取值0~100
+        public float 					fLightObscuration; 				// 不透光度,单位:% 取值0~100
+        public int 						nPictureNum;					// 原始图片张数
+        public EVENT_PIC_INFO[] 		stuPicInfos =new EVENT_PIC_INFO[NET_MAX_EVENT_PIC_NUM];// 原始图片信息
+        public float 					fTemperature;                   // 温度值,单位摄氏度
+        public int 						nHumidity;                      // 相对湿度百分比值
+        public float 					fPressure;                      // 气压值,单位Kpa
+        public float 					fWindForce;                     // 风力值,单位m/s
+        public int 						nWindDirection;                 // 风向,单位度,范围:[0,360]
+        public float 					fRoadGradient;                  // 道路坡度值,单位度
+        public float 					fAcceleration;                  // 加速度值,单位:m/s2
+        public NET_RFIDELETAG_INFO		stuRFIDEleTagInfo=new NET_RFIDELETAG_INFO();				// RFID 电子车牌标签信息
+        public EVENT_PIC_INFO           stuBinarizedPlateInfo=new EVENT_PIC_INFO();          // 二值化车牌抠图
+        public EVENT_PIC_INFO           stuVehicleBodyInfo=new EVENT_PIC_INFO();             // 车身特写抠图
+        public int            			emVehicleTypeInTollStation;     // 收费站车型分类,详见EM_VEHICLE_TYPE
+        public int             			emSnapCategory;                 // 抓拍的类型,默认为机动车,详见EM_SNAPCATEGORY
+        public int                      nRegionCode;                    // 车牌所属地区代码,默认-1表示未识别
+        public int                      emVehicleTypeByFunc;            // 按功能划分的车辆类型,详见EM_VEHICLE_TYPE_BY_FUNC
+        public int                      emStandardVehicleType;          // 标准车辆类型,详见EM_STANDARD_VEHICLE_TYPE
+        public int                      nExtraPlateCount;               // 额外车牌数量
+        public byte[]                   szExtraPlateNumer = new byte[3*32];  // 额外车牌信息
+        /**
+         海外车辆类型中的子类别 {@link com.netsdk.lib.enumeration.EM_OVERSEA_VEHICLE_CATEGORY_TYPE}
+         */
+        public			int					emOverseaVehicleCategory;
+        /**
+         车牌所属国家的省、州等地区名
+         */
+        public			byte[]					szProvince=new byte[64];
+        /**
+         物体在雷达坐标系中的信息,单位:米,设备视角:右手方向为X轴正向,正前方为Y轴正向
+         */
+        public			NET_EVENT_RADAR_INFO					stuRadarInfo=new NET_EVENT_RADAR_INFO();
+        /**
+         触发事件时物体的GPS信息
+         */
+        public			NET_EVENT_GPS_INFO					stuGPSInfo=new NET_EVENT_GPS_INFO();
+        /**
+         辅车牌信息,某些国家或地区一车多牌,比如港澳三地车,一车会有3个车牌,其中一个主车牌,一般是内地发给香港或澳门的能以此在内地行驶的"港澳牌";另外两个分别是香港牌或澳门牌,是得以在香港或澳门行驶的牌照,而这两个则称为辅牌,有辅牌的车的车牌相关信息则填在此字段,目前最多2个辅车牌
+         */
+        public			NET_EXTRA_PLATES[]					stuExtraPlates=new NET_EXTRA_PLATES[2];
+        /**
+         辅车牌有效个数
+         */
+        public			int					nExtraPlatesCount;
+        /**
+         车牌识别置信度
+         */
+        public			int					nPlateRecogniseConf;
+        /**
+         车辆姿态置信度
+         */
+        public			int					nVecPostureConf;
+        /**
+         车身颜色置信度
+         */
+        public			int					nVecColorConf;
+        /**
+         特殊车辆识别结果置信度
+         */
+        public			int					nSpecialVehConf;
+        /**
+         机动车是否为大角度
+         */
+        public			int					nIsLargeAngle;
+        /**
+         当前机动车车身是否曾经关联车牌
+         */
+        public			int					nIsRelatedPlate;
+        /**
+         机动车检测置信度
+         */
+        public			int					nDetectConf;
+        /**
+         机动车清晰度分值
+         */
+        public			int					nClarity;
+        /**
+         机动车完整度评分
+         */
+        public			int					nCompleteScore;
+        /**
+         机动车优选分数
+         */
+        public			int					nQeScore;
+        /**
+         预留字节
+         */
+        public			byte[]					bReserved=new byte[128];
+        public byte[] 					szCountry = new byte[20];		// 国家
+        public			EVENT_COMM_INFO(){
+            for(int i=0;i<stCommSeat.length;i++){
+                stCommSeat[i]=new EVENT_COMM_SEAT();
+            }
+            for(int i=0;i<stuAttachment.length;i++){
+                stuAttachment[i]=new EVENT_COMM_ATTACHMENT();
+            }
+            for(int i=0;i<stuAnnualInspection.length;i++){
+                stuAnnualInspection[i]=new NET_RECT();
+            }
+            for(int i=0;i<stuPicInfos.length;i++){
+                stuPicInfos[i]=new EVENT_PIC_INFO();
+            }
+            for(int i=0;i<stuExtraPlates.length;i++){
+                stuExtraPlates[i]=new NET_EXTRA_PLATES();
+            }
+        }
+    }
+
+    //收费站车型分类
+    public static class EM_VEHICLE_TYPE extends SdkStructure
+    {
+        public static final int EM_VEHICLE_TYPE_UNKNOWN = 0;                            // 未知
+        public static final int EM_VEHICLE_TYPE_PASSENGERCAR1 = 1;                      // 客1
+        public static final int EM_VEHICLE_TYPE_TRUCK1 = 2;                             // 货1
+        public static final int EM_VEHICLE_TYPE_PASSENGERCAR2 = 3;                     	// 客2
+        public static final int EM_VEHICLE_TYPE_TRUCK2 = 4;                             // 货2
+        public static final int EM_VEHICLE_TYPE_PASSENGERCAR3 = 5;                      // 客3
+        public static final int EM_VEHICLE_TYPE_TRUCK3 = 6;                             // 货3
+        public static final int EM_VEHICLE_TYPE_PASSENGERCAR4 = 7;                      // 客4
+        public static final int EM_VEHICLE_TYPE_TRUCK4 = 8;                             // 货4
+        public static final int EM_VEHICLE_TYPE_PASSENGERCAR5 = 9;                      // 客5
+        public static final int EM_VEHICLE_TYPE_TRUCK5 = 10;                            // 货5
+    }
+
+    //抓拍的类型
+    public static class EM_SNAPCATEGORY extends SdkStructure
+    {
+        public static final int EM_SNAPCATEGORY_MOTOR = 0;     						// 机动车
+        public static final int EM_SNAPCATEGORY_NONMOTOR = 1;                       // 非机动车
+    }
+
+    // RFID 电子车牌标签信息
+    public static class NET_RFIDELETAG_INFO extends SdkStructure
+    {
+        public byte[]					szCardID = new byte[MAX_RFIDELETAG_CARDID_LEN];	// 卡号
+        public int						nCardType;										// 卡号类型, 0:交通管理机关发行卡, 1:新车出厂预装卡
+        public int						emCardPrivince;									// 卡号省份, 对应   EM_CARD_PROVINCE
+        public byte[]					szPlateNumber = new byte[NET_MAX_PLATE_NUMBER_LEN];			// 车牌号码
+        public byte[]					szProductionDate = new byte[MAX_RFIDELETAG_DATE_LEN];		// 出厂日期
+        public int						emCarType;										// 车辆类型, 对应  EM_CAR_TYPE
+        public int						nPower;											// 功率,单位:千瓦时,功率值范围0~254;255表示该车功率大于可存储的最大功率值
+        public int						nDisplacement;									// 排量,单位:百毫升,排量值范围0~254;255表示该车排量大于可存储的最大排量值
+        public int						nAntennaID;										// 天线ID,取值范围:1~4
+        public int						emPlateType;									// 号牌种类, 对应  EM_PLATE_TYPE
+        public byte[]					szInspectionValidity = new byte[MAX_RFIDELETAG_DATE_LEN];	// 检验有效期,年-月
+        public int						nInspectionFlag;								// 逾期未年检标志, 0:已年检, 1:逾期未年检
+        public int						nMandatoryRetirement;							// 强制报废期,从检验有效期开始,距离强制报废期的年数
+        public int						emCarColor;										// 车身颜色, 对应  EM_CAR_COLOR_TYPE
+        public int						nApprovedCapacity;								// 核定载客量,该值<0时:无效;此值表示核定载客,单位为人
+        public int						nApprovedTotalQuality;							// 此值表示总质量,单位为百千克;该值<0时:无效;该值的有效范围为0~0x3FF,0x3FF(1023)表示数据值超过了可存储的最大值
+        public NET_TIME_EX				stuThroughTime;									// 过车时间
+        public int						emUseProperty;									// 使用性质, 对应  EM_USE_PROPERTY_TYPE
+        public byte[]					szPlateCode = new byte[MAX_COMMON_STRING_8];	// 发牌代号,UTF-8编码
+        public byte[]					szPlateSN = new byte[MAX_COMMON_STRING_16];		// 号牌号码序号,UTF-8编码
+        public byte[]                   szTID = new byte[MAX_COMMON_STRING_64];  		// 标签(唯一标识), UTF-8编码
+        public byte[]               	bReserved = new byte[40];		                // 保留字节,留待扩展.
+    }
+
+    // 车检器冗余信息
+    public static class NET_SIG_CARWAY_INFO_EX extends SdkStructure
+    {
+        public byte[] byRedundance = new byte[8];//由车检器产生抓拍信号冗余信息
+        public byte[] bReserved = new byte[120];//保留字段
+    }
+
+    // 颜色RGBA
+    public static class NET_COLOR_RGBA extends SdkStructure
+    {
+        public int nRed;//红
+        public int nGreen;//绿
+        public int nBlue;//蓝
+        public int nAlpha;//透明
+
+        public String toString() {
+            return "[" + nRed + " " + nGreen + " " + nBlue + " " + nAlpha + "]";
+        }
+    }
+
+    // TrafficCar 交通车辆信息
+    public static class DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO extends SdkStructure
+    {
+        public byte[] 			szPlateNumber = new byte[32];	//车牌号码
+        public byte[] 			szPlateType = new byte[32];		//号牌类型参见VideoAnalyseRule中车牌类型定义
+        public byte[] 			szPlateColor = new byte[32];	//车牌颜色"Blue","Yellow",
+        public byte[] 			szVehicleColor = new byte[32];	//车身颜色"White",
+        public int 				nSpeed;							//速度单位Km/H
+        public byte[] 			szEvent = new byte[64];			//触发的相关事件参见事件列表Event
+        public byte[] 			szViolationCode = new byte[32]; //违章代码详见TrafficGlobal.ViolationCode
+        public byte[] 			szViolationDesc = new byte[64]; //违章描述
+        public int 				nLowerSpeedLimit;				//速度下限
+        public int 				nUpperSpeedLimit;				//速度上限
+        public int 				nOverSpeedMargin;				//限高速宽限值单位:km/h
+        public int 				nUnderSpeedMargin;				//限低速宽限值单位:km/h
+        public int 				nLane;							//车道参见事件列表EventList中卡口和路口事件。
+        public int 				nVehicleSize;					//车辆大小,-1表示未知,否则按位
+        // 第0位:"Light-duty", 小型车
+        // 第1位:"Medium", 中型车
+        // 第2位:"Oversize", 大型车
+        // 第3位:"Minisize", 微型车
+        // 第4位:"Largesize", 长车
+        public float 			fVehicleLength;					// 车辆长度单位米
+        public int 				nSnapshotMode;					// 抓拍方式0-未分类,1-全景,2-近景,4-同向抓拍,8-反向抓拍,16-号牌图像
+        public byte[] 			szChannelName = new byte[32];	// 本地或远程的通道名称,可以是地点信息来源于通道标题配置ChannelTitle.Name
+        public byte[] 			szMachineName = new byte[256];	// 本地或远程设备名称来源于普通配置General.MachineName
+        public byte[] 			szMachineGroup = new byte[256]; // 机器分组或叫设备所属单位默认为空,用户可以将不同的设备编为一组,便于管理,可重复。
+        public byte[] 			szRoadwayNo = new byte[64];		// 道路编号
+        public byte[] 			szDrivingDirection = new byte[3*NET_MAX_DRIVINGDIRECTION];//
+        // 行驶方向 , "DrivingDirection" : ["Approach", "", ""],
+        // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,
+        // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
+        // 下行的两个地点
+        public Pointer 			szDeviceAddress;				// 设备地址,OSD叠加到图片上的,来源于配 置TrafficSnapshot.DeviceAddress,'\0'结束
+        public byte[] 			szVehicleSign = new byte[32];	// 车辆标识,例如
+        public NET_SIG_CARWAY_INFO_EX stuSigInfo;				// 由车检器产生抓拍信号冗余信息
+        public Pointer 			szMachineAddr;					// 设备部署地点
+        public float 			fActualShutter;					// 当前图片曝光时间,单位为毫秒
+        public byte 			byActualGain;					// 当前图片增益,范围为0~100
+        public byte 			byDirection;					// 车道方向,0-南向北1-西南向东北2-西向东
+        public byte[] 			byReserved = new byte[2];
+        public Pointer 			szDetailedAddress;				// 详细地址,作为szDeviceAddress的补充
+        public byte[] 			szDefendCode = new byte[NET_COMMON_STRING_64];//图片防伪码
+        public int 				nTrafficBlackListID;			// 关联禁止名单数据库记录默认主键ID,0,无效;>0,禁止名单数据记录
+        public NET_COLOR_RGBA 	stuRGBA;						// 车身颜色RGBA
+        public NET_TIME 		stSnapTime;						// 抓拍时间
+        public int 				nRecNo;							// 记录编号
+        public byte[] 			szCustomParkNo= new byte[NET_COMMON_STRING_32+1];// 自定义车位号(停车场用)
+        public byte[] 			byReserved1 = new byte[3];
+        public int 				nDeckNo;						// 车板位号
+        public int 				nFreeDeckCount;					// 空闲车板数量
+        public int 				nFullDeckCount;					// 占用车板数量
+        public int 				nTotalDeckCount;				// 总共车板数量
+        public byte[] 			szViolationName = new byte[64]; // 违章名称
+        public int 				nWeight;						// 车重(单位Kg), 类型为unsigned int
+
+        public byte[]      		szCustomRoadwayDirection = new byte[32];// 自定义车道方向,byDirection为9时有效
+        public byte        		byPhysicalLane; 				// 物理车道号,取值0到5
+        public byte[]      		byReserved2 = new byte[3];
+        public int 		   		emMovingDirection; 				// 车辆行驶方向 EM_TRAFFICCAR_MOVE_DIRECTION
+        public NET_TIME			stuEleTagInfoUTC;			    // 对应电子车牌标签信息中的过车时间(ThroughTime)
+        public NET_RECT		    stuCarWindowBoundingBox;		// 车窗包围盒,0~8191
+        public NET_TRAFFICCAR_WHITE_LIST    stuWhiteList;       // 允许名单信息
+        public int      		emCarType;                  	// 车辆类型, 详见 EM_TRAFFICCAR_CAR_TYPE
+        public int     			emLaneType;                 	// 车道类型, 详见EM_TRAFFICCAR_LANE_TYPE
+        public byte[]           szVehicleBrandYearText = new byte[64];  // 车系年款翻译后文本内容
+        public byte[]           szCategory = new byte[32];      // 车辆子类型
+        public NET_TRAFFICCAR_BLACK_LIST	stuBlackList;		// 禁止名单信息
+        public int        emFlowDirection;            // 车流量方向   EM_VEHICLE_DIRECTION
+        /**
+         * 收费公路车辆通行费车型分类 {@link com.netsdk.lib.enumeration.EM_TOLLS_VEHICLE_TYPE}
+         */
+        public int emTollsVehicleType;
+        /**
+         * 轴型代码,参考轴型国标 0代表其他
+         */
+        public int nAxleType;
+        /**
+         * 车轴数量
+         */
+        public int nAxleCount;
+        /**
+         * 车轮数量
+         */
+        public int nWheelNum;
+        /**
+         * 车身抠图
+         */
+        public NET_TRAFFICCAR_ORIGINAL_VEHICLE stuOriginalVehicle = new NET_TRAFFICCAR_ORIGINAL_VEHICLE();
+        /**
+         * 按功能划分的车辆类型 {@link EM_VEHICLE_TYPE_BY_FUNC}
+         */
+        public int emVehicleTypeByFunc;
+        /**
+         * 车辆子品牌
+         */
+        public short nSunBrand;
+        /**
+         * 车辆年款
+         */
+        public short nBrandYear;
+        /**
+         * 交通灯类型,仅在EVENT_IVS_TRAFFIC_RUNREDLIGHT中有效, 0;未知, 1:箭头灯, 2:圆形灯
+         */
+        public int nTrafficLightType;
+        /**
+         * 车牌属性 {@link com.netsdk.lib.enumeration.EM_PLATE_ATTRIBUTE}
+         */
+        public int emPlateAttribute;
+        /**
+         * 交通车辆信息扩展, refer to {@link com.netsdk.lib.structure.NET_TRAFFICCAR_INFO_EXTERN}
+         */
+        public Pointer pTrafficInfoExtern;
+        /**
+         * 保留字节,留待扩展
+         */
+        public byte[] bReserved = new byte[132 - POINTERSIZE];
+    }
+
+    // 禁止名单信息
+    public static class NET_TRAFFICCAR_BLACK_LIST extends SdkStructure
+    {
+        /**
+         是否已启用禁止名单
+         */
+        public			int					bEnable;
+        /**
+         车牌是否属于禁止名单
+         */
+        public			int					bIsBlackCar;
+        /**
+         禁止名单起始时间
+         */
+        public NET_TIME stuBeginTime=new NET_TIME();
+        /**
+         禁止名单过期时间
+         */
+        public NET_TIME stuCancelTime=new NET_TIME();
+        /**
+         布控类型 {@link com.netsdk.lib.enumeration.EM_NET_TRAFFIC_CAR_CONTROL_TYPE}
+         */
+        public			int					emControlType;
+        /**
+         布控路线ID
+         */
+        public			int					nControlledRouteID;
+        /**
+         保留字节
+         */
+        public			byte[]					bReserved=new byte[24];
+
+        public			NET_TRAFFICCAR_BLACK_LIST(){
+        }
+    }
+
+    // 车辆类型
+    public static class EM_TRAFFICCAR_CAR_TYPE extends SdkStructure
+    {
+        public static final int EM_TRAFFICCAR_CAR_TYPE_UNKNOWN = 0;     	// 未知
+        public static final int EM_TRAFFICCAR_CAR_TYPE_TRUST_CAR = 1;       // 允许名单车辆
+        public static final int EM_TRAFFICCAR_CAR_TYPE_SUSPICIOUS_CAR = 2;  // 禁止名单车辆
+        public static final int EM_TRAFFICCAR_CAR_TYPE_NORMAL_CAR = 3;      // 非允许名单且非禁止名单车辆
+    }
+
+    // 车道类型
+    public static class EM_TRAFFICCAR_LANE_TYPE extends SdkStructure
+    {
+        public static final int EM_TRAFFICCAR_LANE_TYPE_UNKNOWN      = 0;   // 未知
+        public static final int EM_TRAFFICCAR_LANE_TYPE_NORMAL       = 1;   // 普通车道
+        public static final int EM_TRAFFICCAR_LANE_TYPE_NONMOTOR     = 2;   // 非机动车车道
+        public static final int EM_TRAFFICCAR_LANE_TYPE_LIGHT_DUTY   = 3;   // 小型车车道
+        public static final int EM_TRAFFICCAR_LANE_TYPE_BUS          = 4;   // 公交车车道
+        public static final int EM_TRAFFICCAR_LANE_TYPE_EMERGENCY    = 5;   // 应急车道
+        public static final int EM_TRAFFICCAR_LANE_TYPE_DANGEROUS    = 6;   // 危险品车道
+    }
+
+    // 允许名单信息
+    public static class NET_TRAFFICCAR_WHITE_LIST extends SdkStructure
+    {
+        public int                            bTrustCar;               // 车牌是否属于允许名单
+        public NET_TIME                       stuBeginTime;            // 允许名单起始时间
+        public NET_TIME                       stuCancelTime;           // 允许名单过期时间
+        public NET_WHITE_LIST_AUTHORITY_LIST  stuAuthorityList;        // 允许名单权限列表
+        public byte[]      					  bReserved = new byte[32];// 保留字节
+    }
+
+    // 允许名单权限列表
+    public static class NET_WHITE_LIST_AUTHORITY_LIST extends SdkStructure
+    {
+        public int              bOpenGate;                      // 是否有开闸权限
+        public byte[]      		bReserved = new byte[16]; 		// 保留字节
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PARKING_INFO extends SdkStructure {
+        public int nChannelID;//通道号
+        public byte[] szName = new byte[128];//事件名称
+        public byte[] bReserved1 = new byte[4];//字节对齐
+        public double PTS;//时间戳(单位是毫秒)
+        public NET_TIME_EX UTC = new NET_TIME_EX();//事件发生的时间
+        public int nEventID;//事件ID
+        public NET_MSG_OBJECT stuObject = new NET_MSG_OBJECT();//检测到的物体
+        public NET_MSG_OBJECT stuVehicle = new NET_MSG_OBJECT();//车身信息
+        public int nLane;//对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();//事件对应文件信息
+        public byte bEventAction;//事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[] reserved = new byte[2];//保留字节
+        public byte byImageIndex;//图片的序号,同一时间内(精确到秒)可能有多张图片,从0开始
+        public NET_TIME_EX stuStartParkingTime = new NET_TIME_EX();//开始停车时间
+        public int nSequence;//表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束(bEventAction=2时此参数有效)
+        public int nAlarmIntervalTime;//报警时间间隔,单位:秒。(此事件为连续性事件,在收到第一个此事件之后,若在超过间隔时间后未收到此事件的后续事件,则认为此事件异常结束了)
+        public int nParkingAllowedTime;//允许停车时长,单位:秒。
+        public int nDetectRegionNum;//规则检测区域顶点数
+        public NET_POINT[] DetectRegion = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);//规则检测区域
+        public int dwSnapFlagMask;//抓图标志(按位),具体见NET_RESERVED_COMMON
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();//对应图片的分辨率
+        public int bIsExistAlarmRecord;//true:有对应的报警录像;false:无对应的报警录像, 类型为BOOL, 取值为0或1
+        public int dwAlarmRecordSize;//录像大小
+        public byte[] szAlarmRecordPath = new byte[NET_COMMON_STRING_256];//录像路径
+        public byte[] szFTPPath = new byte[NET_COMMON_STRING_256];//FTP路径
+        public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new EVENT_INTELLI_COMM_INFO();//智能事件公共信息
+        public byte byPreAlarm;    // 是否为违章预警图片,0 违章停车事件1 预警事件(预警触发后一定时间,车辆还没有离开,才判定为违章)由于此字段会导致事件含义改变,必须和在平台识别预警事件后,才能有此字段,
+        public byte[] bReserved2 = new byte[3]; // 保留字节,留待扩展.
+        public NET_GPS_INFO stuGPSInfo = new NET_GPS_INFO();   // GPS信息 
+        public Pointer pstuImageInfo;//图片信息数组,{@link NET_IMAGE_INFO_EX2}
+        public int nImageInfoNum;//图片信息个数
+        public int nPresetID;//预置点编号,从1开始
+        public byte[] szSN = new byte[32];//设备SN号
+        public byte[] bReserved = new byte[184];//保留字节,留待扩展.
+        public com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();//交通车辆信息
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();//公共信息
+        public VA_OBJECT_NONMOTOR stuNonMotor = new VA_OBJECT_NONMOTOR();//非机动车对象
+        public int bHasNonMotor;//是否有非机动车对象
+        public int nParkingDuration;//违停持续时间,单位:秒, 0表示无意义
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();//事件公共扩展字段结构体
+
+        public DEV_EVENT_TRAFFIC_PARKING_INFO() {
+            for (int i = 0; i < DetectRegion.length; i++) {
+                DetectRegion[i] = new NET_POINT();
+            }
+        }
+    }
+
+    //停车场信息
+    public static class DEV_TRAFFIC_PARKING_INFO extends SdkStructure
+    {
+        public int           nFeaturePicAreaPointNum;                                                        // 特征图片区点个数
+        public NET_POINT[]   stFeaturePicArea = (NET_POINT[])new NET_POINT().toArray(NET_MAX_POLYGON_NUM);   // 特征图片区信息
+        public byte[]        bReserved = new byte[572];                                                      // 保留字节
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(车位有车事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO extends SdkStructure
+    {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐
+         */
+        public byte[] bReserved1 = new byte[8];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public int PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX UTC = new NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 对应车道号
+         */
+        public int nLane;
+        /**
+         * 检测到的物体
+         */
+        public NET_MSG_OBJECT stuObject = new NET_MSG_OBJECT();
+        /**
+         * 车身信息
+         */
+        public NET_MSG_OBJECT stuVehicle = new NET_MSG_OBJECT();
+        /**
+         * 事件对应文件信息
+         */
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+        /**
+         * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+         */
+        public int nSequence;
+        /**
+         * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+         */
+        public byte bEventAction;
+
+        public byte[] byReserved = new byte[2];
+        /**
+         * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+         */
+        public byte byImageIndex;
+        /**
+         * 抓图标志(按位),具体见NET_RESERVED_COMMON
+         */
+        public int dwSnapFlagMask;
+        /**
+         * 对应图片的分辨率
+         */
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();
+        /**
+         * 交通车辆信息
+         */
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+        /**
+         * 车位综合的状态,0-占用,1-空闲,2-压线
+         */
+        public int nParkingSpaceStatus;
+        /**
+         * 停车场信息
+         */
+        public DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo = new DEV_TRAFFIC_PARKING_INFO();
+        /**
+         * 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+         */
+        public byte byPlateTextSource;
+        /**
+         * 字节对齐
+         */
+        public byte[] byReserved2 = new byte[3];
+        /**
+         * 车位(地磁)编号
+         */
+        public byte[] szParkingNum = new byte[32];
+        /**
+         * 球机预置位编号
+         */
+        public int dwPresetNum;
+        /**
+         * 车位是否有故障
+         */
+        public int bParkingFault;
+        /**
+         * 保留字节
+         */
+        public byte[] bReserved = new byte[364];
+        /**
+         * 公共信息
+         */
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();
+        /**
+         * 车位图片信息
+         */
+        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage = new NET_INTELLIGENCE_IMAGE_INFO();
+        /**
+         * 车位置信度(0-100)
+         */
+        public int nConfidence;
+        /**
+         * 是否跨位 {@link com.netsdk.lib.enumeration.EM_ACROSS_PARKING}
+         */
+        public int emAcrossParking;
+        /**
+         * 停车方向 {@link com.netsdk.lib.enumeration.EM_PARKINGSPACE_DIRECTION}
+         */
+        public int emParkingDirection;
+        /**
+         * 禁停状态 {@link com.netsdk.lib.enumeration.EM_FORBID_PARKING_STATUS}
+         */
+        public int emForbidParkingStatus;
+        /**
+         * 是否小车占大车位 {@link com.netsdk.lib.enumeration.EM_SMALL_OCCUPY_LARGE}
+         */
+        public int emSmallOccupyLarge;
+        /**
+         * 是否为非允许名单车辆 {@link com.netsdk.lib.enumeration.EM_NON_ALLOW_LIST_CAR}
+         */
+        public int emNonAllowListCar;
+        /**
+         * 是否为非新能源车辆 {@link com.netsdk.lib.enumeration.EM_NON_NEW_ENERGY_CAR}
+         */
+        public int emNonNewEnergyCar;
+        /**
+         * 为图片信息做预留字节,新增的字段请在该保留字节下面添加
+         */
+        public byte[] byReserved1 = new byte[992];
+        /**
+         * 触发类型 {@link com.netsdk.lib.enumeration.EM_PARKING_TRIGGER_TYPE}
+         */
+        public int emTriggerType;
+        /**
+         * 一位多车信息, 如果车位此前没有车占用, 不会带有本字段信息
+         */
+        public DEV_OCCUPIED_WARNING_INFO stuOccupiedWarningInfo = new DEV_OCCUPIED_WARNING_INFO();
+        /**
+         * 所有使能的车位号
+         */
+        public ParkingNoWithSize32[] szAllParkingNo = new ParkingNoWithSize32[12];
+        /**
+         * 使能车位号的个数
+         */
+        public int nParkingNoNum;
+        /**
+         * 车位有车的事件类型 {@link com.netsdk.lib.enumeration.EM_PARKING_SPACE_TYPE}
+         */
+        public int emParkingSpaceType;
+        /**
+         * 停车变更信息
+         */
+        public NET_PARKING_CHANGE_INFO stuParkingChangeInfo = new NET_PARKING_CHANGE_INFO();
+        /**
+         * 图片信息数组
+         */
+        public Pointer pstuImageInfo;
+        /**
+         * 图片信息个数
+         */
+        public int nImageInfoNum;
+        /**
+         * 事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+        /**
+         * 字节对齐
+         */
+        public byte[] szReserved = new byte[4];
+
+        public DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO() {
+            for(int i = 0;i<szAllParkingNo.length;i++){
+                szAllParkingNo[i] = new ParkingNoWithSize32();
+            }
+        }
+
+    }
+
+    // 停车变更信息
+    public static class NET_PARKING_CHANGE_INFO extends SdkStructure
+    {
+        public byte[]				szPreParkingNo = new byte[32];			// 变更前的车位
+        public byte[]				szAfterParkingNo = new byte[32];		// 变更后的车位
+        public int				    nStrandTime;				            // 变更车位停车时长,单位:秒
+        public byte[]				byReserved = new byte[252];			    // 保留字节
+    }
+
+    // 车位有车事件类型
+    public static class EM_PARKING_SPACE_TYPE
+    {
+        public static int EM_PARKING_SPACE_TYPE_UNKNOWN = -1;	    	// 未知
+        public static int EM_PARKING_SPACE_TYPE_NORMAL = 0;				// 正常驶入
+        public static int EM_PARKING_SPACE_TYPE_CHANGE = 1;				// 泊车变更事件
+    }
+
+    // 是否跨位
+    public static class EM_ACROSS_PARKING
+    {
+        public static int EM_ACROSS_PARKING_UNKNOWN = 0;                  // 未知
+        public static int EM_ACROSS_PARKING_NO = 1;                     // 未跨位
+        public static int EM_ACROSS_PARKING_YES = 2;                    // 跨位
+    }
+
+    // 一位多车信息
+    public class DEV_OCCUPIED_WARNING_INFO extends SdkStructure
+    {
+        public byte[]        szParkingNo  =  new byte[32];             // 车位号
+        public DEV_OCCUPIED_WARNING_PLATE_NUMBER[] szPlateNumber = new DEV_OCCUPIED_WARNING_PLATE_NUMBER[5];   // 车牌号码
+        public int           nPlateNumber;                             // 车牌数量
+        public byte[]        bReserved  = new byte[508];               // 预留字节
+
+        public DEV_OCCUPIED_WARNING_INFO(){
+            for(int i = 0;i<szPlateNumber.length;i++){
+                szPlateNumber[i] = new DEV_OCCUPIED_WARNING_PLATE_NUMBER();
+                ;            }
+        }
+    }
+
+    public class DEV_OCCUPIED_WARNING_PLATE_NUMBER extends SdkStructure
+    {
+        public byte[] plateNumber = new byte[64];
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(车位无车事件)对应的数据块描述信息
+    // 由于历史原因,如果要处理卡口事件,DEV_EVENT_TRAFFICJUNCTION_INFO和EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生
+    // 另外EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置
+    /**
+     * @author 260611
+     * @description 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(车位无车事件)对应的数据块描述信息
+     * @origin autoTool
+     * @date 2023/06/20 10:13:06
+     */
+    public static class DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO extends SdkStructure
+    {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐
+         */
+        public byte[] bReserved1 = new byte[8];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public int PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX UTC = new NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 对应车道号
+         */
+        public int nLane;
+        /**
+         * 检测到的物体
+         */
+        public NET_MSG_OBJECT stuObject = new NET_MSG_OBJECT();
+        /**
+         * 车身信息
+         */
+        public NET_MSG_OBJECT stuVehicle = new NET_MSG_OBJECT();
+        /**
+         * 事件对应文件信息
+         */
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+        /**
+         * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+         */
+        public int nSequence;
+        /**
+         * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+         */
+        public byte bEventAction;
+
+        public byte[] byReserved = new byte[2];
+        /**
+         * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+         */
+        public byte byImageIndex;
+        /**
+         * 抓图标志(按位),具体见NET_RESERVED_COMMON
+         */
+        public int dwSnapFlagMask;
+        /**
+         * 对应图片的分辨率
+         */
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();
+        /**
+         * 交通车辆信息
+         */
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+        /**
+         * 停车场信息
+         */
+        public DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo = new DEV_TRAFFIC_PARKING_INFO();
+        /**
+         * 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+         */
+        public byte byPlateTextSource;
+        /**
+         * 字节对齐
+         */
+        public byte[] byReserved2 = new byte[3];
+        /**
+         * 车位(地磁)编号
+         */
+        public byte[] szParkingNum = new byte[32];
+        /**
+         * 球机预置位编号
+         */
+        public int dwPresetNum;
+        /**
+         * 车位是否有故障
+         */
+        public int bParkingFault;
+        /**
+         * 图片信息数组
+         */
+        public Pointer pstuImageInfo;
+        /**
+         * 图片信息个数
+         */
+        public int nImageInfoNum;
+        /**
+         * 保留字节
+         */
+        public byte[] bReserved = new byte[364 - NetSDKLib.POINTERSIZE];
+        /**
+         * 公共信息
+         */
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();
+        /**
+         * 全景大图信息
+         */
+        public NET_INTELLIGENCE_IMAGE_INFO stuGlobalImage = new NET_INTELLIGENCE_IMAGE_INFO();
+        /**
+         * 车位图片信息
+         */
+        public NET_INTELLIGENCE_IMAGE_INFO stuParkingImage = new NET_INTELLIGENCE_IMAGE_INFO();
+        /**
+         * 车位置信度(0-100)
+         */
+        public int nConfidence;
+        /**
+         * 为图片信息做预留字节,新增的字段请在该保留字节下面添加
+         */
+        public byte[] byReserved1 = new byte[1016];
+        /**
+         * 触发方式 {@link com.netsdk.lib.enumeration.EM_PARKING_TRIGGER_TYPE}
+         */
+        public int emTriggerType;
+        /**
+         * 匹配到的车辆驶入信息
+         */
+        public DEV_MATCH_PARKING_INFO[] stuMatchParkingInfo = new DEV_MATCH_PARKING_INFO[5];
+        /**
+         * 匹配到的车辆驶入信息个数
+         */
+        public int nMatchParkingNum;
+        /**
+         * 所有使能的车位号
+         */
+        public ParkingNoWithSize32[] szAllParkingNo = new ParkingNoWithSize32[12];
+        /**
+         * 使能车位号的个数
+         */
+        public int nParkingNoNum;
+        /**
+         * 事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+        public DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO() {
+            for (int i = 0; i < stuMatchParkingInfo.length; i++) {
+                stuMatchParkingInfo[i] = new DEV_MATCH_PARKING_INFO();
+            }
+            for(int i = 0;i<szAllParkingNo.length;i++){
+                szAllParkingNo[i] = new ParkingNoWithSize32();
+            }
+        }
+    }
+
+    public class ParkingNoWithSize32 extends SdkStructure
+    {
+        public byte[] parkingNo = new byte[32];
+    }
+
+    // 匹配到的车辆驶入信息
+    public class DEV_MATCH_PARKING_INFO extends SdkStructure
+    {
+        public byte[]       szParkingNo = new byte[32];                  // 驶入的车位号
+        public byte[]       szPlateNum = new byte[64];                   // 驶入的车牌号信息
+        public int          nSimilarity;                                 // 驶出车牌号码与匹配到的驶入车牌号码的相似度, 全匹配成功为100, 失败为0。
+        // 如果开启模糊匹配, 全匹配不为100则进行模糊匹配, 如下
+        // 1. 除汉字外,所有的数字和字母一样 为95
+        // 2. 有一位数字或字母不一样,则为90
+        // 3. 有两位数字或字母不一样,则为80
+        // 其他的情况则认为没有匹配到,则为0
+        public byte[]       bReserved = new byte[508];                   // 保留字节
+    }
+
+    /**
+     * @author 260611
+     * @description 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件)对应数据块描述信息
+     * @origin autoTool
+     * @date 2023/08/02 10:47:11
+     */
+    public class DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO extends SdkStructure {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐
+         */
+        public byte[] bReserved1 = new byte[8];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public int PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX UTC = new NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 事件对应文件信息
+         */
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+        /**
+         * 对应图片的分辨率
+         */
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();
+        /**
+         * 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+         */
+        public int dwSnapFlagMask;
+        /**
+         * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+         */
+        public byte bEventAction;
+
+        public byte[] bReserved2 = new byte[2];
+        /**
+         * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+         */
+        public byte byImageIndex;
+        /**
+         * 对应车道号
+         */
+        public int nLane;
+        /**
+         * 检测到的物体
+         */
+        public NET_MSG_OBJECT stuObject = new NET_MSG_OBJECT();
+        /**
+         * 智能事件公共信息
+         */
+        public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new EVENT_INTELLI_COMM_INFO();
+        /**
+         * 交通车辆部分信息
+         */
+        public EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo = new EVENT_TRAFFIC_CAR_PART_INFO();
+        /**
+         * 行人信息, 废弃
+         */
+        public EVENT_VEHICLE_INFO stuVehicle = new EVENT_VEHICLE_INFO();
+        /**
+         * 行人信息, refer to {@link NET_MSG_OBJECT}
+         */
+        public Pointer pstuVehicle;
+        /**
+         * 保留字节
+         */
+        public byte[] bReserved = new byte[252 - POINTERSIZE];
+        /**
+         * 公共信息
+         */
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();
+
+        public DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO() {
+        }
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_THROW(交通抛洒物品事件)对应数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_THROW_INFO extends SdkStructure {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte[]              bReserved1 = new byte[8];                   // 字节对齐
+        public int                 PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              bReserved2 = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo;              // 交通车辆部分信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[340];                  // 保留字节
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    // 交通车辆部分信息
+    public class EVENT_TRAFFIC_CAR_PART_INFO extends SdkStructure
+    {
+        public byte[]              szMachineName = new byte[128];               // 本地或远程设备名称    来源于普通配置General.MachineName
+        public byte[]              szRoadwayNo = new byte[32];                  // 道路编号
+        public byte[]              bReserved = new byte[352];                   // 保留字节
+    }
+
+    // 事件上报携带卡片信息
+    public static class EVENT_CARD_INFO extends SdkStructure
+    {
+        public byte[]              szCardNumber = new byte[NET_EVENT_CARD_LEN];// 卡片序号字符串
+        public byte[]              bReserved = new byte[32];                   // 保留字节,留待扩展.
+    }
+
+    // 车辆方向信息
+    public static class EM_VEHICLE_DIRECTION extends SdkStructure
+    {
+        public static final int    NET_VEHICLE_DIRECTION_UNKOWN = 0;           // 未知
+        public static final int    NET_VEHICLE_DIRECTION_HEAD   = 1;           // 车头
+        public static final int    NET_VEHICLE_DIRECTION_TAIL   = 2;           // 车尾
+        public static final int    NET_VEHICLE_DIRECTION_VEHBODYSIDE   = 3;    // 车身(侧面)
+    }
+
+    // 开闸状态
+    public static class EM_OPEN_STROBE_STATE extends SdkStructure
+    {
+        public static final int    NET_OPEN_STROBE_STATE_UNKOWN = 0;           // 未知状态
+        public static final int    NET_OPEN_STROBE_STATE_CLOSE  = 1;           // 关闸
+        public static final int    NET_OPEN_STROBE_STATE_AUTO   = 2;           // 自动开闸
+        public static final int    NET_OPEN_STROBE_STATE_MANUAL = 3;           // 手动开闸
+    }
+
+    public static class RESERVED_PARA extends SdkStructure
+    {
+        public int   				dwType;         						   //pData的数据类型
+        //当[dwType]为 RESERVED_TYPE_FOR_INTEL_BOX 时,pData 对应为结构体 RESERVED_DATA_INTEL_BOX 的地址
+        //当[dwType]为 RESERVED_TYPE_FOR_COMMON 时,[pData]对应为结构体 NET_RESERVED_COMMON 的结构体地址
+        //当[dwType]为 RESERVED_TYPE_FOR_PATH 时,[pData]对应结构体NET_RESERVED_PATH的结构体地址
+        public Pointer   			pData;          						   //数据,由用户申请内存,大小参考对应的结构体
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFICJUNCTION 交通路口老规则事件/视频电警上的交通卡口老规则事件对应的数据块描述信息
+    // 由于历史原因,如果要处理卡口事件,DEV_EVENT_TRAFFICJUNCTION_INFO 和 EVENT_IVS_TRAFFICGATE要一起处理
+    // 以防止有视频电警和线圈电警同时接入平台的情况发生, 另外EVENT_IVS_TRAFFIC_TOLLGATE只支持新卡口事件的配置
+    public static class DEV_EVENT_TRAFFICJUNCTION_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte                byMainSeatBelt;                             // 主驾驶座,系安全带状态,1-系安全带,2-未系安全带
+        public byte                bySlaveSeatBelt;                            // 副驾驶座,系安全带状态,1-系安全带,2-未系安全带
+        public byte                byVehicleDirection;                         // 当前被抓拍到的车辆是车头还是车尾,具体请见 EM_VEHICLE_DIRECTION
+        public byte                byOpenStrobeState;                          // 开闸状态,具体请见 EM_OPEN_STROBE_STATE
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public int                 nLane;                                      // 对应车道号
+        public int                 dwBreakingRule;                             // 违反规则掩码,第一位:闯红灯;
+        // 第二位:不按规定车道行驶;
+        // 第三位:逆行; 第四位:违章掉头;
+        // 第五位:交通堵塞; 第六位:交通异常空闲
+        // 第七位:压线行驶; 否则默认为:交通路口事件
+        public NET_TIME_EX         RedLightUTC;                                // 红灯开始UTC时间
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 nSpeed;                                     // 车辆实际速度Km/h
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                byDirection;                                // 路口方向,1-表示正向,2-表示反向
+        public byte                byLightState;                               // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯
+        public byte                byReserved;                                 // 保留字节
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见 NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte[]              szRecordFile = new byte[NET_COMMON_STRING_128];// 报警对应的原始录像文件信息
+        public EVENT_JUNCTION_CUSTOM_INFO   stuCustomInfo;                     // 自定义信息
+        public byte                byPlateTextSource;                          // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+        public byte[]              bReserved1 = new byte[3];                   // 保留字节,留待扩展.
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+
+        public byte                byNoneMotorInfo;                            // 0-无非机动车人员信息信息,1-有非机动车人员信息信息  此字段为1时下面11个字段生效
+        public byte                byBag;                                      // 是否背包, 0-未知 1-不背包   2-背包
+        public byte                byUmbrella;                                 // 是否打伞, 0-未知 1-不打伞   2-打伞
+        public byte                byCarrierBag;                               // 手提包状态,0-未知 1-没有 2-有
+        public byte                byHat;                                      // 是否戴帽子, 0-未知 1-不戴帽子 2-戴帽子
+        public byte                byHelmet;                                   // 头盔状态,0-未知 1-没有 2-有
+        public byte                bySex;                                      // 性别,0-未知 1-男性 2-女性
+        public byte                byAge;                                      // 年龄
+        public NET_COLOR_RGBA      stuUpperBodyColor;                          // 上身颜色
+        public NET_COLOR_RGBA      stuLowerBodyColor;                          // 下身颜色
+        public byte                byUpClothes;                                // 上身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
+        public byte                byDownClothes;                              // 下身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
+
+        public NET_EXTENSION_INFO  stuExtensionInfo;                           // 扩展信息
+        public byte[]              bReserved = new byte[22];                   // 保留字节,留待扩展.
+        public int                 nTriggerType;                               // TriggerType:触发类型,0车检器,1雷达,2视频
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int                 dwRetCardNumber;                            // 卡片个数
+        public EVENT_CARD_INFO[]   stuCardInfo = (EVENT_CARD_INFO[])new EVENT_CARD_INFO().toArray(NET_EVENT_MAX_CARD_NUM);// 卡片信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+        public int				   bNonMotorInfoEx;							   // 是否有非机动车信息, 1-true; 0-false
+        public VA_OBJECT_NONMOTOR  stuNonMotor;								   // 非机动车信息
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public EVENT_PLATE_INFO		stuPlateInfo = new EVENT_PLATE_INFO();      // 车辆信息,记录了车头、车尾车牌号和车牌颜色
+        public int					bSceneImage;                                // 全景图是否有效
+        public SCENE_IMAGE_INFO_EX	stuSceneImage = new SCENE_IMAGE_INFO_EX();  // 全景图
+        public Pointer		        pstObjects;             // 检测到的多个车牌信息
+        public int					nObjectNum;                 // 检测到的多个车牌个数
+        public int					emVehiclePosture;			// 车辆姿势
+        public int					nVehicleSignConfidence;     // 车标置信度(范围:0~100)
+        public int					nVehicleCategoryConfidence;     // 车型置信度(范围:0~100)
+        public int					emCarDrivingDirection;			// 规则区内车辆行驶方向
+        public NET_IMAGE_INFO_EX2	stuImageInfo[] = new NET_IMAGE_INFO_EX2[32];    // 图片信息数组
+        public int					nImageInfoNum;                  // 图片信息个数        
+    	public byte[]				szSerialNo =new byte[128];		// 和客户端请求的抓图序列号对应		
+        public int					nAlarmCompliance;						// 报警合规, 0:未知, 1:不合规, 2:合规
+    	public NET_EVENT_INFO_EXTEND	stuEventInfoEx = new NET_EVENT_INFO_EXTEND();	// 事件公共扩展字段结构体
+    	public NET_MSG_OBJECT_SUPPLEMENT    stObjectInfoEx;                     // 视频分析物体信息补充字段,与 DH_MSG_OBJECT 的合集表示视频分析物体信息
+    	public Pointer      pstuObjectEx2;                                 // 检测到的物体扩展,指针对应结构体NET_MSG_OBJECT_EX2
+    	public Pointer      pstuVehicleEx2;                                 // 车身信息扩展,指针对应结构体NET_MSG_OBJECT_EX2
+    	public Pointer	     pstuObjectsEx2;                                 // 检测到的多个车牌信息扩展,数量为nObjectNum,指针对应结构体NET_MSG_OBJECT_EX2
+    	public int					nPresetID;								// 事件触发的预置点号,从1开始, 0表示未知
+    	public byte[] byReserved2 = new byte[584-3*POINTERSIZE];                              // 保留字节
+    	public DEV_EVENT_TRAFFICJUNCTION_INFO(){
+            for(int i = 0; i < 32; i ++){
+                stuImageInfo[i] = new NET_IMAGE_INFO_EX2();
+            }
+        }
+    }
+
+    // 非机动车对象
+    public static class VA_OBJECT_NONMOTOR extends SdkStructure
+    {
+        /**
+         *  物体ID,每个ID表示一个唯一的物体
+         */
+        public int					nObjectID;
+        /**
+         *  非机动车子类型
+         */
+        public int					emCategory;
+
+        /**
+         *  包围盒, 非机动车矩形框,0~8191相对坐标
+         */
+        public DH_RECT					stuBoundingBox = new DH_RECT();
+
+        /**
+         *  包围盒, 非机动车矩形框,绝对坐标
+         */
+        public DH_RECT					stuOriginalBoundingBox = new DH_RECT();
+
+        /**
+         *  非机动车颜色, RGBA
+         */
+        public NET_COLOR_RGBA					stuMainColor = new NET_COLOR_RGBA();
+
+        /**
+         *  非机动车颜色, 枚举
+         */
+        public int					emColor;
+
+        /**
+         *  是否有抠图
+         */
+        public int					bHasImage;
+        /**
+         *  物体截图
+         */
+        public NET_NONMOTOR_PIC_INFO					stuImage = new NET_NONMOTOR_PIC_INFO();
+
+        /**
+         *  骑车人数量
+         */
+        public int					nNumOfCycling;
+        /**
+         *  骑车人特征,个数和nNumOfCycling关联
+         */
+        public NET_RIDER_INFO[]					stuRiderList = (NET_RIDER_INFO[])new NET_RIDER_INFO().toArray(NetSDKLib.MAX_RIDER_NUM);
+
+        /**
+         *  全景广角图
+         */
+        public SCENE_IMAGE_INFO					stuSceneImage = new SCENE_IMAGE_INFO();
+
+        /**
+         *  人脸全景广角图
+         */
+        public FACE_SCENE_IMAGE					stuFaceSceneImage = new FACE_SCENE_IMAGE();
+
+        /**
+         *  检测到的人脸数量
+         */
+        public int					nNumOfFace;
+        /**
+         *  物体速度,单位为km/h
+         */
+        public float					fSpeed;
+        /**
+         *  非机动车特征值数据在二进制数据中的位置信息
+         */
+        public NET_NONMOTOR_FEATURE_VECTOR_INFO					stuNonMotorFeatureVectorInfo = new NET_NONMOTOR_FEATURE_VECTOR_INFO();
+
+        /**
+         *  非机动车特征值版本号
+         */
+        public int					emNonMotorFeatureVersion;
+
+        /**
+         *  非机动车牌信息
+         */
+        public NET_NONMOTOR_PLATE_INFO					stuNomotorPlateInfo = new NET_NONMOTOR_PLATE_INFO();
+
+        /**
+         *  物体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
+         */
+        public NET_POINT					stuObjCenter = new NET_POINT();
+
+        /**
+         *  人脸特征值数据在二进制数据中的位置信息, 废弃
+         */
+        public NET_FACE_FEATURE_VECTOR_INFO					stuFaceFeatureVectorInfo = new NET_FACE_FEATURE_VECTOR_INFO();
+
+        /**
+         *  人脸特征值版本号, 废弃
+         */
+        public int					emFaceFeatureVersion;
+
+        /**
+         非机动车类型置信度
+         */
+        public			int					nCategoryConf;
+        /**
+         非机动车特征值版本号-字符串
+         */
+        public			byte[]					szNonMotorFeatureVersion=new byte[32];
+        /**
+         非机动车的角度 {@link com.netsdk.lib.enumeration.EM_OBJECT_NONMOTORANGLE_TYPE}
+         */
+        public			int					emNonMotorAngle;
+        /**
+         非机动车车篮 {@link com.netsdk.lib.enumeration.EM_OBJECT_BASKET_TYPE}
+         */
+        public			int					emBasket;
+        /**
+         非机动车后备箱 {@link com.netsdk.lib.enumeration.EM_OBJECT_STORAGEBOX_TYPE}
+         */
+        public			int					emStorageBox;
+        /**
+         非机动车完整度评分,范围[0,100],越大越完整
+         */
+        public			int					nCompleteScore;
+        /**
+         非机动车清晰度分值 取值范围为[1,100], 越大越清晰, 0为无效值
+         */
+        public			int					nClarityScore;
+        /**
+         目标出现的帧号
+         */
+        public			int					nStartSequence;
+        /**
+         目标消失的帧号
+         */
+        public			int					nEndSequence;
+        /**
+         非机动车车身及骑手整体,是否虚检,0: 否,1: 是
+         */
+        public			int					bIsErrorDetect;
+        /**
+         图像成像光源类型, 0:未知, 1:可见光成像, 2:近红外成像(灰度图), 3:热红外成像(伪彩色)
+         */
+        public			int					nImageLightType;
+        /**
+         非机动车综合质量评分,范围[0,100],越大质量越好
+         */
+        public			int					nAbsScore;
+        /**
+         雨棚(伞)类型 {@link com.netsdk.lib.enumeration.EM_RAIN_SHED_TYPE}
+         */
+        public			int					emRainShedType;
+        /**
+         智能物体全局唯一物体标识
+         有效数据位21位,包含’\0’
+         前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+         中间14位YYYYMMDDhhmmss:年月日时分秒
+         后5位%u%u%u%u%u:物体ID,如00001
+         */
+        public			byte[]					szSerialUUID=new byte[22];
+        /**
+         对齐
+         */
+        public			byte[]					szReserved=new byte[2];
+        /**
+         非机动车的骑手和车身是否单独提取, 0:否, 1:是
+         */
+        public          int                    nHumanFeatureExtractSingle;
+        /**
+         结构化非机动车支持人体图
+         */
+        public          SCENE_IMAGE_INFO        stuHumanImage = new SCENE_IMAGE_INFO();
+        /**
+         保留
+         */
+        public			byte[]					byReserved=new byte[2848];
+
+    }
+
+    // 非机动车配牌信息
+    public static class NET_NONMOTOR_PLATE_INFO extends SdkStructure
+    {
+        public byte[]                        szPlateNumber=new byte[128];                 // 非机动车车牌号
+        public NET_RECT					stuBoundingBox;                     // 包围盒, 非机动车矩形框,0~8191相对坐标
+        public NET_RECT					stuOriginalBoundingBox;             // 包围盒, 非机动车矩形框,绝对坐标
+        public NET_NONMOTOR_PLATE_IMAGE    stuPlateImage;                      // 非机动车车牌抠图
+        public int         emPlateColor;                       // 车牌颜色
+
+        public byte[]						byReserved=new byte[132];					// 保留
+    };
+
+    // 非机动车车牌图片信息
+    public static class NET_NONMOTOR_PLATE_IMAGE extends SdkStructure
+    {
+        public int        nOffset;            // 在二进制数据块中的偏移
+        public int        nLength;            // 图片大小
+        public int        nWidth;             // 图片宽度
+        public int        nHeight;            // 图片高度
+        public byte[]        byReserved=new byte[512];    // 保留字节
+    };
+
+    public static class NET_NONMOTOR_FEATURE_VECTOR_INFO extends SdkStructure {
+        public int                nOffset;            // 非机动车特征值在二进制数据中的偏移, 单位:字节
+        public int                nLength;            // 非机动车特征值数据长度, 单位:字节
+        public byte[] byReserved = new byte[32]; // 保留
+    }
+
+    public static class EM_FEATURE_VERSION extends SdkStructure {
+
+        public static final int EM_FEATURE_VERSION_UNKNOWN = 0;             // 未知
+        public static final int EM_FEATURE_VERSION_FACE_LARGE_1_01_001 = 1;	// 人脸,大模型,1.01.001
+        public static final int EM_FEATURE_VERSION_FACE_LARGE_1_02_001 = 2; // 人脸,大模型,1.02.001
+        public static final int EM_FEATURE_VERSION_FACE_LARGE_1_03_001 = 3; // 人脸,大模型,1.03.001
+        public static final int EM_FEATURE_VERSION_FACE_LARGE_1_04_001 = 4; // 人脸,大模型,1.04.001
+        public static final int EM_FEATURE_VERSION_FACE_MIDDLE_1_01_002 = 31;   // 人脸,中模型,1.01.002
+        public static final int EM_FEATURE_VERSION_FACE_MIDDLE_1_02_002 = 32;               // 人脸,中模型,1.02.002
+        public static final int EM_FEATURE_VERSION_FACE_MIDDLE_1_03_002 = 33;				// 人脸,中模型,1.03.002
+        public static final int EM_FEATURE_VERSION_FACE_MIDDLE_1_04_002 = 34;				// 人脸,中模型,1.04.002
+        public static final int EM_FEATURE_VERSION_FACE_SMALL_1_01_003 = 61;				// 人脸,小模型,1.01.003
+        public static final int EM_FEATURE_VERSION_FACE_SMALL_1_02_003 = 62;				// 人脸,小模型,1.02.003
+
+        public static final int EM_FEATURE_VERSION_HUMAN_NONMOTOR				= 91;		// 人和非机动车,全局无版本号
+        public static final int EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_00_01	= 92;       // 人和非机动车,全局浮点,1.00.01
+        public static final int EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_00_01	= 93;       // 人和非机动车,全局哈希,1.00.01
+        public static final int EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_00	= 94;       // 人和非机动车,全局浮点,1.01.00
+        public static final int EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_00	= 95;       // 人和非机动车,全局哈希,1.01.00
+
+        public static final int EM_FEATURE_VERSION_TRAFFIC						= 121;		// 机动车,全局无版本号
+        public static final int EM_FEATURE_VERSION_TRAFFIC_FLOAT				= 122;		// 机动车,全局浮点版本号0
+        public static final int EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_01		= 123;		// 机动车,全局浮点版本号1.00.01
+        public static final int EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_01			= 124;		// 机动车,全局哈希版本号1.00.01
+        public static final int EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_02		= 125;		// 机动车,全局浮点版本号1.00.02
+        public static final int EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_02			= 126;		// 机动车,全局哈希版本号1.00.02
+
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_1_5_0			= 151;		// 商汤,人脸,1.5.0
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_1_8_1			= 152;		// 商汤,人脸,1.8.1
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_2_1_3			= 153;		// 商汤,人脸,2.1.3
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_6		= 154;		// 商汤,人脸,2.39.6
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_7		= 155;		// 商汤,人脸,2.39.7
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_8		= 156;		// 商汤,人脸,2.39.8
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_239			= 157;		// 商汤,人脸,239
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_242			= 158;		// 商汤,人脸,242
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_244			= 159;		// 商汤,人脸,244
+        public static final int EM_FEATURE_VERSION_SHANGTANG_FACE_245			= 160;		// 商汤,人脸,245
+
+        public static final int EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_4_2	= 181;  // 深瞐,人脸/机动车/非机动车,2.4.2
+        public static final int EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_5_7	= 182;	// 深瞐,人脸/机动车/非机动车,2.5.7
+    }
+
+    // 非机动车抠图信息
+    public static class NET_NONMOTOR_PIC_INFO extends SdkStructure
+    {
+        public int					 uOffset;								 // 在二进制数据块中的偏移
+        public int					 uLength;								 // 图片大小,单位:字节
+        public int					 uWidth;								 // 图片宽度
+        public int					 uHeight;								 // 图片高度
+        public byte[]				 szFilePath = new byte[MAX_PATH_LEN];	 // 文件路径
+        public byte[]				 byReserved = new byte[512];			 // 保留
+    }
+
+    // 骑车人脸图片信息
+    public static class RIDER_FACE_IMAGE_INFO extends SdkStructure
+    {
+        public int					 uOffset;								 // 在二进制数据块中的偏移
+        public int					 uLength;								 // 图片大小,单位:字节
+        public int					 uWidth;								 // 图片宽度
+        public int					 uHeight;								 // 图片高度
+        public byte[]				 byReserved = new byte[48];			 // 保留
+    }
+
+    // 斜视状态
+    public static class EM_STRABISMUS_TYPE extends SdkStructure
+    {
+        public static final int EM_STRABISMUS_UNKNOWN = 0;			// 未知
+        public static final int EM_STRABISMUS_NORMAL = 1;			// 正常
+        public static final int EM_STRABISMUS_YES = 2;				// 斜视
+    }
+
+    // 是否带眼镜
+    public static class EM_HAS_GLASS extends SdkStructure
+    {
+        public static final int EM_HAS_GLASS_UNKNOWN = 0;			// 未知
+        public static final int EM_HAS_GLASS_NO = 1;				// 未戴
+        public static final int EM_HAS_GLASS_NORMAL = 2;			// 戴普通眼镜
+        public static final int EM_HAS_GLASS_SUN = 3;				// 戴太阳眼镜
+        public static final int EM_HAS_GLASS_BLACK = 4;				// 戴黑框眼镜
+    }
+
+    // 人脸属性
+    public static class NET_FACE_ATTRIBUTE_EX extends SdkStructure
+    {
+        public int 							emSex;						// 性别,参考EM_SEX_TYPE
+        public int       					nAge;						// 年龄,-1表示该字段数据无效
+        public byte[]                       szReserved = new byte[4];	// 
+        public int							emEye;						// 眼睛状态,参考EM_EYE_STATE_TYPE
+        public int							emMouth;					// 嘴巴状态,参考EM_MOUTH_STATE_TYPE
+        public int 							emMask;						// 口罩状态, 参考EM_MASK_STATE_TYPE
+        public int							emBeard;					// 胡子状态, EM_BEARD_STATE_TYPE
+        public int							nAttractive;				// 魅力值, 0未识别,识别时范围1-100,得分高魅力高
+        public int							emGlass;					// 眼镜,参考EM_HAS_GLASS
+        public int							emEmotion;					// 表情,参考EM_EMOTION_TYPE
+        public NET_RECT						stuBoundingBox;				// 包围盒(8192坐标系)
+        public byte[]				 		byReserved1 = new byte[4];	// 保留
+        public int							emStrabismus;				// 斜视状态,EM_STRABISMUS_TYPE
+        public byte[]				 		byReserved = new byte[64];	// 保留
+    }
+
+    // 骑车人信息
+    public static class NET_RIDER_INFO extends SdkStructure
+    {
+        public int					 bFeatureValid;							// 是否识别到特征信息, TRUE时下面数据才有效, 1-true; 0-false
+        public int		             emSex;								    // 性别, 对应枚举  EM_SEX_TYPE
+        public int					 nAge;								    // 年龄
+
+        public int   				 emHelmet;					  		    // 头盔状态, 对应枚举  EM_NONMOTOR_OBJECT_STATUS
+        public int   			     emCall;							    // 是否在打电话, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+        public int   				 emBag;					  			    // 是否有背包, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+        public int    				 emCarrierBag;					  	    // 有没有手提包, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+        public int    			     emUmbrella;					  	    // 是否打伞, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+        public int   				 emGlasses;					  	  	    // 是否有带眼镜, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+        public int   				 emMask;					  	  	    // 是否带口罩, 对应枚举 EM_NONMOTOR_OBJECT_STATUS
+
+        public int              	 emEmotion;                             // 表情, 对应枚举 EM_EMOTION_TYPE
+        public int             		 emUpClothes;                           // 上衣类型, 对应枚举 EM_CLOTHES_TYPE
+        public int             		 emDownClothes;                         // 下衣类型, 对应枚举 EM_CLOTHES_TYPE
+        public int        			 emUpperBodyColor;                      // 上衣颜色, 对应枚举 EM_OBJECT_COLOR_TYPE
+        public int       		     emLowerBodyColor;                      // 下衣颜色, 对应枚举 EM_OBJECT_COLOR_TYPE
+
+        public int					bHasFaceImage;							// 是否有骑车人人脸抠图信息
+        public RIDER_FACE_IMAGE_INFO		stuFaceImage;					// 骑车人人脸特写描述
+        public int					bHasFaceAttributes;						// 是否有人脸属性
+        public NET_FACE_ATTRIBUTE_EX		stuFaceAttributes;				// 人脸属性
+        public byte[]				 byReserved = new byte[316];			// 保留
+    }
+
+    // 性别
+    public static class EM_SEX_TYPE extends SdkStructure
+    {
+        public static final int EM_SEX_TYPE_UNKNOWN = 0;					//未知
+        public static final int EM_SEX_TYPE_MALE = 1;						//男性
+        public static final int EM_SEX_TYPE_FEMALE = 2;						//女性
+    }
+
+    // 事件/物体状态
+    public static class EM_NONMOTOR_OBJECT_STATUS extends SdkStructure
+    {
+        public static final int EM_NONMOTOR_OBJECT_STATUS_UNKNOWN = 0;		// 未识别
+        public static final int EM_NONMOTOR_OBJECT_STATUS_NO = 1;			// 否
+        public static final int EM_NONMOTOR_OBJECT_STATUS_YES = 2;			// 是
+    }
+
+    // 表情
+    public static class EM_EMOTION_TYPE extends SdkStructure
+    {
+        public static final int EM_EMOTION_TYPE_UNKNOWN = 0;                // 未知
+        public static final int EM_EMOTION_TYPE_NORMAL = 1;                 // 普通/正常
+        public static final int EM_EMOTION_TYPE_SMILE = 2;                  // 微笑
+        public static final int EM_EMOTION_TYPE_ANGER = 3;                  // 愤怒
+        public static final int EM_EMOTION_TYPE_SADNESS = 4;                // 悲伤
+        public static final int EM_EMOTION_TYPE_DISGUST = 5;                // 厌恶
+        public static final int EM_EMOTION_TYPE_FEAR = 6;                   // 害怕
+        public static final int EM_EMOTION_TYPE_SURPRISE = 7;               // 惊讶
+        public static final int EM_EMOTION_TYPE_NEUTRAL = 8;                // 正常
+        public static final int EM_EMOTION_TYPE_LAUGH = 9;                  // 大笑
+        public static final int EM_EMOTION_TYPE_HAPPY = 10;                 // 高兴
+        public static final int EM_EMOTION_TYPE_CONFUSED = 11;              // 困惑
+        public static final int EM_EMOTION_TYPE_SCREAM = 12;                // 尖叫
+        public static final int EM_EMOTION_TYPE_CALMNESS = 13;  			// 平静
+    }
+
+    public static class EM_CLOTHES_TYPE extends SdkStructure
+    {
+        public static final int EM_CLOTHES_TYPE_UNKNOWN = 0;                //未知
+        public static final int EM_CLOTHES_TYPE_LONG_SLEEVE = 1;            //长袖
+        public static final int EM_CLOTHES_TYPE_SHORT_SLEEVE = 2;           //短袖
+        public static final int EM_CLOTHES_TYPE_TROUSERS = 3;               //长裤
+        public static final int EM_CLOTHES_TYPE_SHORTS = 4;                 //短裤
+        public static final int EM_CLOTHES_TYPE_SKIRT = 5;                  //裙子
+        public static final int EM_CLOTHES_TYPE_WAISTCOAT = 6;              //背心
+        public static final int EM_CLOTHES_TYPE_MINIPANTS = 7;              //超短裤
+        public static final int EM_CLOTHES_TYPE_MINISKIRT = 8;              //超短裙
+    }
+
+    // 非机动车子类型
+    public static class EM_CATEGORY_NONMOTOR_TYPE extends SdkStructure
+    {
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_UNKNOWN = 0;					// 未知
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_TRICYCLE = 1;					// "Tricycle" 三轮车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_MOTORCYCLE = 2;				// "Motorcycle" 摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_NON_MOTOR = 3;				// "Non-Motor"非机动车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_BICYCLE = 4;					// "Bicycle" 自行车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_DUALTRIWHEELMOTORCYCLE = 5;	// "DualTriWheelMotorcycle"两、三轮摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_LIGHTMOTORCYCLE = 6;			// "LightMotorcycle" 轻便摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_EMBASSYMOTORCYCLE = 7;		// "EmbassyMotorcycle "使馆摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_MARGINALMOTORCYCLE = 8;		// "MarginalMotorcycle "领馆摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_AREAOUTMOTORCYCLE = 9;		// "AreaoutMotorcycle "境外摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_FOREIGNMOTORCYCLE = 10;		// "ForeignMotorcycle "外籍摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_TRIALMOTORCYCLE = 11;			// "TrialMotorcycle "试验摩托车
+        public static final int EM_CATEGORY_NONMOTOR_TYPE_COACHMOTORCYCLE = 12;			// "CoachMotorcycle "教练摩托车
+    }
+
+    // 颜色类型
+    public static class EM_OBJECT_COLOR_TYPE extends SdkStructure
+    {
+        public static final int EM_OBJECT_COLOR_TYPE_UNKNOWN = 0;			  // 未知
+        public static final int EM_OBJECT_COLOR_TYPE_WHITE = 1;				  // 白色
+        public static final int EM_OBJECT_COLOR_TYPE_ORANGE = 2;			  // 橙色
+        public static final int EM_OBJECT_COLOR_TYPE_PINK = 3;				  // 粉色
+        public static final int EM_OBJECT_COLOR_TYPE_BLACK = 4;				  // 黑色
+        public static final int EM_OBJECT_COLOR_TYPE_RED = 5;				  // 红色
+        public static final int EM_OBJECT_COLOR_TYPE_YELLOW = 6;			  // 黄色
+        public static final int EM_OBJECT_COLOR_TYPE_GRAY = 7;				  // 灰色
+        public static final int EM_OBJECT_COLOR_TYPE_BLUE = 8;				  // 蓝色
+        public static final int EM_OBJECT_COLOR_TYPE_GREEN = 9;				  // 绿色
+        public static final int EM_OBJECT_COLOR_TYPE_PURPLE = 10;			  // 紫色
+        public static final int EM_OBJECT_COLOR_TYPE_BROWN = 11;			  // 棕色
+        public static final int EM_OBJECT_COLOR_TYPE_SLIVER = 12;			  // 银色
+        public static final int EM_OBJECT_COLOR_TYPE_DARKVIOLET = 13;		  // 暗紫罗兰色
+        public static final int EM_OBJECT_COLOR_TYPE_MAROON = 14;			  // 栗色
+        public static final int EM_OBJECT_COLOR_TYPE_DIMGRAY = 15;			  // 暗灰色
+        public static final int EM_OBJECT_COLOR_TYPE_WHITESMOKE = 16;		  // 白烟色
+        public static final int EM_OBJECT_COLOR_TYPE_DARKORANGE = 17;		  // 深橙色
+        public static final int EM_OBJECT_COLOR_TYPE_MISTYROSE = 18;		  // 浅玫瑰色
+        public static final int EM_OBJECT_COLOR_TYPE_TOMATO = 19;			  // 番茄红色
+        public static final int EM_OBJECT_COLOR_TYPE_OLIVE = 20;			  // 橄榄色
+        public static final int EM_OBJECT_COLOR_TYPE_GOLD = 21;				  // 金色
+        public static final int EM_OBJECT_COLOR_TYPE_DARKOLIVEGREEN = 22;	  // 暗橄榄绿色
+        public static final int EM_OBJECT_COLOR_TYPE_CHARTREUSE = 23;		  // 黄绿色
+        public static final int EM_OBJECT_COLOR_TYPE_GREENYELLOW = 24;		  // 绿黄色
+        public static final int EM_OBJECT_COLOR_TYPE_FORESTGREEN = 25;		  // 森林绿色
+        public static final int EM_OBJECT_COLOR_TYPE_SEAGREEN = 26;			  // 海洋绿色
+        public static final int EM_OBJECT_COLOR_TYPE_DEEPSKYBLUE = 27;		  // 深天蓝色
+        public static final int EM_OBJECT_COLOR_TYPE_CYAN = 28;				  // 青色
+        public static final int EM_OBJECT_COLOR_TYPE_OTHER = 29;			  // 无法识别
+    }
+
+    public static class NET_SEAT_INFO extends SdkStructure
+    {
+        public NET_RECT 		  stuFaceRect; 								   // 人脸矩形框信息(8192坐标系)
+        public byte   			  bySunShade;								   // 遮阳板状态 0: 未知 1:无遮阳板 2:有遮阳板
+        public byte   			  byDriverCalling; 							   // 打电话状态 0: 未知 1:未打电话 2:打电话
+        public byte   			  byDriverSmoking;						       // 抽烟状态	0: 未知 1:未吸烟 2:吸烟
+        public byte   			  bySafeBelt; 								   // 安全带状态	0: 未知 1:未系安全带 2:系安全带
+        public byte[]   		  byReserved = new byte[32];				   // 保留字节
+    }
+
+    public static class NET_VEHICLE_ATTACH extends SdkStructure
+    {
+        public int         		  nType; 									   // 附件类型	0-未知  1-年检标志  2-挂件  3-纸巾盒  4-香水盒
+        public NET_RECT    		  stuBoundingBox;							   // 包围盒信息(8192坐标系)
+        public byte[]        	  byReserved = new byte[32];				   // 保留字节
+    }
+
+    //卡口事件专用上报内容,需求增加到Custom下
+    public static class EVENT_JUNCTION_CUSTOM_INFO extends SdkStructure
+    {
+        public EVENT_CUSTOM_WEIGHT_INFO     stuWeightInfo;      				// 原始图片信息
+        public int                       	nCbirFeatureOffset;					// 数据偏移,单位字节 (由于结构体保留字节有限的限制,添加在此处, 下同)
+        public int                       	nCbirFeatureLength;					// 数据大小,单位字节
+        public int							dwVehicleHeadDirection;				// 车头朝向 0:未知 1:左 2:中 3:右
+
+        public int                          nAvailableSpaceNum;         // 停车场车位余位数量 
+        public NET_RADAR_FREE_STREAM		stuRadarFreeStream;			// 雷达自由流信息
+        public NET_CUSTOM_MEASURE_TEMPER   stuMeasureTemper;             // 测温信息
+        public byte[]						bReserved = new byte[12];			// 预留字节
+    }
+
+    // 雷达自由流信息
+    public static class NET_RADAR_FREE_STREAM extends SdkStructure
+    {
+        public long							nABSTime;					// 1年1月1日0时起至今的毫秒数
+        public int							nVehicleID; 				// 车辆ID
+        public int							unOBUMAC;					// OBU的MAC地址
+    }
+
+    //称重信息
+    public static class EVENT_CUSTOM_WEIGHT_INFO extends SdkStructure
+    {
+        public int        dwRoughWeight;                    				   // 毛重,车辆满载货物重量。单位KG
+        public int        dwTareWeight;                     				   // 皮重,空车重量。单位KG
+        public int        dwNetWeight;                      				   // 净重,载货重量。单位KG
+        public byte[]	  bReserved = new byte[28];					   	 	   // 预留字节
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFICGATE(交通卡口老规则事件/线圈电警上的交通卡口老规则事件)对应的数据块描述信息
+    // 由于历史原因,如果要处理卡口事件,DEV_EVENT_TRAFFICJUNCTION_INFO和EVENT_IVS_TRAFFICGATE要一起处理,以防止有视频电警和线圈电警同时接入平台的情况发生
+    // 另外 EVENT_IVS_TRAFFIC_TOLLGATE 只支持新卡口事件的配置
+    public static class DEV_EVENT_TRAFFICGATE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte                byOpenStrobeState;                          // 开闸状态,具体请见EM_OPEN_STROBE_STATE
+        public byte                bReserved1[] = new byte[3];                 // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public int                 nLane;                                      // 对应车道号
+        public int                 nSpeed;                                     // 车辆实际速度Km/h
+        public int                 nSpeedUpperLimit;                           // 速度上限 单位:km/h
+        public int                 nSpeedLowerLimit;                           // 速度下限 单位:km/h
+        public int                 dwBreakingRule;                             // 违反规则掩码,第一位:逆行;
+        // 第二位:压线行驶; 第三位:超速行驶;
+        // 第四位:欠速行驶; 第五位:闯红灯;第六位:穿过路口(卡口事件)
+        // 第七位: 压黄线; 第八位: 有车占道; 第九位: 黄牌占道;否则默认为:交通卡口事件
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public byte                szManualSnapNo[] = new byte[64];            // 手动抓拍序号
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[3];                   // 保留字节
+        public byte[]              szSnapFlag = new byte[16];                  // 设备产生的抓拍标识
+        public byte                bySnapMode;                                 // 抓拍方式,0-未分类 1-全景 2-近景 4-同向抓拍 8-反向抓拍 16-号牌图像
+        public byte                byOverSpeedPercentage;                      // 超速百分比
+        public byte                byUnderSpeedingPercentage;                  // 欠速百分比
+        public byte                byRedLightMargin;                           // 红灯容许间隔时间,单位:秒
+        public byte                byDriveDirection;                           // 行驶方向,0-上行(即车辆离设备部署点越来越近),1-下行(即车辆离设备部署点越来越远)
+        public byte[]              szRoadwayNo = new byte[32];                 // 道路编号
+        public byte[]              szViolationCode = new byte[16];             // 违章代码
+        public byte[]              szViolationDesc = new byte[128];            // 违章描述
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte[]              szVehicleType= new byte[32];                // 车辆大小类型 Minisize"微型车,"Light-duty"小型车,"Medium"中型车,
+        // "Oversize"大型车,"Huge"超大车,"Largesize"长车 "Unknown"未知
+        public byte                byVehicleLenth;                             // 车辆长度, 单位米
+        public byte                byLightState;                               // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯
+        public byte                byReserved1;                                // 保留字节,留待扩展
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nOverSpeedMargin;                           // 限高速宽限值    单位:km/h
+        public int                 nUnderSpeedMargin;                          // 限低速宽限值    单位:km/h
+        public byte[]              szDrivingDirection = new byte[3*NET_MAX_DRIVINGDIRECTION]; //
+        // "DrivingDirection" : ["Approach", "", ""],行驶方向
+        // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,
+        // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
+        // 下行的两个地点,UTF-8编码
+        public byte[]              szMachineName = new byte[256];              // 本地或远程设备名称
+        public byte[]              szMachineAddress = new byte[256];           // 机器部署地点、道路编码
+        public byte[]              szMachineGroup = new byte[256];             // 机器分组、设备所属单位
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_SIG_CARWAY_INFO_EX stuSigInfo;                              // 由车检器产生抓拍信号冗余信息
+        public byte[]              szFilePath = new byte[MAX_PATH];            // 文件路径
+        public NET_TIME_EX         RedLightUTC;                                // 红灯开始UTC时间
+        public Pointer             szDeviceAddress;                            // 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束
+        public float               fActualShutter;                             // 当前图片曝光时间,单位为毫秒
+        public byte                byActualGain;                               // 当前图片增益,范围为0~100
+        public byte                byDirection;                                // 0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知
+        public byte                bReserve;                                   // 保留字节, 字节对齐
+        public byte                bRetCardNumber;                             // 卡片个数
+        public EVENT_CARD_INFO[]   stuCardInfo = (EVENT_CARD_INFO[])new EVENT_CARD_INFO().toArray(NET_EVENT_MAX_CARD_NUM);// 卡片信息
+        public byte[]              szDefendCode = new byte[NET_COMMON_STRING_64];           // 图片防伪码
+        public int                 nTrafficBlackListID;                         // 关联禁止名单数据库记录默认主键ID, 0,无效;> 0,禁止名单数据记录
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public byte[]              bReserved = new byte[452];                  // 保留字节,留待扩展.
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_RUNREDLIGHT(交通-闯红灯事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 车牌信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nLightState;                                // 红绿灯状态 0:未知 1:绿灯 2:红灯 3:黄灯
+        public int                 nSpeed;                                     // 车速,km/h
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_TIME_EX         stRedLightUTC;                              // 红灯开始时间
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte                byRedLightMargin;                           // 红灯容许间隔时间,单位:秒
+        public byte[]              byAlignment = new byte[3];                  // 字节对齐
+        public int                 nRedLightPeriod;                            // 表示红灯周期时间,单位毫秒
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[928];                  // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public int				bHasNonMotor;								// 是否有非机动车对象
+        public VA_OBJECT_NONMOTOR	stuNonMotor;								// 非机动车对象
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_OVERLINE(交通-压线事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_OVERLINE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 车牌信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 nSpeed;                                     // 车辆实际速度,Km/h
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[968];                  // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_RETROGRADE(交通-逆行事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_RETROGRADE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 车牌信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 nSpeed;                                     // 车辆实际速度,Km/h
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public int                bIsExistAlarmRecord;                         // rue:有对应的报警录像; false:无对应的报警录像
+        public int                dwAlarmRecordSize;                           // 录像大小
+        public byte[]             szAlarmRecordPath = new byte[NET_COMMON_STRING_256];    // 录像路径
+        public EVENT_INTELLI_COMM_INFO      intelliCommInfo;                   // 智能事件公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[484];                  // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int                 nDetectNum;                                 // 规则检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM); // 规则检测区域
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public int				bHasNonMotor;								// 是否有非机动车对象
+        public VA_OBJECT_NONMOTOR	stuNonMotor;								// 非机动车对象
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_OVERSPEED(交通超速事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_OVERSPEED_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSpeed;                                     // 车辆实际速度Km/h
+        public int                 nSpeedUpperLimit;                           // 速度上限 单位:km/h
+        public int                 nSpeedLowerLimit;                           // 速度下限 单位:km/h
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte[]              szFilePath = new byte[MAX_PATH];            // 文件路径
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息  
+        public int                 nSpeedingPercentage;                        // 超速百分比
+        public byte[]              bReserved = new byte[572];                  // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    	public NET_REGION_INFO	   stRegionInfo;							   // 区间测速信息
+    	public NET_EVENT_INFO_EXTEND  stuEventInfoEx;						   // 事件公共扩展字段结构体
+    	public VA_OBJECT_NONMOTOR  stuNonMotor;							       // 非机动车信息
+    	public int                 bHasNonMotor;                               // 是否有非机动车对象
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_UNDERSPEED(交通欠速事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_UNDERSPEED_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved2 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSpeed;                                     // 车辆实际速度Km/h
+        public int                 nSpeedUpperLimit;                           // 速度上限 单位:km/h
+        public int                 nSpeedLowerLimit;                           // 速度下限 单位:km/h
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              bReserved1 = new byte[2];                   // 对齐
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nUnderSpeedingPercentage;                   // 欠速百分比
+        public int               dwSnapFlagMask;                               // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[832];                  // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_WRONGROUTE(交通违章-不按车道行驶)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_WRONGROUTE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nLane;                                      // 对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nSpeed;                                     // 车辆实际速度,km/h
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[972];                  // 保留字节,留待扩展.
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFIC_TURNLEFT(交通-违章左转)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_TURNLEFT_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                                 	// 通道号
+        public byte[]                	szName = new byte[128];                         // 事件名称
+        public byte[]                	bReserved1 = new byte[4];                       // 字节对齐
+        public double              		PTS;                                        	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC ;                        					// 事件发生的时间
+        public int                 		nEventID;                                   	// 事件ID
+        public int                 		nLane;                                      	// 对应车道号
+        public NET_MSG_OBJECT       	stuObject;               						// 车牌信息
+        public NET_MSG_OBJECT       	stuVehicle;              						// 车身信息
+        public NET_EVENT_FILE_INFO  	stuFileInfo;        							// 事件对应文件信息
+        public int                 		nSequence;                                  	// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 		nSpeed;                                     	// 车辆实际速度,Km/h
+        public byte                		bEventAction;                               	// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                	byReserved = new byte[2];
+        public byte                		byImageIndex;                               	// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               		dwSnapFlagMask;                             	// 抓图标志(按位),具体见  NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  	stuResolution;     							 	// 对应图片的分辨率
+        public NET_GPS_INFO        		stuGPSInfo;                                		// GPS信息 
+        public byte[]                	bReserved = new byte[968];                      // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;   						// 交通车辆信息
+        public EVENT_COMM_INFO     		stCommInfo;             						// 公共信息
+        public VA_OBJECT_NONMOTOR		stuNonMotor;					                // 非机动车对象
+        public int                      bHasNonMotor;							    	// 是否有非机动车对象
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();     //事件公共扩展字段结构体
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHT (交通-违章右转)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_TURNRIGHT_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                                 	// 通道号
+        public byte[]                	szName = new byte[128];                         // 事件名称
+        public byte[]                	bReserved1 = new byte[4];                       // 字节对齐
+        public double              		PTS;                                        	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                        	// 事件发生的时间
+        public int                 		nEventID;                                   	// 事件ID
+        public int                 		nLane;                                      	// 对应车道号
+        public NET_MSG_OBJECT       	stuObject;                                  	// 车牌信息
+        public NET_MSG_OBJECT       	stuVehicle;                                 	// 车身信息
+        public NET_EVENT_FILE_INFO  	stuFileInfo;                                	// 事件对应文件信息
+        public int                 		nSequence;                                  	// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 		nSpeed;                                     	// 车辆实际速度,Km/h
+        public byte                		bEventAction;                               	// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                	byReserved = new byte[2];
+        public byte                		byImageIndex;                               	// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               		dwSnapFlagMask;                             	// 抓图标志(按位),具体见  NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  	stuResolution;                              	// 对应图片的分辨率
+        public NET_GPS_INFO        		stuGPSInfo;                                 	// GPS信息 
+        public byte[]                	bReserved = new byte[968];                      // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 			// 交通车辆信息
+        public EVENT_COMM_INFO     		stCommInfo;                                 	// 公共信息
+        public VA_OBJECT_NONMOTOR		stuNonMotor;					                // 非机动车对象
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_UTURN(违章调头事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_UTURN_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                                 	// 通道号
+        public byte[]                	szName = new byte[128];                         // 事件名称
+        public byte[]                	bReserved1 = new byte[4];                       // 字节对齐
+        public double              		PTS;                                        	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                        	// 事件发生的时间
+        public int                 		nEventID;                                   	// 事件ID
+        public int                 		nLane;                                      	// 对应车道号
+        public NET_MSG_OBJECT       	stuObject;                                  	// 车牌信息
+        public NET_MSG_OBJECT       	stuVehicle;                                 	// 车身信息
+        public NET_EVENT_FILE_INFO  	stuFileInfo;                                	// 事件对应文件信息
+        public int                 		nSequence;                                  	// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 		nSpeed;                                     	// 车辆实际速度,Km/h
+        public byte                		bEventAction;                               	// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                	byReserved = new byte[2];
+        public byte                		byImageIndex;                               	// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               		dwSnapFlagMask;                             	// 抓图标志(按位),具体见  NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  	stuResolution;                              	// 对应图片的分辨率
+        public NET_GPS_INFO        		stuGPSInfo;                                     // GPS信息 
+        public byte[]                	bReserved = new byte[968];                      // 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 			// 交通车辆信息
+        public EVENT_COMM_INFO     		stCommInfo;                                 	// 公共信息
+        public VA_OBJECT_NONMOTOR		stuNonMotor;					                // 非机动车对象
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT(交通违章-闯黄灯事件)对应数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                                 	// 通道号
+        public byte[]                	szName = new byte[128];                         // 事件名称
+        public byte[]                	bReserved1 = new byte[4];                       // 字节对齐
+        public double              		PTS;                                        	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                        	// 事件发生的时间
+        public int                 		nEventID;                                   	// 事件ID
+        public int                 		nLane;                                      	// 对应车道号
+        public NET_MSG_OBJECT       	stuObject;                                  	// 车牌信息
+        public NET_MSG_OBJECT       	stuVehicle;                                 	// 车身信息
+        public NET_EVENT_FILE_INFO  	stuFileInfo;                                	// 事件对应文件信息
+        public int                 		nLightState;                                	// 红绿灯状态 0:未知 1:绿灯 2:红灯 3:黄灯
+        public int                 		nSpeed;                                     	// 车速,km/h
+        public int                 		nSequence;                                  	// 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                		bEventAction;                               	// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                	byReserved = new byte[2];
+        public byte                		byImageIndex;                               	// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               		dwSnapFlagMask;                             	// 抓图标志(按位),具体见  NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_TIME_EX         		stYellowLightUTC;                           	// 黄灯开始时间
+        public int        				nYellowLightPeriod;                         	// 黄灯周期间隔时间,单位秒
+        public NET_RESOLUTION_INFO  	stuResolution;                              	// 对应图片的分辨率
+        public byte               		byRedLightMargin;                           	// 黄灯容许间隔时间,单位:秒
+        public byte[]                	szSourceDevice = new byte[MAX_PATH];            // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 			// 交通车辆信息
+        public byte[]                	bReserved = new byte[1024];                     // 保留字节
+        public EVENT_COMM_INFO     		stCommInfo;                                 	// 公共信息
+
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_OVERYELLOWLINE(交通违章-压黄线)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nLane;                                      // 对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nSpeed;                                     // 车辆实际速度,km/h
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public int                 bIsExistAlarmRecord;                        // bool 类型: 1:有对应的报警录像; 0:无对应的报警录像
+        public int                 dwAlarmRecordSize;                          // 录像大小
+        public byte[]              szAlarmRecordPath = new byte[NET_COMMON_STRING_256]; // 录像路径
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+    	public Pointer 			   pstuImageInfo;					           // 图片信息数组 ,指正对应结构体   NET_IMAGE_INFO_EX3的数组
+    	public int				   nImageInfoNum;						       // 图片信息个数                           
+        public byte[]              bReserved = new byte[528 - POINTERSIZE];                  // 保留字节,留待扩展.
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int                 nDetectNum;                                 // 规则检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM); // 规则检测区域
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE(交通违章-黄牌车占道事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nLane;                                      // 对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nSpeed;                                     // 车辆实际速度,km/h
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte[]              bReserved = new byte[1016];                 // 保留字节,留待扩展.
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_VEHICLEINROUTE(有车占道事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nLane;                                      // 对应车道号
+        public int                 nSequence;                                  // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+        public int                 nSpeed;                                     // 车速
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 表示交通车辆的数据库记录
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved0 = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public byte[]              byReserved = new byte[884];
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_CROSSLANE(交通违章-违章变道)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_CROSSLANE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                                // 事件名称
+        public byte[]              bReserved1 = new byte[4];                              // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nLane;                                      // 对应车道号
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                nSpeed;                                     // 车辆实际速度,km/h
+        public int                 dwSnapFlagMask;                               // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[836];                   // 保留字节,留待扩展.留待扩展.
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;                // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_NOPASSING(交通违章-禁止通行事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_NOPASSING_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public int                 nTriggerType;                               // TriggerType:触发类型,0车检器,1雷达,2视频
+        public int                 PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 UTCMS;                                      //
+        public int                 nMark;                                      // 底层产生的触发抓拍帧标记
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int               dwSnapFlagMask;                               // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]              byReserved1 = new byte[3];
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 nFrameSequence;                             // 视频分析帧序号
+        public int                 nSource;                                    // 视频分析的数据源地址
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              byReserved = new byte[984];                // 保留字节
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY(斑马线行人优先事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT       stuObject;                                 // 检测到的物体
+        public NET_MSG_OBJECT       stuVehicle;                                // 车身信息
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public int                 nLane;                                      // 对应车道号
+        public double              dInitialUTC;                                // 事件初始UTC时间    UTC为事件的UTC (1970-1-1 00:00:00)秒数。
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 表示交通车辆的数据库记录
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[984];                  // 保留字节,留待扩展.
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(占用公交车道事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT       stuObject;                                 // 检测到的物体
+        public NET_MSG_OBJECT       stuVehicle;                                // 车身信息
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public int                 nLane;                                      // 对应车道号
+        public int                 nSequence;                                  // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+        public int                 nSpeed;                                     // 车速,km/h
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               dwSnapFlagMask;                               // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 表示交通车辆的数据库记录
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[980];                  // 保留字节,留待扩展.
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_BACKING(违章倒车事件)对应的数据块描述信息
+    public static class DEV_EVENT_IVS_TRAFFIC_BACKING_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT       stuObject;                                 // 检测到的物体
+        public NET_MSG_OBJECT       stuVehicle;                                // 车身信息
+        public NET_EVENT_FILE_INFO  stuFileInfo;                               // 事件对应文件信息
+        public int                 nLane;                                      // 对应车道号
+        public int                 nSequence;                                  // 抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+        public int                 nSpeed;                                     // 车速,km/h
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 表示交通车辆的数据库记录
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[848];                  // 保留字节,留待扩展.
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+    }
+
+    // GPS信息
+    public static class NET_GPS_INFO extends SdkStructure
+    {
+        public int                  nLongitude;         	    // 经度(单位是百万分之一度)
+        // 西经:0 - 180000000				实际值应为: 180*1000000 – dwLongitude
+        // 东经:180000000 - 360000000		实际值应为: dwLongitude – 180*1000000
+        // 如: 300168866应为(300168866 - 180*1000000)/1000000 即东经120.168866度
+        public int					nLatidude;                  // 纬度(单位是百万分之一度)
+        // 南纬:0 - 90000000				实际值应为: 90*1000000 – dwLatidude
+        // 北纬:90000000 – 180000000		实际值应为: dwLatidude – 90*1000000
+        // 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度
+        public double              dbAltitude;                  // 高度,单位为米
+        public double              dbSpeed;                     // 速度,单位km/H
+        public double              dbBearing;                   // 方向角,单位°
+        public byte[]              bReserved = new byte[8];     // 保留字段
+
+        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
+            int alignment = super.getNativeAlignment(type, value, isFirstElement);
+            return Math.min(4, alignment);
+        }
+
+        @Override
+        public String toString() {
+            return "NET_GPS_INFO{" +
+                    "nLongitude=" + nLongitude +
+                    ", nLatidude=" + nLatidude +
+                    ", dbAltitude=" + dbAltitude +
+                    ", dbSpeed=" + dbSpeed +
+                    ", dbBearing=" + dbBearing +
+                    '}';
+        }
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFIC_OVERSTOPLINE (压停车线事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_OVERSTOPLINE extends SdkStructure
+    {
+        public int                     nChannelID;                     // 通道号
+        public byte[]                  szName = new byte[128];         // 事件名称
+        public int                     nTriggerType;                   // TriggerType:触发类型,0车检器,1雷达,2视频
+        public int                     PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX             UTC;                            // 事件发生的时间
+        public int                     nEventID;                       // 事件ID
+        public int                     nSequence;                      // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                    byEventAction;                  // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                    byImageIndex;                   // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]                  byReserved1 = new byte[2];
+        public int                     nLane;                          // 对应车道号
+        public NET_MSG_OBJECT          stuObject;                      // 检测到的物体
+        public NET_MSG_OBJECT          stuVehicle;                     // 车身信息
+        public NET_EVENT_FILE_INFO     stuFileInfo;                    // 事件对应文件信息
+        public int                     nMark;                          // 底层产生的触发抓拍帧标记
+        public int                     nFrameSequence;                 // 视频分析帧序号
+        public int                     nSource;                        // 视频分析的数据源地址
+        public int                     dwSnapFlagMask;                 // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO     stuResolution;                  // 对应图片的分辨率
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;        // 交通车辆信息
+        public int                     nSpeed;                         // 车辆实际速度,Km/h
+        public NET_GPS_INFO            stuGPSInfo;                     // GPS信息 
+        public byte[]                  byReserved = new byte[984];    // 保留字节
+        public EVENT_COMM_INFO         stCommInfo;                     // 公共信息
+        public boolean					bHasNonMotor;					// 	stuNonMotor 字段是否有效
+        public VA_OBJECT_NONMOTOR		stuNonMotor;					// 非机动车对象
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    }
+
+    //事件类型 EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(黄网格线抓拍事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[128];                     // 事件名称
+        public byte[]              bReserved1 = new byte[8];                   // 字节对齐
+        public int                 PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+
+        public int                 nInterval1;                                 // 第二张和第一张的延时时间,单位秒
+        public int                 nInterval2;                                 // 第三张和第二张的延时时间,单位秒
+        public int                 nFollowTime;                                // 跟随时间,如果一辆车与前一辆车进入黄网格的时间差小于此值,就认为是跟车进入,跟车进入情况下如果停车则不算违章
+
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[984];                  // 保留字节
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(交通未系安全带事件事件)对应的数据块描述信息
+    public static class  DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT extends SdkStructure
+    {
+        public int                     nChannelID;                     // 通道号
+        public byte[]                  szName = new byte[128];      // 事件名称
+        public int                     nTriggerType;                   // TriggerType:触发类型,0车检器,1雷达,2视频
+        public int                     PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX             UTC;                            // 事件发生的时间
+        public int                     nEventID;                       // 事件ID
+        public int                     nSequence;                      // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                    byEventAction;                  // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;    public byte                    byReserved1[2];
+        public byte                    byImageIndex;                   // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]                  byReserved1 = new byte[2];
+        public NET_EVENT_FILE_INFO     stuFileInfo;                    // 事件对应文件信息
+        public int                     nLane;                          // 对应车道号
+        public int                     nMark;                          // 底层产生的触发抓拍帧标记
+        public int                     nFrameSequence;                 // 视频分析帧序号
+        public int                     nSource;                        // 视频分析的数据源地址
+        public NET_MSG_OBJECT          stuObject;                      // 检测到的物体
+        public NET_MSG_OBJECT          stuVehicle;                     // 车身信息
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;        // 交通车辆信息
+        public int                     nSpeed;                         // 车辆实际速度,Km/h
+        public int      				emMainSeat;                     // 主驾驶座位安全带状态   参考 NET_SAFEBELT_STATE
+        public int      				emSlaveSeat;                    // 副驾驶座位安全带状态 参考 NET_SAFEBELT_STATE
+        public int                     dwSnapFlagMask;                 // 抓图标志(按位),具体见NET_RESERVED_COMMON , 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO     stuResolution;                  // 对应图片的分辨率
+        public NET_GPS_INFO            stuGPSInfo;                     // GPS信息 
+        public byte[]                  byReserved = new byte[728];    // 保留字节
+        public EVENT_COMM_INFO         stCommInfo;                     // 公共信息
+        public byte[]                  szVideoPath = new byte[256];    // 违章关联视频FTP上传路径
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_JAM_FORBID_INTO(交通拥堵禁入事件)对应的数据块描述信息
+    public static class DEV_EVENT_ALARM_JAMFORBIDINTO_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public int                 PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEveID;                                     // 事件ID
+        ///////////////////////////////以上为公共字段//////////////////////////////
+        public NET_EVENT_FILE_INFO stuFileInfo;                               	// 事件对应文件信息
+        public int					nMark;										// 底层产生的触发抓拍帧标记
+        public int					nSource;									// 视频分析的数据源地址
+        public int					nSequence;									// 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+        public int					nFrameSequence;								// 帧序号
+        public int					nLane;										// 车道号
+        public byte                byImageIndex;                   			// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public NET_MSG_OBJECT      stuObject;                      			// 检测到的物体
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[984];                	// 保留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;                // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                     			// 公共信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+    }
+
+    //事件类型EVENT_IVS_TRAFFIC_PASSNOTINORDER(交通-未按规定依次通过)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte[]              bReserved1 = new byte[4];                   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public int                 nLane;                                      // 对应车道号
+        public NET_MSG_OBJECT      stuObject;                                  // 车牌信息
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON , 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO  stuResolution;                             // 对应图片的分辨率
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+        public byte[]              bReserved = new byte[984];                  // 保留字节
+    }
+
+    /**
+     * @author 260611
+     * @description 事件类型EVENT_IVS_TRAFFIC_MANUALSNAP(交通手动抓拍事件)对应的数据块描述信息
+     * @date 2023/01/11 15:02:23
+     */
+    public class DEV_EVENT_TRAFFIC_MANUALSNAP_INFO extends SdkStructure {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐
+         */
+        public byte[] bReserved1 = new byte[4];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public double PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX UTC = new NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 对应车道号
+         */
+        public int nLane;
+        /**
+         * 手动抓拍序号
+         */
+        public byte[] szManualSnapNo = new byte[64];
+        /**
+         * 检测到的物体
+         */
+        public NET_MSG_OBJECT stuObject = new NET_MSG_OBJECT();
+        /**
+         * 检测到的车身信息
+         */
+        public NET_MSG_OBJECT stuVehicle = new NET_MSG_OBJECT();
+        /**
+         * 表示交通车辆的数据库记录
+         */
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+        /**
+         * 事件对应文件信息
+         */
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+        /**
+         * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+         */
+        public byte bEventAction;
+        /**
+         * 开闸状态, 具体请见 EM_OPEN_STROBE_STATE
+         */
+        public byte byOpenStrobeState;
+
+        public byte[] byReserved = new byte[1];
+        /**
+         * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+         */
+        public byte byImageIndex;
+        /**
+         * 抓图标志(按位),具体见NET_RESERVED_COMMON
+         */
+        public int dwSnapFlagMask;
+        /**
+         * 对应图片的分辨率
+         */
+        public NET_RESOLUTION_INFO stuResolution = new NET_RESOLUTION_INFO();
+        /**
+         * 停车位数据信息数组实际有效大小
+         */
+        public int nParkingInfoNum;
+        /**
+         * 保留字节,留待扩展.
+         */
+        public byte[] bReserved = new byte[500];
+        /**
+         * 手动抓拍专用上报内容
+         */
+        public EVENT_MANUALSNAP_CUSTOM_DATA stuCustom = new EVENT_MANUALSNAP_CUSTOM_DATA();
+        /**
+         * 公共信息
+         */
+        public EVENT_COMM_INFO stCommInfo = new EVENT_COMM_INFO();
+        /**
+         * 停车位数据信息
+         */
+        public EVENT_MANUALSNAP_PARKING_INFO[] stuParkingInfo = new EVENT_MANUALSNAP_PARKING_INFO[32];
+        /**
+         * 事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+        public DEV_EVENT_TRAFFIC_MANUALSNAP_INFO() {
+            for (int i = 0; i < stuParkingInfo.length; i++) {
+                stuParkingInfo[i] = new EVENT_MANUALSNAP_PARKING_INFO();
+            }
+        }
+    }
+
+    // 手动抓拍专用上报内容
+    public static class EVENT_MANUALSNAP_CUSTOM_DATA extends SdkStructure
+    {
+        public EVENT_CUSTOM_WEIGHT_INFO       stuWeighInfo;                         // 称重信息
+        public byte[]                         byReserved = new byte[472];           // 保留字节
+    }
+
+    // 事件类型 EVENT_IVS_CROSSLINEDETECTION(拌线入侵事件)对应的数据块描述信息
+    public static class DEV_EVENT_CROSSLINE_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_MSG_OBJECT      stuObject;                          // 检测到的物体
+        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
+        public NET_POINT[]         DetectLine = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_LINE_NUM);// 规则检测线
+        public int                 nDetectLineNum;                     // 规则检测线顶点数
+        public NET_POINT[]         TrackLine = (NET_POINT[])new NET_POINT().toArray(NET_MAX_TRACK_LINE_NUM);   // 物体运动轨迹
+        public int                 nTrackLineNum;                      // 物体运动轨迹顶点数
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                bDirection;                         // 表示入侵方向, 0-由左至右, 1-由右至左
+        public byte[]              byReserved=new byte[1];
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                     // 抓图标志(按位),具体见  NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public int                 nSourceIndex;                       // 事件源设备上的index,-1表示数据无效,-1表示数据无效
+        public byte[]              szSourceDevice = new byte[MAX_PATH];           // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                   		   // 事件触发累计次数, 类型为unsigned int
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public NET_EXTENSION_INFO  stuExtensionInfo;                   // 扩展信息
+        public SCENE_IMAGE_INFO_EX stuSceneImage;                      // 全景广角图
+        public int                 nObjetcHumansNum;                   // 检测到人的数量
+        public NET_VAOBJECT_NUMMAN []stuObjetcHumans = (NET_VAOBJECT_NUMMAN [])new NET_VAOBJECT_NUMMAN().toArray(100);                // 检测的到人
+		
+		public int                 nRuleID;                            // 规则编号,用于标示哪个规则触发的事件,缺省时默认为0    
+		public int		           emEventType;						// 事件级别,参考EM_EVENT_LEVEL
+	    public NET_PRESET_POSITION	stPosition;							// 预置点的坐标和放大倍数
+	    public int				nVisibleHFOV;						// 可见光横向视场角,单位度 实际角度乘以100
+	    public int				nVisibleVFOV;						// 可见光纵向视场角,单位度 实际角度乘以100
+	    public int              nCurChannelHFOV;                    // 当前报警通道的横向视场角,单位度,实际角度乘以100
+	    public int              nCurChannelVFOV;                    // 当前报警通道的纵向视场角,单位度,实际角度乘以100
+	    public int			    nImageNum;							// 图片信息个数
+		public Pointer	           pImageArray;			// 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+		public int                 nCarMirrorStatus;                   // 车的后视镜状态,-1: 未知, 0: 正常, 1: 不正常(如数量缺失等)
+		public int                 nCarLightStatus;                    // 车的车灯状态,-1: 未知, 0: 正常, 1:不正常(如灯未亮等)
+		public int				   nObjectBoatsNum;					// 船只物体个数
+		public NET_BOAT_OBJECT[]   stuBoatObjects = new NET_BOAT_OBJECT[100];				// 船只物品信息
+		public int					nUpDownGoing;						// 车道/航道方向, 0:未知, 1:上行, 2:下行
+	    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+		public byte[] 				byReserved1 = new byte[452];		// 预留字节 		
+    }
+
+    /**
+     * 检测到的人信息
+     * @author 29779
+     */
+    public static class NET_VAOBJECT_NUMMAN extends SdkStructure {
+        public int                	nObjectID;                          // 物体ID,每个ID表示一个唯一的物体
+        /**
+         * @link EM_UNIFORM_STYLE 制服样式
+         */
+        public int  				emUniformStyle;
+        public NET_RECT				stuBoundingBox;                     // 包围盒,手套对象在全景图中的框坐标,为0~8191相对坐标
+        public NET_RECT				stuOriginalBoundingBox;             // 包围盒,绝对坐标
+        public byte[] 				byReserved = new byte[128];         // 预留字节
+    }
+
+    // 事件类型 EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件)对应的数据块描述信息
+    public static class DEV_EVENT_CROSSREGION_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_MSG_OBJECT      stuObject;                          // 检测到的物体
+        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM); // 规则检测区域
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_POINT[]         TrackLine = (NET_POINT[])new NET_POINT().toArray(NET_MAX_TRACK_LINE_NUM);   // 物体运动轨迹
+        public int                 nTrackLineNum;                      // 物体运动轨迹顶点数
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                bDirection;                         // 表示入侵方向, 0-进入, 1-离开,2-出现,3-消失
+        public byte                bActionType;                        // 表示检测动作类型,0-出现 1-消失 2-在区域内 3-穿越区域
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON , 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public int                 nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice = new byte[MAX_PATH];// 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int        		   nOccurrenceCount;                   // 事件触发累计次数, unsigned int 类型
+        public NET_CUSTOM_INFO     stuCustom;							// 货物通道信息
+        public NET_EXTENSION_INFO  stuExtensionInfo;                   // 扩展信息
+        public int                nRuleID;							// 智能事件规则编号,用于标示哪个规则触发的事件
+        public  NET_PRESET_POSITION	stPosition;							// 预置点的坐标和放大倍数
+        public int				nVisibleHFOV;						// 可见光横向视场角,单位度 实际角度乘以100
+        public int				nVisibleVFOV;						// 可见光纵向视场角,单位度 实际角度乘以100
+        public int                nCurChannelHFOV;                    // 当前报警通道的横向视场角,单位度,实际角度乘以100
+        public int                nCurChannelVFOV;                    // 当前报警通道的纵向视场角,单位度,实际角度乘以100
+        public byte[]                szRealEventType=new byte[32];                // 采用该字段区分是区域入侵还是事件,该字段不携带则是通用的区域入侵事件,携带则根据内容区分实际的事件类型,目前只有IllegalDumping(垃圾违规投放)
+        public byte[]              bReserved = new byte[264];          // 保留字节,留待扩展.
+        public int                 nObjectNum;                         // 检测到的物体个数
+        public NET_MSG_OBJECT[]    stuObjectIDs = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(NET_MAX_OBJECT_LIST);   // 检测到的物体
+        public int                 nTrackNum;                          // 轨迹数(与检测到的物体个数  nObjectNum 对应)
+        public NET_POLY_POINTS[]   stuTrackInfo = (NET_POLY_POINTS[]) new NET_POLY_POINTS().toArray(NET_MAX_OBJECT_LIST);   // 轨迹信息(与检测到的物体对应)
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public SCENE_IMAGE_INFO_EX         stuSceneImage;              // 全景广角图
+        public int                nObjetcHumansNum;                   // 检测到人的数量
+        public NET_VAOBJECT_NUMMAN[] stuObjetcHumans = (NET_VAOBJECT_NUMMAN[])new NET_VAOBJECT_NUMMAN().toArray(100);               // 检测的到人
+        public NET_MSG_OBJECT     stuVehicle;                                         //车身信息
+        public int                emTriggerType;                                       //触发类型,参考EM_TRIGGER_TYPE
+        public int                nMark;                                              // 标记抓拍帧
+        public int                nSource;                                            // 视频分析的数据源地址
+        public int                nFrameSequence;                                            // 视频分析帧序号
+        public int                emCaptureProcess;                                         // 抓拍过程,参考EM_CAPTURE_PROCESS_END_TYPE
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO  stTrafficCar;                   //交通车辆信息
+        public EVENT_COMM_INFO                    stuCommInfo;                    //公共信息
+        public NET_PTZSPACE_UNNORMALIZED 			stuAbsPosition;		// 云台方向与放大倍数(扩大100倍表示)
+		                                                                // 第一个元素为水平角度,0-36000;
+		                                                                // 第二个元素为垂直角度,(-18000)-(18000);
+		                                                                // 第三个元素为显示放大倍数,0-MaxZoom*100
+        public int						nHFovValue;						// 对应倍率水平视场角, 	单位0.01度, 扩大100倍表示
+        public double					dbFocusPosition;				// 聚焦位置
+        public byte[] 				byReserved = new byte[19500];         // 预留字节
+
+    }
+
+    // 事件类型 EVENT_IVS_WANDERDETECTION(徘徊事件)对应的数据块描述信息
+    public static class DEV_EVENT_WANDER_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_EVENT_FILE_INFO  stuFileInfo;                       // 事件对应文件信息
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];           // 保留字节
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nObjectNum;                         // 检测到的物体个数
+        public NET_MSG_OBJECT[]    stuObjectIDs = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(NET_MAX_OBJECT_LIST);   // 检测到的物体
+        public int                 nTrackNum;                          // 轨迹数(与检测到的物体个数对应)
+        public NET_POLY_POINTS[]   stuTrackInfo = (NET_POLY_POINTS[]) new NET_POLY_POINTS().toArray(NET_MAX_OBJECT_LIST);   // 轨迹信息(与检测到的物体对应)
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);    // 规则检测区域
+        public int                 dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON , 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public int                 nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice = new byte[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int        		   nOccurrenceCount;                   // 事件触发累计次数, unsigned int 类型
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public short               nPreserID;                          // 事件触发的预置点号,从1开始(没有表示未知)
+        public byte[]              szPresetName = new byte[64];        // 事件触发的预置名称
+        public NET_EXTENSION_INFO  stuExtensionInfo;                   // 扩展信息
+        public NET_POSTION		   stuPostion;							// 坐标与放大倍数
+        public byte[]              byReserved2=new byte[4];          // 字节对齐
+        public int				   nCurChannelHFOV;					// 当前报警通道的横向视场角,单位:度,实际角度乘以100
+    	public int				   nCurChannelVFOV;					// 当前报警通道的垂直视场角,单位:度,实际角度乘以100
+    	public NET_IMAGE_INFO_EX2[]           stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);  //图片信息数组
+    	public int					nImageInfoNum;						// 图片信息个数
+    	public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              bReserved = new byte[402];          // 保留字节,留待扩展.
+    }
+
+    //事件类型 EVENT_IVS_LEAVEDETECTION(离岗检测事件)对应数据块描述信息
+    public static class DEV_EVENT_IVS_LEAVE_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_MSG_OBJECT      stuObject;                          // 检测到的物体
+        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
+        public NET_RESOLUTION_INFO stuResolution;                      // 对应图片的分辨率
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);// 规则检测区域
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public int emTriggerMode;                                      // 离岗的触发模式,参考EM_LEAVEDETECTION_TRIGGER_MODE
+        public int emState;                                            // 检测状态,参考EM_LEAVEDETECTION_STATE
+        public int bSceneImage;                                        // stuSceneImage 是否有效
+        public SCENE_IMAGE_INFO_EX stuSceneImage;                      // 全景广角图
+        public byte[]			   szUserName= new byte[32];		   // 用户名称
+    	public Pointer             pstuImageInfo;					   // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+    	public int				   nImageInfoNum;					   // 图片信息个数
+    	public NET_EVENT_INFO_EXTEND        stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              bReserved = new byte[50];           // 保留字节
+    }
+
+    //事件类型 EVENT_IVS_AUDIO_ABNORMALDETECTION(声音异常检测)对应数据块描述信息
+    public static class DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_EVENT_FILE_INFO  stuFileInfo;                       // 事件对应文件信息
+        public int                 nDecibel;                           // 声音强度
+        public int                 nFrequency;                         // 声音频率
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                      // 对应图片的分辨率
+        public byte[]              bReserved = new byte[1024];         // 保留字节,留待扩展.
+    }
+
+    //事件类型 EVENT_IVS_CLIMBDETECTION(攀高检测事件)对应数据块描述信息
+    public static class DEV_EVENT_IVS_CLIMB_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public NET_MSG_OBJECT      stuObject;                          // 检测到的物体
+        public NET_EVENT_FILE_INFO stuFileInfo;                        // 事件对应文件信息
+        public NET_RESOLUTION_INFO stuResolution;                      // 对应图片的分辨率
+        public int                 nDetectLineNum;                     // 规则检测线顶点数
+        public NET_POINT[]         DetectLine = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_LINE_NUM);         // 规则检测线
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int        		   nOccurrenceCount;                   // 事件触发累计次数, unsigned int
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public Pointer	           pstuImageInfo;					   // 图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}     
+        public int				   nImageInfoNum;			           // 图片信息个数
+        public byte[]              bReserved = new byte[886 - POINTERSIZE];  // 保留字节
+    }
+
+    // 事件类型 EVENT_IVS_FIGHTDETECTION(斗殴事件)对应的数据块描述信息
+    public static class DEV_EVENT_FIGHT_INFO extends SdkStructure {
+        public int                 nChannelID;                         // 通道号
+        public byte[]              szName = new byte[128];             // 事件名称
+        public byte[]              bReserved1 = new byte[4];           // 字节对齐
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                 nEventID;                           // 事件ID
+        public int                 nObjectNum;                         // 检测到的物体个数
+        public NET_MSG_OBJECT[]    stuObjectIDs = (NET_MSG_OBJECT[])new NET_MSG_OBJECT().toArray(NET_MAX_OBJECT_LIST);   // 检测到的物体列表
+        public NET_EVENT_FILE_INFO  stuFileInfo;                       // 事件对应文件信息
+        public byte                bEventAction;                       // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved = new byte[2];           // 保留字节
+        public byte                byImageIndex;                       // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);    // 规则检测区域
+
+        public int                 dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public int                 nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice = new byte[MAX_PATH]; // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                   // 事件触发累计次数, unsigned int 类型
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public NET_EXTENSION_INFO  stuExtensionInfo;                   // 扩展信息
+        public byte[]              szSourceID = new byte[32];          // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+    															       // 缺省时为空字符串,表示无此信息
+    															       // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位
+    	public int                 emActionType;                       // 动作类型   ,参考枚举EM_STEREO_ACTION_TYPE
+    	public SCENE_IMAGE_INFO    stuSceneImage;                      // 全景广角图
+    	public Pointer  pstuImageInfo;					               // 图片信息数组,对应结构体NET_IMAGE_INFO_EX2的数组    
+    	public int					nImageInfoNum;					   // 图片信息个数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    	public byte[]              bReserved = new byte[240];         // 保留字节,留待扩展.
+
+    }
+
+    // 加油类型
+    public static class EM_REFUEL_TYPE extends SdkStructure {
+        public static final int 	EM_REFUEL_TYPE_UNKNOWN = 0;								// unknown
+        public static final int		EM_REFUEL_TYPE_NINETY_EIGHT = 1;						// "98#"
+        public static final int		EM_REFUEL_TYPE_NINETY_SEVEN = 2;						// "97#"
+        public static final int		EM_REFUEL_TYPE_NINETY_FIVE  = 3;						// "95#"
+        public static final int		EM_REFUEL_TYPE_NINETY_THREE = 4;                        // "93#"
+        public static final int		EM_REFUEL_TYPE_NINETY = 5;								// "90#"
+        public static final int		EM_REFUEL_TYPE_TEN 	= 6;								// "10#"
+        public static final int		EM_REFUEL_TYPE_FIVE = 7;								// "5#"
+        public static final int		EM_REFUEL_TYPE_ZERO = 8; 								// "0#"
+        public static final int		EM_REFUEL_TYPE_NEGATIVE_TEN = 9;						// "-10#"
+        public static final int		EM_REFUEL_TYPE_NEGATIVE_TWENTY = 10;					// "-20#"
+        public static final int		EM_REFUEL_TYPE_NEGATIVE_THIRTY_FIVE = 11;				// "-35#"
+        public static final int		EM_REFUEL_TYPE_NEGATIVE_FIFTY = 12;						// "-50#"
+    }
+
+    // 车辆抓拍图片信息
+    public static class DEV_EVENT_TRAFFIC_FCC_IMAGE extends SdkStructure {
+        public int              dwOffSet; // 图片文件在二进制数据块中的偏移位置, 单位:字节
+        public int              dwLength; // 图片大小, 单位:字节
+        public short            wWidth;   // 图片宽度, 单位:像素
+        public short            wHeight;  // 图片高度, 单位:像素
+    }
+
+    // 车辆抓图信息
+    public static class DEV_EVENT_TRAFFIC_FCC_OBJECT extends SdkStructure {
+        public DEV_EVENT_TRAFFIC_FCC_IMAGE	stuImage; // 车辆抓拍图片信息
+    }
+
+    // 事件类型  EVENT_IVS_TRAFFIC_FCC 加油站提枪、挂枪事件
+    public static class DEV_EVENT_TRAFFIC_FCC_INFO extends SdkStructure {
+        public int              nChannelID;                                 // 通道号
+        public byte[]           szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public int				nTriggerID;									// 触发类型: 1表示提枪, 2表示挂枪
+        public double           PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX      UTC;                                        // 事件发生的时间
+        public int              nEventID;                                   // 事件ID
+        ///////////////////////////////以上为公共字段//////////////////////////////
+
+        public int				nNum;										// 加油枪号
+        public int				nLitre;										// 加油升数,单位 0.01升
+        public int   			emType;										// 加油类型: 取值范围{"90#","93#","10#","-20#"}, 具体参考 EM_REFUEL_TYPE
+        public int				dwMoney;									// 加油金额,单位 0.01元
+        public byte[]		    szText = new byte[NET_COMMON_STRING_16];	// 车牌号
+        public byte[]			szTime = new byte[NET_COMMON_STRING_32];	// 事件发生时间: "2016-05-23 10:31:17"
+        public DEV_EVENT_TRAFFIC_FCC_OBJECT	stuObject;						// 车辆抓图信息
+        public byte[]			bReserved = new byte[1024];					// 保留字节,留待扩展
+    }
+
+    // 区域或曲线顶点信息
+    public static class NET_POLY_POINTS extends SdkStructure
+    {
+        public int         nPointNum;                               	// 顶点数
+        public NET_POINT[] stuPoints = new NET_POINT[NET_MAX_DETECT_REGION_NUM];     // 顶点信息
+
+        public NET_POLY_POINTS(){
+            for(int i=0;i<stuPoints.length;i++){
+                stuPoints[i]=new NET_POINT();
+            }
+
+        }
+
+    }
+
+    // 抓图类型
+    public static class NET_CAPTURE_FORMATS extends SdkStructure
+    {
+        public static final int    NET_CAPTURE_BMP = 0;
+        public static final int    NET_CAPTURE_JPEG  = 1;           // 100%质量的JPEG
+        public static final int    NET_CAPTURE_JPEG_70 = 2;         // 70%质量的JPEG
+        public static final int    NET_CAPTURE_JPEG_50 = 3;
+        public static final int    NET_CAPTURE_JPEG_30 = 4;
+    }
+
+    // 抓图参数结构体
+    public static class SNAP_PARAMS extends SdkStructure
+    {
+        public int     Channel;                       // 抓图的通道
+        public int     Quality;                       // 画质;1~6
+        public int     ImageSize;                     // 画面大小;0:QCIF,1:CIF,2:D1
+        public int     mode;                          // 抓图模式;-1:表示停止抓图, 0:表示请求一帧, 1:表示定时发送请求, 2:表示连续请求
+        public int     InterSnap;                     // 时间单位秒;若mode=1表示定时发送请求时
+        // 只有部分特殊设备(如:车载设备)支持通过该字段实现定时抓图时间间隔的配置
+        // 建议通过 CFG_CMD_ENCODE 配置的stuSnapFormat[nSnapMode].stuVideoFormat.nFrameRate字段实现相关功能
+        public int     CmdSerial;                     // 请求序列号,有效值范围 0~65535,超过范围会被截断为 unsigned short
+        public int[]   Reserved = new int[4];
+    }
+
+    // 对应CLIENT_StartSearchDevices接口
+    public static class DEVICE_NET_INFO_EX extends SdkStructure
+    {
+        public int 		iIPVersion;										  // 4 for IPV4, 6 for IPV6
+        public byte[] 	szIP = new byte[64];							  // IPIPV4形如"192.168.0.1"
+        public int 		nPort;											  // tcp端口
+        public byte[] 	szSubmask = new byte[64];						  // 子网掩码IPV6无子网掩码
+        public byte[] 	szGateway = new byte[64];						  // 网关
+        public byte[] 	szMac = new byte[NET_MACADDR_LEN];				  // MAC地址
+        public byte[] 	szDeviceType = new byte[NET_DEV_TYPE_LEN];		  // 设备类型
+        public byte 	byManuFactory; 									  // 目标设备的生产厂商,具体参考EM_IPC_TYPE类
+        public byte 	byDefinition;									  // 1-标清2-高清
+        public byte 	bDhcpEn;										  // Dhcp使能状态,true-开,false-关, 类型为bool, 取值0或者1
+        public byte 	byReserved1;									  // 字节对齐
+        public byte[] 	verifyData = new byte[88];						  // 校验数据通过异步搜索回调获取(在修改设备IP时会用此信息进行校验)
+        public byte[] 	szSerialNo = new byte[NET_DEV_SERIALNO_LEN];	  // 序列号
+        public byte[] 	szDevSoftVersion = new byte[NET_MAX_URL_LEN];	  // 设备软件版本号
+        public byte[] 	szDetailType = new byte[NET_DEV_TYPE_LEN];		  // 设备型号
+        public byte[] 	szVendor = new byte[NET_MAX_STRING_LEN];		  // OEM客户类型
+        public byte[] 	szDevName = new byte[NET_MACHINE_NAME_NUM];		  // 设备名称
+        public byte[] 	szUserName = new byte[NET_USER_NAME_LENGTH_EX];	  // 登陆设备用户名(在修改设备IP时需要填写)
+        public byte[] 	szPassWord = new byte[NET_USER_NAME_LENGTH_EX];	  // 登陆设备密码(在修改设备IP时需要填写)
+        public short 	nHttpPort;										  // HTTP服务端口号, unsigned short类型
+        public short 	wVideoInputCh;									  // 视频输入通道数
+        public short 	wRemoteVideoInputCh;							  // 远程视频输入通道数
+        public short 	wVideoOutputCh;									  // 视频输出通道数
+        public short 	wAlarmInputCh;									  // 报警输入通道数
+        public short 	wAlarmOutputCh;									  // 报警输出通道数
+        public int   	bNewWordLen;                                      // TRUE使用新密码字段szNewPassWord, BOOL类型
+        public byte[]   szNewPassWord = new byte[NET_COMMON_STRING_64];   // 登陆设备密码(在修改设备IP时需要填写)
+
+        public byte		byInitStatus;							          // 设备初始化状态,按位确定初始化状态
+        // bit0~1:0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户
+        // bit2~3:0-老设备,保留 1-公网接入未使能 2-公网接入已使能
+        // bit4~5:0-老设备,保留 1-手机直连未使能 2-手机直连使能
+
+        public byte		byPwdResetWay;							 		  // 支持密码重置方式:按位确定密码重置方式,只在设备有初始化账号时有意义
+        // bit0-支持预置手机号 bit1-支持预置邮箱 bit2-支持文件导出
+        public byte		bySpecialAbility;								  // 设备初始化能力,按位确定初始化能力
+        public byte[]   szNewDetailType = new byte[NET_COMMON_STRING_64]; // 设备型号
+        public int		bNewUserName;									  // TRUE表示使用新用户名(szNewUserName)字段. BOOL类型
+        public byte[]	szNewUserName = new byte[NET_COMMON_STRING_64];	  // 登陆设备用户名(在修改设备IP时需要填写)
+        public byte            byPwdFindVersion;                       // 密码找回的版本号,设备支持密码重置时有效;
+        // 0-设备使用的是老方案的密码重置版本;1-支持预留联系方式进行密码重置操作;
+        // 2-支持更换联系方式进行密码重置操作;
+        public byte[]          szDeviceID=new byte[24]; // 字段, 不作为通用协议,不对接通用客户端
+        public int             dwUnLoginFuncMask;                      // 未登陆功能掩码
+        // Bit0-Wifi列表扫描及WLan设置
+        // Bit1-支持会话外修改过期密码
+        // Bit2-设备是否支持串口日志重定向(提前引导功能)
+        public byte[]           szMachineGroup=new byte[64];                     // 设备分组
+        public byte[]           cReserved=new byte[12];                          // 扩展字段
+    }
+
+    // 视频输入通道信息
+    public static class NET_VIDEO_INPUTS extends SdkStructure {
+        public int                      dwSize;
+        public byte[]                   szChnName = new byte[64];                   // 通道名称
+        public int                      bEnable;                                    // 使能
+        public byte[]                   szControlID = new byte[128];                // 控制ID
+        public byte[]                   szMainStreamUrl = new byte[MAX_PATH];       // 主码流url地址
+        public byte[]                   szExtraStreamUrl = new byte[MAX_PATH];      // 辅码流url地址
+        public int                      nOptionalMainUrlCount;                      // 备用主码流地址数量
+        public byte[]                   szOptionalMainUrls = new byte[8*MAX_PATH];  // 备用主码流地址列表
+        public int                      nOptionalExtraUrlCount;                     // 备用辅码流地址数量
+        public byte[]                   szOptionalExtraUrls = new byte[8*MAX_PATH]; // 备用辅码流地址列表
+        public byte[]                   szCaption=new byte[32];                     // 通道备注
+        public int                      emServiceType;                              // 指码流传输的服务类型,参考EM_STREAM_TRANSMISSION_SERVICE_TYPE
+        public NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt;                    // 码流加密方式
+
+        public NET_VIDEO_INPUTS()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 远程设备信息
+    public static class NET_REMOTE_DEVICE extends SdkStructure {
+        public int                       dwSize;
+        public int                       bEnable;                          // 使能,1-true   0-false
+        public byte[]                    szIp =  new byte[16];             // IP
+        public byte[]                    szUser = new byte[8];             // 用户名, 建议使用szUserEx
+        public byte[]                    szPwd = new byte[8];              // 密码, 建议使用szPwdEx
+        public int                       nPort;                            // 端口
+        public int                       nDefinition;                      // 清晰度, 0-标清, 1-高清
+        public int                       emProtocol;                       // 协议类型  NET_DEVICE_PROTOCOL
+        public byte[]                    szDevName = new byte[64];         // 设备名称
+        public int                       nVideoInputChannels;              // 视频输入通道数
+        public int                       nAudioInputChannels;              // 音频输入通道数
+        public byte[]                    szDevClass = new byte[32];        // 设备类型, 如IPC, DVR, NVR等
+        public byte[]                    szDevType = new byte[32];         // 设备具体型号, 如IPC-HF3300
+        public int                       nHttpPort;                        // Http端口
+        public int                       nMaxVideoInputCount;              // 视频输入通道最大数
+        public int                       nRetVideoInputCount;              // 返回实际通道个数
+        public Pointer                   pstuVideoInputs;                  // 视频输入通道信息 NET_VIDEO_INPUTS*
+        public byte[]                    szMachineAddress = new byte[256]; // 设备部署地
+        public byte[]                    szSerialNo = new byte[48];        // 设备序列号
+        public int                       nRtspPort;                        // Rtsp端口
+
+        /*以下用于新平台扩展*/
+        public byte[]                    szUserEx = new byte[32];          // 用户名
+        public byte[]                    szPwdEx = new byte[32];           // 密码
+        public byte[] 				szVendorAbbr=new byte[NET_COMMON_STRING_32];		// 厂商缩写
+        public byte[]              szSoftwareVersion=new byte[NET_COMMON_STRING_64];         // 设备软件版本
+        public NET_TIME         stuActivationTime;                      // 启动时间
+        public byte[]             szMac=new byte[NET_COMMON_STRING_32];           // MAC地址
+
+        public NET_REMOTE_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 可用的显示源信息
+    public static class NET_MATRIX_CAMERA_INFO extends SdkStructure
+    {
+        public int                      dwSize;
+        public byte[]                   szName = new byte[128];          // 名称
+        public byte[]                   szDevID = new byte[128];         // 设备ID
+        public byte[]                   szszControlID = new byte[128];   // 控制ID
+        public int                      nChannelID;                        // 通道号, DeviceID设备内唯一
+        public int                      nUniqueChannel;                    // 设备内统一编号的唯一通道号
+        public int                      bRemoteDevice;                     // 是否远程设备
+        public NET_REMOTE_DEVICE        stuRemoteDevice;                   // 远程设备信息
+        public int                      emStreamType;                      // 视频码流类型  NET_STREAM_TYPE
+        public int                      emChannelType;                     // 通道类型应 NET_LOGIC_CHN_TYPE
+        public boolean				    bEnable;							// 仅在使用DeviceID添加/删除设备时的使能,通过DeviceInfo操作不要使用
+        public int		                emVideoStream;					// 视频码流,参考EM_VIDEO_STREAM
+
+        public NET_MATRIX_CAMERA_INFO() {
+            this.dwSize = this.size();
+            stuRemoteDevice = new NET_REMOTE_DEVICE();
+        }
+    }
+
+    // CLIENT_MatrixGetCameras接口的输入参数
+    public static class NET_IN_MATRIX_GET_CAMERAS extends SdkStructure {
+        public int dwSize;
+
+        public NET_IN_MATRIX_GET_CAMERAS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_MatrixGetCameras接口的输出参数
+    public static class NET_OUT_MATRIX_GET_CAMERAS extends SdkStructure {
+        public int                        dwSize;
+        public Pointer                    pstuCameras;            // 显示源信息数组, 用户分配内存  NET_MATRIX_CAMERA_INFO
+        public int                        nMaxCameraCount;        // 显示源数组大小
+        public int                        nRetCameraCount;        // 返回的显示源数量
+
+        public NET_OUT_MATRIX_GET_CAMERAS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SnapPictureToFile 接口输入参数
+    public static class NET_IN_SNAP_PIC_TO_FILE_PARAM extends SdkStructure {
+        public int                         dwSize;                    // 结构体大小
+        public SNAP_PARAMS                 stuParam;                  // 抓图参数, 其中mode字段仅一次性抓图, 不支持定时或持续抓图; 除了车载DVR, 其他设备仅支持每秒一张的抓图频率
+
+        public byte[]                      szFilePath = new byte[MAX_PATH];// 写入文件的地址
+
+        public NET_IN_SNAP_PIC_TO_FILE_PARAM() {
+            this.dwSize = this.size();
+            this.stuParam = new SNAP_PARAMS();
+        }
+    }
+
+    //  CLIENT_SnapPictureToFile 接口输出参数
+    public static class NET_OUT_SNAP_PIC_TO_FILE_PARAM extends SdkStructure {
+        public int                        dwSize;
+        public Pointer                    szPicBuf;               // 图片内容,用户分配内存
+        public int                        dwPicBufLen;            // 图片内容内存大小, 单位:字节
+        public int                        dwPicBufRetLen;         // 返回的图片大小, 单位:字节
+
+        public NET_OUT_SNAP_PIC_TO_FILE_PARAM() {
+            this.dwSize = this.size();
+        }
+
+        public NET_OUT_SNAP_PIC_TO_FILE_PARAM(int nMaxBuf) {
+            this.dwSize = this.size();
+            this.dwPicBufLen = nMaxBuf;
+            Memory mem = new Memory(nMaxBuf);
+            mem.clear();
+            this.szPicBuf = mem;
+        }
+    }
+
+    // 录像文件信息
+    public static class NET_RECORDFILE_INFO extends SdkStructure {
+        public int                        ch;                         // 通道号
+        public byte[]                     filename = new byte[124];   // 文件名
+        public int                        framenum;                   // 文件总帧数
+        public int                        size;                       // 文件长度
+        public NET_TIME                   starttime = new NET_TIME(); // 开始时间
+        public NET_TIME                   endtime = new NET_TIME();   // 结束时间
+        public int                        driveno;                    // 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像)
+        public int                        startcluster;               // 起始簇号
+        public byte                       nRecordFileType;            // 录象文件类型  0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片, 5: 智能录像,255:所有录像
+        public byte                       bImportantRecID;            // 0:普通录像 1:重要录像
+        public byte                       bHint;                      // 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 )
+        public byte                       bRecType;                   // 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像
+
+        public static class ByValue extends NET_RECORDFILE_INFO implements SdkStructure.ByValue { }
+    }
+
+    // 录像查询类型
+    public static class EM_QUERY_RECORD_TYPE extends SdkStructure {
+        public static final int            EM_RECORD_TYPE_ALL              = 0;            // 所有录像
+        public static final int            EM_RECORD_TYPE_ALARM            = 1;            // 外部报警录像
+        public static final int            EM_RECORD_TYPE_MOTION_DETECT    = 2;            // 动态检测报警录像
+        public static final int            EM_RECORD_TYPE_ALARM_ALL        = 3;            // 所有报警录像
+        public static final int            EM_RECORD_TYPE_CARD             = 4;            // 卡号查询
+        public static final int            EM_RECORD_TYPE_CONDITION        = 5;            // 按条件查询
+        public static final int            EM_RECORD_TYPE_JOIN             = 6;            // 组合查询
+        public static final int            EM_RECORD_TYPE_CARD_PICTURE     = 8;            // 按卡号查询图片,HB-U、NVS等使用
+        public static final int            EM_RECORD_TYPE_PICTURE          = 9;            // 查询图片,HB-U、NVS等使用
+        public static final int            EM_RECORD_TYPE_FIELD            = 10;           // 按字段查询
+        public static final int            EM_RECORD_TYPE_INTELLI_VIDEO    = 11;           // 智能录像查询
+        public static final int            EM_RECORD_TYPE_NET_DATA         = 15;           // 查询网络数据,金桥网吧等使用
+        public static final int            EM_RECORD_TYPE_TRANS_DATA       = 16;           // 查询透明串口数据录像
+        public static final int            EM_RECORD_TYPE_IMPORTANT        = 17;           // 查询重要录像
+        public static final int            EM_RECORD_TYPE_TALK_DATA        = 18;           // 查询录音文件
+
+        public static final int            EM_RECORD_TYPE_INVALID          = 256;          // 无效的查询类型
+    }
+
+    // 语言种类
+    public static class NET_LANGUAGE_TYPE extends SdkStructure
+    {
+        public static final int NET_LANGUAGE_ENGLISH = 0; //英文
+        public static final int NET_LANGUAGE_CHINESE_SIMPLIFIED = NET_LANGUAGE_ENGLISH+1; //简体中文
+        public static final int NET_LANGUAGE_CHINESE_TRADITIONAL = NET_LANGUAGE_CHINESE_SIMPLIFIED+1; //繁体中文
+        public static final int NET_LANGUAGE_ITALIAN = NET_LANGUAGE_CHINESE_TRADITIONAL+1; //意大利文
+        public static final int NET_LANGUAGE_SPANISH = NET_LANGUAGE_ITALIAN+1; //西班牙文
+        public static final int NET_LANGUAGE_JAPANESE = NET_LANGUAGE_SPANISH+1; //日文版
+        public static final int NET_LANGUAGE_RUSSIAN = NET_LANGUAGE_JAPANESE+1; //俄文版
+        public static final int NET_LANGUAGE_FRENCH = NET_LANGUAGE_RUSSIAN+1; //法文版
+        public static final int NET_LANGUAGE_GERMAN = NET_LANGUAGE_FRENCH+1; //德文版
+        public static final int NET_LANGUAGE_PORTUGUESE = NET_LANGUAGE_GERMAN+1; //葡萄牙语
+        public static final int NET_LANGUAGE_TURKEY = NET_LANGUAGE_PORTUGUESE+1; //土尔其语
+        public static final int NET_LANGUAGE_POLISH = NET_LANGUAGE_TURKEY+1; //波兰语
+        public static final int NET_LANGUAGE_ROMANIAN = NET_LANGUAGE_POLISH+1; //罗马尼亚
+        public static final int NET_LANGUAGE_HUNGARIAN = NET_LANGUAGE_ROMANIAN+1; //匈牙利语
+        public static final int NET_LANGUAGE_FINNISH = NET_LANGUAGE_HUNGARIAN+1; //芬兰语
+        public static final int NET_LANGUAGE_ESTONIAN = NET_LANGUAGE_FINNISH+1; //爱沙尼亚语
+        public static final int NET_LANGUAGE_KOREAN = NET_LANGUAGE_ESTONIAN+1; //韩语
+        public static final int NET_LANGUAGE_FARSI = NET_LANGUAGE_KOREAN+1; //波斯语
+        public static final int NET_LANGUAGE_DANSK = NET_LANGUAGE_FARSI+1; //丹麦语
+        public static final int NET_LANGUAGE_CZECHISH = NET_LANGUAGE_DANSK+1; //捷克文
+        public static final int NET_LANGUAGE_BULGARIA = NET_LANGUAGE_CZECHISH+1; //保加利亚文
+        public static final int NET_LANGUAGE_SLOVAKIAN = NET_LANGUAGE_BULGARIA+1; //斯洛伐克语
+        public static final int NET_LANGUAGE_SLOVENIA = NET_LANGUAGE_SLOVAKIAN+1; //斯洛文尼亚文
+        public static final int NET_LANGUAGE_CROATIAN = NET_LANGUAGE_SLOVENIA+1; //克罗地亚语
+        public static final int NET_LANGUAGE_DUTCH = NET_LANGUAGE_CROATIAN+1; //荷兰语
+        public static final int NET_LANGUAGE_GREEK = NET_LANGUAGE_DUTCH+1; //希腊语
+        public static final int NET_LANGUAGE_UKRAINIAN = NET_LANGUAGE_GREEK+1; //乌克兰语
+        public static final int NET_LANGUAGE_SWEDISH = NET_LANGUAGE_UKRAINIAN+1; //瑞典语
+        public static final int NET_LANGUAGE_SERBIAN = NET_LANGUAGE_SWEDISH+1; //塞尔维亚语
+        public static final int NET_LANGUAGE_VIETNAMESE = NET_LANGUAGE_SERBIAN+1; //越南语
+        public static final int NET_LANGUAGE_LITHUANIAN = NET_LANGUAGE_VIETNAMESE+1; //立陶宛语
+        public static final int NET_LANGUAGE_FILIPINO = NET_LANGUAGE_LITHUANIAN+1; //菲律宾语
+        public static final int NET_LANGUAGE_ARABIC = NET_LANGUAGE_FILIPINO+1; //阿拉伯语
+        public static final int NET_LANGUAGE_CATALAN = NET_LANGUAGE_ARABIC+1; //加泰罗尼亚语
+        public static final int NET_LANGUAGE_LATVIAN = NET_LANGUAGE_CATALAN+1; //拉脱维亚语
+        public static final int NET_LANGUAGE_THAI = NET_LANGUAGE_LATVIAN+1; //泰语
+        public static final int NET_LANGUAGE_HEBREW = NET_LANGUAGE_THAI+1; //希伯来语
+        public static final int NET_LANGUAGE_Bosnian = NET_LANGUAGE_HEBREW+1; //波斯尼亚文
+    }
+
+    // 区域信息
+    public static class CFG_RECT extends SdkStructure
+    {
+        public int nLeft;
+        public int nTop;
+        public int nRight;
+        public int nBottom;
+    }
+
+    // 视频输入夜晚特殊配置选项,在晚上光线较暗时自动切换到夜晚的配置参数
+    public static class CFG_VIDEO_IN_NIGHT_OPTIONS extends SdkStructure
+    {
+        public byte bySwitchMode;//已废弃,使用CFG_VIDEO_IN_OPTIONS里面的bySwitchMode
+        //0-不切换,总是使用白天配置;1-根据亮度切换;2-根据时间切换;3-不切换,总是使用夜晚配置;4-使用普通配置
+        public byte byProfile;//当前使用的配置文件.
+        // 0-白天
+        // 1-晚上
+        // 2-Normal
+        // 0,1,2都为临时配置,使图像生效,便于查看图像调试效果,不点击确定,离开页面不保存至设备。
+        ///3-非临时配置,点击确定后保存至设备,与SwitchMode结合使用,根据SwitchMode决定最终生效的配置。
+        // SwitchMode=0,Profile=3,设置白天配置到设备;
+        // SwitchMode=1,Profile=3,则设置夜晚配置到设备
+        // SwitchMode=2,Profile=3,根据日出日落时间段切换,白天时间段使用白天配置,夜晚时间段使用夜晚配置,保存至设备;
+        // SwitchMode=4,Profile=3;使用普通配置,保存至设备
+        public byte byBrightnessThreshold;//亮度阈值0~100
+        public byte bySunriseHour;//大致日出和日落时间,日落之后日出之前,将采用夜晚特殊的配置。
+        public byte bySunriseMinute;//00:00:00 ~ 23:59:59
+        public byte bySunriseSecond;
+        public byte bySunsetHour;
+        public byte bySunsetMinute;
+        public byte bySunsetSecond;
+        public byte byGainRed;//红色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainBlue;//绿色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainGreen;//蓝色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byExposure;//曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数n带时间上下限的自动曝光n+1自定义时间手动曝光 (n==byExposureEn)
+        public float fExposureValue1;//自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
+        public float fExposureValue2;//自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
+        public byte byWhiteBalance;//白平衡,0-"unAble", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
+        public byte byGain;//0~100,GainAuto为true时表示自动增益的上限,否则表示固定的增益值
+        public byte bGainAuto;//自动增益, 类型为bool, 取值0或1
+        public byte bIrisAuto;//自动光圈, 类型为bool, 取值0或1
+        public float fExternalSyncPhase;//外同步的相位设置0~360
+        public byte byGainMin;//增益下限
+        public byte byGainMax;//增益上限
+        public byte byBacklight;//背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
+        public byte byAntiFlicker;//防闪烁模式0-Outdoor1-50Hz防闪烁 2-60Hz防闪烁
+        public byte byDayNightColor;//日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
+        public byte byExposureMode;//曝光模式调节曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先
+        public byte byRotate90;//0-不旋转,1-顺时针90°,2-逆时针90°
+        public byte bMirror;//镜像, 类型为bool, 取值0或1
+        public byte byWideDynamicRange;//宽动态值0-关闭,1~100-为真实范围值
+        public byte byGlareInhibition;//强光抑制0-关闭,1~100为范围值
+        public CFG_RECT stuBacklightRegion = new CFG_RECT();//背光补偿区域
+        public byte byFocusMode;//0-关闭,1-辅助聚焦,2-自动聚焦
+        public byte bFlip;//翻转, 类型为bool, 取值0或1
+        public byte[] reserved = new byte[74];//保留
+    }
+
+    // 闪光灯配置
+    public static class CFG_FLASH_CONTROL extends SdkStructure
+    {
+        public byte byMode;//工作模式,0-禁止闪光,1-始终闪光,2-自动闪光
+        public byte byValue;//工作值,0-0us,1-64us, 2-128us, 3-192...15-960us
+        public byte byPole;//触发模式,0-低电平1-高电平 2-上升沿 3-下降沿
+        public byte byPreValue;//亮度预设值区间0~100
+        public byte byDutyCycle;//占空比,0~100
+        public byte byFreqMultiple;//倍频,0~10
+        public byte[] reserved = new byte[122];//保留
+    }
+
+    // 抓拍参数特殊配置
+    public static class CFG_VIDEO_IN_SNAPSHOT_OPTIONS extends SdkStructure
+    {
+        public byte byGainRed;//红色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainBlue;//绿色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainGreen;//蓝色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byExposure;//曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数n带时间上下限的自动曝光n+1自定义时间手动曝光 (n==byExposureEn)
+        public float fExposureValue1;//自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
+        public float fExposureValue2;//自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
+        public byte byWhiteBalance;//白平衡,0-"unAble", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
+        public byte byColorTemperature;//色温等级,白平衡为"CustomColorTemperature"模式下有效
+        public byte bGainAuto;//自动增益, 类型为bool, 取值0或1
+        public byte byGain;//增益调节,GainAuto为true时表示自动增益的上限,否则表示固定的增益值
+        public byte[] reversed = new byte[112];//保留
+    }
+
+    // 鱼眼镜头配置
+    public static class CFG_FISH_EYE extends SdkStructure
+    {
+        public CFG_POLYGON stuCenterPoint;//鱼眼圆心坐标,范围[0,8192]
+        public int nRadius;//鱼眼半径大小,范围[0,8192], 类型为unsigned int
+        public float fDirection;//镜头旋转方向,旋转角度[0,360.0]
+        public byte byPlaceHolder;//镜头安装方式1顶装,2壁装;3地装,默认1
+        public byte byCalibrateMode;//鱼眼矫正模式,详见CFG_CALIBRATE_MODE枚举值
+        public byte[] reversed = new byte[31];//保留
+    }
+
+    public static class CFG_VIDEO_IN_NORMAL_OPTIONS extends SdkStructure
+    {
+        public byte byGainRed;//红色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainBlue;//绿色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainGreen;//蓝色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byExposure;//曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数n带时间上下限的自动曝光n+1自定义时间手动曝光 (n==byExposureEn)
+        public float fExposureValue1;//自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
+        public float fExposureValue2;//自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
+        public byte byWhiteBalance;//白平衡,0-"unAble", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
+        public byte byGain;//0~100,GainAuto为true时表示自动增益的上限,否则表示固定的增益值
+        public byte bGainAuto;//自动增益, 类型为bool, 取值0或1
+        public byte bIrisAuto;//自动光圈, 类型为bool, 取值0或1
+        public float fExternalSyncPhase;//外同步的相位设置0~360
+        public byte byGainMin;//增益下限
+        public byte byGainMax;//增益上限
+        public byte byBacklight;//背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
+        public byte byAntiFlicker;//防闪烁模式0-Outdoor1-50Hz防闪烁 2-60Hz防闪烁
+        public byte byDayNightColor;//日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
+        public byte byExposureMode;//曝光模式调节曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先
+        public byte byRotate90;//0-不旋转,1-顺时针90°,2-逆时针90°
+        public byte bMirror;//镜像, 类型为bool, 取值0或1
+        public byte byWideDynamicRange;//宽动态值0-关闭,1~100-为真实范围值
+        public byte byGlareInhibition;//强光抑制0-关闭,1~100为范围值
+        public CFG_RECT stuBacklightRegion;//背光补偿区域
+        public byte byFocusMode;//0-关闭,1-辅助聚焦,2-自动聚焦
+        public byte bFlip;//翻转, 类型为bool, 取值0或1
+        public byte[] reserved = new byte[74];//保留
+    }
+
+    // 视频输入前端选项
+    public static class CFG_VIDEO_IN_OPTIONS extends SdkStructure
+    {
+        public byte byBacklight;//背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
+        public byte byDayNightColor;//日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
+        public byte byWhiteBalance;//白平衡,0-"unAble", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
+        public byte byColorTemperature;//色温等级,白平衡为"CustomColorTemperature"模式下有效
+        public byte bMirror;//镜像, 类型为bool, 取值0或1
+        public byte bFlip;//翻转, 类型为bool, 取值0或1
+        public byte bIrisAuto;//自动光圈, 类型为bool, 取值0或1
+        public byte bInfraRed;//根据环境光自动开启红外补偿灯, 类型为bool, 取值0或1
+        public byte byGainRed;//红色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainBlue;//绿色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byGainGreen;//蓝色增益调节,白平衡为"Custom"模式下有效0~100
+        public byte byExposure;//曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数n带时间上下限的自动曝光n+1自定义时间手动曝光 (n==byExposureEn)
+        public float fExposureValue1;//自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
+        public float fExposureValue2;//自动曝光时间上限,毫秒为单位,取值0.1ms~80ms
+        public byte bGainAuto;//自动增益, 类型为bool, 取值0或1
+        public byte byGain;//增益调节,GainAuto为true时表示自动增益的上限,否则表示固定的增益值
+        public byte bySignalFormat;//信号格式,0-Inside(内部输入)1-BT656 2-720p 3-1080p  4-1080i  5-1080sF
+        public byte byRotate90;//0-不旋转,1-顺时针90°,2-逆时针90°
+        public float fExternalSyncPhase;//外同步的相位设置 0~360
+        public byte byExternalSync;//外部同步信号输入,0-内部同步 1-外部同步
+        public byte bySwitchMode;//0-不切换,总是使用白天配置;1-根据亮度切换;2-根据时间切换;3-不切换,总是使用夜晚配置;4-使用普通配置
+        public byte byDoubleExposure;//双快门,0-不启用,1-双快门全帧率,即图像和视频只有快门参数不同,2-双快门半帧率,即图像和视频快门及白平衡参数均不同
+        public byte byWideDynamicRange;//宽动态值
+        public CFG_VIDEO_IN_NIGHT_OPTIONS stuNightOptions;//夜晚参数
+        public CFG_FLASH_CONTROL stuFlash;//闪光灯配置
+        public CFG_VIDEO_IN_SNAPSHOT_OPTIONS stuSnapshot;//抓拍参数,双快门时有效
+        public CFG_FISH_EYE stuFishEye;//鱼眼镜头
+        public byte byFocusMode;//0-关闭,1-辅助聚焦,2-自动聚焦
+        public byte[] reserved = new byte[28];//保留
+        public byte byGainMin;//增益下限
+        public byte byGainMax;//增益上限
+        public byte byAntiFlicker;//防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
+        public byte byExposureMode;//曝光模式调节曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先,4-手动
+        public byte byGlareInhibition;//强光抑制0-关闭,1~100为范围值
+        public CFG_RECT stuBacklightRegion;//背光补偿区域
+        public CFG_VIDEO_IN_NORMAL_OPTIONS stuNormalOptions;//普通参数
+    }
+
+    // 通用云台控制命令
+    public static class NET_PTZ_ControlType extends SdkStructure
+    {
+        public static final int NET_PTZ_UP_CONTROL = 0;//上
+        public static final int NET_PTZ_DOWN_CONTROL = NET_PTZ_UP_CONTROL+1; //下
+        public static final int NET_PTZ_LEFT_CONTROL = NET_PTZ_DOWN_CONTROL+1; //左
+        public static final int NET_PTZ_RIGHT_CONTROL = NET_PTZ_LEFT_CONTROL+1; //右
+        public static final int NET_PTZ_ZOOM_ADD_CONTROL = NET_PTZ_RIGHT_CONTROL+1; //变倍+
+        public static final int NET_PTZ_ZOOM_DEC_CONTROL = NET_PTZ_ZOOM_ADD_CONTROL+1; //变倍-
+        public static final int NET_PTZ_FOCUS_ADD_CONTROL = NET_PTZ_ZOOM_DEC_CONTROL+1; //调焦+
+        public static final int NET_PTZ_FOCUS_DEC_CONTROL = NET_PTZ_FOCUS_ADD_CONTROL+1; //调焦-
+        public static final int NET_PTZ_APERTURE_ADD_CONTROL = NET_PTZ_FOCUS_DEC_CONTROL+1; //光圈+
+        public static final int NET_PTZ_APERTURE_DEC_CONTROL = NET_PTZ_APERTURE_ADD_CONTROL+1; //光圈-
+        public static final int NET_PTZ_POINT_MOVE_CONTROL = NET_PTZ_APERTURE_DEC_CONTROL+1; //转至预置点
+        public static final int NET_PTZ_POINT_SET_CONTROL = NET_PTZ_POINT_MOVE_CONTROL+1; //设置
+        public static final int NET_PTZ_POINT_DEL_CONTROL = NET_PTZ_POINT_SET_CONTROL+1; //删除
+        public static final int NET_PTZ_POINT_LOOP_CONTROL = NET_PTZ_POINT_DEL_CONTROL+1; //点间巡航
+        public static final int NET_PTZ_LAMP_CONTROL = NET_PTZ_POINT_LOOP_CONTROL+1; //灯光雨刷
+    }
+
+    // 云台控制扩展命令
+    public static class NET_EXTPTZ_ControlType extends SdkStructure
+    {
+        public static final int NET_EXTPTZ_LEFTTOP = 0x20;//左上
+        public static final int NET_EXTPTZ_RIGHTTOP = NET_EXTPTZ_LEFTTOP+1; //右上
+        public static final int NET_EXTPTZ_LEFTDOWN = NET_EXTPTZ_RIGHTTOP+1; //左下
+        public static final int NET_EXTPTZ_RIGHTDOWN = NET_EXTPTZ_LEFTDOWN+1; //右下
+        public static final int NET_EXTPTZ_ADDTOLOOP = NET_EXTPTZ_RIGHTDOWN+1; //加入预置点到巡航巡航线路预置点值
+        public static final int NET_EXTPTZ_DELFROMLOOP = NET_EXTPTZ_ADDTOLOOP+1; //删除巡航中预置点巡航线路预置点值
+        public static final int NET_EXTPTZ_CLOSELOOP = NET_EXTPTZ_DELFROMLOOP+1; //清除巡航巡航线路
+        public static final int NET_EXTPTZ_STARTPANCRUISE = NET_EXTPTZ_CLOSELOOP+1; //开始水平旋转
+        public static final int NET_EXTPTZ_STOPPANCRUISE = NET_EXTPTZ_STARTPANCRUISE+1; //停止水平旋转
+        public static final int NET_EXTPTZ_SETLEFTBORDER = NET_EXTPTZ_STOPPANCRUISE+1; //设置左边界
+        public static final int NET_EXTPTZ_SETRIGHTBORDER = NET_EXTPTZ_SETLEFTBORDER+1; //设置右边界
+        public static final int NET_EXTPTZ_STARTLINESCAN = NET_EXTPTZ_SETRIGHTBORDER+1; //开始线扫
+        public static final int NET_EXTPTZ_CLOSELINESCAN = NET_EXTPTZ_STARTLINESCAN+1; //停止线扫
+        public static final int NET_EXTPTZ_SETMODESTART = NET_EXTPTZ_CLOSELINESCAN+1; //设置模式开始模式线路
+        public static final int NET_EXTPTZ_SETMODESTOP = NET_EXTPTZ_SETMODESTART+1; //设置模式结束模式线路
+        public static final int NET_EXTPTZ_RUNMODE = NET_EXTPTZ_SETMODESTOP+1; //运行模式模式线路
+        public static final int NET_EXTPTZ_STOPMODE = NET_EXTPTZ_RUNMODE+1; //停止模式模式线路
+        public static final int NET_EXTPTZ_DELETEMODE = NET_EXTPTZ_STOPMODE+1; //清除模式模式线路
+        public static final int NET_EXTPTZ_REVERSECOMM = NET_EXTPTZ_DELETEMODE+1; //翻转命令
+        public static final int NET_EXTPTZ_FASTGOTO = NET_EXTPTZ_REVERSECOMM+1; //快速定位水平坐标(8192)垂直坐标(8192)变倍(4)
+        public static final int NET_EXTPTZ_AUXIOPEN = NET_EXTPTZ_FASTGOTO+1; //辅助开关开辅助点
+        public static final int NET_EXTPTZ_AUXICLOSE = NET_EXTPTZ_AUXIOPEN+1; //辅助开关关辅助点
+        public static final int NET_EXTPTZ_OPENMENU = 0x36;//打开球机菜单
+        public static final int NET_EXTPTZ_CLOSEMENU = NET_EXTPTZ_OPENMENU+1; //关闭菜单
+        public static final int NET_EXTPTZ_MENUOK = NET_EXTPTZ_CLOSEMENU+1; //菜单确定
+        public static final int NET_EXTPTZ_MENUCANCEL = NET_EXTPTZ_MENUOK+1; //菜单取消
+        public static final int NET_EXTPTZ_MENUUP = NET_EXTPTZ_MENUCANCEL+1; //菜单上
+        public static final int NET_EXTPTZ_MENUDOWN = NET_EXTPTZ_MENUUP+1; //菜单下
+        public static final int NET_EXTPTZ_MENULEFT = NET_EXTPTZ_MENUDOWN+1; //菜单左
+        public static final int NET_EXTPTZ_MENURIGHT = NET_EXTPTZ_MENULEFT+1; //菜单右
+        public static final int NET_EXTPTZ_ALARMHANDLE = 0x40;//报警联动云台parm1:报警输入通道;parm2:报警联动类型1-预置点2-线扫3-巡航;parm3:联动值,如预置点号
+        public static final int NET_EXTPTZ_MATRIXSWITCH = 0x41;//矩阵切换parm1:预览器号(视频输出号);parm2:视频输入号;parm3:矩阵号
+        public static final int NET_EXTPTZ_LIGHTCONTROL= NET_EXTPTZ_MATRIXSWITCH+1; //灯光控制器
+        public static final int NET_EXTPTZ_EXACTGOTO = NET_EXTPTZ_LIGHTCONTROL+1; //三维精确定位parm1:水平角度(0~3600);parm2:垂直坐标(0~900);parm3:变倍(1~128)
+        public static final int NET_EXTPTZ_RESETZERO = NET_EXTPTZ_EXACTGOTO+1; //三维定位重设零位
+        public static final int NET_EXTPTZ_MOVE_ABSOLUTELY = NET_EXTPTZ_RESETZERO+1; //绝对移动控制命令,param4对应结构PTZ_CONTROL_ABSOLUTELY
+        public static final int NET_EXTPTZ_MOVE_CONTINUOUSLY = NET_EXTPTZ_MOVE_ABSOLUTELY+1; //持续移动控制命令,param4对应结构PTZ_CONTROL_CONTINUOUSLY
+        public static final int NET_EXTPTZ_GOTOPRESET = NET_EXTPTZ_MOVE_CONTINUOUSLY+1; //云台控制命令,以一定速度转到预置位点,parm4对应结构PTZ_CONTROL_GOTOPRESET
+        public static final int NET_EXTPTZ_SET_VIEW_RANGE = 0x49;//设置可视域(param4对应结构PTZ_VIEW_RANGE_INFO)
+        public static final int NET_EXTPTZ_FOCUS_ABSOLUTELY = 0x4A;//绝对聚焦(param4对应结构PTZ_FOCUS_ABSOLUTELY)
+        public static final int NET_EXTPTZ_HORSECTORSCAN = 0x4B;//水平扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效)
+        public static final int NET_EXTPTZ_VERSECTORSCAN = 0x4C;//垂直扇扫(param4对应PTZ_CONTROL_SECTORSCAN,param1、param2、param3无效)
+        public static final int NET_EXTPTZ_SET_ABS_ZOOMFOCUS = 0x4D;//设定绝对焦距、聚焦值,param1为焦距,范围:0,255],param2为聚焦,范围:[0,255],param3、param4无效
+        public static final int NET_EXTPTZ_SET_FISHEYE_EPTZ = 0x4E;//控制鱼眼电子云台,param4对应结构PTZ_CONTROL_SET_FISHEYE_EPTZ
+        public static final int NET_EXTPTZ_UP_TELE = 0x70;    //上 + TELE param1=速度(1-8),下同
+        public static final int NET_EXTPTZ_DOWN_TELE = NET_EXTPTZ_UP_TELE+1; //下 + TELE
+        public static final int NET_EXTPTZ_LEFT_TELE = NET_EXTPTZ_DOWN_TELE+1; //左 + TELE
+        public static final int NET_EXTPTZ_RIGHT_TELE = NET_EXTPTZ_LEFT_TELE+1; //右 + TELE
+        public static final int NET_EXTPTZ_LEFTUP_TELE = NET_EXTPTZ_RIGHT_TELE+1; //左上 + TELE
+        public static final int NET_EXTPTZ_LEFTDOWN_TELE = NET_EXTPTZ_LEFTUP_TELE+1; //左下 + TELE
+        public static final int NET_EXTPTZ_TIGHTUP_TELE = NET_EXTPTZ_LEFTDOWN_TELE+1; //右上 + TELE
+        public static final int NET_EXTPTZ_RIGHTDOWN_TELE = NET_EXTPTZ_TIGHTUP_TELE+1; //右下 + TELE
+        public static final int NET_EXTPTZ_UP_WIDE = NET_EXTPTZ_RIGHTDOWN_TELE+1; // 上 + WIDEparam1=速度(1-8),下同
+        public static final int NET_EXTPTZ_DOWN_WIDE = NET_EXTPTZ_UP_WIDE+1; //下 + WIDE
+        public static final int NET_EXTPTZ_LEFT_WIDE = NET_EXTPTZ_DOWN_WIDE+1; //左 + WIDE
+        public static final int NET_EXTPTZ_RIGHT_WIDE = NET_EXTPTZ_LEFT_WIDE+1; //右 + WIDE
+        public static final int NET_EXTPTZ_LEFTUP_WIDE = NET_EXTPTZ_RIGHT_WIDE+1; //左上 + WIDENET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO
+        public static final int NET_EXTPTZ_LEFTDOWN_WIDE = NET_EXTPTZ_LEFTUP_WIDE+1; //左下 + WIDE
+        public static final int NET_EXTPTZ_TIGHTUP_WIDE = NET_EXTPTZ_LEFTDOWN_WIDE+1; //右上 + WIDE
+        public static final int NET_EXTPTZ_RIGHTDOWN_WIDE = NET_EXTPTZ_TIGHTUP_WIDE+1; //右下 + WIDE
+        public static final int NET_EXTPTZ_GOTOPRESETSNAP = 0x80;                   // 转至预置点并抓图
+        public static final int NET_EXTPTZ_DIRECTIONCALIBRATION = 0x82;             // 校准云台方向(双方向校准)
+        public static final int NET_EXTPTZ_SINGLEDIRECTIONCALIBRATION = 0x83;       // 校准云台方向(单防线校准),param4对应结构 NET_IN_CALIBRATE_SINGLEDIRECTION
+        public static final int NET_EXTPTZ_MOVE_RELATIVELY = 0x84;			        // 云台相对定位,param4对应结构 NET_IN_MOVERELATIVELY_INFO
+        public static final int NET_EXTPTZ_SET_DIRECTION = 0x85;				    // 设置云台方向, param4对应结构 NET_IN_SET_DIRECTION_INFO
+        public static final int NET_EXTPTZ_BASE_MOVE_ABSOLUTELY = 0x86;		        // 精准绝对移动控制命令, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_INFO(通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO ),若bSupportReal为TRUE则设备支持该操作)
+        public static final int NET_EXTPTZ_BASE_MOVE_CONTINUOUSLY = NET_EXTPTZ_BASE_MOVE_ABSOLUTELY+1;	// 云台连续移动控制命令, param4 对应结构 NET_IN_PTZBASE_MOVE_CONTINUOUSLY_INFO.  通过 CFG_CAP_CMD_PTZ 命令获取云台能力集
+                                                                                                        // 若 CFG_PTZ_PROTOCOL_CAPS_INFO 中 stuMoveContinuously 字段的 stuType.bSupportExtra 为 TRUE, 表示设备支持该操作
+        public static final int NET_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE = NET_EXTPTZ_BASE_MOVE_CONTINUOUSLY+1;	// 设置当前位置聚焦值, param4对应结构体 NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO
+        public static final int NET_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYPT=NET_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE+1;// 绝对定位独立控制PT并能以度/秒为单位的速度控制, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYPT_INFO
+        public static final int NET_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYZOOM=NET_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYPT+1;	// 绝对定位独立控制zoom,并能控制变倍速度, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_ONLYZOOM_INFO
+        public static final int NET_EXTPTZ_STOP_MOVE=NET_EXTPTZ_BASE_MOVE_ABSOLUTELY_ONLYZOOM+1;	// 云台移动停止,同时也停止巡航模式,param4对应结构体 NET_IN_STOP_MOVE_INFO
+        public static final int NET_EXTPTZ_START=NET_EXTPTZ_STOP_MOVE+1;							// 开始云台控制,param4对应结构体 NET_IN_PTZ_START_INFO
+        public static final int NET_EXTPTZ_STOP=NET_EXTPTZ_START+1;								// 结束云台控制,param4对应结构体 NET_IN_PTZ_STOP_INFO
+        public static final int NET_EXTPTZ_START_PATTERN_RECORD=NET_EXTPTZ_STOP+1;				// 开始模式记录,param4对应结构体 NET_IN_START_PATTERN_RECORD_INFO
+        public static final int NET_EXTPTZ_STOP_PATTERN_RECORD=NET_EXTPTZ_START_PATTERN_RECORD+1;	// 停止模式记录,param4对应结构体 NET_IN_STOP_PATTERN_RECORD_INFO
+        public static final int NET_EXTPTZ_START_PATTERN_REPLAY=NET_EXTPTZ_STOP_PATTERN_RECORD+1;				// 开始模式回放,param4对应结构体 NET_IN_START_PATTERN_REPLAY_INFO
+        public static final int NET_EXTPTZ_STOP_PATTERN_REPLAY=NET_EXTPTZ_START_PATTERN_REPLAY+1;				// 停止模式回放,param4对应结构体 NET_IN_STOP_PATTERN_REPLAY_INFO
+        public static final int NET_EXTPTZ_MOVE_DIRECTLY=NET_EXTPTZ_STOP_PATTERN_REPLAY+1;					// 云台三维定位, param4对应结构体 NET_IN_MOVE_DIRECTLY_INFO
+        public static final int NET_EXTPTZ_TOTAL = NET_EXTPTZ_MOVE_DIRECTLY+1;                   //最大命令值
+    }
+
+    // 雨刷工作模式
+    public static class EM_CFG_RAINBRUSHMODE_MODE extends SdkStructure
+    {
+        public static final int EM_CFG_RAINBRUSHMODE_MODE_UNKNOWN = 0; //未知
+        public static final int EM_CFG_RAINBRUSHMODE_MODE_MANUAL = EM_CFG_RAINBRUSHMODE_MODE_UNKNOWN+1; //手动模式
+        public static final int EM_CFG_RAINBRUSHMODE_MODE_TIMING = EM_CFG_RAINBRUSHMODE_MODE_MANUAL+1; //定时模式
+    }
+
+    // 雨刷使能电平模式
+    public static class EM_CFG_RAINBRUSHMODE_ENABLEMODE extends SdkStructure
+    {
+        public static final int EM_CFG_RAINBRUSHMODE_ENABLEMODE_UNKNOWN = 0; //未知
+        public static final int EM_CFG_RAINBRUSHMODE_ENABLEMODE_LOW = EM_CFG_RAINBRUSHMODE_ENABLEMODE_UNKNOWN+1; //低电平有效(常闭)
+        public static final int EM_CFG_RAINBRUSHMODE_ENABLEMODE_HIGH = EM_CFG_RAINBRUSHMODE_ENABLEMODE_LOW+1; //高电平有效(常开)
+    }
+
+    // 雨刷模式相关配置(对应 CFG_RAINBRUSHMODE_INFO 命令)
+    public static class CFG_RAINBRUSHMODE_INFO extends SdkStructure
+    {
+        public int emMode;//雨刷工作模式, 取值为EM_CFG_RAINBRUSHMODE_MODE中的值
+        public int emEnableMode;//雨刷使能电平模式, 取值为EM_CFG_RAINBRUSHMODE_ENABLEMODE中的值
+        public int nPort;//雨刷使用的IO端口,-1表示未接入设备,-2表示该字段无效(设备未传送该字段)
+        public int nSensitivity; // 雨刷灵敏度, 只有当mode为Auto时有效, 范围[0, 10]
+    }
+
+    public static class CFG_RAINBRUSH_INFO extends SdkStructure
+    {
+        public byte 					 bEnable;					// 雨刷使能, 类型为bool, 取值0或1
+        public byte 					 bSpeedRate;				// 雨刷速度,1:快速;2:中速;3:慢速
+        public byte[] 					 bReserved = new byte[2];	// 保留对齐
+        public TIME_SECTION_WEEK_DAY_6[] stuTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_6[])new TIME_SECTION_WEEK_DAY_6().toArray(WEEK_DAY_NUM);// 事件响应时间段
+        public int 						 nInterval; 				// 雨刷运动间隔事件, 单位: 秒
+        public int 						 bProtectEnable; 			// 雨刷保护使能: true 保护开启, false 保护关闭
+        public int 						 nProtectTime; 				// 保护时间, 单位: 秒
+        public CFG_RAINBRUSH_TOUR_INFO	stuRainBrushTour=new CFG_RAINBRUSH_TOUR_INFO();						// 雨刷巡航模式配置,当CFG_RAINBRUSHMODE_INFO中EM_CFG_RAINBRUSHMODE_MODE为EM_CFG_RAINBRUSHMODE_MODE_TOUR时有效
+    }
+
+    // 控制类型,对应CLIENT_ControlDevice接口
+    public static class CtrlType extends SdkStructure
+    {
+        public static final int CTRLTYPE_CTRL_REBOOT = 0;//重启设备
+        public static final int CTRLTYPE_CTRL_SHUTDOWN = CTRLTYPE_CTRL_REBOOT+1; //关闭设备
+        public static final int CTRLTYPE_CTRL_DISK = CTRLTYPE_CTRL_SHUTDOWN+1; //硬盘管理
+        public static final int CTRLTYPE_KEYBOARD_POWER =3;//网络键盘
+        public static final int CTRLTYPE_KEYBOARD_ENTER = CTRLTYPE_KEYBOARD_POWER+1;
+        public static final int CTRLTYPE_KEYBOARD_ESC = CTRLTYPE_KEYBOARD_ENTER+1;
+        public static final int CTRLTYPE_KEYBOARD_UP = CTRLTYPE_KEYBOARD_ESC+1;
+        public static final int CTRLTYPE_KEYBOARD_DOWN = CTRLTYPE_KEYBOARD_UP+1;
+        public static final int CTRLTYPE_KEYBOARD_LEFT = CTRLTYPE_KEYBOARD_DOWN+1;
+        public static final int CTRLTYPE_KEYBOARD_RIGHT = CTRLTYPE_KEYBOARD_LEFT+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN0 = CTRLTYPE_KEYBOARD_RIGHT+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN1 = CTRLTYPE_KEYBOARD_BTN0+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN2 = CTRLTYPE_KEYBOARD_BTN1+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN3 = CTRLTYPE_KEYBOARD_BTN2+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN4 = CTRLTYPE_KEYBOARD_BTN3+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN5 = CTRLTYPE_KEYBOARD_BTN4+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN6 = CTRLTYPE_KEYBOARD_BTN5+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN7 = CTRLTYPE_KEYBOARD_BTN6+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN8 = CTRLTYPE_KEYBOARD_BTN7+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN9 = CTRLTYPE_KEYBOARD_BTN8+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN10 = CTRLTYPE_KEYBOARD_BTN9+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN11 = CTRLTYPE_KEYBOARD_BTN10+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN12 = CTRLTYPE_KEYBOARD_BTN11+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN13 = CTRLTYPE_KEYBOARD_BTN12+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN14 = CTRLTYPE_KEYBOARD_BTN13+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN15 = CTRLTYPE_KEYBOARD_BTN14+1;
+        public static final int CTRLTYPE_KEYBOARD_BTN16 = CTRLTYPE_KEYBOARD_BTN15+1;
+        public static final int CTRLTYPE_KEYBOARD_SPLIT = CTRLTYPE_KEYBOARD_BTN16+1;
+        public static final int CTRLTYPE_KEYBOARD_ONE = CTRLTYPE_KEYBOARD_SPLIT+1;
+        public static final int CTRLTYPE_KEYBOARD_NINE = CTRLTYPE_KEYBOARD_ONE+1;
+        public static final int CTRLTYPE_KEYBOARD_ADDR = CTRLTYPE_KEYBOARD_NINE+1;
+        public static final int CTRLTYPE_KEYBOARD_INFO = CTRLTYPE_KEYBOARD_ADDR+1;
+        public static final int CTRLTYPE_KEYBOARD_REC = CTRLTYPE_KEYBOARD_INFO+1;
+        public static final int CTRLTYPE_KEYBOARD_FN1 = CTRLTYPE_KEYBOARD_REC+1;
+        public static final int CTRLTYPE_KEYBOARD_FN2 = CTRLTYPE_KEYBOARD_FN1+1;
+        public static final int CTRLTYPE_KEYBOARD_PLAY = CTRLTYPE_KEYBOARD_FN2+1;
+        public static final int CTRLTYPE_KEYBOARD_STOP = CTRLTYPE_KEYBOARD_PLAY+1;
+        public static final int CTRLTYPE_KEYBOARD_SLOW = CTRLTYPE_KEYBOARD_STOP+1;
+        public static final int CTRLTYPE_KEYBOARD_FAST = CTRLTYPE_KEYBOARD_SLOW+1;
+        public static final int CTRLTYPE_KEYBOARD_PREW = CTRLTYPE_KEYBOARD_FAST+1;
+        public static final int CTRLTYPE_KEYBOARD_NEXT = CTRLTYPE_KEYBOARD_PREW+1;
+        public static final int CTRLTYPE_KEYBOARD_JMPDOWN = CTRLTYPE_KEYBOARD_NEXT+1;
+        public static final int CTRLTYPE_KEYBOARD_JMPUP = CTRLTYPE_KEYBOARD_JMPDOWN+1;
+        public static final int CTRLTYPE_KEYBOARD_10PLUS = CTRLTYPE_KEYBOARD_JMPUP+1;
+        public static final int CTRLTYPE_KEYBOARD_SHIFT = CTRLTYPE_KEYBOARD_10PLUS+1;
+        public static final int CTRLTYPE_KEYBOARD_BACK = CTRLTYPE_KEYBOARD_SHIFT+1;
+        public static final int CTRLTYPE_KEYBOARD_LOGIN = CTRLTYPE_KEYBOARD_BACK+1;						// 新网络键盘功能
+        public static final int CTRLTYPE_KEYBOARD_CHNNEL = CTRLTYPE_KEYBOARD_LOGIN+1;					// 切换视频通道
+        public static final int CTRLTYPE_TRIGGER_ALARM_IN =100;											// 触发报警输入
+        public static final int CTRLTYPE_TRIGGER_ALARM_OUT = CTRLTYPE_TRIGGER_ALARM_IN+1; 				// 触发报警输出
+        public static final int CTRLTYPE_CTRL_MATRIX = CTRLTYPE_TRIGGER_ALARM_OUT+1; 					// 矩阵控制
+        public static final int CTRLTYPE_CTRL_SDCARD = CTRLTYPE_CTRL_MATRIX+1; 							// SD卡控制(IPC产品)参数同硬盘控制
+        public static final int CTRLTYPE_BURNING_START = CTRLTYPE_CTRL_SDCARD+1; 						// 刻录机控制,开始刻录
+        public static final int CTRLTYPE_BURNING_STOP = CTRLTYPE_BURNING_START+1; 						// 刻录机控制,结束刻录
+        public static final int CTRLTYPE_BURNING_ADDPWD = CTRLTYPE_BURNING_STOP+1; 						// 刻录机控制,叠加密码(以'\0'为结尾的字符串,最大长度8位)
+        public static final int CTRLTYPE_BURNING_ADDHEAD = CTRLTYPE_BURNING_ADDPWD+1; 					// 刻录机控制,叠加片头(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n')
+        public static final int CTRLTYPE_BURNING_ADDSIGN = CTRLTYPE_BURNING_ADDHEAD+1; 					// 刻录机控制,叠加打点到刻录信息(参数无)
+        public static final int CTRLTYPE_BURNING_ADDCURSTOMINFO = CTRLTYPE_BURNING_ADDSIGN+1; 			// 刻录机控制,自定义叠加(以'\0'为结尾的字符串,最大长度1024字节,支持分行,行分隔符'\n')
+        public static final int CTRLTYPE_CTRL_RESTOREDEFAULT = CTRLTYPE_BURNING_ADDCURSTOMINFO+1; 		// 恢复设备的默认设置
+        public static final int CTRLTYPE_CTRL_CAPTURE_START = CTRLTYPE_CTRL_RESTOREDEFAULT+1; 			// 触发设备抓图
+        public static final int CTRLTYPE_CTRL_CLEARLOG = CTRLTYPE_CTRL_CAPTURE_START+1; 				// 清除日志
+        public static final int CTRLTYPE_TRIGGER_ALARM_WIRELESS =200;									// 触发无线报警(IPC产品)
+        public static final int CTRLTYPE_MARK_IMPORTANT_RECORD = CTRLTYPE_TRIGGER_ALARM_WIRELESS+1; 	// 标识重要录像文件
+        public static final int CTRLTYPE_CTRL_DISK_SUBAREA = CTRLTYPE_MARK_IMPORTANT_RECORD+1; 			// 网络硬盘分区
+        public static final int CTRLTYPE_BURNING_ATTACH = CTRLTYPE_CTRL_DISK_SUBAREA+1; 				// 刻录机控制,附件刻录.
+        public static final int CTRLTYPE_BURNING_PAUSE = CTRLTYPE_BURNING_ATTACH+1; 					// 刻录暂停
+        public static final int CTRLTYPE_BURNING_CONTINUE = CTRLTYPE_BURNING_PAUSE+1; 					// 刻录继续
+        public static final int CTRLTYPE_BURNING_POSTPONE = CTRLTYPE_BURNING_CONTINUE+1; 				// 刻录顺延
+        public static final int CTRLTYPE_CTRL_OEMCTRL = CTRLTYPE_BURNING_POSTPONE+1; 					// 报停控制
+        public static final int CTRLTYPE_BACKUP_START = CTRLTYPE_CTRL_OEMCTRL+1; 						// 设备备份开始
+        public static final int CTRLTYPE_BACKUP_STOP = CTRLTYPE_BACKUP_START+1; 						// 设备备份停止
+        public static final int CTRLTYPE_VIHICLE_WIFI_ADD = CTRLTYPE_BACKUP_STOP+1; 					// 车载手动增加WIFI配置
+        public static final int CTRLTYPE_VIHICLE_WIFI_DEC = CTRLTYPE_VIHICLE_WIFI_ADD+1; 				// 车载手动删除WIFI配置
+        public static final int CTRLTYPE_BUZZER_START = CTRLTYPE_VIHICLE_WIFI_DEC+1; 					// 蜂鸣器控制开始
+        public static final int CTRLTYPE_BUZZER_STOP = CTRLTYPE_BUZZER_START+1; 						// 蜂鸣器控制结束
+        public static final int CTRLTYPE_REJECT_USER = CTRLTYPE_BUZZER_STOP+1; 							// 剔除用户
+        public static final int CTRLTYPE_SHIELD_USER = CTRLTYPE_REJECT_USER+1; 							// 屏蔽用户
+        public static final int CTRLTYPE_RAINBRUSH = CTRLTYPE_SHIELD_USER+1; 							// 智能交通,雨刷控制
+        public static final int CTRLTYPE_MANUAL_SNAP = CTRLTYPE_RAINBRUSH+1; 							// 智能交通,手动抓拍(对应结构体MANUAL_SNAP_PARAMETER)
+        public static final int CTRLTYPE_MANUAL_NTP_TIMEADJUST = CTRLTYPE_MANUAL_SNAP+1; 				// 手动NTP校时
+        public static final int CTRLTYPE_NAVIGATION_SMS = CTRLTYPE_MANUAL_NTP_TIMEADJUST+1; 			// 导航信息和短消息
+        public static final int CTRLTYPE_CTRL_ROUTE_CROSSING = CTRLTYPE_NAVIGATION_SMS+1; 				// 路线点位信息
+        public static final int CTRLTYPE_BACKUP_FORMAT = CTRLTYPE_CTRL_ROUTE_CROSSING+1; 				// 格式化备份设备
+        public static final int CTRLTYPE_DEVICE_LOCALPREVIEW_SLIPT = CTRLTYPE_BACKUP_FORMAT+1; 			// 控制设备端本地预览分割(对应结构体DEVICE_LOCALPREVIEW_SLIPT_PARAMETER)
+        public static final int CTRLTYPE_CTRL_INIT_RAID = CTRLTYPE_DEVICE_LOCALPREVIEW_SLIPT+1; 		// RAID初始化
+        public static final int CTRLTYPE_CTRL_RAID = CTRLTYPE_CTRL_INIT_RAID+1; 						// RAID操作
+        public static final int CTRLTYPE_CTRL_SAPREDISK = CTRLTYPE_CTRL_RAID+1; 						// 热备盘操作
+        public static final int CTRLTYPE_WIFI_CONNECT = CTRLTYPE_CTRL_SAPREDISK+1; 						// 手动发起WIFI连接(对应结构体WIFI_CONNECT)
+        public static final int CTRLTYPE_WIFI_DISCONNECT = CTRLTYPE_WIFI_CONNECT+1; 					// 手动断开WIFI连接(对应结构体WIFI_CONNECT)
+        public static final int CTRLTYPE_CTRL_ARMED = CTRLTYPE_WIFI_DISCONNECT+1; 						// 布撤防操作
+        public static final int CTRLTYPE_CTRL_IP_MODIFY = CTRLTYPE_CTRL_ARMED+1; 						// 修改前端IP(对应结构体 NET_CTRL_IPMODIFY_PARAM)
+        public static final int CTRLTYPE_CTRL_WIFI_BY_WPS = CTRLTYPE_CTRL_IP_MODIFY+1; 					// wps连接wifi(对应结构体NET_CTRL_CONNECT_WIFI_BYWPS)
+        public static final int CTRLTYPE_CTRL_FORMAT_PATITION = CTRLTYPE_CTRL_WIFI_BY_WPS+1; 			// 格式化分区(对应结构体NET_FORMAT_PATITION)
+        public static final int CTRLTYPE_CTRL_EJECT_STORAGE = CTRLTYPE_CTRL_FORMAT_PATITION+1; 			// 手动卸载设备(对应结构体NET_EJECT_STORAGE_DEVICE)
+        public static final int CTRLTYPE_CTRL_LOAD_STORAGE = CTRLTYPE_CTRL_EJECT_STORAGE+1; 			// 手动装载设备(对应结构体NET_LOAD_STORAGE_DEVICE)
+        public static final int CTRLTYPE_CTRL_CLOSE_BURNER = CTRLTYPE_CTRL_LOAD_STORAGE+1; 				// 关闭刻录机光驱门(对应结构体NET_CTRL_BURNERDOOR)一般需要等6
+        public static final int CTRLTYPE_CTRL_EJECT_BURNER = CTRLTYPE_CTRL_CLOSE_BURNER+1; 				// 弹出刻录机光驱门(对应结构体NET_CTRL_BURNERDOOR)一般需要等4秒
+        public static final int CTRLTYPE_CTRL_CLEAR_ALARM = CTRLTYPE_CTRL_EJECT_BURNER+1; 				// 消警(对应结构体NET_CTRL_CLEAR_ALARM)
+        public static final int CTRLTYPE_CTRL_MONITORWALL_TVINFO = CTRLTYPE_CTRL_CLEAR_ALARM+1; 		// 电视墙信息显示(对应结构体NET_CTRL_MONITORWALL_TVINFO)
+        public static final int CTRLTYPE_CTRL_START_VIDEO_ANALYSE = CTRLTYPE_CTRL_MONITORWALL_TVINFO+1; // 开始视频智能分析(对应结构体NET_CTRL_START_VIDEO_ANALYSE)
+        public static final int CTRLTYPE_CTRL_STOP_VIDEO_ANALYSE = CTRLTYPE_CTRL_START_VIDEO_ANALYSE+1; // 停止视频智能分析(对应结构体NET_CTRL_STOP_VIDEO_ANALYSE)
+        public static final int CTRLTYPE_CTRL_UPGRADE_DEVICE = CTRLTYPE_CTRL_STOP_VIDEO_ANALYSE+1; 		// 控制启动设备升级,由设备独立完成升级过程,不需要传输升级文件
+        public static final int CTRLTYPE_CTRL_MULTIPLAYBACK_CHANNALES = CTRLTYPE_CTRL_UPGRADE_DEVICE+1; // 切换多通道预览回放的通道(对应结构体NET_CTRL_MULTIPLAYBACK_CHANNALES)
+        public static final int CTRLTYPE_CTRL_SEQPOWER_OPEN = CTRLTYPE_CTRL_MULTIPLAYBACK_CHANNALES+1;  // 电源时序器打开开关量输出口(对应NET_CTRL_SEQPOWER_PARAM)
+        public static final int CTRLTYPE_CTRL_SEQPOWER_CLOSE = CTRLTYPE_CTRL_SEQPOWER_OPEN+1; 			// 电源时序器关闭开关量输出口(对应NET_CTRL_SEQPOWER_PARAM)
+        public static final int CTRLTYPE_CTRL_SEQPOWER_OPEN_ALL = CTRLTYPE_CTRL_SEQPOWER_CLOSE+1; 		// 电源时序器打开开关量输出口组(对应NET_CTRL_SEQPOWER_PARAM)
+        public static final int CTRLTYPE_CTRL_SEQPOWER_CLOSE_ALL = CTRLTYPE_CTRL_SEQPOWER_OPEN_ALL+1;   // 电源时序器关闭开关量输出口组(对应NET_CTRL_SEQPOWER_PARAM)
+        public static final int CTRLTYPE_CTRL_PROJECTOR_RISE = CTRLTYPE_CTRL_SEQPOWER_CLOSE_ALL+1; 		// 投影仪上升(对应NET_CTRL_PROJECTOR_PARAM)
+        public static final int CTRLTYPE_CTRL_PROJECTOR_FALL = CTRLTYPE_CTRL_PROJECTOR_RISE+1; 			// 投影仪下降(对应NET_CTRL_PROJECTOR_PARAM)
+        public static final int CTRLTYPE_CTRL_PROJECTOR_STOP = CTRLTYPE_CTRL_PROJECTOR_FALL+1; 			// 投影仪停止(对应NET_CTRL_PROJECTOR_PARAM)
+        public static final int CTRLTYPE_CTRL_INFRARED_KEY = CTRLTYPE_CTRL_PROJECTOR_STOP+1; 			// 红外按键(对应NET_CTRL_INFRARED_KEY_PARAM)
+        public static final int CTRLTYPE_CTRL_START_PLAYAUDIO = CTRLTYPE_CTRL_INFRARED_KEY+1; 			// 设备开始播放音频文件(对应结构体NET_CTRL_START_PLAYAUDIO)
+        public static final int CTRLTYPE_CTRL_STOP_PLAYAUDIO = CTRLTYPE_CTRL_START_PLAYAUDIO+1; 		// 设备停止播放音频文件
+        public static final int CTRLTYPE_CTRL_START_ALARMBELL = CTRLTYPE_CTRL_STOP_PLAYAUDIO+1; 		// 开启警号(对应结构体 NET_CTRL_ALARMBELL )
+        public static final int CTRLTYPE_CTRL_STOP_ALARMBELL = CTRLTYPE_CTRL_START_ALARMBELL+1; 		// 关闭警号(对应结构体 NET_CTRL_ALARMBELL )
+        public static final int CTRLTYPE_CTRL_ACCESS_OPEN = CTRLTYPE_CTRL_STOP_ALARMBELL+1; 			// 门禁控制-开门(对应结构体 NET_CTRL_ACCESS_OPEN)
+        public static final int CTRLTYPE_CTRL_SET_BYPASS = CTRLTYPE_CTRL_ACCESS_OPEN+1; 				// 设置旁路功能(对应结构体NET_CTRL_SET_BYPASS)
+        public static final int CTRLTYPE_CTRL_RECORDSET_INSERT = CTRLTYPE_CTRL_SET_BYPASS+1; 			// 添加记录,获得记录集编号(对应NET_CTRL_RECORDSET_INSERT_PARAM)
+        public static final int CTRLTYPE_CTRL_RECORDSET_UPDATE = CTRLTYPE_CTRL_RECORDSET_INSERT+1; 		// 更新某记录集编号的记录(对应 NET_CTRL_RECORDSET_PARAM)
+        public static final int CTRLTYPE_CTRL_RECORDSET_REMOVE = CTRLTYPE_CTRL_RECORDSET_UPDATE+1;	    // 根据记录集编号删除某记录(对应 NET_CTRL_RECORDSET_PARAM)
+        public static final int CTRLTYPE_CTRL_RECORDSET_CLEAR = CTRLTYPE_CTRL_RECORDSET_REMOVE+1; 		// 清除所有记录集信息(对应NET_CTRL_RECORDSET_PARAM)
+        public static final int CTRLTYPE_CTRL_ACCESS_CLOSE = CTRLTYPE_CTRL_RECORDSET_CLEAR+1; 			// 门禁控制-关门(对应结构体NET_CTRL_ACCESS_CLOSE)
+        public static final int CTRLTYPE_CTRL_ALARM_SUBSYSTEM_ACTIVE_SET = CTRLTYPE_CTRL_ACCESS_CLOSE+1;// 报警子系统激活设置(对应结构体NET_CTRL_ALARM_SUBSYSTEM_SETACTIVE)
+        public static final int CTRLTYPE_CTRL_FORBID_OPEN_STROBE = CTRLTYPE_CTRL_ALARM_SUBSYSTEM_ACTIVE_SET+1; // 禁止设备端开闸(对应结构体NET_CTRL_FORBID_OPEN_STROBE)
+        public static final int CTRLTYPE_CTRL_OPEN_STROBE = CTRLTYPE_CTRL_FORBID_OPEN_STROBE+1; 		// 开启道闸(对应结构体 NET_CTRL_OPEN_STROBE)
+        public static final int CTRLTYPE_CTRL_TALKING_REFUSE = CTRLTYPE_CTRL_OPEN_STROBE+1; 			// 对讲拒绝接听(对应结构体NET_CTRL_TALKING_REFUSE)
+        public static final int CTRLTYPE_CTRL_ARMED_EX = CTRLTYPE_CTRL_TALKING_REFUSE+1; 				// 布撤防操作(对应结构体CTRL_ARM_DISARM_PARAM_EX),对CTRL_ARM_DISARM_PARAM升级,建议用这个
+        public static final int CTRLTYPE_CTRL_NET_KEYBOARD =400;										// 网络键盘控制(对应结构体NET_CTRL_NET_KEYBOARD)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_OPEN = CTRLTYPE_CTRL_NET_KEYBOARD+1; 		// 打开空调(对应结构体NET_CTRL_OPEN_AIRCONDITION)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_CLOSE = CTRLTYPE_CTRL_AIRCONDITION_OPEN+1; 	// 关闭空调(对应结构体NET_CTRL_CLOSE_AIRCONDITION)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_SET_TEMPERATURE = CTRLTYPE_CTRL_AIRCONDITION_CLOSE+1; // 设定空调温度(对应结构体NET_CTRL_SET_TEMPERATURE)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_ADJUST_TEMPERATURE = CTRLTYPE_CTRL_AIRCONDITION_SET_TEMPERATURE+1; // 调节空调温度(对应结构体NET_CTRL_ADJUST_TEMPERATURE)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_SETMODE = CTRLTYPE_CTRL_AIRCONDITION_ADJUST_TEMPERATURE+1; 		  // 设置空调工作模式(对应结构体NET_CTRL_ADJUST_TEMPERATURE)
+        public static final int CTRLTYPE_CTRL_AIRCONDITION_SETWINDMODE = CTRLTYPE_CTRL_AIRCONDITION_SETMODE+1;   // 设置空调送风模式(对应结构体NET_CTRL_AIRCONDITION_SETMODE)
+        public static final int CTRLTYPE_CTRL_RESTOREDEFAULT_EX  = CTRLTYPE_CTRL_AIRCONDITION_SETWINDMODE+1;	 // 恢复设备的默认设置新协议(对应结构体 NET_CTRL_RESTORE_DEFAULT )
+        // 恢复配置优先使用该枚举,如果接口失败,
+        // 且CLIENT_GetLastError返回NET_UNSUPPORTED,再尝试使用NET_CTRL_RESTOREDEFAULT恢复配置
+        public static final int CTRLTYPE_CTRL_NOTIFY_EVENT = CTRLTYPE_CTRL_RESTOREDEFAULT_EX+1; 	   // 向设备发送事件(对应结构体NET_NOTIFY_EVENT_DATA)
+        public static final int CTRLTYPE_CTRL_SILENT_ALARM_SET = CTRLTYPE_CTRL_NOTIFY_EVENT+1; 		   // 无声报警设置
+        public static final int CTRLTYPE_CTRL_START_PLAYAUDIOEX = CTRLTYPE_CTRL_SILENT_ALARM_SET+1;    // 设备开始语音播报(对应结构体NET_CTRL_START_PLAYAUDIOEX)
+        public static final int CTRLTYPE_CTRL_STOP_PLAYAUDIOEX = CTRLTYPE_CTRL_START_PLAYAUDIOEX+1;    // 设备停止语音播报
+        public static final int CTRLTYPE_CTRL_CLOSE_STROBE = CTRLTYPE_CTRL_STOP_PLAYAUDIOEX+1;         // 关闭道闸(对应结构体 NET_CTRL_CLOSE_STROBE)
+        public static final int CTRLTYPE_CTRL_SET_ORDER_STATE = CTRLTYPE_CTRL_CLOSE_STROBE+1; 		   // 设置车位预定状态(对应结构体NET_CTRL_SET_ORDER_STATE)
+        public static final int CTRLTYPE_CTRL_RECORDSET_INSERTEX = CTRLTYPE_CTRL_SET_ORDER_STATE+1;    // 添加记录,获得记录集编号(对应 NET_CTRL_RECORDSET_INSERT_PARAM )
+        public static final int CTRLTYPE_CTRL_RECORDSET_UPDATEEX = CTRLTYPE_CTRL_RECORDSET_INSERTEX+1; // 更新某记录集编号的记录(对应NET_CTRL_RECORDSET_PARAM)
+        public static final int CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT = CTRLTYPE_CTRL_RECORDSET_UPDATEEX+1; // 信息采集(对应结构体NET_CTRL_CAPTURE_FINGER_PRINT)
+        public static final int CTRLTYPE_CTRL_ECK_LED_SET = CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT+1; 	   // 停车场出入口控制器LED设置(对应结构体NET_CTRL_ECK_LED_SET_PARAM)
+        public static final int CTRLTYPE_CTRL_ECK_IC_CARD_IMPORT = CTRLTYPE_CTRL_ECK_LED_SET+1; 	   // 智能停车系统出入口机IC卡信息导入(对应结构体NET_CTRL_ECK_IC_CARD_IMPORT_PARAM)
+        public static final int CTRLTYPE_CTRL_ECK_SYNC_IC_CARD = CTRLTYPE_CTRL_ECK_IC_CARD_IMPORT+1;   // 智能停车系统出入口机IC卡信息同步指令,收到此指令后,设备删除原有IC卡信息(对应结构体NET_CTRL_ECK_SYNC_IC_CARD_PARAM)
+        public static final int CTRLTYPE_CTRL_LOWRATEWPAN_REMOVE = CTRLTYPE_CTRL_ECK_SYNC_IC_CARD+1;   // 删除指定无线设备(对应结构体NET_CTRL_LOWRATEWPAN_REMOVE)
+        public static final int CTRLTYPE_CTRL_LOWRATEWPAN_MODIFY = CTRLTYPE_CTRL_LOWRATEWPAN_REMOVE+1; // 修改无线设备信息(对应结构体NET_CTRL_LOWRATEWPAN_MODIFY)
+        public static final int CTRLTYPE_CTRL_ECK_SET_PARK_INFO = CTRLTYPE_CTRL_LOWRATEWPAN_MODIFY+1;  // 智能停车系统出入口机设置车位信息(对应结构体NET_CTRL_ECK_SET_PARK_INFO_PARAM)
+        public static final int CTRLTYPE_CTRL_VTP_DISCONNECT = CTRLTYPE_CTRL_ECK_SET_PARK_INFO+1; 	   // 挂断视频电话(对应结构体NET_CTRL_VTP_DISCONNECT)
+        public static final int CTRLTYPE_CTRL_UPDATE_FILES = CTRLTYPE_CTRL_VTP_DISCONNECT+1; 		   // 远程投放多媒体文件更新(对应结构体NET_CTRL_UPDATE_FILES)
+        public static final int CTRLTYPE_CTRL_MATRIX_SAVE_SWITCH = CTRLTYPE_CTRL_UPDATE_FILES+1; 	   // 保存上下位矩阵输出关系(对应结构体NET_CTRL_MATRIX_SAVE_SWITCH)
+        public static final int CTRLTYPE_CTRL_MATRIX_RESTORE_SWITCH = CTRLTYPE_CTRL_MATRIX_SAVE_SWITCH+1; // 恢复上下位矩阵输出关系(对应结构体NET_CTRL_MATRIX_RESTORE_SWITCH)
+        public static final int CTRLTYPE_CTRL_VTP_DIVERTACK = CTRLTYPE_CTRL_MATRIX_RESTORE_SWITCH+1;   // 呼叫转发响应(对应结构体NET_CTRL_VTP_DIVERTACK)
+        public static final int CTRLTYPE_CTRL_RAINBRUSH_MOVEONCE = CTRLTYPE_CTRL_VTP_DIVERTACK+1;      // 雨刷来回刷一次,雨刷模式配置为手动模式时有效(对应结构体NET_CTRL_RAINBRUSH_MOVEONCE)
+        public static final int CTRLTYPE_CTRL_RAINBRUSH_MOVECONTINUOUSLY = CTRLTYPE_CTRL_RAINBRUSH_MOVEONCE+1; 		   // 雨刷来回循环刷,雨刷模式配置为手动模式时有效(对应结构体NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY)
+        public static final int CTRLTYPE_CTRL_RAINBRUSH_STOPMOVE = CTRLTYPE_CTRL_RAINBRUSH_MOVECONTINUOUSLY+1; 		   // 雨刷停止刷,雨刷模式配置为手动模式时有效(对应结构体NET_CTRL_RAINBRUSH_STOPMOVE)
+        public static final int CTRLTYPE_CTRL_ALARM_ACK = CTRLTYPE_CTRL_RAINBRUSH_STOPMOVE+1; 		   				   // 报警事件确认(对应结构体NET_CTRL_ALARM_ACK)
+        // NET_CTRL_ALARM_ACK 该操作切勿在报警回调接口中调用
+        public static final int CTRLTYPE_CTRL_RECORDSET_IMPORT = CTRLTYPE_CTRL_ALARM_ACK + 1; 		   				   // 批量导入记录集信息(对应 NET_CTRL_RECORDSET_PARAM )
+        public static final int CTRLTYPE_CTRL_DELIVERY_FILE = CTRLTYPE_CTRL_RECORDSET_IMPORT + 1; 	   				   // 向视频输出口投放视频和图片文件, 楼宇对讲使用,同一时间投放(对应 NET_CTRL_DELIVERY_FILE )
+        public static final int CTRLTYPE_CTRL_FORCE_BREAKING = CTRLTYPE_CTRL_DELIVERY_FILE + 1;                        // 强制产生违章类型(对应 NET_CTRL_FORCE_BREAKING)
+        public static final int CTRLTYPE_CTRL_RESTORE_EXCEPT = CTRLTYPE_CTRL_FORCE_BREAKING + 1;					   // 恢复除指定配置外的其他配置为默认。
+        public static final int CTRLTYPE_CTRL_SET_PARK_INFO = CTRLTYPE_CTRL_RESTORE_EXCEPT + 1;						   // 设置停车信息,平台设置给相机,内容用于点阵屏显示(对应结构体 NET_CTRL_SET_PARK_INFO)
+        public static final int CTRLTYPE_CTRL_CLEAR_SECTION_STAT = CTRLTYPE_CTRL_SET_PARK_INFO + 1;					   // 清除当前时间段内人数统计信息, 重新从0开始计算(对应结构体NET_CTRL_CLEAR_SECTION_STAT_INFO)
+        public static final int CTRLTYPE_CTRL_DELIVERY_FILE_BYCAR = CTRLTYPE_CTRL_CLEAR_SECTION_STAT + 1;              // 向视频输出口投放视频和图片文件, 车载使用,广告单独时间投放(对应NET_CTRL_DELIVERY_FILE_BYCAR)
+        public static final int CTRLTYPE_CTRL_ECK_GUIDINGPANEL_CONTENT = CTRLTYPE_CTRL_DELIVERY_FILE_BYCAR + 1;        // 设置诱导屏显示内容(对应结构体 NET_CTRL_ECK_GUIDINGPANEL_CONTENT)
+        public static final int CTRLTYPE_CTRL_SET_SAFE_LEVEL = CTRLTYPE_CTRL_ECK_GUIDINGPANEL_CONTENT + 1;		       // 设置门禁安全等级(对应结构体,pInBuf= NET_IN_SET_SAFE_LEVEL*, pOutBuf= NET_OUT_SET_SAFE_LEVEL * )
+        public static final int CTRLTYPE_CTRL_VTP_INVITEACK = CTRLTYPE_CTRL_SET_SAFE_LEVEL + 1;                        // 对讲请求回复(对应结构体 NET_CTRL_VTP_INVITEACK)
+        public static final int CTRLTYPE_CTRL_ACCESS_RESET_PASSWORD = CTRLTYPE_CTRL_VTP_INVITEACK + 1;                 // 门禁控制-重置密码(对应结构体 NET_CTRL_ACCESS_RESET_PASSWORD)
+        public static final int CTRLTYPE_CTRL_ACCESS_CALL_LIFT=CTRLTYPE_CTRL_ACCESS_RESET_PASSWORD+1;                  // 门禁控制-呼梯(对应结构体 NET_CTRL_ACCESS_CALL_LIFT)
+        /**
+         *  以下命令只在 CLIENT_ControlDeviceEx 上有效
+         */
+        public static final int CTRLTYPE_CTRL_THERMO_GRAPHY_ENSHUTTER = 0x10000;										// 设置热成像快门启用/禁用,pInBuf= NET_IN_THERMO_EN_SHUTTER*, pOutBuf= NET_OUT_THERMO_EN_SHUTTER *
+        public static final int CTRLTYPE_CTRL_RADIOMETRY_SETOSDMARK = CTRLTYPE_CTRL_THERMO_GRAPHY_ENSHUTTER+1;          // 设置测温项的osd为高亮,pInBuf=NET_IN_RADIOMETRY_SETOSDMARK*,pOutBuf= NET_OUT_RADIOMETRY_SETOSDMARK *
+        public static final int CTRLTYPE_CTRL_AUDIO_REC_START_NAME = CTRLTYPE_CTRL_RADIOMETRY_SETOSDMARK+1; 		    // 开启音频录音并得到录音名,pInBuf = NET_IN_AUDIO_REC_MNG_NAME *, pOutBuf = NET_OUT_AUDIO_REC_MNG_NAME *
+        public static final int CTRLTYPE_CTRL_AUDIO_REC_STOP_NAME = CTRLTYPE_CTRL_AUDIO_REC_START_NAME+1; 				// 关闭音频录音并返回文件名称,pInBuf = NET_IN_AUDIO_REC_MNG_NAME *, pOutBuf = NET_OUT_AUDIO_REC_MNG_NAME *
+        public static final int CTRLTYPE_CTRL_SNAP_MNG_SNAP_SHOT = CTRLTYPE_CTRL_AUDIO_REC_STOP_NAME+1; 				// 即时抓图(又名手动抓图),pInBuf  =NET_IN_SNAP_MNG_SHOT *, pOutBuf = NET_OUT_SNAP_MNG_SHOT *
+        public static final int CTRLTYPE_CTRL_LOG_STOP = CTRLTYPE_CTRL_SNAP_MNG_SNAP_SHOT+1; 							// 强制同步缓存数据到数据库并关闭数据库,pInBuf = NET_IN_LOG_MNG_CTRL *, pOutBuf = NET_OUT_LOG_MNG_CTRL *
+        public static final int CTRLTYPE_CTRL_LOG_RESUME = CTRLTYPE_CTRL_LOG_STOP+1; 									// 恢复数据库,pInBuf = NET_IN_LOG_MNG_CTRL *, pOutBuf = NET_OUT_LOG_MNG_CTRL *
+
+        public static final int CTRLTYPE_CTRL_POS_ADD = CTRLTYPE_CTRL_LOG_RESUME + 1;	                               // 增加一个Pos设备, pInBuf = NET_IN_POS_ADD *, pOutBuf = NET_OUT_POS_ADD *
+        public static final int CTRLTYPE_CTRL_POS_REMOVE = CTRLTYPE_CTRL_POS_ADD + 1;                            // 删除一个Pos设备, pInBuf = NET_IN_POS_REMOVE *, pOutBuf = NET_OUT_POS_REMOVE *
+        public static final int CTRLTYPE_CTRL_POS_REMOVE_MULTI = CTRLTYPE_CTRL_POS_REMOVE + 1;                      // 批量删除Pos设备, pInBuf = NET_IN_POS_REMOVE_MULTI *, pOutBuf = NET_OUT_POS_REMOVE_MULTI *
+        public static final int CTRLTYPE_CTRL_POS_MODIFY = CTRLTYPE_CTRL_POS_REMOVE_MULTI + 1;                            // 修改一个Pos设备, pInBuf = NET_IN_POS_ADD *, pOutBuf = NET_OUT_POS_ADD *
+        public static final int CTRLTYPE_CTRL_SET_SOUND_ALARM = CTRLTYPE_CTRL_POS_MODIFY + 1;                       // 触发有声报警, pInBuf = NET_IN_SOUND_ALARM *, pOutBuf = NET_OUT_SOUND_ALARM *
+        public static final int CTRLTYPE_CTRL_AUDIO_MATRIX_SILENCE = CTRLTYPE_CTRL_SET_SOUND_ALARM + 1;				   // 音频举证一键静音控制(对应pInBuf = NET_IN_AUDIO_MATRIX_SILENCE, pOutBuf =  NET_OUT_AUDIO_MATRIX_SILENCE)
+        public static final int CTRLTYPE_CTRL_MANUAL_UPLOAD_PICTURE = CTRLTYPE_CTRL_AUDIO_MATRIX_SILENCE + 1;                 // 设置手动上传, pInBuf = NET_IN_MANUAL_UPLOAD_PICTURE *, pOutBUf = NET_OUT_MANUAL_UPLOAD_PICTURE *
+        public static final int CTRLTYPE_CTRL_REBOOT_NET_DECODING_DEV = CTRLTYPE_CTRL_MANUAL_UPLOAD_PICTURE + 1;               // 重启网络解码设备, pInBuf = NET_IN_REBOOT_NET_DECODING_DEV *, pOutBuf = NET_OUT_REBOOT_NET_DECODING_DEV *
+        public static final int CTRLTYPE_CTRL_SET_IC_SENDER = CTRLTYPE_CTRL_REBOOT_NET_DECODING_DEV + 1;						   // ParkingControl 设置发卡设备, pInBuf = NET_IN_SET_IC_SENDER *, pOutBuf = NET_OUT_SET_IC_SENDER *
+        public static final int CTRLTYPE_CTRL_SET_MEDIAKIND = CTRLTYPE_CTRL_SET_IC_SENDER + 1;                         // 设置预览码流组成,如仅音频,仅视频,音视频 pInBuf = NET_IN_SET_MEDIAKIND *, pOutBuf = NET_OUT_SET_MEDIAKIND *// 配合功能列表能力集使用, EN_ENCODE_CHN,2-预览支持音视频分开获取
+        public static final int CTRLTYPE_CTRL_LOWRATEWPAN_ADD = CTRLTYPE_CTRL_SET_MEDIAKIND + 1;                       // 增加无线设备信息(对应结构体 pInBuf = NET_CTRL_LOWRATEWPAN_ADD *, pOutBUf = NULL)
+        public static final int CTRLTYPE_CTRL_LOWRATEWPAN_REMOVEALL = CTRLTYPE_CTRL_LOWRATEWPAN_ADD + 1;                 // 删除所有的无线设备信息(对应结构体 pInBuf = NET_CTRL_LOWRATEWPAN_REMOVEALL *, pOutBUf = NULL)
+        public static final int CTRLTYPE_CTRL_SET_DOOR_WORK_MODE =  CTRLTYPE_CTRL_LOWRATEWPAN_REMOVEALL + 1;                   // 设置门锁工作模式(对应结构体 pInBuf = NET_IN_CTRL_ACCESS_SET_DOOR_WORK_MODE *, pOutBUf = NULL)
+        public static final int CTRLTYPE_CTRL_TEST_MAIL = CTRLTYPE_CTRL_SET_DOOR_WORK_MODE + 1;                             // 测试邮件 pInBuf = NET_IN_TEST_MAIL *, pOutBUf = NET_OUT_TEST_MAIL *
+        public static final int CTRLTYPE_CTRL_CONTROL_SMART_SWITCH = CTRLTYPE_CTRL_TEST_MAIL + 1;                  // 控制智能开关 pInBuf = NET_IN_CONTROL_SMART_SWITCH *, pOutBUf = NET_OUT_CONTROL_SMART_SWITCH *
+        public static final int CTRLTYPE_CTRL_LOWRATEWPAN_SETWORKMODE = CTRLTYPE_CTRL_CONTROL_SMART_SWITCH + 1;          	   // 设置探测器的工作模式(对应结构体pInBuf = NET_IN_CTRL_LOWRATEWPAN_SETWORKMODE *, pOutBUf = NULL)
+        public static final int CTRLTYPE_CTRL_COAXIAL_CONTROL_IO = CTRLTYPE_CTRL_LOWRATEWPAN_SETWORKMODE + 1;					   // 发送同轴IO控制命令(对应结构体pInBuf = NET_IN_CONTROL_COAXIAL_CONTROL_IO*, pOutBUf = NET_OUT_CONTROL_COAXIAL_CONTROL_IO*)
+        public static final int CTRLTYPE_CTRL_START_REMOTELOWRATEWPAN_ALARMBELL = CTRLTYPE_CTRL_COAXIAL_CONTROL_IO + 1;		// 开启无线警号 (对应结构体pInBuf = NET_IN_START_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_START_REMOTELOWRATEWPAN_ALARMBELL*)
+        public static final int CTRLTYPE_CTRL_STOP_REMOTELOWRATEWPAN_ALARMBELL = CTRLTYPE_CTRL_START_REMOTELOWRATEWPAN_ALARMBELL + 1;		// 关闭无线警号 (对应结构体pInBuf = NET_IN_STOP_REMOTELOWRATEWPAN_ALARMBELL*, pOutBUf = NET_OUT_STOP_REMOTELOWRATEWPAN_ALARMBELL*)
+        public static final int CTRLTYPE_CTRL_THERMO_DO_FFC = CTRLTYPE_CTRL_STOP_REMOTELOWRATEWPAN_ALARMBELL + 1;							// 热成像FFC校准(对应结构体 pInBuf = NET_IN_THERMO_DO_FFC *,pOutBuf = NET_OUT_THERMO_DO_FFC *)
+        public static final int CTRLTYPE_CTRL_THERMO_FIX_FOCUS = CTRLTYPE_CTRL_THERMO_DO_FFC + 1;						// 热成像双目定焦调(对应结构体 pInBuf = NET_IN_THERMO_FIX_FOCUS *,pOutBuf = NET_OUT_THERMO_FIX_FOCUS *)
+        public static final int CTRLTYPE_CTRL_SET_THIRD_CALLSTATUS = CTRLTYPE_CTRL_THERMO_FIX_FOCUS + 1;					// 设置对讲状态(对应结构体pInBuf = NET_IN_VTP_THIRDCALL_STATUS*, pOutBuf = NET_OUT_VTP_THIRDCALL_STATUS*)
+        public static final int CTRL_ACCESS_CLEAR_STATUS = CTRLTYPE_CTRL_SET_THIRD_CALLSTATUS + 1;	                    // 门禁-清除用户进出门状态 (对应结构体pInBuf = NET_IN_ACCESS_CLEAR_STATUS*, pOutBuf = NET_OUT_ACCESS_CLEAR_STATUS *)
+        public static final int CTRL_ACCESS_DEAL_RECORD = CTRL_ACCESS_CLEAR_STATUS + 1;                     // 门禁-查询/设置用户进出门记录 (对应结构体pInBuf = NET_IN_ACCESS_DEAL_RECORD*, pOutBuf = NET_OUT_ACCESS_DEAL_RECORD*)
+        public static final int CTRL_QUERY_DELIVERED_FILE = CTRL_ACCESS_DEAL_RECORD + 1;                   // 向视频输出口查询广告信息,楼宇对讲使用,(对应NET_CTRL_QUERY_DELIVERY_FILE)
+        public static final int CTRL_SET_PARK_CONTROL_INFO = CTRL_QUERY_DELIVERED_FILE + 1;					// 设置停车控制信息(点阵屏和语音播报的控制)(对应结构体pInBuf = NET_IN_SET_PARK_CONTROL_INFO*, pOutBuf = NET_OUT_SET_PARK_CONTROL_INFO*)
+        /**********LowRateWPAN控制(0x10100-0x10150)**********************************************************************************/
+        public static final int CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL = 0x10100;                                // 获取无线设备信号强度(对应结构体 pInBuf = NET_IN_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL *,pOutBuf = NET_OUT_CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL *)
+        public static final int CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM= CTRL_LOWRATEWPAN_GETWIRELESSDEVSIGNAL+1;	// 设置配件信息(对应结构体pInBuf = NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM *,pOutBuf = NULL)
+    }
+
+    // 视频压缩格式
+    public static class CFG_VIDEO_COMPRESSION extends SdkStructure
+    {
+        public static final int VIDEO_FORMAT_MPEG4 = 0; //MPEG4
+        public static final int VIDEO_FORMAT_MS_MPEG4 = VIDEO_FORMAT_MPEG4+1; //MS-MPEG4
+        public static final int VIDEO_FORMAT_MPEG2 = VIDEO_FORMAT_MS_MPEG4+1; //MPEG2
+        public static final int VIDEO_FORMAT_MPEG1 = VIDEO_FORMAT_MPEG2+1; //MPEG1
+        public static final int VIDEO_FORMAT_H263 = VIDEO_FORMAT_MPEG1+1; //H.263
+        public static final int VIDEO_FORMAT_MJPG = VIDEO_FORMAT_H263+1; //MJPG
+        public static final int VIDEO_FORMAT_FCC_MPEG4 = VIDEO_FORMAT_MJPG+1; //FCC-MPEG4
+        public static final int VIDEO_FORMAT_H264 = VIDEO_FORMAT_FCC_MPEG4+1; //H.264
+        public static final int VIDEO_FORMAT_H265 = VIDEO_FORMAT_H264+1; //H.265
+    }
+
+    // 码流控制模式
+    public static class CFG_BITRATE_CONTROL extends SdkStructure
+    {
+        public static final int BITRATE_CBR = 0;              //固定码流
+        public static final int BITRATE_VBR = BITRATE_CBR+1; //可变码流
+    }
+
+    // H264 编码级别
+    public static class CFG_H264_PROFILE_RANK extends SdkStructure
+    {
+        public static final int PROFILE_BASELINE = 1;//提供I/P帧,仅支持progressive(逐行扫描)和CAVLC
+        public static final int PROFILE_MAIN = PROFILE_BASELINE+1; //提供I/P/B帧,支持progressiv和interlaced,提供CAVLC或CABAC
+        public static final int PROFILE_EXTENDED = PROFILE_MAIN+1; //提供I/P/B/SP/SI帧,仅支持progressive(逐行扫描)和CAVLC
+        public static final int PROFILE_HIGH = PROFILE_EXTENDED+1; //即FRExt,Main_Profile基础上新增:8x8intraprediction(8x8帧内预测), custom
+        // quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式
+    }
+
+    // 画质
+    public static class CFG_IMAGE_QUALITY extends SdkStructure
+    {
+        public static final int IMAGE_QUALITY_Q10 = 1;//图像质量10%
+        public static final int IMAGE_QUALITY_Q30 = IMAGE_QUALITY_Q10+1; //图像质量30%
+        public static final int IMAGE_QUALITY_Q50 = IMAGE_QUALITY_Q30+1; //图像质量50%
+        public static final int IMAGE_QUALITY_Q60 = IMAGE_QUALITY_Q50+1; //图像质量60%
+        public static final int IMAGE_QUALITY_Q80 = IMAGE_QUALITY_Q60+1; //图像质量80%
+        public static final int IMAGE_QUALITY_Q100 = IMAGE_QUALITY_Q80+1; //图像质量100%
+    }
+
+    // 视频格式
+    public static class CFG_VIDEO_FORMAT extends SdkStructure
+    {
+        // 能力
+        public byte abCompression;// 类型为bool, 取值0或1
+        public byte abWidth;// 类型为bool, 取值0或1
+        public byte abHeight;// 类型为bool, 取值0或1
+        public byte abBitRateControl;// 类型为bool, 取值0或1
+        public byte abBitRate;// 类型为bool, 取值0或1
+        public byte abFrameRate;// 类型为bool, 取值0或1
+        public byte abIFrameInterval;// 类型为bool, 取值0或1
+        public byte abImageQuality;// 类型为bool, 取值0或1
+        public byte abFrameType;// 类型为bool, 取值0或1
+        public byte abProfile;// 类型为bool, 取值0或1
+        // 信息
+        public int emCompression;//视频压缩格式, 取值为CFG_VIDEO_COMPRESSION中的值
+        public int nWidth;//视频宽度
+        public int nHeight;//视频高度
+        public int emBitRateControl;//码流控制模式, 取值为CFG_BITRATE_CONTROL中的值
+        public int nBitRate;//视频码流(kbps)
+        public float nFrameRate;//视频帧率
+        public int nIFrameInterval;//I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。
+        public int emImageQuality;//图像质量, 取值为CFG_IMAGE_QUALITY中的值
+        public int nFrameType;//打包模式,0-DHAV,1-"PS"
+        public int emProfile;//H.264编码级别, 取值为CFG_H264_PROFILE_RANK中的值
+        public int nMaxBitrate;// 最大码流单位是kbps(博世专用)
+    }
+
+    // 音频编码模式
+    public static class CFG_AUDIO_FORMAT extends SdkStructure
+    {
+        public static final int  AUDIO_FORMAT_G711A = 0; //G711a
+        public static final int  AUDIO_FORMAT_PCM = AUDIO_FORMAT_G711A+1; //PCM
+        public static final int  AUDIO_FORMAT_G711U = AUDIO_FORMAT_PCM+1; //G711u
+        public static final int  AUDIO_FORMAT_AMR = AUDIO_FORMAT_G711U+1; //AMR
+        public static final int  AUDIO_FORMAT_AAC = AUDIO_FORMAT_AMR+1; //AAC
+    }
+
+    // 音频格式
+    public static class CFG_AUDIO_ENCODE_FORMAT extends SdkStructure
+    {
+        // 能力
+        public byte abCompression;// 类型为bool, 取值0或1
+        public byte abDepth;// 类型为bool, 取值0或1
+        public byte abFrequency;// 类型为bool, 取值0或1
+        public byte abMode;// 类型为bool, 取值0或1
+        public byte abFrameType;// 类型为bool, 取值0或1
+        public byte abPacketPeriod;// 类型为bool, 取值0或1
+        public byte abChannels;// 类型为bool, 取值0或1
+        public byte abMix;// 类型为bool, 取值0或1
+        // 信息
+        public int emCompression;//音频压缩模式,取值为CFG_AUDIO_FORMAT中的值
+        public int nDepth;//音频采样深度
+        public int nFrequency;//音频采样频率
+        public int nMode;//音频编码模式
+        public int nFrameType;//音频打包模式,0-DHAV,1-PS
+        public int nPacketPeriod;//音频打包周期,ms
+        public int nChannelsNum;               // 视频通道的伴音通道号列表个数
+        public int arrChannels[] = new int[8];   // 视频通道的伴音通道号列表
+        public int bMix;                       // 是否同源
+    }
+
+    // 视频编码参数
+    public static class CFG_VIDEOENC_OPT extends SdkStructure
+    {
+        // 能力
+        public byte abVideoEnable;// 类型为bool, 取值0或1
+        public byte abAudioEnable;// 类型为bool, 取值0或1
+        public byte abSnapEnable;// 类型为bool, 取值0或1
+        public byte abAudioAdd;//音频叠加能力, 类型为bool, 取值0或1
+        public byte abAudioFormat;// 类型为bool, 取值0或1
+        // 信息
+        public int bVideoEnable;//视频使能, 类型为BOOL, 取值0或者1
+        public CFG_VIDEO_FORMAT stuVideoFormat;//视频格式
+        public int bAudioEnable;//音频使能, 类型为BOOL, 取值0或者1
+        public int bSnapEnable;//定时抓图使能, 类型为BOOL, 取值0或者1
+        public int bAudioAddEnable;//音频叠加使能, 类型为BOOL, 取值0或者1
+        public CFG_AUDIO_ENCODE_FORMAT stuAudioFormat;//音频格式
+    }
+
+    // 遮挡信息
+    public static class CFG_COVER_INFO extends SdkStructure
+    {
+        // 能力
+        public byte abBlockType;// 类型为bool, 取值0或1
+        public byte abEncodeBlend;// 类型为bool, 取值0或1
+        public byte abPreviewBlend;// 类型为bool, 取值0或1
+        // 信息
+        public CFG_RECT stuRect = new CFG_RECT();//覆盖的区域坐标
+        public CFG_RGBA stuColor = new CFG_RGBA();//覆盖的颜色
+        public int nBlockType;//覆盖方式;0-黑块,1-马赛克
+        public int nEncodeBlend;//编码级遮挡;1-生效,0-不生效
+        public int nPreviewBlend;//预览遮挡;1-生效,0-不生效
+    }
+
+    // 多区域遮挡配置
+    public static class CFG_VIDEO_COVER extends SdkStructure
+    {
+        public int nTotalBlocks;//支持的遮挡块数
+        public int nCurBlocks;//已设置的块数
+        public CFG_COVER_INFO[] stuCoverBlock = (CFG_COVER_INFO[])new CFG_COVER_INFO().toArray(MAX_VIDEO_COVER_NUM);// 覆盖的区域
+    }
+
+    // OSD信息
+    public static class CFG_OSD_INFO extends SdkStructure
+    {
+        // 能力
+        public byte abShowEnable;// 类型为bool, 取值0或1
+        // 信息
+        public CFG_RGBA stuFrontColor = new CFG_RGBA();//前景颜色
+        public CFG_RGBA stuBackColor = new CFG_RGBA();//背景颜色
+        public CFG_RECT stuRect = new CFG_RECT();//矩形区域
+        public int bShowEnable;//显示使能, 类型为BOOL, 取值0或者1
+    }
+
+    // 画面颜色属性
+    public static class CFG_COLOR_INFO extends SdkStructure
+    {
+        public int nBrightness;//亮度(0-100)
+        public int nContrast;//对比度(0-100)
+        public int nSaturation;//饱和度(0-100)
+        public int nHue;//色度(0-100)
+        public int nGain;//增益(0-100)
+        public int bGainEn;//增益使能, 类型为BOOL, 取值0或者1
+    }
+
+    // 图像通道属性信息
+    public static class CFG_ENCODE_INFO extends SdkStructure
+    {
+        public int nChannelID;//通道号(0开始),获取时,该字段有效;设置时,该字段无效
+        public byte[] szChnName = new byte[MAX_CHANNELNAME_LEN];//无效字段
+        public CFG_VIDEOENC_OPT[] stuMainStream = (CFG_VIDEOENC_OPT[])new CFG_VIDEOENC_OPT().toArray(MAX_VIDEOSTREAM_NUM);    // 主码流,0-普通录像,1-动检录像,2-报警录像
+        public int nValidCountMainStream;                      // 主码流数组中有效的个数
+        public CFG_VIDEOENC_OPT[] stuExtraStream = (CFG_VIDEOENC_OPT[])new CFG_VIDEOENC_OPT().toArray(MAX_VIDEOSTREAM_NUM);    // 辅码流,0-辅码流1,1-辅码流2,2-辅码流3
+        public int nValidCountExtraStream;             		   // 辅码流数组中有效的个数
+        public CFG_VIDEOENC_OPT[] stuSnapFormat = (CFG_VIDEOENC_OPT[])new CFG_VIDEOENC_OPT().toArray(MAX_VIDEOSTREAM_NUM);    // 抓图,0-普通抓图,1-动检抓图,2-报警抓图
+        public int nValidCountSnapFormat;              		   // 抓图数组中有效的个数
+        public int dwCoverAbilityMask;//无效字段
+        public int dwCoverEnableMask;//无效字段
+        public CFG_VIDEO_COVER stuVideoCover;//无效字段
+        public CFG_OSD_INFO stuChnTitle;//无效字段
+        public CFG_OSD_INFO stuTimeTitle;//无效字段
+        public CFG_COLOR_INFO stuVideoColor;//无效字段
+        public int emAudioFormat;//无效字段, 取值为CFG_AUDIO_FORMAT中的值
+        public int nProtocolVer;//协议版本号,只读,获取时,该字段有效;设置时,该字段无效
+    }
+
+    // 设备软件版本信息,高16位表示主版本号,低16位表示次版本号
+    public static class NET_VERSION_INFO extends SdkStructure
+    {
+        public int dwSoftwareVersion;
+        public int dwSoftwareBuildDate;
+        public int dwDspSoftwareVersion;
+        public int dwDspSoftwareBuildDate;
+        public int dwPanelVersion;
+        public int dwPanelSoftwareBuildDate;
+        public int dwHardwareVersion;
+        public int dwHardwareDate;
+        public int dwWebVersion;
+        public int dwWebBuildDate;
+    }
+
+    // 设备软件版本信息,对应CLIENT_QueryDevState接口
+    public static class NETDEV_VERSION_INFO extends SdkStructure
+    {
+        public byte[]       szDevSerialNo = new byte[NET_DEV_SERIALNO_LEN];         // 序列号
+        public int          byDevType;                                 			    // 设备类型,见枚举  NET_DEVICE_TYPE
+        public byte[]       szDevType = new byte[NET_DEV_TYPE_LEN];                 // 设备详细型号,字符串格式,可能为空
+        public int          nProtocalVer;                              			    // 协议版本号
+        public byte[]       szSoftWareVersion = new byte[NET_MAX_URL_LEN];
+        public int          dwSoftwareBuildDate;
+        public byte[]       szPeripheralSoftwareVersion = new byte[NET_MAX_URL_LEN];// 从片版本信息,字符串格式,可能为空
+        public int          dwPeripheralSoftwareBuildDate;
+        public byte[]       szGeographySoftwareVersion = new byte[NET_MAX_URL_LEN]; // 地理信息定位芯片版本信息,字符串格式,可能为空
+        public int          dwGeographySoftwareBuildDate;
+        public byte[]       szHardwareVersion = new byte[NET_MAX_URL_LEN];
+        public int          dwHardwareDate;
+        public byte[]       szWebVersion = new byte[NET_MAX_URL_LEN];
+        public int          dwWebBuildDate;
+        public byte[]       reserved = new byte[256];
+    }
+
+    // 设备类型
+    public static class NET_DEVICE_TYPE extends SdkStructure
+    {
+        public static final int NET_PRODUCT_NONE = 0;
+        public static final int NET_DVR_NONREALTIME_MACE = 1;     // 非实时MACE
+        public static final int NET_DVR_NONREALTIME	= 2;          // 非实时
+        public static final int NET_NVS_MPEG1 = 3;                // 网络视频服务器
+        public static final int NET_DVR_MPEG1_2 = 4;              // MPEG1二路录像机
+        public static final int NET_DVR_MPEG1_8 = 5;              // MPEG1八路录像机
+        public static final int NET_DVR_MPEG4_8 = 6;              // MPEG4八路录像机
+        public static final int NET_DVR_MPEG4_16 = 7;             // MPEG4十六路录像机
+        public static final int NET_DVR_MPEG4_SX2 = 8;            // LB系列录像机
+        public static final int NET_DVR_MEPG4_ST2 = 9;            // GB系列录像机
+        public static final int NET_DVR_MEPG4_SH2 = 10;            // HB系列录像机               10
+        public static final int NET_DVR_MPEG4_GBE = 11;            // GBE系列录像机
+        public static final int NET_DVR_MPEG4_NVSII = 12;          // II代网络视频服务器
+        public static final int NET_DVR_STD_NEW = 13;              // 新标准配置协议
+        public static final int NET_DVR_DDNS = 14;                 // DDNS服务器
+        public static final int NET_DVR_ATM = 15;                  // ATM机
+        public static final int NET_NB_SERIAL = 16;                // 二代非实时NB系列机器
+        public static final int NET_LN_SERIAL = 17;                // LN系列产品
+        public static final int NET_BAV_SERIAL = 18;               // BAV系列产品
+        public static final int NET_SDIP_SERIAL = 19;              // SDIP系列产品
+        public static final int NET_IPC_SERIAL = 20;               // IPC系列产品                20
+        public static final int NET_NVS_B = 21;                    // NVS B系列
+        public static final int NET_NVS_C = 22;                    // NVS H系列
+        public static final int NET_NVS_S = 23;                    // NVS S系列
+        public static final int NET_NVS_E = 24;                    // NVS E系列
+        public static final int NET_DVR_NEW_PROTOCOL = 25;         // 从QueryDevState中查询设备类型,以字符串格式
+        public static final int NET_NVD_SERIAL = 26;               // 解码器
+        public static final int NET_DVR_N5 = 27;                   // N5
+        public static final int NET_DVR_MIX_DVR = 28;              // 混合DVR
+        public static final int NET_SVR_SERIAL = 29;               // SVR系列
+        public static final int NET_SVR_BS = 30;                   // SVR-BS                     30
+        public static final int NET_NVR_SERIAL = 31;               // NVR系列
+        public static final int NET_DVR_N51 = 32;                  // N51
+        public static final int NET_ITSE_SERIAL = 33;              // ITSE 智能分析盒
+        public static final int NET_ITC_SERIAL = 34;               // 智能交通像机设备
+        public static final int NET_HWS_SERIAL = 35;               // 雷达测速仪HWS
+        public static final int NET_PVR_SERIAL = 36;               // 便携式音视频录像机
+        public static final int NET_IVS_SERIAL = 37;               // IVS(智能视频服务器系列)
+        public static final int NET_IVS_B = 38;                    // 通用智能视频侦测服务器
+        public static final int NET_IVS_F = 39;                    // 目标识别服务器
+        public static final int NET_IVS_V = 40;                    // 视频质量诊断服务器         40
+        public static final int NET_MATRIX_SERIAL = 41;            // 矩阵
+        public static final int NET_DVR_N52 = 42;                  // N52
+        public static final int NET_DVR_N56 = 43;                  // N56
+        public static final int NET_ESS_SERIAL = 44;               // ESS
+        public static final int NET_IVS_PC = 45;                   // 人数统计服务器
+        public static final int NET_PC_NVR = 46;                   // pc-nvr
+        public static final int NET_DSCON = 47;                    // 大屏控制器
+        public static final int NET_EVS = 48;                      // 网络视频存储服务器
+        public static final int NET_EIVS = 49;                     // 嵌入式智能分析视频系统
+        public static final int NET_DVR_N6 = 50;                   // DVR-N6       50
+        public static final int NET_UDS = 51;                      // 万能解码器
+        public static final int NET_AF6016 = 52;                   // 银行报警主机
+        public static final int NET_AS5008 = 53;                   // 视频网络报警主机
+        public static final int NET_AH2008 = 54;                   // 网络报警主机
+        public static final int NET_A_SERIAL = 55;                 // 报警主机系列
+        public static final int NET_BSC_SERIAL = 56;               // 门禁系列产品
+        public static final int NET_NVS_SERIAL = 57;               // NVS系列产品
+        public static final int NET_VTO_SERIAL = 58;              // VTO系列产品
+        public static final int NET_VTNC_SERIAL = 59;              // VTNC系列产品
+        public static final int NET_TPC_SERIAL = 60;               // TPC系列产品, 即热成像设备  60
+        public static final int NET_ASM_SERIAL = 61;               // 无线中继设备
+        public static final int NET_VTS_SERIAL = 62;               // 管理机
+    }
+
+    // DSP能力描述,对应CLIENT_GetDevConfig接口
+    public static class NET_DSP_ENCODECAP extends SdkStructure
+    {
+        public int dwVideoStandardMask;//视频制式掩码,按位表示设备能够支持的视频制式
+        public int dwImageSizeMask;//分辨率掩码,按位表示设备能够支持的分辨率设置
+        public int dwEncodeModeMask;//编码模式掩码,按位表示设备能够支持的编码模式设置
+        public int dwStreamCap;    // 按位表示设备支持的多媒体功能,
+        // 第一位表示支持主码流
+        // 第二位表示支持辅码流1
+        // 第三位表示支持辅码流2
+        // 第五位表示支持jpg抓图
+        public int[] dwImageSizeMask_Assi = new int[8];//表示主码流为各分辨率时,支持的辅码流分辨率掩码。
+        public int dwMaxEncodePower;//DSP支持的最高编码能力
+        public short wMaxSupportChannel;//每块DSP支持最多输入视频通道数
+        public short wChannelMaxSetSync;//DSP每通道的最大编码设置是否同步;0:不同步,1:同步
+    }
+
+    // 系统信息
+    public static class NET_DEV_SYSTEM_ATTR_CFG extends SdkStructure
+    {
+        public int dwSize;
+        /* 下面是设备的只读部分 */
+        public NET_VERSION_INFO stVersion;
+        public NET_DSP_ENCODECAP stDspEncodeCap;//DSP能力描述
+        public byte[] szDevSerialNo = new byte[NET_DEV_SERIALNO_LEN];//序列号
+        public byte byDevType;//设备类型,见枚举NET_DEVICE_TYPE
+        public byte[] szDevType = new byte[NET_DEV_TYPE_LEN];//设备详细型号,字符串格式,可能为空
+        public byte byVideoCaptureNum;//视频口数量
+        public byte byAudioCaptureNum;//音频口数量
+        public byte byTalkInChanNum;//对讲输入接口数量
+        public byte byTalkOutChanNum;//对讲输出接口数量
+        public byte byDecodeChanNum;//NSP
+        public byte byAlarmInNum;//报警输入口数
+        public byte byAlarmOutNum;//报警输出口数
+        public byte byNetIONum;//网络口数
+        public byte byUsbIONum;//USB口数量
+        public byte byIdeIONum;//IDE数量
+        public byte byComIONum;//串口数量
+        public byte byLPTIONum;//并口数量
+        public byte byVgaIONum;//NSP
+        public byte byIdeControlNum;//NSP
+        public byte byIdeControlType;//NSP
+        public byte byCapability;//NSP,扩展描述
+        public byte byMatrixOutNum;//视频矩阵输出口数
+        /* 下面是设备的可写部分 */
+        public byte byOverWrite;//硬盘满处理方式(覆盖、停止)
+        public byte byRecordLen;//录象打包长度
+        public byte byDSTEnable;//是否实行夏令时1-实行0-不实行
+        public short wDevNo;//设备编号,用于遥控
+        public byte byVideoStandard;//视频制式:0-PAL,1-NTSC
+        public byte byDateFormat;//日期格式
+        public byte byDateSprtr;//日期分割符(0:".",1:"-",2:"/")
+        public byte byTimeFmt;//时间格式(0-24小时,1-12小时)
+        public byte byLanguage;//枚举值详见NET_LANGUAGE_TYPE
+
+        public NET_DEV_SYSTEM_ATTR_CFG()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 入侵方向
+    public static class EM_MSG_OBJ_PERSON_DIRECTION extends SdkStructure
+    {
+        public static final int EM_MSG_OBJ_PERSON_DIRECTION_UNKOWN = 0; //未知方向
+        public static final int EM_MSG_OBJ_PERSON_DIRECTION_LEFT_TO_RIGHT = EM_MSG_OBJ_PERSON_DIRECTION_UNKOWN+1; //从左向右
+        public static final int EM_MSG_OBJ_PERSON_DIRECTION_RIGHT_TO_LEFT = EM_MSG_OBJ_PERSON_DIRECTION_LEFT_TO_RIGHT+1; //从右向左
+    }
+
+    // 视频分析物体信息扩展结构体
+    public static class NET_MSG_OBJECT_EX extends SdkStructure
+    {
+        public int dwSize;
+        public int nObjectID;//物体ID,每个ID表示一个唯一的物体
+        public byte[] szObjectType = new byte[128];//物体类型
+        public int nConfidence;//置信度(0~255),值越大表示置信度越高
+        public int nAction;//物体动作:1:Appear2:Move3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
+        public DH_RECT BoundingBox;//包围盒
+        public NET_POINT Center;//物体型心
+        public int nPolygonNum;//多边形顶点个数
+        public NET_POINT[] Contour = (NET_POINT[])new NET_POINT().toArray(NET_MAX_POLYGON_NUM);// 较精确的轮廓多边形
+        public int rgbaMainColor;//表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时,其值为0x00ff0000.
+        public byte[] szText = new byte[128];//同NET_MSG_OBJECT相应字段
+        public byte[] szObjectSubType = new byte[64];//物体子类别,根据不同的物体类型,可以取以下子类型:
+        // 同NET_MSG_OBJECT相应字段
+        public byte[] byReserved1 = new byte[3];
+        public byte bPicEnble;//是否有物体对应图片文件信息, 类型为bool, 取值0或1
+        public NET_PIC_INFO stPicInfo;//物体对应图片信息
+        public byte bShotFrame;//是否是抓拍张的识别结果, 类型为bool, 取值0或1
+        public byte bColor;//物体颜色(rgbaMainColor)是否可用, 类型为bool, 取值0或1
+        public byte bLowerBodyColor;//下半身颜色(rgbaLowerBodyColor)是否可用
+        public byte byTimeType;//时间表示类型,详见EM_TIME_TYPE说明
+        public NET_TIME_EX stuCurrentTime;//针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
+        public NET_TIME_EX stuStartTime;//开始时间戳(物体开始出现时)
+        public NET_TIME_EX stuEndTime;//结束时间戳(物体最后出现时)
+        public DH_RECT stuOriginalBoundingBox;//包围盒(绝对坐标)
+        public DH_RECT stuSignBoundingBox;//车标坐标包围盒
+        public int dwCurrentSequence;//当前帧序号(抓下这个物体时的帧)
+        public int dwBeginSequence;//开始帧序号(物体开始出现时的帧序号)
+        public int dwEndSequence;//结束帧序号(物体消逝时的帧序号)
+        public long nBeginFileOffset;//开始时文件偏移,单位:字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public long nEndFileOffset;//结束时文件偏移,单位:字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public byte[] byColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
+        public byte[] byUpperBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//上半身物体颜色相似度(物体类型为人时有效)
+        public byte[] byLowerBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//下半身物体颜色相似度(物体类型为人时有效)
+        public int nRelativeID;//相关物体ID
+        public byte[] szSubText = new byte[20];//"ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
+        public int nPersonStature;//入侵人员身高,单位cm
+        public int emPersonDirection;//人员入侵方向, 取值为EM_MSG_OBJ_PERSON_DIRECTION中的值
+        public int rgbaLowerBodyColor;//使用方法同rgbaMainColor,物体类型为人时有效
+
+        public NET_MSG_OBJECT_EX()
+        {
+            this.dwSize = this.size();
+        }
+
+        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
+            int alignment = super.getNativeAlignment(type, value, isFirstElement);
+            return Math.min(4, alignment);
+        }
+    }
+
+    // 视频分析物体信息扩展结构体,扩展版本2
+    public static class NET_MSG_OBJECT_EX2 extends SdkStructure
+    {
+        public int dwSize;
+        public int nObjectID;//物体ID,每个ID表示一个唯一的物体
+        public byte[] szObjectType = new byte[128];//物体类型
+        public int nConfidence;//置信度(0~255),值越大表示置信度越高
+        public int nAction;//物体动作:1:Appear2:Move3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
+        public DH_RECT BoundingBox;//包围盒
+        public NET_POINT Center;//物体型心
+        public int nPolygonNum;//多边形顶点个数
+        public NET_POINT[] Contour = (NET_POINT[])new NET_POINT().toArray(NET_MAX_POLYGON_NUM);//较精确的轮廓多边形
+        public int rgbaMainColor;//表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时,其值为0x00ff0000.
+        public byte[] szText = new byte[128];//同NET_MSG_OBJECT相应字段
+        public byte[] szObjectSubType = new byte[64];//物体子类别,根据不同的物体类型,可以取以下子类型:
+        // 同NET_MSG_OBJECT相应字段
+        public byte[] byReserved1 = new byte[3];
+        public byte bPicEnble;//是否有物体对应图片文件信息, 类型为bool, 取值0或者1
+        public NET_PIC_INFO stPicInfo;//物体对应图片信息
+        public byte bShotFrame;//是否是抓拍张的识别结果, 类型为bool, 取值0或者1
+        public byte bColor;//物体颜色(rgbaMainColor)是否可用, 类型为bool, 取值0或者1
+        public byte bLowerBodyColor;//下半身颜色(rgbaLowerBodyColor)是否可用
+        public byte byTimeType;//时间表示类型,详见EM_TIME_TYPE说明
+        public NET_TIME_EX stuCurrentTime;//针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
+        public NET_TIME_EX stuStartTime;//开始时间戳(物体开始出现时)
+        public NET_TIME_EX stuEndTime;//结束时间戳(物体最后出现时)
+        public DH_RECT stuOriginalBoundingBox;//包围盒(绝对坐标)
+        public DH_RECT stuSignBoundingBox;//车标坐标包围盒
+        public int dwCurrentSequence;//当前帧序号(抓下这个物体时的帧)
+        public int dwBeginSequence;//开始帧序号(物体开始出现时的帧序号)
+        public int dwEndSequence;//结束帧序号(物体消逝时的帧序号)
+        public long nBeginFileOffset;//开始时文件偏移,单位:字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public long nEndFileOffset;//结束时文件偏移,单位:字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public byte[] byColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
+        public byte[] byUpperBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//上半身物体颜色相似度(物体类型为人时有效)
+        public byte[] byLowerBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];//下半身物体颜色相似度(物体类型为人时有效)
+        public int nRelativeID;//相关物体ID
+        public byte[] szSubText = new byte[20];//"ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
+        public int nPersonStature;//入侵人员身高,单位cm
+        public int emPersonDirection;//人员入侵方向, 取值为EM_MSG_OBJ_PERSON_DIRECTION中的值
+        public int rgbaLowerBodyColor;//使用方法同rgbaMainColor,物体类型为人时有效
+        //视频浓缩额外信息
+        public int nSynopsisSpeed;//浓缩速度域值,共分1~10共十个档位,5表示浓缩后只保留5以上速度的物体。是个相对单位
+        // 为0时,该字段无效
+        public int nSynopsisSize;//浓缩尺寸域值,共分1~10共十个档位,3表示浓缩后只保留3以上大小的物体。是个相对单位
+        // 为0时,该字段无效
+        public int bEnableDirection;//为True时,对物体运动方向做过滤, 类型为BOOL, 取值0或者1
+        // 为False时,不对物体运动方向做过滤,
+        public NET_POINT stuSynopsisStartLocation;//浓缩运动方向,起始坐标点,点的坐标归一化到[0,8192)区间,bEnableDirection为True时有效
+        public NET_POINT stuSynopsisEndLocation;//浓缩运动方向,终止坐标点,点的坐标归一化到[0,8192)区间,bEnableDirection为True时有效
+        public byte[] byReserved = new byte[2048];//扩展字节
+
+        public NET_MSG_OBJECT_EX2()
+        {
+            this.dwSize = this.size();
+        }
+
+        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
+            int alignment = super.getNativeAlignment(type, value, isFirstElement);
+            return Math.min(4, alignment);
+        }
+    }
+
+    // 设备协议类型
+    public static class NET_DEVICE_PROTOCOL extends SdkStructure
+    {
+        public static final int NET_PROTOCOL_PRIVATE2 = 0; //私有2代协议
+        public static final int NET_PROTOCOL_PRIVATE3 = NET_PROTOCOL_PRIVATE2+1; //私有3代协议
+        public static final int NET_PROTOCOL_ONVIF = NET_PROTOCOL_PRIVATE3+1; //Onvif
+        public static final int NET_PROTOCOL_VNC = NET_PROTOCOL_ONVIF+1; //虚拟网络计算机
+        public static final int NET_PROTOCOL_TS = NET_PROTOCOL_VNC+1; //标准TS
+        public static final int NET_PROTOCOL_PRIVATE = 100;//私有协议
+        public static final int NET_PROTOCOL_AEBELL = NET_PROTOCOL_PRIVATE+1; //美电贝尔
+        public static final int NET_PROTOCOL_PANASONIC = NET_PROTOCOL_AEBELL+1; //松下
+        public static final int NET_PROTOCOL_SONY = NET_PROTOCOL_PANASONIC+1; //索尼
+        public static final int NET_PROTOCOL_DYNACOLOR = NET_PROTOCOL_SONY+1; //Dynacolor
+        public static final int NET_PROTOCOL_TCWS = NET_PROTOCOL_DYNACOLOR+1; //天城威视
+        public static final int NET_PROTOCOL_SAMSUNG = NET_PROTOCOL_TCWS+1; //三星
+        public static final int NET_PROTOCOL_YOKO = NET_PROTOCOL_SAMSUNG+1; //YOKO
+        public static final int NET_PROTOCOL_AXIS = NET_PROTOCOL_YOKO+1; //安讯视
+        public static final int NET_PROTOCOL_SANYO = NET_PROTOCOL_AXIS+1; //三洋
+        public static final int NET_PROTOCOL_BOSH = NET_PROTOCOL_SANYO+1; //Bosch
+        public static final int NET_PROTOCOL_PECLO = NET_PROTOCOL_BOSH+1; //Peclo
+        public static final int NET_PROTOCOL_PROVIDEO = NET_PROTOCOL_PECLO+1; //Provideo
+        public static final int NET_PROTOCOL_ACTI = NET_PROTOCOL_PROVIDEO+1; //ACTi
+        public static final int NET_PROTOCOL_VIVOTEK = NET_PROTOCOL_ACTI+1; //Vivotek
+        public static final int NET_PROTOCOL_ARECONT = NET_PROTOCOL_VIVOTEK+1; //Arecont
+        public static final int NET_PROTOCOL_PRIVATEEH = NET_PROTOCOL_ARECONT+1; //PrivateEH
+        public static final int NET_PROTOCOL_IMATEK = NET_PROTOCOL_PRIVATEEH+1; //IMatek
+        public static final int NET_PROTOCOL_SHANY = NET_PROTOCOL_IMATEK+1; //Shany
+        public static final int NET_PROTOCOL_VIDEOTREC = NET_PROTOCOL_SHANY+1; //动力盈科
+        public static final int NET_PROTOCOL_URA = NET_PROTOCOL_VIDEOTREC+1; //Ura
+        public static final int NET_PROTOCOL_BITICINO = NET_PROTOCOL_URA+1; //Bticino
+        public static final int NET_PROTOCOL_ONVIF2 = NET_PROTOCOL_BITICINO+1; //Onvif协议类型,同NET_PROTOCOL_ONVIF
+        public static final int NET_PROTOCOL_SHEPHERD = NET_PROTOCOL_ONVIF2+1; //视霸
+        public static final int NET_PROTOCOL_YAAN = NET_PROTOCOL_SHEPHERD+1; //亚安
+        public static final int NET_PROTOCOL_AIRPOINT = NET_PROTOCOL_YAAN+1; //Airpop
+        public static final int NET_PROTOCOL_TYCO = NET_PROTOCOL_AIRPOINT+1; //TYCO
+        public static final int NET_PROTOCOL_XUNMEI = NET_PROTOCOL_TYCO+1; //讯美
+        public static final int NET_PROTOCOL_HIKVISION = NET_PROTOCOL_XUNMEI+1; //
+        public static final int NET_PROTOCOL_LG = NET_PROTOCOL_HIKVISION+1; //LG
+        public static final int NET_PROTOCOL_AOQIMAN = NET_PROTOCOL_LG+1; //奥奇曼
+        public static final int NET_PROTOCOL_BAOKANG = NET_PROTOCOL_AOQIMAN+1; //宝康
+        public static final int NET_PROTOCOL_WATCHNET = NET_PROTOCOL_BAOKANG+1; //Watchnet
+        public static final int NET_PROTOCOL_XVISION = NET_PROTOCOL_WATCHNET+1; //Xvision
+        public static final int NET_PROTOCOL_FUSITSU = NET_PROTOCOL_XVISION+1; //富士通
+        public static final int NET_PROTOCOL_CANON = NET_PROTOCOL_FUSITSU+1; //Canon
+        public static final int NET_PROTOCOL_GE = NET_PROTOCOL_CANON+1; //GE
+        public static final int NET_PROTOCOL_Basler = NET_PROTOCOL_GE+1; //巴斯勒
+        public static final int NET_PROTOCOL_Patro = NET_PROTOCOL_Basler+1; //帕特罗
+        public static final int NET_PROTOCOL_CPKNC = NET_PROTOCOL_Patro+1; //CPPLUSK系列
+        public static final int NET_PROTOCOL_CPRNC = NET_PROTOCOL_CPKNC+1; //CPPLUSR系列
+        public static final int NET_PROTOCOL_CPUNC = NET_PROTOCOL_CPRNC+1; //CPPLUSU系列
+        public static final int NET_PROTOCOL_CPPLUS = NET_PROTOCOL_CPUNC+1; //CPPLUSIPC
+        public static final int NET_PROTOCOL_XunmeiS = NET_PROTOCOL_CPPLUS+1; //讯美s,实际协议为Onvif
+        public static final int NET_PROTOCOL_GDDW = NET_PROTOCOL_XunmeiS+1; //广东电网
+        public static final int NET_PROTOCOL_PSIA = NET_PROTOCOL_GDDW+1; //PSIA
+        public static final int NET_PROTOCOL_GB2818 = NET_PROTOCOL_PSIA+1; //GB2818
+        public static final int NET_PROTOCOL_GDYX = NET_PROTOCOL_GB2818+1; //GDYX
+        public static final int NET_PROTOCOL_OTHER = NET_PROTOCOL_GDYX+1; //由用户自定义
+    }
+
+    // 雨刷来回循环刷,雨刷模式配置为手动模式时有效(对应命令 CTRLTYPE_CTRL_RAINBRUSH_MOVECONTINUOUSLY)
+    public static class NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannel;//表示雨刷的索引
+        public int nInterval;//雨刷间隔
+
+        public NET_CTRL_RAINBRUSH_MOVECONTINUOUSLY()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 雨刷停止刷,雨刷模式配置为手动模式时有效(对应命令 CTRLTYPE_CTRL_RAINBRUSH_STOPMOVE)
+    public static class NET_CTRL_RAINBRUSH_STOPMOVE extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannel;//表示雨刷的索引
+
+        public NET_CTRL_RAINBRUSH_STOPMOVE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 雨刷来回刷一次,雨刷模式配置为手动模式时有效(对应命令 CTRLTYPE_CTRL_RAINBRUSH_MOVEONCE)
+    public static class NET_CTRL_RAINBRUSH_MOVEONCE extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannel;//表示雨刷的索引
+
+        public NET_CTRL_RAINBRUSH_MOVEONCE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // DSP能力描述,扩展类型,对应CLIENT_QueryDevState接口
+    public static class NET_DEV_DSP_ENCODECAP extends SdkStructure
+    {
+        public int dwVideoStandardMask; //视频制式掩码,按位表示设备能够支持的视频制式
+        public int dwImageSizeMask;		//分辨率掩码,按位表示设备能够支持的分辨率
+        public int dwEncodeModeMask;	//编码模式掩码,按位表示设备能够支持的编码模式
+        public int dwStreamCap;			//按位表示设备支持的多媒体功能,
+        // 第一位表示支持主码流
+        // 第二位表示支持辅码流1
+        // 第三位表示支持辅码流2
+        // 第五位表示支持jpg抓图
+        public int[] dwImageSizeMask_Assi = new int[32];//表示主码流为各分辨率时,支持的辅码流分辨率掩码。
+        public int dwMaxEncodePower;	//DSP支持的最高编码能力
+        public short wMaxSupportChannel;//每块DSP支持最多输入视频通道数
+        public short wChannelMaxSetSync;//DSP每通道的最大编码设置是否同步;0:不同步,1:同步
+        public byte[] bMaxFrameOfImageSize = new byte[32];//不同分辨率下的最大采集帧率,与dwVideoStandardMask按位对应
+        public byte bEncodeCap;			//标志,配置时要求符合下面条件,否则配置不能生效;
+        // 0:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力,
+        // 1:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力,
+        // 辅码流的编码能力 <= 主码流的编码能力,
+        // 辅码流的分辨率 <= 主码流的分辨率,
+        // 主码流和辅码流的帧率 <= 前端视频采集帧率
+        // 2:N5的计算方法
+        // 辅码流的分辨率 <= 主码流的分辨率
+        // 查询支持的分辨率和相应最大帧率
+        public byte[] reserved = new byte[95];
+    }
+
+    //云台控制坐标单元
+    public static class PTZ_SPACE_UNIT extends SdkStructure
+    {
+        public int nPositionX;  // 云台水平运动位置,有效范围:0,3600]
+        public int nPositionY;  // 云台垂直运动位置,有效范围:-1800,1800]
+        public int nZoom;       // 云台光圈变动位置,有效范围:0,128]
+        public byte[] szReserve = new byte[32];//预留32字节
+    }
+
+    //云台控制速度单元
+    public static class PTZ_SPEED_UNIT extends SdkStructure
+    {
+        public float fPositionX;//云台水平方向速率,归一化到-1~1
+        public float fPositionY;//云台垂直方向速率,归一化到-1~1
+        public float fZoom;//云台光圈放大倍率,归一化到0~1
+        public byte[] szReserve = new byte[32];//预留32字节
+    }
+
+    //持续控制云台对应结构
+    public static class PTZ_CONTROL_CONTINUOUSLY extends SdkStructure
+    {
+        public PTZ_SPEED_UNIT 	  stuSpeed;							//云台运行速度
+        public int 				  nTimeOut;							//连续移动超时时间,单位为秒
+        public byte[] 			  szReserve = new byte[64];			//预留64字节
+    }
+
+    //绝对控制云台对应结构
+    public static class PTZ_CONTROL_ABSOLUTELY extends SdkStructure
+    {
+        public PTZ_SPACE_UNIT 	 stuPosition;						//云台绝对移动位置
+        public PTZ_SPEED_UNIT	 stuSpeed;							//云台运行速度
+        public byte[] 			 szReserve = new byte[64];			//预留64字节
+    }
+
+    //带速度转动到预置位点云台控制对应结构
+    public static class PTZ_CONTROL_GOTOPRESET extends SdkStructure
+    {
+        public int 				nPresetIndex;						//预置位索引
+        public PTZ_SPEED_UNIT 	stuSpeed;							//云台运行速度
+        public byte[] 			szReserve = new byte[64];			//预留64字节
+    }
+
+    //设置云台可视域信息
+    public static class PTZ_VIEW_RANGE_INFO extends SdkStructure
+    {
+        public int 				nStructSize;
+        public int 				nAzimuthH;							//水平方位角度,0~3600,单位:度
+
+        public PTZ_VIEW_RANGE_INFO()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    //云台绝对聚焦对应结构
+    public static class PTZ_FOCUS_ABSOLUTELY extends SdkStructure
+    {
+        public int 			   dwValue;					 //云台聚焦位置,取值范围(0~8191)
+        public int 			   dwSpeed;					 //云台聚焦速度,取值范围(0~7)
+        public byte[]		   szReserve = new byte[64]; //预留64字节
+    }
+
+    // 云台控制-扇扫对应结构
+    public static class PTZ_CONTROL_SECTORSCAN extends SdkStructure
+    {
+        public int 			 nBeginAngle;				//起始角度,范围:-180,180]
+        public int			 nEndAngle;					//结束角度,范围:-180,180]
+        public int 			 nSpeed;					//速度,范围:0,255]
+        public byte[]		 szReserve = new byte[64];  //预留64字节
+    }
+
+    // 控制鱼眼电子云台信息
+    public static class PTZ_CONTROL_SET_FISHEYE_EPTZ extends SdkStructure
+    {
+        public int 			 dwSize;					//结构体大小
+        public int 			 dwWindowID;				//进行EPtz控制的窗口编号
+        public int 			 dwCommand;					//电子云台命令
+        public int 			 dwParam1;					//命令对应参数1
+        public int 			 dwParam2;					//命令对应参数2
+        public int 			 dwParam3;					//命令对应参数3
+        public int 			 dwParam4;					//命令对应参数4
+    }
+
+    // 光照场景类型
+    public static class EM_LIGHT_SCENE extends SdkStructure
+    {
+        public static final int EM_LIGHT_SCENE_UNKNOWN=0;             // 未知
+        public static final int EM_LIGHT_SCENE_DAY=1;                 // 白天
+        public static final int EM_LIGHT_SCENE_NIGHT=2;               // 夜晚
+        public static final int EM_LIGHT_SCENE_NORMAL=3;              // 普通
+        public static final int EM_LIGHT_SCENE_FRONT_LIGHT=4;         // 顺光
+        public static final int EM_LIGHT_SCENE_BACK_LIGHT=5;          // 一般逆光
+        public static final int EM_LIGHT_SCENE_STRONG_LIGHT=6;        // 强逆光
+        public static final int EM_LIGHT_SCENE_LOW_LIGHT=7;           // 低照度
+        public static final int EM_LIGHT_SCENE_CUSTOM=8;              // 自定义
+    };
+
+    // 变倍设置基本信息单元
+    public static class CFG_VIDEO_IN_ZOOM_UNIT extends SdkStructure
+    {
+        public int nSpeed;//变倍速率(0~7)
+        public int bDigitalZoom;//是否数字变倍, 类型为BOOL, 取值0或者1
+        public int nZoomLimit;//当前速率下最大变倍上限(0~13)。
+        public int  emLightScene;                        //光照场景名称 EM_LIGHT_SCENE
+    }
+
+    // 单通道变倍设置基本信息
+    public static class CFG_VIDEO_IN_ZOOM extends SdkStructure
+    {
+        public int nChannelIndex;//通道号
+        public int nVideoInZoomRealNum;//配置使用个数
+	    public CFG_VIDEO_IN_ZOOM_UNIT[] stVideoInZoomUnit = new CFG_VIDEO_IN_ZOOM_UNIT[MAX_VIDEO_IN_ZOOM];//通道变速配置单元信息
+        public CFG_VIDEO_IN_ZOOM(){
+            for(int i=0;i<stVideoInZoomUnit.length;i++){
+                stVideoInZoomUnit[i]=new CFG_VIDEO_IN_ZOOM_UNIT();
+            }
+        }
+    }
+
+    // 设备状态
+    public static class CFG_TRAFFIC_DEVICE_STATUS extends SdkStructure
+    {
+        public byte[]                 szType = new byte[MAX_PATH];          // 设备类型 支持:"Radar","Detector","SigDetector","StroboscopicLamp"," FlashLamp"
+        public byte[]                 szSerialNo = new byte[MAX_PATH];      // 设备编号
+        public byte[]                 szVendor = new byte[MAX_PATH];        // 生产厂商
+        public int                    nWokingState;                         // 工作状态 0-故障,1-正常工作
+        public byte				      byLightState;						    // RS485灯的亮灭状态,Type 为"DhrsStroboscopicLamp"或者"DhrsSteadyLamp"时有效
+        // 0-未知, 1-灯亮, 2-灯灭
+        public byte[]			      byReserved = new byte[3];             // 预留字节
+    }
+
+    // 获取设备工作状态是否正常 (对应命令 CFG_CAP_CMD_DEVICE_STATE )
+    public static class CFG_CAP_TRAFFIC_DEVICE_STATUS extends SdkStructure
+    {
+        public int                          nStatus;                        // stuStatus 实际个数
+        public CFG_TRAFFIC_DEVICE_STATUS[]  stuStatus = (CFG_TRAFFIC_DEVICE_STATUS[]) new CFG_TRAFFIC_DEVICE_STATUS().toArray(MAX_STATUS_NUM);
+    }
+
+    // 视频输入通道
+    public static class CFG_RemoteDeviceVideoInput extends SdkStructure
+    {
+        public int				bEnable;
+        public byte[]			szName = new byte[MAX_DEVICE_NAME_LEN];
+        public byte[]			szControlID = new byte[MAX_DEV_ID_LEN_EX];
+        public byte[]			szMainUrl = new byte[MAX_PATH];				// 主码流url地址
+        public byte[]			szExtraUrl = new byte[MAX_PATH]; 			// 辅码流url地址
+        public int				nServiceType; 								// 服务类型, 0-TCP, 1-UDP, 2-MCAST, -1-AUTO
+    }
+
+    // 远程设备
+    public static class AV_CFG_RemoteDevice extends SdkStructure
+    {
+        public int 				nStructSize;
+        public int 				bEnable; 									    // 使能
+        public byte[]			szID = new byte[AV_CFG_Device_ID_Len]; 			// 设备ID
+        public byte[]			szIP = new byte[AV_CFG_IP_Address_Len];			// 设备IP
+        public int 				nPort; 											// 端口
+        public byte[]			szProtocol = new byte[AV_CFG_Protocol_Len]; 	// 协议类型
+        public byte[]			szUser = new byte[AV_CFG_User_Name_Len]; 		// 用户名
+        public byte[]			szPassword = new byte[AV_CFG_Password_Len]; 	// 密码
+        public byte[]			szSerial = new byte[AV_CFG_Serial_Len];			// 设备序列号
+        public byte[]			szDevClass = new byte[AV_CFG_Device_Class_Len]; // 设备类型
+        public byte[]			szDevType = new byte[AV_CFG_Device_Type_Len]; 	// 设备型号
+        public byte[]			szName = new byte[AV_CFG_Device_Name_Len]; 		// 机器名称
+        public byte[]			szAddress =  new byte[AV_CFG_Address_Len]; 		// 机器部署地点
+        public byte[]			szGroup = new byte[AV_CFG_Group_Name_Len]; 		// 机器分组
+        public int 				nDefinition; 									// 清晰度, 0-标清, 1-高清
+        public int 				nVideoChannel; 									// 视频输入通道数
+        public int 				nAudioChannel; 									// 音频输入通道数
+        public int             	nRtspPort; 										// Rtsp端口号
+        public byte[]           szVendor = new byte[MAX_PATH]; 					// 设备接入类型
+        public Pointer 			pVideoInput; 									// 视频输入通道,用户申请nMaxVideoInputs个CFG_RemoteDeviceVideoInput空间
+        public int              nMaxVideoInputs;
+        public int              nRetVideoInputs;
+        public int				nHttpPort; 										// http端口号
+
+        /* 以下3项为国际接入方式相关  */
+        public int 				bGB28181; 										// 是否有国际接入方式
+        public int				nDevLocalPort; 									// 设备本地端口
+        public byte[]			szDeviceNo = new byte[AV_CFG_DeviceNo_Len]; 	// 设备编号
+        public int				nLoginType;										// 登录方式 0 : TCP直连(默认方式)  6 : 主动注册  7 : P2P方式,此方式时通过SerialNo与设备通过P2P连接
+        public byte[]           szVersion=new byte[32];                  // 设备软件版本
+        public boolean				bPoE;							// 是否由PoE端口连接, 该选项为只读, 只能由设备修改
+        public int				nPoEPort;						// PoE物理端口号, 该选项为只读, 只能由设备修改
+        public byte[]			szMac=new byte[18];						// 设备mac地址,冒号+大写
+        public AV_CFG_RemoteDevice() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 录像模式
+    public static class AV_CFG_RecordMode extends SdkStructure
+    {
+        public int			nStructSize;
+        public int			nMode;							// 录像模式, 0-自动录像,1-手动录像,2-关闭录像
+        public int			nModeExtra1;					// 辅码流录像模式, 0-自动录像,1-手动录像,2-关闭录像
+        public int			nModeExtra2;					// 辅码流2录像模式, 0-自动录像,1-手动录像,2-关闭录像
+
+        public AV_CFG_RecordMode() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 视频分析资源类型
+    public static class CFG_VIDEO_SOURCE_TYPE extends SdkStructure {
+        public static final int CFG_VIDEO_SOURCE_REALSTREAM = 0; // 实时流
+        public static final int CFG_VIDEO_SOURCE_FILESTREAM = 1; // 文件流
+    }
+
+    // 分析源文件类型
+    public static class CFG_SOURCE_FILE_TYPE extends SdkStructure {
+        public static final int CFG_SOURCE_FILE_UNKNOWN = 0; // 未知类型
+        public static final int CFG_SOURCE_FILE_RECORD = 1; // 录像文件
+        public static final int CFG_SOURCE_FILE_PICTURE = 2; // 图片文件
+    }
+
+    // 视频分析源文件信息
+    public static class CFG_SOURCE_FILE_INFO extends SdkStructure {
+        public byte[]				szFilePath = new byte[MAX_PATH];// 文件路径
+        public int 					emFileType; // 文件类型,详见 CFG_SOURCE_FILE_TYPE
+    }
+
+    // 每个视频输入通道对应的视频分析资源配置信息
+    public static class CFG_ANALYSESOURCE_INFO extends SdkStructure {
+        public byte					bEnable; 		 // 视频分析使能   1-使能, 0-禁用
+        public byte[]				bReserved = new byte[3]; // 保留对齐
+        public int					nChannelID;		 // 智能分析的前端视频通道号
+        public int					nStreamType;	 // 智能分析的前端视频码流类型,0:抓图码流; 1:主码流; 2:子码流1; 3:子码流2; 4:子码流3; 5:物体流
+        public byte[]				szRemoteDevice = new byte[MAX_NAME_LEN];// 设备名
+        public int					abDeviceInfo; 	 // 设备信息是否有效 ; 1-有效,0-无效
+        public AV_CFG_RemoteDevice  stuDeviceInfo;   // 设备信息
+        public int                  emSourceType; 	 // 视频分析源类型,详见  CFG_VIDEO_SOURCE_TYPE
+        public CFG_SOURCE_FILE_INFO stuSourceFile;   // 当视频分析源类型为 CFG_VIDEO_SOURCE_FILESTREAM 时,有效
+    }
+
+    public static class CFG_OVERSPEED_INFO extends SdkStructure {
+        public int[]	nSpeedingPercentage = new int[2];                        // 超速百分比区间要求区间不能重叠。有效值为0,正数,-1,-1表示无穷大值
+        // 如果是欠速:要求区间不能重叠。有效值为0,正数,-1,-1表示无穷大值,欠速百分比的计算方式:限低速-实际车速/限低速
+        public byte[]   szCode = new byte[MAX_VIOLATIONCODE];                     // 违章代码
+        public byte[]   szDescription = new byte[MAX_VIOLATIONCODE_DESCRIPT];     // 违章描述
+    }
+
+    // 违章代码配置表
+    public static class VIOLATIONCODE_INFO extends SdkStructure {
+        public byte[]	szRetrograde = new byte[MAX_VIOLATIONCODE];			                   // 逆行
+        public byte[]	szRetrogradeDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];               // 违章描述信息
+        public byte[]	szRetrogradeShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];           // 显示名称
+
+        public byte[]	szRetrogradeHighway = new byte[MAX_VIOLATIONCODE];		               // 逆行-高速公路
+        public byte[]	szRetrogradeHighwayDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		   // 违章描述信息
+
+        public byte[]	szRunRedLight = new byte[MAX_VIOLATIONCODE];			               // 闯红灯
+        public byte[]	szRunRedLightDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];			   // 违章描述信息
+
+        public byte[]	szCrossLane = new byte[MAX_VIOLATIONCODE];				               // 违章变道
+        public byte[]	szCrossLaneDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];			       // 违章描述信息
+        public byte[]	szCrossLaneShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];            // 违章变道显示名称
+
+        public byte[]	szTurnLeft = new byte[MAX_VIOLATIONCODE];				               // 违章左转
+        public byte[]   szTurnLeftDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				   // 违章描述信息
+
+        public byte[]   szTurnRight = new byte[MAX_VIOLATIONCODE];				               // 违章右转
+        public byte[]   szTurnRightDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				   // 违章描述信息
+
+        public byte[]   szU_Turn = new byte[MAX_VIOLATIONCODE];				                   // 违章掉头
+        public byte[]   szU_TurnDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				   // 违章描述信息
+        public byte[]   szU_TurnShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];               // 显示信息
+
+        public byte[]   szJam = new byte[MAX_VIOLATIONCODE];					                // 交通拥堵
+        public byte[]   szJamDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];					    // 违章描述信息
+
+        public byte[]   szParking = new byte[MAX_VIOLATIONCODE];				                // 违章停车
+        public byte[]   szParkingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		 	      	// 违章描述信息
+        public byte[]   szParkingShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];               // 违章停车显示名称
+
+        // 超速 和 超速比例 只需且必须有一个配置
+        public byte[]    szOverSpeed = new byte[MAX_VIOLATIONCODE];				                // 超速
+        public byte[]    szOverSpeedDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				// 违章描述信息
+        public CFG_OVERSPEED_INFO[]  stOverSpeedConfig = (CFG_OVERSPEED_INFO[])new CFG_OVERSPEED_INFO().toArray(5);                                               // 超速比例代码
+
+        // 超速(高速公路) 和 超速比例(高速公路) 只需且必须有一个配置
+        public byte[]    szOverSpeedHighway = new byte[MAX_VIOLATIONCODE];		                // 超速-高速公路
+        public byte[]    szOverSpeedHighwayDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];	      	// 超速-违章描述信息
+        public CFG_OVERSPEED_INFO[] stOverSpeedHighwayConfig = (CFG_OVERSPEED_INFO[])new CFG_OVERSPEED_INFO().toArray(5);                                 // 超速比例代码
+
+        // 欠速 和 欠速比例 只需且必须有一个配置
+        public byte[]    szUnderSpeed = new byte[MAX_VIOLATIONCODE];	                        // 欠速
+        public byte[]    szUnderSpeedDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];	            // 违章描述信息
+        public CFG_OVERSPEED_INFO[] stUnderSpeedConfig = (CFG_OVERSPEED_INFO[]) new CFG_OVERSPEED_INFO().toArray(5);                                              // 欠速配置信息是一个数组,不同的欠速比违章代码不同,为空表示违章代码不区分超速比
+
+        public byte[]    szOverLine = new byte[MAX_VIOLATIONCODE];				                // 压线
+        public byte[]    szOverLineDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];			    	// 违章描述信息
+        public byte[]    szOverLineShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];             // 压线显示名称
+
+        public byte[]    szOverYellowLine = new byte[MAX_VIOLATIONCODE];	                    // 压黄线
+        public byte[]    szOverYellowLineDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];	    	// 违章描述信息
+
+        public byte[]    szYellowInRoute = new byte[MAX_VIOLATIONCODE];			                // 黄牌占道
+        public byte[]    szYellowInRouteDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];			// 黄牌占道违章描述信息
+
+        public byte[]    szWrongRoute = new byte[MAX_VIOLATIONCODE];			                // 不按车道行驶
+        public byte[]    szWrongRouteDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				// 不按车道行驶违章描述信息
+
+        public byte[]    szDrivingOnShoulder = new byte[MAX_VIOLATIONCODE];		                // 路肩行驶
+        public byte[]    szDrivingOnShoulderDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		// 路肩行驶违章描述信息
+
+        public byte[]    szPassing = new byte[MAX_VIOLATIONCODE];                               // 正常行驶
+        public byte[]    szPassingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];               	// 正常行驶违章描述信息
+
+        public byte[]    szNoPassing = new byte[MAX_VIOLATIONCODE];                             // 禁止行驶
+        public byte[]    szNoPassingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 				// 禁止行驶违章描述信息
+
+        public byte[]    szFakePlate = new byte[MAX_VIOLATIONCODE];                             // 套牌
+        public byte[]    szFakePlateDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 				// 套牌违章描述信息
+
+        public byte[]    szParkingSpaceParking = new byte[MAX_VIOLATIONCODE];                   // 车位有车
+        public byte[]    szParkingSpaceParkingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 		// 车位有车违章描述信息、
+
+        public byte[]    szParkingSpaceNoParking = new byte[MAX_VIOLATIONCODE];                 // 车位无车
+        public byte[]    szParkingSpaceNoParkingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 	// 车位无车违章描述信息
+
+        public byte[]    szWithoutSafeBelt = new byte[MAX_VIOLATIONCODE];                       // 不系安全带
+        public byte[]    szWithoutSafeBeltShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];      // 不系安全带显示名称
+        public byte[]    szWithoutSafeBeltDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 	        // 不系安全带违章描述信息
+
+        public byte[]    szDriverSmoking = new byte[MAX_VIOLATIONCODE];                         // 驾驶员抽烟
+        public byte[]    szDriverSmokingShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];        // 驾驶员抽烟显示名称
+        public byte[]    szDriverSmokingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 	        // 驾驶员抽烟带违章描述信息
+
+        public byte[]    szDriverCalling = new byte[MAX_VIOLATIONCODE];                         // 驾驶员打电话
+        public byte[]    szDriverCallingShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];        // 驾驶员打电话显示名称
+        public byte[]    szDriverCallingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT]; 	        // 驾驶员打电话违章描述信息
+
+        public byte[]    szBacking = new byte[MAX_VIOLATIONCODE];                               // 违章倒车
+        public byte[]    szBackingShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];	            // 违章倒车显示名称
+        public byte[]    szBackingDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];                  // 违章倒车描述信息
+
+        public byte[]    szVehicleInBusRoute = new byte[MAX_VIOLATIONCODE];                     // 违章占道
+        public byte[]    szVehicleInBusRouteShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];    // 违章占道显示名称
+        public byte[]    szVehicleInBusRouteDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];        // 违章占道描述信息
+
+        public byte[]    szPedestrianRunRedLight = new byte[MAX_VIOLATIONCODE];                 // 行人闯红灯
+        public byte[]    szPedestrianRunRedLightShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];// 行人闯红灯显示名称
+        public byte[]    szPedestrianRunRedLightDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];    // 行人闯红灯描述信息
+
+        public byte[]    szPassNotInOrder = new byte[MAX_VIOLATIONCODE];                        // 未按规定依次通行
+        public byte[]    szPassNotInOrderShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];       // 未按规定依次通行显示名称
+        public byte[]    szPassNotInOrderDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];           // 未按规定依次通行描述信息
+
+        public byte[]	 szTrafficBan = new byte[MAX_VIOLATIONCODE];							// 机动车违法禁令标识
+        public byte[]	 szTrafficBanShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];			// 机动车违法禁令标识显示名称
+        public byte[]	 szTrafficBanDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];				// 描述信息
+
+        public byte[]    szParkingB = new byte[MAX_VIOLATIONCODE];								// B类违章停车
+        public byte[]    szParkingBDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		 			// B类违章描述信息
+        public byte[]    szParkingBShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];   			// B类违章停车显示名称
+
+        public byte[]    szParkingC = new byte[MAX_VIOLATIONCODE];								// C类违章停车
+        public byte[]    szParkingCDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		 			// C类违章描述信息
+        public byte[]    szParkingCShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];   			// C类违章停车显示名称
+
+        public byte[]    szParkingD = new byte[MAX_VIOLATIONCODE];								// D类违章停车
+        public byte[]    szParkingDDesc = new byte[MAX_VIOLATIONCODE_DESCRIPT];		 			// D类违章描述信息
+        public byte[]    szParkingDShowName = new byte[MAX_VIOLATIONCODE_DESCRIPT];   			// D类违章停车显示名称
+
+        public byte[]                szNonMotorHoldUmbrella=new byte[MAX_VIOLATIONCODE];						// 非机动车装载伞具代码
+        public byte[]                szNonMotorHoldUmbrellaDesc=new byte[MAX_VIOLATIONCODE_DESCRIPT];		 	// 非机动车装载伞具描述信息
+        public byte[]                szNonMotorHoldUmbrellaShowName=new byte[MAX_VIOLATIONCODE_DESCRIPT];   	// 非机动车装载伞具显示名称
+        public int                   nBigCarOverSpeedConfigNum;                  // 大车超速配置信息数量
+        public CFG_OVERSPEED_INFO[]    stBigCarOverSpeedConfig=(CFG_OVERSPEED_INFO[])new CFG_OVERSPEED_INFO().toArray(5);       // 大车超速配置信息
+    }
+
+    // 违章抓拍时间配置表
+    public static class TIME_SCHEDULE_INFO extends SdkStructure {
+        public int                	 		bEnable;                                              // 是否启用时间表
+        public TIME_SECTION_WEEK_DAY_6[]    stuTimeScheduleWeekDay =
+                (TIME_SECTION_WEEK_DAY_6[])new TIME_SECTION_WEEK_DAY_6().toArray(WEEK_DAY_NUM);         // 时间表
+    }
+
+    // 违章抓拍自定义时间配置
+    public static class VIOLATION_TIME_SCHEDULE extends SdkStructure
+    {
+        public int                abTrafficGate;                  // 是否携带交通卡口信息
+        public TIME_SCHEDULE_INFO  stTrafficGate;                  // 交通卡口时间配置
+
+        public int                abTrafficJunction;              // 是否携带交通路口信息
+        public TIME_SCHEDULE_INFO  stTrafficJunction;              // 交通路口时间配置
+
+        public int                abTrafficTollGate;              // 是否携带新交通卡口信息
+        public TIME_SCHEDULE_INFO  stTrafficTollGate;              // 新交通卡口时间配置
+
+        public int                abTrafficRunRedLight;           // 是否携带交通闯红灯信息
+        public TIME_SCHEDULE_INFO  stTrafficRunRedLight;           // 交通闯红灯时间配置
+
+        public int                abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
+        public TIME_SCHEDULE_INFO  stTrafficRunYellowLight;        // 交通闯黄灯时间配置
+
+        public int                abTrafficOverLine;              // 是否携带交通压线信息
+        public TIME_SCHEDULE_INFO  stTrafficOverLine;              // 交通压线时间配置
+
+        public int                abTrafficOverYellowLine;        // 是否携带交通压黄线信息
+        public TIME_SCHEDULE_INFO  stTrafficOverYellowLine;        // 交通压黄线时间配置
+
+        public int                abTrafficRetrograde;            // 是否携带交通逆行信息
+        public TIME_SCHEDULE_INFO  stTrafficRetrograde;            // 交通逆行时间配置
+
+        public int                abTrafficTurnLeft;              // 是否携带交通违章左转信息
+        public TIME_SCHEDULE_INFO  stTrafficTurnLeft;              // 交通违章左转时间配置
+
+        public int                abTrafficTurnRight;             // 是否携带交通违章右转信息
+        public TIME_SCHEDULE_INFO  stTrafficTurnRight;             // 交通路口违章右转类型
+
+        public int                abTrafficU_Turn;                // 是否携带交通违章掉头信息
+        public TIME_SCHEDULE_INFO  stTrafficU_Turn;                // 交通违章掉头时间配置
+
+        public int                abTrafficCrossLane;             // 是否携带交通违章变道信息
+        public TIME_SCHEDULE_INFO  stTrafficCrossLane;             // 交通违章变道时间配置
+
+        public int                abTrafficParking;               // 是否携带交通违章停车信息
+        public TIME_SCHEDULE_INFO  stTrafficParking;               // 交通违章停车时间配置
+
+        public int                abTrafficJam;                   // 是否携带交通拥堵信息
+        public TIME_SCHEDULE_INFO  stTrafficJam;                   // 交通拥堵时间配置
+
+        public int                abTrafficIdle;                  // 是否携带交通交通空闲信息
+        public TIME_SCHEDULE_INFO  stTrafficIdle;                  // 交通交通空闲时间配置
+
+        public int                abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
+        public TIME_SCHEDULE_INFO  stTrafficWaitingArea;           // 交通违章驶入待行区时间配置
+
+        public int                abTrafficUnderSpeed;            // 是否携带交通欠速信息
+        public TIME_SCHEDULE_INFO  stTrafficUnderSpeed;            // 交通欠速时间配置
+
+        public int                abTrafficOverSpeed;             // 是否携带交通超速信息
+        public TIME_SCHEDULE_INFO  stTrafficOverSpeed;             // 交通超速时间配置
+
+        public int                abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
+        public TIME_SCHEDULE_INFO  stTrafficWrongRoute;            // 交通不按车道行驶时间配置
+
+        public int                abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
+        public TIME_SCHEDULE_INFO  stTrafficYellowInRoute;         // 交通黄牌占道时间配置
+
+        public int                abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
+        public TIME_SCHEDULE_INFO  stTrafficVehicleInRoute;        // 交通有车占道时间配置
+
+        public int                abTrafficControl;               // 是否携带交通交通管理信息
+        public TIME_SCHEDULE_INFO  stTrafficControl;               // 交通交通管理时间配置
+
+        public int                abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
+        public TIME_SCHEDULE_INFO  stTrafficObjectAlarm;           // 交通指定类型抓拍时间配置
+
+        public int                abTrafficAccident;              // 是否携带交通交通事故信息
+        public TIME_SCHEDULE_INFO  stTrafficAccident;              // 交通交通事故时间配置
+
+        public int                abTrafficStay;                  // 是否携带交通交通停留/滞留信息
+        public TIME_SCHEDULE_INFO  stTrafficStay;                  // 交通交通停留/滞留时间配置
+
+        public int                abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
+        public TIME_SCHEDULE_INFO  stTrafficPedestrainPriority;    // 交通斑马线行人优先时间配置
+
+        public int                abTrafficPedestrain;            // 是否携带交通交通行人事件信息
+        public TIME_SCHEDULE_INFO  stTrafficPedestrain;            // 交通交通行人事件时间配置
+
+        public int                abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
+        public TIME_SCHEDULE_INFO  stTrafficThrow;                 // 交通交通抛洒物品事件时间配置
+
+        public int                abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
+        public TIME_SCHEDULE_INFO  stTrafficVehicleInBusRoute;     // 交通违章占道时间配置
+
+        public int                abTrafficBacking;               // 是否携带交通违章倒车信息
+        public TIME_SCHEDULE_INFO  stTrafficBacking;               // 交通违章倒车时间配置
+
+        public int                abTrafficOverStopLine;          // 是否携带交通压停止线信息
+        public TIME_SCHEDULE_INFO  stTrafficOverStopLine;          // 交通压停止线时间配置
+
+        public int                abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
+        public TIME_SCHEDULE_INFO  stTrafficParkingOnYellowBox;    // 交通黄网格线抓拍时间配置
+
+        public int                abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
+        public TIME_SCHEDULE_INFO  stTrafficParkingSpaceParking;   // 交通车位有车时间配置
+
+        public int                abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
+        public TIME_SCHEDULE_INFO  stTrafficParkingSpaceNoParking; // 交通车位无车时间配置
+
+        public int                abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
+        public TIME_SCHEDULE_INFO  stTrafficParkingSpaceOverLine;  // 交通车位有车压线时间配置
+
+        public int                abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
+        public TIME_SCHEDULE_INFO  stParkingSpaceDetection;        // 交通多停车位状态检测时间配置
+
+        public int                abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
+        public TIME_SCHEDULE_INFO  stTrafficRestrictedPlate;       // 交通受限车牌时间配置
+
+        public int                abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
+        public TIME_SCHEDULE_INFO  stTrafficWithoutSafeBelt;       // 交通不系安全带时间配置
+
+        public int                abTrafficNoPassing;             // 是否携带交通禁行信息
+        public TIME_SCHEDULE_INFO  stTrafficNoPassing;             // 交通禁行时间配置
+
+        public int                abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
+        public TIME_SCHEDULE_INFO  stVehicleAnalyse;               // 交通车辆特征时间配置
+
+        public int                abCrossLineDetection;           // 是否携带交通警戒线信息
+        public TIME_SCHEDULE_INFO  stCrossLineDetection;           // 交通警戒线时间配置
+
+        public int                abCrossFenceDetection;          // 是否携带交通穿越围栏信息
+        public TIME_SCHEDULE_INFO  stCrossFenceDetection;          // 交通穿越围栏时间配置
+
+        public int                abCrossRegionDetection;         // 是否携带交通警戒区信息
+        public TIME_SCHEDULE_INFO  stCrossRegionDetection;         // 交通警戒区时间配置
+
+        public int                abPasteDetection;               // 是否携带交通ATM贴条信息
+        public TIME_SCHEDULE_INFO  stPasteDetection;               // 交通ATM贴条时间配置
+
+        public int                abLeftDetection;                // 是否携带交通物品遗留信息
+        public TIME_SCHEDULE_INFO  stLeftDetection;                // 交通物品遗留时间配置
+
+        public int                abPreservation;                 // 是否携带交通物品保全信息
+        public TIME_SCHEDULE_INFO  stPreservation;                 // 交通物品保全时间配置
+
+        public int                abTakenAwayDetection;           // 是否携带交通物品搬移信息
+        public TIME_SCHEDULE_INFO  stTakenAwayDetection;           // 交通物品搬移时间配置
+
+        public int                abStayDetection;                // 是否携带交通停留/滞留信息
+        public TIME_SCHEDULE_INFO  stStayDetection;                // 交通停留/滞留时间配置
+
+        public int                abParkingDetection;             // 是否携带交通非法停车信息
+        public TIME_SCHEDULE_INFO  stParkingDetection;             // 交通非法停车时间配置
+
+        public int                abWanderDetection;              // 是否携带交通徘徊信息
+        public TIME_SCHEDULE_INFO  stWanderDetection;              // 交通徘徊时间配置
+
+        public int                abMoveDetection;                // 是否携带交通运动信息
+        public TIME_SCHEDULE_INFO  stMoveDetection;                // 交通运动时间配置
+
+        public int                abTailDetection;                // 是否携带交通尾随信息
+        public TIME_SCHEDULE_INFO  stTailDetection;                // 交通尾随时间配置
+
+        public int                abRioterDetection;              // 是否携带交通聚集信息
+        public TIME_SCHEDULE_INFO  stRioterDetection;              // 交通聚集时间配置
+
+        public int                abFightDetection;               // 是否携带交通打架信息
+        public TIME_SCHEDULE_INFO  stFightDetection;               // 交通打架时间配置
+
+        public int                abRetrogradeDetection;          // 是否携带交通逆行信息
+        public TIME_SCHEDULE_INFO  stRetrogradeDetection;          // 交通逆行时间配置
+
+        public int                abFireDetection;                // 是否携带交通火焰信息
+        public TIME_SCHEDULE_INFO  stFireDetection;                // 交通火焰时间配置
+
+        public int                abSmokeDetection;               // 是否携带交通烟雾信息
+        public TIME_SCHEDULE_INFO  stSmokeDetection;               // 交通烟雾时间配置
+
+        public int                abNumberStat;                   // 是否携带交通数量统计信息
+        public TIME_SCHEDULE_INFO  stNumberStat;                   // 交通数量统计时间配置
+
+        public int                abVideoAbnormalDetection;       // 是否携带交通视频异常信息
+        public TIME_SCHEDULE_INFO  stVideoAbnormalDetection;       // 交通视频异常时间配置
+
+        public int                abPSRiseDetection;        // 是否携带囚犯起身检测信息
+        public TIME_SCHEDULE_INFO  stPSRiseDetection;        // 囚犯起身检测时间配置
+
+        public int                abFaceDetection;                // 是否携带目标检测信息
+        public TIME_SCHEDULE_INFO  stFaceDetection;                // 目标检测时间配置
+
+        public int                abFaceRecognition;              // 是否携带目标识别信息
+        public TIME_SCHEDULE_INFO  stFaceRecognition;              // 目标识别时间配置
+
+        public int                abDensityDetection;             // 是否携带密集度检测信息
+        public TIME_SCHEDULE_INFO  stDensityDetection;             // 密集度检测时间配置
+
+        public int                abQueueDetection;               // 是否携带排队检测信息
+        public TIME_SCHEDULE_INFO  stQueueDetection;               // 排队检测时间配置
+
+        public int                abClimbDetection;               // 是否携带攀高检测信息
+        public TIME_SCHEDULE_INFO  stClimbDetection;               // 攀高时间配置
+
+        public int                abLeaveDetection;               // 是否携带离岗检测信息
+        public TIME_SCHEDULE_INFO  stLeaveDetection;               // 离岗时间配置
+
+        public int                abVehicleOnPoliceCar;           // 是否携带车载警车信息
+        public TIME_SCHEDULE_INFO  stVehicleOnPoliceCar;           // 车载警车时间配置
+
+        public int                abVehicleOnBus;                 // 是否携带车载公交信息
+        public TIME_SCHEDULE_INFO  stVehicleOnBus;                 // 车载公交时间配置
+
+        public int                abVehicleOnSchoolBus;           // 是否携带车载校车信息
+        public TIME_SCHEDULE_INFO  stVehicleOnSchoolBus;           // 车载校车时间配置
+
+        public Boolean                abTrafficNonMotorHoldUmbrella;  // 是否携带非机动车装载伞具时间配置
+        public TIME_SCHEDULE_INFO  stTrafficNonMotorHoldUmbrella;  // 非机动车装载伞具时间配置
+    }
+
+    // 交通全局配置对应图片命名格式参数配置
+    public static class TRAFFIC_NAMING_FORMAT extends SdkStructure {
+        public byte[]               szFormat = new byte[CFG_COMMON_STRING_256];            // 图片格式
+    }
+
+    // CFG_NET_TIME 时间
+    public static class CFG_NET_TIME extends SdkStructure {
+        public int                 	nStructSize;
+        public int					dwYear;					// 年
+        public int					dwMonth;				// 月
+        public int					dwDay;					// 日
+        public int					dwHour;					// 时
+        public int					dwMinute;				// 分
+        public int					dwSecond;				// 秒
+
+        public CFG_NET_TIME() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // PERIOD_OF_VALIDITY
+    public static class PERIOD_OF_VALIDITY extends SdkStructure {
+        public CFG_NET_TIME            stBeginTime;                    // 标定开始时间
+        public CFG_NET_TIME            stEndTime;                      // 标定到期时间
+    }
+
+    // 交通全局配置对应标定相关配置
+    public static class TRAFFIC_CALIBRATION_INFO extends SdkStructure {
+        public byte[]               szUnit = new byte[CFG_COMMON_STRING_256];              // 标定单位
+        public byte[]               szCertificate = new byte[CFG_COMMON_STRING_256];       // 标定证书
+        public PERIOD_OF_VALIDITY   stPeriodOfValidity;                         // 标定有效期
+    }
+
+    // TRAFFIC_EVENT_CHECK_MASK
+    public static class TRAFFIC_EVENT_CHECK_MASK extends SdkStructure {
+        public int                abTrafficGate;                  // 是否携带交通卡口信息
+        public int                 nTrafficGate;                   // 交通卡口检测模式掩码
+
+        public int                abTrafficJunction;              // 是否携带交通路口信息
+        public int                 nTrafficJunction;               // 交通路口检测模式掩码
+
+        public int                abTrafficTollGate;              // 是否携带新交通卡口信息
+        public int                 nTrafficTollGate;               // 新交通卡口检测模式掩码
+
+        public int                abTrafficRunRedLight;           // 是否携带交通闯红灯信息
+        public int                 nTrafficRunRedLight;            // 交通闯红灯检测模式掩码
+
+        public int                abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
+        public int                 nTrafficRunYellowLight;         // 交通闯黄灯检测模式掩码
+
+        public int                abTrafficOverLine;              // 是否携带交通压线信息
+        public int                 nTrafficOverLine;               // 交通压线检测模式掩码
+
+        public int                abTrafficOverYellowLine;        // 是否携带交通压黄线信息
+        public int                 nTrafficOverYellowLine;         // 交通压黄线检测模式掩码
+
+        public int                abTrafficRetrograde;            // 是否携带交通逆行信息
+        public int                 nTrafficRetrograde;             // 交通逆行检测模式掩码
+
+        public int                abTrafficTurnLeft;              // 是否携带交通违章左转信息
+        public int                 nTrafficTurnLeft;               // 交通违章左转检测模式掩码
+
+        public int                abTrafficTurnRight;             // 是否携带交通违章右转信息
+        public int                 nTrafficTurnRight;              // 交通路口违章右转类型
+
+        public int                abTrafficU_Turn;                // 是否携带交通违章掉头信息
+        public int                 nTrafficU_Turn;                 // 交通违章掉头检测模式掩码
+
+        public int                abTrafficCrossLane;             // 是否携带交通违章变道信息
+        public int                 nTrafficCrossLane;              // 交通违章变道检测模式掩码
+
+        public int                abTrafficParking;               // 是否携带交通违章停车信息
+        public int                 nTrafficParking;                // 交通违章停车检测模式掩码
+
+        public int                abTrafficJam;                   // 是否携带交通拥堵信息
+        public int                 nTrafficJam;                    // 交通拥堵检测模式掩码
+
+        public int                abTrafficIdle;                  // 是否携带交通交通空闲信息
+        public int                 nTrafficIdle;                   // 交通交通空闲检测模式掩码
+
+        public int                abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
+        public int                 nTrafficWaitingArea;            // 交通违章驶入待行区检测模式掩码
+
+        public int                abTrafficUnderSpeed;            // 是否携带交通欠速信息
+        public int                 nTrafficUnderSpeed;             // 交通欠速检测模式掩码
+
+        public int                abTrafficOverSpeed;             // 是否携带交通超速信息
+        public int                 nTrafficOverSpeed;              // 交通超速检测模式掩码
+
+        public int                abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
+        public int                 nTrafficWrongRoute;             // 交通不按车道行驶检测模式掩码
+
+        public int                abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
+        public int                 nTrafficYellowInRoute;          // 交通黄牌占道检测模式掩码
+
+        public int                abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
+        public int                 nTrafficVehicleInRoute;         // 交通有车占道检测模式掩码
+
+        public int                abTrafficControl;               // 是否携带交通交通管理信息
+        public int                 nTrafficControl;                // 交通交通管理检测模式掩码
+
+        public int                abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
+        public int                 nTrafficObjectAlarm;            // 交通指定类型抓拍检测模式掩码
+
+        public int                abTrafficAccident;              // 是否携带交通交通事故信息
+        public int                 nTrafficAccident;               // 交通交通事故检测模式掩码
+
+        public int                abTrafficStay;                  // 是否携带交通交通停留/滞留信息
+        public int                 nTrafficStay;                   // 交通交通停留/滞留检测模式掩码
+
+        public int                abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
+        public int                 nTrafficPedestrainPriority;     // 交通斑马线行人优先检测模式掩码
+
+        public int                abTrafficPedestrain;            // 是否携带交通交通行人事件信息
+        public int                 nTrafficPedestrain;             // 交通交通行人事件检测模式掩码
+
+        public int                abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
+        public int                 nTrafficThrow;                  // 交通交通抛洒物品事件检测模式掩码
+
+        public int                abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
+        public int                 nTrafficVehicleInBusRoute;      // 交通违章占道检测模式掩码
+
+        public int                abTrafficBacking;               // 是否携带交通违章倒车信息
+        public int                 nTrafficBacking;                // 交通违章倒车检测模式掩码
+
+        public int                abTrafficOverStopLine;          // 是否携带交通压停止线信息
+        public int                 nTrafficOverStopLine;           // 交通压停止线检测模式掩码
+
+        public int                abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
+        public int                 nTrafficParkingOnYellowBox;     // 交通黄网格线抓拍检测模式掩码
+
+        public int                abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
+        public int                 nTrafficParkingSpaceParking;    // 交通车位有车检测模式掩码
+
+        public int                abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
+        public int                 nTrafficParkingSpaceNoParking;  // 交通车位无车检测模式掩码
+
+        public int                abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
+        public int                 nTrafficParkingSpaceOverLine;   // 交通车位有车压线检测模式掩码
+
+        public int                abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
+        public int                 nParkingSpaceDetection;         // 交通多停车位状态检测检测模式掩码
+
+        public int                abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
+        public int                 nTrafficRestrictedPlate;        // 交通受限车牌检测模式掩码
+
+        public int                abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
+        public int                 nTrafficWithoutSafeBelt;        // 交通不系安全带检测模式掩码
+
+        public int                abTrafficNoPassing;             // 是否携带交通禁行信息
+        public int                 nTrafficNoPassing;              // 交通禁行检测模式掩码
+
+        public int                abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
+        public int                 nVehicleAnalyse;                // 交通车辆特征检测模式掩码
+
+        public int                abCrossLineDetection;           // 是否携带交通警戒线信息
+        public int                 nCrossLineDetection;            // 交通警戒线检测模式掩码
+
+        public int                abCrossFenceDetection;          // 是否携带交通穿越围栏信息
+        public int                 nCrossFenceDetection;           // 交通穿越围栏检测模式掩码
+
+        public int                abCrossRegionDetection;         // 是否携带交通警戒区信息
+        public int                 nCrossRegionDetection;          // 交通警戒区检测模式掩码
+
+        public int                abPasteDetection;               // 是否携带交通ATM贴条信息
+        public int                 nPasteDetection;                // 交通ATM贴条检测模式掩码
+
+        public int                abLeftDetection;                // 是否携带交通物品遗留信息
+        public int                 nLeftDetection;                 // 交通物品遗留检测模式掩码
+
+        public int                abPreservation;                 // 是否携带交通物品保全信息
+        public int                 nPreservation;                  // 交通物品保全检测模式掩码
+
+        public int                abTakenAwayDetection;           // 是否携带交通物品搬移信息
+        public int                 nTakenAwayDetection;            // 交通物品搬移检测模式掩码
+
+        public int                abStayDetection;                // 是否携带交通停留/滞留信息
+        public int                 nStayDetection;                 // 交通停留/滞留检测模式掩码
+
+        public int                abParkingDetection;             // 是否携带交通非法停车信息
+        public int                 nParkingDetection;              // 交通非法停车检测模式掩码
+
+        public int                abWanderDetection;              // 是否携带交通徘徊信息
+        public int                 nWanderDetection;               // 交通徘徊检测模式掩码
+
+        public int                abMoveDetection;                // 是否携带交通运动信息
+        public int                 nMoveDetection;                 // 交通运动检测模式掩码
+
+        public int                abTailDetection;                // 是否携带交通尾随信息
+        public int                 nTailDetection;                 // 交通尾随检测模式掩码
+
+        public int                abRioterDetection;              // 是否携带交通聚集信息
+        public int                 nRioterDetection;               // 交通聚集检测模式掩码
+
+        public int                abFightDetection;               // 是否携带交通打架信息
+        public int                 nFightDetection;                // 交通打架检测模式掩码
+
+        public int                abRetrogradeDetection;          // 是否携带交通逆行信息
+        public int                 nRetrogradeDetection;           // 交通逆行检测模式掩码
+
+        public int                abFireDetection;                // 是否携带交通火焰信息
+        public int                 nFireDetection;                 // 交通火焰检测模式掩码
+
+        public int                abSmokeDetection;               // 是否携带交通烟雾信息
+        public int                 nSmokeDetection;                // 交通烟雾检测模式掩码
+
+        public int                abNumberStat;                   // 是否携带交通数量统计信息
+        public int                 nNumberStat;                    // 交通数量统计检测模式掩码
+
+        public int                abVideoAbnormalDetection;       // 是否携带交通视频异常信息
+        public int                 nVideoAbnormalDetection;        // 交通视频异常检测模式掩码
+
+        public int                abPSRiseDetection;             // 是否携带囚犯起身检测信息
+        public int                 nPSRiseDetection;             // 囚犯起身检测检测模式掩码
+
+        public int                abFaceDetection;                // 是否携带目标检测信息
+        public int                 nFaceDetection;                 // 目标检测检测模式掩码
+
+        public int                abFaceRecognition;              // 是否携带目标识别信息
+        public int                 nFaceRecognition;               // 目标识别检测模式掩码
+
+        public int                abDensityDetection;             // 是否携带密集度检测信息
+        public int                 nDensityDetection;              // 密集度检测检测模式掩码
+
+        public int                abQueueDetection;               // 是否携带排队检测信息
+        public int                 nQueueDetection;                // 排队检测检测模式掩码
+
+        public int                abClimbDetection;               // 是否携带攀高检测信息
+        public int                 nClimbDetection;                // 攀高检测模式掩码
+
+        public int                abLeaveDetection;               // 是否携带离岗检测信息
+        public int                 nLeaveDetection;                // 离岗检测模式掩码
+
+        public int                abVehicleOnPoliceCar;           // 是否携带车载警车信息
+        public int                 nVehicleOnPoliceCar;            // 车载警车检测模式掩码
+
+        public int                abVehicleOnBus;                 // 是否携带车载公交信息
+        public int                 nVehicleOnBus;                  // 车载公交检测模式掩码
+
+        public int                abVehicleOnSchoolBus;           // 是否携带车载校车信息
+        public int                 nVehicleOnSchoolBus;            // 车载校车检测模式掩码
+
+    }
+
+    // 交通全局配置对应灯组状态配置
+    public static class ENABLE_LIGHT_STATE_INFO extends SdkStructure {
+        public int 				bEnable;      // 是否启动应用层收到的灯组状态给底层
+    }
+
+    // 车道检测类型
+    public static class EM_CHECK_TYPE extends SdkStructure {
+        public static final int EM_CHECK_TYPE_UNKNOWN = 0;             // 不识别的检测类型
+        public static final int EM_CHECK_TYPE_PHYSICAL = 1;            // 物理检测
+        public static final int EM_CHECK_TYPE_VIDEO = 2;               // 视频检测
+    }
+
+    // TRAFFIC_EVENT_CHECK_INFO
+    public static class TRAFFIC_EVENT_CHECK_INFO extends SdkStructure {
+        public int       abTrafficGate;                  // 是否携带交通卡口信息
+        public int       emTrafficGate;                  // 交通卡口检测类型 EM_CHECK_TYPE
+
+        public int       abTrafficJunction;              // 是否携带交通路口信息
+        public int       emTrafficJunction;              // 交通路口检测类型
+
+        public int       abTrafficTollGate;              // 是否携带新交通卡口信息
+        public int       emTrafficTollGate;              // 新交通卡口检测类型
+
+        public int       abTrafficRunRedLight;           // 是否携带交通闯红灯信息
+        public int       emTrafficRunRedLight;           // 交通闯红灯检测类型
+
+        public int       abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
+        public int       emTrafficRunYellowLight;        // 交通闯黄灯检测类型
+
+        public int       abTrafficOverLine;              // 是否携带交通压线信息
+        public int       emTrafficOverLine;              // 交通压线检测类型
+
+        public int       abTrafficOverYellowLine;        // 是否携带交通压黄线信息
+        public int       emTrafficOverYellowLine;        // 交通压黄线检测类型
+
+        public int       abTrafficRetrograde;            // 是否携带交通逆行信息
+        public int       emTrafficRetrograde;            // 交通逆行检测类型
+
+        public int       abTrafficTurnLeft;              // 是否携带交通违章左转信息
+        public int       emTrafficTurnLeft;              // 交通违章左转检测类型
+
+        public int       abTrafficTurnRight;             // 是否携带交通违章右转信息
+        public int       emTrafficTurnRight;             // 交通路口违章右转类型
+
+        public int       abTrafficU_Turn;                // 是否携带交通违章掉头信息
+        public int       emTrafficU_Turn;                // 交通违章掉头检测类型
+
+        public int       abTrafficCrossLane;             // 是否携带交通违章变道信息
+        public int       emTrafficCrossLane;             // 交通违章变道检测类型
+
+        public int       abTrafficParking;               // 是否携带交通违章停车信息
+        public int       emTrafficParking;               // 交通违章停车检测类型
+
+        public int       abTrafficJam;                   // 是否携带交通拥堵信息
+        public int       emTrafficJam;                   // 交通拥堵检测类型
+
+        public int       abTrafficIdle;                  // 是否携带交通交通空闲信息
+        public int       emTrafficIdle;                  // 交通交通空闲检测类型
+
+        public int       abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
+        public int       emTrafficWaitingArea;           // 交通违章驶入待行区检测类型
+
+        public int       abTrafficUnderSpeed;            // 是否携带交通欠速信息
+        public int       emTrafficUnderSpeed;            // 交通欠速检测类型
+
+        public int       abTrafficOverSpeed;             // 是否携带交通超速信息
+        public int       emTrafficOverSpeed;             // 交通超速检测类型
+
+        public int       abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
+        public int       emTrafficWrongRoute;            // 交通不按车道行驶检测类型
+
+        public int       abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
+        public int       emTrafficYellowInRoute;         // 交通黄牌占道检测类型
+
+        public int       abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
+        public int       emTrafficVehicleInRoute;        // 交通有车占道检测类型
+
+        public int       abTrafficControl;               // 是否携带交通交通管理信息
+        public int       emTrafficControl;               // 交通交通管理检测类型
+
+        public int       abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
+        public int       emTrafficObjectAlarm;           // 交通指定类型抓拍检测类型
+
+        public int       abTrafficAccident;              // 是否携带交通交通事故信息
+        public int       emTrafficAccident;              // 交通交通事故检测类型
+
+        public int       abTrafficStay;                  // 是否携带交通交通停留/滞留信息
+        public int       emTrafficStay;                  // 交通交通停留/滞留检测类型
+
+        public int       abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
+        public int       emTrafficPedestrainPriority;    // 交通斑马线行人优先检测类型
+
+        public int       abTrafficPedestrain;            // 是否携带交通交通行人事件信息
+        public int       emTrafficPedestrain;            // 交通交通行人事件检测类型
+
+        public int       abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
+        public int       emTrafficThrow;                 // 交通交通抛洒物品事件检测类型
+
+        public int       abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
+        public int       emTrafficVehicleInBusRoute;     // 交通违章占道检测类型
+
+        public int       abTrafficBacking;               // 是否携带交通违章倒车信息
+        public int       emTrafficBacking;               // 交通违章倒车检测类型
+
+        public int       abTrafficOverStopLine;          // 是否携带交通压停止线信息
+        public int       emTrafficOverStopLine;          // 交通压停止线检测类型
+
+        public int       abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
+        public int       emTrafficParkingOnYellowBox;    // 交通黄网格线抓拍检测类型
+
+        public int       abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
+        public int       emTrafficParkingSpaceParking;   // 交通车位有车检测类型
+
+        public int       abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
+        public int       emTrafficParkingSpaceNoParking; // 交通车位无车检测类型
+
+        public int       abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
+        public int       emTrafficParkingSpaceOverLine;  // 交通车位有车压线检测类型
+
+        public int       abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
+        public int       emParkingSpaceDetection;        // 交通多停车位状态检测检测类型
+
+        public int       abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
+        public int       emTrafficRestrictedPlate;       // 交通受限车牌检测类型
+
+        public int       abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
+        public int       emTrafficWithoutSafeBelt;       // 交通不系安全带检测类型
+
+        public int       abTrafficNoPassing;             // 是否携带交通禁行信息
+        public int       emTrafficNoPassing;             // 交通禁行检测类型
+
+        public int       abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
+        public int       emVehicleAnalyse;               // 交通车辆特征检测类型
+
+        public int       abCrossLineDetection;           // 是否携带交通警戒线信息
+        public int       emCrossLineDetection;           // 交通警戒线检测类型
+
+        public int       abCrossFenceDetection;          // 是否携带交通穿越围栏信息
+        public int       emCrossFenceDetection;          // 交通穿越围栏检测类型
+
+        public int       abCrossRegionDetection;         // 是否携带交通警戒区信息
+        public int       emCrossRegionDetection;         // 交通警戒区检测类型
+
+        public int       abPasteDetection;               // 是否携带交通ATM贴条信息
+        public int       emPasteDetection;               // 交通ATM贴条检测类型
+
+        public int       abLeftDetection;                // 是否携带交通物品遗留信息
+        public int       emLeftDetection;                // 交通物品遗留检测类型
+
+        public int       abPreservation;                 // 是否携带交通物品保全信息
+        public int       emPreservation;                 // 交通物品保全检测类型
+
+        public int       abTakenAwayDetection;           // 是否携带交通物品搬移信息
+        public int       emTakenAwayDetection;           // 交通物品搬移检测类型
+
+        public int       abStayDetection;                // 是否携带交通停留/滞留信息
+        public int       emStayDetection;                // 交通停留/滞留检测类型
+
+        public int       abParkingDetection;             // 是否携带交通非法停车信息
+        public int       emParkingDetection;             // 交通非法停车检测类型
+
+        public int       abWanderDetection;              // 是否携带交通徘徊信息
+        public int       emWanderDetection;              // 交通徘徊检测类型
+
+        public int       abMoveDetection;                // 是否携带交通运动信息
+        public int       emMoveDetection;                // 交通运动检测类型
+
+        public int       abTailDetection;                // 是否携带交通尾随信息
+        public int       emTailDetection;                // 交通尾随检测类型
+
+        public int       abRioterDetection;              // 是否携带交通聚集信息
+        public int       emRioterDetection;              // 交通聚集检测类型
+
+        public int       abFightDetection;               // 是否携带交通打架信息
+        public int       emFightDetection;               // 交通打架检测类型
+
+        public int       abRetrogradeDetection;          // 是否携带交通逆行信息
+        public int       emRetrogradeDetection;          // 交通逆行检测类型
+
+        public int       abFireDetection;                // 是否携带交通火焰信息
+        public int       emFireDetection;                // 交通火焰检测类型
+
+        public int       abSmokeDetection;               // 是否携带交通烟雾信息
+        public int       emSmokeDetection;               // 交通烟雾检测类型
+
+        public int       abNumberStat;                   // 是否携带交通数量统计信息
+        public int       emNumberStat;                   // 交通数量统计检测类型
+
+        public int       abVideoAbnormalDetection;       // 是否携带交通视频异常信息
+        public int       emVideoAbnormalDetection;       // 交通视频异常检测类型
+
+        public int       abPSRiseDetection;              // 是否携带囚犯起身检测信息
+        public int       emPSRiseDetection;              // 囚犯起身检测检测类型
+
+        public int       abFaceDetection;                // 是否携带目标检测信息
+        public int       emFaceDetection;                // 目标检测检测类型
+
+        public int       abFaceRecognition;              // 是否携带目标识别信息
+        public int       emFaceRecognition;              // 目标识别检测类型
+
+        public int       abDensityDetection;             // 是否携带密集度检测信息
+        public int       emDensityDetection;             // 密集度检测检测类型
+
+        public int       abQueueDetection;               // 是否携带排队检测信息
+        public int       emQueueDetection;               // 排队检测检测类型
+
+        public int       abClimbDetection;               // 是否携带攀高检测信息
+        public int       emClimbDetection;               // 攀高检测类型
+
+        public int       abLeaveDetection;               // 是否携带离岗检测信息
+        public int       emLeaveDetection;               // 离岗检测类型
+
+        public int       abVehicleOnPoliceCar;           // 是否携带车载警车信息
+        public int       emVehicleOnPoliceCar;           // 车载警车检测类型
+
+        public int       abVehicleOnBus;                 // 是否携带车载公交信息
+        public int       emVehicleOnBus;                 // 车载公交检测类型
+
+        public int       abVehicleOnSchoolBus;           // 是否携带车载校车信息
+        public int       emVehicleOnSchoolBus;           // 车载校车检测类型
+
+        public int		 abStandUpDetection;		     // 是否携带学生起立信息
+        public int		 emStandUpDetection;		     // 学生起立检测类型
+    }
+
+    // MixModeConfig中关于车道配置信息
+    public static class MIX_MODE_LANE_INFO extends SdkStructure {
+        public  int                nLaneNum;                           // 车道配置个数
+        public  TRAFFIC_EVENT_CHECK_INFO[]   stCheckInfo = (TRAFFIC_EVENT_CHECK_INFO[]) new TRAFFIC_EVENT_CHECK_INFO().toArray(MAX_LANE_CONFIG_NUMBER);     // 车道配置对应事件检测信息
+    }
+
+    // MixModeConfig 混合模式违章配置
+    public static class MIX_MODE_CONFIG extends SdkStructure {
+        public int                         bLaneDiffEnable;                    // 是否按车道区分
+        public MIX_MODE_LANE_INFO          stLaneInfo;
+        public TRAFFIC_EVENT_CHECK_INFO    stCheckInfo;
+
+    }
+
+    // CFG_CMD_TRAFFICGLOBAL 交通全局配置配置表
+    public static class CFG_TRAFFICGLOBAL_INFO extends SdkStructure
+    {
+        public VIOLATIONCODE_INFO     stViolationCode;                             // 违章代码配置表
+        public int                    bEnableRedList;                              // 使能红名单检测,使能后,名单内车辆违章不上报
+
+        public int                    abViolationTimeSchedule;                     // 是否携带违章抓拍自定义时间配置
+        public VIOLATION_TIME_SCHEDULE stViolationTimeSchedule;                    // 违章抓拍自定义时间配置
+
+        public int                    abEnableBlackList;                           // 是否携带使能禁止名单检测信息
+        public int                    bEnableBlackList;                            // 使能禁止名单检测
+
+        public int                    abPriority;                                  // 是否携带违章优先级参数
+        public int            		  nPriority;                                   // 违章优先级个数
+        public byte[]                 szPriority = new byte[MAX_PRIORITY_NUMBER*CFG_COMMON_STRING_256]; // 违章优先级, 0为最高优先级
+
+        public int                    abNamingFormat;                              // 是否携带图片命名格式参数
+        public TRAFFIC_NAMING_FORMAT  stNamingFormat;                              // 图片命名格式参数配置
+
+        public int                    abVideoNamingFormat;                         // 是否携带录像命名格式参数
+        public TRAFFIC_NAMING_FORMAT  stVideoNamingFormat;                         // 录像命名格式参数配置
+
+        public int                    abCalibration;                               // 是否携带标定信息
+        public TRAFFIC_CALIBRATION_INFO stCalibration;                             // 标定信息
+
+        public int                    abAddress;                                   // 是否携带查询地址参数
+        public byte[]                 szAddress = new byte[CFG_COMMON_STRING_256]; // 查询地址,UTF-8编码
+
+        public int                    abTransferPolicy;                            // 是否携带传输策略参数
+        public int      			  emTransferPolicy;                            // 传输策略, EM_TRANSFER_POLICY
+
+        public int                    abSupportModeMaskConfig;                     // 是否携带违章掩码
+        public TRAFFIC_EVENT_CHECK_MASK stSupportModeMaskConfig;                   // 违章类型支持的检测模式掩码配置
+
+        public int                    abIsEnableLightState;                        // 是否携带灯组状态
+        public ENABLE_LIGHT_STATE_INFO stIsEnableLightState;                       // 交通全局配置对应图片命名格式参数配置
+
+        public int                    abMixModeInfo;                               // 是否含有混合模式配置
+        public MIX_MODE_CONFIG        stMixModeInfo;                               // 混合模式配置
+    }
+
+    // 手动抓拍参数
+    public static class MANUAL_SNAP_PARAMETER extends SdkStructure
+    {
+        public int                   nChannel;               			// 抓图通道,从0开始
+        public byte[]                bySequence = new byte[64];	        // 抓图序列号字符串
+        public byte[]                byReserved = new byte[60];         // 保留字段
+    }
+
+    // 视频统计小计信息
+    public static class NET_VIDEOSTAT_SUBTOTAL extends SdkStructure
+    {
+        public int                 nTotal;                         // 设备运行后人数统计总数
+        public int                 nHour;                          // 小时内的总人数
+        public int                 nToday;                         // 当天的总人数
+        public int                 nOSD;						   // 统计人数,用于OSD显示, 可手动清除
+    	public int                 nTotalNonMotor;                 // 设备运行后非机动车统计总数,重启后从上次总数开始继续累加
+    	public int                 nHourNonMotor;                  // 小时内的总非机动车数量
+    	public int                 nTodayNonMotor;                 // 当天的总非机动车数(自然天)
+    	public int				   nTotalPig;					   // 设备运行后猪只统计总数,重启后从上次总数开始继续累加
+    	public int				   nHourPig;					   // 小时内的总猪只数量
+    	public int				   nTodayPig;					   // 当天的总猪只数(自然天)
+    	public int				   nTotalPigInTimeSection;		   // IPC专用,如果不执行clearSectionStat操作,等同于TodayPig猪只数。
+        public byte[]              reserved = new byte[224];
+    }
+
+    // 视频统计摘要信息
+    public static class NET_VIDEOSTAT_SUMMARY extends SdkStructure
+    {
+        public int                      nChannelID;                 	// 通道号
+        public byte[]                   szRuleName = new byte[32];		// 规则名称
+        public NET_TIME_EX              stuTime;                    	// 统计时间
+        public NET_VIDEOSTAT_SUBTOTAL   stuEnteredSubtotal;         	// 进入小计
+        public NET_VIDEOSTAT_SUBTOTAL   stuExitedSubtotal;          	// 出去小计
+        public int						nInsidePeopleNum;				// 区域内人数
+        public int						emRuleType;						// 规则类型, 参考枚举 EM_RULE_TYPE
+        public int						nRetExitManNum;					// 离开的人数个数
+        public NET_EXITMAN_STAY_STAT[]	stuExitManStayInfo
+                = (NET_EXITMAN_STAY_STAT[])new NET_EXITMAN_STAY_STAT().toArray(MAX_EXIT_MAN_NUM);	// 离开人员的滞留时间信息
+        public int					    nPlanID;						// 计划ID,仅球机有效,从1开始
+        public int					    nAreaID;						// 区域ID(一个预置点可以对应多个区域ID)
+        public int                      nCurrentDayInsidePeopleNum;     // 当天区域内总人数
+        public int					    nInsideTotalNonMotor;			// 区域内非机动车总数
+        public int					    nInsideTodayNonMotor;			// 当天的非机动车数
+        public int					    nRetNonMotorNum;				// 非机动车的滞留个数    		
+    	public NET_NONMOTOR_STAY_STAT[]	stuNonMotorStayStat
+        		= (NET_NONMOTOR_STAY_STAT[])new NET_NONMOTOR_STAY_STAT().toArray(MAX_EXIT_MAN_NUM);// 非机动车的滞留时间信息
+    	public int nInsideTotalPig;                                     // 区域内猪只数
+    	public int nPigStayStatCount;                                   // 猪只离开滞留时间信息个数
+    	public NET_PIG_STAY_STAT[] stuPigStayStatInfo = new NET_PIG_STAY_STAT[32];//猪只离开滞留时间信息
+    	public int nInsideTodayPig;                                     // 当天的猪只数
+    	public byte[] szReserved = new byte[4];                         //字节对齐
+    	public NET_PASSED_SUBTOTAL_INFO stuPassedSubtotal = new NET_PASSED_SUBTOTAL_INFO();// 经过小计
+    	public byte[] reserved = new byte[884];                         //保留字节
+
+    	public NET_VIDEOSTAT_SUMMARY() {
+    		for (int i = 0; i < stuExitManStayInfo.length; i++) {
+    			stuExitManStayInfo[i] = new NET_EXITMAN_STAY_STAT();
+    		}
+    		for (int i = 0; i < stuNonMotorStayStat.length; i++) {
+    			stuNonMotorStayStat[i] = new NET_NONMOTOR_STAY_STAT();
+    		}
+    		for (int i = 0; i < stuPigStayStatInfo.length; i++) {
+    			stuPigStayStatInfo[i] = new NET_PIG_STAY_STAT();
+    		}
+    	}
+        
+    }
+
+    // 离开人员的滞留时间信息
+    public static class NET_EXITMAN_STAY_STAT extends SdkStructure
+    {
+        public NET_TIME					stuEnterTime;					// 人员进入区域时间
+        public NET_TIME					stuExitTime;					// 人员离开区域时间
+        public byte[]					reserved = new byte[128];		// 保留字节
+    }
+
+    // CLIENT_AttachVideoStatSummary 入参
+    public static class NET_IN_ATTACH_VIDEOSTAT_SUM extends SdkStructure
+    {
+        public int                   	dwSize;
+        public int                     nChannel;                    // 视频通道号
+        public Callback   		cbVideoStatSum;              // 视频统计摘要信息回调, fVideoStatSumCallBack 回调
+        public Pointer              	dwUser;                      // 用户数据
+
+        public NET_IN_ATTACH_VIDEOSTAT_SUM()
+        {
+            this.dwSize = this.size();
+        }
+    }
+    // CLIENT_AttachVideoStatSummary 出参
+    public static class NET_OUT_ATTACH_VIDEOSTAT_SUM extends SdkStructure
+    {
+        public int 					dwSize;
+
+        public NET_OUT_ATTACH_VIDEOSTAT_SUM()
+        {
+            this.dwSize = this.size();
+        }
+
+    }
+
+    public static class EM_OTHER_RULE_TYPE extends SdkStructure
+    {
+        public static final int EM_OTHER_RULE_TYPE_UNKOWN = 0;             // 未知
+        public static final int EM_OTHER_RULE_TYPE_AVERAGE_STAYTIME = 1;   // 平均滞留时间
+    }
+
+    // 接口(CLIENT_StartFindNumberStat)输入参数
+    public static class NET_IN_FINDNUMBERSTAT extends SdkStructure
+    {
+        public int                 dwSize;                     // 此结构体大小
+        public int                 nChannelID;                 // 要进行查询的通道号
+        public NET_TIME            stStartTime;                // 开始时间 暂时精确到小时
+        public NET_TIME            stEndTime;                  // 结束时间 暂时精确到小时
+        public int                 nGranularityType;           // 查询粒度0:分钟,1:小时,2:日,3:周,4:月,5:季,6:年
+        // 7:即时, 8:人员 (7和8只在emRuleType为EM_RULE_MAN_NUM_DETECTION时有效)
+        public int                 nWaittime;                  // 等待接收数据的超时时间
+        public int                 nPlanID;                    // 计划ID,仅球机有效,从1开始
+        public int				   emRuleType;				   // 规则类型
+        public int				   nMinStayTime;			   // 参考枚举 EM_RULE_TYPE, 区域人数查询最小滞留时间,不填默认为0,返回滞留时长大于等于该时间的人数信息
+        // NumberStat时不需要此参数
+        public int					nAreaIDNum;				   // 区域ID个数
+        public int[]  				nAreaID = new int[20];	   // 区域ID(一个预置点可以对应多个区域ID)
+        public int               	emOtherRule;		       // 其他规则, 参考 EM_OTHER_RULE_TYPE
+        public int                 nGranularityExt;            // 当查询粒度为分钟时,用以细化具体粒度 不填默认5分钟粒度
+
+        public NET_IN_FINDNUMBERSTAT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 规则类型
+    public static class EM_RULE_TYPE extends SdkStructure
+    {
+        public static final int EM_RULE_UNKNOWN = 0;			// 未知
+        public static final int EM_RULE_NUMBER_STAT = 1;		// 人数统计
+        public static final int EM_RULE_MAN_NUM_DETECTION = 2;	// 区域内人数统计
+    }
+
+    // 接口(CLIENT_StartFindNumberStat)输出参数
+    public static class NET_OUT_FINDNUMBERSTAT extends SdkStructure
+    {
+        public int               dwSize;                     // 此结构体大小
+        public int               dwTotalCount;               // 符合此次查询条件的结果总条数
+
+        public NET_OUT_FINDNUMBERSTAT() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // 接口(CLIENT_DoFindNumberStat)输入参数
+    public static class NET_IN_DOFINDNUMBERSTAT extends SdkStructure
+    {
+        public int               dwSize;                     // 此结构体大小
+        public int        		 nBeginNumber;               // [0, totalCount-1], 查询起始序号,表示从beginNumber条记录开始,取count条记录返回;
+        public int        		 nCount;                     // 每次查询的流量统计条数
+        public int               nWaittime;                  // 等待接收数据的超时时间
+
+        public NET_IN_DOFINDNUMBERSTAT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_NUMBERSTAT extends SdkStructure
+    {
+        public int      		dwSize;
+        public int      		nChannelID;                           	  // 统计通道号
+        public byte[]   		szRuleName = new byte[NET_CHAN_NAME_LEN]; // 规则名称
+        public NET_TIME 		stuStartTime;                        	  // 开始时间
+        public NET_TIME 		stuEndTime;                          	  // 结束时间
+        public int      		nEnteredSubTotal;                    	  // 进入人数小计
+        public int      		nExitedSubtotal;                     	  // 出去人数小计
+        public int      		nAvgInside;                          	  // 平均保有人数(除去零值)
+        public int      		nMaxInside;                         	  // 最大保有人数
+        public int      		nEnteredWithHelmet;                		  // 戴安全帽进入人数小计
+        public int      		nEnteredWithoutHelmet;                	  // 不戴安全帽进入人数小计
+        public int      		nExitedWithHelmet;                        // 戴安全帽出去人数小计
+        public int      		nExitedWithoutHelmet;                     // 不戴安全帽出去人数小计
+        public int				nInsideSubtotal;						  // 在区域内人数小计
+        public int            	nPlanID;								  // 计划ID,仅球机有效,从1开始
+        public int				nAreaID;								  // 区域ID(一个预置点可以对应多个区域ID)
+        public int				nAverageStayTime;					      // 区域内平均滞留时间
+        public NET_TEMPERATURE_STATISTICS_INFO	stuTempInfo;		      // 温度统计信息(NET_IN_FINDNUMBERSTAT 字段 emRuleType 取值为 EM_RULE_ANATOMYTEMP_DETECT 时有效)
+        public int				nPassedSubtotal;					      // 经过人数小计
+    	public int			    nEnteredDupSubtotal;					  // 进入重复人数小计
+    	public int			    nExitedDupSubtotal;						  // 出去重复人数小计
+    	public int			    nEnteredNoDupSubtotal;					  // 去重后的进入人数小计
+    	public int			    nExitedNoDupSubtotal;					  // 去重后的出去人数小计
+    	public int			    nClusterAreaID;							  // 多通道融合区域ID
+    	public int			    nBatchTotal;							  // 批次数小计
+        public NET_NUMBERSTAT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 接口(CLIENT_DoFindNumberStat)输出参数
+    public static class NET_OUT_DOFINDNUMBERSTAT extends SdkStructure
+    {
+        public int                          dwSize;                // 此结构体大小
+        public int                 			nCount;                // 查询返人数统计信息个数
+        public Pointer   					pstuNumberStat;        // 返人数统计信息数组, NET_NUMBERSTAT类型 ,由用户申请内存,大小为nBufferLen
+        public int                 			nBufferLen;            // 用户申请的内存大小,以NET_NUMBERSTAT中的dwsize大小为单位
+        public int							nMinStayTime;		   // 区域人数查询时指定的最小滞留时间
+
+        public NET_OUT_DOFINDNUMBERSTAT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class CONNECT_STATE extends SdkStructure
+    {
+        public static final int CONNECT_STATE_UNCONNECT = 0;
+        public static final int CONNECT_STATE_CONNECTING = 1;
+        public static final int CONNECT_STATE_CONNECTED = 2;
+        public static final int CONNECT_STATE_ERROR = 255;
+    }
+
+    // 虚拟摄像头状态查询
+    public static class NET_DEV_VIRTUALCAMERA_STATE_INFO extends SdkStructure
+    {
+        public int 				 nStructSize;							 //结构体大小
+        public int 				 nChannelID;							 //通道号
+        public int 			 	 emConnectState;						 //连接状态, 取值范围为CONNECT_STATE中的值
+        public int 				 uiPOEPort;								 //此虚拟摄像头所连接的POE端口号,0表示不是POE连接, 类型为unsigned int
+        public byte[] 			 szDeviceName = new byte[64];			 //设备名称
+        public byte[] 			 szDeviceType = new byte[128];			 //设备类型
+        public byte[] 			 szSystemType = new byte[128];			 //系统版本
+        public byte[] 			 szSerialNo = new byte[NET_SERIALNO_LEN];//序列号
+        public int				 nVideoInput;							 //视频输入
+        public int 				 nAudioInput;							 //音频输入
+        public int     			 nAlarmOutput;							 //外部报警
+
+        public NET_DEV_VIRTUALCAMERA_STATE_INFO()
+        {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 录像文件类型
+    public static class NET_RECORD_TYPE extends SdkStructure
+    {
+        public final static int NET_RECORD_TYPE_ALL = 0; 		 // 所有录像
+        public final static int NET_RECORD_TYPE_NORMAL = 1; 	 // 普通录像
+        public final static int NET_RECORD_TYPE_ALARM = 2; 		 // 外部报警录像
+        public final static int NET_RECORD_TYPE_MOTION = 3; 	 // 动检报警录像
+    }
+
+    // 对讲方式
+    public static class EM_USEDEV_MODE extends SdkStructure
+    {
+        public static final int NET_TALK_CLIENT_MODE 	  = 0;   // 设置客户端方式进行语音对讲
+        public static final int NET_TALK_SERVER_MODE 	  = 1;   // 设置服务器方式进行语音对讲
+        public static final int NET_TALK_ENCODE_TYPE 	  = 2;   // 设置语音对讲编码格式(对应 NETDEV_TALKDECODE_INFO)
+        public static final int NET_ALARM_LISTEN_MODE 	  = 3;   // 设置报警订阅方式
+        public static final int NET_CONFIG_AUTHORITY_MODE = 4;   // 设置通过权限进行配置管理
+        public static final int NET_TALK_TALK_CHANNEL 	  = 5;   // 设置对讲通道(0~MaxChannel-1)
+        public static final int NET_RECORD_STREAM_TYPE	  = 6;   // 设置待查询及按时间回放的录像码流类型(0-主辅码流,1-主码流,2-辅码流)
+        public static final int NET_TALK_SPEAK_PARAM      = 7;   // 设置语音对讲喊话参数,对应结构体 NET_SPEAK_PARAM
+        public static final int NET_RECORD_TYPE           = 8;   // 设置按时间录像回放及下载的录像文件类型(详见  NET_RECORD_TYPE)
+        public static final int NET_TALK_MODE3            = 9;   // 设置三代设备的语音对讲参数, 对应结构体 NET_TALK_EX
+        public static final int NET_PLAYBACK_REALTIME_MODE = 10; // 设置实时回放功能(0-关闭,1开启)
+        public static final int NET_TALK_TRANSFER_MODE    = 11;  // 设置语音对讲是否为转发模式, 对应结构体 NET_TALK_TRANSFER_PARAM
+        public static final int NET_TALK_VT_PARAM         = 12;  // 设置VT对讲参数, 对应结构体 NET_VT_TALK_PARAM
+        public static final int NET_TARGET_DEV_ID         = 13;  // 设置目标设备标示符, 用以查询新系统能力(非0-转发系统能力消息)
+    }
+
+    // 语音编码类型
+    public static class NET_TALK_CODING_TYPE extends SdkStructure
+    {
+        public static final int NET_TALK_DEFAULT = 0;            // 无头PCM
+        public static final int NET_TALK_PCM = 1;                // 带头PCM
+        public static final int	NET_TALK_G711a = 2;              // G711a
+        public static final int NET_TALK_AMR = 3;                // AMR
+        public static final int	NET_TALK_G711u = 4;              // G711u
+        public static final int	NET_TALK_G726 = 5;               // G726
+        public static final int	NET_TALK_G723_53 = 6;            // G723_53
+        public static final int NET_TALK_G723_63 = 7;            // G723_63
+        public static final int	NET_TALK_AAC = 8;                // AAC
+        public static final int	NET_TALK_OGG = 9;                // OGG
+        public static final int	NET_TALK_G729 = 10;              // G729
+        public static final int	NET_TALK_MPEG2 = 11;             // MPEG2
+        public static final int	NET_TALK_MPEG2_Layer2 = 12;      // MPEG2-Layer2
+        public static final int	NET_TALK_G722_1 = 13;            // G.722.1
+        public static final int	NET_TALK_ADPCM = 21;             // ADPCM
+        public static final int	NET_TALK_MP3   = 22;             // MP3
+    }
+
+    // 设备支持的语音对讲类型
+    public static class NETDEV_TALKFORMAT_LIST extends SdkStructure
+    {
+        public int 						 nSupportNum;                                                  				    // 个数
+        public NETDEV_TALKDECODE_INFO[] type = (NETDEV_TALKDECODE_INFO[])new NETDEV_TALKDECODE_INFO().toArray(64);   // 编码类型
+
+        public byte[] reserved = new byte[64];
+    }
+
+    // 语音编码信息
+    public static class NETDEV_TALKDECODE_INFO extends SdkStructure
+    {
+        public int                 encodeType;                       // 编码类型, encodeType对应NET_TALK_CODING_TYPE
+        public int                 nAudioBit;                        // 位数,如8或16等
+        public int                 dwSampleRate;                     // 采样率,如8000或16000等
+        public int                 nPacketPeriod;                    // 打包周期, 单位ms, 目前只能是25
+        public byte[]    		   reserved = new byte[60];
+    }
+
+    // 语音对讲喊话参数
+    public static class NET_SPEAK_PARAM extends SdkStructure
+    {
+        public int 				  dwSize;                     		// 结构体大小
+        public int 				  nMode;                      		// 0:对讲(默认模式),1:喊话;从喊话切换到对讲要重新设置
+        public int 				  nSpeakerChannel;           		// 扬声器通道号,喊话时有效
+        public boolean 			  bEnableWait;            			// 开启对讲时是否等待设备的响应,默认不等待.TRUE:等待;FALSE:不等待
+        // 超时时间由CLIENT_SetNetworkParam设置,对应NET_PARAM的nWaittime字段
+        public NET_SPEAK_PARAM()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 是否开启语音对讲的转发模式
+    public static class NET_TALK_TRANSFER_PARAM extends SdkStructure
+    {
+        public int 				 dwSize;
+        public int 			 	 bTransfer;                 	   // 是否开启语音对讲转发模式, TRUE: 开启转发
+
+        public NET_TALK_TRANSFER_PARAM()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 预览类型,对应CLIENT_RealPlayEx接口
+    public static class NET_RealPlayType extends SdkStructure
+    {
+        public static final int NET_RType_Realplay   = 0; 		// 实时预览
+        public static final int NET_RType_Multiplay  = 1; 		// 多画面预览
+        public static final int NET_RType_Realplay_0 = 2; 		// 实时预览-主码流 ,等同于NET_RType_Realplay
+        public static final int NET_RType_Realplay_1 = 3; 		// 实时预览-从码流1
+        public static final int NET_RType_Realplay_2 = 4; 		// 实时预览-从码流2
+        public static final int NET_RType_Realplay_3 = 5; 		// 实时预览-从码流3
+        public static final int NET_RType_Multiplay_1 = 6;		// 多画面预览-1画面
+        public static final int NET_RType_Multiplay_4 = 7; 		// 多画面预览-4画面
+        public static final int NET_RType_Multiplay_8 = 8; 		// 多画面预览-8画面
+        public static final int NET_RType_Multiplay_9 = 9; 		// 多画面预览-9画面
+        public static final int NET_RType_Multiplay_16 = 10; 	// 多画面预览-16画面
+        public static final int NET_RType_Multiplay_6 = 11;  	// 多画面预览-6画面
+        public static final int NET_RType_Multiplay_12 = 12; 	// 多画面预览-12画面
+        public static final int NET_RType_Multiplay_25 = 13;	// 多画面预览-25画面
+        public static final int NET_RType_Multiplay_36 = 14; 	// 多画面预览-36画面
+        public static final int NET_RType_Multiplay_64 = 15;    // 多画面预览-64画面
+        public static final int NET_RType_Multiplay_255 = 16;   // 不修改当前预览通道数
+        public static final int NET_RType_Realplay_Audio = 17;  // 只拉音频, 非通用
+        public static final int NET_RType_Realplay_Test = 255;  // 带宽测试码流
+    }
+
+
+    // 实时预览的实时数据标志, 对应 CLIENT_SetRealDataCallBackEx(Ex2) 中的 dwFlag 参数
+    // 支持 '|' 运算符, 如 dwFlag = REALDATA_FLAG_RAW_DATA | REALDATA_FLAG_YUV_DATA
+    public static class EM_REALDATA_FLAG extends SdkStructure
+    {
+        public static final int REALDATA_FLAG_RAW_DATA				= 0x01;	// 原始数据标志,			对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为0, 0x01 = 0x01 << 0
+        public static final int REALDATA_FLAG_DATA_WITH_FRAME_INFO	= 0x02;	// 带有帧信息的数据标志,		对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为1, 0x02 = 0x01 << 1
+        public static final int REALDATA_FLAG_YUV_DATA				= 0x04;	// YUV 数据标志,			对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为2, 0x04 = 0x01 << 2
+        public static final int REALDATA_FLAG_PCM_AUDIO_DATA		= 0x08;	// PCM 音频数据标志,		对应fRealDataCallBack(Ex/Ex2)回调函数中 dwDataType 为3, 0x08 = 0x01 << 3
+    }
+
+    // 回调视频数据帧的帧参数结构体
+    public static class tagVideoFrameParam extends SdkStructure
+    {
+        public byte                  encode;                 // 编码类型
+        public byte                  frametype;              // I = 0, P = 1, B = 2...
+        public byte                  format;                 // PAL - 0, NTSC - 1
+        public byte                  size;                   // CIF - 0, HD1 - 1, 2CIF - 2, D1 - 3, VGA - 4, QCIF - 5, QVGA - 6 ,
+        // SVCD - 7,QQVGA - 8, SVGA - 9, XVGA - 10,WXGA - 11,SXGA - 12,WSXGA - 13,UXGA - 14,WUXGA - 15, LFT - 16, 720 - 17, 1080 - 18 ,1_3M-19
+        // 2M-20, 5M-21;当size=255时,成员变量width,height 有效
+        public int                   fourcc;                 // 如果是H264编码则总为0,否则值为*( DWORD*)"DIVX",即0x58564944
+        public short				 width;					 // 宽,单位是像素,当size=255时有效
+        public short				 height;				 // 高,单位是像素,当size=255时有效
+        public NET_TIME              struTime;               // 时间信息
+    }
+
+    // 回调音频数据帧的帧参数结构体
+    public static class tagCBPCMDataParam extends SdkStructure
+    {
+        public byte                channels;                // 声道数
+        public byte                samples;                 // 采样 0 - 8000, 1 - 11025, 2 - 16000, 3 - 22050, 4 - 32000, 5 - 44100, 6 - 48000
+        public byte                depth;                   // 采样深度 取值8或者16等。直接表示
+        public byte                param1;                  // 0 - 指示无符号,1-指示有符号
+        public int                 reserved;                // 保留
+    }
+
+    // 视频预览断开事件类型
+    public static class EM_REALPLAY_DISCONNECT_EVENT_TYPE extends SdkStructure
+    {
+        public static final int DISCONNECT_EVENT_REAVE 		= 0;                 // 表示高级用户抢占低级用户资源
+        public static final int DISCONNECT_EVENT_NETFORBID  = 1;                 // 禁止入网
+        public static final int DISCONNECT_EVENT_SUBCONNECT = 2;                 // 动态子链接断开
+    }
+
+    // 电池电压过低报警
+    public static class ALARM_BATTERYLOWPOWER_INFO extends SdkStructure
+    {
+        public int dwSize;			//结构体大小
+        public int nAction;			//0:开始1:停止
+        public int nBatteryLeft;	//剩余电量百分比,单位%
+        public NET_TIME stTime;		//事件发生时间
+        public int nChannelID;		//通道号,标识子设备电池,从0开始
+        public NET_GPS_STATUS_INFO stGPSStatus;					 // GPS信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+
+        public ALARM_BATTERYLOWPOWER_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 温度过高报警
+    public static class ALARM_TEMPERATURE_INFO extends SdkStructure
+    {
+        public int      dwSize;					//结构体大小
+        public byte[]   szSensorName = new byte[NET_MACHINE_NAME_NUM];//温度传感器名称
+        public int      nChannelID;			    //通道号
+        public int      nAction;				//0:开始1:停止
+        public float    fTemperature;			//当前温度值,单位摄氏度
+        public NET_TIME  stTime=new NET_TIME();					//事件发生时间
+        public NET_GPS_STATUS_INFO   stuGPSStatus=new NET_GPS_STATUS_INFO();              // GPS信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public ALARM_TEMPERATURE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 普通报警信息
+    public static class NET_CLIENT_STATE_EX extends SdkStructure
+    {
+        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];
+    }
+
+    // 视频遮挡报警状态信息对应结构体
+    public static class NET_CLIENT_VIDEOBLIND_STATE extends SdkStructure
+    {
+        public int dwSize;
+        public int channelcount;
+        public int[] dwAlarmState = new int[NET_MAX_CHANMASK];//每一个int按位表示32通道的报警状态,0-表示无报警,1-表示有报警
+
+        public NET_CLIENT_VIDEOBLIND_STATE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频丢失报警状态信息对应结构体
+    public static class NET_CLIENT_VIDEOLOST_STATE extends SdkStructure
+    {
+        public int	    dwSize;
+        public int	    channelcount;
+        public int[]	dwAlarmState = new int[NET_MAX_CHANMASK];//每一个int按位表示32通道的报警状态(只有dwAlarmState[0]有效),0-表示无报警,1-表示有报警
+
+        public NET_CLIENT_VIDEOLOST_STATE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁开门 CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_ACCESS_OPEN 命令参数
+    public static class NET_CTRL_ACCESS_OPEN extends SdkStructure {
+        public int          dwSize;
+        public int          nChannelID;            					  // 通道号(0开始)
+        public Pointer      szTargetID;			    				  // 转发目标设备ID,为NULL表示不转发
+        public byte[]       szUserID = new byte[MAX_COMMON_STRING_32];//远程用户ID
+        public int			emOpenDoorType;                			  // 开门方式, 参考 EM_OPEN_DOOR_TYPE
+        /**
+         * EM_OPEN_DOOR_DIRECTION
+         */
+        public int		    emOpenDoorDirection;			// 开门方向
+        /**
+         * EM_REMOTE_CHECK_CODE
+         */
+        public int		    emRemoteCheckCode;				// 远程权限验证结果
+        public byte[]       szShortNumber = new byte[16];   // 兼容字段
+        public NET_CTRL_ACCESS_OPEN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁控制--开门方式
+    public static class EM_OPEN_DOOR_TYPE extends SdkStructure
+    {
+        public static final int EM_OPEN_DOOR_TYPE_UNKNOWN = 0;
+        public static final int EM_OPEN_DOOR_TYPE_REMOTE = 1;			// 远程开门
+        public static final int EM_OPEN_DOOR_TYPE_LOCAL_PASSWORD = 2;	// 本地密码开门
+        public static final int EM_OPEN_DOOR_TYPE_LOCAL_CARD = 3;		// 本地刷卡开门
+        public static final int EM_OPEN_DOOR_TYPE_LOCAL_BUTTON = 4;		// 本地按钮开门
+    }
+
+    // 门禁关门CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_ACCESS_CLOSE 命令参数
+    public static class NET_CTRL_ACCESS_CLOSE extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannelID;//通道号(0开始)
+
+        public NET_CTRL_ACCESS_CLOSE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁状态类型
+    public static class EM_NET_DOOR_STATUS_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_DOOR_STATUS_UNKNOWN=0;
+        public static final int EM_NET_DOOR_STATUS_OPEN=EM_NET_DOOR_STATUS_UNKNOWN+1; 	//门打开
+        public static final int EM_NET_DOOR_STATUS_CLOSE=EM_NET_DOOR_STATUS_OPEN+1; 	//门关闭
+        public static final int EM_NET_DOOR_STATUS_BREAK=EM_NET_DOOR_STATUS_CLOSE+1; 	//门异常打开
+    }
+
+    // 门禁状态信息(CLIENT_QueryDevState 接口输入参数)
+    public static class NET_DOOR_STATUS_INFO extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannel;//门禁通道号
+        public int emStateType;//门禁状态信息, 对应枚举EM_NET_DOOR_STATUS_TYPE
+
+        public NET_DOOR_STATUS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开启道闸参数(对应 CTRLTYPE_CTRL_OPEN_STROBE 命令)
+    public static class NET_CTRL_OPEN_STROBE extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannelId;                      // 通道号
+        public byte[] szPlateNumber = new byte[64]; // 车牌号码
+        public int emOpenType;						// 开闸类型,EM_OPEN_STROBE_TYPE
+    	public int nLocation;						// 开闸车道号
+    	public byte[] szCustomParkNo = new byte[32];// 自定义车道号,优先使用自定义车道号,自定义车道号为空,则使用location
+        public NET_CTRL_OPEN_STROBE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 刻录控制 (对应 CTRLTYPE_BURNING_START 命令)
+    public static class BURNNG_PARM extends SdkStructure
+    {
+        public int	channelMask;						// 通道掩码,按位表示要刻录的通道
+        public byte devMask;							// 刻录机掩码,根据查询到的刻录机列表,按位表示
+        public byte bySpicalChannel;					// 画中画通道(通道数+31,例如对于4通道设备,该值应为35)
+        public byte[] byReserved = new byte[2];			// 保留字段
+    }
+
+    // 关闭道闸参数(对应  CTRLTYPE_CTRL_CLOSE_STROBE 命令)
+    public static class NET_CTRL_CLOSE_STROBE extends SdkStructure
+    {
+        public int	dwSize;
+        public int	nChannelId; // 通道号
+    	public int	nLocation;	// 关闸车道号
+
+        public NET_CTRL_CLOSE_STROBE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 道闸控制方式枚举
+    public static class NET_EM_CFG_TRAFFICSTROBE_CTRTYPE extends SdkStructure
+    {
+        public static final int NET_EM_CFG_CTRTYPE_UNKNOWN = 0;                 // 未定义
+        public static final int NET_EM_CFG_CTRTYPE_TRAFFICTRUSTLIST = 1;        // 通过允许名单控制是否开闸;只有允许名单内车辆才开闸
+        public static final int NET_EM_CFG_CTRTYPE_ALLSNAPCAR = 2;              // 针对所有抓拍车辆都开闸
+        public static final int NET_EM_CFG_CTRTYPE_ORDER = 3;                   // 通过上层下发的命令开闸
+    }
+
+    // 所有车开闸种类
+    public static class NET_EM_CFG_ALL_SNAP_CAR extends SdkStructure
+    {
+        public static final int NET_EM_CFG_ALL_SNAP_CAR_UNKNOWN = 0;			// 未知开闸种类
+        public static final int NET_EM_CFG_ALL_SNAP_CAR_PLATE = 1;				// 所有有牌车车辆
+        public static final int NET_EM_CFG_ALL_SNAP_CAR_NOPLATE = 2;			// 所有无牌车车辆
+    }
+
+    // 道闸常开配置
+    public static class NET_CFG_STATIONARY_OPEN extends SdkStructure
+    {
+        public int 					bEnable;										// 使能
+        public CFG_TIME_SCHEDULE	stTimeShecule = new CFG_TIME_SCHEDULE();		// 常开模式执行时间段
+    }
+
+    // 道闸配置信息(对应 NET_EM_CFG_TRAFFICSTROBE 命令)
+    public static class NET_CFG_TRAFFICSTROBE_INFO extends SdkStructure
+    {
+        public int							dwSize;											// 结构体大小
+        public int							bEnable;										// 使能
+        public int							nCtrlTypeCount;									// 道闸控制方式个数
+        public int[]    					emCtrlType = new int[NET_CFG_MAX_CTRLTYPE_NUM];  // 道闸控制方式, 详见NET_EM_CFG_TRAFFICSTROBE_CTRTYPE
+        public int							nAllSnapCarCount;								// 所有车开闸种类个数
+        public int[]						emAllSnapCar = new int[NET_MAX_ALL_SNAP_CAR_COUNT];	// 所有车开闸种类, 详见NET_EM_CFG_ALL_SNAP_CAR
+        public NET_ALARM_MSG_HANDLE			stuEventHandler;								// 开启道闸联动参数
+        public NET_ALARM_MSG_HANDLE			stuEventHandlerClose;							// 关闭道闸联动参数
+        public byte[]						szOrderIP = new byte[NET_MAX_IPADDR_EX_LEN];	// 负责命令开闸的平台IP
+        public int							emCtrlTypeOnDisconnect;							// 平台IP与设备断开连接后,设备采用的开闸方式, 详见NET_EM_CFG_TRAFFICSTROBE_CTRTYPE
+        public NET_CFG_STATIONARY_OPEN		stuStationaryOpen;								// 道闸常开配置
+
+        public NET_CFG_TRAFFICSTROBE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 报警状态 (对应   CTRLTYPE_TRIGGER_ALARM_OUT 命令)
+    public static class ALARMCTRL_PARAM extends SdkStructure
+    {
+        public int	dwSize;
+        public int	nAlarmNo; // 报警通道号,从0开始
+        public int	nAction; // 1:触发报警,0:停止报警
+
+        public ALARMCTRL_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 查询 IVS 前端设备入参
+    public static class NET_IN_IVS_REMOTE_DEV_INFO extends SdkStructure
+    {
+        public int                     dwSize;                         // 该结构体大小
+        public int                     nChannel;                       // 通道号
+
+        public NET_IN_IVS_REMOTE_DEV_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 查询 IVS 前端设备出参
+    public static class NET_OUT_IVS_REMOTE_DEV_INFO extends SdkStructure
+    {
+        public int                   dwSize;                         	// 该结构体大小
+        public int     			     nPort;								// 端口
+        public byte[]				 szIP = new byte[64];	            // 设备IP
+        public byte[]				 szUser = new byte[64];	            // 用户名
+        public byte[]				 szPassword = new byte[64];         // 密码
+        public byte[]				 szAddress = new byte[128];	        // 机器部署地点
+
+        public NET_OUT_IVS_REMOTE_DEV_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // 获取视频通道属性命令的子类型
+    public static class NET_VIDEO_CHANNEL_TYPE extends SdkStructure
+    {
+        public static final int NET_VIDEO_CHANNEL_TYPE_ALL = 0;    // 全部
+        public static final int NET_VIDEO_CHANNEL_TYPE_INPUT = 1;  // 输入
+        public static final int NET_VIDEO_CHANNEL_TYPE_OUTPUT = 2; // 输出
+    }
+
+    // CLIENT_QueryDevInfo , NET_QUERY_VIDEOCHANNELSINFO 命令输入参数
+    public static class NET_IN_GET_VIDEOCHANNELSINFO extends SdkStructure
+    {
+        public int              dwSize;
+        public int              emType;         // 需要获取的通道类型,详见NET_VIDEO_CHANNEL_TYPE
+
+        public NET_IN_GET_VIDEOCHANNELSINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_VIDEOCHANNELS_INPUT extends SdkStructure
+    {
+        public int                     nThermographyCount;         		// 热成像通道个数
+        public int[]                   nThermography = new int[64];     // 热成像通道的通道号
+        public int                     nMultiPreviewCount;         		// 多画面预览通道个数
+        public int[]                   nMultiPreview = new int[4];	    // 多画面预览通道号
+        public int                     nPIPCount;                  		// 画中画通道个数
+        public int[]                   nPIP = new int[4];    	        // 画中画通道号
+        public int                     nCompressPlayCount;         		// 二次压缩回放通道个数
+        public int[]                   nCompressPlay = new int[4];	    // 二次压缩回放通道号
+        public int					   nSDCount;						// 球机通道个数
+        public int[]				   nSD = new int[64];				// 球机通道号
+        public int                     nPTZCount;                  		// 支持云台程序的通道数量
+        public short[]                 nPTZ = new short[64];            // 支持云台程序的通道号
+        public int                     nFuseRadarCount;            // 支持融合雷达流,可见光叠加雷达流的通道数量
+        public int[]				   nFuseRadar=new int[64];             // 支持融合雷达流,可见光叠加雷达流的通道号
+        public int                     nPureRadarCount;            // 支持纯雷达流,无可见光的通道数量
+        public int[]				   nPureRadar=new int[64];             // 支持纯雷达流,无可见光的通道号
+        public byte[]                  reserved=new byte[4096];
+    }
+
+    public static class NET_VIDEOCHANNELS_OUTPUT extends SdkStructure
+    {
+        public int                       nVGACount;                  			// VGA输出个数
+        public int[]                     nVGA = new int[128];                   // VGA输出
+        public int                       nTVCount;                   			// TV输出个数
+        public int[]                     nTV = new int[128];                    // TV输出
+        public byte[]                    reserved = new byte[512];
+    }
+
+    //CLIENT_QueryDevInfo , NET_QUERY_VIDEOCHANNELSINFO 命令输出参数
+    public static class NET_OUT_GET_VIDEOCHANNELSINFO extends SdkStructure
+    {
+        public int                         dwSize;
+        public NET_VIDEOCHANNELS_INPUT     stInputChannels;        // 输入通道信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/INPUT时有效
+        public NET_VIDEOCHANNELS_OUTPUT    stOutputChannels;       // 输出通道信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/OUTPUT时有效
+    	public NET_VIDEOCHANNELS_INPUT_EX	stInputChannelsEx;	   // 输入通道扩展信息,获取类型为NET_VIDEO_CHANNEL_TYPE_ALL/INPUT时有效
+        public NET_OUT_GET_VIDEOCHANNELSINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 热成像色彩
+    public static class NET_THERMO_COLORIZATION extends SdkStructure
+    {
+        public static final int NET_THERMO_COLORIZATION_UNKNOWN = 0;	// 未知
+        public static final int NET_THERMO_COLORIZATION_WHITE_HOT = 1;	// 白热
+        public static final int NET_THERMO_COLORIZATION_BLACK_HOT = 2;	// 黑热
+        public static final int NET_THERMO_COLORIZATION_IRONBOW2 = 3;	// 铁虹2
+        public static final int NET_THERMO_COLORIZATION_ICEFIRE = 4;	// 冰火
+        public static final int NET_THERMO_COLORIZATION_FUSION = 5;		// 融合
+        public static final int NET_THERMO_COLORIZATION_RAINBOW = 6;	// 彩虹
+        public static final int NET_THERMO_COLORIZATION_GLOBOW = 6;		// ..
+        public static final int NET_THERMO_COLORIZATION_IRONBOW1 = 7;	// 铁虹1
+        public static final int NET_THERMO_COLORIZATION_SEPIA = 8;		// 深褐
+        public static final int NET_THERMO_COLORIZATION_COLOR1 = 9;		// 彩色1
+        public static final int NET_THERMO_COLORIZATION_COLOR2 = 10;	// 彩色2
+        public static final int NET_THERMO_COLORIZATION_RAIN = 11;		// 雨天
+        public static final int NET_THERMO_COLORIZATION_RED_HOT = 12;	// 红热
+        public static final int NET_THERMO_COLORIZATION_GREEN_HOT = 13;	// 绿热
+    }
+
+    // 热成像感兴趣区域模式
+    public static class NET_THERMO_ROI extends SdkStructure
+    {
+        public static final int NET_THERMO_ROI_UNKNOWN = 0;			// 未知
+        public static final int NET_THERMO_ROI_FULL_SCREEN = 1;		// 全屏
+        public static final int NET_THERMO_ROI_SKY = 2;				// 顶部
+        public static final int NET_THERMO_ROI_GROUND = 3;			// 中部
+        public static final int NET_THERMO_ROI_HORIZONTAL = 4;		// 底部
+        public static final int NET_THERMO_ROI_CENTER_75 = 5;		// 中心点 75%
+        public static final int NET_THERMO_ROI_CENTER_50 = 6;		// 中心点 50%
+        public static final int NET_THERMO_ROI_CENTER_25 = 7;		// 中心点 25%
+        public static final int NET_THERMO_ROI_CUSTOM = 8;			// 自定义
+    }
+
+    // 热成像模式
+    public static class NET_THERMO_MODE extends SdkStructure
+    {
+        public static final int NET_THERMO_MODE_UNKNOWN = 0;	// 未知
+        public static final int NET_THERMO_MODE_DEFAULT	= 1; 	// 默认
+        public static final int NET_THERMO_MODE_INDOOR = 2; 	// 室内
+        public static final int NET_THERMO_MODE_OUTDOOR = 3; 	// 室外
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_PRESET 命令入参
+    public static class NET_IN_THERMO_GET_PRESETINFO extends SdkStructure
+    {
+        public int              dwSize;
+        public int              nChannel;                           // 通道号
+        public int     			emMode;                             // 模式, 参考NET_THERMO_MODE
+
+        public NET_IN_THERMO_GET_PRESETINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_PRESET 命令出参
+    public static class NET_OUT_THERMO_GET_PRESETINFO extends SdkStructure
+    {
+        public int              		dwSize;
+        public NET_THERMO_GRAPHY_INFO   stInfo;     // 热成像信息
+
+        public NET_OUT_THERMO_GET_PRESETINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 热成像优化区域
+    public static class NET_THERMO_GRAPHY_OPTREGION extends SdkStructure
+    {
+        public int                 bOptimizedRegion;                   // 是否开启优化区域
+        public int                 nOptimizedROIType;                  // 优化区域类型,见NET_THERMO_ROI
+        public int                 nCustomRegion;                      // 自定义区域个数
+        public NET_RECT[] 		   stCustomRegions = (NET_RECT[])new NET_RECT().toArray(64); // 自定义区域,仅在 nOptimizedROIType 为 NET_THERMO_ROI_CUSTOM 时有效
+        public byte[]              Reserved = new byte[256];
+    }
+
+    // 热成像信息
+    public static class NET_THERMO_GRAPHY_INFO extends SdkStructure
+    {
+        public int                         nBrightness;                // 亮度
+        public int                         nSharpness;                 // 锐度
+        public int                         nEZoom;                     // 倍数
+        public int                         nThermographyGamma;         // 伽马值
+        public int                         nColorization;              // 色彩,见NET_THERMO_COLORIZATION
+        public int                         nSmartOptimizer;            // 优化指数
+        public NET_THERMO_GRAPHY_OPTREGION stOptRegion; 			   // 优化区域
+        public int                         nAgc;                       // 自动增益控制
+        public int                         nAgcMaxGain;                // 最大自动增益
+        public int                         nAgcPlateau;                // 增益均衡
+        public byte[]                      reserved = new byte[244];   // 保留字段
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION 命令入参
+    public static class NET_IN_THERMO_GET_OPTREGION extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nChannel;                           // 通道号
+
+        public NET_IN_THERMO_GET_OPTREGION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_OPTREGION 命令出参
+    public static class NET_OUT_THERMO_GET_OPTREGION extends SdkStructure
+    {
+        public int                       dwSize;
+        public NET_THERMO_GRAPHY_OPTREGION stInfo;                     // 优化区域信息
+
+        public NET_OUT_THERMO_GET_OPTREGION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO 命令入参
+    public static class NET_IN_THERMO_GET_EXTSYSINFO extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nChannel;                           // 通道号
+
+        public NET_IN_THERMO_GET_EXTSYSINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_THERMO_GRAPHY_EXTSYSINFO 命令出参
+    public static class NET_OUT_THERMO_GET_EXTSYSINFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public NET_THERMO_SYSINFO   stInfo;                           // 通道号
+
+        public NET_OUT_THERMO_GET_EXTSYSINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 外部系统信息
+    public static class NET_THERMO_SYSINFO extends SdkStructure
+    {
+        public byte[]                szSerialNumber = new byte[64];                 // 序列号
+        public byte[]                szSoftwareVersion = new byte[64];              // 软件版本
+        public byte[]                szFirmwareVersion = new byte[64];              // 固件版本
+        public byte[]                szLibVersion = new byte[64];                   // 库版本
+        public byte[]                reserved = new byte[256];
+    }
+
+    // CLIENT_GetDevCaps 接口 NET_THERMO_GRAPHY_CAPS 命令入参
+    public static class NET_IN_THERMO_GETCAPS extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nChannel;                           // 通道号
+
+        public NET_IN_THERMO_GETCAPS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetDevCaps 接口 NET_THERMO_GRAPHY_CAPS 命令出参
+    public static class NET_OUT_THERMO_GETCAPS extends SdkStructure
+    {
+        public int               dwSize;
+        public int               dwModes;                           // 支持的预置模式掩码
+        public int               dwColorization;                    // 预置着色模式掩码
+        public int               dwROIModes;                        // 预置感兴趣区域模式掩码
+        public RANGE             stBrightness;         				// 亮度相关能力
+        public RANGE             stSharpness;          				// 锐度相关能力
+        public RANGE             stEZoom;              				// 倍数相关能力
+        public RANGE             stThermographyGamma;  				// 伽马相关能力
+        public RANGE             stSmartOptimizer;     				// 优化参数相关能力
+        public NET_FFCPERIOD_RANGE stFFCPeriod;                        // 平场聚焦校准相关能力
+        public NET_OUT_THERMO_GETCAPS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // range
+    public static class RANGE extends SdkStructure
+    {
+        public float               fMax;                               // 最大值
+        public float               fMin;                               // 最小值
+        public boolean                 abStep;                             // 是否启用步长
+        public float               fStep;                              // 步长
+        public boolean                 abDefault;                          // 是否启用默认值
+        public float               fDefault;                           // 默认值
+        public byte[] 			   reserved = new byte[16];
+    }
+
+    // CLIENT_GetDevCaps 接口 NET_RADIOMETRY_CAPS 命令入参
+    public static class NET_IN_RADIOMETRY_GETCAPS extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nChannel;                           // 通道号
+
+        public NET_IN_RADIOMETRY_GETCAPS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 测温模式的类型
+    public static class NET_RADIOMETRY_METERTYPE extends SdkStructure
+    {
+        public static final int NET_RADIOMETRY_METERTYPE_UNKNOWN = 0;
+        public static final int NET_RADIOMETRY_METERTYPE_SPOT = 1; // 点
+        public static final int NET_RADIOMETRY_METERTYPE_LINE = 2; // 线
+        public static final int NET_RADIOMETRY_METERTYPE_AREA = 3; // 区域
+    }
+
+    // 点,线,区域总个数能力
+    public static class NET_RADIOMETRY_TOTALNUM extends SdkStructure
+    {
+        public int               dwMaxNum;                           // 最多支持个数
+        public int               dwMaxSpots;                         // 最多点的个数
+        public int               dwMaxLines;                         // 最多划线的条数
+        public int               dwMaxAreas;                         // 最多区域的个数
+        public byte[]			 reserved = new byte[32]; 			 // 保留字节
+    }
+
+    // CLIENT_GetDevCaps 接口 NET_RADIOMETRY_CAPS 命令出参
+    public static class NET_OUT_RADIOMETRY_GETCAPS extends SdkStructure
+    {
+        public int                         dwSize;
+        public NET_RADIOMETRY_TOTALNUM     stTotalNum;                 // 点,线,区域总个数能力
+        public int                         dwMaxPresets;               // 最多测温预置点的个数
+        public int                         dwMeterType;                // 测温模式的类型掩码,见NET_RADIOMETRY_METERTYPE
+        public RANGE                       stObjectEmissivity;         // 辐射系数相关能力
+        public RANGE                       stObjectDistance;           // 距离相关能力
+        public RANGE                       stReflectedTemperature;     // 反射温度相关能力
+        public RANGE                       stRelativeHumidity;         // 相对湿度相关能力
+        public RANGE                       stAtmosphericTemperature;   // 大气温度相关能力
+        public int                         nStatisticsMinPeriod;       // 测温点统计功能最小存储数据间隔  单位为秒
+        public float                       fIsothermMaxTemp;           // 色标条最高的温度值
+        public float                       fIsothermMinTemp;           // 色标条最低的温度值
+
+        public NET_OUT_RADIOMETRY_GETCAPS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 测温信息
+    public static class NET_RADIOMETRYINFO extends SdkStructure
+    {
+        public int                 nMeterType;                         // 返回测温类型,见NET_RADIOMETRY_METERTYPE
+        public int                 nTemperUnit;                        // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
+        public float               fTemperAver;                        // 点的温度或者平均温度   点的时候 只返回此字段
+        public float               fTemperMax;                         // 最高的温度
+        public float               fTemperMin;                         // 最低的温度
+        public float               fTemperMid;                         // 中间温度值
+        public float               fTemperStd;                         // 标准方差值
+        public byte[]              reserved = new byte[64];
+    }
+
+    // 获取测温项温度的条件
+    public static class NET_RADIOMETRY_CONDITION extends SdkStructure
+    {
+        public int                 nPresetId;                          // 预置点编号
+        public int                 nRuleId;                            // 规则编号
+        public int                 nMeterType;                         // 测温项类别,见NET_RADIOMETRY_METERTYPE
+        public byte[]              szName = new byte[64];              // 测温项的名称,从测温配置规则名字中选取
+        public int                 nChannel;                           // 通道号
+        public byte[]              reserved = new byte[256];
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令入参
+    public static class NET_IN_RADIOMETRY_GETPOINTTEMPER extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nChannel;                           // 通道号
+        public NET_POINT         stCoordinate;                       // 测温点的坐标,坐标值 0~8192
+
+        public NET_IN_RADIOMETRY_GETPOINTTEMPER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_POINT_TEMPER 命令出参
+    public static class NET_OUT_RADIOMETRY_GETPOINTTEMPER extends SdkStructure
+    {
+        public int               	dwSize;
+        public NET_RADIOMETRYINFO   stPointTempInfo;                    // 获取测温点的参数值
+
+        public NET_OUT_RADIOMETRY_GETPOINTTEMPER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令入参
+    public static class NET_IN_RADIOMETRY_GETTEMPER extends SdkStructure
+    {
+        public int                         dwSize;
+        public NET_RADIOMETRY_CONDITION    stCondition;                // 获取测温项温度的条件
+
+        public NET_IN_RADIOMETRY_GETTEMPER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryDevInfo 接口 NET_QUERY_DEV_RADIOMETRY_TEMPER 命令出参
+    public static class NET_OUT_RADIOMETRY_GETTEMPER extends SdkStructure
+    {
+        public int               	dwSize;
+        public NET_RADIOMETRYINFO   stTempInfo;                         // 获取测温参数值
+
+        public NET_OUT_RADIOMETRY_GETTEMPER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云台预置点
+    public static class NET_PTZ_PRESET extends SdkStructure
+    {
+        public int                     nIndex;                         			  // 编号
+        public byte[]                  szName = new byte[PTZ_PRESET_NAME_LEN];    // 名称
+    	public int[]                   nPosition = new int[3];                    // 预置点的坐标和放大倍数 
+															                      // 第一个参数是水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示
+                                                                                  // 第二个参数是垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示
+		                                                                          // 第三个参数是放大参数,范围[0,128],表示最小倍到最大倍的变倍位置
+        public int                     bSetNameEx;                                // 设置预置点名称时需置TRUE
+        public byte[]                  szNameEx = new byte[256];                  // 名称,支持256字节长度 
+        public byte[]                  szReserve = new byte[52];                  // 预留字节
+    }
+
+    // 云台预置点列表
+    public static class NET_PTZ_PRESET_LIST extends SdkStructure
+    {
+        public int                   dwSize;
+        public int                   dwMaxPresetNum;                 // 预置点最大个数
+        public int                   dwRetPresetNum;                 // 返回预置点个数
+        public Pointer          	 pstuPtzPorsetList;              // 预置点列表(入参需要根据最大个数申请内存),内存大小为sizeof(NET_PTZ_PRESET)*dwMaxPresetNum
+
+        public NET_PTZ_PRESET_LIST() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //-------------------------------报警属性---------------------------------
+    // 云台联动
+    public static class SDK_PTZ_LINK extends SdkStructure
+    {
+        public int iType;//0-None,1-Preset,2-Tour,3-Pattern
+        public int iValue;
+    }
+
+    ////////////////////////////////HDVR专用//////////////////////////////////
+    // 报警联动扩展结构体
+    public static class NET_MSG_HANDLE_EX extends SdkStructure
+    {
+        /* 消息处理方式,可以同时多种处理方式,包括
+         * 0x00000001 - 报警上传
+         * 0x00000002 - 联动录象
+         * 0x00000004 - 云台联动
+         * 0x00000008 - 发送邮件
+         * 0x00000010 - 本地轮巡
+         * 0x00000020 - 本地提示
+         * 0x00000040 - 报警输出
+         * 0x00000080 - Ftp上传
+         * 0x00000100 - 蜂鸣
+         * 0x00000200 - 语音提示
+         * 0x00000400 - 抓图
+         */
+        /*当前报警所支持的处理方式,按位掩码表示*/
+        public int dwActionMask;
+        /*触发动作,按位掩码表示,具体动作所需要的参数在各自的配置中体现*/
+        public int dwActionFlag;
+        /*报警触发的输出通道,报警触发的输出,为1表示触发该输出*/
+        public byte[] byRelAlarmOut = new byte[NET_MAX_ALARMOUT_NUM_EX];
+        public int dwDuration;/*报警持续时间*/
+        /*联动录象*/
+        public byte[] byRecordChannel = new byte[NET_MAX_VIDEO_IN_NUM_EX];/*报警触发的录象通道,为1表示触发该通道*/
+        public int dwRecLatch;/*录象持续时间*/
+        /*抓图通道*/
+        public byte[] bySnap = new byte[NET_MAX_VIDEO_IN_NUM_EX];
+        /*轮巡通道*/
+        public byte[] byTour = new byte[NET_MAX_VIDEO_IN_NUM_EX];/*轮巡通道0-31路*/
+        /*云台联动*/
+        public SDK_PTZ_LINK[] struPtzLink = (SDK_PTZ_LINK[])new SDK_PTZ_LINK().toArray(NET_MAX_VIDEO_IN_NUM_EX);
+        public int dwEventLatch;/*联动开始延时时间,s为单位,范围是0~15,默认值是0*/
+        /*报警触发的无线输出通道,报警触发的输出,为1表示触发该输出*/
+        public byte[] byRelWIAlarmOut = new byte[NET_MAX_ALARMOUT_NUM_EX];
+        public byte bMessageToNet;
+        public byte bMMSEn;/*短信报警使能*/
+        public byte bySnapshotTimes;/*短信发送抓图张数*/
+        public byte bMatrixEn;/*!<矩阵使能*/
+        public int dwMatrix;/*!<矩阵掩码*/
+        public byte bLog;/*!<日志使能,目前只有在WTN动态检测中使用*/
+        public byte bSnapshotPeriod;/*!<抓图帧间隔,每隔多少帧抓一张图片,一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧,连续抓拍。*/
+        public byte[] byTour2 = new byte[NET_MAX_VIDEO_IN_NUM_EX];/*轮巡通道32-63路*/
+        public byte byEmailType;/*<0,图片附件,1,录像附件>*/
+        public byte byEmailMaxLength;/*<附件录像时的最大长度,单位MB>*/
+        public byte byEmailMaxTime;/*<附件是录像时最大时间长度,单位秒>*/
+        public byte[] byReserved = new byte[475];
+    }
+
+    public static class EM_NET_DEFENCE_AREA_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_DEFENCE_AREA_TYPE_UNKNOW = 0; //未知
+        public static final int EM_NET_DEFENCE_AREA_TYPE_INTIME = 1; //即时防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_DELAY = 2; //延时防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_FULLDAY = 3; //24小时防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_Follow = 4; //跟随防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_MEDICAL = 5; //医疗紧急防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_PANIC = 6; //恐慌防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_FIRE = 7; //火警防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_FULLDAYSOUND = 8; //24小时有声防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_FULLDATSLIENT = 9; //24小时无声防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_ENTRANCE1 = 10; //出入防区1
+        public static final int EM_NET_DEFENCE_AREA_TYPE_ENTRANCE2 = 11; //出入防区2
+        public static final int EM_NET_DEFENCE_AREA_TYPE_INSIDE = 12; //内部防区
+        public static final int EM_NET_DEFENCE_AREA_TYPE_OUTSIDE = 13; //外部防区
+        public static final int EN_NET_DEFENCE_AREA_TYPE_PEOPLEDETECT = 14; //人员检测防区
+    }
+
+    // 本地报警事件(对NET_ALARM_ALARM_EX升级)
+    public static class ALARM_ALARM_INFO_EX2 extends SdkStructure
+    {
+        public int dwSize;
+        public int nChannelID;						//通道号
+        public int nAction;							//0:开始, 1:停止
+        public NET_TIME stuTime;					//报警事件发生的时间
+        public int emSenseType;						//传感器类型, 取值范围为  NET_SENSE_METHOD 中的值
+        public NET_MSG_HANDLE_EX stuEventHandler;	//联动信息
+        public int emDefenceAreaType;				//防区类型, 取值类型为EM_NET_DEFENCE_AREA_TYPE中的值
+        public int nEventID;					    //事件ID
+        public byte[]     szName = new byte[NET_COMMON_STRING_32];  // 通道名称
+        public int nCount;                 			// 事件发生次数
+        public NET_GPS_STATUS_INFO            stuGPS;                               // GPS信息
+    	/**
+    	 * 本地报警时登陆的用户ID
+    	 */
+    	public byte[] szUserID = new byte[32];
+    	/**
+    	 * 本地报警时登陆的用户名
+    	 */
+    	public byte[] szUserName = new byte[128];
+    	/**
+    	 * 设备序列号
+    	 */
+    	public byte[] szSN = new byte[32];
+    	/**
+    	 * 外部输入报警
+    	 */
+    	public int bExAlarmIn;
+    	/**
+    	 * 报警通道所属区域的个数
+    	 */
+    	public int nAreaNums;
+    	/**
+    	 * 报警通道所属的区域
+    	 */
+    	public int[] nAreas = new int[64];
+    	/**
+    	 * 事件公共扩展字段结构体
+    	 */
+    	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    	/**
+    	 * 保留字节
+    	 */
+    	public byte[] byReserved = new byte[568];
+
+        public ALARM_ALARM_INFO_EX2() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 布撤防状态变化事件的信息
+    public static class ALARM_ARMMODE_CHANGE_INFO extends SdkStructure
+    {
+        public int                 dwSize;
+        public NET_TIME            stuTime;        // 报警事件发生的时间
+        public int                 bArm;           // 变化后的状态,对应  NET_ALARM_MODE
+        public int 			       emSceneMode;    // 情景模式,对应  NET_SCENE_MODE
+        public int                 dwID;           // ID号, 遥控器编号或键盘地址, emTriggerMode为NET_EM_TRIGGER_MODE_NET类型时为0
+        public int       		   emTriggerMode;  // 触发方式,对应  NET_EM_TRIGGER_MODE
+        public byte[] 			   szNetClientAddr = new byte[64]; //网络用户IP地址或网络地址
+        public int            	   nUserCode;      //用户ID,0:管理员,1~20:普通用户,21:安装员,22:挟持用户
+
+        public ALARM_ARMMODE_CHANGE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 布撤防模式
+    public static class NET_ALARM_MODE extends SdkStructure
+    {
+        public static final int NET_ALARM_MODE_UNKNOWN    = -1;          // 未知
+        public static final int NET_ALARM_MODE_DISARMING  = 0;           // 撤防
+        public static final int NET_ALARM_MODE_ARMING	  = 1;           // 布防
+        public static final int NET_ALARM_MODE_FORCEON	  = 2;           // 强制布防
+        public static final int NET_ALARM_MODE_PARTARMING = 3;           // 部分布防
+    }
+
+    // 布撤防场景模式
+    public static class NET_SCENE_MODE extends SdkStructure
+    {
+        public static final int NET_SCENE_MODE_UNKNOWN   = 0;            // 未知场景
+        public static final int NET_SCENE_MODE_OUTDOOR   = 1;            // 外出模式
+        public static final int NET_SCENE_MODE_INDOOR    = 2;            // 室内模式
+        public static final int NET_SCENE_MODE_WHOLE     = 3;            // 全局模式
+        public static final int NET_SCENE_MODE_RIGHTNOW  = 4;            // 立即模式
+        public static final int NET_SCENE_MODE_SLEEPING  = 5;            // 就寝模式
+        public static final int NET_SCENE_MODE_CUSTOM    = 6;            // 自定义模式
+    }
+
+    // 触发方式
+    public static class NET_EM_TRIGGER_MODE extends SdkStructure
+    {
+        public static final int NET_EM_TRIGGER_MODE_UNKNOWN 		= 0;
+        public static final int NET_EM_TRIGGER_MODE_NET			    = 1;   // 网络用户(平台或Web)
+        public static final int NET_EM_TRIGGER_MODE_KEYBOARD		= 2;   // 键盘
+        public static final int NET_EM_TRIGGER_MODE_REMOTECONTROL	= 3;   // 遥控器
+    }
+
+    // 紧急救助事件详情
+    public static class ALARM_RCEMERGENCY_CALL_INFO extends SdkStructure
+    {
+        public int                       dwSize;
+        public int                       nAction;                // -1:未知 0:开始 1:停止
+        public int                  	 emType;                 // 紧急类型,对应 EM_RCEMERGENCY_CALL_TYPE
+        public NET_TIME                  stuTime;                // 事件发生时间
+        public int   					 emMode;                 // 报警方式,对应 EM_RCEMERGENCY_MODE_TYPE
+        public int                       dwID;                   // 用于标示不同的紧急事件(只有emMode是遥控器类型时有效, 表示遥控器的编号, 0表示无效ID)
+        public NET_EVENT_INFO_EXTEND     stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    	public byte[]				     szDelayUploadSeq = new byte[128];	// 延时上传序号
+    	public byte[]					 szResvered = new byte[1020];		// 保留字节 
+        public ALARM_RCEMERGENCY_CALL_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 紧急救助事件类型
+    public static class EM_RCEMERGENCY_CALL_TYPE extends SdkStructure
+    {
+        public static final int EM_RCEMERGENCY_CALL_UNKNOWN   = 0;
+        public static final int EM_RCEMERGENCY_CALL_FIRE	  = 1;             // 火警
+        public static final int EM_RCEMERGENCY_CALL_DURESS	  = 2;             // 胁迫
+        public static final int EM_RCEMERGENCY_CALL_ROBBER	  = 3;             // 匪警
+        public static final int EM_RCEMERGENCY_CALL_MEDICAL	  = 4;             // 医疗
+        public static final int EM_RCEMERGENCY_CALL_EMERGENCY = 5;             // 紧急
+    }
+
+    // 报警方式
+    public static class EM_RCEMERGENCY_MODE_TYPE extends SdkStructure
+    {
+        public static final int EM_RCEMERGENCY_MODE_UNKNOWN          = 0;
+        public static final int EM_RCEMERGENCY_MODE_KEYBOARD		 = 1;       // 键盘
+        public static final int EM_RCEMERGENCY_MODE_WIRELESS_CONTROL = 2;       // 遥控器
+    }
+
+    /////////////////////////////////////////////////////
+    ////////用户信息管理对应接口CLIENT_QueryUserInfoNew/////////
+    // 用户信息表
+    public static class USER_MANAGE_INFO_NEW extends SdkStructure {
+        public int 						dwSize; 																// 结构体大小
+        public int 						dwRightNum;  															// 权限信息有效个数
+        public OPR_RIGHT_NEW[] 			rightList = new OPR_RIGHT_NEW[NET_NEW_MAX_RIGHT_NUM]; 		 			// 权限信息,有效个数由 dwRightNum 成员决定, 用户权限个数上限NET_NEW_MAX_RIGHT_NUM = 1024
+        public int 						dwGroupNum; 															// 用户组信息有效个数
+        public USER_GROUP_INFO_NEW[] 	groupList = new USER_GROUP_INFO_NEW[NET_MAX_GROUP_NUM]; 				// 用户组信息,此参数废弃,请使用groupListEx
+        public int 						dwUserNum;  															// 用户数
+        public USER_INFO_NEW[] 			userList = new USER_INFO_NEW[NET_MAX_USER_NUM]; 				 		// 用户列表, 用户个数上限NET_MAX_USER_NUM=200
+        public int 						dwFouctionMask; 														// 掩码: 0x00000001 - 支持用户复用, 0x00000002 - 密码修改需要校验
+        public byte 					byNameMaxLength;  														// 支持的用户名最大长度
+        public byte 					byPSWMaxLength; 														// 支持的密码最大长度
+        public byte[] 					byReserve = new byte[254];
+        public USER_GROUP_INFO_EX2[]    groupListEx = new USER_GROUP_INFO_EX2[NET_MAX_GROUP_NUM]; 				// 用户组信息扩展, 用户组个数上限NET_MAX_GROUP_NUM=20
+
+        public USER_MANAGE_INFO_NEW() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < NET_NEW_MAX_RIGHT_NUM; i++) {
+                rightList[i] = new OPR_RIGHT_NEW();
+            }
+
+            for(int i = 0; i < NET_MAX_USER_NUM; i++) {
+                userList[i] = new USER_INFO_NEW();
+            }
+
+            for(int i = 0; i < NET_MAX_GROUP_NUM; i++) {
+                groupList[i] = new USER_GROUP_INFO_NEW();
+                groupListEx[i] = new USER_GROUP_INFO_EX2();
+            }
+        }
+    }
+
+    // 权限信息
+    public static class OPR_RIGHT_NEW extends SdkStructure {
+        public int 						dwSize;										  //结构体大小
+        public int 						dwID; 										  //权限ID,每个 权限都有各自的ID
+        public byte[] 					name = new byte[NET_RIGHT_NAME_LENGTH]; 	  //名称 权限名长度 NET_RIGHT_NAME_LENGTH=32
+        public byte[] 					memo = new byte[NET_MEMO_LENGTH];			  //说明备注长度NET_MEMO_LENGTH=32
+
+        public OPR_RIGHT_NEW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 用户组信息
+    public static class USER_GROUP_INFO_NEW extends SdkStructure {
+        public int 						dwSize;
+        public int 						dwID; 											// 用户组ID, 每个用户组都有各自的ID
+        public byte[] 					name = new byte[NET_USER_NAME_LENGTH_EX]; 		// 用户组名称/NET_USER_NAME_LENGTH_EX=16
+        public int 						dwRightNum; 									// 用户组权限有效个数
+        public int[] 					rights = new int[NET_NEW_MAX_RIGHT_NUM];		// 用户组支持权限数组
+        public byte[] 					memo = new byte[NET_MEMO_LENGTH]; 				// 用户组备注说明
+        public USER_GROUP_INFO_NEW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 用户组信息扩展,用户组名加长
+    public static class USER_GROUP_INFO_EX2 extends SdkStructure {
+        public int 						 dwSize; 										// 结构体大小
+        public int 						 dwID; 											// ID
+        public byte[] 					 name = new byte[NET_NEW_USER_NAME_LENGTH];     // 用户名 长度NET_NEW_USER_NAME_LENGTH=128
+        public int 						 dwRightNum;  									// 权限数量
+        public int[] 					 rights = new int[NET_NEW_MAX_RIGHT_NUM]; 		// 用户权限 个数上限 NET_NEW_MAX_RIGHT_NUM = 1024
+        public byte[]					 memo = new byte[NET_MEMO_LENGTH]; 				// 说明, 备注长度NET_MEMO_LENGTH=32
+
+        public USER_GROUP_INFO_EX2() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 用户信息结构体
+    public static class USER_INFO_NEW extends SdkStructure {
+        public int 						dwSize; 									   // 结构体大小
+        public int 						dwID; 										   // 用户ID
+        public int 						dwGroupID; 									   // 用户组组ID
+        public byte[] 					name = new byte[NET_NEW_USER_NAME_LENGTH];     // 用户名称,长度NET_NEW_USER_NAME_LENGTH=128
+        public byte[] 					passWord = new byte[NET_NEW_USER_PSW_LENGTH];  // 用户密码,NET_NEW_USER_PSW_LENGTH=128
+        public int 						dwRightNum;  								   // 用户权限有效个数
+        public int[] 					rights = new int[NET_NEW_MAX_RIGHT_NUM];       // 用户支持权限数组,个数上限 NET_NEW_MAX_RIGHT_NUM = 1024
+        public byte[] 					memo = new byte[NET_MEMO_LENGTH]; 			   // 用户备注说明, 备注长度NET_MEMO_LENGTH=32
+        public int 						dwFouctionMask;          					   // 掩码,0x00000001 - 支持用户复用
+        public NET_TIME 				stuTime;           							   // 最后修改时间
+        public byte 					byIsAnonymous;         					       // 是否可以匿名登录, 0:不可匿名登录, 1: 可以匿名登录
+        public byte[] 					byReserve = new byte[7];  					   // 保留字节
+
+        public USER_INFO_NEW() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    //------------------------允许名单相关结构体-------------------------
+    // CLIENT_FindRecord接口输入参数
+    public static class NET_IN_FIND_RECORD_PARAM extends SdkStructure {
+        public int                       dwSize;          							 // 结构体大小
+        public int                       emType;          							 // 待查询记录类型,emType对应  EM_NET_RECORD_TYPE
+        public Pointer                   pQueryCondition;							 // 查询类型对应的查询条件
+
+        public NET_IN_FIND_RECORD_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 交通禁止/允许名单账户记录查询条件
+    public static class FIND_RECORD_TRAFFICREDLIST_CONDITION extends SdkStructure {
+        public int          dwSize;
+        public byte[]       szPlateNumber = new byte[NET_MAX_PLATE_NUMBER_LEN];      // 车牌号
+        public byte[]       szPlateNumberVague = new byte[NET_MAX_PLATE_NUMBER_LEN]; // 车牌号码模糊查询
+        public int          nQueryResultBegin;                          			 // 第一个条返回结果在查询结果中的偏移量
+        public int          bRapidQuery;       										 // 是否快速查询, TRUE:为快速,快速查询时不等待所有增、删、改操作完成。默认为非快速查询
+        public byte[]       szProvince = new byte[64];                               // 省份类型
+        public int          emPlateType;                                             // 车牌类型 ,参考枚举EM_NET_PLATE_TYPE    
+
+        public FIND_RECORD_TRAFFICREDLIST_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 交通流量记录查询条件
+    public static class FIND_RECORD_TRAFFICFLOW_CONDITION extends SdkStructure {
+        public int                     dwSize;
+        public int                     abChannelId;                      // 通道号查询条件是否有效
+        public int                     nChannelId;                       // 通道号
+        public int                     abLane;                           // 车道号查询条件是否有效
+        public int                     nLane;                            // 车道号
+        public int                     bStartTime;                       // 开始时间查询条件是否有效
+        public NET_TIME                stStartTime;                      // 开始时间
+        public int					   bEndTime;                         // 结束时间查询条件是否有效
+        public NET_TIME                stEndTime;                        // 结束时间
+        public int                     bStatisticsTime;                  // 查询是否为统计时间,为BOOL类型,bStartTime及bEndTime均为1
+        public FIND_RECORD_TRAFFICFLOW_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁出入记录查询条件
+    public static class FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX extends SdkStructure {
+        public int                     dwSize;
+        public int                     bCardNoEnable;                    					// 启用卡号查询, 为BOOL类型
+        public byte[]                  szCardNo = new byte[NET_MAX_CARDNO_LEN];     		// 卡号
+        public int                     bTimeEnable;                      					// 启用时间段查询, 为BOOL类型
+        public NET_TIME                stStartTime;                      					// 起始时间
+        public NET_TIME                stEndTime;                        					// 结束时间
+        public int					   nOrderNum;						 					// 规则数
+        public FIND_RECORD_ACCESSCTLCARDREC_ORDER[]   stuOrders =
+                (FIND_RECORD_ACCESSCTLCARDREC_ORDER[])new FIND_RECORD_ACCESSCTLCARDREC_ORDER().toArray(MAX_ORDER_NUMBER);	// 规则数组
+    	public int					   bRealUTCTimeEnable;				                    // 启动RealUTC时间查询, bRealUTCTimeEnable为TRUE时bTimeEnable无效
+    	public int				       nStartRealUTCTime;			                        // 真实UTC时间戳,起始时间
+    	public int				       nEndRealUTCTime;				                        // 真实UTC时间戳,结束时间
+        public byte[]                  szReserved = new byte[40];                           // 字节对齐
+
+        public FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁出入记录排序规则详情
+    public static class FIND_RECORD_ACCESSCTLCARDREC_ORDER extends SdkStructure
+    {
+        public int					emField;												// 排序字段, 对应枚举 EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD
+        public int					emOrderType;    										// 排序类型, 对应枚举 EM_RECORD_ORDER_TYPE
+        public byte[]				byReverse = new byte[64];  								// 保留字节
+    }
+
+    // 门禁出入记录排序字段
+    public static class EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD extends SdkStructure
+    {
+        public static final int EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_UNKNOWN = 0;			// 未知
+        public static final int EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_RECNO = 1;			// 记录集编号
+        public static final int EM_RECORD_ACCESSCTLCARDREC_ORDER_FIELD_CREATETIME = 2;		// 创建时间
+    }
+
+    // 排序类型
+    public static class EM_RECORD_ORDER_TYPE extends SdkStructure
+    {
+        public static final int EM_RECORD_ORDER_TYPE_UNKNOWN = 0;                           // 未知
+        public static final int EM_RECORD_ORDER_TYPE_ASCENT = 1;                            // 升序
+        public static final int EM_RECORD_ORDER_TYPE_DESCENT = 2;                           // 降序
+    }
+
+    // 开门方式(门禁事件,门禁出入记录,实际的开门方式)
+    public static class NET_ACCESS_DOOROPEN_METHOD extends SdkStructure {
+        public static final int NET_ACCESS_DOOROPEN_METHOD_UNKNOWN = 0;
+        public static final int NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY = 1;                    				// 密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD = 2;                        				// 刷卡开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST = 3;                  				// 先刷卡后密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST = 4;                   				// 先密码后刷卡开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_REMOTE = 5;                      				// 远程开锁,如通过室内机或者平台对门口机开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_BUTTON = 6;                      				// 开锁按钮进行开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT = 7;                 				// 信息开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT = 8;        				// 密码+刷卡+信息组合开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT = 10;	        				// 密码+信息组合开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT = 11;	       					// 刷卡+信息组合开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_PERSONS = 12;                					// 多人开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_KEY = 13;                    					// 钥匙开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD = 14;             					// 胁迫密码开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_QRCODE = 15;                     				// 二维码开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION = 16;       					// 目标识别开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD = 18;                				    // 人证对比
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD = 19;	    				// 证件+ 人证比对
+        public static final int NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH = 20;									// 蓝牙开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD = 21;        					// 个性化密码开门
+        public static final int  NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD = 22;         					// UserID+密码
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD = 23;           					// 人脸+密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD = 24;    					// 信息+密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE = 25;   					// 信息+人脸开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE = 26;          					// 刷卡+人脸开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD = 27;            					// 人脸或密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD = 28;     					// 信息或密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE = 29;    					// 信息或人脸开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE = 30;           					// 刷卡或人脸开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT = 31;    					// 刷卡或信息开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD = 32;             	// 信息+人脸+密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD = 33;                      // 刷卡+人脸+密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD = 34;               // 刷卡+信息+密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE = 35;                      // 卡+信息+人脸组合开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD = 36;                 // 信息或人脸或密码
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD = 37;                        // 卡或人脸或密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE = 38;                // 卡或信息或人脸开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD = 39;      // 卡+信息+人脸+密码组合开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD     = 40;     // 卡或信息或人脸或密码开锁
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE    = 41;     // (证件+人证比对)或 刷卡 或 人脸
+        public static final int NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE = 42;                 // 人证比对 或 刷卡(二维码) 或 人脸
+        public static final int NET_ACCESS_DOOROPEN_METHOD_DTMF      = 43;  								// DTMF开锁(包括SIPINFO,RFC2833,INBAND)
+        public static final int NET_ACCESS_DOOROPEN_METHOD_REMOTE_QRCODE = 44;  							// 远程二维码开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_REMOTE_FACE = 45;  								// 远程人脸开门
+        public static final int NET_ACCESS_DOOROPEN_METHOD_CITIZEN_FINGERPRINT = 46;  						// 人证比对开门(信息)
+    }
+
+    // 卡类型
+    public static class NET_ACCESSCTLCARD_TYPE {
+        public static final int NET_ACCESSCTLCARD_TYPE_UNKNOWN = -1;
+        public static final int NET_ACCESSCTLCARD_TYPE_GENERAL = 0;                     // 一般卡
+        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;           	// 母卡
+    }
+
+    // 门禁刷卡记录记录集信息
+    public static class NET_RECORDSET_ACCESS_CTL_CARDREC extends SdkStructure {
+        public int           		dwSize;
+        public int             		nRecNo;                                 // 记录集编号,只读
+        public byte[]            	szCardNo = new byte[NET_MAX_CARDNO_LEN];// 卡号
+        public byte[]            	szPwd = new byte[NET_MAX_CARDPWD_LEN];  // 密码
+        public NET_TIME        		stuTime;                                // 刷卡时间
+        public int            		bStatus;                                // 刷卡结果,TRUE表示成功,FALSE表示失败
+        public int    				emMethod;                 				// 开门方式 NET_ACCESS_DOOROPEN_METHOD
+        public int             		nDoor;                                  // 门号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标
+        public byte[]            	szUserID = new byte[NET_MAX_USERID_LEN];// 用户ID
+        public int             		nReaderID;                              // 读卡器ID (废弃,不再使用)
+        public byte[]				szSnapFtpUrl = new byte[MAX_PATH];		// 开锁抓拍上传的FTP地址
+
+        public byte[]            	szReaderID = new byte[NET_COMMON_STRING_32];// 读卡器ID													// 开门并上传抓拍照片,在记录集记录存储地址,成功才有
+        public int       			emCardType;                 			// 卡类型 NET_ACCESSCTLCARD_TYPE
+
+        public int                  nErrorCode;                 			// 开门失败的原因,仅在bStatus为FALSE时有效
+        // 0x00 没有错误
+        // 0x10 未授权
+        // 0x11 卡挂失或注销
+        // 0x12 没有该门权限
+        // 0x13 开门模式错误
+        // 0x14 有效期错误
+        // 0x15 防反潜模式
+        // 0x16 胁迫报警未打开
+        // 0x17 门常闭状态
+        // 0x18 AB互锁状态
+        // 0x19 巡逻卡
+        // 0x1A 设备处于闯入报警状态
+        // 0x20 时间段错误
+        // 0x21 假期内开门时间段错误
+        // 0x30 需要先验证有首卡权限的卡片
+        // 0x40 卡片正确,输入密码错误
+        // 0x41 卡片正确,输入密码超时
+        // 0x42 卡片正确,输入信息错误
+        // 0x43 卡片正确,输入信息超时
+        // 0x44 信息正确,输入密码错误
+        // 0x45 信息正确,输入密码超时
+        // 0x50 组合开门顺序错误
+        // 0x51 组合开门需要继续验证
+        // 0x60 验证通过,控制台未授权
+        // 0x61 卡片正确,人脸错误
+        // 0x62 卡片正确,人脸超时
+        // 0x63 重复进入
+        // 0x64 未授权,需要后端平台识别
+        // 0x65 体温过高
+        // 0x66	未戴口罩
+        // 0x67 健康码获取失败
+        // 0x68 黄码禁止通行
+        // 0x69 红码禁止通行
+        // 0x6a 健康码无效
+        // 0x6b 绿码验证通过
+        // 0x70 获取健康码信息
+        public byte[]           	szRecordURL = new byte[NET_COMMON_STRING_128];	// 刷卡录像的地址
+        public int            		nNumbers;                   					// 抓图的张数
+        public int  				emAttendanceState;          					// 考勤状态 ,参考  NET_ATTENDANCESTATE
+        public int   				emDirection;               				 		// 开门方向, 参考  NET_ENUM_DIRECTION_ACCESS_CTL
+        public byte[]				szClassNumber = new byte[MAX_CLASS_NUMBER_LEN];	// 班级(考勤)
+        public byte[]				szPhoneNumber = new byte[MAX_PHONENUMBER_LEN];	// 电话(考勤)
+        public byte[]				szCardName = new byte[NET_MAX_CARDNAME_LEN];	// 卡命名
+        public byte[]               szSN = new byte[NET_COMMON_STRING_32];          // 智能锁序列号,无线配件需要该字段
+        public int					bCitizenIDResult;								// 人证比对结果
+        public byte[]				szCitizenIDName = new byte[30];					// 名字
+        public byte[]				byReserved1 = new byte[2];						// 字节对齐
+        public int					emCitizenIDSex;									// 性别, 详见EM_CITIZENIDCARD_SEX_TYPE
+        public int					emCitizenIDEC;							        // 民族, 详见EM_CITIZENIDCARD_EC_TYPE
+        public NET_TIME				stuCitizenIDBirth;								// 出生日期(时分秒无效)
+        public byte[]				szCitizenIDAddress = new byte[108];				// 住址
+        public byte[]				szCitizenIDAuthority = new byte[48];			// 签发机关
+        public NET_TIME				stuCitizenIDStart;								// 有效起始日期(时分秒无效)
+        public NET_TIME				stuCitizenIDEnd;								// 有效截止日期(时分秒无效, 年为负数时表示长期有效)
+        public int					bIsEndless;										// 是否长期有效
+        public byte[]				szSnapFaceURL = new byte[NET_COMMON_STRING_128];// 人脸图片保存地址
+        public byte[]				szCitizenPictureURL = new byte[NET_COMMON_STRING_128];	// 证件图片保存地址
+        public byte[]				szCitizenIDNo = new byte[20];					// 证件号码
+
+        public int       			emSex;                                      	// 性别, 详见NET_ACCESSCTLCARD_SEX
+        public byte[]               szRole = new byte[MAX_COMMON_STRING_32];        // 角色
+        public byte[]               szProjectNo = new byte[MAX_COMMON_STRING_32];   // 项目ID
+        public byte[]               szProjectName = new byte[MAX_COMMON_STRING_64]; // 项目名称
+        public byte[]               szBuilderName = new byte[MAX_COMMON_STRING_64]; // 施工单位全称
+        public byte[]               szBuilderID = new byte[MAX_COMMON_STRING_32];   // 施工单位ID
+        public byte[]               szBuilderType = new byte[MAX_COMMON_STRING_32]; // 施工单位类型
+        public byte[]               szBuilderTypeID = new byte[MAX_COMMON_STRING_8];// 施工单位类别ID
+        public byte[]               szPictureID = new byte[MAX_COMMON_STRING_64];   // 人员照片ID
+        public byte[]               szContractID = new byte[MAX_COMMON_STRING_16];  // 原合同系统合同编号
+        public byte[]               szWorkerTypeID = new byte[MAX_COMMON_STRING_8]; // 工种ID
+        public byte[]               szWorkerTypeName = new byte[MAX_COMMON_STRING_32];  // 工种名称
+        public int                  bPersonStatus;                              	// 人员状态, TRUE:启用, FALSE:禁用
+        public int				    emHatStyle;									    // 帽子类型
+        public int		            emHatColor;									    // 帽子颜色
+        public NET_MAN_TEMPERATURE_INFO	stuManTemperatureInfo;						// 人员温度信息
+        public int					nCompanionInfo;								     // 陪同人员 stuCompanionInfo 个数
+        public NET_COMPANION_INFO[]	stuCompanionInfo = new NET_COMPANION_INFO[12];	 // 陪同人员信息:姓名、卡号字段有效
+        public int			        emMask;										     // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效) EM_MASK_STATE_TYPE
+        public int					nFaceIndex;									     // 一人多脸的人脸序号
+        public int					nScore;										     // 人脸质量评分
+        public int					nLiftNo;									// 电梯编号
+        public byte[]               szQRCode=new byte[512];                              // 二维码
+        /**
+         * EM_FACE_CHECK
+         */
+        public int				    emFaceCheck;								// 功能,刷卡开门时,门禁后台校验人脸是否是同一个人
+        /**
+         * EM_QRCODE_IS_EXPIRED
+         */
+        public int		            emQRCodeIsExpired;							// 二维码是否过期。默认值0
+        /**
+         * EM_QRCODE_STATE
+         */
+        public int				    emQRCodeState;								// 二维码状态
+        public NET_TIME        		stuQRCodeValidTo;							// 二维码截止日期
+        /**
+         * EM_LIFT_CALLER_TYPE
+         */
+        public int			        emLiftCallerType;							// 梯控方式触发者
+
+        public int						nBlockId;									// 上报事件数据序列号从1开始自增
+
+        public byte[]					szSection=new byte[64];								// 部门名称
+
+        public byte[]					szWorkClass=new byte[256];							// 工作班级
+         /**
+        * EM_TEST_ITEMS
+        * */
+        public int				emTestItems;								// 测试项目
+
+        /**
+         * NET_TEST_RESULT
+         */
+        public NET_TEST_RESULT				stuTestResult;								// ESD阻值测试结果
+        public int						bUseCardNameEx;								// 是否使用卡命名扩展
+        public byte[]						szCardNameEx=new byte[128];							// 卡命名扩展
+        public  int                     nHSJCResult;                             //核酸检测报告结果  -1: 未知 2: 未检测 3: 过期
+        public int                       nVaccinateFlag;                        //是否已接种新冠疫苗(0:否,1:是)
+        public byte[]                    szVaccineName=new byte[128];              //新冠疫苗名称
+        public  int                       nDateCount;                           //历史接种日期有效数
+       // public byte[]                    szVaccinateDate=new byte[8*32];           //历史接种日期 	历史接种日期 (yyyy-MM-dd)。	”0000-00-00”,表示已接种,但无具体日期。
+        /**
+         *  历史接种日期 (yyyy-MM-dd). 如提供不了时间, 则填"0000-00-00", 表示已接种
+         */
+        public VaccinateDateByteArr[] szVaccinateDate = (VaccinateDateByteArr[])new VaccinateDateByteArr().toArray(8);
+        /**
+         * EM_TRAVELCODE_COLOR_STATE
+         */
+        public int         emTravelCodeColor;                                     //返回行程码状态信息
+        public int                           nCityCount;       //最近14天经过的城市名有效数
+
+        /**
+         *  最近14天经过的城市名. 按时间顺序排列, 最早经过的城市放第一个
+         */
+        public PassingCityByteArr[] szPassingCity = (PassingCityByteArr[])new PassingCityByteArr().toArray(16);
+
+        public byte[]     szTrafficPlate=new byte[32];      //车牌
+        public byte[]	  szRecordLocalUrl=new byte[128];	// 刷卡录像的地址
+        public byte[]	  szHSJCReportDate=new byte[32];	// 核酸检测报告日期(格式: yyyy-MM-dd)
+        public int		  nHSJCExpiresIn;					// 核酸检测报告有效期(单位:天)
+    	public byte[]	  szAntigenReportDate=new byte[32];	// 抗原检测报告日期(格式: yyyy-MM-dd)
+    	public int		  nAntigenStatus;					// 抗原检测报告结果: -1:未知2: 未检测 3: 过期
+    	public int		  nAntigenExpiresIn;				// 抗原检测报告有效期(单位:天)
+    	public byte[]	  szCheckOutType = new byte[32];	// 签出类型
+    	public byte[]	  szCheckOutCause = new byte[512];	// 签出原因
+        public int        nCreateTimeRealUTC;               // 刷卡时间,真实UTC时间戳
+        public byte[]     szReserved = new byte[20];        // 字节对齐
+    	public byte[]	  szLocationName = new byte[256];	// 场所码名称
+    	public byte[]	  szLocationAddress = new byte[256];// 场所码详细地址
+    	public byte[]	  szLocationType = new byte[256];	// 场所码类型
+
+        public NET_RECORDSET_ACCESS_CTL_CARDREC() {
+            this.dwSize = this.size();
+            for(int i = 0; i<stuCompanionInfo.length;i++){
+                stuCompanionInfo[i] = new NET_COMPANION_INFO();
+            }
+        }
+    }
+
+
+
+    // 性别
+    public static class NET_ACCESSCTLCARD_SEX extends SdkStructure
+    {
+        public static final int NET_ACCESSCTLCARD_SEX_UNKNOWN = 0;		// 未知
+        public static final int NET_ACCESSCTLCARD_SEX_MALE = 1;         // 男
+        public static final int NET_ACCESSCTLCARD_SEX_FEMALE = 2;       // 女
+    }
+
+    // 民族
+    public static class EM_CITIZENIDCARD_EC_TYPE extends SdkStructure
+    {
+        public static final int EM_CITIZENIDCARD_EC_Unknown = 0;					// 未知
+        public static final int EM_CITIZENIDCARD_EC_Han = 1;						// 汉族
+        public static final int EM_CITIZENIDCARD_EC_Mongolian = 2;				// 蒙古族
+        public static final int EM_CITIZENIDCARD_EC_Hui = 3;						// 回族
+        public static final int EM_CITIZENIDCARD_EC_Tibetan = 4;					// 藏族
+        public static final int EM_CITIZENIDCARD_EC_Uygur = 5;					// 维吾尔族
+        public static final int EM_CITIZENIDCARD_EC_Miao = 6;					// 苗族
+        public static final int EM_CITIZENIDCARD_EC_Yi = 7;						// 彝族
+        public static final int EM_CITIZENIDCARD_EC_Zhuang = 8;					// 壮族
+        public static final int EM_CITIZENIDCARD_EC_Bouyei = 9;					// 布依族
+        public static final int EM_CITIZENIDCARD_EC_Korean = 10;					// 朝鲜族
+        public static final int EM_CITIZENIDCARD_EC_Manchu = 11;					// 满族
+        public static final int EM_CITIZENIDCARD_EC_Dong = 12;					// 侗族
+        public static final int EM_CITIZENIDCARD_EC_Yao = 13;					// 瑶族
+        public static final int EM_CITIZENIDCARD_EC_Bai = 14;					// 白族
+        public static final int EM_CITIZENIDCARD_EC_Tujia = 15;					// 土家族
+        public static final int EM_CITIZENIDCARD_EC_Hani = 16;					// 哈尼族
+        public static final int EM_CITIZENIDCARD_EC_Kazak = 17;					// 哈萨克族
+        public static final int EM_CITIZENIDCARD_EC_Dai = 18;					// 傣族
+        public static final int EM_CITIZENIDCARD_EC_Li = 19;						// 黎族
+        public static final int EM_CITIZENIDCARD_EC_Lisu = 20;					// 傈僳族
+        public static final int EM_CITIZENIDCARD_EC_Va = 21;						// 佤族
+        public static final int EM_CITIZENIDCARD_EC_She = 22;					// 畲族
+        public static final int EM_CITIZENIDCARD_EC_Gaoshan = 23;				// 高山族
+        public static final int EM_CITIZENIDCARD_EC_Lahu = 24;					// 拉祜族
+        public static final int EM_CITIZENIDCARD_EC_Shui = 25;					// 水族
+        public static final int EM_CITIZENIDCARD_EC_Dongxiang = 26;				// 东乡族
+        public static final int EM_CITIZENIDCARD_EC_Naxi = 27;					// 纳西族
+        public static final int EM_CITIZENIDCARD_EC_Jingpo = 28;					// 景颇族
+        public static final int EM_CITIZENIDCARD_EC_Kirgiz = 29;					// 柯尔克孜族
+        public static final int EM_CITIZENIDCARD_EC_Tu = 30;						// 土族
+        public static final int EM_CITIZENIDCARD_EC_Daur = 31;					// 达斡尔族
+        public static final int EM_CITIZENIDCARD_EC_Mulam = 32;					// 仫佬族
+        public static final int EM_CITIZENIDCARD_EC_Qoiang = 33;					// 羌族
+        public static final int EM_CITIZENIDCARD_EC_Blang = 34;					// 布朗族
+        public static final int EM_CITIZENIDCARD_EC_Salar = 35;					// 撒拉族
+        public static final int EM_CITIZENIDCARD_EC_Maonan = 36;					// 毛南族
+        public static final int EM_CITIZENIDCARD_EC_Gelo = 37;					// 仡佬族
+        public static final int EM_CITIZENIDCARD_EC_Xibe = 38;					// 锡伯族
+        public static final int EM_CITIZENIDCARD_EC_Achang = 39;					// 阿昌族
+        public static final int EM_CITIZENIDCARD_EC_Pumi = 40;					// 普米族
+        public static final int EM_CITIZENIDCARD_EC_Tajik = 41;					// 塔吉克族
+        public static final int EM_CITIZENIDCARD_EC_Nu = 42;						// 怒族
+        public static final int EM_CITIZENIDCARD_EC_Ozbek = 43;					// 乌孜别克族
+        public static final int EM_CITIZENIDCARD_EC_Russian = 44;				// 俄罗斯族
+        public static final int EM_CITIZENIDCARD_EC_Ewenkl = 45;					// 鄂温克族
+        public static final int EM_CITIZENIDCARD_EC_Deang = 46;					// 德昂族
+        public static final int EM_CITIZENIDCARD_EC_Bonan = 47;					// 保安族
+        public static final int EM_CITIZENIDCARD_EC_Yugur = 48;					// 裕固族
+        public static final int EM_CITIZENIDCARD_EC_Jing = 49;					// 京族
+        public static final int EM_CITIZENIDCARD_EC_Tatar = 50;					// 塔塔尔族
+        public static final int EM_CITIZENIDCARD_EC_Drung = 51;					// 独龙族
+        public static final int EM_CITIZENIDCARD_EC_Oroqen = 52;					// 鄂伦春族
+        public static final int EM_CITIZENIDCARD_EC_Hezhen = 53;					// 赫哲族
+        public static final int EM_CITIZENIDCARD_EC_Moinba = 54;					// 门巴族
+        public static final int EM_CITIZENIDCARD_EC_Lhoba = 55;					// 珞巴族
+        public static final int EM_CITIZENIDCARD_EC_Jino = 56;					// 基诺族
+    }
+
+    //考勤状态
+    public static class NET_ATTENDANCESTATE extends SdkStructure {
+        public static final int NET_ATTENDANCESTATE_UNKNOWN = 0;
+        public static final int NET_ATTENDANCESTATE_SIGNIN	= 1;                   // 签入
+        public static final int NET_ATTENDANCESTATE_GOOUT   = 2;                   // 外出
+        public static final int NET_ATTENDANCESTATE_GOOUT_AND_RETRUN = 3;          // 外出归来
+        public static final int NET_ATTENDANCESTATE_SIGNOUT = 4;                   // 签出
+        public static final int NET_ATTENDANCESTATE_WORK_OVERTIME_SIGNIN = 5;      // 加班签到
+        public static final int NET_ATTENDANCESTATE_WORK_OVERTIME_SIGNOUT = 6;     // 加班签出
+    }
+
+    // 开门方向
+    public static class NET_ENUM_DIRECTION_ACCESS_CTL extends SdkStructure {
+        public static final int NET_ENUM_DIRECTION_UNKNOWN = 0;
+        public static final int NET_ENUM_DIRECTION_ENTRY   = 1;                     // 进门
+        public static final int NET_ENUM_DIRECTION_EXIT    = 2;                     // 出门
+    }
+
+    // 记录集类型
+    public static class EM_NET_RECORD_TYPE extends SdkStructure {
+        public static final int NET_RECORD_UNKNOWN = 0;
+        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_TRAFFICREDLIST_CONDITION 结构体,记录信息对应 NET_TRAFFIC_LIST_RECORD 结构体
+        public static final int NET_RECORD_BURN_CASE = 3;      					 // 刻录案件记录,查询条件对应 FIND_RECORD_BURN_CASE_CONDITION 结构体,记录信息对应 NET_BURN_CASE_INFO 结构体
+        public static final int NET_RECORD_ACCESSCTLCARD = 4;  					 // 门禁卡,查询条件对应 FIND_RECORD_ACCESSCTLCARD_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARD 结构体
+        public static final int NET_RECORD_ACCESSCTLPWD = 5;      				 // 门禁密码,查询条件对应 FIND_RECORD_ACCESSCTLPWD_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_PWD
+        public static final int NET_RECORD_ACCESSCTLCARDREC = 6; 				 // 门禁出入记录(必须同时按卡号和时间段查询,建议用 NET_RECORD_ACCESSCTLCARDREC_EX 查询),查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
+        public static final int NET_RECORD_ACCESSCTLHOLIDAY = 7; 				 // 假日记录集,查询条件对应 FIND_RECORD_ACCESSCTLHOLIDAY_CONDITION 结构体,记录信息对应 NET_RECORDSET_HOLIDAY 结构体
+        public static final int NET_RECORD_TRAFFICFLOW_STATE = 8;  				 // 查询交通流量记录,查询条件对应 FIND_RECORD_TRAFFICFLOW_CONDITION 结构体,记录信息对应 NET_RECORD_TRAFFIC_FLOW_STATE 结构体
+        public static final int NET_RECORD_VIDEOTALKLOG = 9;    				 // 通话记录,查询条件对应 FIND_RECORD_VIDEO_TALK_LOG_CONDITION 结构体,记录信息对应 NET_RECORD_VIDEO_TALK_LOG 结构体
+        public static final int NET_RECORD_REGISTERUSERSTATE = 10;  			 // 状态记录,查询条件对应 FIND_RECORD_REGISTER_USER_STATE_CONDITION 结构体,记录信息对应 NET_RECORD_REGISTER_USER_STATE 结构体
+        public static final int NET_RECORD_VIDEOTALKCONTACT = 11;  				 // 联系人记录,查询条件对应 FIND_RECORD_VIDEO_TALK_CONTACT_CONDITION 结构体,记录信息对应 NET_RECORD_VIDEO_TALK_CONTACT 结构体
+        public static final int NET_RECORD_ANNOUNCEMENT = 12;					 // 公告记录,查询条件对应 FIND_RECORD_ANNOUNCEMENT_CONDITION 结构体,记录信息对应 NET_RECORD_ANNOUNCEMENT_INFO 结构体
+        public static final int NET_RECORD_ALARMRECORD = 13; 					 // 报警记录,查询条件对应 FIND_RECORD_ALARMRECORD_CONDITION 结构体,记录信息对应 NET_RECORD_ALARMRECORD_INFO 结构体
+        public static final int NET_RECORD_COMMODITYNOTICE = 14;  				 // 下发商品记录,查询条件对应 FIND_RECORD_COMMODITY_NOTICE_CONDITION 结构体,记录信息对应 NET_RECORD_COMMODITY_NOTICE 结构体
+        public static final int NET_RECORD_HEALTHCARENOTICE = 15;  				 // 就诊信息记录,查询条件对应 FIND_RECORD_HEALTH_CARE_NOTICE_CONDITION 结构体,记录信息对应 NET_RECORD_HEALTH_CARE_NOTICE 结构体
+        public static final int NET_RECORD_ACCESSCTLCARDREC_EX = 16; 			 // 门禁出入记录(可选择部分条件查询,建议替代NET_RECORD_ACCESSCTLCARDREC),查询条件对应 FIND_RECORD_ACCESSCTLCARDREC_CONDITION_EX 结构体,记录信息对应 NET_RECORDSET_ACCESS_CTL_CARDREC 结构体
+        public static final int NET_RECORD_GPS_LOCATION = 17;  					 // GPS位置信息记录, 只实现import和clear,记录信息对应 NET_RECORD_GPS_LOCATION_INFO 结构体
+        public static final int NET_RECORD_RESIDENT = 18;      					 // 公租房租户信息,查询条件对应 FIND_RECORD_RESIDENT_CONDTION结构体, 记录信息对应 NET_RECORD_RESIDENT_INFO 结构体
+        public static final int NET_RECORD_SENSORRECORD = 19;   			 	 // 监测量数据记录,查询条件对应 FIND_RECORD_SENSORRECORD_CONDITION 结构体,记录信息对应 NET_RECORD_SENSOR_RECORD 结构体
+        public static final int NET_RECORD_ACCESSQRCODE = 20;  					 // 开门二维码记录集,记录信息对应 NET_RECORD_ACCESSQRCODE_INFO结构体
+        public static final int NET_RECORD_ACCESS_BLUETOOTH = 22;				 // 蓝牙开门记录集, 查询条件对应 FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION 结构体, 记录信息对应 NET_RECORD_ACCESS_BLUETOOTH_INFO 结构体
+        public static final int  NET_RECORD_ACCESS_CONSUMPTION=29;               // 消费记录 查询条件对应 FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION 结构体, 记录信息对应 NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO 结构体
+    }
+
+    //交通禁止/允许名单记录信息
+    public static class NET_TRAFFIC_LIST_RECORD extends SdkStructure {
+        public int                      dwSize;
+        public int                	  	nRecordNo;                                		     // 之前查询到的记录号
+        public byte[]      			  	szMasterOfCar = new byte[NET_MAX_NAME_LEN];          // 车主姓名
+        public byte[]      			  	szPlateNumber = new byte[NET_MAX_PLATE_NUMBER_LEN];  // 车牌号码
+        public int          			emPlateType;                               		     // 车牌类型,对应EM_NET_PLATE_TYPE
+        public int          			emPlateColor;                              		     // 车牌颜色 ,对应EM_NET_PLATE_COLOR_TYPE
+        public int          			emVehicleType;                             		     // 车辆类型 ,对应EM_NET_VEHICLE_TYPE
+        public int        			  	emVehicleColor;                         		     // 车身颜色,对应EM_NET_VEHICLE_COLOR_TYPE
+        public NET_TIME                 stBeginTime;                       				     // 开始时间
+        public NET_TIME                 stCancelTime;                       				 // 撤销时间
+        public int                      nAuthrityNum;                       				 // 权限个数
+        public NET_AUTHORITY_TYPE[]  	stAuthrityTypes = new NET_AUTHORITY_TYPE[NET_MAX_AUTHORITY_LIST_NUM]; // 权限列表 , 允许名单仅有
+        public int           		  	emControlType;                    			         // 布控类型 ,禁止名单仅有,对应EM_NET_TRAFFIC_CAR_CONTROL_TYPE
+        /**
+         布控路线ID
+         */
+        public	int					    nControlledRouteID;
+        public	int					    nLocation;									         // 车辆所处位置
+        public  int						bLocation;								             // 车辆所处位置是否下发,TRUE:下发 -1,FALSE:不下发 -0
+        public  byte[] 					szCustomParkNo = new byte[32];						 // 自定义车位号,适用于车检器场景
+        public  byte[]                  szProvince = new byte[64];                           // 省份类型
+        public  byte[]                  szMasterOfCarEx = new byte[64];                      // 车主姓名(拓展)
+        public  int                     bIsMasterOfCarExValid;                               // 是否使用szMasterOfCarEx下发
+         public static class ByReference extends NET_TRAFFIC_LIST_RECORD implements Structure.ByReference {}
+
+        public NET_TRAFFIC_LIST_RECORD() {
+            for(int i=0;i<NET_MAX_AUTHORITY_LIST_NUM;i++){
+                stAuthrityTypes[i]=new NET_AUTHORITY_TYPE();
+            }
+            this.dwSize = this.size();
+        }
+    }
+
+    //车牌类型
+    public static class EM_NET_PLATE_TYPE extends SdkStructure
+    {
+        public static final int NET_PLATE_TYPE_UNKNOWN               = 0;
+        public static final int NET_PLATE_TYPE_NORMAL                = 1;   // "Normal" 蓝牌黑牌
+        public static final int NET_PLATE_TYPE_YELLOW                = 2;   // "Yellow" 黄牌
+        public static final int NET_PLATE_TYPE_DOUBLEYELLOW          = 3;   // "DoubleYellow" 双层黄尾牌
+        public static final int NET_PLATE_TYPE_POLICE                = 4;   // "Police" 警牌
+        public static final int NET_PLATE_TYPE_WJ                    = 5;   // 
+        public static final int NET_PLATE_TYPE_OUTERGUARD            = 6;   //
+        public static final int NET_PLATE_TYPE_DOUBLEOUTERGUARD      = 7;   //
+        public static final int NET_PLATE_TYPE_SAR                   = 8;   // "SAR" 港澳特区号牌
+        public static final int NET_PLATE_TYPE_TRAINNING             = 9;   // "Trainning" 教练车号牌
+        public static final int NET_PLATE_TYPE_PERSONAL              = 10;  // "Personal" 个性号牌
+        public static final int NET_PLATE_TYPE_AGRI                  = 11;  // "Agri" 农用牌
+        public static final int NET_PLATE_TYPE_EMBASSY               = 12;  // "Embassy" 使馆号牌
+        public static final int NET_PLATE_TYPE_MOTO                  = 13;  // "Moto" 摩托车号牌
+        public static final int NET_PLATE_TYPE_TRACTOR               = 14;  // "Tractor" 拖拉机号牌
+        public static final int NET_PLATE_TYPE_OFFICIALCAR           = 15;  // "OfficialCar " 公务车
+        public static final int NET_PLATE_TYPE_PERSONALCAR           = 16;  // "PersonalCar" 私家车
+        public static final int NET_PLATE_TYPE_WARCAR                = 17;  // "WarCar"  军用
+        public static final int NET_PLATE_TYPE_OTHER                 = 18;  // "Other" 其他号牌
+        public static final int NET_PLATE_TYPE_CIVILAVIATION         = 19;  // "Civilaviation" 民航号牌
+        public static final int NET_PLATE_TYPE_BLACK                 = 20;  // "Black" 黑牌
+        public static final int NET_PLATE_TYPE_PURENEWENERGYMICROCAR = 21;  // "PureNewEnergyMicroCar" 纯电动新能源小车
+        public static final int NET_PLATE_TYPE_MIXEDNEWENERGYMICROCAR = 22;  // "MixedNewEnergyMicroCar" 混合新能源小车
+        public static final int NET_PLATE_TYPE_PURENEWENERGYLARGECAR = 23;  // "PureNewEnergyLargeCar" 纯电动新能源大车
+        public static final int NET_PLATE_TYPE_MIXEDNEWENERGYLARGECAR = 24;  // "MixedNewEnergyLargeCar" 混合新能源大车
+    }
+
+    //车牌颜色
+    public static class EM_NET_PLATE_COLOR_TYPE extends SdkStructure
+    {
+        public static final int NET_PLATE_COLOR_OTHER                = 0;   // 其他颜色
+        public static final int NET_PLATE_COLOR_BLUE                 = 1;   // 蓝色 "Blue"
+        public static final int NET_PLATE_COLOR_YELLOW               = 2;   // 黄色 "Yellow"
+        public static final int NET_PLATE_COLOR_WHITE                = 3;   // 白色 "White"
+        public static final int NET_PLATE_COLOR_BLACK                = 4;   // 黑色 "Black"
+        public static final int NET_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT = 5;   // 黄底黑字 "YellowbottomBlackText"
+        public static final int NET_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT = 6;   // 蓝底白字 "BluebottomWhiteText"
+        public static final int NET_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT = 7;   // 黑底白字 "BlackBottomWhiteText"
+        public static final int NET_PLATE_COLOR_SHADOW_GREEN         = 8;   // 渐变绿 "ShadowGreen"
+        public static final int NET_PLATE_COLOR_YELLOW_GREEN         = 9;   // 黄绿双拼 "YellowGreen"
+    }
+
+    //车辆类型
+    public static class EM_NET_VEHICLE_TYPE extends SdkStructure
+    {
+        public static final int NET_VEHICLE_TYPE_UNKNOW              = 0;   // 未知类型
+        public static final int NET_VEHICLE_TYPE_MOTOR               = 1;   // "Motor" 机动车
+        public static final int NET_VEHICLE_TYPE_NON_MOTOR           = 2;   // "Non-Motor"非机动车
+        public static final int NET_VEHICLE_TYPE_BUS                 = 3;   // "Bus"公交车
+        public static final int NET_VEHICLE_TYPE_BICYCLE             = 4;   // "Bicycle" 自行车
+        public static final int NET_VEHICLE_TYPE_MOTORCYCLE          = 5;   // "Motorcycle"摩托车
+        public static final int NET_VEHICLE_TYPE_UNLICENSEDMOTOR     = 6;   // "UnlicensedMotor": 无牌机动车
+        public static final int NET_VEHICLE_TYPE_LARGECAR            = 7;   // "LargeCar"  大型汽车
+        public static final int NET_VEHICLE_TYPE_MICROCAR            = 8;   // "MicroCar" 小型汽车
+        public static final int NET_VEHICLE_TYPE_EMBASSYCAR          = 9;   // "EmbassyCar" 使馆汽车
+        public static final int NET_VEHICLE_TYPE_MARGINALCAR         = 10;  // "MarginalCar" 领馆汽车
+        public static final int NET_VEHICLE_TYPE_AREAOUTCAR          = 11;  // "AreaoutCar" 境外汽车
+        public static final int NET_VEHICLE_TYPE_FOREIGNCAR          = 12;  // "ForeignCar" 外籍汽车
+        public static final int NET_VEHICLE_TYPE_DUALTRIWHEELMOTORCYCLE = 13;  // "DualTriWheelMotorcycle"两、三轮摩托车
+        public static final int NET_VEHICLE_TYPE_LIGHTMOTORCYCLE     = 14;  // "LightMotorcycle" 轻便摩托车
+        public static final int NET_VEHICLE_TYPE_EMBASSYMOTORCYCLE   = 15;  // "EmbassyMotorcycle "使馆摩托车
+        public static final int NET_VEHICLE_TYPE_MARGINALMOTORCYCLE  = 16;  // "MarginalMotorcycle "领馆摩托车
+        public static final int NET_VEHICLE_TYPE_AREAOUTMOTORCYCLE   = 17;  // "AreaoutMotorcycle "境外摩托车
+        public static final int NET_VEHICLE_TYPE_FOREIGNMOTORCYCLE   = 18;  // "ForeignMotorcycle "外籍摩托车
+        public static final int NET_VEHICLE_TYPE_FARMTRANSMITCAR     = 19;  // "FarmTransmitCar" 农用运输车
+        public static final int NET_VEHICLE_TYPE_TRACTOR             = 20;  // "Tractor" 拖拉机
+        public static final int NET_VEHICLE_TYPE_TRAILER             = 21;  // "Trailer"  挂车
+        public static final int NET_VEHICLE_TYPE_COACHCAR            = 22;  // "CoachCar"教练汽车
+        public static final int NET_VEHICLE_TYPE_COACHMOTORCYCLE     = 23;  // "CoachMotorcycle "教练摩托车
+        public static final int NET_VEHICLE_TYPE_TRIALCAR            = 24;  // "TrialCar" 试验汽车
+        public static final int NET_VEHICLE_TYPE_TRIALMOTORCYCLE     = 25;  // "TrialMotorcycle "试验摩托车
+        public static final int NET_VEHICLE_TYPE_TEMPORARYENTRYCAR   = 26;  // "TemporaryEntryCar"临时入境汽车
+        public static final int NET_VEHICLE_TYPE_TEMPORARYENTRYMOTORCYCLE = 27;  // "TemporaryEntryMotorcycle"临时入境摩托车
+        public static final int NET_VEHICLE_TYPE_TEMPORARYSTEERCAR   = 28;  // "TemporarySteerCar"临时行驶车
+        public static final int NET_VEHICLE_TYPE_PASSENGERCAR        = 29;  // "PassengerCar" 客车
+        public static final int NET_VEHICLE_TYPE_LARGETRUCK          = 30;  // "LargeTruck" 大货车
+        public static final int NET_VEHICLE_TYPE_MIDTRUCK            = 31;  // "MidTruck" 中货车
+        public static final int NET_VEHICLE_TYPE_SALOONCAR           = 32;  // "SaloonCar" 轿车
+        public static final int NET_VEHICLE_TYPE_MICROBUS            = 33;  // "Microbus"面包车
+        public static final int NET_VEHICLE_TYPE_MICROTRUCK          = 34;  // "MicroTruck"小货车
+        public static final int NET_VEHICLE_TYPE_TRICYCLE            = 35;  // "Tricycle"三轮车
+        public static final int NET_VEHICLE_TYPE_PASSERBY            = 36;  // "Passerby" 行人
+    }
+
+    //车身颜色
+    public static class EM_NET_VEHICLE_COLOR_TYPE extends SdkStructure
+    {
+        public static final int NET_VEHICLE_COLOR_OTHER              = 0;   // 其他颜色
+        public static final int NET_VEHICLE_COLOR_WHITE              = 1;   // 白色	"White"
+        public static final int NET_VEHICLE_COLOR_BLACK              = 2;   // 黑色	"Black"
+        public static final int NET_VEHICLE_COLOR_RED                = 3;   // 红色	"Red"
+        public static final int NET_VEHICLE_COLOR_YELLOW             = 4;   // 黄色	"Yellow"
+        public static final int NET_VEHICLE_COLOR_GRAY               = 5;   // 灰色	"Gray"
+        public static final int NET_VEHICLE_COLOR_BLUE               = 6;   // 蓝色	"Blue"
+        public static final int NET_VEHICLE_COLOR_GREEN              = 7;   // 绿色	"Green"
+        public static final int NET_VEHICLE_COLOR_PINK               = 8;   // 粉红色 "Pink"
+        public static final int NET_VEHICLE_COLOR_PURPLE             = 9;   // 紫色	"Purple"
+        public static final int NET_VEHICLE_COLOR_BROWN              = 10;  // 棕色	"Brown"
+    }
+
+    // 交通流量记录
+    public static class NET_RECORD_TRAFFIC_FLOW_STATE extends SdkStructure {
+        public int                       dwSize;
+        public int                       nRecordNum;                 // 记录编号
+        public int                       nChannel;                   // 通道号
+        public int                       nLane;                      // 车道号
+        public int                       nVehicles;                  // 通过车辆总数
+        public float                     fAverageSpeed;              // 平均车速,单位km/h
+        public float                     fTimeOccupyRatio;           // 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
+        public float                     fSpaceOccupyRatio;          // 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+        public float                     fSpaceHeadway;              // 车头间距,相邻车辆之间的距离,单位米/辆
+        public float                     fTimeHeadway;               // 车头时距,单位秒/辆
+        public int                       nLargeVehicles;             // 大车交通量(9米<车长<12米),辆/单位时间
+        public int                       nMediumVehicles;            // 中型车交通量(6米<车长<9米),辆/单位时间
+        public int                       nSmallVehicles;             // 小车交通量(4米<车长<6米),辆/单位时间,
+        public float                     fBackOfQueue;               // 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离
+        public int                             nPasserby;                  // 通过行人数
+        public NET_RECORD_TRAFFIC_FLOW_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //权限列表 , 允许名单仅有
+    public static class NET_AUTHORITY_TYPE extends SdkStructure {
+        public int                     dwSize;
+        public int              		 emAuthorityType;                 		 //权限类型,对应EM_NET_AUTHORITY_TYPE
+        public int         		 bAuthorityEnable;                 		 //权限使能
+
+        public NET_AUTHORITY_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //权限类型
+    public static class EM_NET_AUTHORITY_TYPE extends SdkStructure {
+        public static final int     	NET_AUTHORITY_UNKNOW = 0;
+        public static final int		    NET_AUTHORITY_OPEN_GATE = 1;             //开闸权限
+    }
+
+    //布控类型
+    public static class EM_NET_TRAFFIC_CAR_CONTROL_TYPE extends SdkStructure
+    {
+        public static final int NET_CAR_CONTROL_OTHER                = 0;
+        public static final int NET_CAR_CONTROL_OVERDUE_NO_CHECK     = 1;   // 过期未检	"OverdueNoCheck"
+        public static final int NET_CAR_CONTROL_BRIGANDAGE_CAR       = 2;   // 	"BrigandageCar"
+        public static final int NET_CAR_CONTROL_BREAKING             = 3;   // 违章		"Breaking"
+        public static final int NET_CAR_CONTROL_CAUSETROUBLE_ESCAPE  = 4;   // "CausetroubleEscape"
+        public static final int NET_CAR_CONTROL_CAUSETROUBLE_OVERDUEPARKING  = 5;    // 停车欠费  "OverdueParking"
+        public static final int NET_CAR_CONTROL_COUNTERFEI_PLATE_CAR = 6;   // 假牌车              "CounterfeitPlateCar"
+        public static final int NET_CAR_CONTROL_FAKE_PLATE_CAR       = 7;   // 套牌车              "FakePlateCar"
+        public static final int NET_CAR_CONTROL_FOCAL_CAR            = 8;   // 重点车辆          "FocalCar"
+        public static final int NET_CAR_CONTROL_GUARANTEE_CAR        = 9;   // 保障车辆          "GuaranteeCar"
+        public static final int NET_CAR_CONTROL_FOLLOW_CAR           = 10;  // 关注车辆          "FollowCar"
+    }
+
+    // 呼叫类型
+    public static class EM_VIDEO_TALK_LOG_CALLTYPE extends SdkStructure {
+        public static final int EM_VIDEO_TALK_LOG_CALLTYPE_UNKNOWN = 0;         // 未知
+        public static final int EM_VIDEO_TALK_LOG_CALLTYPE_INCOMING = 1;        // 呼入
+        public static final int EM_VIDEO_TALK_LOG_CALLTYPE_OUTGOING = 2;        // 呼出
+        public static final int EM_VIDEO_TALK_LOG_CALLTYPE_MAX = 3;
+    }
+
+    // 最终状态
+    public static class EM_VIDEO_TALK_LOG_ENDSTATE extends SdkStructure {
+        public static final int EM_VIDEO_TALK_LOG_ENDSTATE_UNKNOWN = 0;         // 未知
+        public static final int EM_VIDEO_TALK_LOG_ENDSTATE_MISSED = 1;        	// 未接
+        public static final int EM_VIDEO_TALK_LOG_ENDSTATE_RECEIVED = 2;        // 已接
+        public static final int EM_VIDEO_TALK_LOG_ENDSTATE_MAX = 3;
+    }
+
+    // 对方类型
+    public static class EM_VIDEO_TALK_LOG_PEERTYPE extends SdkStructure {
+        public static final int EM_VIDEO_TALK_LOG_PEERTYPE_UNKNOWN = 0;     // 未知
+        public static final int EM_VIDEO_TALK_LOG_PEERTYPE_VTO = 1;        	// 门口机
+        public static final int EM_VIDEO_TALK_LOG_PEERTYPE_VTH = 2;         // 室内机
+        public static final int EM_VIDEO_TALK_LOG_PEERTYPE_VTS = 3; 		// 管理中心
+    }
+
+    // 通话记录查询条件
+    public static class FIND_RECORD_VIDEO_TALK_LOG_CONDITION extends SdkStructure {
+        public int                          dwSize;
+        public int                          bCallTypeEnable;                            // 呼叫类型查询条件是否有效
+        public int                          nCallTypeListNum;                           // 对应 emCallTypeList 中有效枚举个数
+        public int[]      					emCallTypeList = new int[NET_MAX_CALLTYPE_LIST_NUM];   // 呼叫类型使能列表, 详见EM_VIDEO_TALK_LOG_CALLTYPE
+        public int                          bEndStateEnable;                            // 最终状态查询条件是否有效
+        public int                          nEndStateListNum;                           // 对应 emEndStateList 中有效枚举个数
+        public int[]      					emEndStateList = new int[NET_MAX_ENDSTATE_LIST_NUM];   // 最终状态使能列表, 详见EM_VIDEO_TALK_LOG_ENDSTATE
+        public int                          bTimeEnable;                                // 启用时间段查询
+        public NET_TIME                     stStartTime;                                // 起始时间
+        public NET_TIME                     stEndTime;                                  // 结束时间
+
+        public FIND_RECORD_VIDEO_TALK_LOG_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通话记录记录集信息
+    public static class NET_RECORD_VIDEO_TALK_LOG extends SdkStructure {
+        public int                      dwSize;
+        public int                      nRecNo;                             // 记录集编号,只读
+        public NET_TIME                 stuCreateTime;                      // 开始时间
+        public int      				emCallType;                         // 呼叫类型,详见EM_VIDEO_TALK_LOG_CALLTYPE
+        public int      				emEndState;                         // 最终状态,详见EM_VIDEO_TALK_LOG_ENDSTATE
+        public byte[]                   szPeerNumber = new byte[NET_COMMON_STRING_64];  // 对方号码 可以是短号,中号或长号
+        public int      				emPeerType;                         // 对方类型,详见EM_VIDEO_TALK_LOG_PEERTYPE
+        public byte[]                   szLocalNumber = new byte[NET_COMMON_STRING_64]; // 本机号码 可以是短号,中号或长号
+        public int                      nTalkTime;                          // 通话时间 单位秒
+        public int                      nMessageTime;                       // 留言时间 单位秒
+        public byte[]                   szPicturePath = new byte[NET_COMMON_STRING_128]; // 图片路径
+        public int		                emOfflineCall;						// 平台断线是否呼出,NET_EM_OFFLINE_CALL_TYPE
+        public NET_TIME_EX              stuCreateTimeRealUTC = new NET_TIME_EX(); // 真实UTC开始时间
+        public NET_RECORD_VIDEO_TALK_LOG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FindRecord接口输出参数
+    public static class NET_OUT_FIND_RECORD_PARAM extends SdkStructure {
+        public int                     dwSize;          						// 结构体大小
+        public LLong                   lFindeHandle; 						    // 查询记录句柄,唯一标识某次查询
+
+        public NET_OUT_FIND_RECORD_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FindNextRecord接口输入参数
+    public static class NET_IN_FIND_NEXT_RECORD_PARAM extends SdkStructure {
+        public int                      dwSize;          						// 结构体大小
+        public LLong              		lFindeHandle;    						// 查询句柄
+        public int                      nFileCount;      						// 当前想查询的记录条数
+
+        public NET_IN_FIND_NEXT_RECORD_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_FindNextRecord接口输出参数
+    public static class NET_OUT_FIND_NEXT_RECORD_PARAM extends SdkStructure {
+        public int                     dwSize;          						// 结构体大小
+        public Pointer                 pRecordList;     				   	 	// 记录列表,用户分配内存,对应 交通禁止/允许名单记录信息 NET_TRAFFIC_LIST_RECORD
+        public int                     nMaxRecordNum;   						// 列表记录数
+        public int                     nRetRecordNum;   						// 查询到的记录条数,当查询到的条数小于想查询的条数时,查询结束
+
+        public NET_OUT_FIND_NEXT_RECORD_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryRecordCount接口输入参数
+    public static class NET_IN_QUEYT_RECORD_COUNT_PARAM extends SdkStructure
+    {
+        public int dwSize;//结构体大小
+        public LLong lFindeHandle;//查询句柄
+
+        public NET_IN_QUEYT_RECORD_COUNT_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_QueryRecordCount接口输出参数
+    public static class NET_OUT_QUEYT_RECORD_COUNT_PARAM extends SdkStructure
+    {
+        public int dwSize;//结构体大小
+        public int nRecordCount;//设备返回的记录条数
+
+        public NET_OUT_QUEYT_RECORD_COUNT_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_OperateTrafficList接口输入参数,
+    public static class NET_IN_OPERATE_TRAFFIC_LIST_RECORD extends SdkStructure {
+        public int                       dwSize;
+        public int                       emOperateType;  					 // emOperateType对应EM_RECORD_OPERATE_TYPE
+        public int                       emRecordType;    					 // 要操作记录信息类型,emRecordType对应EM_NET_RECORD_TYPE
+        public Pointer                   pstOpreateInfo;  				    // 对应 添加NET_INSERT_RECORD_INFO/ 删除NET_REMOVE_RECORD_INFO / 修改NET_UPDATE_RECORD_INFO
+
+        public NET_IN_OPERATE_TRAFFIC_LIST_RECORD() {
+            this.dwSize = this.size();
+        }
+    }
+    // 添加
+    public static class NET_INSERT_RECORD_INFO extends SdkStructure {
+        public int                       			dwSize;
+        public NET_TRAFFIC_LIST_RECORD.ByReference  pRecordInfo = new NET_TRAFFIC_LIST_RECORD.ByReference();      		// 记录内容信息
+
+        public NET_INSERT_RECORD_INFO () {
+            this.dwSize = this.size();
+        }
+    }
+    // 删除
+    public static class NET_REMOVE_RECORD_INFO extends SdkStructure {
+        public int                      dwSize;
+        public int                      nRecordNo;      			    	 // 之前查询到的记录号,对应NET_TRAFFIC_LIST_RECORD里的nRecordNo
+
+        public NET_REMOVE_RECORD_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+    // 修改
+    public static class NET_UPDATE_RECORD_INFO extends SdkStructure{
+        public int                  			    dwSize;
+        public NET_TRAFFIC_LIST_RECORD.ByReference 	pRecordInfo=new NET_TRAFFIC_LIST_RECORD.ByReference();    	   // 记录内容信息 ,对应  NET_TRAFFIC_LIST_RECORD
+
+        public NET_UPDATE_RECORD_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 禁止/允许名单操作类型
+    public static class EM_RECORD_OPERATE_TYPE extends SdkStructure {
+        public static final int NET_TRAFFIC_LIST_INSERT = 0;               // 增加记录操作
+        public static final int NET_TRAFFIC_LIST_UPDATE = 1;               // 更新记录操作
+        public static final int NET_TRAFFIC_LIST_REMOVE = 2;               // 删除记录操作
+        public static final int NET_TRAFFIC_LIST_MAX = 3;
+    }
+
+    // CLIENT_OperateTrafficList接口输出参数,现阶段实现的操作接口中,只有返回nRecordNo的操作,stRetRecord暂时不可用,是null
+    public static class NET_OUT_OPERATE_TRAFFIC_LIST_RECORD extends SdkStructure {
+        public int                     dwSize;
+        public int                     nRecordNo;        //记录号
+
+        public NET_OUT_OPERATE_TRAFFIC_LIST_RECORD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 记录集操作参数
+    public static class NET_CTRL_RECORDSET_PARAM extends SdkStructure {
+        public int               dwSize;
+        public int 			     emType;                         // 记录集信息类型,对应EM_NET_RECORD_TYPE
+        public Pointer           pBuf;                           // 新增\更新\查询\导入时,为记录集信息缓存,详见EM_NET_RECORD_TYPE注释
+                                                                 // 删除时,为存放记录集编号的内存地址(类型为int*), 批量删除时,为NET_CTRL_RECORDSET_REMOVEEX_PARAM, 由用户申请内存, 长度为nBufLen
+        public int               nBufLen;                        // 记录集信息缓存大小
+
+        public NET_CTRL_RECORDSET_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 禁止/允许名单上传
+    public static class NETDEV_BLACKWHITE_LIST_INFO extends SdkStructure {
+        public byte[]        						  szFile = new byte[MAX_PATH_STOR];      // 禁止/允许名单文件路径
+        public int                                    nFileSize;            				 // 升级文件大小
+        public byte                  			      byFileType;         					 // 当前文件类型,0-禁止名单,1-允许名单
+        public byte                   			      byAction;            					 // 动作,0-覆盖,1-追加
+        public byte[]      		   					  byReserved = new byte[126];            // 保留
+    }
+
+    // GPS信息(车载设备)
+    public static class GPS_Info extends SdkStructure {
+        public NET_TIME           revTime;                          // 定位时间
+        public byte[]             DvrSerial = new byte[50];         // 设备序列号
+        public double             longitude;                     	// 经度(单位是百万分之度,范围0-360度)
+        public double             latidude;                     	// 纬度(单位是百万分之度,范围0-180度)
+        public double             height;                      	    // 高度(米)
+        public double             angle;                        	// 方向角(正北方向为原点,顺时针为正)
+        public double             speed;                        	// 速度(单位是海里,speed/1000*1.852公里/小时)
+        public short              starCount;                     	// 定位星数,无符号
+        public int           	  antennaState;                 	// 天线状态(true 好,false 坏)
+        public int                orientationState;              	// 定位状态(true 定位,false 不定位)
+
+        public static class ByValue extends GPS_Info implements SdkStructure.ByValue { }
+    }
+
+    // 报警状态信息
+    public static class ALARM_STATE_INFO extends SdkStructure {
+        public int                nAlarmCount;                       // 发生的报警事件个数
+        public int[]              nAlarmState = new int[128];        // 发生的报警事件类型
+        public byte[]             byRserved   = new byte[128];       // 保留字节
+
+        public static class ByValue extends ALARM_STATE_INFO implements SdkStructure.ByValue { }
+    }
+
+    // 对应CLIENT_SearchDevicesByIPs接口
+    public static class DEVICE_IP_SEARCH_INFO extends SdkStructure {
+        public int               dwSize;                                    		 		    // 结构体大小
+        public int               nIpNum;                                				    	// 当前搜索的IP个数
+        public DEVICE_IP[]       szIPArr
+                = (DEVICE_IP[])new DEVICE_IP().toArray(NET_MAX_SAERCH_IP_NUM); // 具体待搜索的IP信息数组
+
+        public DEVICE_IP_SEARCH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 具体待搜索的IP信息
+    public static class DEVICE_IP extends SdkStructure {
+        public byte[]            szIP        = new byte[64];          // 具体待搜索的IP信息
+    }
+
+    // CLIENT_UploadRemoteFile 接口输入参数(上传文件到设备)
+    public static class NET_IN_UPLOAD_REMOTE_FILE extends SdkStructure {
+        public int               dwSize;
+        public Pointer           pszFileSrc;                     	// 源文件路径
+        public Pointer         	 pszFileDst;                     	// 目标文件路径
+        public Pointer         	 pszFolderDst;                   	// 目标文件夹路径:可为NULL, NULL时设备使用默认路径
+        public int          	 nPacketLen;                     	// 文件分包大小(字节): 0表示不分包
+
+        public NET_IN_UPLOAD_REMOTE_FILE(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_UploadRemoteFile 接口输出参数(上传文件到设备)
+    public static class NET_OUT_UPLOAD_REMOTE_FILE extends SdkStructure {
+        public int               dwSize;
+
+        public NET_OUT_UPLOAD_REMOTE_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ListRemoteFile 接口输入参数
+    public static class NET_IN_LIST_REMOTE_FILE extends SdkStructure
+    {
+        public int               	dwSize;
+        public String         		pszPath;                        // 路径
+        public int                	bFileNameOnly;                  // 只获取文件名称, 不返回文件夹信息, 文件信息中只有文件名有效, BOOL类型
+        public int 					emCondition;                    // 指定获取文件的条件, 对应  NET_REMOTE_FILE_COND
+
+        public NET_IN_LIST_REMOTE_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ListRemoteFile 接口输出参数
+    public static class NET_OUT_LIST_REMOTE_FILE extends SdkStructure
+    {
+        public int                   dwSize;
+        public Pointer    			 pstuFiles;                  // 文件信息数组, 用户分配内存, 对应 NET_REMOTE_FILE_INFO[],大小为sizeof(NET_REMOTE_FILE_INFO)*nMaxFileCount
+        public int                   nMaxFileCount;              // 文件信息数组大小, 用户填写
+        public int                   nRetFileCount;              // 返回的文件数量
+
+        public NET_OUT_LIST_REMOTE_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 文件/目录信息
+    public static class SDK_REMOTE_FILE_INFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public int               	bDirectory;                     			// 是否文件夹, BOOL类型
+        public byte[]               szPath = new byte[MAX_PATH];                // 路径
+        public NET_TIME             stuCreateTime;                  			// 创建时间
+        public NET_TIME             stuModifyTime;                  			// 修改时间
+        public long                 nFileSize;                      			// 文件大小
+        public byte[]               szFileType = new byte[NET_FILE_TYPE_LEN];   // 文件类型
+
+        public SDK_REMOTE_FILE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取文件的条件
+    public static class NET_REMOTE_FILE_COND extends SdkStructure
+    {
+        public static final int NET_REMOTE_FILE_COND_NONE = 0;              // 无条件
+        public static final int NET_REMOTE_FILE_COND_VOICE = 1;             // 语音联动的文件,*无法*按路径获取,*只能*获取获取文件名称
+    }
+
+    // CLIENT_RemoveRemoteFiles 接口输入参数
+    public static class NET_IN_REMOVE_REMOTE_FILES extends SdkStructure
+    {
+        public int                 dwSize;
+        public Pointer             pszPathPointer;         // 文件路径数组指针,对应 FILE_PATH[]
+        public int                 nFileCount;             // 文件路径数量
+
+        public NET_IN_REMOVE_REMOTE_FILES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class FILE_PATH extends SdkStructure {
+        public String pszPath;
+    }
+
+    // CLIENT_RemoveRemoteFiles 接口输出参数
+    public static class NET_OUT_REMOVE_REMOTE_FILES extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_REMOVE_REMOTE_FILES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlAttachRecord()接口输入参数
+    public static class NET_IN_PARKING_CONTROL_PARAM extends SdkStructure {
+        public int                              dwSize;
+        public Callback					cbCallBack;                 // 数据回调函数,fParkingControlRecordCallBack 回调
+        public Pointer                      	dwUser;                     // 用户定义参数
+
+        public NET_IN_PARKING_CONTROL_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlDetachRecord()接口输出参数
+    public static class NET_OUT_PARKING_CONTROL_PARAM extends SdkStructure {
+        public int    							dwSize;
+
+        public NET_OUT_PARKING_CONTROL_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 过车记录信息
+    public static class NET_CAR_PASS_ITEM extends SdkStructure {
+        public int                      dwSize;
+        public NET_TIME                 stuTime;          // 过车时间
+        public int                      dwCardNo;         // 卡号
+        public int      			    emCardType;       // 智能停车系统出入口机IC卡用户类型,对应 NET_ECK_IC_CARD_USER_TYPE
+        public int     				    emFlag;           // 过车记录类型,对应 NET_ECK_CAR_PASS_FLAG
+
+        public NET_CAR_PASS_ITEM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能停车系统出入口机IC卡用户类型
+    public static class NET_ECK_IC_CARD_USER_TYPE extends SdkStructure {
+        public static final int NET_ECK_IC_CARD_USER_UNKNOWN     = 0;
+        public static final int NET_ECK_IC_CARD_USER_ALL         = 1;               // 全部类型
+        public static final int NET_ECK_IC_CARD_USER_TEMP		 = 2;               // 临时用户
+        public static final int NET_ECK_IC_CARD_USER_LONG		 = 3;               // 长期用户
+        public static final int NET_ECK_IC_CARD_USER_ADMIN		 = 4;               // 管理员
+        public static final int NET_ECK_IC_CARD_USER_BLACK_LIST  = 5;               // 禁止名单
+    }
+
+    // 智能停车系统出入口机异常过车记录类型
+    public static class NET_ECK_CAR_PASS_FLAG extends SdkStructure {
+        public static final int NET_ECK_CAR_PASS_FLAG_NORMAL   = 0;                 // 正常
+        public static final int NET_ECK_CAR_PASS_FLAG_ABNORMAL = 1;                 // 异常
+        public static final int NET_ECK_CAR_PASS_FLAG_ALL      = 2;                 // 全部
+    }
+
+    // CLIENT_ParkingControlStartFind接口输入参数******************
+    public static class NET_IN_PARKING_CONTROL_START_FIND_PARAM extends SdkStructure {
+        public int                      dwSize;          // 结构体大小
+        public int                      bSearchCount;    // 查询记录调试是否有效
+        public int                      dwSearchCount;   // 查询记录条数, 数值范围1~100
+        public int                      bBegin;          // 查询开始时间是否有效
+        public NET_TIME                 stuBegin;        // 查询开始时间
+        public int                      bEnd;            // 查询结束时间是否有效
+        public NET_TIME                 stuEnd;          // 查询结束时间
+        public int                      bCardType;       // 卡类型是否有效
+        public int 					    emCardType;      // 卡类型,对应 NET_ECK_IC_CARD_USER_TYPE
+        public int                      bFlag;           // 过车标记是否有效
+        public int                      emFlag;          // 过车标记,对应 NET_ECK_CAR_PASS_FLAG
+
+        public NET_IN_PARKING_CONTROL_START_FIND_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlStartFind接口输出参数
+    public static class NET_OUT_PARKING_CONTROL_START_FIND_PARAM extends SdkStructure {
+        public int                     dwSize;          // 结构体大小
+        public int                     dwTotalCount;    // 符合此次查询条件的结果总条数
+
+        public NET_OUT_PARKING_CONTROL_START_FIND_PARAM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlDoFind接口输入参数*******************
+    public static class NET_IN_PARKING_CONTROL_DO_FIND_PARAM extends SdkStructure {
+        public int                     dwSize;          // 结构体大小
+        public int                     dwFileCount;     // 当前想查询的记录条数
+
+        public NET_IN_PARKING_CONTROL_DO_FIND_PARAM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlDoFind接口输出参数
+    public static class NET_OUT_PARKING_CONTROL_DO_FIND_PARAM extends SdkStructure{
+        public int                             dwSize;          // 结构体大小
+        public Pointer      				   pstuRecordList;  // 记录列表,用户分配内存,对应NET_CAR_PASS_ITEM[],大小nMaxRecordNum个NET_CAR_PASS_ITEM
+        public int                     		   nMaxRecordNum;   // 列表记录数
+        public int                     	 	   nRetRecordNum;   // 查询到的记录条数,当查询到的条数小于想查询的条数时,查询结束
+
+        public NET_OUT_PARKING_CONTROL_DO_FIND_PARAM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlAttachParkInfo()接口输入参数
+    public static class NET_IN_PARK_INFO_PARAM extends SdkStructure
+    {
+        public int                             dwSize;
+        public NET_PARK_INFO_FILTER            stuFilter;
+        public Callback			       cbCallBack;        // 数据回调函数,fParkInfoCallBack 回调
+        public Pointer                         dwUser;            // 用户定义参数
+
+        public NET_IN_PARK_INFO_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ParkingControlAttachParkInfo()接口输出参数
+    public static class NET_OUT_PARK_INFO_PARAM extends SdkStructure
+    {
+        public int    				dwSize;
+
+        public NET_OUT_PARK_INFO_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车位检测器信息查询条件
+    public static class NET_PARK_INFO_FILTER extends SdkStructure
+    {
+        public int           dwSize;
+        public int           dwNum;                               // 车位检测器类型数量
+        public int[] 		 emType = new int[NET_ECK_PARK_DETECTOR_TYPE.NET_ECK_PARK_DETECTOR_TYPE_ALL];   // 车位检测器类型
+
+        public NET_PARK_INFO_FILTER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车位检测器类型
+    public static class NET_ECK_PARK_DETECTOR_TYPE extends SdkStructure
+    {
+        public static final int NET_ECK_PARK_DETECTOR_TYPE_SONIC  = 0;         // 超声波探测器
+        public static final int NET_ECK_PARK_DETECTOR_TYPE_CAMERA = 1;         // 相机检测器
+        public static final int NET_ECK_PARK_DETECTOR_TYPE_ALL	  = 2;
+    }
+
+    // 车位信息
+    public static class NET_PARK_INFO_ITEM extends SdkStructure
+    {
+        public int                 dwSize;
+        public byte[]              szParkNo = new byte[NET_COMMON_STRING_32];   // 车位号
+        public int  			   emState;                         			// 车位状态,对应  NET_ECK_PARK_STATE
+        public int                 dwScreenIndex;                   			// 车位号显示对应的诱导屏分屏号
+        public int                 dwFreeParkNum;                   			// 屏号显示的当前空余车位数目
+
+        public NET_PARK_INFO_ITEM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能停车系统车位状态
+    public static class NET_ECK_PARK_STATE extends SdkStructure
+    {
+        public static final int NET_ECK_PARK_STATE_UNKOWN = 0;
+        public static final int NET_ECK_PARK_STATE_PARK   = 1;       // 车位有车
+        public static final int NET_ECK_PARK_STATE_NOPARK = 2;       // 车位无车
+    }
+
+    // 智能停车系统出入口机设置车位信息 参数 NET_CTRL_ECK_SET_PARK_INFO
+    public static class NET_CTRL_ECK_SET_PARK_INFO_PARAM extends SdkStructure
+    {
+        public int           	dwSize;
+        public int              nScreenNum;                                     // 屏数量, 不超过 ECK_SCREEN_NUM_MAX
+        public int[]            nScreenIndex = new int[ECK_SCREEN_NUM_MAX];     // 屏号, 每个元素表示屏序号
+        public int[]            nFreeParkNum = new int[ECK_SCREEN_NUM_MAX];     // 对应屏管理下的空余车位数
+        // 长度和下标与nScreenIndex一致,每个元素表示对应屏号下的空余车位
+        public NET_CTRL_ECK_SET_PARK_INFO_PARAM(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_PowerControl接口输入参数(电视墙电源控制)
+    public static class NET_IN_WM_POWER_CTRL extends SdkStructure
+    {
+        public int              	dwSize;
+        public int                  nMonitorWallID;             // 电视墙序号
+        public String          		pszBlockID;                 // 区块ID, NULL/""-所有区块
+        public int                  nTVID;                      // 显示单元序号, -1表示区块中所有显示单元
+        public int                  bPowerOn;                   // 是否打开电源
+
+        public NET_IN_WM_POWER_CTRL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_PowerControl接口输出参数(电视墙电源控制)
+    public static class NET_OUT_WM_POWER_CTRL extends SdkStructure
+    {
+        public int                 dwSize;
+
+        public NET_OUT_WM_POWER_CTRL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_LoadMonitorWallCollection接口输入参数(载入电视墙预案)
+    public static class NET_IN_WM_LOAD_COLLECTION extends SdkStructure
+    {
+        public int                dwSize;
+        public int                nMonitorWallID;             // 电视墙序号
+        public Pointer         	  pszName;                    // 预案名称
+
+        public NET_IN_WM_LOAD_COLLECTION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_LoadMonitorWallCollection接口输出参数(载入电视墙预案)
+    public static class NET_OUT_WM_LOAD_COLLECTION extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_WM_LOAD_COLLECTION() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // CLIENT_SaveMonitorWallCollection接口输入参数(保存电视墙预案)
+    public static class NET_IN_WM_SAVE_COLLECTION extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nMonitorWallID;             // 电视墙序号
+        public Pointer           pszName;                    // 预案名称
+        public Pointer            pszControlID;               // 控制id
+        public byte[]               bReserverd=new byte[4];              // 保留字节,用于字节对齐
+        public int emType;                     // 预案类型 EM_SAVE_COLLECTION_TYPE
+        public NET_IN_WM_SAVE_COLLECTION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SaveMonitorWallCollection接口输出参数(保存电视墙预案)
+    public static class NET_OUT_WM_SAVE_COLLECTION extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_WM_SAVE_COLLECTION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 分割模式
+    public static class NET_SPLIT_MODE extends SdkStructure
+    {
+        public static final int NET_SPLIT_1 = 1;                                   // 1画面
+        public static final int NET_SPLIT_2 = 2;                                   // 2画面
+        public static final int NET_SPLIT_4 = 4;                                   // 4画面
+    	public static final int NET_SPLIT_5 = 5;								   // 5画面
+        public static final int NET_SPLIT_6 = 6;                                   // 6画面
+        public static final int NET_SPLIT_8 = 8;                                   // 8画面
+        public static final int NET_SPLIT_9 = 9;                                   // 9画面
+        public static final int NET_SPLIT_12 = 12;                                 // 12画面
+        public static final int NET_SPLIT_16 = 16;                                 // 16画面
+        public static final int NET_SPLIT_20 = 20;                                 // 20画面
+        public static final int NET_SPLIT_25 = 25;                                 // 25画面
+        public static final int NET_SPLIT_36 = 36;                                 // 36画面
+        public static final int NET_SPLIT_64 = 64;                                 // 64画面
+        public static final int NET_SPLIT_144 = 144;                               // 144画面
+        public static final int NET_PIP_1 = NET_SPLIT_PIP_BASE + 1;                // 画中画模式, 1个全屏大画面+1个小画面窗口
+        public static final int NET_PIP_3 = NET_SPLIT_PIP_BASE + 3;                // 画中画模式, 1个全屏大画面+3个小画面窗口
+        public static final int NET_SPLIT_FREE = NET_SPLIT_PIP_BASE * 2;           // 自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序
+        public static final int NET_COMPOSITE_SPLIT_1 = NET_SPLIT_PIP_BASE * 3 + 1;// 融合屏成员1分割
+        public static final int NET_COMPOSITE_SPLIT_4 = NET_SPLIT_PIP_BASE * 3 + 4;// 融合屏成员4分割
+        public static final int NET_SPLIT_3  = 10;                                 // 3画面
+    	public static final int	NET_SPLIT_3B = 11;								   // 3画面倒品 
+    	public static final int	NET_SPLIT_4A = NET_SPLIT_PIP_BASE * 4 + 1;         // 4个画面, 一个大画面在左边,3个小画面在右边排成一列       
+    }
+
+    // 区块窗口信息
+    public static class NET_WINDOW_COLLECTION extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nWindowID;                      // 窗口ID
+        public int               bWndEnable;                     // 窗口是否有效
+        public DH_RECT           stuRect;                        // 窗口区域, 自由分割模式下有效
+        public int               bDirectable;                    // 坐标是否满足直通条件
+        public int               nZOrder;                        // 窗口Z次序
+        public int               bSrcEnable;                     // 显示源是否有效
+        public byte[]            szDeviceID = new byte[NET_DEV_ID_LEN_EX]; // 设备ID
+        public int               nVideoChannel;                  // 视频通道号
+        public int               nVideoStream;                   // 视频码流类型
+        public int               nAudioChannel;                  // 音频通道
+        public int               nAudioStream;                   // 音频码流类型
+        public int               nUniqueChannel;                 // 设备内统一编号的唯一通道号
+        public NET_MONITOR_WALL_DEVICE_INFO	stuDeviceInfo;		// 设备详细信息
+        public int				 nInterval;						// 轮巡时间间隔,单位秒 (窗口轮巡有效,否则忽略)
+        public NET_REMOTE_DEVICE stuDeviceInfoEx = new NET_REMOTE_DEVICE(); // 设备详细信息扩展
+        public NET_WINDOW_COLLECTION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 分割窗口OSD信息
+    public static class NET_SPLIT_OSD extends SdkStructure
+    {
+        public int               dwSize;
+        public Boolean                bEnable;                    // 使能
+        public NET_COLOR_RGBA       stuFrontColor;              // 前景颜色
+        public NET_COLOR_RGBA       stuBackColor;               // 背景颜色
+        public DH_RECT             stuFrontRect;               // 前景区域
+        public DH_RECT             stuBackRect;                // 背景区域
+        public Boolean                bRoll;                      // 是否滚动显示, 只对文本有效
+        public  byte                byRollMode;                 // 滚动模式, 只对文本有效, 0-从左往右, 1-从右往左, 2-从上往下滚动, 3-从下往上滚动
+        public  byte                byRoolSpeed;                // 滚动速率, 只对文本有效, 0~4, 数值越大滚动越快
+        public  byte                byFontSize;                 // 字体大小, 只对文本有效
+        public byte                byTextAlign;                // 对齐方式, 0-靠左, 1-居中, 2-靠右
+        public byte                byType;                     // OSD类型, 0-文本, 1-图标, 2-时间
+        public byte[]                Reserved=new byte[3];                // 保留字节
+        public byte[]                szContent=new byte[MAX_PATH];        // OSD内容
+        // 若类型为图标, 内容为图标名称
+        // 若类型为Time,内容为”Date”(日期),”Week”(星期),”Time”(时间),”\n”(换行)的自由组合。
+        // 例如:不同行显示,需要将此字段填为"Date\nTime",在屏幕上就会显示
+        // 2018年4月23日
+        // 16:49:15
+        // 同行显示,需要将此字段填为"DateTime",在屏幕上就会显示
+        // 2018年4月23日16:49:15
+        public float               fPitch;                     // 字符间距, 0.0 ~ 5.0
+        public byte[]              szFontType=new byte[NET_COMMON_STRING_64]; // 字体类型
+		public byte[]              szPattern=new byte[8];          // 文本显示模式 Row:横排(默认) Column:竖排
+		public byte[]			   szContentEx=new byte[1024];	   // OSD内容
+    };
+
+    // 拼接区底图信息
+    public static class NET_SCREEEN_BACKGROUD extends SdkStructure
+    {
+        public Boolean            bEnable;                        // 底图是否开启
+        public byte[]            szName=new byte[130];                    // 底图名称,底图是已经上传的文件,不带路径名称
+        public byte[]             byReserved=new byte[130];                // 保留字节用
+    } ;
+
+    // 区块收藏
+    public static class NET_BLOCK_COLLECTION extends SdkStructure
+    {
+        public int                	 			  dwSize;
+        public int        			  			  emSplitMode;                      						  // 分割模式,对应  NET_SPLIT_MODE
+        public NET_WINDOW_COLLECTION[] 			  stuWnds       = new NET_WINDOW_COLLECTION[NET_MAX_SPLIT_WINDOW];  // 窗口信息数组
+        public int                   			  nWndsCount;                    							  // 窗口数量
+        public byte[]                			  szName        = new byte[NET_DEVICE_NAME_LEN];    		  // 收藏夹名称
+        public int                   			  nScreen;                       							  // 输出通道号, 包括拼接屏
+        public byte[]                  			  szCompositeID = new byte[NET_DEV_ID_LEN_EX]; 				  // 拼接屏ID
+        public Pointer  		  				  pstuWndsEx;                  							      // 窗口信息数组指针 NET_WINDOW_COLLECTION[] , 由用户分配内存. 当stuWnds数组大小不够用时可以使用
+        public int                  			  nMaxWndsCountEx;               							  // 最大窗口数量, 用户填写. pstuWndsEx数组的元素个数
+        public int                  			  nRetWndsCountEx;               							  // 返回窗口数量
+        public int                   nSplitOsdCount;               // OSD的个数
+        public NET_SPLIT_OSD[]         stuSplitOsd=new NET_SPLIT_OSD[20];              // 拼接区OSD叠加信息,
+        public NET_SCREEEN_BACKGROUD stuScreenBackground;          // 拼接区底图信息,目前仅预案获取时使用
+
+        public NET_BLOCK_COLLECTION() {
+            this.dwSize = this.size();
+            for (int i = 0; i < stuWnds.length; ++i) {
+                stuWnds[i] = new NET_WINDOW_COLLECTION();
+            }
+        }
+    }
+
+    // 电视墙显示单元
+    public static class NET_MONITORWALL_OUTPUT extends SdkStructure
+    {
+        public int               dwSize;
+        public byte[]            szDeviceID = new byte[NET_DEV_ID_LEN];          // 设备ID, 本机时为""
+        public int               nChannel;                           		     // 通道号
+        public byte[]            szName 	= new byte[NET_DEV_NAME_LEN];        // 屏幕名称
+        public boolean			 bIsVirtual;							// 是否是虚拟屏(虚拟屏表示在本设备上不存在的屏)TRUE:虚拟屏 FALSE:非虚拟屏
+        public byte[]			 szAddress=new byte[40];						// 归属设备地址IP
+        public NET_MONITOR_WALL_OUT_MODE_INFO	stuOutMode;				// 输出模式信息
+        public NET_MONITORWALL_OUTPUT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 电视墙显示区块
+    public static class NET_MONITORWALL_BLOCK extends SdkStructure
+    {
+        public int               dwSize;
+        public byte[]            szName 	   = new byte[NET_DEV_NAME_LEN];   // 区块名称
+        public byte[]            szCompositeID = new byte[NET_DEV_ID_LEN];     // 拼接屏ID
+        public byte[]            szControlID   = new byte[NET_DEV_ID_LEN];     // 控制ID
+        public int               nSingleOutputWidth;             			   // 单个显示单元所占的网格列数
+        public int               nSingleOutputHeight;            			   // 单个显示单元所占的网格行数
+        public DH_RECT           stuRect;                        			   // 区域坐标
+        public NET_TSECT_WEEK_DAY[]   stuPowerSchedule = (NET_TSECT_WEEK_DAY[])new NET_TSECT_WEEK_DAY().toArray(NET_TSCHE_DAY_NUM); // 开机时间表, 第一维各元素表示周日~周六和节假日
+        public Pointer			 pstuOutputs;                				   // 显示单元数组 NET_MONITORWALL_OUTPUT[] , 用户分配内存
+        public int               nMaxOutputCount;                			   // 显示单元数组大小, 用户填写
+        public int               nRetOutputCount;                			   // 返回的显示单元数量
+        public byte[]            szBlockType = new byte[NET_COMMON_STRING_32]; // 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型
+        public int				 nOutputDelay;					// 输出延迟,单位:毫秒
+        public NET_MONITORWALL_BLOCK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_TSECT_WEEK_DAY extends SdkStructure
+    {
+        public NET_TSECT[]       stuPowerSchedule = (NET_TSECT[])new NET_TSECT().toArray(NET_TSCHE_SEC_NUM);
+    }
+
+    // 电视墙配置
+    public static class NET_MONITORWALL extends SdkStructure
+    {
+        public int                dwSize;
+        public byte[]             szName = new byte[NET_DEV_NAME_LEN];      // 名称
+        public int                nGridLine;                      			// 网格行数
+        public int                nGridColume;                   		 	// 网格列数
+        public Pointer   		  pstuBlocks;              		            // 显示区块数组 NET_MONITORWALL_BLOCK[] , 用户分配内存
+        public int                nMaxBlockCount;                 			// 显示区块数组大小, 用户填写
+        public int                nRetBlockCount;                 			// 返回的显示区块数量
+        public int                bDisable;                       			// 是否禁用, 0-该电视墙有效, 1-该电视墙无效
+        public byte[]             szDesc = new byte[NET_COMMON_STRING_256]; // 电视墙描述信息
+
+        public NET_MONITORWALL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 电视墙预案
+    public static class NET_MONITORWALL_COLLECTION extends SdkStructure
+    {
+        public int                	  dwSize;
+        public byte[]                 szName 	  = new byte[NET_DEVICE_NAME_LEN];    			// 电视墙预案名称
+        public NET_BLOCK_COLLECTION[] stuBlocks	  = new NET_BLOCK_COLLECTION[NET_MAX_BLOCK_NUM];// 区块数组
+        public int                 	  nBlocksCount;                  							// 区块数量
+        public byte[]                 szControlID = new byte[NET_DEV_ID_LEN_EX]; 				// 控制ID
+        public NET_MONITORWALL        stuMonitorWall;                							// 电视墙配置
+        public int                    emType;                                                   // 预案类型
+        public byte[]                 byReserved=new byte[4];                                   // 保留字节用,于字节对齐
+        public NET_MONITORWALL_COLLECTION() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < NET_MAX_BLOCK_NUM; i++) {
+                stuBlocks[i] = new NET_BLOCK_COLLECTION();
+            }
+        }
+    }
+
+    // CLIENT_GetMonitorWallCollections接口输入参数(获取电视墙预案信息)
+    public static class NET_IN_WM_GET_COLLECTIONS extends SdkStructure
+    {
+        public int                	dwSize;
+        public int                  nMonitorWallID;                // 电视墙ID
+
+        public NET_IN_WM_GET_COLLECTIONS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetMonitorWallCollections接口输出参数(获取电视墙预案信息)
+    public static class NET_OUT_WM_GET_COLLECTIONS extends SdkStructure
+    {
+        public int                   dwSize;
+        public Pointer			   	 pCollections;  		      // 电视墙预案数组, 对应   NET_MONITORWALL_COLLECTION 指针
+        public int                   nMaxCollectionsCount;   	  // 电视墙预案数组大小
+        public int                   nCollectionsCount;      	  // 电视墙预案数量
+
+        public NET_OUT_WM_GET_COLLECTIONS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 级联权限验证信息
+    public static class SDK_CASCADE_AUTHENTICATOR extends SdkStructure
+    {
+        public int                  dwSize;
+        public byte[]               szUser	   = new byte[NET_NEW_USER_NAME_LENGTH];    // 用户名
+        public byte[]               szPwd  	   = new byte[NET_NEW_USER_PSW_LENGTH];     // 密码
+        public byte[]               szSerialNo = new byte[NET_SERIALNO_LEN];        	// 设备序列号
+
+        public SDK_CASCADE_AUTHENTICATOR() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    public static class EM_SRC_PUSHSTREAM_TYPE extends SdkStructure
+    {
+        public static final int EM_SRC_PUSHSTREAM_AUTO			= 0;       // 设备端根据码流头自动识别,默认值
+        public static final int EM_SRC_PUSHSTREAM_HIKVISION		= 1;       // 私有码流
+        public static final int EM_SRC_PUSHSTREAM_PS			= 2;       // PS流
+        public static final int EM_SRC_PUSHSTREAM_TS			= 3;       // TS流
+        public static final int EM_SRC_PUSHSTREAM_SVAC			= 4;       // SVAC码流
+    }
+
+    // 显示源
+    public static class NET_SPLIT_SOURCE extends SdkStructure
+    {
+        public int               	dwSize;
+        public int                  bEnable;                                	// 使能
+        public byte[]               szIp 	= new byte[NET_MAX_IPADDR_LEN]; 	// IP, 空表示没有设置
+        public byte[]               szUser  = new byte[NET_USER_NAME_LENGTH];	// 用户名, 建议使用szUserEx
+        public byte[]               szPwd 	= new byte[NET_USER_PSW_LENGTH]; 	// 密码, 建议使用szPwdEx
+        public int                  nPort;                                  	// 端口
+        public int                  nChannelID;                             	// 通道号
+        public int                  nStreamType;                            	// 视频码流, -1-自动, 0-主码流, 1-辅码流1, 2-辅码流2, 3-辅码流3, 4-snap, 5-预览
+        public int                  nDefinition;                            	// 清晰度, 0-标清, 1-高清
+        public int  				emProtocol;                             	// 协议类型,对应   NET_DEVICE_PROTOCOL
+        public byte[]               szDevName  = new byte[NET_DEVICE_NAME_LEN]; // 设备名称
+        public int                  nVideoChannel;                          	// 视频输入通道数
+        public int                  nAudioChannel;                          	// 音频输入通道数
+        //--------------------------------------------------------------------------------------
+        // 以下只对解码器有效
+        public int                 bDecoder;                                	// 是否是解码器
+        public byte                byConnType;                              	// -1: auto, 0:TCP;1:UDP;2:组播
+        public byte                byWorkMode;                              	// 0:直连;1:转发
+        public short               wListenPort;                             	// 指示侦听服务的端口,转发时有效; byConnType为组播时,则作为多播端口
+        public byte[]              szDevIpEx  = new byte[NET_MAX_IPADDR_OR_DOMAIN_LEN]; // szDevIp扩展,前端DVR的IP地址(可以输入域名)
+        public byte                bySnapMode;                              	// 抓图模式(nStreamType==4时有效) 0:表示请求一帧,1:表示定时发送请求
+        public byte                byManuFactory;                           	// 目标设备的生产厂商, 具体参考EM_IPC_TYPE类
+        public byte                byDeviceType;                            	// 目标设备的设备类型, 0:IPC
+        public byte                byDecodePolicy;                          	// 目标设备的解码策略, 0:兼容以前
+        // 1:实时等级高 2:实时等级中
+        // 3:实时等级低 4:默认等级
+        // 5:流畅等级高 6:流畅等级中
+        // 7:流畅等级低
+        //--------------------------------------------------------------------------------------
+        public int                dwHttpPort;                               	// Http端口号, 0-65535
+        public int                dwRtspPort;                               	// Rtsp端口号, 0-65535
+        public byte[]             szChnName  = new byte[NET_DEVICE_NAME_LEN];   // 远程通道名称, 只有读取到的名称不为空时才可以修改该通道的名称
+        public byte[]             szMcastIP  = new byte[NET_MAX_IPADDR_LEN];    // 多播IP地址, byConnType为组播时有效
+        public byte[]             szDeviceID = new byte[NET_DEV_ID_LEN_EX];     // 设备ID, ""-null, "Local"-本地通道, "Remote"-远程通道, 或者填入具体的RemoteDevice中的设备ID
+        public int                bRemoteChannel;                           	// 是否远程通道(只读)
+        public int        		  nRemoteChannelID;                         	// 远程通道ID(只读), bRemoteChannel=TRUE时有效
+        public byte[]             szDevClass = new byte[NET_DEV_TYPE_LEN];  	// 设备类型, 如IPC, DVR, NVR等
+        public byte[]             szDevType  = new byte[NET_DEV_TYPE_LEN];  	// 设备具体型号, 如IPC-HF3300
+        public byte[]             szMainStreamUrl = new byte[MAX_PATH];     	// 主码流url地址, byManuFactory为NET_IPC_OTHER时有效
+        public byte[]             szExtraStreamUrl = new byte[MAX_PATH];    	// 辅码流url地址, byManuFactory为NET_IPC_OTHER时有效
+        public int                nUniqueChannel;                           	// 设备内统一编号的唯一通道号, 只读
+        public SDK_CASCADE_AUTHENTICATOR stuCascadeAuth;                   	// 级联认证信息, 设备ID为"Local/Cascade/SerialNo"时有效, 其中SerialNo是设备序列号
+        public int                nHint;                                    	// 0-普通视频源, 1-报警视频源
+        public int                nOptionalMainUrlCount;                    	// 备用主码流地址数量
+        public byte[]             szOptionalMainUrls = new byte[NET_MAX_OPTIONAL_URL_NUM * MAX_PATH];  // 备用主码流地址列表
+        public int                nOptionalExtraUrlCount;                   	// 备用辅码流地址数量
+        public byte[]             szOptionalExtraUrls = new byte[NET_MAX_OPTIONAL_URL_NUM * MAX_PATH]; // 备用辅码流地址列表
+        //--------------------------------------------------------------------------------------
+        //协议后续添加字段
+        public int                nInterval;                                	// 轮巡时间间隔   单位:秒
+        public byte[]             szUserEx = new byte[NET_NEW_USER_NAME_LENGTH];// 用户名
+        public byte[]             szPwdEx  = new byte[NET_NEW_USER_PSW_LENGTH]; // 密码
+        public int  			  emPushStream;          			        	// 推流方式的码流类型,只有byConnType为TCP-Push或UDP-Push才有该字段,对应  EM_SRC_PUSHSTREAM_TYPE
+        public NET_RECT			  stuSRect;										// 视频源区域,当szDeviceID不为空时有效
+        public NET_SOURCE_STREAM_ENCRYPT stuSourceStreamEncrypt;           // 码流加密方式
+        public byte[]             szSerialNo=new byte[NET_SERIALNO_LEN];            // 设备序列号,当连接设备的协议类型为云睿接入,该字段必填
+        public byte[]			  szCaption=new byte[128];						// 通道备注,可用于在OSD显示
+        public int			  bUserStreamUrlEx;						// 是否使用szMainStreamUrlEx/szExtraStreamUrlEx字段
+        public byte[]			  szMainStreamUrlEx=new byte[1024];              	// 主码流url地址, byManuFactory为DH_IPC_OTHER时有效
+        public byte[]			  szExtraStreamUrlEx=new byte[1024];             	// 辅码流url地址, byManuFactory为DH_IPC_OTHER时有效
+
+        public NET_SPLIT_SOURCE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 显示源码流加密方式
+    public static class NET_SOURCE_STREAM_ENCRYPT extends SdkStructure
+    {
+        public int            emEncryptLevel;         // 加密等级
+        public int            emAlgorithm;            // 加密算法
+        public int            emExchange;             // 密钥交换方式
+        public Boolean        bUnvarnished;           // MTS使用场景,true为交互MIKEY后让数据不进行加/解密
+        public byte[]         szPSK=new byte[1032];            // 密钥
+        public byte[]         byReserved=new byte[1024];       // 保留字节
+    };
+
+    // 矩阵子卡信息
+    public static class NET_MATRIX_CARD extends SdkStructure
+    {
+        public int               dwSize;
+        public int               bEnable;                                // 是否有效
+        public int               dwCardType;                             // 子卡类型
+        public byte[]            szInterface = new byte[NET_MATRIX_INTERFACE_LEN];   // 信号接口类型, "CVBS", "VGA", "DVI"...
+        public byte[]            szAddress   = new byte[NET_MAX_IPADDR_OR_DOMAIN_LEN]; // 设备ip或域名, 无网络接口的子卡可以为空
+        public int               nPort;                                  // 端口号, 无网络接口的子卡可以为0
+        public int               nDefinition;                            // 清晰度, 0=标清, 1=高清
+        public int               nVideoInChn;                            // 视频输入通道数
+        public int               nAudioInChn;                            // 音频输入通道数
+        public int               nVideoOutChn;                           // 视频输出通道数
+        public int               nAudioOutChn;                           // 音频输出通道数
+        public int               nVideoEncChn;                           // 视频编码通道数
+        public int               nAudioEncChn;                           // 音频编码通道数
+        public int               nVideoDecChn;                           // 视频解码通道数
+        public int               nAudioDecChn;                           // 音频解码通道数
+        public int               nStauts;                                // 状态: -1-未知, 0-正常, 1-无响应, 2-网络掉线, 3-冲突, 4-正在升级, 5-链路状态异常, 6-子板背板未插好, 7-程序版本出错
+        public int               nCommPorts;                             // 串口数
+        public int               nVideoInChnMin;                         // 视频输入通道号最小值
+        public int               nVideoInChnMax;                         // 视频输入通道号最大值
+        public int               nAudioInChnMin;                         // 音频输入通道号最小值
+        public int               nAudioInChnMax;                         // 音频输入通道号最大值
+        public int               nVideoOutChnMin;                        // 视频输出通道号最小值
+        public int               nVideoOutChnMax;                        // 视频输出通道号最大值
+        public int               nAudioOutChnMin;                        // 音频输出通道号最小值
+        public int               nAudioOutChnMax;                        // 音频输出通道号最大值
+        public int               nVideoEncChnMin;                        // 视频编码通道号最小值
+        public int               nVideoEncChnMax;                        // 视频编码通道号最大值
+        public int               nAudioEncChnMin;                        // 音频编码通道号最小值
+        public int               nAudioEncChnMax;                        // 音频编码通道号最大值
+        public int               nVideoDecChnMin;                        // 视频解码通道号最小值
+        public int               nVideoDecChnMax;                        // 视频解码通道号最大值
+        public int               nAudioDecChnMin;                        // 音频解码通道号最小值
+        public int               nAudioDecChnMax;                        // 音频解码通道号最大值
+        public int               nCascadeChannels;                       // 级联通道数
+        public int               nCascadeChannelBitrate;                 // 级联通道带宽, 单位Mbps
+        public int               nAlarmInChnCount;                       // 报警输入通道数
+        public int               nAlarmInChnMin;                         // 报警输入通道号最小值
+        public int               nAlarmInChnMax;                         // 报警输入通道号最大值
+        public int               nAlarmOutChnCount;                      // 报警输出通道数
+        public int               nAlarmOutChnMin;                        // 报警输入通道号最小值
+        public int               nAlarmOutChnMax;                        // 报警输入通道号最大值
+        public int               nVideoAnalyseChnCount;                  // 智能分析通道数
+        public int               nVideoAnalyseChnMin;                    // 智能分析通道号最小值
+        public int               nVideoAnalyseChnMax;                    // 智能分析通道号最大值
+        public int               nCommPortMin;                           // 串口号最小值
+        public int               nCommPortMax;                           // 串口号最大值
+        public byte[]            szVersion 	   = new byte[NET_COMMON_STRING_32];    // 版本信息
+        public NET_TIME          stuBuildTime;                           // 编译时间
+        public byte[]            szBIOSVersion = new byte[NET_COMMON_STRING_64];    // BIOS版本号
+        public byte[]			 szMAC         = new byte[NET_MACADDR_LEN];			// MAC地址
+
+        public NET_MATRIX_CARD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 矩阵子卡列表
+    public static class NET_MATRIX_CARD_LIST extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nCount;                                 				  // 子卡数量
+        public NET_MATRIX_CARD[] stuCards = new NET_MATRIX_CARD[NET_MATRIX_MAX_CARDS];    // 子卡列表
+
+        public NET_MATRIX_CARD_LIST() {
+            this.dwSize = this.size();
+            for(int i = 0; i < NET_MATRIX_MAX_CARDS; i++) {
+                stuCards[i] = new NET_MATRIX_CARD();
+            }
+        }
+    }
+
+    // CLIENT_FindFramInfo 接口输入参数
+    public static class NET_IN_FIND_FRAMEINFO_PRAM extends SdkStructure
+    {
+        public int                 dwSize;                   // 结构体大小
+        public boolean             abFileName;               // 文件名是否作为有效的查询条件,若文件名有效,则不用填充文件信息(stRecordInfo)
+        public byte[]              szFileName = new byte[MAX_PATH];     // 文件名
+        public NET_RECORDFILE_INFO stuRecordInfo;            // 文件信息
+        public int                 dwFramTypeMask;           // 帧类型掩码,详见“帧类型掩码定义”,FRAME_TYPE_MOTION 动检帧;  FRAME_TYPE_HUMAN动检帧(人); FRAME_TYPE_VEHICLE动检帧(车)
+        public int                 bSendByUTCTime;           // 是否使用UTC时间
+        public NET_TIME            stuStartTimeRealUTC = new NET_TIME();      // UTC开始时间
+        public NET_TIME            stuEndTimeRealUTC = new NET_TIME();        // UTC结束时间
+
+        public NET_IN_FIND_FRAMEINFO_PRAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FindFramInfo 接口输出参数
+    public static class NET_OUT_FIND_FRAMEINFO_PRAM extends SdkStructure
+    {
+        public int                 dwSize;                 // 结构体大小
+        public LLong          	   lFindHandle;            // 文件查找句柄
+
+        public NET_OUT_FIND_FRAMEINFO_PRAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FileStreamClearTags / CLIENT_FileStreamSetTags 接口输入参数
+    public static class NET_IN_FILE_STREAM_TAGS_INFO extends SdkStructure
+    {
+        public int				   dwSize;					// 结构体大小
+        public int				   nArrayCount;				// 标签数组个数
+        public Pointer			   pstuTagInfo;  			// 标签数组,各项内容关系为"且", 用户分配内存,大小为sizeof( NET_FILE_STREAM_TAG_INFO )*nArrayCount
+
+        public NET_IN_FILE_STREAM_TAGS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FileStreamClearTags / CLIENT_FileStreamSetTags 接口输出参数
+    public static class NET_OUT_FILE_STREAM_TAGS_INFO extends SdkStructure
+    {
+        public int				  dwSize;			       // 结构体大小
+
+        public NET_OUT_FILE_STREAM_TAGS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 标签数组
+    public static class NET_FILE_STREAM_TAG_INFO extends SdkStructure
+    {
+        public int				dwSize;											// 结构体大小
+        public NET_TIME			stuTime;										// 标签时间
+        public byte[]			szContext = new byte[NET_COMMON_STRING_64];		// 标签内容,中文必须使用utf8编码
+        public byte[]			szUserName = new byte[NET_COMMON_STRING_32];	// 用户名,中文必须使用utf8编码,EVS增加
+        public byte[]			szChannelName = new byte[NET_COMMON_STRING_64]; // 通道名称,中文必须使用utf8编码,EVS增加
+        public int 				nDuration;							            // 打标的录像持续时间,单位秒
+
+        public NET_FILE_STREAM_TAG_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FileStreamGetTags 接口输入参数
+    public static class NET_IN_FILE_STREAM_GET_TAGS_INFO extends SdkStructure
+    {
+        public int			   dwSize;					// 结构体大小
+
+        public NET_IN_FILE_STREAM_GET_TAGS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FileStreamGetTags 接口输出参数
+    public static class NET_OUT_FILE_STREAM_GET_TAGS_INFO extends SdkStructure
+    {
+        public int			  dwSize;					// 结构体大小
+        public int			  nMaxNumber;				// 标签数组最大个数
+        public int			  nRetTagsCount;	        // 实际返回的标签信息个数
+        public Pointer	 	  pstuTagInfo; 				// 标签数组  NET_FILE_STREAM_TAG_INFO_EX
+
+        public NET_OUT_FILE_STREAM_GET_TAGS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 查询到的标签信息
+    public static class NET_FILE_STREAM_TAG_INFO_EX extends SdkStructure
+    {
+        public int				dwSize;										// 结构体大小
+        public NET_TIME			stuTime;									// 标签所对于视频的时间,精确到秒
+        public int				nMillisecond;								// 毫秒
+        public int				nSequence;									// 视频序列号
+        public byte[]			szContext = new byte[NET_COMMON_STRING_64];	// 标签内容,中文必须使用utf8编码
+        public NET_TIME			stuStartTime;								// 录像文件开始时间
+        public NET_TIME			stuEndTime;									// 录像文件结束时间
+        public int				emType;										// 文件类型,对应   NET_FILE_STREAM_TYPE
+        public byte[]			szUserName = new byte[NET_COMMON_STRING_32];	// 用户名,中文必须使用utf8编码,EVS增加
+        public byte[]			szChannelName = new byte[NET_COMMON_STRING_64]; // 通道名称,中文必须使用utf8编码,EVS增加
+        public int				nDuration;								   // 打标的录像持续时间,单位秒
+
+        public NET_FILE_STREAM_TAG_INFO_EX() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 文件类型
+    public static class NET_FILE_STREAM_TYPE extends SdkStructure
+    {
+        public static final int NET_FILE_STREAM_TYPE_UNKNOWN   = 0;			// 未知
+        public static final int NET_FILE_STREAM_TYPE_NORMAL    = 1;			// 普通
+        public static final int NET_FILE_STREAM_TYPE_ALARM     = 2;			// 报警
+        public static final int NET_FILE_STREAM_TYPE_DETECTION = 3;			// 动检
+    }
+
+    // 一屏幕的分割模式信息, CLIENT_GetSplitMode/CLIENT_SetSplitMode参数
+    public static class NET_SPLIT_MODE_INFO extends SdkStructure
+    {
+        public int               dwSize;
+        public int               emSplitMode;            // 分割模式, NET_SPLIT_MODE
+        public int               nGroupID;               // 分组序号
+        public int               dwDisplayType;          // 显示类型;具体见NET_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General")
+
+        public NET_SPLIT_MODE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 分割能力, CLIENT_GetSplitCaps 参数
+    public static class NET_SPLIT_CAPS extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nModeCount;                                     	// 支持的分割模式数量
+        public int[]             emSplitMode = new int[NET_MAX_SPLIT_MODE_NUM];  	// 支持的分割模式, 见 NET_SPLIT_MODE
+        public int               nMaxSourceCount;                        		 	// 最大显示源配置数
+        public int               nFreeWindowCount;                       		 	// 支持的最大自由开窗数目
+        public int               bCollectionSupported;                   		 	// 是否支持区块收藏, BOOL类型,0或1
+        public int               dwDisplayType;                         		 	// 掩码表示多个显示类型,具体见NET_SPLIT_DISPLAY_TYPE(注释各模式下显示内容由"PicInPic"决定, 各模式下显示内容按NVD旧有规则决定(即DisChn字段决定)。兼容,没有这一个项时,默认为普通显示类型,即"General")
+        public int               nPIPModeCount;                          		 	// 画中画支持的分割模式数量
+        public int[]             emPIPSplitMode = new int[NET_MAX_SPLIT_MODE_NUM];  // 画中画支持的分割模式, 见 NET_SPLIT_MODE
+        public int[]             nInputChannels = new int[NET_SPLIT_INPUT_NUM];     // 支持的输入通道
+        public int               nInputChannelCount;                     			// 支持的输入通道个数, 0表示没有输入通道限制
+        public int               nBootModeCount;                         			// 启动分割模式数量
+        public int[]             emBootMode = new int[NET_MAX_SPLIT_MODE_NUM];      // 支持的启动默认画面分割模式, 见 NET_SPLIT_MODE
+
+        public NET_SPLIT_CAPS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (设置显示源, 支持同时设置多个窗口)CLIENT_SplitSetMultiSource 接口的输入参数
+    public static class NET_IN_SPLIT_SET_MULTI_SOURCE extends SdkStructure
+    {
+        public int              	dwSize;
+        public int  				emCtrlType;         // 视频输出控制方式,见 EM_VIDEO_OUT_CTRL_TYPE
+        public int              	nChannel;           // 视频输出逻辑通道号, emCtrlType为EM_VIDEO_OUT_CTRL_CHANNEL时有效
+        public String            	pszCompositeID;     // 拼接屏ID, emCtrlType为EM_VIDEO_OUT_CTRL_COMPOSITE_ID时有效
+        public int               	bSplitModeEnable;   // 是否改变分割模式, BOOL类型,0或1
+        public int               	emSplitMode;        // 分割模式, bSplitModeEnable=TRUE时有效,见 NET_SPLIT_MODE
+        public int               	nGroupID;           // 分割分组号, bSplitModeEnable=TRUE时有效
+        public Pointer             	pnWindows;          // 窗口号数组 int[],由用户申请内存,大小为sizeof(int)*nWindowCount
+        public int               	nWindowCount;       // 窗口数量
+        public Pointer	   		    pstuSources;        // 视频源信息, 分别对应每个窗口, 数量同窗口数  NET_SPLIT_SOURCE[] ,由用户申请内存,大小为sizeof(NET_SPLIT_SOURCE)*nWindowCount
+
+        public NET_IN_SPLIT_SET_MULTI_SOURCE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (设置显示源, 支持同时设置多个窗口) CLIENT_SplitSetMultiSource 接口的输出参数
+    public static class NET_OUT_SPLIT_SET_MULTI_SOURCE extends SdkStructure
+    {
+        public int                  dwSize;
+
+        public NET_OUT_SPLIT_SET_MULTI_SOURCE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (下位矩阵切换) CLIENT_MatrixSwitch 输入参数
+    public static class NET_IN_MATRIX_SWITCH extends SdkStructure
+    {
+        public int           dwSize;
+        public int           emSplitMode;                // 分割模式,见 NET_SPLIT_MODE
+        public Pointer       pnOutputChannels;           // 输出通道, 可同时指定多个输出通道一起切换, 内容一致
+        // 由用户申请内存 int[] ,大小为sizeof(int)*nOutputChannelCount
+        public int           nOutputChannelCount;        // 输出通道数
+        public Pointer       pnInputChannels;            // 输入通道, 每个分割窗口一个对应一个输入通道
+        // 由用户申请内存 int[] ,大小为sizeof(int)*nInputChannelCount
+        public int           nInputChannelCount;         // 输入通道数
+
+        public NET_IN_MATRIX_SWITCH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (下位矩阵切换) CLIENT_MatrixSwitch 输出参数
+    public static class NET_OUT_MATRIX_SWITCH extends SdkStructure
+    {
+        public int            dwSize;
+
+        public NET_OUT_MATRIX_SWITCH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 刻录模式
+    public static class NET_BURN_MODE extends SdkStructure
+    {
+        public static final int BURN_MODE_SYNC 	= 0;                    // 同步
+        public static final int BURN_MODE_TURN 	= 1;                    // 轮流
+        public static final int BURN_MODE_CYCLE = 2;                    // 循环
+    }
+
+    // 刻录流格式
+    public static class NET_BURN_RECORD_PACK extends SdkStructure
+    {
+        public static final int BURN_PACK_DHAV = 0;                     // DHAV
+        public static final int BURN_PACK_PS   = 1;                     // PS
+        public static final int BURN_PACK_ASF  = 2;                     // ASF
+        public static final int BURN_PACK_MP4  = 3;                     // MP4
+        public static final int BURN_PACK_TS   = 4;                     // TS
+    }
+
+    // 刻录扩展模式
+    public static class NET_BURN_EXTMODE extends SdkStructure
+    {
+        public static final int BURN_EXTMODE_UNKNOWN = 0;			    // 未知
+        public static final int BURN_EXTMODE_NORMAL  = 1;               // 正常刻录
+        public static final int BURN_EXTMODE_NODISK  = 2;               // 无盘刻录
+    }
+
+    // (开始刻录) CLIENT_StartBurn 接口输入参数
+    public static class NET_IN_START_BURN extends SdkStructure
+    {
+        public int             dwSize;
+        public int             dwDevMask;                             // 刻录设备掩码, 按位表示多个刻录设备组合
+        public int[]           nChannels = new int[NET_MAX_BURN_CHANNEL_NUM];    // 刻录通道数组
+        public int             nChannelCount;                         // 刻录通道数
+        public int             emMode;                                // 刻录模式,见  NET_BURN_MODE
+        public int             emPack;                                // 刻录流格式,见  NET_BURN_RECORD_PACK
+        public int   		   emExtMode;                             // 刻录扩展模式, 见  NET_BURN_EXTMODE
+
+        public NET_IN_START_BURN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (开始刻录)CLIENT_StartBurn 接口输出参数
+    public static class NET_OUT_START_BURN extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_START_BURN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (打开会话)CLIENT_StartBurnSession 接口输入参数
+    public static class NET_IN_START_BURN_SESSION extends SdkStructure
+    {
+        public int              dwSize;
+        public int              nSessionID;                         // 会话ID
+
+        public NET_IN_START_BURN_SESSION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // (打开会话)CLIENT_StartBurnSession 接口输出参数
+    public static class NET_OUT_START_BURN_SESSION extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_START_BURN_SESSION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_EJECT_BURNER、CTRLTYPE_CTRL_CLOSE_BURNER 等 命令参数
+    public static class NET_CTRL_BURNERDOOR extends SdkStructure
+    {
+        public int                dwSize;
+        public Pointer         	  szBurnerName;                       // 光盘名称,如“/dev/sda”, 用户申请内存
+        public int                bResult;                            // 操作结果
+        public int                bSafeEject;                         // 是否安全弹出光驱, 1-弹出前做数据保存, 0-直接弹出
+
+        public NET_CTRL_BURNERDOOR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 光驱托盘状态
+    public static class EM_NET_BURN_DEV_TRAY_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_BURN_DEV_TRAY_TYPE_UNKNOWN = 0;                     // 未知
+        public static final int EM_NET_BURN_DEV_TRAY_TYPE_READY   = 1;                     // 光盘就绪
+        public static final int EM_NET_BURN_DEV_TRAY_TYPE_OPEN  = 2;                       // 托盘弹出
+        public static final int EM_NET_BURN_DEV_TRAY_TYPE_NODISK  = 3;                     // 无盘
+        public static final int EM_NET_BURN_DEV_TRAY_TYPE_NOT_READY   = 4;                 // 光盘未就绪
+    }
+
+    // 光驱使用状态
+    public static class EM_NET_BURN_DEV_OPERATE_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_BURN_DEV_OPERATE_TYPE_UNKNOWN = 0;                     // 未知
+        public static final int EM_NET_BURN_DEV_OPERATE_TYPE_WRITE   = 1;                     // 执行写
+        public static final int EM_NET_BURN_DEV_OPERATE_TYPE_READ  = 2;                       // 执行读
+        public static final int EM_NET_BURN_DEV_OPERATE_TYPE_IDLE  = 3;                       // 空闲
+    }
+
+    // 刻录机信息
+    public static class NET_DEV_BURNING extends SdkStructure
+    {
+        public int               dwDriverType;               // 刻录驱动器类型;0:DHFS,1:DISK,2:CDRW
+        public int               dwBusType;                  // 总线类型;0:USB,1:1394,2:IDE, 3: SATA, 4: ESATA
+        public int               dwTotalSpace;               // 总容量(KB)
+        public int               dwRemainSpace;              // 剩余容量(KB)
+        public byte[]            dwDriverName = new byte[NET_BURNING_DEV_NAMELEN];    // 刻录驱动器名称
+        public int  			 emTrayType;			     // 光驱托盘状态, 详见EM_NET_BURN_DEV_TRAY_TYPE
+        public int 				 emOperateType;			     // 光盘使用状态, 详见EM_NET_BURN_DEV_OPERATE_TYPE
+    }
+
+    // 设备刻录机信息
+    public static class NET_BURNING_DEVINFO extends SdkStructure
+    {
+        public int               	dwDevNum;                           // 刻录设备个数
+        public NET_DEV_BURNING[]    stuList = (NET_DEV_BURNING[])new NET_DEV_BURNING().toArray(NET_MAX_BURNING_DEV_NUM); // 各刻录设备信息
+    }
+
+    // CLIENT_AttachBurnState()输入参数
+    public static class NET_IN_ATTACH_STATE extends SdkStructure
+    {
+        public int                   dwSize;
+        public Pointer             	 szDeviceName;                  // 光盘名称,如"/dev/sda"
+        public fAttachBurnStateCB    cbAttachState;                 // 刻录监听回调
+        public Pointer               dwUser;                        // 用户数据
+        public LLong                 lBurnSession;                  // 刻录会话句柄, CLIENT_StartBurnSession的返回值. 该值为0时, szDeviceName有效, 此时按刻录设备订阅刻录状态
+        public fAttachBurnStateCBEx  cbAttachStateEx;               // 扩展刻录监听回调
+        public Pointer               dwUserEx;                      // 扩展刻录监听回调用户数据
+
+        public NET_IN_ATTACH_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachBurnState 输出参数
+    public static class NET_OUT_ATTACH_STATE extends SdkStructure
+    {
+        public int                   dwSize;
+
+        public NET_OUT_ATTACH_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_StartUploadFileBurned 输入参数
+    public static class NET_IN_FILEBURNED_START extends SdkStructure{
+        public int                   dwSize;
+        public Pointer             	 szMode;                  		// 文件上传方式
+        // "append", 追加模式,此时刻录文件名固定为" FILE.zip ",filename被忽略
+        // "evidence", 证据等大附件, 要求单独刻录的光盘内
+        public Pointer             	 szDeviceName;                  // 光盘名称,如"/dev/sda"
+        public Pointer             	 szFilename;   					// 本地文件名称
+        public fBurnFileCallBack     cbBurnPos;                 	// 刻录进度回调
+        public Pointer               dwUser;                        // 用户数据
+        public LLong                 lBurnSession;                  // 刻录会话句柄, CLIENT_StartBurnSession的返回值. 该值为0时, szDeviceName有效, 此时按刻录设备订阅刻录状态
+
+
+        public NET_IN_FILEBURNED_START() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_StartUploadFileBurned 输出参数
+    public static class NET_OUT_FILEBURNED_START extends SdkStructure{
+        public int                   dwSize;
+        public byte[]				 szState = new byte[MAX_COMMON_STRING_16];  //char[]
+        // "start":系统准备就绪,可以开始上传; "busy":系统忙,稍后在试。"error":系统未在刻录中,返回出错,请求失败
+        public NET_OUT_FILEBURNED_START() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // fAttachBurnStateCB 参数
+    public static class NET_CB_BURNSTATE extends SdkStructure
+    {
+        public int               	dwSize;
+        public Pointer         		szState;                        // 消息类型
+        //"UploadFileStart":可以开始附件上传
+        //"InitBurnDevice":初始化刻录设备
+        //"Burning":刻录中
+        //"BurnExtraFileStop":刻录停止
+        //"BurnFilePause":刻录暂停
+        //"SpaceFull":刻录空间满
+        //"BurnFileError":刻录出错
+        public Pointer         		szFileName;                     // 当前刻录附件文件名,用于"UploadFileStart"开始附件上传消息
+        public int        			dwTotalSpace;                   // 总容量,单位KB,用于"Burning"刻录中,显示容量或计算进度
+        public int        			dwRemainSpace;                  // 剩余容量,单位KB,用于"Burning"刻录中
+        public Pointer         		szDeviceName;                   // 刻录设备名称,用于区分不同的刻录设备
+        public int                  nRemainTime;                    // 刻录剩余时间, 单位秒, -1代表无效
+    }
+
+    // 刻录状态
+    public static class NET_BURN_STATE extends SdkStructure
+    {
+        public static final int BURN_STATE_STOP = 0;                    // 停止
+        public static final int BURN_STATE_STOPING = 1;                 // 停止中
+        public static final int BURN_STATE_INIT = 2;                    // 初始化
+        public static final int BURN_STATE_BURNING = 3;                 // 刻录中
+        public static final int BURN_STATE_PAUSE = 4;                   // 暂停
+        public static final int BURN_STATE_CHANGE_DISK = 5;             // 换盘中
+        public static final int BURN_STATE_PREPARE_EXTRA_FILE = 6;      // 附件初始化
+        public static final int BURN_STATE_WAIT_EXTRA_FILE = 7;         // 等待附件刻录
+        public static final int BURN_STATE_UPLOAD_FILE_START = 8;       // 附件刻录中
+        public static final int BURN_STATE_CHECKING_DISK = 9;           // 检测光盘中
+        public static final int BURN_STATE_DISK_READY = 10;             // 光盘准备就绪
+    }
+
+    // 刻录错误码
+    public static class NET_BURN_ERROR_CODE extends SdkStructure
+    {
+        public static final int BURN_CODE_NORMAL = 0;                   // 正常
+        public static final int BURN_CODE_UNKNOWN_ERROR = 1;            // 未知错误
+        public static final int BURN_CODE_SPACE_FULL = 2;               // 刻录满
+        public static final int BURN_CODE_START_ERROR = 3;              // 开始刻录出错
+        public static final int BURN_CODE_STOP_ERROR = 4;               // 停止刻录出错
+        public static final int BURN_CODE_WRITE_ERROR = 5;              // 刻录出错
+        public static final int BURN_CODE_UNKNOWN = 6;					// 未知
+    }
+
+    // CLIENT_BurnGetState 接口输入参数
+    public static class NET_IN_BURN_GET_STATE extends SdkStructure
+    {
+        public int                dwSize;
+
+        public NET_IN_BURN_GET_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 光驱使用状态
+    public static class EM_NET_BURN_DEV_USED_STATE extends SdkStructure
+    {
+        public static final int EM_NET_BURN_DEV_USED_STATE_UNKNOWN = 0; //未知
+        public static final int EM_NET_BURN_DEV_USED_STATE_STOP = 1;	//停止
+        public static final int EM_NET_BURN_DEV_USED_STATE_BURNING = 2;	//刻录中
+    }
+
+    // 刻录设备状态
+    public static class NET_BURN_DEV_STATE extends SdkStructure
+    {
+        public int                dwSize;
+        public int                nDeviceID;                             // 光驱设备ID
+        public byte[]             szDevName = new byte[NET_BURNING_DEV_NAMELEN];     // 光驱设备名称
+        public int                dwTotalSpace;                          // 光驱总容量, 单位KB
+        public int                dwRemainSpace;                         // 光驱剩余容量, 单位KB
+        public int	              emUsedType;							 // 光驱使用状态, 详见EM_NET_BURN_DEV_USED_STATE
+        public int				  emError;								 // 单个光驱出错状态, 详见NET_BURN_ERROR_CODE
+        public int		          emDiskState;							// 光盘状态,EM_DISK_STATE
+        public NET_BURN_DEV_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_BurnGetState 接口输出参数
+    public static class NET_OUT_BURN_GET_STATE extends SdkStructure
+    {
+        public int                dwSize;
+        public int       		  emState;                               // 刻录状态, 详见NET_BURN_STATE
+        public int  			  emErrorCode;                           // 错误码, 详见NET_BURN_ERROR_CODE
+        public int                dwDevMask;                             // 刻录设备掩码, 按位表示多个刻录设备组合
+        public int[]              nChannels = new int[NET_MAX_BURN_CHANNEL_NUM];    // 刻录通道数组
+        public int                nChannelCount;                         // 刻录通道数
+        public int        		  emMode;                                // 刻录模式, 详见NET_BURN_MODE
+        public int 				  emPack;                                // 刻录流格式, 详见NET_BURN_RECORD_PACK
+        public int                nFileIndex;                            // 当前刻录文件编号
+        public NET_TIME           stuStartTime;                          // 刻录开始时间
+        public NET_BURN_DEV_STATE[] stuDevState = (NET_BURN_DEV_STATE[])new NET_BURN_DEV_STATE().toArray(NET_MAX_BURNING_DEV_NUM); // 刻录设备状态
+        public int                nRemainTime;                           // 刻录剩余时间, 单位秒, -1代表无效
+        public int	 			  emExtMode;							 // 扩展模式,当为无盘刻录时,stuDevState可能无效, 详见NET_BURN_EXTMODE
+
+        public NET_OUT_BURN_GET_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 雷达监测超速报警事件 智能楼宇专用 ( NET_ALARM_RADAR_HIGH_SPEED )
+    public static class ALARM_RADAR_HIGH_SPEED_INFO extends SdkStructure
+    {
+        public NET_TIME_EX             stuTime;  // 事件发生时间
+        public float                   fSpeed;                       // 速度(单位:km/h)
+        public byte[]				   szPlateNumber = new byte[16]; // 车牌
+        public boolean						bRealUTC;					// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX         		RealUTC;                    // 事件发生的时间(标准UTC)
+        public byte[]                   byReserved=new byte[958];			// 预留字段
+    }
+
+    // 设备巡检报警事件 智网专用 ( NET_ALARM_POLLING_ALARM )
+    public static class ALARM_POLLING_ALARM_INFO extends SdkStructure
+    {
+        public NET_TIME_EX              stuTime;  // 事件发生时间
+        public boolean					bRealUTC;					// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX         		RealUTC;                    // 事件发生的时间(标准UTC)
+        public byte[]                   byReserved=new byte[974];            // 预留字段
+    }
+
+    // 门禁事件 ALARM_ACCESS_CTL_EVENT
+    public static class ALARM_ACCESS_CTL_EVENT_INFO extends SdkStructure {
+        public int                      dwSize;
+        public int                      nDoor;                              // 门通道号
+        public byte[]                   szDoorName = new byte[NET_MAX_DOORNAME_LEN];    // 门禁名称
+        public NET_TIME                 stuTime;                            // 报警事件发生的时间
+        public int   					emEventType;                        // 门禁事件类型 参考 NET_ACCESS_CTL_EVENT_TYPE
+        public int                      bStatus;                            // 刷卡结果,TRUE表示成功,FALSE表示失败
+        public int      				emCardType;                         // 卡类型, 参考 NET_ACCESSCTLCARD_TYPE
+        public int   					emOpenMethod;                       // 开门方式, 参考 NET_ACCESS_DOOROPEN_METHOD
+        public byte[]                   szCardNo = new byte[NET_MAX_CARDNO_LEN];        // 卡号
+        public byte[]                   szPwd = new byte[NET_MAX_CARDPWD_LEN];          // 密码
+        public byte[]                   szReaderID = new byte[NET_COMMON_STRING_32];    // 门读卡器ID
+        public byte[]                   szUserID = new byte[NET_COMMON_STRING_64];      // 开门用户
+        public byte[]                   szSnapURL = new byte[NET_COMMON_STRING_256];    // 抓拍照片存储地址
+        public int                      nErrorCode;                         // 开门失败的原因,仅在bStatus为FALSE时有效
+        // 0x00 没有错误
+        // 0x10 未授权
+        // 0x11 卡挂失或注销
+        // 0x12 没有该门权限
+        // 0x13 开门模式错误
+        // 0x14 有效期错误
+        // 0x15 防反潜模式
+        // 0x16 胁迫报警未打开
+        // 0x17 门常闭状态
+        // 0x18 AB互锁状态
+        // 0x19 巡逻卡
+        // 0x1A 设备处于闯入报警状态
+        // 0x20 时间段错误
+        // 0x21 假期内开门时间段错误
+        // 0x30 需要先验证有首卡权限的卡片
+        // 0x40 卡片正确,输入密码错误
+        // 0x41 卡片正确,输入密码超时
+        // 0x42 卡片正确,输入信息错误
+        // 0x43 卡片正确,输入信息超时
+        // 0x44 信息正确,输入密码错误
+        // 0x45 信息正确,输入密码超时
+        // 0x50 组合开门顺序错误
+        // 0x51 组合开门需要继续验证
+        // 0x60 验证通过,控制台未授权
+        public int                       nPunchingRecNo;                	// 刷卡记录集中的记录编号
+        public int						 nNumbers;					    	// 抓图张数
+        public int					     emStatus;		                	// 卡状态     NET_ACCESSCTLCARD_STATE
+        public byte[]                    szSN = new byte[32];           	// 智能锁序列号
+        public int         				 emAttendanceState;                 // 考勤状态, 参考  NET_ATTENDANCESTATE
+        public byte[]                    szQRCode = new byte[512];          // 二维码
+        public byte[]                    szCallLiftFloor = new byte[16];	// 呼梯楼层号
+        public int						 emCardState;						// 是否为采集卡片,参考  EM_CARD_STATE
+        public byte[]                    szCitizenIDNo = new byte[20];      // 证件号
+        public COMPANION_CARD[]			 szCompanionCards = new COMPANION_CARD[MAX_COMPANION_CARD_NUM]; // 陪同者卡号信息
+        public int                       nCompanionCardCount;                // 陪同者卡号个数
+        public int				         emHatStyle;						 // 帽子类型
+        public int		                 emHatColor;						 // 帽子颜色
+        public int			             emLiftCallerType;					 // 梯控方式触发者
+        public int				   		 bManTemperature;					 // 人员温度信息是否有效
+        public NET_MAN_TEMPERATURE_INFO	 stuManTemperatureInfo;				 // 人员温度信息, bManTemperature 为TRUE 时有效
+        public byte[]					 szCitizenName = new byte[256];		 // 证件姓名
+        public int			             emMask;							 // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效)参考EM_MASK_STATE_TYPE
+        public byte[]					 szCardName = new byte[NET_MAX_CARDNAME_LEN];	// 卡命名
+        public int						 nFaceIndex;						 // 一人脸时的人脸序号
+        public int                       emUserType;						 // 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_DISABLED 有效 ) 参考EM_USER_TYPE
+        public int						 bRealUTC;							 // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX         		 RealUTC;                            // 事件发生的时间(标准UTC)
+        public byte[]					 szCompanyName = new byte[200];		 // 公司名称
+        public int						 nScore;                             // 人脸质量评分
+        public int						 nLiftNo;							// 电梯编号
+        public int		                 emQRCodeIsExpired;					// 二维码是否过期。默认值0 ,EM_QRCODE_IS_EXPIRED
+        public int			             emQRCodeState;						// 二维码状态,EM_QRCODE_STATE
+        public NET_TIME        			 stuQRCSodeValidTo;                   // 二维码截止日期
+        public byte[]					 szDynPWD=new byte[32];				  // 平台通过密码校验权限。用于动态密码校验,动态密码由手机APP生成,设备仅透传给平台
+     //   public byte[]                    byReserved=new byte[1436];            // 预留字段
+        public  int					nBlockId;							// 上报事件数据序列号从1开始自增
+        public byte[]						szSection=new byte[64];						// 部门名称
+        public byte[]						szWorkClass=new byte[256];					// 工作班级
+        /**
+         * EM_TEST_ITEMS
+         * */
+        public  int				emTestItems;						// 测试项目
+        /**
+         * NET_TEST_RESULT
+         */
+        public NET_TEST_RESULT				stuTestResult;						// ESD阻值测试结果
+        public byte[]                        szDeviceID=new byte[128];                    // 门禁设备编号
+        public byte[]                        szUserUniqueID=new byte[128];                // 用户唯一表示ID
+        public int						bUseCardNameEx;						// 是否使用卡命名扩展
+        public byte[]						szCardNameEx=new byte[128];					// 卡命名扩展
+        public byte[]						szTempPassword=new byte[64];					// 临时密码
+        public byte[]						szNote=new byte[512];						   // 摘要信息
+        public int                     nHSJCResult;                             //核酸检测报告结果   -1: 未知  2: 未检测 3: 过期
+
+        public NET_VACCINE_INFO stuVaccineInfo=new NET_VACCINE_INFO();    // 新冠疫苗接种信息
+
+        public NET_TRAVEL_INFO					stuTravelInfo=new NET_TRAVEL_INFO();		// 行程码信息
+        public byte[]					szQRCodeEx=new byte[2048];                  //大二维码内容
+        public NET_HSJC_INFO				stuHSJCInfo;						// 核酸信息
+        public NET_ANTIGEN_INFO			stuAntigenInfo;						// 抗原检测信息
+        public byte[]                   szHealthGreenStatus=new byte[20];            // 个人健康状态 绿码:"Green" 红码:"Red" 黄码:"Yellow" 橙:"Orange" 未知:"None"
+	    public byte[]                   szReserved=new byte[2048];                   // 预留字节   
+		
+        public ALARM_ACCESS_CTL_EVENT_INFO() {
+            super();
+            this.dwSize = this.size();
+            for (int i = 0; i < szCompanionCards.length; ++i) {
+                szCompanionCards[i] = new COMPANION_CARD();
+            }
+
+        }
+
+
+    }
+
+    // 消警事件
+    public static class ALARM_ALARMCLEAR_INFO extends SdkStructure
+    {
+        public int                    dwSize;
+        public int             		  nChannelID;                   // 通道号
+        public NET_TIME        		  stuTime;                      // 报警事件发生的时间
+        public int                    bEventAction;                 // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                 byReserved = new byte[1292];  // 补齐字节
+        public ALARM_ALARMCLEAR_INFO() {
+            this.dwSize = this.size();
+        }
+        @Override
+        public String toString() {
+            return "ALARM_ALARMCLEAR_INFO [dwSize=" + dwSize + ", nChannelID="
+                    + nChannelID + ", stuTime=" + stuTime + ", bEventAction="
+                    + bEventAction + "]";
+        }
+    }
+
+    public static class NET_ALARM_TYPE
+    {
+        public static final int NET_ALARM_LOCAL = 0;                //开关量防区的报警事件(对应 NET_ALARM_ALARM_EX2 事件)
+        public static final int NET_ALARM_ALARMEXTENDED = 1;        //扩展模块报警事件(对应 NET_ALARM_ALARMEXTENDED 事件)
+        public static final int NET_ALARM_TEMP = 2;                 //温度报警事件(对应 NET_ALARM_TEMPERATURE 事件)
+        public static final int NET_ALARM_URGENCY = 3;              //紧急报警事件(对应 NET_URGENCY_ALARM_EX 事件)
+        public static final int NET_ALARM_RCEMERGENCYCALL = 4;      //紧急呼叫报警事件(对应 NET_ALARM_RCEMERGENCY_CALL 事件)
+        public static final int NET_ALARM_ALL = 5;                  //所有报警事件
+    }
+
+    // CLIENT_ControlDevice 接口的 NET_CTRL_CLEAR_ALARM 命令参数
+    public static class NET_CTRL_CLEAR_ALARM extends SdkStructure	{
+        public int               	dwSize;
+        public int                 	nChannelID;             // 防区通道号, -1 表示所有通道
+        public int       			emAlarmType;            // 事件类型(支持的类型较少,建议用nEventType字段) NET_ALARM_TYPE
+        public String               szDevPwd;               // 登陆设备的密码,如不使用加密消警,直接赋值为NULL
+        public int                  bEventType;             // 表示是否启用nEventType字段, TRUE:nEventType代替emAlarmType字段, FALSE:沿用emAlarmType字段,忽略nEventType字段
+        public int                  nEventType;             // 事件类型, 对应 fMessCallBack 回调来上的lCommand字段, 即CLIENT_StartListenEx接口获得事件类型
+        												    // 比如NET_ALARM_ALARM_EX2表示本地报警事件
+        public byte[]               szName = new byte[128]; // 事件名称
+        public int                  bIsUsingName;           // 事件名称字段是否有效
+        public NET_CTRL_CLEAR_ALARM() {
+            this.dwSize = this.size();
+        }
+        @Override
+        public String toString() {
+            return "NET_CTRL_CLEAR_ALARM [dwSize=" + dwSize + ", nChannelID="
+                    + nChannelID + ", emAlarmType=" + emAlarmType + ", szDevPwd="
+                    + szDevPwd + ", bEventType=" + bEventType + ", nEventType="
+                    + nEventType + "]";
+        }
+    }
+
+    // CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_START_ALARMBELL / CTRLTYPE_CTRL_STOP_ALARMBELL命令参数
+    public static class NET_CTRL_ALARMBELL extends SdkStructure
+    {
+        public int                    dwSize;
+        public int                    nChannelID;                   // 通道号(0开始)
+
+        public NET_CTRL_ALARMBELL(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // 警灯配置(对应 CFG_CMD_ALARMLAMP)
+    public static class CFG_ALARMLAMP_INFO extends SdkStructure
+    {
+        public int     	         emAlarmLamp;                  // 警灯状态,参考  EM_ALARMLAMP_MODE
+    }
+
+    // 警灯状态
+    public static class EM_ALARMLAMP_MODE extends SdkStructure
+    {
+        public static final int EM_ALARMLAMP_MODE_UNKNOWN = -1;    // 未知
+        public static final int EM_ALARMLAMP_MODE_OFF = 0;         // 灭
+        public static final int EM_ALARMLAMP_MODE_ON = 1;          // 亮
+        public static final int EM_ALARMLAMP_MODE_BLINK = 2;       // 闪烁
+    }
+
+    // 发送的通知类型,对应CLIENT_SendNotifyToDev接口
+    public static class NET_EM_NOTIFY_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_NOTIFY_PATROL_STATUS = 1;   // 发送巡更通知 (对应结构体 NET_IN_PATROL_STATUS_INFO, NET_OUT_PATROL_STATUS_INFO )
+    }
+
+    // 巡更状态
+    public static class NET_EM_PATROL_STATUS extends SdkStructure
+    {
+        public static final int NET_EM_PATROL_STATUS_UNKNOWN = 0;  // 未知状态
+        public static final int NET_EM_PATROL_STATUS_BEGIN = 1;    // 巡更开始
+        public static final int NET_EM_PATROL_STATUS_END = 2;      // 巡更结束
+        public static final int NET_EM_PATROL_STATUS_FAIL = 3;     // 巡更失败
+    }
+
+    // CLIENT_SendNotifyToDev 入参 (对应枚举 NET_EM_NOTIFY_PATROL_STATUS)
+    public static class NET_IN_PATROL_STATUS_INFO extends SdkStructure
+    {
+        public int                    dwSize;                       // 结构体大小
+        public int                    emPatrolStatus;               // 巡更状态,参考  NET_EM_PATROL_STATUS
+
+        public NET_IN_PATROL_STATUS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SendNotifyToDev 出参 (对应枚举 NET_EM_NOTIFY_PATROL_STATUS)
+    public static class NET_OUT_PATROL_STATUS_INFO extends SdkStructure
+    {
+        public int                    dwSize;                       // 结构体大小
+
+        public NET_OUT_PATROL_STATUS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 报警事件类型  NET_ALARM_TALKING_INVITE (设备请求对方发起对讲事件)对应的数据描述信息
+    public static class ALARM_TALKING_INVITE_INFO extends SdkStructure
+    {
+        public int                    dwSize;
+        public int                    emCaller;                                    // 设备希望的对讲发起方,取值参考   EM_TALKING_CALLER
+        public NET_TIME               stuTime;                   				   // 事件触发时间
+        public byte[]                 szCallID = new byte[NET_COMMON_STRING_64];   // 呼叫惟一标识符
+        public int                    nLevel;                         			   // 表示所呼叫设备所处层级
+        public TALKINGINVITE_REMOTEDEVICEINFO       stuRemoteDeviceInfo;   	       // 远端设备信息
+        public int 							    bRealUTC;						// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX         					RealUTC;                        // 事件发生的时间(标准UTC)
+        public ALARM_TALKING_INVITE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对讲发起方
+    public static class EM_TALKING_CALLER extends SdkStructure
+    {
+        public static final int EM_TALKING_CALLER_UNKNOWN  = 0;                   // 未知发起方
+        public static final int EM_TALKING_CALLER_PLATFORM = 1;                   // 对讲发起方为平台
+    }
+
+    // Invite事件远程设备协议
+    public static class TALKINGINVITE_REMOTEDEVICE_PROTOCOL extends SdkStructure
+    {
+        public static final int EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_UNKNOWN   = 0;    // 未知
+        public static final int EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL_HIKVISION = 1;    // 
+    }
+
+    // Invite事件远端设备信息
+    public static class TALKINGINVITE_REMOTEDEVICEINFO extends SdkStructure
+    {
+        public byte[]		         szIP = new byte[MAX_REMOTEDEVICEINFO_IPADDR_LEN];	        // 设备IP
+        public int	                 nPort;					                                    // 端口
+        public int                   emProtocol;                                                // 协议类型,取值参考 EM_TALKINGINVITE_REMOTEDEVICE_PROTOCOL
+        public byte[]		         szUser = new byte[MAX_REMOTEDEVICEINFO_USERNAME_LEN];	    // 用户名
+        public byte[]		         szPassword = new byte[MAX_REMOTEDEVICEINFO_USERPSW_LENGTH];// 密码
+        public byte[]                szReverse = new byte[1024];                                // 保留字段
+    }
+
+    // IO控制命令,对应 CLIENT_QueryIOControlState 接口  和  CLIENT_IOControl 接口
+    public static class NET_IOTYPE extends SdkStructure
+    {
+        public static final int NET_ALARMINPUT = 1;                             // 控制报警输入,对应结构体为  ALARM_CONTROL
+        public static final int NET_ALARMOUTPUT = 2;                            // 控制报警输出,对应结构体为  ALARM_CONTROL
+        public static final int NET_DECODER_ALARMOUT = 3;                       // 控制报警解码器输出,对应结构体为  DECODER_ALARM_CONTROL
+        public static final int NET_WIRELESS_ALARMOUT = 5;                      // 控制无线报警输出,对应结构体为  ALARM_CONTROL
+        public static final int NET_ALARM_TRIGGER_MODE = 7;                     // 报警触发方式(手动,自动,关闭),使用  TRIGGER_MODE_CONTROL 结构体
+    }
+
+    // 报警IO控制
+    public static class ALARM_CONTROL extends SdkStructure
+    {
+        public short       			index;                    		// 端口序号
+        public short       			state;                   	    // 端口状态,0 - 关闭,1 - 打开
+    }
+
+    // 报警解码器控制
+    public static class DECODER_ALARM_CONTROL extends SdkStructure
+    {
+        public int                  decoderNo;               		// 报警解码器号,从0开始
+        public short      			alarmChn;                		// 报警输出口,从0开始
+        public short      		    alarmState;             	    // 报警输出状态;1:打开,0:关闭
+    }
+
+    // 触发方式
+    public static class TRIGGER_MODE_CONTROL extends SdkStructure
+    {
+        public short      			index;                    		// 端口序号
+        public short       			mode;                     		// 触发方式(0关闭1手动2自动);不设置的通道,sdk默认将保持原来的设置。
+        public byte[]     			bReserved = new byte[28];
+    }
+
+    // 报警输出通道的状态的配置, 对应 命令  CFG_CMD_ALARMOUT
+    public static class CFG_ALARMOUT_INFO extends SdkStructure
+    {
+        public int					nChannelID;									 // 报警通道号(0开始)
+        public byte[]				szChnName = new byte[MAX_CHANNELNAME_LEN];	 // 报警通道名称
+        public byte[]				szOutputType = new byte[MAX_NAME_LEN];		 // 输出类型, 用户自定义
+        public int					nOutputMode;								 // 输出模式, 0-自动报警, 1-强制报警, 2-关闭报警
+        public int                  nPulseDelay;                                 // 脉冲模式输出时间, 单位为秒(0-255秒)
+        public int                  nSlot;                                       // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推, -1表示无效
+        public int                  nLevel1;                                     // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, 从0开始, -1表示无效
+        public byte                 abLevel2;                                    // 类型为bool, 表示nLevel2字段是否存在
+        public int                  nLevel2;                                     // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, 从0开始
+        public int                  emPole;                                     // 输出有效模式,EM_ALARMOUT_POLE
+    }
+
+    // 检测采集设备报警事件, 对应事件类型 NET_ALARM_SCADA_DEV_ALARM
+    public static class ALARM_SCADA_DEV_INFO extends SdkStructure
+    {
+        public int                   dwSize;
+        public int                   nChannel;                                       // 通道号
+        public NET_TIME              stuTime;                       // 事件发生的时间
+        public byte[]                szDevName = new byte[NET_COMMON_STRING_64];     // 故障设备名称
+        public byte[]                szDesc = new byte[NET_COMMON_STRING_256];       // 报警描述
+        public int                   nAction;                            			 // -1:未知 0:脉冲 1:开始 2:停止
+        public byte[]                szID = new byte[NET_COMMON_STRING_32];          // 点位ID, 目前使用16字节
+        public byte[]                szSensorID = new byte[NET_COMMON_STRING_32];    // 探测器ID, 目前使用16字节
+        public byte[]                szDevID = new byte[NET_COMMON_STRING_32];       // 设备ID, 目前使用16字节
+        public byte[]                szPointName = new byte[NET_COMMON_STRING_64];   // 点位名,与点表匹配
+        public int                   nAlarmFlag;                         			 // 0:开始, 1:结束
+        public int                   emDevType;                            			// 设备类型,详见EM_ALARM_SCADA_DEV_TYPE
+        public int                   emDevStatus;                          			// 设备状态,详见EM_SCADA_DEVICE_STATUS
+
+        public ALARM_SCADA_DEV_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //SCADA类型
+    public static class EM_ALARM_SCADA_DEV_TYPE extends SdkStructure
+    {
+        public static final int EM_ALARM_SCADA_DEV_UNKNOWN           = 0;   // 未知
+        public static final int EM_ALARM_SCADA_DEV_LEAKAGE           = 1;   // 漏水检测
+        public static final int EM_ALARM_SCADA_DEV_THCONTROLLER      = 2;   // 湿温度
+        public static final int EM_ALARM_SCADA_DEV_UPS               = 3;   // UPS
+        public static final int EM_ALARM_SCADA_DEV_SWITCH            = 4;   // 开关电源
+        public static final int EM_ALARM_SCADA_DEV_ELECTRICMETER     = 5;   // 智能电表
+        public static final int EM_ALARM_SCADA_DEV_COMMERCIALPOWER   = 6;   // 市电检测
+        public static final int EM_ALARM_SCADA_DEV_BATTERY           = 7;   // 蓄电池
+        public static final int EM_ALARM_SCADA_DEV_AIRCONDITION      = 8;   // 空调
+        public static final int EM_ALARM_SCADA_DEV_ACCESS            = 9;   // 门禁
+        public static final int EM_ALARM_SCADA_DEV_SMOKINGSENSOR     = 10;  // 烟感
+        public static final int EM_ALARM_SCADA_DEV_INFRARED          = 11;  // 红外
+        public static final int EM_ALARM_SCADA_DEV_CHEMICAL          = 12;  // 化工
+        public static final int EM_ALARM_SCADA_DEV_PERIMETER         = 13;  // 周界
+        public static final int EM_ALARM_SCADA_DEV_DOORMAGNETISM     = 14;  //
+        public static final int EM_ALARM_SCADA_DEV_DISTANCE          = 15;  // 测距
+        public static final int EM_ALARM_SCADA_DEV_WINDSENSOR        = 16;  // 风速
+        public static final int EM_ALARM_SCADA_DEV_LOCATION          = 17;  // 位置
+        public static final int EM_ALARM_SCADA_DEV_ATMOSPHERE        = 18;  // 大气
+        public static final int EM_ALARM_SCADA_DEV_SOLARPOWER        = 19;  // 太阳能
+    }
+
+    //设备状态
+    public static class EM_SCADA_DEVICE_STATUS extends SdkStructure
+    {
+        public static final int EM_SCADA_DEVICE_STATUS_KNOWN         = -1;  // 未知
+        public static final int EM_SCADA_DEVICE_STATUS_NORMAL        = 0;   // 正常
+        public static final int EM_SCADA_DEVICE_STATUS_ALARM         = 1;   // 报警
+        public static final int EM_SCADA_DEVICE_STATUS_OFFLINE       = 2;   // 离线
+    }
+
+    // 点位类型
+    public static class EM_NET_SCADA_POINT_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_SCADA_POINT_TYPE_UNKNOWN = 0;                  // 未知
+        public static final int EM_NET_SCADA_POINT_TYPE_ALL		= 1;                  // 所有类型
+        public static final int EM_NET_SCADA_POINT_TYPE_YC      = 2;                  // 遥测 模拟量输入
+        public static final int EM_NET_SCADA_POINT_TYPE_YX		= 3;                  // 遥信 开关量输入
+        public static final int EM_NET_SCADA_POINT_TYPE_YT		= 4;                  // 遥调 模拟量输出
+        public static final int EM_NET_SCADA_POINT_TYPE_YK		= 5;                  // 遥控 开关量输出
+    }
+
+    // CLIENT_SCADAAttachInfo()接口输入参数
+    public static class NET_IN_SCADA_ATTACH_INFO extends SdkStructure
+    {
+        public int                          dwSize;
+        public Callback				cbCallBack;                 // 数据回调函数, fSCADAAttachInfoCallBack 回调
+        public int         					emPointType;                // 点位类型,取值参考  EM_NET_SCADA_POINT_TYPE
+        public Pointer                   	dwUser;                     // 用户定义参数
+
+        public NET_IN_SCADA_ATTACH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SCADAAttachInfo()接口输出参数
+    public static class NET_OUT_SCADA_ATTACH_INFO extends SdkStructure
+    {
+        public int    					   dwSize;
+
+        public NET_OUT_SCADA_ATTACH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测点位信息列表
+    public static class NET_SCADA_NOTIFY_POINT_INFO_LIST extends SdkStructure
+    {
+        public int                           	dwSize;
+        public int                              nList;                        // 监测点位信息个数
+        public NET_SCADA_NOTIFY_POINT_INFO[]    stuList = (NET_SCADA_NOTIFY_POINT_INFO[])new NET_SCADA_NOTIFY_POINT_INFO().toArray(MAX_SCADA_POINT_LIST_INFO_NUM); // 监测点位信息
+
+        public NET_SCADA_NOTIFY_POINT_INFO_LIST() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测点位信息
+    public static class NET_SCADA_NOTIFY_POINT_INFO extends SdkStructure
+    {
+        public int                       		dwSize;
+        public byte[]                        	szDevName = new byte[NET_COMMON_STRING_64];     // 设备名称,与getInfo获取的名称一致
+        public int     							emPointType;                        			// 点位类型,取值参考 EM_NET_SCADA_POINT_TYPE
+        public byte[]                        	szPointName = new byte[NET_COMMON_STRING_64];   // 点位名,与点位表的取值一致
+        public float                       		fValue;                            				// Type为YC时为浮点数
+        public int                         		nValue;                             			// Type为YX时为整数
+        public byte[]                        	szFSUID = new byte[NET_COMMON_STRING_64];       // 现场监控单元ID(Field Unit), 即设备本身
+        public byte[]                        	szID = new byte[NET_COMMON_STRING_64];          // 点位ID
+        public byte[]                        	szSensorID = new byte[NET_COMMON_STRING_64];    // 探测器ID
+        public NET_TIME_EX                 		stuCollectTime;             					// 采集时间
+
+        public NET_SCADA_NOTIFY_POINT_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class CFG_TRAFFICSNAPSHOT_NEW_INFO extends SdkStructure
+    {
+        public int									nCount;											// 有效成员个数
+        public CFG_TRAFFICSNAPSHOT_INFO[]	stInfo = (CFG_TRAFFICSNAPSHOT_INFO[])new CFG_TRAFFICSNAPSHOT_INFO().toArray(8);		// 交通抓拍表数组
+    }
+
+    // CFG_CMD_INTELLECTIVETRAFFIC
+    public static class CFG_TRAFFICSNAPSHOT_INFO extends SdkStructure
+    {
+        public byte[]                   szDeviceAddress = new byte[MAX_DEVICE_ADDRESS];   	// 设备地址	UTF-8编码,256字节
+        public int                      nVideoTitleMask;                      			  	// OSD叠加类型掩码	从低位到高位分别表示:0-时间 1-地点 2-车牌3-车长 4-车速 5-限速6-大车限速 7-小车限速8-超速 9-违法代码10-车道号 11-车身颜色 12-车牌类型 13-车牌颜色14-红灯点亮时间 15-违章类型 16-雷达方向 17-设备编号 18-标定到期时间 19-车型 20-行驶方向
+        public int                      nRedLightMargin;                      			  	// 红灯冗余间隔时间	红灯开始的一段时间内,车辆通行不算闯红灯,单位:秒
+        public float				    fLongVehicleLengthLevel;              			  	// 超长车长度最小阈值	单位:米,包含
+        public float[]					arfLargeVehicleLengthLevel = new float[2];        	// 大车长度阈值	单位:米,包含小值
+        public float[]					arfMediumVehicleLengthLevel = new float[2];       	// 中型车长度阈值	单位:米,包含小值
+        public float[]					arfSmallVehicleLengthLevel = new float[2];        	// 小车长度阈值	单位:米,包含小值
+        public float					fMotoVehicleLengthLevel;              			  	// 摩托车长度最大阈值	单位:米,不包含
+        public BREAKINGSNAPTIMES_INFO   stBreakingSnapTimes; 								// 违章抓拍张数
+        public DETECTOR_INFO[]          arstDetector = (DETECTOR_INFO[])new DETECTOR_INFO().toArray(MAX_DETECTOR);     // 车检器配置,下标是车道号
+        public int 					 	nCarType;			               	   				// 抓拍车辆类型	0-大小车都抓拍1-抓拍小车2-抓拍大车3-大小车都不抓拍
+        public int						nMaxSpeed;			               	   				// 当测得的速度超过最大速度时,则以最大速度计	0~255km/h
+        public int						nFrameMode;		               	   					// 帧间隔模式	1-速度自适应(超过速度上限取0间隔,低于速度下限取2间隔,中间取1间隔)2-由联动参数决定
+        public int[]                    arnAdaptiveSpeed = new int[2];                  	// 速度自适应下限和上限
+        public CFG_ALARM_MSG_HANDLE     stuEventHandler;	    							// 交通抓拍联动参数
+        public int                      abSchemeRange;                        				// BOOL类型,TRUE:方案针对相机,以车到0的值为准;FALSE:方案针对车道。不可以修改此字段数据, 只内部使用
+        public int                      nVideoTitleMask1;					   				// 从低位到高位分别表示:0-车标 1-红灯结束时间 2-设备制造厂商 3-小车低限速 4-大车低限速 5-小车高限速 6-大车高限速 7-设备工作模式 8-通用自定义 9-车道自定义 10-抓拍触发源 11-停车场区域12-车辆类型(面包车、轿车等等) 13-中车低限速 14-中车高限速 15-道路方向 16-GPS信息
+        public int				        nMergeVideoTitleMask;                 				// 合成图片OSD叠加类型掩码	参照nVideoTitleMask字段
+        public int				        nMergeVideoTitleMask1;				  				// 合成图片OSD叠加类型掩码	参照nVideoTitleMask1字段
+        public int                      nTriggerSource;					   					// 触发源掩码 0-RS232 1-RS485 2-IO 3-Video 4-Net
+        public int						nSnapMode;							   				// 抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍 3-PK模式
+        public int                      nWorkMode;							   				// 工作模式 0-自动模式,1-线圈抓拍模式,2-线圈抓拍识别,3-视频抓拍,4-视频识别, 5-混合抓拍(带识别)
+        public int                      nCarThreShold;						   				// 车长阈值  区分大小车长的阈值,单位: cm
+        public int                      nSnapType;							   				// 抓拍或抓录选择 0-正常抓拍模式 1-视频抓拍模式 2-黑屏快抓模式
+        public int[]                    nCustomFrameInterval = new int[3];			   		// 自定义抓拍帧间隔 第一个元素指车速小于速度自适应下限时的抓拍帧间隔,依次类推
+        public int                      nKeepAlive;				           					// 与雷达、车检器的默认保活周期 单位秒
+        public OSD_INFO				    stOSD;												// 原始图片OSD参数配置
+        public OSD_INFO                 stMergeOSD;                       				 	// 合成图片OSD参数配置
+        public CFG_NET_TIME             stValidUntilTime;									// 标定到期时间,指该时间点之前抓拍照片有效
+        public RADAR_INFO               stRadar;
+        public byte[]                   szRoadwayCode = new byte[MAX_ROADWAYNO];        	// 道路代码
+        public int                      nVideoTitleMask2;					   				// 原始图片OSD叠加类型掩码2 从低位到高位分别表示:0-国别 1-尾气数据
+        public int				        nMergeVideoTitleMask2;				   				// 合成图片OSD叠加类型掩码2 参照nVideoTitleMask2字段
+        public int                      nParkType;                            				// 出入口类型,0-默认( 兼容以前,不区分出口/入口 ),1-入口相机, 2-出口相机
+        public int					    nCoilSpeedAdjustDelayFrameTime;	   // 线圈速度校正等待时间,范围【500, 4000】,单位:毫秒
+        public boolean					bCoilSpeedAdjustEnable;			   // 线圈速度校正使能,TRUE:校正 FALSE:不校正
+        public int					    nSnapSigMinConfidence;				   // 触发雷达信号抓拍值,范围【0~100】
+        public int                      emMixSnapSpeedSource;				   // 视频抓拍速度来源,EM_MIX_SNAP_SPEED_SOURCE
+    }
+
+    public static class COIL_MAP_INFO extends SdkStructure
+    {
+        public int        				nPhyCoilID;         // 物理线圈号
+        public int        				nLogicCoilID;       // 逻辑线圈号
+    }
+
+    // 车检器配置
+    public static class DETECTOR_INFO extends SdkStructure
+    {
+        public int                		nDetectBreaking;                   		 			// 违章类型掩码	从低位到高位依次是:0-正常1-闯红灯2-压线3-逆行4-欠速5-超速6-有车占道
+        // 7-黄牌占道 8-闯黄灯 9-违章占公交车道 10-不系安全带 11-驾驶员抽烟 12-驾驶员打电话
+        public COILCONFIG_INFO[]    	arstCoilCfg = (COILCONFIG_INFO[])new COILCONFIG_INFO().toArray(MAX_COILCONFIG);    // 线圈配置数组
+        public int				    	nRoadwayNumber;				      		 			// 车道号	1-16 ; 0表示不启用
+        public int                  	nRoadwayDirection;                		 			// 车道方向(车开往的方向)	0-南向北 1-西南向东北 2-东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-忽略
+        public int                  	nRedLightCardNum;                 		 			// 卡口图片序号	表示将电警中的某一张图片作为卡口图片(共三张),0表示不采用,1~3,表示采用对应序号的图片
+        public int                  	nCoilsNumber;                     		 			// 线圈个数	1-3
+        public int                  	nOperationType;                   		 			// 业务模式	0-卡口电警1-电警2-卡口
+        public int[]                	arnCoilsDistance = new int[3];    		 			// 两两线圈的间隔	范围0-1000,单位为厘米
+        public int                  	nCoilsWidth;                      		 			// 每个线圈的宽度	0~200cm
+        public int[]                	arnSmallCarSpeedLimit = new int[2];      			// 小型车辆速度下限和上限	0~255km/h,不启用大小车限速时作为普通车辆限速
+        public int[]					arnBigCarSpeedLimit = new int[2];        			// 大型车辆速度下限和上限	0~255km/h,启用大小车限速时有效
+        public int				    	nOverSpeedMargin;			     	     			// 限高速宽限值	单位:km/h
+        public int                  	nBigCarOverSpeedMargin;           	     			// 大车限高速宽限值	单位:km/h,启用大小车限速时有效
+        public int				    	nUnderSpeedMargin;			     		 			// 限低速宽限值	单位:km/h
+        public int                  	nBigCarUnderSpeedMargin;          		 			// 大车限低速宽限值	单位:km/h,启用大小车限速时有效
+        public byte                 	bSpeedLimitForSize;               		 			// bool类型,是否启用大小车限速
+        public byte			        	bMaskRetrograde;				     	 			// bool类型,逆行是否视为违章行为
+        public byte[]               	byReserved = new byte[2];                			// 保留对齐
+        public byte[]            		szDrivingDirection = new byte[3*MAX_DRIVINGDIRECTION]; // "DrivingDirection" : ["Approach", "", ""],行驶方向
+        // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,
+        // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
+        // 下行的两个地点,UTF-8编码
+        public int                  	nOverPercentage;                  		 			// 超速百分比,超过限速百分比后抓拍
+        public int                  	nCarScheme;                       		 			// 具体的方案Index,具体方案含义参参考打包环境local.png;根据CFG_TRAFFICSNAPSHOT_INFO.abSchemeRange字段区分作用范围
+        public int                  	nSigScheme;                       		 			// 同上,非卡口使用
+        public int                  	bEnable;                          					// BOOL类型,车道是否有效,只有有效时才抓拍
+        public int[]			    	nYellowSpeedLimit = new int[2];			 			//黄牌车限速上限和下限 范围0~255km/h
+        public int				    	nRoadType;						 		 			//工作路段 0 普通公路 1 高速公路
+        public int				    	nSnapMode;						 		 			//抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍
+        public int                  	nDelayMode;						 		 			//延时抓拍方案 0-使DelaySnapshotDistance,1-使用DelayTime
+        public int                  	nDelayTime;						 		 			//延时抓拍时间 闯红灯第三张抓拍位置距离最后一个线圈的时间,单位毫秒
+        public int				    	nTriggerMode;					 		 			//触发模式 0-入线圈触发 1-出线圈触发 2-出入都抓拍 3-关闭
+        public int			        	nErrorRange;						 	 			//速度误差值,进线圈2与进线圈3之间的速度误差值,若实际误差大于或等于该值,视速度无效,否则取平均速度 0-20
+        public double			    	dSpeedCorrection;				 		 			//速度校正系数,即速度值为测出的值乘以该系数
+        public int[]                	nDirection = new int[2];                 			//相对车道方向需要上报车辆行驶方向,nDirection[0] 0--空 1--正向 ; nDirection[1] 0--空 1--反向
+        public byte[]               	szCustomParkNo = new byte[CFG_COMMON_STRING_32 + 1];// 自定义车位号(停车场用)
+        public byte[]               	btReserved = new byte[3];
+        public int                		nCoilMap;                        					// 有多少对线圈映射关系
+        public COIL_MAP_INFO[]          stuCoilMap = (COIL_MAP_INFO[])new COIL_MAP_INFO().toArray(16);;                  // 线圈号映射关系
+    }
+
+    // 线圈配置
+    public static class COILCONFIG_INFO extends SdkStructure
+    {
+        public int                 		nDelayFlashID;                 						// 延时闪光灯序号	每个线圈对应的延时闪关灯序号,范围0~5,0表示不延时任何闪光灯
+        public int                 		nFlashSerialNum;               						// 闪光灯序号	范围0~5,0表示不打开闪光灯
+        public int                 		nRedDirection;                 						// 红灯方向	每个线圈对应的红灯方向:0-不关联,1-左转红灯,2-直行红灯,3-右转红灯,4-待左,5-待直,6-待右, 只在电警中有效
+        public int                 		nTriggerMode ;                 						// 线圈触发模式	触发模式:0-入线圈触发1-出线圈触发
+        public int				   		nFlashSerialNum2;				 					//多抓第二张对应闪光灯序号 范围0~5,0表示不打开闪光灯
+        public int				   		nFlashSerialNum3;				 					//多抓第三张对应闪光灯序号 范围0~5,0表示不打开闪光灯
+    }
+
+    // 违章抓拍张数
+    public static class BREAKINGSNAPTIMES_INFO extends SdkStructure
+    {
+        public int               		nNormal;                          					// 正常
+        public int               		nRunRedLight;                     					// 闯红灯
+        public int			      		nOverLine;											// 压线
+        public int				  		nOverYellowLine;			  	    				// 压黄线
+        public int				  		nRetrograde;			    	    				// 逆向
+        public int				  		nUnderSpeed;					    				// 欠速
+        public int				  		nOverSpeed;											// 超速
+        public int			      		nWrongRunningRoute;									// 有车占道
+        public int			      		nYellowInRoute;										// 黄牌占道
+        public int		    	  		nSpecialRetrograde;									// 特殊逆行
+        public int			      		nTurnLeft;											// 违章左转
+        public int			      		nTurnRight;											// 违章右转
+        public int			      		nCrossLane;											// 违章变道
+        public int			      		nU_Turn;						    				// 违章调头
+        public int			      		nParking;						    				// 违章停车
+        public int               		nWaitingArea;										// 违章进入待行区
+        public int			      		nWrongRoute;					   				    // 不按车道行驶
+        public int               		nParkingSpaceParking;             					// 车位有车
+        public int               		nParkingSpaceNoParking;           					// 车位无车
+        public int               		nRunYellowLight;									// 闯黄灯
+        public int               		nStay;												// 违章停留
+        public int               		nPedestrainPriority;	            				// 斑马线行人优先违章
+        public int               		nVehicleInBusRoute;               					// 违章占道
+        public int               		nBacking;                         					// 违章倒车
+        public int				  		nOverStopLine;										// 压停止线
+        public int               		nParkingOnYellowBox;           						// 黄网格线停车
+        public int               		nRestrictedPlate;									// 受限车牌
+        public int               		nNoPassing;											// 禁行
+        public int               		nWithoutSafeBelt;                					// 不系安全带
+        public int               		nDriverSmoking;                   					// 驾驶员抽烟
+        public int               		nDriverCalling;                   					// 驾驶员打电话
+        public int               		nPedestrianRunRedLight;           					// 行人闯红灯
+        public int               		nPassNotInOrder;                  					// 未按规定依次通行
+    }
+
+    // OSD属性
+    public static class OSD_INFO extends SdkStructure
+    {
+        public BLACK_REGION_INFO		stBackRegionInfo;									//OSD黑边属性
+        public int						nOSDAttrScheme;		    							//OSD属性配置方案 0=未知 , 1=全体OSD项共用属性 , 2=每个OSD项一个属性
+        public OSD_ATTR_SCHEME			stOSDAttrScheme;									//OSD属性配置方案内容
+        public OSD_CUSTOM_SORT[]     	stOSDCustomSorts = (OSD_CUSTOM_SORT[])new OSD_CUSTOM_SORT().toArray(MAX_OSD_CUSTOM_SORT_NUM);    //OSD叠加内容自定义排序
+        public int                 		nOSDCustomSortNum;
+        public int                 		nRedLightTimeDisplay;  					 			//OSD红灯时间配置 0=未知,1=违法最后一张,2=所有张
+        public byte                		cSeperater;             							//OSD不同项之间的分隔符
+        public byte[]		        	bReserved = new byte[3];           					//字节对齐
+        public byte[]                	szOSDOrder = new byte[MAX_CONF_CHAR];
+        public int                 		nOSDContentScheme;      							//0=未知, 1=Mask , 2=CustomizeSort
+        public OSD_CUSTOM_INFO     		stOSDCustomInfo;        							//OSD自定义项
+    }
+
+    // OSD黑边
+    public static class BLACK_REGION_INFO extends SdkStructure
+    {
+        public int 						nHeight;											//黑边高度 取值范围:0 ~ ( 8192-原图片高度)
+        public int 						nOSDPosition;										//黑边位置 0=未知 , 1=顶部 , 2=底部
+    }
+
+    // OSD属性配置方案内容
+    public static class OSD_ATTR_SCHEME extends SdkStructure
+    {
+        public OSD_WHOLE_ATTR 			stWholeAttr;										//全体OSD项共用属性
+    }
+
+    // 全体OSD项共用属性
+    public static class OSD_WHOLE_ATTR extends SdkStructure
+    {
+        public int        				bPositionAsBlackRegion;     						//BOOL类型,位置是否同黑边相同,true时,下面的Position无效,BOOL类型
+        public CFG_RECT    				stPostion;                  						//位置,不能超过图片范围
+        public int        				bNewLine;                   						//BOOL类型,超出矩形范围是否换行,bPositionAsBlackRegion为true时有效,BOOL类型
+        public int        				bLoneVehicle;               						//BOOL类型,车辆信息独立显示,true 一行显示一辆车信息,false 允许多辆车信息显示在一行,BOOL类型
+    }
+
+    // OSD叠加内容自定义排序
+    public static class OSD_CUSTOM_SORT extends SdkStructure
+    {
+        public OSD_CUSTOM_ELEMENT[]   	stElements = (OSD_CUSTOM_ELEMENT[])new OSD_CUSTOM_ELEMENT().toArray(MAX_OSD_CUSTOM_SORT_ELEM_NUM);     //具体叠加元素
+        public int                  	nElementNum;
+    }
+
+    // OSD具体叠加元素
+    public static class OSD_CUSTOM_ELEMENT extends SdkStructure
+    {
+        public int  					nNameType;                          				//名称类型,	0:szName字段含义参照szOSDOrder字段定义的项
+        //          1:"Name"字段表示自定义项,无需解析
+        public byte[] 					szName = new byte[MAX_OSD_CUSTOM_VALUE_LEN];        // 该项名称
+        public byte[] 					szPrefix = new byte[MAX_PRE_POX_STR_LEN];      		// 叠加前缀字符串
+        public byte[] 					szPostfix = new byte[MAX_PRE_POX_STR_LEN];     		// 叠加后缀字符串
+        public int  					nSeperaterCount;                    				// 后面添加分隔符个数
+
+    }
+
+    // OSD自定义项
+    public static class OSD_CUSTOM_INFO extends SdkStructure
+    {
+        public OSD_CUSTOM_GENERAL_INFO[]  stGeneralInfos = (OSD_CUSTOM_GENERAL_INFO[])new OSD_CUSTOM_GENERAL_INFO().toArray(MAX_OSD_CUSTOM_GENERAL_NUM);     //具体叠加元素
+        public int                        nGeneralInfoNum;
+    }
+
+    public static class OSD_CUSTOM_GENERAL_INFO extends SdkStructure
+    {
+        public int    					bEnable;            							//BOOL类型,是否叠加
+    }
+
+    public static class RADAR_INFO extends SdkStructure
+    {
+        public int     					nAngle;                 						//角度,用于修正雷达探头安装的角度造成的速度误差,范围[0,90]
+        public int     					nAntiJammingValue;      						//抗干扰门槛值
+        public int     					nComeInValue;           						//来向进入门槛值,取值范围[0,65535]
+        public int     					nComeOutValue;          						//来向离开门槛值
+        public int     					nDelayTime;             						//雷达延时,单位ms,范围[0,255]
+        public int   					nDetectBreaking;        						//违章类型掩码,从低位到高位依次是:
+        //0-正常,1-闯红灯, 2-压线, 3-逆行,4-欠速
+        //5-超速,6-有车占道,7-黄牌占道,8-闯黄灯,9-违章占公交车道
+        public int     					nDetectMode;            						//检测模式  0-车头检测 1-车尾检测 2-双向检测
+        public int     					nInstallMode;           						//雷达安装方式  0-侧面安装 1-上方安装
+        public int     					nLevel;                 						//灵敏度,0级灵敏度最高,范围[0,5]
+        public int     					nMultiTargetFilter;     						//多目标过滤模式,0-正常 1-过滤
+        public int     					nWentEndValue;          						//去向信号结束门槛值
+        public int     					nWentInValue;           						//去向进入门槛值
+        public int     					nWentOutValue;          						//去向离开门槛值
+    }
+
+    // 串口状态
+    public static class NET_COMM_STATE extends SdkStructure
+    {
+        public int        				uBeOpened; 										// 串口是否打开,0:未打开 1:打开.
+        public int        				uBaudRate;										// 波特率, 1~8分别表示 1200 2400  4800 9600 19200 38400 57600 115200
+        public int        				uDataBites;										// 数据位,4~8表示4位~8位
+        public int        				uStopBits;										// 停止位, 232串口 : 数值0 代表停止位1; 数值1 代表停止位1.5; 数值2 代表停止位2.    485串口 : 数值1 代表停止位1; 数值2 代表停止位2.
+        public int        				uParity;										// 检验, 0:无校验,1:奇校验;2:偶校验;
+        public byte[]                	bReserved = new byte[32];
+    }
+
+
+    // 门禁卡记录查询条件
+    public static class FIND_RECORD_ACCESSCTLCARD_CONDITION extends SdkStructure
+    {
+        public int                      dwSize;
+        public byte[]                   szCardNo = new byte[NET_MAX_CARDNO_LEN];       // 卡号
+        public byte[]                   szUserID = new byte[NET_MAX_USERID_LEN];       // 用户ID
+        public int                      bIsValid;                         			   // 是否有效, 1:有效, 0:无效 , boolean类型,为1或者0
+        public int                  	abCardNo;                         			   // 卡号查询条件是否有效,针对成员 szCardNo,boolean类型,为1或者0
+        public int                  	abUserID;                         			   // 用户ID查询条件是否有效,针对成员 szUserID, boolean类型,为1或者0
+        public int                  	abIsValid;                        			   // IsValid查询条件是否有效,针对成员 bIsValid, boolean类型,为1或者0
+
+        public FIND_RECORD_ACCESSCTLCARD_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁卡记录集信息
+    public static class NET_RECORDSET_ACCESS_CTL_CARD extends SdkStructure
+    {
+        public int           		  dwSize;
+        public int             		  nRecNo;                                 		   // 记录集编号,只读
+        public NET_TIME        		  stuCreateTime = new NET_TIME();                  // 创建时间
+        public byte[]            	  szCardNo = new byte[NET_MAX_CARDNO_LEN];         // 卡号
+        public byte[]            	  szUserID = new byte[NET_MAX_USERID_LEN];         // 用户ID, 设备暂不支持
+        public int       			  emStatus;                 					   // 卡状态   NET_ACCESSCTLCARD_STATE
+        public int        			  emType;                        			       // 卡类型   NET_ACCESSCTLCARD_TYPE
+        public byte[]            	  szPsw = new byte[NET_MAX_CARDPWD_LEN];           // 卡密码
+        public int             		  nDoorNum;                               		   // 有效的门数目;
+        public int[]              	  sznDoors = new int[NET_MAX_DOOR_NUM];            // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
+        public int             		  nTimeSectionNum;                        		   // 有效的的开门时间段数目
+        public int[]             	  sznTimeSectionNo = new int[NET_MAX_TIMESECTION_NUM];  // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
+        public int             		  nUserTime;                              		   // 使用次数,仅当来宾卡时有效
+        public NET_TIME        		  stuValidStartTime = new NET_TIME();              // 开始有效期, 设备暂不支持时分秒
+        public NET_TIME        		  stuValidEndTime = new NET_TIME();                // 结束有效期, 设备暂不支持时分秒
+        public int            	  	  bIsValid;                               		   // 是否有效,1有效; 0无效, boolean类型,为1或者0
+        public NET_ACCESSCTLCARD_FINGERPRINT_PACKET stuFingerPrintInfo;			   	   // 下发信息数据信息,仅为兼容性保留,请使用 stuFingerPrintInfoEx, 如果使用,内部的 pPacketData,请初始化
+        public int            	  	  bFirstEnter;                            		   // 是否拥有首卡权限, boolean类型,为1或者0
+        public byte[]            	  szCardName = new byte[NET_MAX_CARDNAME_LEN];     // 卡命名
+        public byte[]            	  szVTOPosition = new byte[NET_COMMON_STRING_64];  // 门口机关联位置
+        public int            	  	  bHandicap;                              		   // 是否为残障人士卡, boolean类型,为1或者0
+        public int            	  	  bEnableExtended;                        		   // 启用成员 stuFingerPrintInfoEx, boolean类型,为1或者0
+        public NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX     stuFingerPrintInfoEx;	   // 信息数据信息, 如果使用,内部的 pPacketData,请初始化
+        public int             		  nFaceDataNum;                          		   // 人脸数据个数不超过20
+        public NET_FACE_FACEDATA[]	  szFaceDataArr = (NET_FACE_FACEDATA[])new NET_FACE_FACEDATA().toArray(MAX_FACE_COUTN);// 人脸模板数据
+        public byte[]				  szDynamicCheckCode = new byte[MAX_COMMON_STRING_16];// 动态校验码。
+        // VTO等设备会保存此校验码,以后每次刷卡都以一定的算法生成新校验码并写入IC卡中,同时更新VTO设备的校验码,只有卡号和此校验码同时验证通过时才可开门。
+        public int             		  nRepeatEnterRouteNum;                            // 反潜路径个数
+        public int[]            	  arRepeatEnterRoute = new int[MAX_REPEATENTERROUTE_NUM]; // 反潜路径
+        public int            		  nRepeatEnterRouteTimeout;                        // 反潜超时时间
+        public int            		  bNewDoor;                                        // 是否启动新开门授权字段,TRUE表示使用nNewDoorNum和nNewDoors字段下发开门权限, BOOL类型
+        public int             		  nNewDoorNum;                                     // 有效的门数目;
+        public int[]             	  nNewDoors = new int[MAX_ACCESSDOOR_NUM];         // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置的数组下标
+        public int             		  nNewTimeSectionNum;                              // 有效的的开门时间段数目
+        public int[]             	  nNewTimeSectionNo = new int[MAX_ACCESSDOOR_NUM]; // 开门时间段索引,即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标
+        public byte[]				  szCitizenIDNo = new byte[MAX_COMMON_STRING_32];  // 证件号码
+        public int					  nSpecialDaysScheduleNum;						   // 假日计划表示数量
+        public int[]				  arSpecialDaysSchedule = new int[MAX_ACCESSDOOR_NUM];// 假日计划标识// 缺点:目前方案只支持一卡刷一个设备。
+        public int            		  nUserType;                                       // 用户类型, 0 普通用户, 1 禁止名单用户
+        public int             		  nFloorNum;                                       // 有效的楼层数量
+        public FLOOR_NO[]             szFloorNoArr = (FLOOR_NO[])new FLOOR_NO().toArray(MAX_ACCESS_FLOOR_NUM);   // 楼层号
+        public byte[]				  szSection = new byte[MAX_COMMON_STRING_64];	//部门名称
+        public int             		  nScore;                                       //信用积分
+        public byte[]            	  szCompanyName = new byte[MAX_COMPANY_NAME_LEN];//单位名称
+        public int					  nSectionID;									//部门ID
+
+        public int       			emSex;                                      	// 性别, 详见NET_ACCESSCTLCARD_SEX
+        public byte[]               szRole = new byte[MAX_COMMON_STRING_32];        // 角色
+        public byte[]               szProjectNo = new byte[MAX_COMMON_STRING_32];   // 项目ID
+        public byte[]               szProjectName = new byte[MAX_COMMON_STRING_64]; // 项目名称
+        public byte[]               szBuilderName = new byte[MAX_COMMON_STRING_64]; // 施工单位全称
+        public byte[]               szBuilderID = new byte[MAX_COMMON_STRING_32];   // 施工单位ID
+        public byte[]               szBuilderType = new byte[MAX_COMMON_STRING_32]; // 施工单位类型
+        public byte[]               szBuilderTypeID = new byte[MAX_COMMON_STRING_8];// 施工单位类别ID
+        public byte[]               szPictureID = new byte[MAX_COMMON_STRING_64];   // 人员照片ID
+        public byte[]               szContractID = new byte[MAX_COMMON_STRING_16];  // 原合同系统合同编号
+        public byte[]               szWorkerTypeID = new byte[MAX_COMMON_STRING_8]; // 工种ID
+        public byte[]               szWorkerTypeName = new byte[MAX_COMMON_STRING_32];  // 工种名称
+        public int                  bPersonStatus;                              	// 人员状态, TRUE:启用, FALSE:禁用
+        public int                  emAuthority;                          			// 用户权限,详见NET_ACCESSCTLCARD_AUTHORITY
+        public byte[]			szCompanionName=new byte[120];							// 陪同人姓名
+        public byte[]			szCompanionCompany=new byte[200];						// 陪同人单位
+        public NET_TIME		stuTmpAuthBeginTime;							// 临时授权开始时间,当该时间和其他时间同时生效时,以此时间为最高优先级
+        public NET_TIME		stuTmpAuthEndTime;								// 临时授权结束时间,当该时间和其他时间同时生效时,以此时间为最高优先级
+        public int			bFloorNoExValid;								// 楼层号扩展 szFloorNoEx 是否有效
+        public int             nFloorNumEx;									// 有效的楼层数量扩展
+        public byte[]            szFloorNoEx=new byte[512*NET_COMMON_STRING_4];			// 楼层号扩展
+        public byte[]			szSubUserID=new byte[32];								// 用户ID
+        public byte[]           szPhoneNumber=new byte[32];                              // 人员电话号码
+        public byte[]           szPhotoPath=new byte[256];                               // 人员照片对应在ftp上的路径
+        public byte[]           szCause=new byte[64];                                    // 来访原因
+        public byte[]			szCompanionCard=new byte[32];							// 陪同人员证件号
+        public byte[]			szCitizenAddress=new byte[128];							// 证件地址
+        public NET_TIME		    stuBirthDay;									// 出生日期(年月日有效)
+        public boolean			bFloorNoEx2Valid;								// stuFloors2 是否有效
+        /**
+         * 对应结构体{@link NET_FLOORS_INFO}
+         */
+        public Pointer	        pstuFloorsEx2;								// 楼层号(再次扩展)
+        public byte[]			szDefaultFloor=new byte[8];								// 默认楼层号(梯控需求)
+        public int				nUserTimeSectionNum;							// 用户时间段有效个数
+        public USER_TIME_SECTION[]			szUserTimeSections=
+                (USER_TIME_SECTION[])new USER_TIME_SECTION().toArray(6);	//针对用户自身的开门时间段校验,最多支持6个时间段
+        public byte[]			szWorkClass=new byte[256];								// 工作班别
+        public byte[]           byReverseed = new byte[1476];                     //保留大小
+        public NET_RECORDSET_ACCESS_CTL_CARD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 用户权限
+    public static class NET_ACCESSCTLCARD_AUTHORITY extends SdkStructure
+    {
+        public static final int NET_ACCESSCTLCARD_AUTHORITY_UNKNOWN  = 0;   // 未知
+        public static final int NET_ACCESSCTLCARD_AUTHORITY_ADMINISTRATORS = 1;   // 管理员
+        public static final int NET_ACCESSCTLCARD_AUTHORITY_CUSTOMER = 2;   // 普通用户
+    }
+
+    public static class FLOOR_NO extends SdkStructure
+    {
+        public byte[]            szFloorNo = new byte[NET_COMMON_STRING_4];   // 楼层号
+    }
+
+    // 卡状态
+    public static class NET_ACCESSCTLCARD_STATE extends SdkStructure
+    {
+        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;        // 预欠费(还是可以开门,但有语音提示)
+    }
+
+    // 信息数据,只用于下发信息
+    public static class NET_ACCESSCTLCARD_FINGERPRINT_PACKET extends SdkStructure
+    {
+        public int   			 dwSize;
+        public int     			 nLength;        			// 单个数据包长度,单位字节
+        public int     			 nCount;         			// 包个数
+        public Pointer   		 pPacketData;    			// 所有信息数据包,用户申请内存并填充,长度为 nLength*nCount
+
+        public NET_ACCESSCTLCARD_FINGERPRINT_PACKET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 信息数据扩展,可用于下发和获取信息
+    public static class NET_ACCESSCTLCARD_FINGERPRINT_PACKET_EX extends SdkStructure
+    {
+        public int     			 nLength;        // 单个数据包长度,单位字节
+        public int     			 nCount;         // 包个数
+        public Pointer   		 pPacketData;    // 所有信息数据包, 用户申请内存,大小至少为nLength * nCount
+        public int     		     nPacketLen;     // pPacketData 指向内存区的大小,用户填写
+        public int     			 nRealPacketLen; // 返回给用户实际信息总大小
+        public int	    		 nDuressIndex;   // 胁迫信息序号,范围1~nCount
+        public byte[]    		 byReverseed = new byte[1020]; //保留大小
+    }
+
+
+    // 查询记录能力集能力集
+    public static class CFG_CAP_RECORDFINDER_INFO extends SdkStructure
+    {
+        public int nMaxPageSize;//最大分页条数
+    	public int bSupportRealUTC;// 查询表是否支持按真实UTC时间作为条件查询
+    }
+
+    // 时间同步服务器配置
+    public static class CFG_NTP_INFO extends SdkStructure
+    {
+        public int					bEnable;									// 使能开关,BOOL类型
+        public byte[]				szAddress = new byte[MAX_ADDRESS_LEN];		// IP地址或网络名
+        public int					nPort;										// 端口号
+        public int					nUpdatePeriod;								// 更新周期,单位为分钟
+        public int 					emTimeZoneType;								// 时区, 参考 EM_CFG_TIME_ZONE_TYPE
+        public byte[]				szTimeZoneDesc = new byte[MAX_NAME_LEN];	// 时区描述
+        public int                  nSandbyServerNum;                           // 实际备用NTP服务器个数
+        public CFG_NTP_SERVER[]     stuStandbyServer = (CFG_NTP_SERVER[])new CFG_NTP_SERVER().toArray(MAX_NTP_SERVER);  // 备选NTP服务器地址
+        public int                 nTolerance;                                 // (机器人使用)表示设置的时间和当前时间的容差,单位为秒,如果设置的时间和当前的时间在容差范围内,则不更新当前时间。0 表示每次都修改。
+    }
+
+    // NTP服务器
+    public static class CFG_NTP_SERVER extends SdkStructure
+    {
+        public int                	bEnable;   									// BOOL类型
+        public byte[]				szAddress = new byte[MAX_ADDRESS_LEN];		// IP地址或网络名
+        public int					nPort;										// 端口号
+    }
+
+    // 时区定义(NTP)
+    public static class EM_CFG_TIME_ZONE_TYPE extends SdkStructure
+    {
+        public static final int EM_CFG_TIME_ZONE_0 = 0;								// {0, 0*3600,"GMT+00:00"}
+        public static final int EM_CFG_TIME_ZONE_1 = 1;								// {1, 1*3600,"GMT+01:00"}
+        public static final int EM_CFG_TIME_ZONE_2 = 2;								// {2, 2*3600,"GMT+02:00"}
+        public static final int EM_CFG_TIME_ZONE_3 = 3;								// {3, 3*3600,"GMT+03:00"}
+        public static final int EM_CFG_TIME_ZONE_4 = 4;								// {4, 3*3600+1800,"GMT+03:30"}
+        public static final int EM_CFG_TIME_ZONE_5 = 5;								// {5, 4*3600,"GMT+04:00"}
+        public static final int EM_CFG_TIME_ZONE_6 = 6;								// {6, 4*3600+1800,"GMT+04:30"}
+        public static final int EM_CFG_TIME_ZONE_7 = 7;								// {7, 5*3600,"GMT+05:00"}
+        public static final int EM_CFG_TIME_ZONE_8 = 8;								// {8, 5*3600+1800,"GMT+05:30"}
+        public static final int EM_CFG_TIME_ZONE_9 = 9;								// {9, 5*3600+1800+900,"GMT+05:45"}
+        public static final int EM_CFG_TIME_ZONE_10 = 10;							// {10, 6*3600,"GMT+06:00"}
+        public static final int EM_CFG_TIME_ZONE_11 = 11;							// {11, 6*3600+1800,"GMT+06:30"}
+        public static final int EM_CFG_TIME_ZONE_12 = 12;							// {12, 7*3600,"GMT+07:00"}
+        public static final int EM_CFG_TIME_ZONE_13 = 13;							// {13, 8*3600,"GMT+08:00"}
+        public static final int EM_CFG_TIME_ZONE_14 = 14;							// {14, 9*3600,"GMT+09:00"}
+        public static final int EM_CFG_TIME_ZONE_15 = 15;							// {15, 9*3600+1800,"GMT+09:30"}
+        public static final int EM_CFG_TIME_ZONE_16 = 16;							// {16, 10*3600,"GMT+10:00"}
+        public static final int EM_CFG_TIME_ZONE_17 = 17;							// {17, 11*3600,"GMT+11:00"}
+        public static final int EM_CFG_TIME_ZONE_18 = 18;							// {18, 12*3600,"GMT+12:00"}
+        public static final int EM_CFG_TIME_ZONE_19 = 19;							// {19, 13*3600,"GMT+13:00"}
+        public static final int EM_CFG_TIME_ZONE_20 = 20;							// {20, -1*3600,"GMT-01:00"}
+        public static final int EM_CFG_TIME_ZONE_21 = 21;							// {21, -2*3600,"GMT-02:00"}
+        public static final int EM_CFG_TIME_ZONE_22 = 22;							// {22, -3*3600,"GMT-03:00"}
+        public static final int EM_CFG_TIME_ZONE_23 = 23;							// {23, -3*3600-1800,"GMT-03:30"}
+        public static final int EM_CFG_TIME_ZONE_24 = 24;							// {24, -4*3600,"GMT-04:00"}
+        public static final int EM_CFG_TIME_ZONE_25 = 25;							// {25, -5*3600,"GMT-05:00"}
+        public static final int EM_CFG_TIME_ZONE_26 = 26;							// {26, -6*3600,"GMT-06:00"}
+        public static final int EM_CFG_TIME_ZONE_27 = 27;							// {27, -7*3600,"GMT-07:00"}
+        public static final int EM_CFG_TIME_ZONE_28 = 28;							// {28, -8*3600,"GMT-08:00"}
+        public static final int EM_CFG_TIME_ZONE_29 = 29;							// {29, -9*3600,"GMT-09:00"}
+        public static final int EM_CFG_TIME_ZONE_30 = 30;							// {30, -10*3600,"GMT-10:00"}
+        public static final int EM_CFG_TIME_ZONE_31 = 31;							// {31, -11*3600,"GMT-11:00"}
+        public static final int EM_CFG_TIME_ZONE_32 = 32;							// {32, -12*3600,"GMT-12:00"}
+    }
+
+
+    // 事件信息
+    public static class EVENT_INFO extends SdkStructure
+    {
+        public int                  nEvent;								// 事件类型,参见智能事件类型,如 EVENT_IVS_ALL
+        public int	[]	            arrayObejctType=new int[16];				// 支持的物体类型,当前支持 EM_OBJECT_TYPE_HUMAN, EM_OBJECT_TYPE_VECHILE, EM_OBJECT_TYPE_NOMOTOR, EM_OBJECT_TYPE_ALL
+        public int				    nObjectCount;						// szObejctType 数量
+        public byte[]				byReserved=new byte[512];					// 预留字段
+    };
+
+    // 录像信息对应 CLIENT_FindFileEx 接口的 NET_FILE_QUERY_FILE 命令 查询条件
+    // 目前支持通过路径查询
+    public static class NET_IN_MEDIA_QUERY_FILE extends SdkStructure
+    {
+        public int               	dwSize;                 // 结构体大小
+        public String            	szDirs;                 // 工作目录列表,一次可查询多个目录,为空表示查询所有目录。目录之间以分号分隔,如“/mnt/dvr/sda0;/mnt/dvr/sda1”,szDirs==null 或"" 表示查询所有
+        public int                  nMediaType;             // 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
+        public int                  nChannelID;             // 通道号从0开始,-1表示查询所有通道
+        public NET_TIME             stuStartTime;           // 开始时间
+        public NET_TIME             stuEndTime;             // 结束时间
+        public int[]                nEventLists = new int[MAX_IVS_EVENT_NUM]; // 事件类型列表,参见智能分析事件类型
+        public int                  nEventCount;            // 事件总数
+        public byte                 byVideoStream;          // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流2 4-辅码流3
+        public byte[]               bReserved 	= new byte[3];           	  // 字节对齐
+        public int[]     			emFalgLists = new int[EM_RECORD_SNAP_FLAG_TYPE.FLAG_TYPE_MAX]; // 录像或抓图文件标志, 不设置标志表示查询所有文件, 参考 EM_RECORD_SNAP_FLAG_TYPE
+        public int                  nFalgCount;             // 标志总数
+        public NET_RECORD_CARD_INFO stuCardInfo;            // 卡号录像信息, emFalgLists包含卡号录像时有效
+        public int                  nUserCount;             // 用户名有效个数
+        public byte[]               szUserName  = new byte[MAX_QUERY_USER_NUM * NET_NEW_USER_NAME_LENGTH]; // 用户名
+        public int 					emResultOrder;          // 查询结果排序方式, 参考 EM_RESULT_ORDER_TYPE
+        public int                  bTime;                  // 是否按时间查询
+        public int			        emCombination;			// 查询结果是否合并录像文件
+        public EVENT_INFO[]			stuEventInfo=(EVENT_INFO[])new EVENT_INFO().toArray(16);		// 事件信息,当查询为 DH_FILE_QUERY_FILE_EX 类型时有效
+        public int					nEventInfoCount;		// stuEventInfo 个数
+    	public int					bOnlySupportRealUTC;	// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+    	public NET_TIME				stuStartTimeRealUTC;	// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+    	public NET_TIME				stuEndTimeRealUTC;		// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+        public NET_IN_MEDIA_QUERY_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 录像信息对应 CLIENT_FindFileEx 接口的 NET_FILE_QUERY_FILE 命令 查询结果
+    public static class NET_OUT_MEDIA_QUERY_FILE extends SdkStructure
+    {
+        public int                 	 dwSize;                 // 结构体大小
+        public int                 	 nChannelID;             // 通道号从0开始,-1表示查询所有通道
+        public NET_TIME            	 stuStartTime;           // 开始时间
+        public NET_TIME            	 stuEndTime;             // 结束时间
+        public int        		   	 nFileSize;              // 文件长度
+        public byte                	 byFileType;             // 文件类型 1:jpg图片, 2: dav
+        public byte                	 byDriveNo;              // 该字段已废弃,后续开发使用 nDriveNo成员
+        public byte                	 byPartition;            // 分区号
+        public byte                	 byVideoStream;          // 视频码流 0-未知 1-主码流 2-辅码流1 3-辅码流 4-辅码流
+        public int        		   	 nCluster;               // 簇号
+        public byte[]              	 szFilePath = new byte[MAX_PATH];   				  // 文件路径
+        public int[]               	 nEventLists = new int[MAX_IVS_EVENT_NUM];  		  // 关联的事件列表,事件类型列表,参见智能分析事件类型
+        public int                 	 nEventCount;            //事件总数
+        public int[]  			   	 emFalgLists = new int[EM_RECORD_SNAP_FLAG_TYPE.FLAG_TYPE_MAX]; // 录像或抓图文件标志, 参考  EM_RECORD_SNAP_FLAG_TYPE
+        public int                 	 nFalgCount;             //标志总数
+        public int        		   	 nDriveNo;               // 磁盘号
+
+        //频浓缩文件相关信息
+        public byte[]			   	 szSynopsisPicPath = new byte[NET_COMMON_STRING_512]; // 预处理文件提取到的快照	文件路径
+        // 支持HTTP URL表示:"http://www.te.com/1.jpg"
+        // 支持FTP URL表示: "ftp://ftp.te.com/1.jpg"
+        // 支持服务器本地路径
+        // a)"C:/pic/1.jpg"
+        // b)"/mnt//2010/8/11/dav/15:40:50.jpg"
+        public int                 	 nSynopsisMaxTime;                      			  // 支持浓缩视频最大时间长度,单位 秒
+        public int                 	 nSynopsisMinTime;                     				  // 支持浓缩视频最小时间长度,单位 秒
+
+        //文件摘要信息
+        public int                 	 nFileSummaryNum;                                     // 文件摘要信息数
+        public NET_FILE_SUMMARY_INFO[]   stFileSummaryInfo = (NET_FILE_SUMMARY_INFO[])new NET_FILE_SUMMARY_INFO().toArray(MAX_FILE_SUMMARY_NUM);   // 文件摘要信息
+        public long                  nFileSizeEx;                           			  // 文件长度扩展,支持文件长度大于4G,单位字节
+        public int					 nTotalFrame;									      // 查询录像段内所有帧总和,不区分帧类型
+        public int                   emFileState;                       // 录像文件的状态,EM_VIDEO_FILE_STATE
+        public byte[]                   szWorkDir=new byte[256];                    // 录像文件的存储目录
+        public byte[]					szThumbnail=new byte[260];				   // 缩略图路径,可根据该路径下载缩略图
+    	public int					bRealUTC;					// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime)
+    	public NET_TIME				stuStartTimeRealUTC;		// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+    	public NET_TIME				stuEndTimeRealUTC;			// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+        public NET_OUT_MEDIA_QUERY_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 卡号录像信息
+    public static class NET_RECORD_CARD_INFO extends SdkStructure
+    {
+        public int               	 dwSize;
+        public int                   nType;                                          // 类型, 0-Card, 1-Field
+        public byte[]                szCardNo = new byte[NET_MAX_CARD_INFO_LEN];     // 卡号
+        public int   				 emTradeType;                                    // 交易类型, 参考 EM_ATM_TRADE_TYPE
+        public byte[]                szAmount = new byte[NET_COMMON_STRING_64];      // 交易金额, 空字符串表示不限金额
+        public int                   nError;                                         // 错误码, 0-所有错误, 1-吞钞, 2-吞卡
+        public int                   nFieldCount;                                    // 域数量, 按域查询时有效
+        public byte[]                szFields  = new byte[MAX_CARD_RECORD_FIELD_NUM * NET_COMMON_STRING_256];   // 域信息, 按域查询时有效
+        public byte[]				 szChange  = new byte[NET_COMMON_STRING_32];	 // 零钱
+
+        public NET_RECORD_CARD_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 文件摘要信息
+    public static class NET_FILE_SUMMARY_INFO extends SdkStructure
+    {
+        public byte[]	 			 szKey = new byte[NET_COMMON_STRING_64];          // 摘要名称
+        public byte[] 	 			 szValue = new byte[NET_COMMON_STRING_512];       // 摘要内容
+        public byte[] 				 bReserved = new byte[256];                       // 保留字段
+    }
+
+    // 录像或抓图文件标志
+    public static class EM_RECORD_SNAP_FLAG_TYPE extends SdkStructure
+    {
+        public static final int FLAG_TYPE_TIMING  = 0;                  //定时文件
+        public static final int FLAG_TYPE_MANUAL  = 1;                  //手动文件
+        public static final int FLAG_TYPE_MARKED  = 2;                  //重要文件
+        public static final int FLAG_TYPE_EVENT   = 3;                  //事件文件
+        public static final int FLAG_TYPE_MOSAIC  = 4;                  //合成图片
+        public static final int FLAG_TYPE_CUTOUT  = 5;                  //抠图图片
+        public static final int FLAG_TYPE_LEAVE_WORD  = 6;              //留言文件
+        public static final int FLAG_TYPE_TALKBACK_LOCAL_SIDE  = 7;     //对讲本地方文件
+        public static final int FLAG_TYPE_TALKBACK_REMOTE_SIDE = 8;     //对讲远程方文件
+        public static final int FLAG_TYPE_SYNOPSIS_VIDEO  = 9;          //浓缩视频
+        public static final int FLAG_TYPE_ORIGINAL_VIDEO  = 10;         //原始视频
+        public static final int FLAG_TYPE_PRE_ORIGINAL_VIDEO = 11;      //已经预处理的原始视频
+        public static final int FLAG_TYPE_BLACK_PLATE  = 12;            //禁止名单图片
+        public static final int FLAG_TYPE_ORIGINAL_PIC = 13;            //原始图片
+        public static final int FLAG_TYPE_CARD = 14;                    //卡号录像
+        public static final int FLAG_TYPE_MAX  = 128;
+    }
+
+    // 交易类型
+    public static class EM_ATM_TRADE_TYPE extends SdkStructure
+    {
+        public static final int ATM_TRADE_ALL = 0;                      // 所有类型
+        public static final int ATM_TRADE_ENQUIRY  = 1;                 // 查询
+        public static final int ATM_TRADE_WITHDRAW = 2;                 // 取款
+        public static final int ATM_TRADE_MODIFY_PASSWORD = 3;          // 修改密码
+        public static final int ATM_TRADE_TRANSFER = 4;                 // 转账
+        public static final int ATM_TRADE_DEPOSIT  = 5;                 // 存款
+        public static final int ATM_TRADE_CARDLESS_ENQUIRY = 6;         // 无卡查询
+        public static final int ATM_TRADE_CARDLESS_DEPOSIT = 7;         // 无卡存款
+        public static final int ATM_TRADE_OTHER = 8;                    // 其他
+    }
+
+    // 查询结果排序方式
+    public static class EM_RESULT_ORDER_TYPE extends SdkStructure
+    {
+        public static final int EM_RESULT_ORDER_UNKNOWN = 0;            // 未知
+        public static final int EM_RESULT_ORDER_ASCENT_BYTIME  = 1;     // 按时间升序排序
+        public static final int EM_RESULT_ORDER_DESCENT_BYTIME = 2;     // 按时间降序排序
+    }
+
+    // CLIENT_ControlDevice 接口的 CTRLTYPE_CTRL_START_VIDEO_ANALYSE 命令参数, 开始视频智能分析
+    public static class NET_CTRL_START_VIDEO_ANALYSE extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nChannelId;             				// 通道号
+
+        public NET_CTRL_START_VIDEO_ANALYSE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ControlDevice 接口的 CTRLTYPE_CTRL_STOP_VIDEO_ANALYSE 命令参数, 停止视频智能分析
+    public static class NET_CTRL_STOP_VIDEO_ANALYSE extends SdkStructure
+    {
+        public int          	dwSize;
+        public int              nChannelId;             			  // 通道号
+
+        public NET_CTRL_STOP_VIDEO_ANALYSE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachVideoAnalyseState 接口输入参数
+    public static class NET_IN_ATTACH_VIDEOANALYSE_STATE extends SdkStructure
+    {
+        public int              	dwSize;
+        public int                  nChannleId;            			// 通道号
+        public Callback      cbVideoAnalyseState;   			// 视频分析状态回调函数,fVideoAnalyseState 回调
+        public Pointer              dwUser;                			// 用户信息
+
+        public NET_IN_ATTACH_VIDEOANALYSE_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachVideoAnalyseState 接口输出参数
+    public static class NET_OUT_ATTACH_VIDEOANALYSE_STATE extends SdkStructure
+    {
+        public int              	dwSize;
+        public LLong           		lAttachHandle;         			// 分析进度句柄,唯一标识某一通道的分析进度
+
+        public NET_OUT_ATTACH_VIDEOANALYSE_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_VIDEOANALYSE_STATE extends SdkStructure
+    {
+        public int            	   dwSize;
+        public int            	   dwProgress;                        			  // 分析进度,0-100
+        public byte[]              szState = new byte[NET_COMMON_STRING_64];      // 通道状态,Running":运行,"Stop":停止,"NoStart":未启动,"Failed":失败,"Successed":成功
+        public byte[]              szFailedCode = new byte[NET_COMMON_STRING_64]; // 错误码
+
+        public NET_VIDEOANALYSE_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 热成像火情事件信息上报事件, 对应事件  NET_ALARM_FIREWARNING_INFO // 热成像火情事件信息上报事件 #define DH_ALARM_FIREWARNING_INFO 0x31da // 热成像火情事件信息上报(对应结构体 ALARM_FIREWARNING_INFO_DETAIL)
+    public static class ALARM_FIREWARNING_INFO_DETAIL extends SdkStructure
+    {
+        public int                       nChannel;                                             // 对应视频通道号
+        public int                       nWarningInfoCount;                                    // 报警信息个数
+        public NET_FIREWARNING_INFO[]    stuFireWarningInfo
+                = new NET_FIREWARNING_INFO[MAX_FIREWARNING_INFO_NUM]; // 具体报警信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                    reserved = new byte[256];
+
+        public ALARM_FIREWARNING_INFO_DETAIL() {
+            for(int i = 0; i < stuFireWarningInfo.length; i++) {
+                stuFireWarningInfo[i] = new NET_FIREWARNING_INFO();
+            }
+        }
+    }
+
+    //热成像火情事件信息
+    public static class NET_FIREWARNING_INFO extends SdkStructure
+    {
+        public int                 nPresetId;                          // 预置点编号	从测温规则配置 CFG_RADIOMETRY_RULE_INFO 中选择
+        public NET_RECT            stuBoundingBox;                     // 着火点矩形框
+        public int                 nTemperatureUnit;                   // 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
+        public float               fTemperature;                       // 最高点温度值	同帧检测和差分检测提供
+        public int                 nDistance;                          // 着火点距离,单位米 0表示无效
+        public GPS_POINT           stuGpsPoint;                        // 着火点经纬度
+        public PTZ_POSITION_UNIT   stuPTZPosition;                     // 云台运行信息
+        public float               fAltitude;                          // 高度(单位:米)
+        public int                 nThermoHFOV;						   // Uint32 热成像横向视角
+        public int                 nThermoVFOV;						   // Uint32 热成像纵向视角
+        public int                 nFSID;						       // 火情编号ID
+        public NET_FIRING_GPS_INFO	stuFiringGPS;						// 着火点的GPS坐标
+        public byte[]               reserved=new byte[148];
+    }
+
+    // 着火点经纬度
+    public static class GPS_POINT extends SdkStructure
+    {
+        public int         		  dwLongitude;                         // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
+        public int         		  dwLatidude;                          // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
+        // 经纬度的具体转换方式可以参考结构体  NET_WIFI_GPS_INFO 中的注释
+    }
+
+    //云台控制坐标单元
+    public static class PTZ_POSITION_UNIT extends SdkStructure
+    {
+        public int                 nPositionX;                        // 云台水平方向角度,归一化到-1~1
+        public int                 nPositionY;                        // 云台垂直方向角度,归一化到-1~1
+        public int                 nZoom;                             // 云台光圈放大倍率,归一化到 0~1
+        public byte[]              szReserve = new byte[32];          // 预留32字节
+    }
+
+    // 搜索到的地点信息
+    public static class NET_WIFI_GPS_INFO extends SdkStructure
+    {
+        public int	 			  emPositioningResult;			      // 定位结果, 参考   NET_GPS_POSITION_RESULT
+        public int 				  nLongitude;				 		  // 经度(单位是百万分之一度)
+        // 西经:0 - 180000000				实际值应为: 180*1000000 – dwLongitude
+        // 东经:180000000 - 360000000		实际值应为: dwLongitude – 180*1000000
+        // 如: 300168866应为(300168866 - 180*1000000)/1000000 即东经120.168866度
+        public int				  nLatidude;				     	  // 纬度(单位是百万分之一度)
+        // 南纬:0 - 90000000				实际值应为: 90*1000000 – dwLatidude
+        // 北纬:90000000 – 180000000		实际值应为: dwLatidude – 90*1000000
+        // 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度
+        public int				  nSpeed;					 		  // 速度, 单位千分之一km/H
+        public byte[]			  reserved = new byte[112];	 		  // 保留字段
+    }
+
+    // 定位结果
+    public static class NET_GPS_POSITION_RESULT extends SdkStructure
+    {
+        public static final int NET_GPS_POSITION_RESULT_UNKNOWN = 0;  // 未知
+        public static final int NET_GPS_POSITION_RESULT_FAILED = 1;	  // 有GPS数据,但定位失败,此时定位数据无意义
+        public static final int NET_GPS_POSITION_RESULT_SUCCEED = 2;  // 有GPS数据,且定位成功,此时定位数据有意义
+    }
+
+    // 热成像增益模式
+    public static class CFG_THERMO_GAIN_MODE extends SdkStructure
+    {
+        public static final int CFG_THERMO_GAIN_MODE_UNKNOWN = 0;
+        public static final int CFG_THERMO_GAIN_MODE_HIGHTEMP = 1;	// 温度异常
+        public static final int CFG_THERMO_GAIN_MODE_LOWTEMP = 2;	// 温度异常
+        public static final int CFG_THERMO_GAIN_MODE_AUTO = 3;		// 自动
+    }
+
+    // 热成像自动增益设置
+    public static class CFG_THERMO_AUTO_GAIN extends SdkStructure
+    {
+        public int                         nLowToHigh;             // 温度超过此设定值时,自动切换到高的温度模式
+        public int                         nLHROI;                 // 由低的温度切换到高的温度时的ROI 百分比0~100
+        public int                         nHighToLow;             // 温度下降到此设定值时,自动切换到低的温度模式
+        public int                         nHLROI;             	   // 由高的温度切换到低的温度时的ROI 百分比0~100
+    }
+
+    // 热成像配置,单个模式的配置
+    public static class CFG_THERMOGRAPHY_OPTION extends SdkStructure
+    {
+        public int                         nEZoom;                 // 倍数
+        public int                         nThermographyGamma;     // 伽马值
+        public int                         nColorization;	       // 伪彩色,见 NET_THERMO_COLORIZATION
+        public int                         nSmartOptimizer;        // 智能场景优化指数 0 ~100, 具体取值范围由能力决定
+        public int                         bOptimizedRegion;       // 是否开启感兴趣区域,只有感兴趣区域内的信息会被纳入统计用来做自动亮度调整(AGC)
+        public int                         nOptimizedROIType;      // 感兴趣区域类型,见 NET_THERMO_ROI
+        public int                         nCustomRegion;          // 自定义区域个数
+        public CFG_RECT[]                  stCustomRegions = (CFG_RECT[])new CFG_RECT().toArray(64);    // 自定义区域,仅在 nOptimizedROIType 为 NET_THERMO_ROI_CUSTOM 时有效
+        public byte[]                      Reserved = new byte[256];          // 此保留字段确保此结构布局与 NET_THERMO_GRAPHY_INFO 相同
+        public int                         nAgc;                   // 自动增益控制 [0-255]具体取值范围由能力决定
+        public int                         nAgcMaxGain;            // 最大自动增益 [0-255]具体取值范围由能力决定
+        public int                         nAgcPlateau;            // 增益均衡 具体取值范围由能力决定
+        public int                         nGainMode;              // 增益模式,参见 CFG_THERMO_GAIN_MODE
+        public CFG_THERMO_AUTO_GAIN        stAutoGain;             // 自动增益设置,只在增益模式为 CFG_THERMO_GAIN_MODE_AUTO 有效
+        public CFG_THERMO_GAIN             stuHighTempGain;        // 高的温度下的增益设置
+        public int                         nBaseBrightness;        // 基准亮度
+        public int                         nStretchIntensity;      // 拉伸强度
+        public CFG_RECT                    stuContrastRect;        // 区域增强位置,增加本区域与周边的对比度,8192坐标系
+    }
+
+    // 热成像配置
+    public static class CFG_THERMOGRAPHY_INFO extends SdkStructure
+    {
+        public int                         nModeCount;             // 模式个数,目前只有一个
+        public CFG_THERMOGRAPHY_OPTION[]   stOptions = new CFG_THERMOGRAPHY_OPTION[16]; // 对应不同模式的配置
+
+        public CFG_THERMOGRAPHY_INFO() {
+            for(int i = 0; i < stOptions.length; i++) {
+                stOptions[i] = new CFG_THERMOGRAPHY_OPTION();
+            }
+        }
+    }
+
+    // 温度单位
+    public static class NET_TEMPERATURE_UNIT extends SdkStructure
+    {
+        public static final int NET_TEMPERATURE_UNIT_UNKNOWN = 0;
+        public static final int NET_TEMPERATURE_UNIT_CENTIGRADE = 1;  // 摄氏度
+        public static final int NET_TEMPERATURE_UNIT_FAHRENHEIT = 2;  // 华氏度
+    }
+
+    // 测温规则配置结构, 对应命令  CFG_CMD_THERMOMETRY_RULE
+    public static class CFG_RADIOMETRY_RULE_INFO extends SdkStructure
+    {
+        public int                         nCount;                 				  // 规则个数
+        public CFG_RADIOMETRY_RULE[]       stRule = new CFG_RADIOMETRY_RULE[512]; // 测温规则
+        public CFG_RADIOMETRY_RULE_EX[]    stRuleEx = new CFG_RADIOMETRY_RULE_EX[512]; //测温规则-扩展新增的字段
+
+        public CFG_RADIOMETRY_RULE_INFO() {
+            for(int i = 0; i < stRule.length; i++) {
+                stRule[i] = new CFG_RADIOMETRY_RULE();
+            }
+        }
+    }
+
+    // 区域测温的子类型
+    public static class EM_CFG_AREA_SUBTYPE extends SdkStructure
+    {
+        public static final int EM_CFG_AREA_SUBTYPE_UNKNOWN = 0;
+        public static final int EM_CFG_AREA_SUBTYPE_RECT = 1;		// 矩形
+        public static final int EM_CFG_AREA_SUBTYPE_ELLIPSE = 2;	// 椭圆
+        public static final int EM_CFG_AREA_SUBTYPE_POLYGON = 3;	// 多边形
+    }
+
+    // 测温规则
+    public static class CFG_RADIOMETRY_RULE extends SdkStructure
+    {
+        public int                            bEnable;                // 测温使能, BOOL类型
+        public int                            nPresetId;              // 预置点编号
+        public int                            nRuleId;                // 规则编号
+        public byte[]                         szName = new byte[128]; // 自定义名称
+        public int                            nMeterType;             // 测温模式的类型,见 NET_RADIOMETRY_METERTYPE
+        public CFG_POLYGON[]                  stCoordinates = new CFG_POLYGON[64];      // 测温点坐标	使用相对坐标体系,取值均为0~8191
+        public int                         	  nCoordinateCnt;         // 测温点坐标实际个数
+        public int                            nSamplePeriod;          // 温度采样周期	单位 : 秒
+        public CFG_RADIOMETRY_ALARMSETTING[]  stAlarmSetting = new CFG_RADIOMETRY_ALARMSETTING[64];     // 测温点报警设置
+        public int                            nAlarmSettingCnt;       // 测温点报警设置实际个数
+        public CFG_RADIOMETRY_LOCALPARAM      stLocalParameters;      // 本地参数配置
+        public int							  emAreaSubType;		  // 区域测温的子类型, 见EM_CFG_AREA_SUBTYPE
+        public CFG_RADIOMETRY_RULE() {
+            for(int i = 0; i < stCoordinates.length; i++) {
+                stCoordinates[i] = new CFG_POLYGON();
+            }
+
+            for(int i = 0; i < stAlarmSetting.length; i++) {
+                stAlarmSetting[i] = new CFG_RADIOMETRY_ALARMSETTING();
+            }
+        }
+    }
+
+    // 温度统计
+    public static class CFG_TEMP_STATISTICS extends SdkStructure
+    {
+        public int                        bEnable;                // 是否开启温度统计
+        public byte[]                     szName = new byte[128]; // 测温项的名字
+        public int                        nMeterType;             // 测温模式的类型,见 NET_RADIOMETRY_METERTYPE
+        public int                        nPeriod;                // 保存温度数据周期
+    }
+
+    // 温度统计配置结构
+    public static class CFG_TEMP_STATISTICS_INFO extends SdkStructure
+    {
+        public int                         nCount;                 // 个数
+        public CFG_TEMP_STATISTICS[]       stStatistics = new CFG_TEMP_STATISTICS[64]; // 温度统计
+
+        public CFG_TEMP_STATISTICS_INFO() {
+            for(int i = 0; i < stStatistics.length; i++) {
+                stStatistics[i] = new CFG_TEMP_STATISTICS();
+            }
+        }
+    }
+
+    // 温度单位
+    public static class CFG_TEMPERATURE_UNIT extends SdkStructure
+    {
+        public static final int TEMPERATURE_UNIT_UNKNOWN = 0;
+        public static final int TEMPERATURE_UNIT_CENTIGRADE = 1;	// 摄氏度
+        public static final int TEMPERATURE_UNIT_FAHRENHEIT = 2;	// 华氏度
+    }
+
+    // 热成像测温全局配置
+    public static class CFG_THERMOMETRY_INFO extends SdkStructure
+    {
+        public int                         nRelativeHumidity;          // 相对湿度
+        public float                       fAtmosphericTemperature;    // 大气温度
+        public float                       fObjectEmissivity;          // 物体辐射系数
+        public int                         nObjectDistance;            // 物体距离
+        public float                       fReflectedTemperature;      // 物体反射温度
+        public int                         nTemperatureUnit;           // 温度单位,见 TEMPERATURE_UNIT
+        public int                         bIsothermEnable;            // 色标功能使能
+        public int                         nMinLimitTemp;              // 等温线下限温度值
+        public int                         nMediumTemp;                // 等温线中位温度值
+        public int                         nMaxLimitTemp;              // 等温线上限温度值
+        public int                         nSaturationTemp;            // 等温线饱和温度值
+        public CFG_RECT                    stIsothermRect;             // 色温条矩形区域(OSD 位置),使用相对坐标体系,取值均为0-8191
+        public int                         bColorBarDisplay;           // 是否显示色标条(OSD 叠加)
+        public int                         bHotSpotFollow;             // 是否开启热点探测追踪使能
+        public int                         bTemperEnable;              // 测温开关
+        public CFG_RGBA                    stHighCTMakerColor;         // 高色温标注颜色
+        public CFG_RGBA                    stLowCTMakerColor;          // 低色温标注颜色
+    }
+
+    // 测温点报警设置
+    public static class CFG_RADIOMETRY_ALARMSETTING extends SdkStructure
+    {
+        public int                         nId;                    // 报警唯一编号	报警编号统一编码
+        public int                         bEnable;                // 是否开启该点报警, BOOL类型
+        public int                         nResultType;            // 测温报警结果类型,见 CFG_STATISTIC_TYPE,可取值:
+        // 点测温:具体值,
+        // 线测温:最大, 最小, 平均
+        // 区域测温:最大, 最小, 平均, 标准, 中间, ISO
+        public int                         nAlarmCondition;        // 报警条件,见 CFG_COMPARE_RESULT
+        public float                       fThreshold;             // 报警阈值温度	浮点数
+        public float                       fHysteresis;            // 温度误差,浮点数,比如0.1 表示正负误差在0.1范围内
+        public int                         nDuration;              // 阈值温度持续时间	单位:秒
+    }
+
+    // 测温规则本地参数配置
+    public static class CFG_RADIOMETRY_LOCALPARAM extends SdkStructure
+    {
+        public int                         bEnable;                // 是否启用本地配置, BOOL类型
+        public float                       fObjectEmissivity;      // 目标辐射系数	浮点数 0~1
+        public int                         nObjectDistance;        // 目标距离
+        public int                         nRefalectedTemp;        // 目标反射温度
+    }
+
+    // 通道录像组状态
+    public static class CFG_DEVRECORD_INFO extends SdkStructure
+    {
+        public byte[]                   szDevName = new byte[MAX_NAME_LEN];               // 设备名称
+        public byte[]                   szIP = new byte[MAX_ADDRESS_LEN];                 // 设备IP
+        public byte[]                   szChannel = new byte[MAX_NAME_LEN];               // 通道号
+        public byte[]                   szChannelName = new byte[MAX_NAME_LEN];           // 通道名称
+        public byte[]                   szStoragePosition = new byte[MAX_NAME_LEN];       // 存储位置信息
+        public byte                   	byStatus;                              			  // 状态 0:未知 1:录像 2:停止
+        public byte[]                   byReserved = new byte[3];                         // 字节对齐
+    }
+
+    public static class CFG_DEVRECORDGROUP_INFO extends SdkStructure
+    {
+        public int                    nChannelNum;                          // 通道个数
+        public CFG_DEVRECORD_INFO[]   stuDevRecordInfo = (CFG_DEVRECORD_INFO[])new CFG_DEVRECORD_INFO().toArray(MAX_CHAN_NUM);       // 通道录像状态信息
+    }
+
+    // 存储组通道相关配置
+    public static class AV_CFG_StorageGroupChannel extends SdkStructure
+    {
+        public int			nStructSize;
+        public int			nMaxPictures;					// 每个通道文件夹图片存储上限, 超过就覆盖
+        public byte[]		szPath = new byte[AV_CFG_Max_ChannelRule];	// 通道在命名规则里的字符串表示, %c对应的内容
+
+        public AV_CFG_StorageGroupChannel() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    public static class DEVICE_NAME extends SdkStructure
+    {
+        public byte[]    szDeviceName = new byte[MAX_DEVICE_NAME_LEN];	// 历史SSID
+    }
+
+    // 存储组配置
+    public static class AV_CFG_StorageGroup extends SdkStructure
+    {
+        public int							nStructSize;
+        public byte[]						szName = new byte[AV_CFG_Group_Name_Len];	// 分组名称
+        public byte[]						szMemo = new byte[AV_CFG_Group_Memo_Len];	// 分组说明
+        public int							nFileHoldTime;								// 文件保留时间
+        public int							bOverWrite;									// 存储空间满是否覆盖
+        public byte[]						szRecordPathRule = new byte[AV_CFG_Max_Path];	// 录像文件路径命名规则
+        public byte[]						szPicturePathRule = new byte[AV_CFG_Max_Path];	// 图片文件路径命名规则 %y年, %M月, %d日, %h时, %m分, %s秒, %c通道路径
+        // 如果年月日时分秒出现两次, 第一次表示开始时间, 第二次表示结束时间
+        public AV_CFG_StorageGroupChannel[]	stuChannels = new AV_CFG_StorageGroupChannel[AV_CFG_Max_Channel_Num];// 通道相关配置
+        public int							nChannelCount;				       								 // 通道配置数
+        public byte[]                		szCustomName = new byte[AV_CFG_Group_Name_Len];        			// 自定义名称,若为空使用szName
+        public DEVICE_NAME[]                szSubDevices = new DEVICE_NAME[MAX_DEV_NUM];     // 子设备列表
+        public int            				nSubDevices;                        // 子设备数量
+
+        public AV_CFG_StorageGroup() {
+            this.nStructSize = this.size();
+
+            for (int i = 0; i < stuChannels.length; ++i) {
+                stuChannels[i] = new AV_CFG_StorageGroupChannel();
+            }
+
+            for (int i = 0; i < szSubDevices.length; ++i) {
+                szSubDevices[i] = new DEVICE_NAME();
+            }
+        }
+    };
+
+    // 巡航路径中的预置点
+    public static class CFG_PTZTOUR_PRESET extends SdkStructure
+    {
+        public int             nPresetID;              // 预置点编号
+        public int             nDuration;              // 在改预置点的停留时间, 单位秒
+        public int             nSpeed;                 // 到达该预置点的转动速度, 1~10
+        public int             bEnable;                // 预置点聚焦使能,0为不使能,1为使能
+    }
+
+    // 巡航路径
+    public static class CFG_PTZTOUR_SINGLE extends SdkStructure
+    {
+        public int                         bEnable;                                    // 使能
+        public byte[]                      szName = new byte[CFG_COMMON_STRING_64];               // 名称
+        public int                         nPresetsNum;                                // 预置点数量
+        public CFG_PTZTOUR_PRESET[]        stPresets = new CFG_PTZTOUR_PRESET[CFG_MAX_PTZTOUR_PRESET_NUM];      // 该路径包含的预置点参数
+
+        public CFG_PTZTOUR_SINGLE() {
+            for (int i = 0; i < stPresets.length; ++i) {
+                stPresets[i] = new CFG_PTZTOUR_PRESET();
+            }
+        }
+    }
+
+    // 云台巡航路径配置
+    public static class CFG_PTZTOUR_INFO extends SdkStructure
+    {
+        public int                         nCount;                                     // 巡航路径数量
+        public CFG_PTZTOUR_SINGLE[]        stTours = new CFG_PTZTOUR_SINGLE[CFG_MAX_PTZTOUR_NUM];               // 巡航路径, 每个通道包含多条巡航路径
+
+        public CFG_PTZTOUR_INFO() {
+            for (int i = 0; i < stTours.length; ++i) {
+                stTours[i] = new CFG_PTZTOUR_SINGLE();
+            }
+        }
+    }
+
+
+    // 云台控制坐标单元
+    public static class CFG_PTZ_SPACE_UNIT extends SdkStructure
+    {
+        public int                 nPositionX;           //云台水平运动位置,有效范围:[0,3600]
+        public int                 nPositionY;           //云台垂直运动位置,有效范围:[-1800,1800]
+        public int                 nZoom;                //云台光圈变动位置,有效范围:[0,128]
+    }
+
+    // 云台控制预置点结构
+    public static class PTZ_PRESET extends SdkStructure
+    {
+        public int                 bEnable;                             			// 该预置点是否生效
+        public byte[]              szName = new byte[MAX_PTZ_PRESET_NAME_LEN];      // 预置点名称
+        public CFG_PTZ_SPACE_UNIT  stPosition;                          		    // 预置点的坐标和放大倍数
+    }
+
+    // 云台预置点配置对应结构
+    public static class PTZ_PRESET_INFO extends SdkStructure
+    {
+        public int              dwMaxPtzPresetNum;                     // 最大预置点个数
+        public int              dwRetPtzPresetNum;                     // 实际使用预置点个数
+        public Pointer          pstPtzPreset;                          // 预置点信息(根据最大个数申请内存,大小sizeof(PTZ_PRESET)*dwMaxPtzPresetNum)
+    }
+
+    // 统计量类型
+    public static class CFG_STATISTIC_TYPE extends SdkStructure
+    {
+        public static final int CFG_STATISTIC_TYPE_UNKNOWN = 0;
+        public static final int CFG_STATISTIC_TYPE_VAL = 1; 	   // 具体值
+        public static final int CFG_STATISTIC_TYPE_MAX = 2; 	   // 最大
+        public static final int CFG_STATISTIC_TYPE_MIN = 3; 	   // 最小
+        public static final int CFG_STATISTIC_TYPE_AVR = 4; 	   // 平均
+        public static final int CFG_STATISTIC_TYPE_STD = 5; 	   // 标准
+        public static final int CFG_STATISTIC_TYPE_MID = 6; 	   // 中间
+        public static final int CFG_STATISTIC_TYPE_ISO = 7; 	   // ISO
+    }
+
+    // 比较运算结果
+    public static class CFG_COMPARE_RESULT extends SdkStructure
+    {
+        public static final int CFG_COMPARE_RESULT_UNKNOWN = 0;
+        public static final int CFG_COMPARE_RESULT_BELOW = 1; 	  // 低于
+        public static final int CFG_COMPARE_RESULT_MATCH = 2; 	  // 匹配
+        public static final int CFG_COMPARE_RESULT_ABOVE = 3; 	  // 高于
+    }
+
+    // 记录集新增操作(insert)参数
+    public static class NET_CTRL_RECORDSET_INSERT_PARAM extends SdkStructure
+    {
+        public int                             dwSize;
+        public NET_CTRL_RECORDSET_INSERT_IN    stuCtrlRecordSetInfo;       // 记录集信息(用户填写)
+        public NET_CTRL_RECORDSET_INSERT_OUT   stuCtrlRecordSetResult;     // 记录集信息(设备返回)
+
+        public NET_CTRL_RECORDSET_INSERT_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 记录集新增操作(insert)输入参数
+    public static class NET_CTRL_RECORDSET_INSERT_IN extends SdkStructure
+    {
+        public int          		 dwSize;
+        public int 	 				 emType;                             // 记录集信息类型, 取值参考  EM_NET_RECORD_TYPE
+        public Pointer          	 pBuf;                               // 记录集信息缓存,详见EM_NET_RECORD_TYPE注释,由用户申请内存.
+        public int             		 nBufLen;                            // 记录集信息缓存大小,大小参照记录集信息类型对应的结构体
+
+        public NET_CTRL_RECORDSET_INSERT_IN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 记录集新增操作(insert)输出参数
+    public static class NET_CTRL_RECORDSET_INSERT_OUT extends SdkStructure
+    {
+        public int           		dwSize;
+        public int             		nRecNo;                             // 记录编号(新增insert时设备返回)
+
+        public NET_CTRL_RECORDSET_INSERT_OUT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁密码记录查询条件
+    public static class FIND_RECORD_ACCESSCTLPWD_CONDITION extends SdkStructure
+    {
+        public int                     dwSize;
+        public byte[]                  szUserID = new byte[NET_MAX_USERID_LEN];      // 用户ID
+
+        public FIND_RECORD_ACCESSCTLPWD_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁密码记录集信息
+    public static class NET_RECORDSET_ACCESS_CTL_PWD extends SdkStructure
+    {
+        public int           		  dwSize;
+        public int             		  nRecNo;                                 		      // 记录集编号,只读
+        public NET_TIME        		  stuCreateTime;                          			  // 创建时间
+        public byte[]            	  szUserID = new byte[NET_MAX_USERID_LEN];            // 用户ID, 设备暂不支持
+        public byte[]            	  szDoorOpenPwd = new byte[NET_MAX_CARDPWD_LEN];      // 开门密码
+        public byte[]            	  szAlarmPwd = new byte[NET_MAX_CARDPWD_LEN];         // 报警密码
+        public int             		  nDoorNum;                               			  // 有效的的门数目
+        public int[]             	  sznDoors = new int[NET_MAX_DOOR_NUM];               // 有权限的门序号,即 CFG_CMD_ACCESS_EVENT 配置CFG_ACCESS_EVENT_INFO的数组下标
+        public byte[]            	  szVTOPosition = new byte[NET_COMMON_STRING_64];     // 门口机关联位置
+        public int             		  nTimeSectionNum;                        			  // 开门时间段个数
+        public int[]                  nTimeSectionIndex = new int[NET_MAX_TIMESECTION_NUM];  // 开门时间段索引,是个数组,每个元素与sznDoors中的门对应
+        public int             		  bNewDoor;                               			  // BOOL类型, 是否启动新开门授权字段,TRUE表示使用 nNewDoorNum 和 nNewDoors 字段下发开门权限
+        public int             		  nNewDoorNum;                            			  // 有效的门数目;
+        public int[]                  nNewDoors = new int[MAX_ACCESSDOOR_NUM];            // 有权限的门序号,即 CFG_CMD_ACCESS_EVENT 配置的数组下标
+        public int             		  nNewTimeSectionNum;                    			  // 有效的的开门时间段数目
+        public int[]             	  nNewTimeSectionNo = new int[MAX_ACCESSDOOR_NUM];    // 开门时间段索引,即 CFG_ACCESS_TIMESCHEDULE_INFO 的数组下标
+        public NET_TIME        		  stuValidStartTime;                      			  // 开始有效期
+        public NET_TIME        		  stuValidEndTime;                       			  // 结束有效期
+        public int        		      nValidCounts;							              // 有效次数
+        public byte[] 			szCitizenIDNo=new byte[20];						// 证件号码
+        public NET_RECORDSET_ACCESS_CTL_PWD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开门二维码记录集信息
+    public static class NET_RECORD_ACCESSQRCODE_INFO extends SdkStructure
+    {
+        public int                     dwSize;                                   // 结构体大小
+        public int                     nRecNo;                                   // 记录集编号,只读
+        public byte[]				   szQRCode = new byte[NET_MAX_QRCODE_LEN];  // 二维码
+        public int					   nLeftTimes;                               // 剩余的有效次数
+        public NET_TIME        		   stuStartTime;                             // 有效期开始时间
+        public NET_TIME        		   stuEndTime;                               // 有效期截止时间
+        public byte[]                  szRoomNumber = new byte[16];              // 房间号
+        public byte[]                  szUserID=new byte[32];					// 用户ID
+        public NET_RECORD_ACCESSQRCODE_INFO(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // 查询盒子工作状态, 对应命令  NET_DEVSTATE_GET_WORK_STATE
+    public static class NET_QUERY_WORK_STATE extends SdkStructure
+    {
+        public int                    dwSize;                            // 保留字段
+        public NET_WORKSTATE          stuWorkState;                      // 运行状态
+
+        public NET_QUERY_WORK_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备工作状态
+    public static class NET_WORKSTATE extends SdkStructure
+    {
+        public int                     bOnline;                           // 设备是否在线,BOOL类型
+        public byte[]                  szFirmwareVersion = new byte[NET_COMMON_STRING_128];  // 固件版本号
+        public float                   fTemperature;                      // 温度值, 单位摄氏度
+        public float                   fPowerDissipation;                 // 功耗, 单位W
+        public int                     nUtilizationOfCPU;                 // CPU 使用率
+        public int                     nStorageNum;                       // 存储设备个数
+        public NET_STORAGE_INFO[]      stuStorages = new NET_STORAGE_INFO[MAX_STORAGE_NUM];      // 存储设备信息
+        public int					   nUpTimeLast;						 // 上次上电时间, 单位: 秒
+        public int					   nUpTimeTotal;				     // 总共上电时间, 单位: 秒
+        public double				   dbMemInfoTotal;					 // 总内存大小, 单位: 字节
+        public double				   dbMemInfoFree;				     // 剩余内存大小, 单位: 字节
+        public byte[]				   byReserved1 = new byte[4];	     // 字节对齐,非保留字节
+        public byte[]				   szDevType = new byte[32];		 // 设备型号
+        public NET_RESOURCE_STATE	   stuResourceStat;					 // 网络资源
+        public byte[]                  byReserved = new byte[8];         // 保留字节
+
+        public NET_WORKSTATE() {
+            for(int i = 0; i < MAX_STORAGE_NUM; i++) {
+                stuStorages[i] = new NET_STORAGE_INFO();
+            }
+        }
+    }
+
+    // 存储设备信息
+    public static class NET_STORAGE_INFO extends SdkStructure
+    {
+        public int      			    emState;                           // 存储设备状态, ENUM_STORAGE_STATE
+        public int                      nPartitonNum;                      // 分区个数
+        public NET_PARTITION_INFO[]     stuPartions = new NET_PARTITION_INFO[MAX_PARTITION_NUM];    // 分区信息
+        public byte[]                   byReserved = new byte[128];                   // 保留字段
+
+        public NET_STORAGE_INFO() {
+            for(int i = 0; i < MAX_PARTITION_NUM; i++) {
+                stuPartions[i] = new NET_PARTITION_INFO();
+            }
+        }
+    }
+
+    // 网络资源
+    public static class NET_RESOURCE_STATE extends SdkStructure
+    {
+        public int						nIPChanneIn;					// IP通道接入速度, 单位: kbps
+        public int						nNetRemain;						// 网络接收剩余能力, 单位: kbps
+        public int						nNetCapability;					// 网络接收总能力, 单位: kbps
+        public int						nRemotePreview;					// 远程预览能力, 单位: kbps
+        public int						nRmtPlayDownload;				// 远程回放及下载能力, 单位: kbps
+        public int						nRemoteSendRemain;				// 远程发送剩余能力, 单位: kbps
+        public int						nRemoteSendCapability;			// 远程发送总能力, 单位: kbps
+        public byte[]                   byReserved = new byte[32];      // 保留字节
+    }
+
+    // 存储设备分区信息
+    public static class NET_PARTITION_INFO extends SdkStructure
+    {
+        public double                    dbTotalBytes;                   // 分区总空间
+        public double                    dbUsedBytes;                    // 分区使用的空间
+        public int                       bError;                         // 是否异常, BOOL类型
+        public byte[]                    byReserved = new byte[64];      // 保留字段
+    }
+
+    // CLIENT_GetSelfCheckInfo 输入参数
+    public static class NET_IN_GET_SELTCHECK_INFO extends SdkStructure
+    {
+        public int               		dwSize;                  				// 用户使用该结构体时,dwSize 需赋值为 sizeof (NET_IN_GET_SELTCHECK_INFO)
+
+        public NET_IN_GET_SELTCHECK_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备自检信息
+    public static class NET_SELFCHECK_INFO extends SdkStructure
+    {
+        public int             		  dwSize;
+        public int               	  nAlarmIn;                 // 报警输入通道数
+        public int               	  nAlarmOut;                // 报警输出通道数
+        public NET_TIME          	  stuTime;                  // 上报时间
+        public byte[]                 szPlateNo = new byte[NET_MAX_PLATE_NUMBER_LEN]; // 车牌
+        public byte[]                 szICCID = new byte[NET_MAX_SIM_LEN];  // SIM卡号,建议使用szICCIDExInfo字段
+        public byte              	  byOrientation;            // 定位状态,0-未定位,1-定位
+        public byte              	  byACCState;               // ACC 状态,0-关闭,1-打开
+        public byte               	  byConstantElecState;      // 常电状态,0-正常连接,1-断开,2-欠压,3-高压
+        public byte              	  byAntennaState;           // 通信信号状态,0-正常,1-未知故障,2-未接,3-短路
+
+        // 外部设备状态
+        public byte              	  byReportStation;          // 报站器状态,0-未接,1-正常,2-异常
+        public byte              	  byControlScreen;          // 调度屏状态,0-未接,1-正常,2-异常
+        public byte              	  byPOS;                    // POS机状态,0-未接,1-正常,2-异常
+        public byte              	  byCoinBox;                // 投币箱状态,0-未接,1-正常,2-异常
+
+        // 能力集
+        public int              	  bTimerSnap;               // 定时抓图,TRUE-支持,FALSE-不支持, BOOL类型
+        public int              	  bElectronEnclosure;       // 电子围栏,TRUE-支持,FALSE-不支持, BOOL类型
+        public int              	  bTeleUpgrade;             // 远程升级,TRUE-支持,FALSE-不支持, BOOL类型
+        
+        public NET_HDD_STATE[]        stuHddStates = new NET_HDD_STATE[NET_MAX_DISKNUM]; // 硬盘状态
+        public int               	  nHddNum;                  // 硬盘个数
+
+        public Pointer 				  pChannleState;           // 通道状态,是一个 NET_CHANNLE_STATE 数组,
+        // CLIENT_AttachMission接口,NET_MISSION_TYPE_SELFCHECK类型,回调函数,内存由SDK申请,SDK释放
+        // CLIENT_GetSelfCheckInfo接口,出参,内存由用户申请,用户释放,大小为sizeof(NET_CHANNLE_STATE)*nChannelMax
+        public int               	  nChannleNum;             // 实际上报的通道个数
+        public int               	  nChannelMax;             // CLIENT_GetSelfCheckInfo接口,pChannleState内存的最大NET_CHANNLE_STATE个数
+        public int         			  emConnState;             // PAD/DVR连接状态, 参考 NET_PAD_CONNECT_STATE
+        public int                    emHomeState;             // Home键状态, 参考  NET_HOME_STATE
+        public byte[]              	  szICCIDExInfo = new byte[NET_COMMON_STRING_256];  // SIM卡号扩展信息,用于字段扩展使用
+        public byte              	  by3GState;                // 3G/4G状态, 0-未连接,1-连接,2-模块未找到
+        public byte              	  byWifiState;              // Wifi状态, 0-未连接,1-连接,2-模块未找到
+        public byte             	  byGpsState;               // Gps状态, 0-未连接,1-连接,2-模块未找到
+        public byte              	  byBlackBoxState;          // BlackBox状态, 0-未接,1-正常
+        public int               	  nCpuUsage;                // CPU使用百分比, 单位%
+        public int               	  nTemperature;             // 设备内部温度, 摄氏度
+        public byte[]			  szVendor=new byte[32];				// 生产厂商
+        public byte[]			  szFirmwareVersion=new byte[128];	// 设备程序版本,是一个字符数组
+        public byte[]			  szSecurityBaseLineVersion=new byte[8];  // 安全基线版本
+        public NET_GPS_STATUS_INFO	  stuGPSStatusInfo;			// GPS状态信息
+        public byte[]			  szNetworkOperName=new byte[32];			// 4G运营商网络信息,需要向sim卡提供方获取
+        public int		emEmergencyStatus;				// 紧急报警状态,EM_EMERGENCYSTATUS_TYPE
+        public int	emTamperAletStatus;				// 设备锁状态,EM_TAMPERALTERSTATUS_TYPE
+        public byte[]			  szImei=new byte[16];						// 国际移动设备辨识码15位数字标识
+        public int			  nGSMsignalStrength;				// 3G信号强度0 - 31
+        public int			  nMcc;							// 移动信号所属国家码
+        public int			  nMnc;							// 移动网络号码,用于识别移动客户所属的移动网络,2~3位数字组成
+        public int			  nLAC;							// 位置区码 (移动通信系统中),是为寻呼而设置的一个区域,覆盖一片地理区域,初期一般按行政区域划分(一个县或一个区),现在很灵活了,按寻呼量划分
+        public int			  nCi;							// 小区识别码,三种主要的基于位置服务(LBS)技术之一。小区识别码通过识别网络中哪一个小区传输用户呼叫并将该信息翻译成纬度和经度来确定用户位置
+        public int				  nAlarmInStatusNum;				// IO报警输入状态个数
+        public int[]				  nAlarmInStatus=new int[32];				// IO报警输入状态列表一维数组,每个成员表示对应的通道报警输入状态(0=Off; 1 =On)
+        public int				  nAlarmOutStatusNum;				// IO报警输出状态个数
+        public int[]				  nAlarmOutStatus=new int[32];			// IO报警输出状态列表一维数组,每个成员表示对应的通道报警输出状态(0=Off; 1 =On)
+        public byte[]			  szMasterSvrAddr=new byte[128];			// 主服务器地址,IPv4格式为点分十进制,IPv6格式为x:x:x:x:x:x:x:x,其中x是16位的十六进制值
+        public byte[]			  szSlaveSvrAddr=new byte[128];			// 从服务器地址,IPv4格式为点分十进制,IPv6格式为x:x:x:x:x:x:x:x,其中x是16位的十六进制值
+        public byte[]			  szSerialNo=new byte[48];					// 设备序列号
+        public int                emSignalStrength;   // GPS 模块信号强度,参考枚举EM_GPS_SIGNAL_STRENGTH_TYPE
+        public int                emDataType;         // 事件数据类型,参考枚举EM_SELFCHECK_DATA_TYPE        
+
+        public NET_SELFCHECK_INFO() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < NET_MAX_DISKNUM; i++) {
+                stuHddStates[i] = new NET_HDD_STATE();
+            }
+        }
+    }
+
+    // 硬盘状态
+    public static class NET_HDD_STATE extends SdkStructure
+    {
+        public int             		  dwSize;
+        public int               	  nState;                   // 硬盘状态,0-正常,1-错误
+        public double            	  dbTotalSize;              // 硬盘总容量,字节为单位
+        public NET_PARTITION_STATE[]  stuPartitions = new NET_PARTITION_STATE[NET_MAX_STORAGE_PARTITION_NUM]; // 分区状态
+        public int               	  nPartitionNum;            // 分区数
+
+        public NET_HDD_STATE() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < NET_MAX_STORAGE_PARTITION_NUM; i++) {
+                stuPartitions[i] = new NET_PARTITION_STATE();
+            }
+        }
+    }
+
+    // 分区状态
+    public static class NET_PARTITION_STATE extends SdkStructure
+    {
+        public int             		 dwSize;
+        public int               	 nStatus;                  // 分区状态,0-正常,1-错误
+        public double            	 dbTotalSize;              // 分区总容量,字节为单位
+        public double            	 dbRemainSize;             // 剩余容量,字节为单位
+
+        public NET_PARTITION_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 录像状态详细信息
+    public static class NET_RECORD_STATE_DETAIL extends SdkStructure
+    {
+        public int                    dwSize;
+        public int                    bMainStream;            // 主码流, TRUE-正在录像, FALSE-没在录像
+        public int                    bExtraStream1;          // 辅码流1, TRUE-正在录像, FALSE-没在录像
+        public int                    bExtraStream2;          // 辅码流2, TRUE-正在录像, FALSE-没在录像
+        public int                    bExtraStream3;          // 辅码流3, TRUE-正在录像, FALSE-没在录像
+
+        public NET_RECORD_STATE_DETAIL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 硬盘信息
+    public static class NET_DEV_DISKSTATE extends SdkStructure
+    {
+        public int                dwVolume;                           // 硬盘的容量, 单位MB(B表示字节)
+        public int                dwFreeSpace;                        // 硬盘的剩余空间, 单位MB(B表示字节)
+        public byte               dwStatus;                           // 高四位的值表示硬盘类型,具体见枚举类型EM_DISK_TYPE;低四位的值表示硬盘的状态,0-休眠,1-活动,2-故障等;将DWORD拆成四个BYTE
+        public byte               bDiskNum;                           // 硬盘号
+        public byte               bSubareaNum;                        // 分区号
+        public byte               bSignal;                            // 标识,0为本地 1为远程
+    }
+
+    // 设备硬盘信息
+    public static class NET_DEV_HARDDISK_STATE extends SdkStructure
+    {
+        public int                		dwDiskNum;                         				  // 个数
+        public NET_DEV_DISKSTATE[]      stDisks = new NET_DEV_DISKSTATE[NET_MAX_DISKNUM]; // 硬盘或分区信息
+
+        public NET_DEV_HARDDISK_STATE() {
+            for(int i = 0; i < NET_MAX_DISKNUM; i++) {
+                stDisks[i] = new NET_DEV_DISKSTATE();
+            }
+        }
+    }
+
+    public static class EM_DISK_TYPE extends SdkStructure
+    {
+        public static final int SDK_DISK_READ_WRITE = 0;   // 读写驱动器
+        public static final int SDK_DISK_READ_ONLY = 1;    // 只读驱动器
+        public static final int SDK_DISK_BACKUP = 2;       // 备份驱动器或媒体驱动器
+        public static final int SDK_DISK_REDUNDANT = 3;    // 冗余驱动器
+        public static final int SDK_DISK_SNAPSHOT = 4;     // 快照驱动器
+    }
+
+
+    //表示硬盘的基本信息
+    public static class NETDEV_DEVICE_INFO extends SdkStructure
+    {
+        public byte[]                byModle = new byte[32];                  // 型号
+        public byte[]                bySerialNumber = new byte[32];           // 序列号
+        public byte[]                byFirmWare = new byte[32];               // 固件号
+        public int                   nAtaVersion;                  // ATA协议版本号
+        public int                 	 nSmartNum ;                   // smart 信息数
+        public long               	 Sectors;
+        public int                 	 nStatus;                      // 磁盘状态 0-正常 1-异常
+        public int[]                 nReserved = new int[33];                // 保留字节
+    }
+
+    //硬盘的smart信息,可能会有很多条,最多不超过30个  
+    public static class NETDEV_SMART_VALUE extends SdkStructure
+    {
+        public byte    byId;               // ID
+        public byte    byCurrent;          // 属性值
+        public byte    byWorst;            // 最大出错值
+        public byte    byThreshold;        // 阈值
+        public byte[]  szName = new byte[64];   // 属性名
+        public byte[]  szRaw = new byte[8];     // 实际值
+        public int     nPredict;           		// 状态
+        public byte[]  reserved = new byte[128];
+    }
+
+    //硬盘smart信息查询
+    public static class NETDEV_SMART_HARDDISK extends SdkStructure
+    {
+        public byte                	nDiskNum;                       // 硬盘号
+        public byte                	byRaidNO;                       // Raid子盘,0表示单盘
+        public byte[]               byReserved = new byte[2];       // 保留字节
+        public NETDEV_DEVICE_INFO  	deviceInfo;
+        public NETDEV_SMART_VALUE[] smartValue = new NETDEV_SMART_VALUE[MAX_SMART_VALUE_NUM];
+
+        public NETDEV_SMART_HARDDISK() {
+            for(int i = 0; i < MAX_SMART_VALUE_NUM; i++) {
+                smartValue[i] = new NETDEV_SMART_VALUE();
+            }
+        }
+    }
+
+    // 扩展网络配置结构体
+    public static class NETDEV_NET_CFG_EX extends SdkStructure
+    {
+        public int               	dwSize;
+        public byte[]               sDevName = new byte[NET_MAX_NAME_LEN];  // 设备主机名
+        public short                wTcpMaxConnectNum;                  	// TCP最大连接数
+        public short                wTcpPort;                           	// TCP帧听端口
+        public short                wUdpPort;                           	// UDP侦听端口
+        public short                wHttpPort;                          	// HTTP端口号
+        public short                wHttpsPort;                         	// HTTPS端口号
+        public short                wSslPort;                           	// SSL端口号
+        public int                  nEtherNetNum;                      	 	// 以太网口数
+        public NET_ETHERNET_EX[]    stEtherNet = new NET_ETHERNET_EX[NET_MAX_ETHERNET_NUM_EX]; // 以太网口
+        public NET_REMOTE_HOST      struAlarmHost;                      	// 报警服务器
+        public NET_REMOTE_HOST      struLogHost;                        	// 日志服务器
+        public NET_REMOTE_HOST      struSmtpHost;                       	// SMTP服务器
+        public NET_REMOTE_HOST      struMultiCast;                      	// 多播组
+        public NET_REMOTE_HOST      struNfs;                            	// NFS服务器
+        public NET_REMOTE_HOST      struPppoe;                          	// PPPoE服务器
+        public byte[]               sPppoeIP = new byte[NET_MAX_IPADDR_LEN]; // PPPoE注册返回的IP
+        public NET_REMOTE_HOST      struDdns;                           	// DDNS服务器
+        public byte[]               sDdnsHostName = new byte[NET_MAX_HOST_NAMELEN]; // DDNS主机名
+        public NET_REMOTE_HOST      struDns;                            	// DNS服务器
+        public NET_MAIL_CFG         struMail;                           	// 邮件配置
+        public byte[]               bReserved = new byte[128];          	// 保留字节
+
+        public NETDEV_NET_CFG_EX() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < NET_MAX_ETHERNET_NUM_EX; i++) {
+                stEtherNet[i] = new NET_ETHERNET_EX();
+            }
+        }
+    }
+
+    // 以太网扩展配置
+    public static class NET_ETHERNET_EX extends SdkStructure
+    {
+        public byte[]                sDevIPAddr = new byte[NET_MAX_IPADDR_LEN];      // DVR IP 地址
+        public byte[]                sDevIPMask = new byte[NET_MAX_IPADDR_LEN];      // DVR IP 地址掩码
+        public byte[]                sGatewayIP = new byte[NET_MAX_IPADDR_LEN];      // 网关地址
+
+        /*
+         * 1:10Mbps 全双工
+         * 2:10Mbps 自适应
+         * 3:10Mbps 半双工
+         * 4:100Mbps 全双工
+         * 5:100Mbps 自适应
+         * 6:100Mbps 半双工
+         * 7:自适应
+         */
+        // 为了扩展将DWORD拆成四个
+        public byte                dwNetInterface;                     				// NSP
+        public byte                bTranMedia;                         				// 0:有线,1:无线
+        public byte                bValid;                             				// 按位表示,第一位:1:有效 0:无效;第二位:0:DHCP关闭 1:DHCP使能;第三位:0:不支持DHCP 1:支持DHCP
+        public byte                bDefaultEth;                        				// 是否作为默认的网卡 1:默认 0:非默认
+        public byte[]              byMACAddr = new byte[NET_MACADDR_LEN];           // MAC地址,只读
+        public byte                bMode;                              				// 网卡所处模式, 0:绑定模式, 1:负载均衡模式, 2:多址模式, 3:容错模式
+        public byte[]              bReserved1 = new byte[3];                        // 字节对齐
+        public byte[]              szEthernetName = new byte[NET_MAX_NAME_LEN];     // 网卡名,只读
+        public byte[]              bReserved = new byte[12];                        // 保留字节
+    }
+
+
+    // 远程主机配置
+    public static class NET_REMOTE_HOST extends SdkStructure
+    {
+        public byte                byEnable;                           				// 连接使能
+        public byte                byAssistant;                        				// 目前只对于PPPoE服务器有用,0:在有线网卡拨号;1:在无线网卡上拨号
+        public short               wHostPort;                         				// 远程主机 端口
+        public byte[]              sHostIPAddr = new byte[NET_MAX_IPADDR_LEN];      // 远程主机 IP 地址
+        public byte[]              sHostUser = new byte[NET_MAX_HOST_NAMELEN];      // 远程主机 用户名
+        public byte[]              sHostPassword = new byte[NET_MAX_HOST_PSWLEN];   // 远程主机 密码
+    }
+
+    // 邮件配置
+    public static class NET_MAIL_CFG extends SdkStructure
+    {
+        public byte[]               sMailIPAddr = new byte[NET_MAX_IPADDR_LEN];     // 邮件服务器IP地址
+        public short                wMailPort;                          			// 邮件服务器端口
+        public short                wReserved;                         				// 保留
+        public byte[]               sSenderAddr = new byte[NET_MAX_MAIL_ADDR_LEN];  // 发送地址
+        public byte[]               sUserName = new byte[NET_MAX_NAME_LEN];         // 用户名
+        public byte[]               sUserPsw = new byte[NET_MAX_NAME_LEN];          // 用户密码
+        public byte[]               sDestAddr = new byte[NET_MAX_MAIL_ADDR_LEN];    // 目的地址
+        public byte[]               sCcAddr = new byte[NET_MAX_MAIL_ADDR_LEN];      // 抄送地址
+        public byte[]               sBccAddr = new byte[NET_MAX_MAIL_ADDR_LEN];     // 暗抄地址
+        public byte[]               sSubject = new byte[NET_MAX_MAIL_SUBJECT_LEN];  // 标题
+    }
+
+
+    // 自动维护配置
+    public static class NETDEV_AUTOMT_CFG extends SdkStructure
+    {
+        public int                 dwSize;
+        public byte                byAutoRebootDay;            // 自动重启;0:从不, 1:每天,2:每星期日,3:每星期一,......
+        public byte                byAutoRebootTime;           // 0:0:00,1:1:00,......23:23:00
+        public byte                byAutoDeleteFilesTime;      // 自动删除文件;0:从不,1:24H,2:48H,3:72H,4:96H,......
+        public byte[]              reserved = new byte[13];    // 保留位
+
+        public NETDEV_AUTOMT_CFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 电子围栏类型枚举
+    public static class ENCLOSURE_TYPE
+    {
+        public static final int ENCLOSURE_UNKNOWN = 0x00;                       // 未知
+        public static final int ENCLOSURE_LIMITSPEED = 0x01;                    // 限速区
+        public static final int ENCLOSURE_DRIVEALLOW = 0x02;                    // 驾驶区
+        public static final int ENCLOSURE_FORBIDDRIVE = 0x04;                   // 禁止区
+        public static final int ENCLOSURE_LOADGOODS = 0x08;                     // 装货区
+        public static final int ENCLOSURE_UPLOADGOODS = 0x10;                   // 卸货区
+        public static final int ENCLOSURE_FLYALLOW = 0x20;                      // 飞行区
+        public static final int ENCLOSURE_MANUALFORBIDFLY = 0x40;               // 禁飞区(手动设置)
+        public static final int ENCLOSURE_FIXEDFORBIDFLY = 0x80;                // 禁飞区(机场) - 不可配置
+        public static final int ENCLOSURE_FiXEDLIMITFLY = 0x81;                 // 限制飞行 - 不可配置
+    }
+
+    // 电子围栏配置
+    public static class NETDEV_ENCLOSURE_CFG extends SdkStructure
+    {
+        public int          unType;                              // 电子围栏类型掩码,见 ENCLOSURE_TYPE
+        public byte[]       bRegion = new byte[8];               // 前四位分别代表国家、省、市或区、县(0-255),后4bytes保留
+        public int          unId;                                // 一个区域以一个ID标识
+        public int          unSpeedLimit;                        // 限速,单位km/h
+        public int          unPointNum;                          // 电子围栏区域顶点数
+        public GPS_POINT[]  stPoints = (GPS_POINT[]) new GPS_POINT().toArray(128);       // 电子围栏区域信息
+        public byte[]       szStationName = new byte[32];        // 电子围栏包围的车站站点名称
+        public byte         bDisenable;                          // 去使能。 0 启用 ;1 不启用
+        public byte 	    bShape;                              // 围栏形状 0 多边形 1 圆形
+        public byte         bLimitType;                          // 围栏限制类型 0 无; 1 限高; 2 限半径; 3 限高限半径
+        public byte         bAction;                             // 触发围栏后,设备的动作;0 无,兼容以前; 1 只报告; 2 悬停; 3 返航;
+        public int          nLimitAltitude;                      // 高度 单位:厘米。 0 无效
+        public int          nAlarmAltitude;                      // 预警高度单位:厘米。 0 无效
+        public int          unLimitRadius;                       // 半径单位:厘米。0 无效
+        public int          unAlarmRadius;                       // 预警半径:厘米。0 无效
+        public byte[]       reserved = new byte[12];             // 保留
+    }
+
+    // 电子围栏版本号配置
+    public static class NETDEV_ENCLOSURE_VERSION_CFG extends SdkStructure
+    {
+        public int          unType;                              // 围栏类型掩码,如LIMITSPEED | DRIVEALLOW
+        public int[]        unVersion = new int[32];             // 每个类型一个版本号,用于统一平台与设备上的围栏配置
+        public int          nReserved;                           // 保留
+    }
+
+    // 向视频输出口投放视频和图片文件, CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_DELIVERY_FILE 命令参数
+    public static class NET_CTRL_DELIVERY_FILE extends SdkStructure
+    {
+        public int                  	 dwSize;                             // 结构体大小
+        public int                    	 nPort;                              // 视频输出口
+        public int 						 emPlayMode;                         // 播放类型, 参考  EM_VIDEO_PLAY_MODE_TYPE
+        public NET_TIME                	 stuStartPlayTime;                   // 开始播放的时间
+        public NET_TIME                	 stuStopPlayTime;                    // 结束播放的时间,emPlayMode为 EM_VIDEO_PLAY_MODE_TYPE_REPEAT 时,此值有效
+        public int                     	 nFileCount;                         // 投放的文件个数
+        public NET_DELIVERY_FILE_INFO[]  stuFileInfo = new NET_DELIVERY_FILE_INFO[MAX_DELIVERY_FILE_NUM]; // 投放的文件信息(推荐使用stuFileInfoEx,二者互斥)
+        																								// 如果nFileCountEx不为0,视为使用stuFileInfoEx,stuFileInfo值无效
+        public int                       emOperateType;					     // 操作类型。如无该字段,默认为EM_VIDEO_PLAY_OPERATE_TYPE_REPLACE
+        public int                       nFileCountEx;						 // 投放的文件个数
+        public NET_DELIVERY_FILE_INFOEX[]  stuFileInfoEx = new NET_DELIVERY_FILE_INFOEX[MAX_DELIVERY_FILE_NUM];		 // 投放的文件信息
+        public int						nNumber;							// 当前广告计划编号,调用者可以通过此编号来设置不同广告计划
+        public NET_CFG_TIME_SCHEDULE	stuTimeSection;						// 播放时间段
+        public boolean					bEnable;							// 播放使能
+        public byte[]                   szName         = new byte[128];		// 广告名称
+
+
+        public NET_CTRL_DELIVERY_FILE() {
+            this.dwSize = this.size();
+
+            for(int i = 0; i < MAX_DELIVERY_FILE_NUM; i++) {
+                stuFileInfo[i] = new NET_DELIVERY_FILE_INFO();
+            }
+            for(int i = 0; i < MAX_DELIVERY_FILE_NUM; i++) {
+                stuFileInfoEx[i] = new NET_DELIVERY_FILE_INFOEX();
+            }
+        }
+    }
+    public static class NET_DELIVERY_FILE_INFOEX extends SdkStructure
+    {
+        public int   				    emFileType;                                  // 文件类型, 参考 EM_DELIVERY_FILE_TYPE
+        public byte[]                   szFileURL = new byte[DELIVERY_FILE_URL_LEN]; // 文件的资源地址
+        public int                      nImageSustain;                               // 每张图片停留多长时间,单位秒 (emFileType为 EM_DELIVERY_FILE_TYPE_IMAGE 时此字段有效)
+        public int                      emPlayWithMode;                              // 文件所属的模式, 参考 EM_PLAY_WITH_MODE
+        public byte[]                   szFileURLEx=new byte[512];   				// NET_OUT_GET_ADVERTIMENT_CAPS中bSupport为true时填写此字段,并且szFileURL填空
+        public NET_CFG_TIME_SCHEDULE	stuTimeSection = new NET_CFG_TIME_SCHEDULE();//播放时间段
+        public int						nSize;								        // 文件大小
+        public int						nID;								        // 文件编号
+        public byte[]                   byReserved=new byte[1024];                  // 保留字节
+    }
+
+    // 投放文件信息
+    public static class NET_DELIVERY_FILE_INFO extends SdkStructure
+    {
+        public int   				emFileType;                                  // 文件类型, 参考 EM_DELIVERY_FILE_TYPE
+        public byte[]               szFileURL = new byte[DELIVERY_FILE_URL_LEN]; // 文件的资源地址
+        public int                  nImageSustain;                               // 每张图片停留多长时间,单位秒 (emFileType为 EM_DELIVERY_FILE_TYPE_IMAGE 时此字段有效)
+        public int                  emPlayWithMode;                              // 文件所属的模式, 参考 EM_PLAY_WITH_MODE
+        public byte[]               byReserved = new byte[1020];                 // 保留字节
+    }
+
+    // 视频播放模式
+    public static class EM_VIDEO_PLAY_MODE_TYPE extends SdkStructure
+    {
+        public static final int EM_VIDEO_PLAY_MODE_TYPE_UNKNOWN = 0;              // 未知
+        public static final int EM_VIDEO_PLAY_MODE_TYPE_ONCE = 1;                 // 播放一次
+        public static final int EM_VIDEO_PLAY_MODE_TYPE_REPEAT = 2;               // 循环播放
+    }
+
+    // 投放的文件类型
+    public static class EM_DELIVERY_FILE_TYPE extends SdkStructure
+    {
+        public static final int EM_DELIVERY_FILE_TYPE_UNKNOWN = 0;                	// 未知
+        public static final int EM_DELIVERY_FILE_TYPE_VIDEO = 1;                  	// 视频
+        public static final int EM_DELIVERY_FILE_TYPE_IMAGE = 2;                	// 图片
+        public static final int EM_DELIVERY_FILE_TYPE_AUDIO = 3;					// 音频
+    }
+
+    // CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_START_PLAYAUDIO 命令参数
+    public static class NET_CTRL_START_PLAYAUDIO extends SdkStructure
+    {
+        public int               dwSize;
+        public byte[]            szAudioPath = new byte[NET_MAX_AUDIO_PATH];
+
+        public NET_CTRL_START_PLAYAUDIO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 公告记录信息查询条件
+    public static class FIND_RECORD_ANNOUNCEMENT_CONDITION extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  bTimeEnable;                      // 启用时间段查询, BOOL类型
+        public NET_TIME             stStartTime;                      // 起始时间
+        public NET_TIME             stEndTime;                        // 结束时间
+
+        public FIND_RECORD_ANNOUNCEMENT_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //公告记录信息
+    public static class NET_RECORD_ANNOUNCEMENT_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public int					nRecNo;									   		    // 记录集编号,只读
+        public NET_TIME             stuCreateTime;                          			// 创建时间
+        public NET_TIME				stuIssueTime;										// 公告发布时间
+        public byte[]				szAnnounceTitle = new byte[NET_COMMON_STRING_64];	// 公告标题
+        public byte[]				szAnnounceContent = new byte[NET_COMMON_STRING_256];//公告内容
+        public byte[]				szAnnounceDoor = new byte[NET_COMMON_STRING_16];	//公告要发送的房间号
+        public NET_TIME				stuExpireTime;										//公告过期的时间
+        public int			 		emAnnounceState;									//公告的状态 , 参考 NET_ANNOUNCE_STATE
+        public int		 			emAnnounceReadFlag;									//公告是否已经浏览, 参考 NET_ANNOUNCE_READFLAG
+        public int					nBackgroundPicture;						            // 门禁公告可以选择背景图片(具体图片由色设备绑定): 0 : 图片1 , 1:图片2 , 2 : 图片3
+    	public int					bUseEx;									            // 是否使用szAnnounceTitleEx/szAnnounceContentEx字段
+    	public byte[]				szAnnounceTitleEx = new byte[256];					// 公告标题
+    	public byte[]				szAnnounceContentEx = new byte[1024];				// 公告内容
+        public NET_TIME_EX          stuCreateTimeRealUTC = new NET_TIME_EX();           // 真UTC创建时间
+    	public NET_TIME				stuIssueTimeRealUTC = new NET_TIME();				// 真UTC公告发布时间
+        public NET_TIME				stuExpirTimeRealUTC = new NET_TIME();				// 真UTC公告过期的时间
+
+        public NET_RECORD_ANNOUNCEMENT_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //公告的状态
+    public static class NET_ANNOUNCE_STATE extends SdkStructure
+    {
+        public static final int NET_ANNOUNCE_STATE_UNSENDED = 0;    //初始状态(未发送)
+        public static final int NET_ANNOUNCE_STATE_SENDED = 1;		//已经发送
+        public static final int NET_ANNOUNCE_STATE_EXPIRED = 2;		//已经过期
+        public static final int NET_ANNOUNCE_STATE_UNKNOWN = 3;		//未知
+    }
+
+    //公告是否已经浏览
+    public static class NET_ANNOUNCE_READFLAG extends SdkStructure
+    {
+        public static final int NET_ANNOUNCE_READFLAG_UNREADED = 0; //未读
+        public static final int NET_ANNOUNCE_READFLAG_READED = 1;	//已读
+        public static final int NET_ANNOUNCE_READFLAG_UNKNOWN = 2;  //未知
+    }
+
+    // 开始实时预览并指定回调数据格式入参
+    public static class NET_IN_REALPLAY_BY_DATA_TYPE extends SdkStructure
+    {
+        public int               		dwSize;                 // 结构体大小
+        public int                  	nChannelID;             // 通道编号
+        public Pointer              	hWnd;                   // 窗口句柄, HWND类型
+        public int     					rType;                  // 码流类型 ,参考  NET_RealPlayType
+        public fRealDataCallBackEx  	cbRealData;             // 数据回调函数
+        public int   					emDataType;             // 回调的数据类型,参考 EM_REAL_DATA_TYPE
+        public Pointer           		dwUser;                 // 用户数据
+        public String         			szSaveFileName;         // 转换后的文件名
+        public fRealDataCallBackEx2	    cbRealDataEx;           // 数据回调函数-扩展
+        public int		                emAudioType;			// 音频格式,对应枚举EM_AUDIO_DATA_TYPE
+        public fDataCallBackEx     			cbRealDataEx2;// 数据回调(扩展带时间戳,帧类型),使用fDataCallBackEx
+        public NET_IN_REALPLAY_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开始实时预览并指定回调数据格式出参
+    public static class NET_OUT_REALPLAY_BY_DATA_TYPE extends SdkStructure
+    {
+        public int               		dwSize;                 // 结构体大小
+
+        public NET_OUT_REALPLAY_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 实时预览回调数据类型
+    public static class EM_REAL_DATA_TYPE extends SdkStructure
+    {
+        public static final int EM_REAL_DATA_TYPE_PRIVATE = 0;       // 私有码流
+        public static final int EM_REAL_DATA_TYPE_GBPS = 1;          // 国标PS码流
+        public static final int EM_REAL_DATA_TYPE_TS = 2;            // TS码流
+        public static final int EM_REAL_DATA_TYPE_MP4 = 3;           // MP4文件(从回调函数出来的是私有码流数据,参数dwDataType值为0)
+        public static final int EM_REAL_DATA_TYPE_H264 = 4;          // 裸H264码流
+        public static final int EM_REAL_DATA_TYPE_FLV_STREAM = 5;	 // 流式FLV
+    }
+
+    // 开始回放并指定回调数据格式 入参
+    public static class NET_IN_PLAYBACK_BY_DATA_TYPE extends SdkStructure
+    {
+        public int               dwSize;                 // 结构体大小
+        public int               nChannelID;             // 通道编号
+        public NET_TIME          stStartTime;            // 开始时间
+        public NET_TIME          stStopTime;             // 结束时间
+        public Pointer           hWnd;                   // 播放窗格, 可为NULL
+        public Callback   cbDownLoadPos;          // 进度回调
+        public Pointer           dwPosUser;              // 进度回调用户信息
+        public Callback   fDownLoadDataCallBack;  // 数据回调
+        public int   			 emDataType;             // 回调的数据类型
+        public Pointer           dwDataUser;             // 数据回调用户信息
+        public int               nPlayDirection;         // 播放方向, 0:正放; 1:倒放;
+        public int		         emAudioType;			// 音频类型,EM_AUDIO_DATA_TYPE
+        public Callback			 fDownLoadDataCallBackEx;// 数据回调(扩展带时间戳,帧类型),使用fDataCallBackEx
+        public NET_IN_PLAYBACK_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开始回放并指定回调数据格式 出参
+    public static class NET_OUT_PLAYBACK_BY_DATA_TYPE extends SdkStructure
+    {
+        public int               dwSize;                 // 结构体大小
+
+        public NET_OUT_PLAYBACK_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开始下载并指定回调数据格式 入参
+    public static class NET_IN_DOWNLOAD_BY_DATA_TYPE extends SdkStructure
+    {
+        public int                      dwSize;                 // 结构体大小
+        public int                      nChannelID;             // 通道编号
+        public int        				emRecordType;           // 录像类型, 详见EM_QUERY_RECORD_TYPE
+        public String                   szSavedFileName;        // 下载的文件路径
+        public NET_TIME                 stStartTime;            // 开始时间
+        public NET_TIME                 stStopTime;             // 结束时间
+        public Callback    		        cbDownLoadPos;          // 进度回调
+        public Pointer                  dwPosUser;              // 进度回调用户信息
+        public Callback          fDownLoadDataCallBack;  // 数据回调
+        public int           			emDataType;             // 回调的数据类型,详见 EM_REAL_DATA_TYPE
+        public Pointer                  dwDataUser;             // 数据回调用户信息
+        public int			            emAudioType;			// 音频类型,对应枚举EM_AUDIO_DATA_TYPE
+        public NET_IN_DOWNLOAD_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 开始下载并指定回调数据格式 出参
+    public static class NET_OUT_DOWNLOAD_BY_DATA_TYPE extends SdkStructure
+    {
+        public int               dwSize;                 // 结构体大小
+
+        public NET_OUT_DOWNLOAD_BY_DATA_TYPE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 NET_ALARM_HIGH_SPEED (车辆超速报警事件)对应的数据块描述信息
+    public static class ALARM_HIGH_SPEED_INFO extends SdkStructure
+    {
+        public int                        nAction;                   	// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX			      stuTime;						// 事件发生的时间
+        public double				      dbPTS;						// 时间戳(单位是毫秒)
+        public NET_GPS_STATUS_INFO 		  stGPSStatusInfo;              // GPS信息
+        public int						  nSpeedLimit;					// 车连限速值km/h
+        public int						  nCurSpeed;					// 当前车辆速度km/h
+        public int						  nMaxSpeed;					// 最高速度Km/h
+        public byte[]                	  byReserved = new byte[508];   // 保留字节
+    }
+
+    // GPS状态信息
+    public static class NET_GPS_STATUS_INFO extends SdkStructure
+    {
+        public NET_TIME                revTime=new NET_TIME();                        // 定位时间
+        public byte[]                  DvrSerial = new byte[50];       // 设备序列号
+        public byte[]                  byRserved1 = new byte[6];       // 对齐字节
+        public double                  longitude;                      // 经度(单位是百万分之度,范围0-360度)
+        public double                  latidude;                       // 纬度(单位是百万分之度,范围0-180度)
+        public double                  height;                         // 高度(米)
+        public double                  angle;                          // 方向角(正北方向为原点,顺时针为正)
+        public double                  speed;                          // 速度(单位km/H)
+        public short                   starCount;                      // 定位星数, emDateSource为 EM_DATE_SOURCE_GPS时有效
+        public byte[]                  byRserved2 = new byte[2];       // 对齐字节
+        public int   				   antennaState;                   // 天线状态, 参考  NET_THREE_STATUS_BOOL, emDateSource为 EM_DATE_SOURCE_GPS时有效
+        public int   				   orientationState;               // 定位状态, 参考  NET_THREE_STATUS_BOOL
+        public int                     workStae;                       // 工作状态(0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算
+        // emDateSource为 EM_DATE_SOURCE_GPS时有效
+        public int                     nAlarmCount;                    // 发生的报警位置个数
+        public int[]                   nAlarmState = new int[128];     // 发生的报警位置,值可能多个, emDateSource为 EM_DATE_SOURCE_GPS时有效
+        public byte                    bOffline;                       // 0-实时 1-补传
+        public byte                    bSNR;                           // GPS信噪比,表示GPS信号强度,值越大,信号越强 范围:0~100,0表示不可用
+        public byte[]                  byRserved3 = new byte[2];       // 对齐字节
+        public int          		   emDateSource;                   // 数据来源, 参考 EM_DATE_SOURCE
+        public int                     nSignalStrength;                // 在当前工作模式下(GPS或北斗等系统)的信号强度
+        public float                   fHdop;                          // 水平精度因子惯性导航时无效
+        public float                   fPdop;                          // 位置精度因子,惯性导航时无效
+        public byte[]                  byRserved = new byte[100];      // 保留字节
+    }
+
+    //三态布尔类型
+    public static class NET_THREE_STATUS_BOOL extends SdkStructure
+    {
+        public static final int BOOL_STATUS_FALSE  = 0;
+        public static final int BOOL_STATUS_TRUE   = 1;
+        public static final int BOOL_STATUS_UNKNOWN = 2;  //未知
+    }
+
+    // 数据来源
+    public static class EM_DATE_SOURCE extends SdkStructure
+    {
+        public static final int EM_DATE_SOURCE_GPS = 0;                // GPS
+        public static final int EM_DATE_SOURCE_INERTIALNAVIGATION = 1; // 惯性导航数据
+    }
+
+    // Gps定位信息
+    public static class NET_GPS_LOCATION_INFO extends SdkStructure
+    {
+        public GPS_Info	        	stuGpsInfo;               		// GPS信息
+        public ALARM_STATE_INFO     stuAlarmStateInfo;        		// 报警状态信息
+        public int				    nTemperature;		      		// 温度(单位:0.1摄氏度)
+        public int					nHumidity;				  		// 湿度(单位:0.1%)
+        public int					nIdleTime;				 		// 怠速时长(单位:秒)
+        public int        			nMileage;				  		// 里程(单位:0.1km)
+        public int					nVoltage;				  		// 设置电压值(单位:0.1伏)
+        public byte                 bOffline;                       // 0-实时 1-补传
+        public byte[]			    byReserved = new byte[1023];
+    }
+
+    // 事件类型 NET_ALARM_VIDEO_LOSS (视频丢失事件)对应的数据块描述信息
+    public static class ALARM_VIDEO_LOSS_INFO extends SdkStructure
+    {
+        public int                  nAction;                   		// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public int					nChannelID;						// 通道号
+        public double				dbPTS;							// 时间戳(单位是毫秒)
+        public byte[]				byReserved1 = new byte[4];		// 字节对齐
+        public NET_TIME_EX			stuTime;						// 事件发生的时间
+        public NET_TIME_EX						stuStartTime;					// 开始时间,nAction为2时上报此字段
+        public NET_GPS_STATUS_INFO				stuGPS;							// GPS信息
+    	/**
+    	 * 采集源分辨率 {@link com.netsdk.lib.enumeration.EM_NET_VIFORMAT_TYPE}
+    	 */
+    	public int emViFormat;
+    	/**
+    	 * 事件公共扩展字段结构体
+    	 */
+    	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+        
+        public byte[]               byReserved = new byte[1020];     // 保留字节
+    }
+
+    //报警事件类型 NET_ALARM_BUS_SHARP_ACCELERATE(车辆急加速事件)对应的数据描述信息
+    public static class ALARM_BUS_SHARP_ACCELERATE_INFO extends SdkStructure
+    {
+        public int                  dwSize;
+        public NET_GPS_STATUS_INFO  stuGPSStatusInfo;       // GPS信息
+        public NET_TIME_EX			stuTime;				// 事件发生的时间
+
+        public ALARM_BUS_SHARP_ACCELERATE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //报警事件类型 NET_ALARM_BUS_SHARP_DECELERATE(车辆急减速事件)对应的数据描述信息
+    public static class ALARM_BUS_SHARP_DECELERATE_INFO extends SdkStructure
+    {
+        public int                  dwSize;
+        public NET_GPS_STATUS_INFO  stuGPSStatusInfo;       // GPS信息
+        public NET_TIME_EX			stuTime;				// 事件发生的时间
+
+        public ALARM_BUS_SHARP_DECELERATE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // GPS未定位报警(NET_ALARM_GPS_NOT_ALIGNED)
+    public static class ALARM_GPS_NOT_ALIGNED_INFO extends SdkStructure
+    {
+        public int                 nAction;                        // 事件动作,0表示脉冲事件,1表示报警开始,2表示报警结束;
+        public NET_TIME_EX         stuTime;                        // 事件发生的时间
+        public byte[]              byReserved = new byte[1024];    // 保留字节
+    }
+
+    // 前端断网报警信息, 对应  NET_ALARM_FRONTDISCONNECT
+    public static class ALARM_FRONTDISCONNET_INFO extends SdkStructure
+    {
+        public int                dwSize;                           // 结构体大小
+        public int                nChannelID;                       // 通道号
+        public int                nAction;                          // 0:开始 1:停止
+        public NET_TIME           stuTime;                          // 事件发生时间
+        public byte[]             szIpAddress = new byte[MAX_PATH]; // 前端IPC的IP地址
+        public NET_GPS_STATUS_INFO stGPSStatus;					 // GPS信息 功能,仅部分设备有效。报警类型为DH_ALARM_FRONTDISCONNECT时,此字段无效。
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public ALARM_FRONTDISCONNET_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 存储错误报警, 对应  NET_ALARM_STORAGE_FAILURE_EX
+    public static class ALARM_STORAGE_FAILURE_EX extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nAction;                            		  // 0:开始 1:停止
+        public byte[]            szName = new byte[NET_EVENT_NAME_LEN];       // 事件名称
+        public byte[]            szDevice = new byte[NET_STORAGE_NAME_LEN];   // 存储设备名称
+        public byte[]            szGroup = new byte[NET_STORAGE_NAME_LEN];    // 存储组名称
+        public byte[]            szPath = new byte[MAX_PATH];                 // 路径
+        public int    			 emError;                            		  // 错误类型, 参考   EM_STORAGE_ERROR
+        public int               nPhysicNo;                          		  // 硬盘所在槽编码, 从1开始
+        public NET_TIME_EX	     stuTime;									  // 事件发生的时间
+        public NET_GPS_STATUS_INFO	stGPSStatus;						// GPS信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public ALARM_STORAGE_FAILURE_EX() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 存储组不存在事件信息, 对应  NET_ALARM_STORAGE_NOT_EXIST
+    public static class ALARM_STORAGE_NOT_EXIST_INFO extends SdkStructure
+    {
+        public int              dwSize;
+        public int              nAction;                            		  // 0:开始 1:停止
+        public byte[]           szGroup = new byte[NET_STORAGE_NAME_LEN];     // 在录像或抓图存储点中设置但不存在的组
+        public NET_TIME         stuTime;                           			  // 事件触发时间
+        /**
+         * gps信息
+         */
+        public NET_GPS_STATUS_INFO stGPSStatus;
+        public ALARM_STORAGE_NOT_EXIST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车辆ACC报警事件, 对应事件类型  NET_ALARM_VEHICLE_ACC
+    public static class ALARM_VEHICLE_ACC_INFO extends SdkStructure
+    {
+        public int                   dwSize;
+        public int                   nACCStatus;                         // ACC状态, 0:无效, 1:开启, 2:关闭
+        public int                   nAction;                            // 事件动作, 0:Start, 1:Stop
+        public NET_GPS_STATUS_INFO   stuGPSStatusInfo;                   // GPS信息
+        public int                   nConstantElectricStatus;            // 常电状态, 0:未知, 1:连接, 2:断开
+        public NET_TIME_EX		     stuTime;							 // 事件发生的时间
+        public int					 nTotalMileage;						// 总的里程数,单位:米,当nACCStatus为2时,将ntotalMileage进行上报
+        public NET_TIME_EX			 stuStartTime;						// nACCStatus为1时刻的时间
+        public NET_GPS_STATUS_INFO	 stuStartGPS;						// nACCStatus为1时刻的GPS信息
+
+        public ALARM_VEHICLE_ACC_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 NET_ALARM_VIDEOBLIND(视频遮挡事件)对应的数据块描述信息
+    public static class ALARM_VIDEO_BLIND_INFO extends SdkStructure
+    {
+        public int                   nAction;                   		// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public int					 nChannelID;						// 通道号
+        public double				 dbPTS;							    // 时间戳(单位是毫秒)
+        public NET_TIME_EX			 stuTime;						    // 事件发生的时间
+        public int					 nEventID;						    // 事件ID
+        public NET_TIME_EX						stuStartTime;					// 开始时间,nAction为2时上报此字段
+        public NET_GPS_STATUS_INFO				stuGPS;							// GPS信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                byReserved = new byte[1024];       	// 保留字节
+    }
+
+    // 紧急事件(对应 NET_URGENCY_ALARM_EX2, 对原有的 NET_URGENCY_ALARM_EX 类型的升级, 指人为触发的紧急事件, 一般处理是联动外部通讯功能请求帮助)
+    public static class ALARM_URGENCY_ALARM_EX2 extends SdkStructure
+    {
+        public int           	   dwSize;
+        public NET_TIME            stuTime;                     		// 事件产生的时间
+        public int           	   nID;                         		// 用于标识不同的紧急事件
+        /** 0:脉冲*/
+        public			int					nAction;
+        /** GPS信息*/
+        public NET_GPS_STATUS_INFO stuGPSStatusInfo=new NET_GPS_STATUS_INFO();
+        /** 国际移动设备辨识码15位数字标识*/
+        public			byte[]					szImei=new byte[16];
+        /** 距离上次上报的GPS移动距离, 单位0.1Km*/
+        public			int					nDistance;
+        /** 车牌号码*/
+        public			byte[]					szPlateNumber=new byte[64];
+        /** 应答号码*/
+        public			byte[]					szReplyNumber=new byte[16];
+        /** 线路信息*/
+        public			byte[]					szLine=new byte[64];
+
+        public ALARM_URGENCY_ALARM_EX2() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 NET_ALARM_DRIVER_NOTCONFIRM (司机未按确认按钮报警事件)对应的数据块描述信息
+    public static class ALARM_DRIVER_NOTCONFIRM_INFO extends SdkStructure
+    {
+        public int                  nAction;                   			// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX			stuTime;							// 事件发生的时间
+        public double				dbPTS;								// 时间戳(单位是毫秒)
+        public byte[]               byReserved = new byte[512];			// 保留字节
+    }
+
+    // 交通拥塞报警
+    public static class ALARM_TRAF_CONGESTION_INFO extends SdkStructure
+    {
+        public int                 nDriveWayID;            // 车道号
+        public int                 nCongestionLevel;       // 交通拥塞等级:1,2,3,4,5,6;1级最严重
+        public NET_TIME            stuTime;                // 报警发生时间
+        public int                 nState;                 // 设备状态,0表示故障恢复,1表示发生故障
+        public int                 dwChannel;              // 报警的通道号
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              reserve = new byte[28];
+    }
+
+    // RAID异常信息
+    public static class ALARM_RAID_INFO extends SdkStructure
+    {
+        public int              	nRaidNumber;                      					 // 上报的RAID个数
+        public RAID_STATE_INFO[]  	stuRaidInfo = new RAID_STATE_INFO[NET_MAX_RAID_NUM]; // 异常的RAID信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]          		reserved = new byte[128];
+
+        public ALARM_RAID_INFO() {
+            for (int i = 0; i < stuRaidInfo.length; ++i) {
+                stuRaidInfo[i] = new RAID_STATE_INFO();
+            }
+        }
+    }
+
+    public static class RAID_STATE_INFO extends SdkStructure
+    {
+        public byte[]        szName = new byte[16];                // Raid名称
+        public byte          byType;                               // 类型 1:Jbod     2:Raid0      3:Raid1     4:Raid5
+        public byte          byStatus;                             // 状态 0:Error ,1:Active,2:Degraded,3:Inactive,4:Resyncing
+        public byte[]        byReserved = new byte[2];
+        public int           nCntMem;                              // nMember数组的有效数据个数
+        public int[]         nMember = new int[32];                // 1,2,3,... 组成磁盘通道,是个数组
+        public int           nCapacity;                            // 容量,单位G
+        public int           nRemainSpace;                         // 剩余容量,单位M
+        public int           nTank;                                // 扩展柜 0:主机,1:扩展柜1,2:扩展柜2,……
+        public byte[]        reserved = new byte[32];
+    }
+
+
+    // 流量统计报警通道信息
+    public static class ALARM_TRAFFIC_FLUX_LANE_INFO extends SdkStructure
+    {
+        public NET_TIME            stuCurTime;            // 当前时间
+        public int                 nLane;                 // 车道号
+        public int                 nState;                // 状态值:1-表示拥堵, 2-表示拥堵恢复, 3-表示正常, 4-表示中断, 5-表示中断恢复
+        public int                 nFlow;                 // 流量值,单位:辆/分
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              byReserved = new byte[124];       // 保留
+    }
+
+    // CLIENT_AttachBusState, 订阅Bus状态输入参结构
+    public static class NET_IN_BUS_ATTACH extends SdkStructure
+    {
+        public int                   dwSize;
+        public fBusStateCallBack     cbBusState;                         // 状态回调函数
+        public Pointer	             dwUser;                             // 用户数据
+
+        public NET_IN_BUS_ATTACH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachBusState, 订阅Bus状态输出参结构
+    public static class NET_OUT_BUS_ATTACH extends SdkStructure
+    {
+        public int                dwSize;
+
+        public NET_OUT_BUS_ATTACH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 NET_ALARM_BUS_PASSENGER_CARD_CHECK (乘客刷卡事件)对应的数据描述信息
+    public static class ALARM_PASSENGER_CARD_CHECK extends SdkStructure
+    {
+        public int                     bEventConfirm;                  			   // 是否需要回复, BOOL类型
+        public byte[]                  szCardNum = new byte[NET_MAX_BUSCARD_NUM];  // 公交卡号
+        public NET_GPS_STATUS_INFO     stuGPS;                        			   // GPS信息
+        public NET_TIME_EX             UTC;                           			   // 刷卡时间
+        public int                     nTime;                          			   // UTC整型
+        public int    				   emType;                 					   // 刷卡类型, 参考  EM_PASSENGER_CARD_CHECK_TYPE
+        public byte[]                  szMac = new byte[NET_MAX_POS_MAC_NUM];      // 刷卡机Mac码 (默认"0000",兼容老设备)
+        public byte[]                  reserved = new byte[1012];                  // 预留
+    }
+
+    public static class EM_PASSENGER_CARD_CHECK_TYPE extends SdkStructure
+    {
+        public static final int EM_PASSENGER_CARD_CHECK_TYPE_UNKOWN = 0;            // 未知
+        public static final int EM_PASSENGER_CARD_CHECK_TYPE_SIGNIN = 1;            // 签到/上车
+        public static final int EM_PASSENGER_CARD_CHECK_TYPE_SIGNOUT = 2;           // 签出/下车
+        public static final int EM_PASSENGER_CARD_CHECK_TYPE_NORMAL = 3;            // 正常刷卡,不区分上下车
+    }
+
+    // CLIENT_AttachEventRestore 接口输入参数
+    public static class NET_IN_ATTACH_EVENT_RESTORE extends SdkStructure
+    {
+        public int                dwSize;											//结构体大小
+        public byte[] 			  szUuid = new byte[MAX_EVENT_RESTORE_UUID];		//客户端惟一标识
+
+        public NET_IN_ATTACH_EVENT_RESTORE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class GPS_TEMP_HUMIDITY_INFO extends SdkStructure
+    {
+        public double              dTemperature;               			// 温度值(摄氏度),实际值的1000倍,如30.0摄氏度表示为30000
+        public double              dHumidity;                  			// 湿度值(%),实际值的1000倍,如30.0%表示为30000
+        public byte[]              bReserved = new byte[128];           // 保留字节
+
+        public static class ByValue extends GPS_Info implements SdkStructure.ByValue { }
+    }
+
+
+    // 事件类型 NET_ALARM_FACEINFO_COLLECT (人脸信息录入事件)对应的数据块描述信息
+    public static class ALARM_FACEINFO_COLLECT_INFO extends SdkStructure
+    {
+
+        public int                nAction;                   				// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX		  stuTime;									// 事件发生的时间
+        public double			  dbPTS;									// 时间戳(单位是毫秒)
+        public byte[]			  szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+        public byte[]             byReserved = new byte[512];       		// 保留字节
+    }
+
+    // 人脸信息记录操作类型, 接口  CLIENT_FaceInfoOpreate
+    public static class EM_FACEINFO_OPREATE_TYPE extends SdkStructure
+    {
+        public static final int EM_FACEINFO_OPREATE_ADD = 0;				// 添加, pInbuf = NET_IN_ADD_FACE_INFO , pOutBuf = NET_OUT_ADD_FACE_INFO
+        public static final int EM_FACEINFO_OPREATE_GET = 1;				// 获取, pInBuf = NET_IN_GET_FACE_INFO , pOutBuf = NET_OUT_GET_FACE_INFO
+        public static final int EM_FACEINFO_OPREATE_UPDATE = 2;				// 更新, pInbuf = NET_IN_UPDATE_FACE_INFO , pOutBuf = NET_OUT_UPDATE_FACE_INFO
+        public static final int EM_FACEINFO_OPREATE_REMOVE = 3;				// 删除, pInbuf = NET_IN_REMOVE_FACE_INFO , pOutBuf = NET_OUT_REMOVE_FACE_INFO
+        public static final int EM_FACEINFO_OPREATE_CLEAR = 4;				// 清除, pInbuf = NET_IN_CLEAR_FACE_INFO, pOutBuf = NET_OUT_CLEAR_FACE_INFO
+        public static final int EM_FACEINFO_OPREATE_GETFACEEIGEN = 5;       // 获取人脸特征值, pInbuf = NET_IN_GETFACEEIGEN_INFO, pOutBuf = NET_OUT_GETFACEEIGEN_INFO
+    }
+
+    // 添加人脸记录信息输入参数
+    public static class NET_IN_ADD_FACE_INFO extends SdkStructure
+    {
+        public int 					 dwSize;
+        public byte[]				 szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+        public NET_FACE_RECORD_INFO	 stuFaceInfo;								// 人脸数据
+
+        public NET_IN_ADD_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人脸信息
+    public static class NET_FACE_RECORD_INFO extends SdkStructure
+    {
+        public byte[]		 		szUserName = new byte[MAX_USER_NAME_LEN];						// 用户名
+        public int			 		nRoom;														    // 房间个数
+        public NET_FACE_ROOMNO[]	szRoomNoArr = (NET_FACE_ROOMNO[])new NET_FACE_ROOMNO().toArray(MAX_ROOMNUM_COUNT); // 房间号列表
+        public int 			 		nFaceData;														// 人脸模板数据个数
+        public NET_FACE_FACEDATA[]	szFaceDataArr = (NET_FACE_FACEDATA[])new NET_FACE_FACEDATA().toArray(MAX_FACE_COUTN);// 人脸模板数据
+        public int[]         		nFaceDataLen = new int[MAX_FACE_COUTN];                         // 人脸模版数据大小
+        public int         			nFacePhoto;                                         		    // 人脸照片个数
+        public int[]         		nFacePhotoLen = new int[MAX_PHOTO_COUNT];                       // 每张图片的大小
+        public FACE_PHOTO[]      	pszFacePhotoArr = (FACE_PHOTO[])new FACE_PHOTO().toArray(MAX_PHOTO_COUNT);   // 人脸照片数据,大小不超过120K
+        public int                  bValidDate;                                                     //是否设置人脸有效时间
+        public NET_TIME             stuValidDateStart;                                              //人脸有效开始时间
+        public NET_TIME             stuValidDateEnd;                                                //人脸有效结束时间
+        public int			        nValidCounts;										            // 刷脸有效次数:小于0表示不限次数, 等于0刷脸次数已用完
+        public int		            bValidCountsEnable;									            // 次数字段使能
+        public int                  bFaceDataExEnable;                                              // 人脸模板数据扩展使能
+        public Pointer[]               pszFaceDataEx=new Pointer[MAX_FACE_COUTN];                         // 人脸模板数据扩展, 由用户申请释放, 每张照片最大为8K
+        //public FACE_PHOTO_EX[]      pszFaceDataExArr = (FACE_PHOTO_EX[])new FACE_PHOTO_EX().toArray(MAX_FACE_COUTN);  // 人脸模板数据扩展, 由用户申请释放, 每张照片最大为8K
+        public byte[]        		byReserved = new byte[240];                                     // 保留字节
+    }
+
+    public static class NET_FACE_ROOMNO extends SdkStructure {
+        public byte[] szRoomNo = new byte[NET_COMMON_STRING_16];   // 房间号
+    }
+
+    public static class NET_FACE_FACEDATA extends SdkStructure {
+        public byte[] szFaceData = new byte[MAX_FACE_DATA_LEN];    // 人脸数据
+    }
+
+    public static class FACE_PHOTO extends SdkStructure {
+        public Pointer pszFacePhoto;
+    }
+	/*public static class FACE_PHOTO_EX extends SdkStructure {
+		public Pointer pszFaceDataEx;
+	}*/
+
+
+    // 添加人脸记录信息输出参数
+    public static class NET_OUT_ADD_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+
+        public NET_OUT_ADD_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取人脸记录信息输入参数
+    public static class NET_IN_GET_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+        public byte[]		szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+
+        public NET_IN_GET_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取人脸记录信息输出参数
+    public static class NET_OUT_GET_FACE_INFO extends SdkStructure
+    {
+        public int 					dwSize;
+        public int 					nFaceData;														// 人脸模板数据个数
+        public NET_FACE_FACEDATA[]	szFaceDataArr = (NET_FACE_FACEDATA[])new NET_FACE_FACEDATA().toArray(MAX_FACE_COUTN);		// 人脸模板数据
+        public int             		nPhotoData;                                         		  // 白光人脸照片数据个数, 最大个数:5
+        public int[]             	nInPhotoDataLen = new int[MAX_PHOTO_COUNT];                   // 用户申请的每张白光人脸照片大小
+        public int[]             	nOutPhotoDataLen = new int[MAX_PHOTO_COUNT];                  // 每张白光人脸照片实际的大小
+        public Pointer[]			pPhotoData = new Pointer[MAX_PHOTO_COUNT];				  	  // 白光人脸照片数据, 由用户申请释放, 每张照片最大为200K
+
+        public NET_OUT_GET_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新人脸记录信息输入参数
+    public static class NET_IN_UPDATE_FACE_INFO extends SdkStructure
+    {
+        public int 					  dwSize;
+        public byte[]				  szUserID = new byte[NET_MAX_USERID_LEN];			  // 用户ID
+        public NET_FACE_RECORD_INFO	  stuFaceInfo;							    		  // 人脸数据
+
+        public NET_IN_UPDATE_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新人脸记录信息输出参数
+    public static class NET_OUT_UPDATE_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+
+        public NET_OUT_UPDATE_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除人脸记录信息输入参数
+    public static class NET_IN_REMOVE_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+        public byte[]		szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+
+        public NET_IN_REMOVE_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除人脸记录信息输出参数
+    public static class NET_OUT_REMOVE_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+
+        public NET_OUT_REMOVE_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清除人脸记录信息输入参数
+    public static class NET_IN_CLEAR_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+
+        public NET_IN_CLEAR_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清除人脸记录信息输出参数
+    public static class NET_OUT_CLEAR_FACE_INFO extends SdkStructure
+    {
+        public int 			dwSize;
+
+        public NET_OUT_CLEAR_FACE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加节目信息接口输入参数
+    public static class NET_IN_ADD_ONE_PROGRAMME extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_PROGRAMME_INFO		stuProgrammeInfo;	// 节目信息
+
+        public NET_IN_ADD_ONE_PROGRAMME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加节目信息接口输出参数
+    public static class NET_OUT_ADD_ONE_PROGRAMME extends SdkStructure
+    {
+        public int           			 dwSize;
+        public byte[]					 szProgrammeID = new byte[MAX_COMMON_STRING_64];	// 节目ID
+
+        public NET_OUT_ADD_ONE_PROGRAMME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 诱导屏节目配置信息
+    public static class NET_PROGRAMME_INFO extends SdkStructure
+    {
+        public byte[]					szProgrammeName = new byte[MAX_COMMON_STRING_64];	// 节目名称
+        public byte[]					szProgrammeID = new byte[MAX_COMMON_STRING_64];		// 节目ID,添加时无效,用于修改、删除
+        public int						bEnable;											// 节目是否启用,BOOL类型
+        public NET_ORDINARY_INFO		stuOrdinaryInfo = new NET_ORDINARY_INFO();			// 普通节目信息,此参数需要在库里new对象
+        public byte[]        			byReserved = new byte[512];							// 保留字节
+    }
+
+    // 诱导屏普通节目信息
+    public static class NET_ORDINARY_INFO extends SdkStructure
+    {
+        public int								bTempletState;										// 节目是否保存为模板, BOOL类型
+        public byte[]							szDescription = new byte[MAX_COMMON_STRING_128];	// 节目描述信息
+        public int								nWhnCount;											// 诱导屏窗口个数
+        public NET_GUIDESCREEN_WINDOW_INFO[]	stuWindowsInfo = (NET_GUIDESCREEN_WINDOW_INFO[])new NET_GUIDESCREEN_WINDOW_INFO().toArray(MAX_WINDOWS_COUNT);		// 诱导屏窗口信息
+        public byte[]        					byReserved = new byte[128];							// 保留字节
+    }
+
+    // 诱导屏窗口信息
+    public static class NET_GUIDESCREEN_WINDOW_INFO extends SdkStructure
+    {
+        public byte[]			szWindowID = new byte[MAX_COMMON_STRING_64];	// 窗口ID
+        public int				nVolume;									    // 窗口音量,相对整屏音量的百分比
+        public NET_COLOR_RGBA	stuColor;										// 窗口背景颜色
+        public int				nDiaphaneity;									// 窗口背景透明度0-100
+        public int				emTourPeriodType;								// 窗口轮训类型, 对应  EM_TOURPERIOD_TYPE
+        public int				nTourPeriodTime;								// 自定义轮训时间,单位秒, 轮训类型为自定义轮训时有效
+        public int				bAutoPlay;										// 预览自动播放,Video元素有效, BOOL类型
+        public int				bLoopPlay;										// 预览循环播放,Video元素有效, BOOL类型
+        public int				nElementsCount;									// 诱导屏窗口元素个数
+        public Pointer			pstElementsBuf;									// 诱导屏窗口元素信息缓存区, 根据类型对应不同的结构体
+        // 填充多个元素信息, 每个元素信息内容为 NET_ELEMENT_COMMON_INFO + 元素类型对应的结构体
+        public int				nBufLen;										// 诱导屏窗口元素信息缓存区大小
+        public byte[]        	byReserved = new byte[128];						// 保留字节
+    }
+
+    // 窗口元素通有信息
+    public static class NET_ELEMENT_COMMON_INFO extends SdkStructure
+    {
+        public int				emElementsType;								 	// 窗口元素类型,对应枚举  EM_ELEMENTS_TYPE
+        public byte[]        	byReserved = new byte[128];						// 保留字节
+    }
+
+    //窗口轮训周期类型
+    public static class EM_TOURPERIOD_TYPE extends SdkStructure
+    {
+        public static final int EM_TOURPERIOD_UNKNOWN = 0;				// 未知
+        public static final int EM_TOURPERIOD_PROGRAMME = 1;			// 节目周期
+        public static final int EM_TOURPERIOD_PLAN = 2;					// 计划周期
+        public static final int EM_TOURPERIOD_CUSTOM = 3;				// 自定义周期
+    }
+
+    // 诱导屏窗口元素类型
+    public static class EM_ELEMENTS_TYPE extends SdkStructure
+    {
+        public static final int EM_ELEMENTS_UNKNOWN = 0;			    // 未知
+        public static final int EM_ELEMENTS_VIDEO = 1;					// 视频元素, 对应 NET_VIDEO_ELEMENT_INFO
+        public static final int EM_ELEMENTS_PICTURE = 2;				// 图片元素, 对应 NET_PICTURE_ELEMENT_INFO
+        public static final int EM_ELEMENTS_TEXT = 3;					// 文本元素, 对应 NET_TEXT_ELEMENT_INFO
+        public static final int EM_ELEMENTS_PLACEHOLDER = 4;			// 占位符元素, 对应 NET_PLACEHOLDER_ELEMENT_INFO
+        public static final int EM_ELEMENTS_CAPTURE = 5;				// 抓拍元素, 对应 NET_CAPTURE_ELEMENT_INFO
+    }
+
+    // 视频元素信息
+    public static class NET_VIDEO_ELEMENT_INFO extends SdkStructure
+    {
+        public byte[] 						szName = new byte[MAX_COMMON_STRING_64];			// 素材自定义名称
+        public int							bFillerState;										// 是否垫片, BOOL类型
+        public byte[] 						szPath = new byte[MAX_COMMON_STRING_128];			// 文件地址
+        public int							nPlayCount;											// 播放次数
+        public int							nNote;												// 注释信息个数
+        public NET_GUIDESCREEN_NOTE_INFO[]	stuNoteInfo = (NET_GUIDESCREEN_NOTE_INFO[])new NET_GUIDESCREEN_NOTE_INFO().toArray(MAX_NOTE_COUNT);			// 注释信息
+        public byte[]        				byReserved = new byte[128];							// 保留字节
+    }
+
+    // 诱导屏窗口元素注释信息
+    public static class NET_GUIDESCREEN_NOTE_INFO extends SdkStructure
+    {
+        public int							bEnable;					// 是否有效, BOOL类型
+        public NET_GUIDESCREEN_TEXT_INFO	stuTextInfo;				// 文字注释信息
+        public NET_RECT						stuRect;					// 文字注释的坐标
+        public byte[]        				byReserved = new byte[128];	// 保留字节
+    }
+
+    // 文本信息
+    public static class NET_GUIDESCREEN_TEXT_INFO extends SdkStructure
+    {
+        public byte[]					szContent = new byte[MAX_ELEMENTTEXT_LENGTH];		// 文本内容
+        public int						nFontSize;											// 字体大小
+        public NET_COLOR_RGBA			stuFontColor;										// 字体颜色
+        public byte[]					szFontStyle = new byte[MAX_COMMON_STRING_32];		// 字体类型
+        public double					dbLineHeight;										// 行高
+        public int						emHoriAlign;										// 水平对齐方向, 对应 EM_HORI_ALIGN_TYPE
+        public int						emVertAlign;										// 垂直对齐方向, 对应 EM_VERT_ALIGN_TYPE
+        public int						nPlayTime;											// 播放时间, 单位秒
+        public int						nPlayCount;											// 播放次数
+        public int						nStayTime;											// 停留间隔(切入切出的间隔时间)单位:s
+        public int						emEnterStyle;										// 切入风格, 对应  EM_PIC_STYLE_TYPE
+        public int						emExitStyle;										// 切出风格, 对应  EM_PIC_STYLE_TYPE
+        public byte[]        			byReserved = new byte[128];							// 保留字节
+    }
+
+    // 水平对齐类型
+    public static class EM_HORI_ALIGN_TYPE extends SdkStructure
+    {
+        public static final int EM_HORI_ALIGN_UNKNOWN = 0;				// 未知
+        public static final int EM_HORI_ALIGN_LEFT = 1;					// 左对齐
+        public static final int EM_HORI_ALIGN_CENTER = 2;				// 居中
+        public static final int EM_HORI_ALIGN_RIGHT = 3;				// 右对齐
+    }
+
+    // 垂直对齐类型
+    public static class EM_VERT_ALIGN_TYPE extends SdkStructure
+    {
+        public static final int EM_VERT_ALIGN_UNKNOWN = 0;				// 未知
+        public static final int EM_VERT_ALIGN_UP = 1;					// 上对齐
+        public static final int EM_VERT_ALIGN_CENTER = 2;				// 居中
+        public static final int EM_VERT_ALIGN_DOWN = 3;					// 下对齐
+    }
+
+    // 切入(切出) 风格
+    public static class EM_PIC_STYLE_TYPE extends SdkStructure
+    {
+        public static final int EM_PIC_STYLE_UNKNOWN = 0;				// 未知
+        public static final int EM_PIC_STYLE_DEFAULT = 1;				// 默认
+        public static final int EM_PIC_STYLE_UP = 2;					// 上移
+        public static final int EM_PIC_STYLE_DOWN = 3;					// 下移
+        public static final int EM_PIC_STYLE_LEFT = 4;					// 左移
+        public static final int EM_PIC_STYLE_RIGHT = 5;					// 右移
+    }
+
+    // 图片元素信息
+    public static class NET_PICTURE_ELEMENT_INFO extends SdkStructure
+    {
+        public byte[] 						szName = new byte[MAX_COMMON_STRING_64];			// 素材自定义名称
+        public int							bFillerState;										// 是否垫片, BOOL类型
+        public byte[] 						szPath = new byte[MAX_COMMON_STRING_128];			// 图片文件地址
+        public int							nPlayTime;											// 播放时间, 单位秒
+        public int							nPlayCount;											// 播放次数
+        public int							nDiaphaneity;										// 透明度, 0-100
+        public int							nStayTime;											// 停留时间, 单位秒
+        public int 							emEnterStyle;										// 切入风格, 对应  EM_PIC_STYLE_TYPE
+        public int							emExitStyle;										// 切出风格, 对应  EM_PIC_STYLE_TYPE
+        public int							nNote;												// 注释信息个数
+        public NET_GUIDESCREEN_NOTE_INFO[]	stuNoteInfo = (NET_GUIDESCREEN_NOTE_INFO[])new NET_GUIDESCREEN_NOTE_INFO().toArray(MAX_NOTE_COUNT);			// 注释信息
+        public byte[]        				byReserved = new byte[128];							// 保留字节
+    }
+
+    // 诱导屏窗口文本元素信息
+    public static class NET_TEXT_ELEMENT_INFO extends SdkStructure
+    {
+        public byte[] 						szName = new byte[MAX_COMMON_STRING_64];			// 素材自定义名称
+        public int							bFillerState;										// 是否垫片, 对应 BOOL类型
+        public NET_GUIDESCREEN_TEXT_INFO	stuElementsText;									// 文本元素信息
+        public int							nNote;												// 注释信息个数
+        public NET_GUIDESCREEN_NOTE_INFO[]	stuNoteInfo = (NET_GUIDESCREEN_NOTE_INFO[])new NET_GUIDESCREEN_NOTE_INFO().toArray(MAX_NOTE_COUNT);			// 注释信息
+        public byte[]        				byReserved = new byte[128];							// 保留字节
+    }
+
+    // 诱导屏窗口占位符元素信息
+    public static class NET_PLACEHOLDER_ELEMENT_INFO extends SdkStructure
+    {
+        public byte[] 						szName = new byte[MAX_COMMON_STRING_64];			// 素材自定义名称
+        public int							bFillerState;										// 是否垫片, BOOL类型
+        public int							nNote;												// 注释信息个数
+        public NET_GUIDESCREEN_NOTE_INFO[]	stuNoteInfo = (NET_GUIDESCREEN_NOTE_INFO[])new NET_GUIDESCREEN_NOTE_INFO().toArray(MAX_NOTE_COUNT);			// 注释信息
+        public byte[]        				byReserved = new byte[128];							// 保留字节
+    }
+
+    public static class NET_CAPTURE_OSD_INFO extends SdkStructure
+    {
+        public  int                         bEnable;                                // 叠加使能
+        public  NET_COLOR_RGBA		        stuFontColor;					        // 文字颜色
+        public  NET_COLOR_RGBA		        stuBackGroundColor;					    // 背景颜色
+        public  int                         nFontSize;                              // 字体大小
+        public  byte[]                      szContent=new byte[MAX_COMMON_STRING_512];       // OSD内容
+        public  byte[]          			byReserved=new byte[1024];						// 保留字节
+    };
+
+    // 抓拍元素信息
+    public static class NET_CAPTURE_ELEMENT_INFO extends SdkStructure
+    {
+
+        public byte[] 						szName = new byte[MAX_COMMON_STRING_64];			// 素材自定义名称
+        public int							bFillerState;										// 是否垫片, BOOL类型
+        public byte[]						szUserName = new byte[NET_USER_NAME_LEN_EX];		// 用户名
+        public byte[]						szPassWord = new byte[NET_USER_PSW_LEN_EX];			// 密码
+        public byte[]						szIP = new byte[NET_MAX_IPADDR_LEN_EX];				// IP地址
+        public int							nPort;												// 端口号
+        public int							nChannel;											// 通道号
+        public int 							emCaptureType;										// 抓拍类型, 对应  EM_CAPTURE_TYPE
+        public int							nPlayTime;											// 播放时间, 单位秒
+        public int							nNote;												// 注释信息个数
+        public NET_GUIDESCREEN_NOTE_INFO[]	stuNoteInfo = (NET_GUIDESCREEN_NOTE_INFO[])new NET_GUIDESCREEN_NOTE_INFO().toArray(MAX_NOTE_COUNT);			// 注释信息
+        public Pointer                      pstOsdInfo;                                         // OSD叠加信息, 由用户申请和释放内存,若为NULL,则不下发(获取)OSD信息,对应结构体NET_CAPTURE_OSD_INFO
+        public byte[]        				byReserved = new byte[124];							// 保留字节
+    }
+
+    // 抓拍类型
+    public static class EM_CAPTURE_TYPE extends SdkStructure
+    {
+        public static final int EM_CAPTURE_UNKNOWN = 0;			// 未知
+        public static final int EM_CAPTURE_VIDEO = 1;			// 视频
+        public static final int EM_CAPTURE_PICTURE = 2;			// 图片
+    }
+
+    // 设置诱导屏屏幕配置信息输入参数
+    public static class NET_IN_SET_GUIDESCREEN_CFG extends SdkStructure
+    {
+        public int           					dwSize;
+        public int								nScreenCount;		// 诱导屏属性配置信息个数, 值由用户指定
+
+        // 诱导屏属性配置信息, 内存由用户维护, NET_GUIDESCREEN_ATTRIBUTE_INFO
+        // 大小为nScreenCount 个 NET_GUIDESCREEN_ATTRIBUTE_INFO
+        public Pointer							pstGuideScreenCfg;
+
+        public NET_IN_SET_GUIDESCREEN_CFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设置诱导屏屏幕配置信息输出参数
+    public static class NET_OUT_SET_GUIDESCREEN_CFG extends SdkStructure
+    {
+        public int           		dwSize;
+
+        public NET_OUT_SET_GUIDESCREEN_CFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 诱导屏属性配置信息
+    public static class NET_GUIDESCREEN_ATTRIBUTE_INFO extends SdkStructure
+    {
+        public int           						dwSize;
+        public byte[] 								szScreenID = new byte[MAX_COMMON_STRING_64];						// 屏幕ID
+        public int									emStatus;															// 显示屏开关状态    对应 EM_SCREEN_STATUS_TYPE
+        public int									bIsForeverOpen;														// 是否永久开屏, 0:开屏     1:关屏
+        public int									nScreenTime;														// 开关屏时间个数
+        public NET_SCREEN_TIME_INFO[]				stuScreenTime = (NET_SCREEN_TIME_INFO[])new NET_SCREEN_TIME_INFO().toArray(MAX_SCREENTIME_COUNT);	// 开关屏时间数组
+        public int									nBright;															// 显示屏亮度, 1-100
+        public int									nContrast;															// 显示屏对比度, 1-100
+        public int									nSaturation;														// 显示屏饱和度, 1-100
+        public int									nVolume;															// 屏幕整体音量
+        public int									nWidth;																// 宽度
+        public int									nHeight;															// 高度
+        public int									nWindowsCount;														// 窗口个数
+        public NET_GUIDESCREEN_WINDOW_RECT_INFO[] 	stuWindows = (NET_GUIDESCREEN_WINDOW_RECT_INFO[])new NET_GUIDESCREEN_WINDOW_RECT_INFO().toArray(MAX_WINDOWS_COUNT);	// 窗口信息
+        public NET_GUIDESCREEN_AUTO_BRIGHT			stuAutoBright;														// 诱导屏自动调节屏幕亮度信息
+        public byte[]         						byReserved = new byte[512];											// 保留字节
+
+        public NET_GUIDESCREEN_ATTRIBUTE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 诱导屏自动调节屏幕亮度信息
+    public static class NET_GUIDESCREEN_AUTO_BRIGHT extends SdkStructure
+    {
+        public int						bEnable;									// 是否使能自动亮度配置
+        public int						nLightBright;								// 白天的亮度
+        public int						nDarkBright;								// 夜间的亮度
+        public NET_SUN_RISE_SET_TIME[]	stuSunTime = (NET_SUN_RISE_SET_TIME[])new NET_SUN_RISE_SET_TIME().toArray(MAX_SUNTIME_COUNT);		// 日出日落时间
+        public byte[]        			byReserved = new byte[128];					// 保留字节
+    }
+
+    // 诱导屏配置日出日落时间
+    public static class NET_SUN_RISE_SET_TIME extends SdkStructure
+    {
+        public int						nSunrise;									// 日出时间, 默认上午6 时
+        public int						nSunset;									// 日落时间, 默认下午18 时
+        public byte[]        			byReserved = new byte[32];					// 保留字节
+    }
+
+    //开关屏时间信息
+    public static class NET_SCREEN_TIME_INFO extends SdkStructure
+    {
+        public int						bEnable;									// 是否启用, BOOL类型
+        public int						emDateType;									// 开关屏日期类型  对应 EM_SCREEN_DATE_TYPE
+        public int						nDateCount;									// 开关屏日期个数'
+        public int[]					nPlayDates = new int[MAX_PLAYDATES_COUNT];	// 开关屏日期
+        public NET_PROGRAMME_TIME_INFO	stuOpenTime;								// 开屏时间
+        public NET_PROGRAMME_TIME_INFO	stuCloseTime;								// 关屏时间
+        public byte[]         			byReserved = new byte[128];              	// 保留
+    }
+
+    // 诱导屏窗口坐标信息
+    public static class NET_GUIDESCREEN_WINDOW_RECT_INFO extends SdkStructure
+    {
+        public byte[]				szWindowID = new byte[MAX_COMMON_STRING_64];	// 窗口ID
+        public NET_RECT				stuRect;										// 窗口坐标
+        public int					nWindowBright;									// 诱导屏窗口亮度,单独配置某个子屏的亮度,填0时以整屏亮度为准
+        public byte[]				byReserved = new byte[132];						// 保留
+    }
+
+    // 节目时间信息
+    public static class NET_PROGRAMME_TIME_INFO extends SdkStructure
+    {
+        public int                dwHour;                  // 时
+        public int                dwMinute;                // 分
+        public int                dwSecond;                // 秒
+
+        public String toString() {
+            return dwHour + ":" + dwMinute + ":" + dwSecond;
+        }
+    }
+
+    // 显示屏开关状态(枚举转结构体)
+    public static class EM_SCREEN_STATUS_TYPE extends SdkStructure
+    {
+        public static final int EM_SCREEN_STATUS_UNKNOWN = 0;		// 未知
+        public static final int EM_SCREEN_STATUS_ON = 1;			// 开
+        public static final int EM_SCREEN_STATUS_OFF = 2;			// 关
+    }
+
+    // 日期类型枚(枚举转结构体)
+    public static class EM_SCREEN_DATE_TYPE extends SdkStructure
+    {
+        public static final int EM_SCREEN_DATE_UNKNOWN = 0;				// 未知
+        public static final int EM_SCREEN_DATE_MONTH = 1;					// 每月
+        public static final int EM_SCREEN_DATE_WEEK = 2;					// 每周
+        public static final int EM_SCREEN_DATE_DAY = 3;					// 每日
+    }
+
+    // 增加即时节目计划输入参数
+    public static class NET_IN_ADD_IMME_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           				dwSize;
+        public NET_IMMEDIATELY_PLAN_INFO	stuImmePlan;		// 即时节目计划信息
+
+        public NET_IN_ADD_IMME_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 增加节目计划输出参数
+    public static class NET_OUT_ADD_PROGRAMMEPLAN  extends SdkStructure
+    {
+        public int           			dwSize;
+        public byte[]					szPlanID = new byte[MAX_COMMON_STRING_64];			// 节目计划ID char[]
+
+        public NET_OUT_ADD_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 即时节目计划配置信息
+    public static class NET_IMMEDIATELY_PLAN_INFO extends SdkStructure
+    {
+        public byte[]				 szPlanName = new byte[MAX_COMMON_STRING_64];			// 节目计划名称
+        public byte[]				 szPlanID = new byte[MAX_COMMON_STRING_64];				// 节目计划ID ,添加时无效,用于修改、删除
+        public byte[]				 szSplitScreenID = new byte[MAX_COMMON_STRING_64];		// 分屏ID
+        public int					 bEnable;												// 计划是否启用 , BOOL类型
+        public int					 nPlayTime;												// 播放时长, 单位 : 分钟
+        public byte[]				 szProgrammeName = new byte[MAX_COMMON_STRING_64];		// 即时发布的节目名称
+        public byte[]				 szProgrammeID = new byte[MAX_COMMON_STRING_64];		// 即时发布的节目ID
+        public byte[]        		 byReserved = new byte[512];							// 保留字节
+    }
+
+    // 修改节目信息接口输入参数
+    public static class NET_IN_MODIFY_ONE_PROGRAMME extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_PROGRAMME_INFO		stuProgrammeInfo;			// 节目信息
+
+        public NET_IN_MODIFY_ONE_PROGRAMME() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // 修改节目信息接口输出参数
+    public static class NET_OUT_MODIFY_ONE_PROGRAMME extends SdkStructure
+    {
+        public int           			dwSize;
+
+        public NET_OUT_MODIFY_ONE_PROGRAMME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 批量删除节目信息接口输入参数
+    public static class NET_IN_DEL_PROGRAMMES extends SdkStructure
+    {
+        public int           		   dwSize;
+        public int				       nProgrammeID;															    				// 节目ID个数
+        public PRO_GRAMME_ID[]		   szProGrammeIdListArr = (PRO_GRAMME_ID[])new PRO_GRAMME_ID().toArray(MAX_PROGRAMMES_COUNT);	// 需要删除的节目ID列表
+
+        public NET_IN_DEL_PROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 需要删除的节目ID
+    public static class PRO_GRAMME_ID extends SdkStructure
+    {
+        public byte[]			       szProGrammeIdList = new byte[MAX_COMMON_STRING_64];	// 需要删除的节目ID
+    }
+
+    // 批量删除节目信息接口输出参数
+    public static class NET_OUT_DEL_PROGRAMMES extends SdkStructure
+    {
+        public int           		 dwSize;
+
+        public NET_OUT_DEL_PROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 修改即时节目计划输入参数
+    public static class NET_IN_MODIFY_IMME_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           				dwSize;
+        public NET_IMMEDIATELY_PLAN_INFO	stuImmePlan;		// 即时节目计划信息
+
+        public NET_IN_MODIFY_IMME_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 修改即时节目计划输出参数
+    public static class NET_OUT_MODIFY_IMME_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           			dwSize;
+
+        public NET_OUT_MODIFY_IMME_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 增加定时节目计划输入参数
+    public static class NET_IN_ADD_TIMER_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_TIMER_PLAN_INFO		stuTimerPlan;		// 定时节目计划信息
+
+        public NET_IN_ADD_TIMER_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 定时节目计划配置信息
+    public static class NET_TIMER_PLAN_INFO extends SdkStructure
+    {
+        public byte[]					szPlanName = new byte[MAX_COMMON_STRING_64];			// 节目计划名称
+        public byte[]					szPlanID = new byte[MAX_COMMON_STRING_64];				// 节目计划ID,添加时无效,用于修改、删除
+        public byte[]					szSplitScreenID = new byte[MAX_COMMON_STRING_64];		// 分屏ID
+        public int						emDataType;											    // 节目计划日期类型, 对应 EM_TIMERPLAN_DATE_TYPE
+        public int						nDataCount;												// 节目计划日期个数
+        public int[]					nPlayDates = new int[MAX_PLAYDATES_COUNT];				// 节目播放日期列表
+        public NET_PROGRAMME_DATA		stuSatrtDate = new NET_PROGRAMME_DATA();				// 节目开始日期
+        public NET_PROGRAMME_DATA		stuEndDate = new NET_PROGRAMME_DATA();					// 节目结束日期
+        public int						emReviewState;											// 审核状态, 对应  EM_REVIES_STATE
+        public byte[]					szReviewOpinion = new byte[MAX_COMMON_STRING_64];		// 审核意见
+        public int						bOverdue;												// 计划是否过期, BOOL类型
+        public int						nProgrammes;											// 节目个数
+        public NET_PROGRAMME_OF_PLAN[]	stuProgrammes = (NET_PROGRAMME_OF_PLAN[])new NET_PROGRAMME_OF_PLAN().toArray(MAX_PROGRAMMES_COUNT);		// 节目组信息
+        public byte[]        			byReserved = new byte[512];								// 保留字节
+    }
+
+    // 定时计划日期类型
+    public static class EM_TIMERPLAN_DATE_TYPE extends SdkStructure
+    {
+        public static final int EM_TIMERPLAN_DATE_UNKNOWN = 0;				// 未知
+        public static final int EM_TIMERPLAN_DATE_MONTH = 1;				// 每月
+        public static final int EM_TIMERPLAN_DATE_WEEK = 2;					// 每周
+        public static final int EM_TIMERPLAN_DATE_DAY = 3;					// 每日
+        public static final int EM_TIMERPLAN_DATE_CUSTOM = 4;				// 自定义
+    }
+
+    // 节目日期格式
+    public static class NET_PROGRAMME_DATA extends SdkStructure
+    {
+        public int                		dwYear;                  // 年
+        public int                		dwMonth;                 // 月
+        public int                		dwDay;                	 // 日
+
+        public String toString() {
+            return dwYear + "-" + dwMonth + "-" + dwDay;
+        }
+    }
+
+    // 节目计划中的节目信息
+    public static class NET_PROGRAMME_OF_PLAN extends SdkStructure
+    {
+        public byte[]						szProgrammeName = new byte[MAX_COMMON_STRING_64];	// 节目名称
+        public byte[]						szProgrammeID = new byte[MAX_COMMON_STRING_64];	    // 节目ID
+        public int						    bIsBgProgramme;									    // 是否背景节目, BOOL类型
+        public NET_PROGRAMME_TIME_INFO		stuSatrtTime;										// 节目开始时间
+        public NET_PROGRAMME_TIME_INFO		stuEndTime;										    // 节目结束时间
+        public byte[]        				byReserved = new byte[128];							// 保留字节
+    }
+
+    // 审核状态
+    public static class EM_REVIES_STATE extends SdkStructure
+    {
+        public static final int EM_REVIES_UNKNOWN = 0;			// 未知
+        public static final int EM_REVIES_PASS = 1;				// 通过
+        public static final int EM_REVIES_NOTPASS = 2;			// 不通过
+    }
+
+    // 修改定时节目计划输入参数
+    public static class NET_IN_MODIFY_TIMER_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           				dwSize;
+        public NET_TIMER_PLAN_INFO			stuTimerPlan;		// 定时节目计划信息
+
+        public NET_IN_MODIFY_TIMER_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 修改定时节目计划输出参数
+    public static class NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN extends SdkStructure
+    {
+        public int           				dwSize;
+
+        public NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除多个节目计划输入参数
+    public static class NET_IN_DEL_PROGRAMMEPLANS extends SdkStructure
+    {
+        public int						dwSize;
+        public int						nPlanID;															    // 节目计划ID个数
+        public PLAN_ID[]				szPlanIDArr = (PLAN_ID[])new PLAN_ID().toArray(MAX_PROGRAMMES_COUNT);	// 节目计划ID
+
+        public NET_IN_DEL_PROGRAMMEPLANS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 节目计划ID
+    public static class PLAN_ID extends SdkStructure
+    {
+        public byte[]					szPlanID = new byte[MAX_COMMON_STRING_64];	// 节目计划ID
+    }
+
+    // 删除多个节目计划输出参数
+    public static class NET_OUT_DEL_PROGRAMMEPLANS extends SdkStructure
+    {
+        public int						dwSize;
+
+        public NET_OUT_DEL_PROGRAMMEPLANS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过诱导屏ID 获取诱导屏配置信息输入参数
+    public static class NET_IN_GET_GUIDESCREEN_CFG_BYID extends SdkStructure
+    {
+        public int           			dwSize;
+        public byte[]					szScreenID = new byte[MAX_COMMON_STRING_64];  // 屏ID
+
+        public NET_IN_GET_GUIDESCREEN_CFG_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过诱导屏ID 获取诱导屏配置信息输出参数
+    public static class NET_OUT_GET_GUIDESCREEN_CFG_BYID extends SdkStructure
+    {
+        public int           					dwSize;
+        public NET_GUIDESCREEN_ATTRIBUTE_INFO	stuGuideScreenCfg;			// 诱导屏属性信息
+
+        public NET_OUT_GET_GUIDESCREEN_CFG_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有诱导屏配置信息输入参数
+    public static class NET_IN_GET_ALL_GUIDESCREEN_CFG extends SdkStructure
+    {
+        public int           				dwSize;
+
+        public NET_IN_GET_ALL_GUIDESCREEN_CFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有诱导屏配置信息输出参数
+    public static class NET_OUT_GET_ALL_GUIDESCREEN_CFG extends SdkStructure
+    {
+        public int           				dwSize;
+        public int							nMaxScreen;					// 最大诱导屏个数, 值由用户指定
+        public int							nRetScreen;					// 实际返回的诱导屏个数
+        public Pointer						pstGuideScreenCfg;			// 用于存放获取到的诱导屏属性信息, 内存由用户维护
+        // 大小为nMaxScreen 个 NET_GUIDESCREEN_ATTRIBUTE_INFO
+        // 对应 NET_GUIDESCREEN_ATTRIBUTE_INFO[]
+        public NET_OUT_GET_ALL_GUIDESCREEN_CFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过节目ID 获取节目信息输入参数
+    public static class NET_IN_GET_PROGRAMME_BYID extends SdkStructure
+    {
+        public int           				dwSize;
+        public byte[]						szProgrammeID = new byte[MAX_COMMON_STRING_64];	// 节目ID
+
+        public NET_IN_GET_PROGRAMME_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过节目ID 获取节目信息输出参数
+    public static class NET_OUT_GET_PROGRAMME_BYID extends SdkStructure
+    {
+        public int           				dwSize;
+        public NET_PROGRAMME_INFO			stuProgrammeInfo;			// 节目配置信息
+
+        public NET_OUT_GET_PROGRAMME_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有节目信息输入参数
+    public static class NET_IN_GET_ALL_PROGRAMMES extends SdkStructure
+    {
+        public int           				dwSize;
+
+        public NET_IN_GET_ALL_PROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有节目信息输出参数
+    public static class NET_OUT_GET_ALL_PROGRAMMES extends SdkStructure
+    {
+        public int           			    dwSize;
+        public int						    nMaxCnt;					// pstProgrammeInfo最大NET_PROGRAMME_INFO 个数
+        public int						    nRetCnt;					// pstProgrammeInfo实际返回的 NET_PROGRAMME_INFO 个数
+        public Pointer					    pstProgrammeInfo;		    // 节目配置信息, 内存由用户维护,对应 NET_PROGRAMME_INFO[]
+        // 大小为 nMaxCnt 个  NET_PROGRAMME_INFO
+
+        public NET_OUT_GET_ALL_PROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有节目的简要信息输入参数
+    public static class NET_IN_GET_ALL_BRIEFLYPROGRAMMES extends SdkStructure
+    {
+        public int           			    dwSize;
+
+        public NET_IN_GET_ALL_BRIEFLYPROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有节目的简要信息输出参数
+    public static class NET_OUT_GET_ALL_BRIEFLYPROGRAMMES extends SdkStructure
+    {
+        public int           				 dwSize;
+        public int							 nRetCnt;									// 实际返回的个数
+        public NET_BRIEFLY_PROGRAMME_INFO[]	 stuBriProgrammes = (NET_BRIEFLY_PROGRAMME_INFO[])new NET_BRIEFLY_PROGRAMME_INFO().toArray(MAX_PROGRAMMES_COUNT);	// 节目简要信息
+
+        public NET_OUT_GET_ALL_BRIEFLYPROGRAMMES() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 节目简要信息
+    public static class NET_BRIEFLY_PROGRAMME_INFO extends SdkStructure
+    {
+        public byte[]						szProgrammeName = new byte[MAX_COMMON_STRING_64];	// 节目名称
+        public byte[]						szProgrammeID = new byte[MAX_COMMON_STRING_64];	    // 节目ID
+        public int							emProgrammeType;									// 简要节目信息类型,对应枚举  EM_BRIEFLYPROGRAM_TYPE
+        public int							bEnable;										    // 节目是否启用, BOOL类型
+        public int							bTempletState;										// 节目是否保存为模板, BOOL类型
+        public byte[]        				byReserved = new byte[512];							// 保留字节
+    }
+
+    // 简要节目信息类型
+    public static class EM_BRIEFLYPROGRAM_TYPE extends SdkStructure
+    {
+        public static final int EM_BRIEFLYPROGRAM_UNKNOWN = 0;				// 未知
+        public static final int EM_BRIEFLYPROGRAM_BAR = 1;					// 广告节目
+        public static final int EM_BRIEFLYPROGRAM_ORDINARY = 2;				// 普通节目
+    }
+
+    // 获取所有节目计划输入参数
+    public static class NET_IN_GET_ALL_PROGRAMMEPLANS extends SdkStructure
+    {
+        public int           				dwSize;
+
+        public NET_IN_GET_ALL_PROGRAMMEPLANS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取所有节目计划输出参数
+    public static class NET_OUT_GET_ALL_PROGRAMMEPLANS extends SdkStructure
+    {
+        public int           				dwSize;
+        public int							nMaxPlanCnt;			// 即时节目和定时节目计划最大个数, 由用户指定
+        public int							nRetImmCnt;				// 实际返回的即时节目计划个数
+        public Pointer						pstImmePlan;			// 即时节目计划信息, 对应  NET_IMMEDIATELY_PLAN_INFO[],
+        // 大小 nMaxPlanCnt 个 NET_IMMEDIATELY_PLAN_INFO
+        public int							nRetTimerCnt;			// 实际返回的定时节目计划个数
+        public Pointer						pstTimerPlan;			// 定时节目计划信息,对应  NET_TIMER_PLAN_INFO[],
+        // 大小 nMaxPlanCnt 个 NET_TIMER_PLAN_INFO
+
+        public NET_OUT_GET_ALL_PROGRAMMEPLANS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 即时计划与定时计划信息数组
+    public static class NET_PROGRAMME_PLANS_INFO extends SdkStructure {
+        public NET_IMMEDIATELY_PLAN_INFO[] szImmePlan;   			// 即时节目计划信息数组
+        public NET_TIMER_PLAN_INFO[] szTimerPlan;					// 定时节目计划信息数组
+
+        public NET_PROGRAMME_PLANS_INFO() {}
+
+        public NET_PROGRAMME_PLANS_INFO(int maxPlanCount) {
+            szImmePlan = new NET_IMMEDIATELY_PLAN_INFO[maxPlanCount];
+            szTimerPlan = new NET_TIMER_PLAN_INFO[maxPlanCount];
+            for(int i = 0; i < maxPlanCount; i++) {
+                szImmePlan[i] = new NET_IMMEDIATELY_PLAN_INFO();
+                szTimerPlan[i] = new NET_TIMER_PLAN_INFO();
+            }
+        }
+    }
+
+    // 通过节目计划ID 获取节目计划输入参数
+    public static class NET_IN_GET_PROGRAMMEPLAN_BYID extends SdkStructure
+    {
+        public int           				dwSize;
+        public byte[]						szPlanID = new byte[MAX_COMMON_STRING_64];		// 节目计划ID
+
+        public NET_IN_GET_PROGRAMMEPLAN_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过节目计划ID 获取节目计划输出参数
+    public static class NET_OUT_GET_PROGRAMMEPLAN_BYID extends SdkStructure
+    {
+        public int           				dwSize;
+        public int							emPlanType;				// 节目计划类型, 对应  EM_PROGRAMMEPLAN_TYPE
+        public NET_IMMEDIATELY_PLAN_INFO	stuImmePlan;			// 即时节目计划信息, emPlanType 为 EM_PROGRAMMEPLAN_IMME 时有效
+        public NET_TIMER_PLAN_INFO			stuTimerPlan;			// 定时节目计划信息, emPlanType 为 EM_PROGRAMMEPLAN_TIMER 时有效
+
+        public NET_OUT_GET_PROGRAMMEPLAN_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 节目计划类型
+    public static class EM_PROGRAMMEPLAN_TYPE extends SdkStructure
+    {
+        public static final int EM_PROGRAMMEPLAN_UNKNOWN = 0;		// 未知
+        public static final int EM_PROGRAMMEPLAN_IMME = 1;			// 即时计划
+        public static final int EM_PROGRAMMEPLAN_TIMER = 2;			// 定时计划
+    }
+
+    //设置光带状态信息输入参数
+    public static class NET_IN_SET_GD_STATUS extends SdkStructure
+    {
+        public int					dwSize;
+        public byte[]				szScreenID = new byte[MAX_COMMON_STRING_64];		// 分屏ID, 即窗口ID
+        public int					nGDNum;												// 光带总数
+        public int[]				emStatus = new int[MAX_GD_COUNT];					// 光带信息, 对应  EM_GD_COLOR_TYPE
+
+        public NET_IN_SET_GD_STATUS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //设置光带状态信息输出参数
+    public static class NET_OUT_SET_GD_STATUS extends SdkStructure
+    {
+        public int					dwSize;
+
+        public NET_OUT_SET_GD_STATUS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 光带颜色类型
+    public static class EM_GD_COLOR_TYPE extends SdkStructure
+    {
+        public static final int EM_GD_COLOR_RED = 0;		// 红色
+        public static final int EM_GD_COLOR_GREEN = 1;		// 绿色
+        public static final int EM_GD_COLOR_YELLOW = 2;		// 黄色
+    }
+
+
+    // 用户信息表
+    public static class USER_MANAGE_INFO_EX extends SdkStructure
+    {
+        public int                	  dwRightNum;                    // 权限信息
+        public OPR_RIGHT_EX[]         rightList = (OPR_RIGHT_EX[])new OPR_RIGHT_EX().toArray(NET_MAX_RIGHT_NUM);
+        public int                	  dwGroupNum;                    // 用户组信息
+        public USER_GROUP_INFO_EX[]   groupList = (USER_GROUP_INFO_EX[])new USER_GROUP_INFO_EX().toArray(NET_MAX_GROUP_NUM);
+        public int                	  dwUserNum;                     // 用户信息
+        public USER_INFO_EX[]         userList = (USER_INFO_EX[])new USER_INFO_EX().toArray(NET_MAX_USER_NUM);
+        public int                	  dwFouctionMask;                // 掩码;0x00000001 - 支持用户复用,0x00000002 - 密码修改需要校验
+        public byte                   byNameMaxLength;               // 支持的用户名最大长度
+        public byte                   byPSWMaxLength;                // 支持的密码最大长度
+        public byte[]                 byReserve = new byte[254];
+    }
+
+    // 权限信息
+    public static class OPR_RIGHT_EX extends SdkStructure
+    {
+        public int                	  dwID;
+        public byte[]                 name = new byte[NET_RIGHT_NAME_LENGTH];
+        public byte[]                 memo = new byte[NET_MEMO_LENGTH];
+    }
+
+    // 用户组信息
+    public static class USER_GROUP_INFO_EX extends SdkStructure
+    {
+        public int                	  dwID;
+        public byte[]                 name = new byte[NET_USER_NAME_LENGTH_EX];
+        public int                	  dwRightNum;
+        public int[]                  rights = new int[NET_MAX_RIGHT_NUM];
+        public byte[]                 memo = new byte[NET_MEMO_LENGTH];
+    }
+
+    // 用户信息
+    public static class USER_INFO_EX extends SdkStructure
+    {
+        public int                	  dwID;
+        public int                	  dwGroupID;
+        public byte[]                 name = new byte[NET_USER_NAME_LENGTH_EX];
+        public byte[]                 passWord = new byte[NET_USER_PSW_LENGTH_EX];
+        public int                 	  dwRightNum;
+        public int[]                  rights = new int[NET_MAX_RIGHT_NUM];
+        public byte[]                 memo = new byte[NET_MEMO_LENGTH];
+        public int                 	  dwFouctionMask;                // 掩码,0x00000001 - 支持用户复用
+        public byte[]                 byReserve = new byte[32];
+    }
+
+    // CLIENT_DownloadRemoteFile 接口输入参数(文件下载)
+    public static class NET_IN_DOWNLOAD_REMOTE_FILE extends SdkStructure
+    {
+        public int               	 dwSize;
+        public Pointer           	 pszFileName;                    // 需要下载的文件名
+        public Pointer         	 	 pszFileDst;                     // 存放文件路径
+
+        public NET_IN_DOWNLOAD_REMOTE_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DownloadRemoteFile 接口输出参数(文件下载)
+    public static class NET_OUT_DOWNLOAD_REMOTE_FILE extends SdkStructure
+    {
+        public int               	dwSize;
+        public int				dwMaxFileBufLen;				// 文件缓存区pstFileBuf的大小, 由用户指定
+        public Pointer				pstFileBuf;					// 文件缓存区, 由用户申请和释放
+        public int				dwRetFileBufLen;				// 缓存区中返回的实际文件数据大小
+        public byte[]              	byReserved=new byte[4];            		// 字节对齐
+        public NET_OUT_DOWNLOAD_REMOTE_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车牌对比, 对应事件 EVENT_IVS_VEHICLE_RECOGNITION
+    public static class DEV_EVENT_VEHICLE_RECOGNITION_INFO extends SdkStructure
+    {
+        public byte[]                	szName = new byte[128];                     // 事件名称
+        public double              	 	PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         	 	UTC;                                        // 事件发生的时间
+        public int                 	 	nEventID;                                   // 事件ID
+        public int                 		nVehicleAction;                             // 车辆动作 0-未知,1-在检测区域内,2-离开检测区域
+
+        public NET_MSG_OBJECT        	stuObject;                                  // 检测到的物体
+        public NET_MSG_OBJECT        	stuVehicle;                                 // 车身信息
+
+        public NET_SEAT_INFO       	 	stuMainSeatInfo; 							// 主驾驶位信息
+        public NET_SEAT_INFO       	 	stuSlaveSeatInfo; 							// 副驾驶位信息
+        public int                 	 	nVehicleAttachNum;							// 车上附件数量
+        public NET_VEHICLE_ATTACH[] 	stuVehicleAttach = (NET_VEHICLE_ATTACH[])new NET_VEHICLE_ATTACH().toArray(8); // 车上附件数据
+        public byte[]                	szCountry = new byte[32];  					// 国家,2字节,符合ISO3166规范
+
+        public int                 		nCarCandidateNum; 							// 候选车辆数量
+        public NET_CAR_CANDIDATE_INFO[] stuCarCandidate = (NET_CAR_CANDIDATE_INFO[])new NET_CAR_CANDIDATE_INFO().toArray(MAX_CAR_CANDIDATE_NUM);  // 候选车辆数据
+
+        public EVENT_COMM_INFO     		stCommInfo;                                 // 公共信息
+        public int                 		nChannel;                                   // 通道号
+        public byte[]                	bReserved = new byte[1024];
+    }
+
+    // 事件类型EVENT_IVS_ELEVATOR_ABNORMAL(电动扶梯运行异常事件)对应的数据块描述信息
+    public static class DEV_EVENT_ELEVATOR_ABNORMAL_INFO extends SdkStructure
+    {
+        public int                 nChannelID;							// 通道号
+        public int                 nEventID;                    		// 事件ID
+        public byte[]              szName  = new byte[SDK_EVENT_NAME_LEN];          // 事件名称
+        public double              dbPTS;                              	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                	// 事件发生的时间
+        
+        public int                 nAction;                            // 1:开始 2:停止
+        public int 		           emClassType;						   // 智能事件所属大类,参考EM_CLASS_TYPE
+        public int				   nDetectRegionPointNum;				// 扶梯检测区顶点数
+        public NET_POINT[]		   stuDetectRegion = new NET_POINT[20];	// 扶梯检测区多边形类型,多边形中每个顶点的坐标归一化到[0,8191]区间。
+        public NET_POINT[]         stuDirection = new NET_POINT[2];     // 扶梯的运动方向,第一个点是起点,第二个点是终点。坐标归一化到[0,8191]区间。
+    	public Pointer             pstuImageInfo;					    // 图片信息数组,指针对应NET_IMAGE_INFO_EX2结构体数组    
+    	public int				   nImageInfoNum;						// 图片信息个数
+    	public NET_EVENT_INFO_EXTEND	stuEventInfoEx = new NET_EVENT_INFO_EXTEND();// 事件公共扩展字段结构体
+        public byte[]              byReserved1 = new byte[908];		    // 保留字节
+        public DEV_EVENT_ELEVATOR_ABNORMAL_INFO() {
+    		for(int i=0;i<stuDetectRegion.length;i++){
+    			stuDetectRegion[i]=new NET_POINT();
+    		}
+    		for(int i=0;i<stuDirection.length;i++){
+    			stuDirection[i]=new NET_POINT();
+    		}
+        }
+    }
+
+    public static class NET_CAR_CANDIDATE_INFO extends SdkStructure
+    {
+        public NET_VEHICLE_INFO    		stuVehicleInfo=new NET_VEHICLE_INFO();							   // 车辆信息
+        public int                 		nDifferentAttributresNum;				   // 和数据库不相符的属性数目
+        public int[]                 	nDifferentAttributres = new int[16]; 	   // 和数据库不相符的属性集合,元素值取值意义:0-未知 1-车牌属地 2-车标 3-车型 4-车色 5-车牌颜色
+
+        public byte[]                	bReserved = new byte[512];
+    }
+
+    public static class NET_VEHICLE_INFO extends SdkStructure
+    {
+        public int                		nUID;									   // 车辆唯一标识符,由服务端生成用于程序中表示惟一
+        public byte[]                	szGroupID = new byte[64];				   // 车辆所属组ID
+        public byte[]                	szGroupName = new byte[128]; 			   // 车辆所属组名
+        public byte[]                	szPlateNumber = new byte[64]; 			   // 车牌号码
+        public byte[]                	szPlateCountry = new byte[4]; 			   // 车辆所在国家,2字节,符合ISO3166规范
+
+        public int                 		nPlateType;								   // 车牌类型
+        // 01  大型汽车号牌 黄底黑字
+        // 02  小型汽车号牌 蓝底白字
+        // 03  使馆汽车号牌 黑底白字、红“使”字
+        // 04  领馆汽车号牌 黑底白字、红“领”字
+        // 05  境外汽车号牌 黑底白、红字
+        // 06  外籍汽车号牌 黑底白字
+        // 13  农用运输车号牌 黄底黑字黑框线
+        // 15  挂车号牌 黄底黑字黑框线
+        // 16  教练汽车号牌 黄底黑字黑框线
+        // 18  试验汽车号牌
+        // 20  临时入境汽车号牌 白底红字黑“临时入境”
+        // 22  临时行驶车号牌 白底黑字黑线框
+        // 23  公安警用汽车号牌
+
+        public int                 		nVehicleType;							   // 车型(轿车、卡车等)
+        // 001  巡逻车
+        // 002  交警车辆
+        // 003  消防车
+        // 004  单兵
+        // 005  其他警车
+        // 006  其他设备
+        // 020  政府车辆
+        // 031  校车
+        // 032  运钞车
+        // 033  客运车辆
+        // 034  公交车
+        // 035  出租车
+        // 036  危险品车辆
+
+        public int                 		nBrand;									   // 车辆车标,需要通过映射表得到真正的车标.同卡口事件的CarLogoIndex
+        public int                 		nCarSeries;								   // 车辆子品牌,需要通过映射表得到真正的子品牌,同卡口事件的SubBrand
+        public int                 		nCarSeriesModelYearIndex; 				   // 车辆品牌年款,需要通过映射表得到真正的年款,同卡口事件的BrandYear 车头年款序号范围1~999;车尾年款序号范围1001~1999;0表示未知;1000预留。
+        public NET_COLOR_RGBA      		stuVehicleColor=new NET_COLOR_RGBA();					 	   // 车色 第一个元素表示红色分量值; 第二个元素表示绿色分量值; 第三个元素表示蓝色分量值; 第四个元素表示透明度分量(无意义)
+        public NET_COLOR_RGBA      		stuPlateColor=new NET_COLOR_RGBA();  						   // 车牌颜色,规则同车色
+        public byte[]                	szOwnerName = new byte[64];				   // 车主名称
+        public int                		nSex; 									   // 车主性别
+        public int                 		nCertificateType; 						   // 车主证件类型 0-未知 1-证件 2-护照 3-军官证
+        public byte[]                	szPersonID = new byte[32];				   // 人员证件号码,工号,或其他编号
+        public byte[]                	szOwnerCountry = new byte[4]; 			   // 车主国籍,2字节,符合ISO3166规范
+        public byte[]                	szProvince = new byte[64];				   // 省份
+        public byte[]                	szCity = new byte[64];					   // 城市
+        public byte[]                	szHomeAddress = new byte[128]; 			   // 注册人员家庭地址(IVSS需求)
+        public byte[]                	szEmail = new byte[32];					   // 车主电子邮箱
+        public byte[]                	szPhoneNo = new byte[128];				   // 注册车主电话号码
+        public	int				   nVehicleColorState;						//车色状态:0-未知,1-已知
+        public	int				   nPlateColorState;						    //车牌颜色状态:0-未知,1-已知
+        public byte[]                	bReserved = new byte[504];
+
+        @Override
+        public String toString() {
+            return "NET_VEHICLE_INFO{" +
+                    "nUID=" + nUID +
+                    ", szGroupID=" + new String(szGroupID) +
+                    ", szGroupName=" + new String(szGroupName) +
+                    ", szPlateCountry=" + new String(szPlateCountry) +
+                    ", nPlateType=" + nPlateType +
+                    ", nVehicleType=" + nVehicleType +
+                    ", nBrand=" + nBrand +
+                    ", nCarSeries=" + nCarSeries +
+                    ", nCarSeriesModelYearIndex=" + nCarSeriesModelYearIndex +
+                    ", stuVehicleColor=" + stuVehicleColor +
+                    ", stuPlateColor=" + stuPlateColor +
+                    ", szOwnerName=" + new String(szOwnerName) +
+                    ", nSex=" + nSex +
+                    ", nCertificateType=" + nCertificateType +
+                    ", szPersonID=" + new String(szPersonID) +
+                    ", szOwnerCountry=" + new String(szOwnerCountry) +
+                    ", szProvince=" + new String(szProvince) +
+                    ", szCity=" + new String(szCity) +
+                    ", szHomeAddress=" + new String(szHomeAddress) +
+                    ", szEmail=" + new String(szEmail) +
+                    ", szPhoneNo=" + new String(szPhoneNo) +
+                    ", nVehicleColorState=" + nVehicleColorState +
+                    ", nPlateColorState=" + nPlateColorState +
+                    ", bReserved=" + new String(bReserved) +
+                    '}';
+        }
+    }
+
+    //获取播放盒上全部节目信息接口输入参数
+    public static class NET_IN_GET_ALL_PLAYBOX_PROGRAM extends SdkStructure
+    {
+        public int           			dwSize;
+
+        public NET_IN_GET_ALL_PLAYBOX_PROGRAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //获取播放盒上全部节目信息接口输出参数
+    public static class NET_OUT_GET_ALL_PLAYBOX_PROGRAM extends SdkStructure
+    {
+        public int           			dwSize;
+        public int						nMaxProgramCount;			// 节目信息最大个数,由用户指定
+        public int						nRetProgramCount;			// 实际返回的节目信息个数
+        public Pointer				    pstProgramInfo;			    // 播放盒上的节目信息, 内存资源由用户维护,对应 NET_PROGRAM_ON_PLAYBOX[]
+
+        public NET_OUT_GET_ALL_PLAYBOX_PROGRAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 播放盒节目信息
+    public static class NET_PROGRAM_ON_PLAYBOX extends SdkStructure
+    {
+        public byte[]					  szProgrammeName = new byte[MAX_COMMON_STRING_64];	  // 节目名称
+        public byte[]					  szProgrammeID = new byte[MAX_COMMON_STRING_64];	  // 节目ID, 添加节目时不需要指定
+        public int						  bEnable;											  // 节目是否启用
+        public int						  emProgramType;									  // 节目类型, 参考  EM_PLAYBOXPROGRAM_TYPE
+        public NET_PROGRAM_LOGO_INFO	  stuLogoInfo;										  // LOGO节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_LOGO时有效
+        public NET_PROGRAM_BAR_INFO		  stuBarInfo;										  // 广告条节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_BAR时有效
+        public NET_PROGRAM_ORDINARY_INFO  stuOrdinaryInfo = new NET_PROGRAM_ORDINARY_INFO();  // 普通节目信息, emProgramType为EM_PROGRAM_ON_PLAYBOX_ORDINARY时有效, 此参数需要在库里new对象
+        public byte[]        			  byReserved = new byte[512];						  // 保留字节
+    }
+
+    // 播放盒节目类型
+    public static class EM_PLAYBOXPROGRAM_TYPE extends SdkStructure
+    {
+        public static final int EM_PROGRAM_ON_PLAYBOX_LOGO = 0;								// LOGO, 对应结构体 NET_PROGRAM_LOGO_INFO
+        public static final int EM_PROGRAM_ON_PLAYBOX_BAR = 1;								// 广告条, 对应结构体 NET_PROGRAM_BAR_INFO
+        public static final int EM_PROGRAM_ON_PLAYBOX_ORDINARY = 2;							// 普通节目, 对应结构体 NET_PROGRAM_ORDINARY_INFO
+    }
+
+    // LOGO节目信息
+    public static class NET_PROGRAM_LOGO_INFO extends SdkStructure
+    {
+        public byte[]		 szLogoPath = new byte[MAX_COMMON_STRING_128];			// Logo路径
+        public NET_RECT		 stuBackgroundRect;										// Logo位置
+        public int			 nDiaphaneity;											// 透明度, 0-100
+        public byte[]        byReserved = new byte[128];							// 保留字节
+    }
+
+    // 广告条节目信息
+    public static class NET_PROGRAM_BAR_INFO extends SdkStructure
+    {
+        public byte[]			szContent = new byte[MAX_COMMON_STRING_512];		// 广告内容
+        public NET_COLOR_RGBA	stuFontColor;										// 字体颜色
+        public int				nFontSize;											// 字体大小
+        public byte[]			szFontStyle = new byte[MAX_COMMON_STRING_32];		// 字体类型
+        public int				nPlaySpeed;											// 播放速度
+        public NET_RECT			stuBackgroundRect;									// 广告条位置
+        public NET_COLOR_RGBA	stuBackColor;										// 广告条背景颜色
+        public int				nDiaphaneity;										// 透明度, 0-100
+        public byte[]        	byReserved = new byte[128];							// 保留字节
+    }
+
+    // 普通广告节目信息
+    public static class NET_PROGRAM_ORDINARY_INFO extends SdkStructure
+    {
+        public int							bTempletState;							// 节目是否保存为模板
+        public byte[]						szDescription = new byte[MAX_COMMON_STRING_128];	// 节目描述信息
+        public int							nWidth;									// 画布宽度
+        public int							nHeight;								// 画布高度
+        public int							nWinCount;								// 窗口数量
+        public NET_PLAYBOX_WINDOWS_INFO[]	stuWindowsInfo = (NET_PLAYBOX_WINDOWS_INFO[])new NET_PLAYBOX_WINDOWS_INFO().toArray(MAX_WINDOWS_COUNT);		// 窗口信息
+        public byte[]        				byReserved = new  byte[128];						// 保留字节
+    }
+
+    // 播放盒上窗口信息
+    public static class NET_PLAYBOX_WINDOWS_INFO extends SdkStructure
+    {
+        public NET_RECT					stuRect;							// 窗口位置
+        public int						nZorder;							// 窗口Z轴序
+        public int						nVolume;							// 窗口音量,相对整屏音量的百分比
+        public NET_COLOR_RGBA			stuBackColor;						// 窗口背景颜色
+        public int						nDiaphaneity;						// 窗口背景透明度0-100
+        public int 						emTourPeriodType;					// 窗口轮训类型 EM_TOURPERIOD_TYPE
+        public int						nTourPeriodTime;					// 自定义轮训时间,单位秒, 轮训类型为自定义轮训时有效
+        public int						bAutoPlay;							// 预览自动播放,Video元素有效
+        public int						bLoopPlay;							// 预览循环播放,Video元素有效
+        public int						nElementsCount;						// 诱导屏窗口元素个数
+        public Pointer					pstElementsBuf;						// 播放盒窗口元素信息缓存区, 根据类型对应不同的结构体
+        // 填充多个元素信息, 每个元素信息内容为 NET_ELEMENT_COMMON_INFO + 元素类型对应的结构体
+        public int 						nBufLen;							// 诱导屏窗口元素信息缓存区大小
+        public byte[]        			byReserved = new byte[128];			// 保留字节
+    }
+
+    // 通过programme ID 获取播放盒上对应的节目信息输入参数
+    public static class NET_IN_GET_PLAYBOX_PROGRAM_BYID extends SdkStructure
+    {
+        public int           			dwSize;
+        public byte[]					szProgrammeID = new byte[MAX_COMMON_STRING_64];	// 节目ID
+
+        public NET_IN_GET_PLAYBOX_PROGRAM_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过programme ID 获取播放盒上对应的节目信息输出参数
+    public static class NET_OUT_GET_PLAYBOX_PROGRAM_BYID extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_PROGRAM_ON_PLAYBOX	stuPlayBoxProgram;					// 播放盒节目信息
+
+        public NET_OUT_GET_PLAYBOX_PROGRAM_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在播放盒上添加一个节目信息输入参数
+    public static class NET_IN_ADD_ONE_PLAYBOX_PRAGROM extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_PROGRAM_ON_PLAYBOX	stuPlayBoxProgram;			// 播放盒节目信息
+
+        public NET_IN_ADD_ONE_PLAYBOX_PRAGROM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在播放盒上添加一个节目信息输出参数
+    public static class NET_OUT_ADD_ONE_PLAYBOX_PRAGROM extends SdkStructure
+    {
+        public int           			dwSize;
+        public byte[]					szProgrammeID = new byte[MAX_COMMON_STRING_64];	// 节目ID
+
+        public NET_OUT_ADD_ONE_PLAYBOX_PRAGROM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在播放盒上修改指定ID的节目信息输入参数
+    public static class NET_IN_MODIFY_PLAYBOX_PROGRAM_BYID extends SdkStructure
+    {
+        public int           			dwSize;
+        public NET_PROGRAM_ON_PLAYBOX	stuPlayBoxProgram;			// 播放盒节目信息
+
+        public NET_IN_MODIFY_PLAYBOX_PROGRAM_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在播放盒上修改指定ID的节目信息输出参数
+    public static class NET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID extends SdkStructure
+    {
+        public int           			dwSize;
+
+        public NET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云台定位信息报警
+    public static class NET_PTZ_LOCATION_INFO extends SdkStructure
+    {
+        public int     			nChannelID;                 		// 通道号
+        public int     			nPTZPan;                    		// 云台水平运动位置,有效范围:[0,3600]
+        public int     			nPTZTilt;                   		// 云台垂直运动位置,有效范围:[-1800,1800]
+        public int    			nPTZZoom;                   		// 云台光圈变动位置,有效范围:[0,128]
+        public byte    			bState;                     		// 云台运动状态, 0-未知 1-运动 2-空闲
+        public byte   		 	bAction;                    		// 云台动作,
+                                                                    // 255-未知,0-预置点,1-线扫,2-巡航,3-巡迹,4-水平旋转,5-普通移动,6-巡迹录制,
+                                                                    // 7-全景云台扫描,8-热度图,9-精确定位,10-设备校正,11-智能配置,12-云台重启
+        public byte    			bFocusState;                		// 云台聚焦状态, 0-未知, 1-运动状态, 2-空闲
+        public byte    			bEffectiveInTimeSection;   			// 在时间段内预置点状态是否有效
+                                                                    // 如果当前上报的预置点是时间段内的预置点,则为1,其他情况为0
+        public int     			nPtzActionID;               		// 巡航ID号
+        public int   			dwPresetID;                 		// 云台所在预置点编号
+        public float   			fFocusPosition;             		// 聚焦位置
+        public byte    			bZoomState;                 		// 云台ZOOM状态,0-未知,1-ZOOM,2-空闲
+        public byte[]    		bReserved = new byte[3];            // 对齐
+        public int   			dwSequence;                 		// 包序号,用于校验是否丢包
+        public int   			dwUTC;                      		// 对应的UTC(1970-1-1 00:00:00)秒数。
+        public int 				emPresetStatus; 					// 预置点位置,参考 EM_DH_PTZ_PRESET_STATUS
+        public int	    		nZoomValue;				    		// 真实变倍值 当前倍率(扩大100倍表示)
+        public NET_PTZSPACE_UNNORMALIZED stuAbsPosition;            // 云台方向与放大倍数(扩大100倍表示)
+                                                                    // 第一个元素为水平角度,0-36000;
+                                                                    // 第二个元素为垂直角度,(-18000)-(18000);
+                                                                    // 第三个元素为显示放大倍数,0-MaxZoom*100
+        public int		nFocusMapValue;				                // 聚焦映射值
+        public int		nZoomMapValue;				                // 变倍映射值
+    	public int      emPanTiltStatus;                            //云台P/T运动状态
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();// 事件公共扩展字段结构体
+        public byte[]    reserved = new byte[696];                  // 保留字段
+    }
+
+    // 云台定位中非归一化坐标和变倍
+    public static class NET_PTZSPACE_UNNORMALIZED extends SdkStructure
+    {
+        public int                    nPosX;           // x坐标
+        public int                    nPosY;           // y坐标
+        public int                    nZoom;           // 放大倍率
+        public byte[]                 byReserved = new byte[52];   // 预留字节
+    }
+
+    // 预置点状态枚举
+    public static class EM_DH_PTZ_PRESET_STATUS extends SdkStructure
+    {
+        public static final int EM_DH_PTZ_PRESET_STATUS_UNKNOWN = 0;        // 未知
+        public static final int EM_DH_PTZ_PRESET_STATUS_REACH = 1;          // 预置点到达
+        public static final int EM_DH_PTZ_PRESET_STATUS_UNREACH = 2;        // 预置点未到达
+    }
+
+
+
+    //通用曝光属性配置
+    public static class NET_VIDEOIN_EXPOSURE_NORMAL_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public int					emCfgType;								// 配置类型,获取和设置时都要指定,对应枚举  NET_EM_CONFIG_TYPE
+        public int 					emExposureMode;							// 曝光模式, 对应枚举  NET_EM_EXPOSURE_MODE
+        public int					nAntiFlicker;							// 防闪烁0-Outdoor  1-50Hz防闪烁 2-60Hz防闪烁
+        public int					nCompensation;							// 曝光补偿0-100
+        public int					nGain;									// 增益值
+        public int					nGainMin;								// 增益下限0-100
+        public int					nGainMax;								// 增益上限0-100
+        public int					nExposureIris;							// 光圈值,模式为光圈优先时有效,0-100
+        public double				dbExposureValue1;						// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
+        public double				dbExposureValue2;						// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms,且必须不小于"ExposureValue1"取值
+
+        public Boolean              bIrisAuto;              // 自动光圈使能
+        public int                  emDoubleExposure;       // 双快门的支持类型
+        public NET_VIDEOIN_EXPOSURE_NORMAL_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 每个通道对应的配置类型
+    public static class NET_EM_CONFIG_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_CONFIG_DAYTIME = 0;				   // 白天
+        public static final int NET_EM_CONFIG_NIGHT = 1;				   // 夜晚
+        public static final int NET_EM_CONFIG_NORMAL = 2;				   // 普通
+    }
+
+    // 透雾模式
+    public static class NET_EM_DEFOG_MODE extends SdkStructure {
+        public static final int NET_EM_DEFOG_UNKNOW = 0;				   // 未知模式
+        public static final int NET_EM_DEFOG_OFF = 1;				   // 关闭
+        public static final int NET_EM_DEFOG_AUTO = 2;				   // 自动
+        public static final int NET_EM_DEFOG_MANAUL = 3;				   // 手动
+    }
+
+    // 大气光模式枚举
+    public static class NET_EM_INTENSITY_MODE extends SdkStructure {
+        public static final int NET_EM_INTENSITY_MODE_UNKNOW = 0;				   // 未知方式
+        public static final int NET_EM_INTENSITY_MODE_AUTO = 1;				   // 自动
+        public static final int NET_EM_INTENSITY_MODE_MANUAL = 2;				   // 手动
+    }
+
+    // 曝光模式
+    public static class NET_EM_EXPOSURE_MODE extends SdkStructure
+    {
+        public static final int NET_EM_EXPOSURE_AUTO = 0;					// 默认自动
+        public static final int NET_EM_EXPOSURE_LOWNICE = 1;				// 低噪声
+        public static final int NET_EM_EXPOSURE_ANTISHADOW = 2;				// 防拖影
+        public static final int NET_EM_EXPOSURE_MANUALRANGE	= 4;			// 手动区间
+        public static final int NET_EM_EXPOSURE_APERTUREFIRST = 5;			// 光圈优先
+        public static final int NET_EM_EXPOSURE_MANUALFIXATION = 6;			// 手动固定
+        public static final int NET_EM_EXPOSURE_GIANFIRST = 7;				// 增益优先
+        public static final int NET_EM_EXPOSURE_SHUTTERFIRST = 8;			// 快门优先
+        public static final int NET_EM_EXPOSURE_FLASHMATCH = 9;				// 闪光灯匹配模式
+    }
+
+    // 背光模式
+    public static class NET_EM_BACK_MODE extends SdkStructure
+    {
+        public static final int NET_EM_BACKLIGHT_MODE_UNKNOW = 0;			// 未知模式
+        public static final int NET_EM_BACKLIGHT_MODE_OFF = 1;				// 关闭
+        public static final int NET_EM_BACKLIGHT_MODE_BACKLIGHT = 2;		// 背光补偿
+        public static final int NET_EM_BACKLIGHT_MODE_WIDEDYNAMIC = 3;		// 宽动态
+        public static final int NET_EM_BACKLIGHT_MODE_GLAREINHIBITION = 4;	// 强光抑制
+        public static final int NET_EM_BACKLIGHT_MODE_SSA = 5;				// 场景自适应
+    }
+
+    // 背光补偿模式
+    public static class NET_EM_BLACKLIGHT_MODE extends SdkStructure
+    {
+        public static final int NET_EM_BLACKLIGHT_UNKNOW = 0;				// 未知模式
+        public static final int NET_EM_BLACKLIGHT_DEFAULT = 1;				// 默认模式
+        public static final int NET_EM_BLACKLIGHT_REGION = 2;				// 自定义区域模式
+    }
+
+    // 背光配置
+    public static class NET_VIDEOIN_BACKLIGHT_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public int 					emCfgType;						// 配置类型,获取和设置时都要指定, 对应枚举  NET_EM_CONFIG_TYPE
+        public int					emBlackMode;					// 背光模式, 对应枚举  NET_EM_BACK_MODE
+        public int					emBlackLightMode;				// 背光补偿模式, 对应枚举  NET_EM_BLACKLIGHT_MODE
+        public NET_RECT				stuBacklightRegion;     		// 背光补偿区域
+        public int					nWideDynamicRange;				// 宽动态值,emBlackMode为NET_EM_BACKLIGHT_MODE_WIDEDYNAMIC时生效
+        public int					nGlareInhibition;				// 强光抑制0-100,emBlackMode为NET_EM_BACKLIGHT_MODE_GLAREINHIBITION时生效
+
+        public NET_VIDEOIN_BACKLIGHT_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 聚焦模式配置
+    public static class NET_VIDEOIN_FOCUSMODE_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public int					emCfgType;						// 配置类型,获取和设置时都要指定,对应枚举 NET_EM_CONFIG_TYPE
+        public int				    emFocusMode;					// 聚焦模式, 对应枚举  NET_EM_FOCUS_MODE
+
+        public NET_VIDEOIN_FOCUSMODE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 聚焦模式
+    public static class NET_EM_FOCUS_MODE extends SdkStructure
+    {
+        public static final int NET_EM_FOCUS_OFF = 0;				// 关闭
+        public static final int NET_EM_FOCUS_ASSIST = 1;			// 辅助聚焦
+        public static final int NET_EM_FOCUS_AUTO = 2;				// 自动聚焦
+        public static final int NET_EM_FOCUS_SEMI_AUTO = 3;			// 半自动聚焦
+        public static final int NET_EM_FOCUS_MANUAL = 4;			// 手动聚焦
+    }
+
+    // 图像属性配置
+    public static class NET_VIDEOIN_IMAGE_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public int					emCfgType;						// 配置类型,获取和设置时都要制定,对应枚举 NET_EM_CONFIG_TYPE
+        public int					bMirror;						// 是否开启画面镜像功能
+        public int					bFlip;							// 是否开启画面翻转功能
+        public int					nRotate90;						// 0-不旋转,1-顺时针90°,2-逆时针90°
+
+        public NET_VIDEOIN_IMAGE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 网络协议配置
+    public static class CFG_DVRIP_INFO extends SdkStructure
+    {
+        public int                 			nTcpPort;                           			// TCP服务端口,1025~65535
+        public int                 			nSSLPort;                           			// SSL服务端口,1025~65535
+        public int                 			nUDPPort;                          				// UDP服务端口,1025~65535
+        public int                 			nMaxConnections;                    			// 最大连接数
+        public int                			bMCASTEnable;                       			// 组播使能
+        public int                 			nMCASTPort;                         			// 组播端口号
+        public byte[]                		szMCASTAddress = new byte[MAX_ADDRESS_LEN];     // 组播地址
+        public int                 			nRegistersNum;                      			// 主动注册配置个数
+        public CFG_REGISTER_SERVER_INFO[]   stuRegisters = (CFG_REGISTER_SERVER_INFO[])new CFG_REGISTER_SERVER_INFO().toArray(MAX_REGISTER_NUM);// 主动注册配置
+        public int    						emStreamPolicy;                     			// 带宽不足时码流策略,对应枚举  EM_STREAM_POLICY
+        public CFG_REGISTERSERVER_VEHICLE	stuRegisterServerVehicle;						// 车载专用主动注册配置
+    }
+
+    // 带宽不足时码流策略
+    public static class EM_STREAM_POLICY extends SdkStructure
+    {
+        public static final int STREAM_POLICY_UNKNOWN = 0;
+        public static final int STREAM_POLICY_NONE = 1;										// 无策略,不开启使能"None"
+        public static final int STREAM_POLICY_QUALITY = 2;                              	// 画质优先"Quality"
+        public static final int STREAM_POLICY_FLUENCY = 3;                             		// 流畅度优先"Fluency"
+        public static final int STREAM_POLICY_AUTOADAPT = 4;                           	 	// 自动"AutoAdapt"
+    }
+
+    // 主动注册配置
+    public static class CFG_REGISTER_SERVER_INFO extends SdkStructure
+    {
+        public int                			bEnable;                            			// 主动注册使能
+        public byte[]                		szDeviceID = new byte[MAX_ADDRESS_LEN];         // 设备ID
+        public int                 			nServersNum;                        			// 服务器个数
+        public CFG_SERVER_INFO[]     		stuServers = (CFG_SERVER_INFO[])new CFG_SERVER_INFO().toArray(MAX_SERVER_NUM);  // 服务器数组
+    }
+
+    // 服务器
+    public static class CFG_SERVER_INFO extends SdkStructure
+    {
+        public int                 			nPort;                             				// 服务器端口号
+        public byte[]                		szAddress = new byte[MAX_ADDRESS_LEN];          // IP地址或网络名
+    }
+
+    // 车载专用主动注册配置
+    public static class CFG_REGISTERSERVER_VEHICLE extends SdkStructure
+    {
+        public int							bEnable;										// 主动注册使能
+        public int							bRepeatEnable;									// 是否发送相同坐标数据
+        public byte[]						szDeviceID = new byte[MAX_ADDRESS_LEN];			// 子设备ID
+        public int							nSendInterval;									// 发送间隔, 单位:秒
+        public byte[]						szAddress = new byte[MAX_ADDRESS_LEN];			// IP地址或网络名
+        public int							nPort;											// 端口号
+        public int							emSendPolicy;									// 上传策略,对应枚举  EM_CFG_SENDPOLICY
+        public byte[]						szTestAddress = new byte[MAX_ADDRESS_LEN];		// 测试IP地址或网络名
+        public int							nTestPort;										// 测试端口号
+        public byte[]						byReserved = new byte[1024];					// 保留字节
+    }
+
+    // 上传策略
+    public static class EM_CFG_SENDPOLICY extends SdkStructure
+    {
+        public static final int EM_SNEDPOLICY_UNKNOWN = -1;
+        public static final int EM_SENDPOLICY_TIMING = 0;									// 定时上报
+        public static final int EM_SENDPOLICY_EVENT = 1;									// 事件触发上报
+    }
+
+    // 网络接口配置
+	public static class CFG_NETWORK_INFO extends SdkStructure {
+		/** 主机名称 */
+		public byte[] szHostName = new byte[128];
+		/** 所属域 */
+		public byte[] szDomain = new byte[128];
+		/** 默认使用的网卡 */
+		public byte[] szDefInterface = new byte[128];
+		/** 网卡数量 */
+		public int nInterfaceNum;
+		/** 网卡列表 */
+		public CFG_NETWORK_INTERFACE[] stuInterfaces = (CFG_NETWORK_INTERFACE[]) new CFG_NETWORK_INTERFACE()
+				.toArray(32);
+		/** 虚拟绑定网口数量 */
+		public int nBondInterfaceNum;
+		/** 虚拟绑定网口列表 */
+		public CFG_NETWORK_BOND_INTERFACE[] stuBondInterfaces = (CFG_NETWORK_BOND_INTERFACE[]) new CFG_NETWORK_BOND_INTERFACE()
+				.toArray(32);
+		/** 网桥数量 */
+		public int nBrInterfaceNum;
+		/** 网桥列表 */
+		public CFG_NETWORK_BR_INTERFACE[] stuBrInterfaces = (CFG_NETWORK_BR_INTERFACE[]) new CFG_NETWORK_BR_INTERFACE()
+				.toArray(32);
+	}
+
+    // 网络接口
+    public static class CFG_NETWORK_INTERFACE extends SdkStructure
+    {
+        public byte[]							szName = new byte[MAX_NAME_LEN];			// 网络接口名称
+        public byte[]							szIP = new byte[MAX_ADDRESS_LEN];			// ip地址
+        public byte[]							szSubnetMask = new byte[MAX_ADDRESS_LEN];	// 子网掩码
+        public byte[]							szDefGateway = new byte[MAX_ADDRESS_LEN];	// 默认网关
+        public int								bDhcpEnable;								// 是否开启DHCP
+        public int								bDnsAutoGet;								// DNS获取方式,dhcp使能时可以设置为true,支持通过dhcp获取
+        public DNS_SERVERS[]					szDnsServersArr = (DNS_SERVERS[])new DNS_SERVERS().toArray(MAX_DNS_SERVER_NUM);	// DNS服务器地址
+        public int								nMTU;										// 网络最大传输单元
+        public byte[]							szMacAddress = new byte[MAX_ADDRESS_LEN];	// mac地址
+        public int               			 	bInterfaceEnable;               			// 网络接口使能开关,表示该网口配置是否生效。不生效时,IP地址不设置到网卡上。
+        public int                				bReservedIPEnable;              			// DHCP失败时是否使用保留IP,使用保留IP时还继续发DHCP请求
+        public int 								emNetTranmissionMode;						// 网络传输模式,默认adapt自适应模式, 对应枚举  CFG_ENUM_NET_TRANSMISSION_MODE
+        public int   	 						emInterfaceType;     						// 网口类型, 对应枚举  CFG_ENUM_NET_INTERFACE_TYPE
+        public int          					bBond;               						// 是否绑定虚拟网口,对应枚举  CFG_THREE_STATUS_BOOL
+    }
+
+    public static class DNS_SERVERS extends SdkStructure
+    {
+        public byte[]				szDnsServers = new byte[MAX_ADDRESS_LEN];			// DNS服务器地址
+    }
+
+    // 网络传输模式
+    public static class CFG_ENUM_NET_TRANSMISSION_MODE extends SdkStructure
+    {
+        public static final int CFG_ENUM_NET_MODE_ADAPT = 0;                            // 自适应
+        public static final int CFG_ENUM_NET_MODE_HALF10M = 1;                          // 10M半双工
+        public static final int CFG_ENUM_NET_MODE_FULL10M = 2;                          // 10M全双工
+        public static final int CFG_ENUM_NET_MODE_HALF100M = 3;                         // 100M半双工
+        public static final int CFG_ENUM_NET_MODE_FULL100M = 4;                         // 100M全双工
+    }
+
+    // 网口类型
+    public static class CFG_ENUM_NET_INTERFACE_TYPE extends SdkStructure
+    {
+        public static final int CFG_ENUM_NET_INTERFACE_TYPE_UNKNOWN = 0;                // 未知
+        public static final int CFG_ENUM_NET_INTERFACE_TYPE_STANDARD = 1;               // 标准网口
+        public static final int CFG_ENUM_NET_INTERFACE_TYPE_MANAGER = 2;                // 管理网口
+        public static final int CFG_ENUM_NET_INTERFACE_TYPE_EXTEND = 3;                 // 扩展网口
+    }
+
+    //三态布尔类型
+    public static class CFG_THREE_STATUS_BOOL extends SdkStructure
+    {
+        public static final int CFG_BOOL_STATUS_UNKNOWN = -1;  							//未知
+        public static final int CFG_BOOL_STATUS_FALSE  = 0;
+        public static final int CFG_BOOL_STATUS_TRUE   = 1;
+    }
+
+
+    // RTMP配置
+    public static class CFG_RTMP_INFO extends SdkStructure
+    {
+        public int						bEnable;											// RTMP配置是否开启
+        public byte[]					szAddr = new byte[MAX_ADDRESS_LEN];					// RTMP服务器地址
+        public int						nPort;												// RTMP服务器端口
+        public int						nMainChnNum;										// 主码流通道个数
+        public int[]					szMainChannel = new int[AV_CFG_Max_Channel_Num];	// 启用主码流通道号列表:每个成员表示对应的通道需要上传到RTMP服务器,通道号从0开始
+        public int						nExtraChnNum;										// 辅码流通道个数
+        public int[]					szExtraChannel = new int[AV_CFG_Max_Channel_Num];	// 启用辅码流通道号列表:每个成员表示对应的通道需要上传到RTMP服务器,通道号从0开始
+        public byte[]					szCustomPath = new byte[MAX_ADDRESS_LEN];			// 路径名
+        public byte[]					szStreamPath = new byte[MAX_ADDRESS_LEN];			// 码流路径前缀:不同通道以后缀数字区分
+    }
+
+    // 下载远程文件事件,对应  NET_ALARM_DOWNLOAD_REMOTE_FILE
+    public static class ALARM_DOWNLOAD_REMOTE_FILE_INFO extends SdkStructure
+    {
+        public double				    dbPTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX			    stuTime;										// 事件发生的时间
+        public int					    nEventID;										// 事件ID
+        public byte[]					szURL = new byte[NET_COMMON_STRING_256];		// 下载文件对应的URL地址
+        public int						nProgress;										// 下载进度[0,100]
+        public byte[]                   byReserved = new byte[1020];					// 保留字节
+    }
+
+    // CLIENT_GetSplitWindowsInfo接口输入参数
+    public static class NET_IN_SPLIT_GET_WINDOWS extends SdkStructure
+    {
+        public int                dwSize;
+        public int                nChannel;                        // 通道号
+
+        public NET_IN_SPLIT_GET_WINDOWS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetSplitWindowsInfo接口输出参数
+    public static class NET_OUT_SPLIT_GET_WINDOWS extends SdkStructure
+    {
+        public int                   	dwSize;
+        public NET_BLOCK_COLLECTION     stuWindows;                 // 窗口信息
+
+        public NET_OUT_SPLIT_GET_WINDOWS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 融合屏通道信息
+    public static class NET_COMPOSITE_CHANNEL extends SdkStructure
+    {
+        public int               	 dwSize;
+        public byte[]                szMonitorWallName = new byte[NET_DEVICE_NAME_LEN];  // 电视墙名称
+        public byte[]                szCompositeID = new byte[NET_DEV_ID_LEN_EX];        // 融合屏ID
+        public int                   nVirtualChannel;                        			 // 虚拟通道号
+
+        public NET_COMPOSITE_CHANNEL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 电视墙
+    public static class AV_CFG_MonitorWall extends SdkStructure
+    {
+        public int					nStructSize;
+        public byte[]				szName = new byte[AV_CFG_Monitor_Name_Len];					// 名称
+        public int					nLine;														// 网络行数
+        public int					nColumn;													// 网格列数
+        public int					nBlockCount;												// 区块数量
+        public AV_CFG_MonitorWallBlock[] stuBlocks = new AV_CFG_MonitorWallBlock[AV_CFG_Max_Block_In_Wall];// 区块数组
+        public int                	bDisable;                           						// 是否禁用, 0-该电视墙有效, 1-该电视墙无效
+        public byte[]               szDesc = new byte[CFG_COMMON_STRING_256];      				// 电视墙描述信息
+
+        public AV_CFG_MonitorWall() {
+            this.nStructSize = this.size();
+            for(int i = 0; i < stuBlocks.length; i++){
+                stuBlocks[i] = new AV_CFG_MonitorWallBlock();
+            }
+        }
+
+        @Override
+        public int fieldOffset(String name){
+            return super.fieldOffset(name);
+        }
+    }
+
+    // 电视墙区块
+    public static class AV_CFG_MonitorWallBlock extends SdkStructure
+    {
+        public int							nStructSize;
+        public int							nLine;													// 单个TV占的网格行数
+        public int							nColumn;												// 单个TV占的网格列数
+        public AV_CFG_Rect					stuRect=new AV_CFG_Rect();												// 区块的区域坐标
+        public int							nTVCount;												// TV数量
+        public AV_CFG_MonitorWallTVOut[]	stuTVs = new AV_CFG_MonitorWallTVOut[AV_CFG_Max_TV_In_Block];	      // TV数组
+        public TIME_SECTION_WEEK_DAY_6[]	stuTimeSectionWeekDay = new TIME_SECTION_WEEK_DAY_6[WEEK_DAY_NUM];	  // 开关机时间
+        public byte[]						szName = new byte[AV_CFG_Channel_Name_Len];				// 区块名称
+        public byte[]						szCompositeID = new byte[AV_CFG_Device_ID_Len];			// 融合屏ID
+        public byte[]                       szBlockType = new byte[NET_COMMON_STRING_32];   		// 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型的区块填写为"LCD",如不存在该字段,默认采用LCD
+        public int						    nOutputDelay;					// 输出延迟,单位:毫秒
+        public AV_CFG_MonitorWallBlock() {
+            this.nStructSize = this.size();
+            for(int i = 0; i < stuTVs.length; i++){
+                stuTVs[i] = new AV_CFG_MonitorWallTVOut();
+            }
+            for(int i = 0; i < stuTimeSectionWeekDay.length; i++){
+                stuTimeSectionWeekDay[i] = new TIME_SECTION_WEEK_DAY_6();
+            }
+        }
+
+        @Override
+        public int fieldOffset(String name){
+            return super.fieldOffset(name);
+        }
+    }
+
+    // 区域
+    public static class AV_CFG_Rect extends SdkStructure
+    {
+        public int				nStructSize;
+        public int				nLeft;
+        public int				nTop;
+        public int				nRight;
+        public int				nBottom;
+
+        public AV_CFG_Rect() {
+            this.nStructSize = this.size();
+        }
+    };
+
+    // 电视墙输出通道信息
+    public static class AV_CFG_MonitorWallTVOut extends SdkStructure
+    {
+        public int				   nStructSize;
+        public byte[]			   szDeviceID = new byte[AV_CFG_Device_ID_Len];			// 设备ID, 为空或"Local"表示本地设备
+        public int				   nChannelID;											// 通道ID
+        public byte[]			   szName = new byte[AV_CFG_Channel_Name_Len];			// 屏幕名称
+        public boolean			bIsVirtual;							// 是否是虚拟屏(虚拟屏表示在本设备上不存在的屏)TRUE:虚拟屏 FALSE:非虚拟屏
+        public byte[]			szAddress=new byte[40];						// 归属设备地址IP
+        public AV_CFG_MONITOR_WALL_OUT_MODE_INFO	stuOutMode=new AV_CFG_MONITOR_WALL_OUT_MODE_INFO();		// 输出模式信息
+        public AV_CFG_MonitorWallTVOut() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // CLIENT_OpenSplitWindow接口输入参数(开窗)
+    public static class NET_IN_SPLIT_OPEN_WINDOW extends SdkStructure
+    {
+        public int               	dwSize;
+        public int                  nChannel;                   		// 通道号(屏号)
+        public DH_RECT              stuRect;                    		// 窗口位置, 0~8192
+        public int                  bDirectable;                 		// 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域
+
+        public NET_IN_SPLIT_OPEN_WINDOW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_OpenSplitWindow接口输出参数(开窗)
+    public static class NET_OUT_SPLIT_OPEN_WINDOW extends SdkStructure
+    {
+        public int               	dwSize;
+        public int        			nWindowID;                  		// 窗口序号
+        public int        			nZOrder;                    		// 窗口次序
+
+        public NET_OUT_SPLIT_OPEN_WINDOW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_CloseSplitWindow接口输入参数(关窗)
+    public static class NET_IN_SPLIT_CLOSE_WINDOW extends SdkStructure
+    {
+        public int               	dwSize;
+        public int                  nChannel;                   		// 输出通道号或融合屏虚拟通道号, pszCompositeID为NULL时有效
+        public int                  nWindowID;                  		// 窗口序号
+        public String               pszCompositeID;             		// 融合屏ID
+
+        public NET_IN_SPLIT_CLOSE_WINDOW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_CloseSplitWindow接口输出参数(关窗)
+    public static class NET_OUT_SPLIT_CLOSE_WINDOW extends SdkStructure
+    {
+        public int               	dwSize;
+
+        public NET_OUT_SPLIT_CLOSE_WINDOW() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetGroupInfoForChannel接口输入参数
+    public static class NET_IN_GET_GROUPINFO_FOR_CHANNEL extends SdkStructure
+    {
+        public int                dwSize;
+        public int                nChannelID;                    // 通道号
+
+        public NET_IN_GET_GROUPINFO_FOR_CHANNEL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetGroupInfoForChannel接口输出参数
+    public static class NET_OUT_GET_GROUPINFO_FOR_CHANNEL extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nGroupIdNum;                   									 // 人员组数
+        public GROUP_ID[]          szGroupIdArr = (GROUP_ID[])new GROUP_ID().toArray(MAX_GOURP_NUM); // 人员组ID
+        public int				   nSimilaryNum;													 // 相似度阈值个数, 与人员组数相同
+        public int[]			   nSimilary = new int[MAX_GOURP_NUM];								 // 每个人脸组的相似度阈值, 0-100
+
+        public NET_OUT_GET_GROUPINFO_FOR_CHANNEL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FaceRecognitionPutDisposition 接口输入参数
+    public static class NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO extends SdkStructure
+    {
+        public int               				dwSize;
+        public byte[]                			szGroupId = new byte[NET_COMMON_STRING_64]; 					// 人员组ID
+        public int								nDispositionChnNum;											    // 布控视频通道个数
+        public NET_DISPOSITION_CHANNEL_INFO[]	stuDispositionChnInfo = (NET_DISPOSITION_CHANNEL_INFO[])new NET_DISPOSITION_CHANNEL_INFO().toArray(NET_MAX_CAMERA_CHANNEL_NUM);	// 布控视频通道信息
+
+        public NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 布控的视频通道信息
+    public static class NET_DISPOSITION_CHANNEL_INFO extends SdkStructure
+    {
+        public int					nChannelID;										// 视频通道号
+        public int					nSimilary;										// 相似度阈值, 0-100
+        public byte[]				bReserved = new byte[256];						// 保留
+    }
+
+    // CLIENT_FaceRecognitionPutDisposition 接口输出参数
+    public static class NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public int					nReportCnt;										// 通道布控结果个数
+        public int[]				bReport = new int[NET_MAX_CAMERA_CHANNEL_NUM];	// 通道布控结果, TRUE追加成功, FALSE追加失败
+
+        public NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FaceRecognitionDelDisposition 接口输入参数
+    public static class NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public byte[]               szGroupId = new byte[NET_COMMON_STRING_64]; 				// 人员组ID
+        public int					nDispositionChnNum;											// 撤控视频通道个数
+        public int[]				nDispositionChn = new int[NET_MAX_CAMERA_CHANNEL_NUM];		// 撤控视频通道列表
+
+        public NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_FaceRecognitionDelDisposition 接口输出参数
+    public static class NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO extends SdkStructure
+    {
+        public int                  dwSize;
+        public int					nReportCnt;													// 通道布控结果个数
+        public int[]				bReport = new int[NET_MAX_CAMERA_CHANNEL_NUM];				// 通道布控结果, TRUE删除成功, FALSE删除失败
+
+        public NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人证比对事件,用实时拍摄的人脸照片,和该人持有的证件照片进行比对,并上报检测结果
+    // 对应事件类型为 EVENT_IVS_CITIZEN_PICTURE_COMPARE
+    public static class DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO extends SdkStructure
+    {
+        //公共字段
+        public int                 nChannelID;                         				// 通道号,从0开始
+        public int                 nEventAction;					    			// 事件动作, 0表示脉冲, -1表示未知
+        public double              dbPTS;                              				// 时间戳(单位是毫秒)
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];   		// 事件名称
+        public NET_TIME_EX         stuUTC;                             				// 事件发生的时间
+        public int                 nEventID;                           				// 事件ID
+
+        //事件对应字段
+        public byte                bCompareResult;                     				// 人证比对结果,相似度大于等于阈值认为比对成功,1-表示成功,0-表示失败
+        public byte                nSimilarity;                        				// 两张图片的相似度,单位百分比,范围[1,100]
+        public byte                nThreshold;                         				// 检测阈值,范围[1,100]
+        public int  			   emSex;                        					// 性别, 参考  EM_CITIZENIDCARD_SEX_TYPE
+
+        public int                 nECType;                         				// 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的nECType定义)
+        public byte[]              szCitizen = new byte[NET_COMMON_STRING_64];      // 居民姓名
+        public byte[]              szAddress = new byte[NET_COMMON_STRING_256];     // 住址
+        public byte[]              szNumber = new byte[NET_COMMON_STRING_64];       // 证件号
+        public byte[]              szAuthority = new byte[NET_COMMON_STRING_256];   // 签发机关
+        public NET_TIME            stuBirth;                           				// 出生日期(年月日)
+        public NET_TIME            stuValidityStart;                   				// 有效期限起始日期(年月日)
+        public int                 bLongTimeValidFlag;                 				// 该值为 TRUE, 截止日期 表示长期有效,此时 stuValidityEnd 值无意义
+        // 该值为 FALSE, 此时 截止日期 查看 stuValidityEnd 值
+        public NET_TIME            stuValidityEnd;                     				// 有效期限结束日期(年月日)
+        public CITIZEN_PICTURE_COMPARE_IMAGE_INFO[] stuImageInfo
+                = (CITIZEN_PICTURE_COMPARE_IMAGE_INFO[])new CITIZEN_PICTURE_COMPARE_IMAGE_INFO().toArray(2);  // 图片信息,第一张为拍摄照片,第二张为证件照片
+
+        public byte[]              szCardNo = new byte[NET_COMMON_STRING_32];      // IC卡号
+        public byte[]              szCellPhone = new byte[NET_COMMON_STRING_20];   // 手机号(比对时先输入手机号)
+        public NET_EXTENSION_INFO  stuExtensionInfo;                   			   // 扩展信息
+
+        public CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX[]	stuImageInfoEx
+                = (CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX[])new CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX().toArray(6);	// 图片扩展信息
+
+        public byte[]			      szCallNumber = new byte[20];					   // 呼叫号码
+        public int	                  emDoorOpenMethod;			                       // 开门方式(人证照片或者人证信息) 参考 NET_ACCESS_DOOROPEN_METHOD
+        public int				      nEventGroupID;						           // 事件ID,用于不同事件进行关联
+        public int				      nEventType;							           // 事件类型:0:人证比对结果	1:人证人脸采集 2:访客登记 3:人脸权限下发 4:人证人脸底库查询
+        public byte[]		          szUserID = new byte[32];						   // 人证人脸采集时人员ID
+        public byte[]	    		  szBuildingNo = new byte[16];					   // 楼号
+        public byte[]				  szBuildingUnitNo = new byte[16];				   // 单元号
+        public byte[]				  szBuildingRoomNo = new byte[16];				   // 房间号
+        public int				      nFaceIndex;							// 人脸序号
+        public int	                  emMask;								// 口罩状态 EM_MASK_STATE_TYPE
+        public int					  bManTemperature;			            // 人员温度信息是否有效
+        public NET_MAN_TEMPERATURE_INFO 	stuManTemperatureInfo;		    // 人员温度信息, bManTemperature 为TRUE 时有效
+        public double						dbBulkOilQuantity;			    // 散装油量 
+        public int					  nScore;								// 人脸质量评分
+        public Pointer pstuCardNoArray;					// 卡号数组信息,对应NET_CARDNOARRAY_INFO
+        public Pointer pstuFingerPrint;					// 信息数组信息,对应NET_FINGERPRINT_INFO
+        public byte[]				szIDPhysicalNumber=new byte[20];				// 物理证件号(证件序列号)
+        //public byte[]	 	byReserved = new byte[24];	// 预留字节
+        public int                  emCardType;             //卡类型,参考EM_CARD_TYPE
+        public int					nCardTypeNum;						// 卡类型数组个数
+        public int[]               arrCardTypeArray = new int[5];	    // 卡类型数组
+        public int			       nVisitorNumber;						// 访客人数
+        public byte[]			szTrafficPlate   =  new byte[32];		// 访客车牌
+        public byte[]			szRespondentsName   =  new byte[32];		// 被访者者姓名,人证登记场景使用
+		public byte[]           szStudentNum   =  new byte[32];                 // 用于记录学生学号默认”FFFFFF”,若为学工号上报,则填对应学工号信息
+    }
+
+    // 人证对比图片信息
+    public static class CITIZEN_PICTURE_COMPARE_IMAGE_INFO extends SdkStructure
+    {
+        public int           		dwOffSet;                       				// 文件在二进制数据块中的偏移位置, 单位:字节
+        public int           		dwFileLenth;                    				// 文件大小, 单位:字节
+        public short            	wWidth;                         				// 图片宽度, 单位:像素
+        public short            	wHeight;                        				// 图片高度, 单位:像素
+        public byte[]            	byReserved = new byte[256];                		// 保留字节
+    }
+
+    // 人证对比扩展图片信息
+    public static class CITIZEN_PICTURE_COMPARE_IMAGE_INFO_EX extends SdkStructure
+    {
+        public int					emType;											// 图片类型, 参考枚举  CITIZEN_PICTURE_COMPARE_TYPE
+        public int					dwOffSet;               						// 文件在二进制数据块中的偏移位置, 单位:字节
+        public int					dwFileLenth;            						// 文件大小, 单位:字节
+        public short				wWidth;                 						// 图片宽度, 单位:像素
+        public short				wHeight;                						// 图片高度, 单位:像素
+        public byte[]				byReserved = new byte[64];        				// 保留字节
+    }
+
+    // 图片类型
+    public static class CITIZEN_PICTURE_COMPARE_TYPE extends SdkStructure
+    {
+        public static final int CITIZEN_PICTURE_COMPARE_TYPE_UNKNOWN = -1;
+        public static final int CITIZEN_PICTURE_COMPARE_TYPE_LOCAL = 0;				// 本地人脸库图
+        public static final int CITIZEN_PICTURE_COMPARE_TYPE_FACEMAP = 1;			// 拍摄场景图
+    }
+
+    public static class EM_CITIZENIDCARD_SEX_TYPE extends SdkStructure
+    {
+        public static final int EM_CITIZENIDCARD_SEX_TYPE_UNKNOWN = 0;          	// 未知
+        public static final int EM_CITIZENIDCARD_SEX_TYPE_MALE = 1;             	// 男
+        public static final int EM_CITIZENIDCARD_SEX_TYPE_FEMALE = 2;           	// 女
+        public static final int EM_CITIZENIDCARD_SEX_TYPE_UNTOLD = 3;           	// 未说明
+    }
+
+    /**
+     * 事件类型 EVENT_IVS_HUMANTRAIT(人体特征事件)对应的数据块描述信息 
+     */
+    public static class DEV_EVENT_HUMANTRAIT_INFO extends SdkStructure {
+
+        /**
+         *  通道号
+         */
+        public int					nChannelID;
+        /**
+         *  事件名称
+         */
+        public byte					szName[] = new byte[SDK_EVENT_NAME_LEN];
+
+        /**
+         *  事件ID
+         */
+        public int					nEventID;
+        /**
+         *  时间戳(单位是毫秒)
+         */
+        public double					PTS;
+        /**
+         *  事件发生的时间
+         */
+        public NET_TIME_EX					UTC = new NET_TIME_EX();
+        /**
+         *  1:开始 2:停止
+         */
+        public int					nAction;
+        /**
+         *  智能事件所属大类
+         */
+        public int					emClassType;
+
+        /**
+         *  事件组ID,一次检测的多个人体特征nGroupID相同
+         */
+        public int					nGroupID;
+        /**
+         *  一个事件组内的抓拍张数(人体个数),一次检测的多个人体特征nCountInGroup相同
+         */
+        public int					nCountInGroup;
+        /**
+         *  一个事件组内的抓拍序号,从1开始
+         */
+        public int					nIndexInGroup;
+        /**
+         *  人体图片信息
+         */
+        public HUMAN_IMAGE_INFO					stuHumanImage = new HUMAN_IMAGE_INFO();
+
+        /**
+         *  人脸图片信息
+         */
+        public FACE_IMAGE_INFO					stuFaceImage = new FACE_IMAGE_INFO();
+
+        /**
+         *  检测到的人的信息
+         */
+        public int					emDetectObject;
+
+        /**
+         *  人体属性
+         */
+        public HUMAN_ATTRIBUTES_INFO					stuHumanAttributes = new HUMAN_ATTRIBUTES_INFO();
+
+        /**
+         *  全景大图信息
+         */
+        public SCENE_IMAGE_INFO					stuSceneImage = new SCENE_IMAGE_INFO();
+
+        /**
+         *  人脸属性
+         */
+        public NET_FACE_ATTRIBUTE					stuFaceAttributes = new NET_FACE_ATTRIBUTE();
+
+        /**
+         *  人脸全景图
+         */
+        public FACE_SCENE_IMAGE					stuFaceSceneImage = new FACE_SCENE_IMAGE();
+
+        /**
+         *  扩展信息
+         */
+        public NET_EXTENSION_INFO					stuExtensionInfo = new NET_EXTENSION_INFO();
+
+        /**
+         *  补充事件,表示当前人体特征是由该事件产生的
+         */
+        public NET_HUMANTRAIT_EXTENSION_INFO					stuHumanTrait = new NET_HUMANTRAIT_EXTENSION_INFO();
+
+        /**
+         *  人体特征值数据在二进制数据中的位置信息
+         */
+        public NET_HUMAN_FEATURE_VECTOR_INFO					stuHumanFeatureVectorInfo = new NET_HUMAN_FEATURE_VECTOR_INFO();
+
+        /**
+         *  人体特征值版本号
+         */
+        public int					emHumanFeatureVersion;
+
+        /**
+         *  人脸特征值数据在二进制数据中的位置信息
+         */
+        public NET_FACE_FEATURE_VECTOR_INFO					stuFaceFeatureVectorInfo = new NET_FACE_FEATURE_VECTOR_INFO();
+
+        /**
+         *  人脸特征值版本号
+         */
+        public int					emFaceFeatureVersion;
+
+        /**
+         *  合规标记0:不合规,1:合规,没有开启合规检测,无此字段。     此字段已废弃
+         */
+        public int					nCompliantMark;
+        /**
+         *  判断是否合规的属性列表个数
+         */
+        public int					nCompliantDetailsNum;
+        /**
+         *  判断是否合规的属性列表,不合规检测报不合规的属性字段,合规检测报合规的属性字段,没有开启合规检测,无此字段。
+         */
+        public int[]					emCompliantDetailType = new int[32];
+
+        /**
+         *  关联的人体消息类型列表个数
+         */
+        public int					nHumanPostureTypeNum;
+        /**
+         * 关联的人体消息类型列表
+         */
+        public int					emHumanPostureType[] = new int[32];
+
+        /**
+         * 与最优人脸同画面的人体信息,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
+         */
+        public HUMAN_IMAGE_INFO					stuAlongWithFaceHumanImage = new HUMAN_IMAGE_INFO();
+
+        /**
+         * 与最优人脸同画面人体的全景图,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
+         */
+        public SCENE_IMAGE_INFO					stuAlongWithFaceHumanSceneImage = new SCENE_IMAGE_INFO();
+
+        /**
+         * 与最优人脸同画面人体的属性,emHumanPostureType包含EM_HUMAN_POSTURE_ALONG_WITH_FACE时有效
+         */
+        public HUMAN_ATTRIBUTES_INFO					stuAlongWithFaceHumanAttributes = new HUMAN_ATTRIBUTES_INFO();
+
+        /**
+         *  是否开启合规检测
+         */
+        public int					bCompliantMarkEnable;
+        /**
+         *  人体特征值数据在二进制数据中的位置信息
+         */
+        public NET_HUMAN_FEATURE_VECTOR_INFO					stuAlongWithFaceHumanVectorInfo = new NET_HUMAN_FEATURE_VECTOR_INFO();
+
+        /**
+         *  人体特征值版本号
+         */
+        public int					emAlongWithFaceHumanVersion;
+
+        /**
+         *  合规模式: 0-不合规,1-合规,没有开启合规检测,无此字段
+         */
+        public int					nCompliantMode;
+        /**
+         *  1:不合规 2:合规
+         */
+        public int					nAlarmCompliance;
+        /**
+         *  目标在视频中出现时的视频帧编号。视频帧编号只能在一个通道内表示唯一,且不连续。视频流时该值有效
+         */
+        public int					nStartSequence;
+        /**
+         *  目标在视频中消失时的视频帧编号。视频帧编号只能在一个通道内表示唯一,且不连续。视频流时该值有效。
+         */
+        public int					nEndSequence;
+        /**
+         *  图像成像光源类型
+         */
+        public int					emImageLightType;
+
+        /**
+         *  stuHumanAttributes 的扩展
+         */
+        public HUMAN_ATTRIBUTES_INFO_EX					stuHumanAttributesEx = new HUMAN_ATTRIBUTES_INFO_EX();
+
+        /**
+         *  stuAlongWithFaceHumanAttributes 的扩展
+         */
+        public HUMAN_ATTRIBUTES_INFO_EX					stuAlongWithFaceHumanAttributesEx = new HUMAN_ATTRIBUTES_INFO_EX();
+
+        /**
+         *  图片信息数组
+         */
+        public NET_IMAGE_INFO_EX2[]					stuImageInfo = new NET_IMAGE_INFO_EX2[32];
+
+        /**
+         *  图片信息个数
+         */
+        public int					nImageInfoNum;
+
+        /**
+         *  智能物体全局唯一物体标识
+         */
+        public  byte[]     szObjectUUID=new byte[48];
+
+        /**
+         *  人体特征值版本号-字符串
+         */
+        public  byte[]  szHumanFeatureVersion=new byte[32];
+
+        /**
+         *  目标特征值版本号-字符串
+         */
+        public  byte[]	szFaceFeatureVersion=new byte[32];
+
+        /**
+         *  人体特征值版本号-字符串
+         */
+        public  byte[]	szAlongWithFaceHumanVersion=new byte[32];
+
+        /**
+         *  事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND			stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+
+        /**
+         *  有效数据位21位,包含’\0’
+         *  前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+         *  中间14位YYYYMMDDhhmmss:年月日时分秒
+         *  后5位%u%u%u%u%u:物体ID,如00001
+         */
+        public byte[]   szSerialUUID=new byte[22];
+
+        /**
+         *  对齐
+         */
+        public byte[]	szReserved=new byte[2];
+
+        /**
+         *  图片信息数组  {@link com.netsdk.lib.structure.NET_IMAGE_INFO_EX3}
+         */
+        public  Pointer pstuImageInfo;
+
+        /**
+         *  检测物体具体包含的信息类型: 0: 只包含属性 1: 只包含特征值 2: 属性、特征值都包含 3:属性和特征值都不包含
+         */
+        public  int	nDetectMode;
+
+        /**
+         *  保留字节
+         */
+        public byte					byReserved[] = new byte[852-POINTERSIZE];
+
+        public DEV_EVENT_HUMANTRAIT_INFO(){
+
+            for(int i=0;i<stuImageInfo.length;i++){
+                stuImageInfo[i]=new NET_IMAGE_INFO_EX2();
+            }
+
+        }
+
+    }
+
+    // 人体图片信息
+    public static class HUMAN_IMAGE_INFO extends SdkStructure
+    {
+        public int       	nOffSet;					// 偏移
+        public int	   		nLength;					// 图片大小,单位字节
+        public int	   		nWidth;						// 图片宽度
+        public int	   		nHeight;					// 图片高度
+        public int			nIndexInData;               // 在上传图片数据中的图片序号
+        public byte[]		byReserved = new byte[52];	// 预留字节
+    }
+
+    // 人脸图片信息
+    public static class FACE_IMAGE_INFO extends SdkStructure
+    {
+        public int	   		nOffSet;					// 偏移
+        public int	   		nLength;					// 图片大小,单位字节
+        public int	   		nWidth;						// 图片宽度
+        public int	   		nHeight;					// 图片高度
+        public byte[]		byReserved = new byte[56];	// 预留字节
+    }
+
+    // 检测到的人的信息
+    public static class EM_DETECT_OBJECT extends SdkStructure
+    {
+        public static final int EM_DETECT_OBJECT_UNKNOWN = 0;    			// 未知信息
+        public static final int EM_DETECT_OBJECT_HUMAN_BODY_AND_FACE = 1;   // 人体和人脸都有
+        public static final int EM_DETECT_OBJECT_HUMAN_BODY = 2;     		// 仅有人体
+        public static final int EM_DETECT_OBJECT_HUMAN_FACE = 3;       		// 仅有人脸
+    }
+
+    // 角度
+    public static class EM_ANGLE_TYPE extends SdkStructure
+    {
+        public static final int EM_ANGLE_UNKNOWN = 0;			// 未知
+        public static final int EM_ANGLE_FRONT = 1;					// 正面
+        public static final int EM_ANGLE_SIDE = 2;					// 侧面
+        public static final int EM_ANGLE_BACK = 3;					// 背面
+    }
+
+    // 是否打伞
+    public static class EM_HAS_UMBRELLA extends SdkStructure
+    {
+        public static final int EM_HAS_UMBRELLA_UNKNOWN = 0;		// 未知
+        public static final int EM_HAS_UMBRELLA_NO = 1;				// 未打伞
+        public static final int EM_HAS_UMBRELLA_YES = 2;			// 打伞
+    }
+
+    // 包类型
+    public static class EM_BAG_TYPE extends SdkStructure
+    {
+        public static final int EM_BAG_UNKNOWN = 0;					// 未知
+        public static final int EM_BAG_HANDBAG = 1;					// 手提包
+        public static final int EM_BAG_SHOULDERBAG = 2;				// 肩包
+        public static final int EM_BAG_KNAPSACK = 3;				// 背包
+        public static final int EM_BAG_DRAWBARBOX = 4;				// 拉杆箱
+    }
+
+    // 上半身衣服图案
+    public static class EM_CLOTHES_PATTERN extends SdkStructure
+    {
+        public static final int EM_CLOTHES_PATTERN_UNKNOWN = 0;		// 未知
+        public static final int EM_CLOTHES_PATTERN_PURE = 1;		// 纯色
+        public static final int EM_CLOTHES_PATTERN_STRIPE = 2;		// 条纹
+        public static final int EM_CLOTHES_PATTERN_PATTERN = 3;		// 图案
+        public static final int EM_CLOTHES_PATTERN_GAP = 4;			// 缝隙
+        public static final int EM_CLOTHES_PATTERN_LATTICE = 5;		// 格子
+    }
+
+    // 头发样式
+    public static class EM_HAIR_STYLE extends SdkStructure
+    {
+        public static final int EM_HAIR_UNKNOWN = 0;		// 未知
+        public static final int EM_HAIR_LONG_HAIR = 1;		// 长发
+        public static final int EM_HAIR_SHORT_HAIR = 2;		// 短发
+        public static final int EM_HAIR_PONYTAIL = 3;		// 马尾
+        public static final int EM_HAIR_UPDO = 4;			// 盘发
+        public static final int EM_HAIR_HEAD_BLOCKED = 5;	// 头部被遮挡
+    }
+
+    // 帽类型
+    public static class EM_CAP_TYPE extends SdkStructure
+    {
+        public static final int EM_CAP_UNKNOWN = 0;		// 未知
+        public static final int EM_CAP_ORDINARY = 1;	// 普通帽子
+        public static final int EM_CAP_HELMET   =2;		// 头盔
+        public static final int EM_CAP_SAFE = 3;		// 安全帽
+    }
+
+    // 人体属性信息
+    public static class HUMAN_ATTRIBUTES_INFO extends SdkStructure
+    {
+        public int    		emCoatColor;									// 上衣颜色, 详见 EM_CLOTHES_COLOR
+        public int			emCoatType;										// 上衣类型, 详见 EM_COAT_TYPE
+        public int			emTrousersColor;								// 裤子颜色, 详见 EM_CLOTHES_COLOR
+        public int			emTrousersType;									// 裤子类型, 详见 EM_TROUSERS_TYPE
+        public int			emHasHat;										// 是否戴帽子, 详见 EM_HAS_HAT
+        public int			emHasBag;										// 是否带包, 详见 EM_HAS_BAG
+        public NET_RECT     stuBoundingBox;						    		// 包围盒(8192坐标系)
+        public int			nAge;											// 年龄
+        public int 			emSex;											// 性别, 详见 EM_SEX_TYPE
+        public int			emAngle;										// 角度, 详见 EM_ANGLE_TYPE
+        public int			emHasUmbrella;									// 是否打伞, 详见 EM_HAS_UMBRELLA
+        public int			emBag;											// 包类型 , 详见EM_BAG_TYPE
+        public int			emUpperPattern;									// 上半身衣服图案, 详见EM_CLOTHES_PATTERN
+        public int			emHairStyle;									// 头发样式, 详见EM_HAIR_STYLE
+        public int			emCap;											// 帽类型, 详见EM_CAP_TYPE
+
+        public byte[]		byReserved = new byte[80];						// 预留字节
+    }
+
+    // 衣服颜色
+    public static class EM_CLOTHES_COLOR extends SdkStructure
+    {
+        public static final int EM_CLOTHES_COLOR_UNKNOWN = 0;    // 未知
+        public static final int EM_CLOTHES_COLOR_WHITE = 1;      // 白色
+        public static final int EM_CLOTHES_COLOR_ORANGE = 2;     // 橙色
+        public static final int EM_CLOTHES_COLOR_PINK = 3;       // 粉色
+        public static final int EM_CLOTHES_COLOR_BLACK = 4;      // 黑色
+        public static final int EM_CLOTHES_COLOR_RED = 5;        // 红色
+        public static final int EM_CLOTHES_COLOR_YELLOW = 6;     // 黄色
+        public static final int EM_CLOTHES_COLOR_GRAY = 7;       // 灰色
+        public static final int EM_CLOTHES_COLOR_BLUE = 8;       // 蓝色
+        public static final int EM_CLOTHES_COLOR_GREEN = 9;      // 绿色
+        public static final int EM_CLOTHES_COLOR_PURPLE = 10;    // 紫色
+        public static final int EM_CLOTHES_COLOR_BROWN = 11;     // 棕色
+        public static final int EM_CLOTHES_COLOR_OTHER = 13;     // 其他颜色(该选项设备协议已不支持, 此处为了兼容保留)
+    }
+
+    //上衣类型
+    public static class EM_COAT_TYPE extends SdkStructure
+    {
+        public static final int EM_COAT_TYPE_UNKNOWN = 0;    	// 未知
+        public static final int EM_COAT_TYPE_LONG_SLEEVE = 1;   // 长袖
+        public static final int EM_COAT_TYPE_COTTA = 2;     	// 短袖
+    }
+
+    // 裤子类型
+    public static class EM_TROUSERS_TYPE extends SdkStructure
+    {
+        public static final int EM_TROUSERS_TYPE_UNKNOWN = 0;    	// 未知
+        public static final int EM_TROUSERS_TYPE_TROUSERS = 1;   	// 长裤
+        public static final int EM_TROUSERS_TYPE_SHORTS = 2;     	// 短裤
+        public static final int EM_TROUSERS_TYPE_SKIRT = 3;     	// 裙子
+    }
+
+    // 是否戴帽子
+    public static class EM_HAS_HAT extends SdkStructure
+    {
+        public static final int EM_HAS_HAT_UNKNOWN = 0; // 未知
+        public static final int EM_HAS_HAT_NO = 1;   	// 不戴帽子
+        public static final int EM_HAS_HAT_YES = 2;     // 戴帽子
+    }
+
+    // 是否戴包(包括背包或拎包)
+    public static class EM_HAS_BAG extends SdkStructure
+    {
+        public static final int EM_HAS_BAG_UNKNOWN = 0; // 未知
+        public static final int EM_HAS_BAG_NO = 1;   	// 不带包
+        public static final int EM_HAS_BAG_YES = 2;     // 带包
+    }
+
+    // 全景广角图
+    public static class SCENE_IMAGE_INFO extends SdkStructure
+    {
+        public int	   		nOffSet;					// 在二进制数据块中的偏移
+        public int	   		nLength;					// 图片大小,单位字节
+        public int	   		nWidth;						// 图片宽度(像素)
+        public int	   		nHeight;					// 图片高度(像素)
+        public int			nIndexInData;               // 在上传图片数据中的图片序号
+        public byte[]		byReserved = new byte[52];	// 预留字节
+    }
+
+    // 人脸属性
+    public static class NET_FACE_ATTRIBUTE extends SdkStructure
+    {
+        public int 						emSex;						// 性别, 详见 EM_DEV_EVENT_FACEDETECT_SEX_TYPE
+        public int        				nAge;						// 年龄,-1表示该字段数据无效
+        public int        				nFeatureValidNum;           // 人脸特征数组有效个数,与 emFeature 结合使用
+        public int[]    				emFeatures = new int[NET_MAX_FACEDETECT_FEATURE_NUM];   // 人脸特征数组,与 nFeatureValidNum 结合使用 , 详见 EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE
+        public byte[]                   szReserved = new byte[4];	// 
+        public int						emEye;						// 眼睛状态, 详见 EM_EYE_STATE_TYPE
+        public int						emMouth;					// 嘴巴状态, 详见 EM_MOUTH_STATE_TYPE
+        public int 						emMask;						// 口罩状态, 详见 EM_MASK_STATE_TYPE
+        public int						emBeard;					// 胡子状态, 详见 EM_BEARD_STATE_TYPE
+        public int						nAttractive;				// 魅力值, 0未识别,识别时范围1-100,得分高魅力高
+        public NET_RECT					stuBoundingBox;				// 包围盒(8192坐标系)
+        public byte[]                	bReserved = new byte[112];  // 保留字节,留待扩展.
+    }
+
+
+
+    // 人脸全景图
+    public static class FACE_SCENE_IMAGE extends SdkStructure
+    {
+        public int	   		nOffSet;					// 在二进制数据块中的偏移
+        public int	   		nLength;					// 图片大小,单位字节
+        public int	   		nWidth;						// 图片宽度(像素)
+        public int	   		nHeight;					// 图片高度(像素)
+        public byte[]  		byReserved = new byte[56];  // 预留字节
+    }
+
+    // 事件扩展信息
+    public static class NET_EXTENSION_INFO extends SdkStructure
+    {
+        public byte[]        szEventID = new byte[MAX_EVENT_ID_LEN];				// 国标事件ID
+        public byte[]        byReserved = new byte[80];                             // 保留字节
+    }
+
+    // 当前人体特征是由什么事件产生的
+    public static class NET_HUMANTRAIT_EXTENSION_INFO extends SdkStructure
+    {
+        public byte[]                szAdditionalCode = new byte[MAX_HUMANTRAIT_EVENT_LEN];     // 当前人体特征是由什么事件产生的,设备刚好返回32个字节数据,多加4个字节用于字节对齐和添加字符结束符
+        public byte[]                byReserved = new byte[32];                                 // 保留字节
+    }
+
+    // 事件类型 NET_ALARM_WIFI_SEARCH (搜索WIFI设备)对应的数据描述信息
+    public static class ALARM_WIFI_SEARCH_INFO extends SdkStructure
+    {
+        public int                      nWifiNum;                       			// WIFI设备数量, 指示stuWifi的有效数量
+        public NET_WIFI_DEV_INFO[]      stuWifi = (NET_WIFI_DEV_INFO[])new NET_WIFI_DEV_INFO().toArray(1024);    // 周围Wifi设备的信息
+        public int                      nChannel;                       			// 通道号
+        public NET_WIFI_BASIC_INFO      stuWifiBasiInfo;				 			// Wifi事件上报基础信息
+        public int					 	bGPSinfo;						 			// 是否包含GPS信息
+        public NET_WIFI_GPS_INFO		stuWifiGPSInfo;				 				// GPS信息
+        public byte[]                   reserved = new byte[376];                   // 预留
+    }
+
+    public static class ALARM_WIFI_SEARCH_INFO_EX extends SdkStructure
+    {
+        public Pointer                  pstuWifi;                                  // 周围Wifi设备的信息
+        public int                      nWifiNum;                                  // Wifi设备数量,pstuWifi 的个数
+        public int                      nChannel;                                  // 通道号
+        public NET_WIFI_BASIC_INFO      stuWifiBasiInfo;                           // Wifi事件上报基础信息
+        public int                      bGPSinfo;                                  // 是否包含GPS信息
+        public NET_WIFI_GPS_INFO        stuWifiGPSInfo;                            // GPS信息
+        public byte[]                   reserved=new byte[512];                    // 预留
+    };
+
+    // 搜索到的WIFI设备信息
+    public static class NET_WIFI_DEV_INFO extends SdkStructure
+    {
+        public byte[]                   szMac = new byte[NET_MACADDR_LEN];         	 	// Wifi设备的Mac地址
+        public int                      nLinkQuality;                   				// 链接质量百分比, 0~100
+        public NET_TIME_EX              stuEnterTime;                   				// 第一被搜索到的时间
+        public NET_TIME_EX              stuLeaveTime;                   				// 消失的时间
+        public int                      nSearchedCount;                 				// 被搜索到的次数
+        public byte[]                   szSSID = new byte[24];                      	// 网络名称
+        public NET_TIME_EX              UTC;                            				// 事件发生时间
+        public int      				emDevType;                      				// WIFI设备类型, 参考 EM_WIRELESS_DEV_TYPE
+        public int                      nChannel;                       				// Wifi设备当前所在的信道
+        public int  					emAuth;                      			 		// 认证方式, 参考 EM_WIRELESS_AUTHENTICATION
+        public int  					emEncrypt;                      				// 数据加密方式, 参考 EM_WIRELESS_DATA_ENCRYPT
+        public byte[]                   szAPMac = new byte[NET_MACADDR_LEN];        	// 接入热点Mac
+        public int                      nAPChannel;                     				// 接入热点频道
+        public byte[]                   szAPSSID = new byte[24];                    	// 接入热点SSID
+        public int  					emAPEncrypt;                    				// 接入热点加密类型, 参考 EM_WIRELESS_DATA_ENCRYPT
+        public int						nRssiQuality;                   				// 信号强度
+        public byte[]					szManufacturer = new byte[MAX_MANUFACTURER_LEN];// Mac地址所属制造商
+        public MACHISTORY_SSID[]		szMacHistorySSIDList = (MACHISTORY_SSID[])new MACHISTORY_SSID().toArray(MAX_MACHISTORY_SSID_NUM); // 此设备曾经连接过的历史SSID列表
+        public int			 			nRetMacHistorySSIDNum;			 				// 此设备实际连接过的SSID个数
+        public byte[]                   reserved = new byte[264];                  		// 预留
+    }
+
+    // 历史SSID
+    public static class MACHISTORY_SSID extends SdkStructure
+    {
+        public byte[]    				szMacHistorySSID = new byte[MAX_MACHISTORY_SSID_LEN];	// 历史SSID
+    }
+
+    // 搜索到的WIFI基本信息
+    public static class NET_WIFI_BASIC_INFO extends SdkStructure
+    {
+        public int 						nPeriodUTC;      			// 本周期上报的起始时间,为同一上报周期的标识;当同一上报周期内设备总数超过单次上报数量上限时需要多次上报事件,该值作为同一上报周期内多次上报事件的标识码;
+        public int  					nDeviceSum;      			// 本周期上报的wifi总数,同一上报周期内的事件中的该值均应为本周期上报的wifi总数
+        public int  					nCurDeviceCount; 			// 本次事件上报的Wifi设备数量,应与ALARM_WIFI_SEARCH_INFO结构体中的nWifiNum值一致;同一上报周期内该值的累积总数与nDeviceSum一致。
+        public byte[]  					reserved = new byte[500];   // 预留字节
+    }
+
+    // 事件类型  NET_ALARM_WIFI_VIRTUALINFO_SEARCH (获取周围wifi设备虚拟信息事件)对应的数据描述信息
+    public static class ALARM_WIFI_VIRTUALINFO_SEARCH_INFO extends SdkStructure
+    {
+        public int                      nVirtualInfoNum;								// WIFI设备虚拟身份数量, 指示stuVirtualInfo的有效数量
+        public NET_WIFI_VIRTUALINFO[]   stuVirtualInfo = (NET_WIFI_VIRTUALINFO[])new NET_WIFI_VIRTUALINFO().toArray(MAX_VIRTUALINFO_NUM);    // 周围Wifi虚拟身份信息
+        public int                      nChannel;										// 通道号
+        public byte[]                   reserved = new byte[512];						// 预留
+    }
+
+    // 搜索到的WIFI设备虚拟身份信息
+    public static class NET_WIFI_VIRTUALINFO extends SdkStructure
+    {
+        public NET_TIME_EX				stuAccessTime;											// 访问时间,时间不精确仅供参考
+        public byte[]					szSrcMac = new byte[NET_MACADDR_LEN];					// 虚拟信息的来源MAC,字母大写,用"-"分隔
+        public byte[]					szDstMac = new byte[NET_MACADDR_LEN];					// 虚拟信息的目标MAC,字母大写,用"-"分隔
+        public int						nProtocal;												// 协议代号,上网应用对应的标识码
+        public byte[]					szUrl = new byte[NET_MAX_URL_LEN];						// 上网url
+        public byte[]					szDomain = new byte[MAX_VIRTUALINFO_DOMAIN_LEN];		// 上网域
+        public byte[]					szTitle = new byte[MAX_VIRTUALINFO_TITLE_LEN];			// 上网标题
+        public byte[]					szUsrName = new byte[MAX_VIRTUALINFO_USERNAME_LEN];		// 用户名
+        public byte[]					szPassWord = new byte[MAX_VIRTUALINFO_PASSWORD_LEN];	// 密码
+        public byte[]					szPhoneNum = new byte[MAX_VIRTUALINFO_PHONENUM_LEN];	// 手机号
+        public byte[]					szImei = new byte[MAX_VIRTUALINFO_IMEI_LEN];			// 国际移动设备标识
+        public byte[]					szImsi = new byte[MAX_VIRTUALINFO_IMSI_LEN];			// 国际移动用户识别码
+        public byte[]					szLatitude = new byte[MAX_VIRTUALINFO_LATITUDE_LEN];	// 经度
+        public byte[]					szLongitude = new byte[MAX_VIRTUALINFO_LONGITUDE_LEN];	// 纬度
+        public byte[]					szSrcIP = new byte[NET_MAX_IPADDR_LEN_EX];				// 源IP
+        public byte[]					szDstIP = new byte[NET_MAX_IPADDR_LEN_EX];				// 目的IP
+        public int						nSrcPort;												// 源端口
+        public int						nDstPort;												// 目的端口
+        public byte[]                   szSiteNum = new byte[MAX_COMMON_STRING_16];             // 场所编号
+        public byte[]                   szDevNum = new byte[MAX_COMMON_STRING_32];              // 采集设备编号
+        public byte[]                   szUserID = new byte[MAX_COMMON_STRING_32];              // 虚拟用户ID
+        public byte[]                   szIDFA = new byte[MAX_COMMON_STRING_64];                // 苹果手机的IDFA
+        public byte[]                   reserved = new byte[368];								// 预留
+    }
+
+    // 事件类型 EVENT_IVS_ACCESS_CTL (门禁事件)对应数据块描述信息
+    public static class DEV_EVENT_ACCESS_CTL_INFO extends SdkStructure
+    {
+        public int                      nChannelID;                         					// 门通道号
+        public byte[]                   szName = new byte[NET_EVENT_NAME_LEN];          		// 事件名称
+        public byte[]                	bReserved1 = new byte[4];                       		// 字节对齐
+        public double              		PTS;                                					// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                					// 事件发生的时间
+        public int                 		nEventID;                           					// 事件ID
+        public NET_MSG_OBJECT           stuObject;                          					// 检测到的物体
+        public NET_EVENT_FILE_INFO		stuFileInfo;	                    					// 事件对应文件信息
+        public int   					emEventType;                        					// 门禁事件类型, 参考 NET_ACCESS_CTL_EVENT_TYPE
+        public int                      bStatus;                            					// 刷卡结果, 1表示成功, 0表示失败
+        public int      				emCardType;                         					// 卡类型, 参考 NET_ACCESSCTLCARD_TYPE
+        public int  					emOpenMethod;                       					// 开门方式, 参考 NET_ACCESS_DOOROPEN_METHOD
+        public byte[]                   szCardNo = new byte[NET_MAX_CARDNO_LEN];       		 	// 卡号
+        public byte[]                   szPwd = new byte[NET_MAX_CARDPWD_LEN];          		// 密码
+        public byte[]                   szReaderID = new byte[NET_COMMON_STRING_32];    		// 门读卡器ID
+        public byte[]                   szUserID = new byte[NET_COMMON_STRING_64];      		// 开门用户
+        public byte[]                   szSnapURL = new byte[NET_COMMON_STRING_128];    		// 抓拍照片存储地址
+
+        public int                      nErrorCode;                         					// 开门失败的原因,仅在bStatus为FALSE时有效
+        // 0x00 没有错误
+        // 0x10 未授权
+        // 0x11 卡挂失或注销
+        // 0x12 没有该门权限
+        // 0x13 开门模式错误
+        // 0x14 有效期错误
+        // 0x15 防反潜模式
+        // 0x16 胁迫报警未打开
+        // 0x17 门常闭状态
+        // 0x18 AB互锁状态
+        // 0x19 巡逻卡
+        // 0x1A 设备处于闯入报警状态
+        // 0x20 时间段错误
+        // 0x21 假期内开门时间段错误
+        // 0x30 需要先验证有首卡权限的卡片
+        // 0x40 卡片正确,输入密码错误
+        // 0x41 卡片正确,输入密码超时
+        // 0x42 卡片正确,输入信息错误
+        // 0x43 卡片正确,输入信息超时
+        // 0x44 信息正确,输入密码错误
+        // 0x45 信息正确,输入密码超时
+        // 0x50 组合开门顺序错误
+        // 0x51 组合开门需要继续验证
+        // 0x60 验证通过,控制台未授权
+
+        public int                      nPunchingRecNo;                     					// 刷卡记录集中的记录编号
+        public int						nNumbers;												// 抓图张数
+        public byte						byImageIndex;	                    					// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]                   byReserved = new byte[3];                      		    // 字节对齐
+        public int						dwSnapFlagMask;											// 抓图标志(按位),具体见 NET_RESERVED_COMMON
+        public int         				emAttendanceState;                  					// 考勤状态, 参考 NET_ATTENDANCESTATE
+        public byte[]					szClassNumber = new byte[MAX_CLASS_NUMBER_LEN];			// 班级(考勤)
+        public byte[]					szPhoneNumber = new byte[MAX_PHONENUMBER_LEN];			// 电话(考勤)
+        public byte[]					szCardName = new byte[NET_MAX_CARDNAME_LEN];			// 卡命名
+        public int                      uSimilarity;                         					// 目标识别相似度,范围为0~100
+        public DEV_ACCESS_CTL_IMAGE_INFO[]	stuImageInfo
+                = (DEV_ACCESS_CTL_IMAGE_INFO[])new DEV_ACCESS_CTL_IMAGE_INFO().toArray(6);	 // 图片信息
+        public int						nImageInfoCount;										// 图片信息数量
+        public byte[]					szCitizenIDNo = new byte[20];							// 证件号
+        public int						nGroupID;												// 事件组ID
+        public int				        nCompanionCardCount;									// 陪同者卡号个数
+        public COMPANION_CARD[]			szCompanionCards
+                = (COMPANION_CARD[])new COMPANION_CARD().toArray(MAX_COMPANION_CARD_NUM);    // 陪同者卡号信息
+
+        public DEV_ACCESS_CTL_CUSTOM_WORKER_INFO    stuCustomWorkerInfo;                        // 人员信息
+        public int					emCardState;												// 当前事件是否为采集卡片,参考EM_CARD_STATE
+
+        public byte[]				szSN = new byte[32];										// 设备序列号
+        public int				    emHatStyle;							    // 帽子类型(参考EM_HAT_STYLE)
+        public int		            emHatColor;							    // 帽子颜色(参考EM_UNIFIED_COLOR_TYPE)
+        public int			        emLiftCallerType;					    // 梯控方式触发者(参考EM_LIFT_CALLER_TYPE)
+        public int					bManTemperature;					    // 人员温度信息是否有效
+        public NET_MAN_TEMPERATURE_INFO	stuManTemperatureInfo;				// 人员温度信息, bManTemperature 为TRUE时有效
+        public byte[]				szCitizenName=new byte[256];			// 证件姓名
+        public int					nCompanionInfo;						                        // 陪同人员 stuCompanionInfo 个数
+        public NET_COMPANION_INFO[]	stuCompanionInfo =(NET_COMPANION_INFO[])new NET_COMPANION_INFO().toArray(12);				                        // 陪同人员信息
+        public int	                emMask;								                        // 口罩状态(EM_MASK_STATE_UNKNOWN、EM_MASK_STATE_NOMASK、EM_MASK_STATE_WEAR 有效)
+        public int					nFaceIndex;							                        // 一人多脸的人脸序号
+        public int					bClassNumberEx;						    // szClassNumberEx 是否有效,为TRUE时,szClassNumberEx 有效
+        public byte[]				szClassNumberEx = new byte[512];		// 班级
+        public byte[]				szDormitoryNo = new byte[64];			// 宿舍号
+        public byte[]				szStudentNo = new byte[64];				// 学号
+        public int                  emUserType;							    // 用户类型( EM_USER_TYPE_ORDINARY 至 EM_USER_TYPE_DISABLED 有效 ) EM_USER_TYPE
+        public int					bRealUTC;							    // RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 UTC 字段
+        public NET_TIME_EX         	RealUTC;                                // 事件发生的时间(标准UTC)
+        public byte[]               szQRCode = new byte[512];               // 二维码信息
+        public byte[]				szCompanyName = new byte[200];			// 公司名称
+        public int					nScore;							        // 人脸质量评分
+           /** {@link com.netsdk.lib.enumeration.EM_FACE_CHECK} */
+        public int				emFaceCheck;						// 刷卡开门时,门禁后台校验人脸是否是同一个人
+        /**  {@link com.netsdk.lib.enumeration.EM_QRCODE_IS_EXPIRED}  */
+        public int		emQRCodeIsExpired;					// 二维码是否过期。默认值0 
+        /**  {@link com.netsdk.lib.enumeration.EM_QRCODE_STATE}  */
+        public int				emQRCodeState;						// 二维码状态
+        public  NET_TIME        			stuQRCodeValidTo;                   // 二维码截止日期
+        public int						nBlockId;							// 上报事件数据序列号从1开始自增
+        public  byte[]						szSection=new byte[64];						// 部门名称
+        public  byte[]						szWorkClass=new byte[256];					// 工作班级
+        /** {@link com.netsdk.lib.enumeration.EM_TEST_ITEMS }  */
+        public int				emTestItems;						// 测试项目
+        public  NET_TEST_RESULT				stuTestResult;						// ESD阻值测试结果
+        public byte[]                        szDeviceID=new byte[128];                    // 门禁设备编号
+        public byte[]                        szUserUniqueID=new byte[128];                // 用户唯一表示ID
+        public int						bUseCardNameEx;						// 是否使用卡命名扩展
+        public byte[]						szCardNameEx=new byte[128];					// 卡命名扩展
+        public  int                       nHSJCResult;                             //核酸检测报告结果   -1: 未知  2: 未检测 3: 过期
+        public  NET_VACCINE_INFO					stuVaccineInfo=new NET_VACCINE_INFO();							// 新冠疫苗接种信息
+        public  NET_TRAVEL_INFO					stuTravelInfo=new  NET_TRAVEL_INFO();								// 行程码信息
+        public  byte[]						szTrafficPlate=new byte[32];						// 车牌
+        public byte[]                        szQRCodeEx=new byte[2048];                   //大二维码内容
+        public byte[]                       szReversed=new byte[4424];                   // 预留字节
+
+    }
+
+    //用户类型
+    public static class EM_USER_TYPE
+    {
+        public static final int EM_USER_TYPE_UNKNOWN = -1;							// 未知
+        public static final int EM_USER_TYPE_ORDINARY = 0;								// 普通用户
+        public static final int EM_USER_TYPE_BLACKLIST = 1;								// 
+        public static final int EM_USER_TYPE_VIP = 2;									// 
+        public static final int EM_USER_TYPE_GUEST = 3;									// 
+        public static final int EM_USER_TYPE_PATROL = 4;								// 
+        public static final int EM_USER_TYPE_DISABLED = 5;								// 
+        public static final int EM_USER_TYPE_FROZEN = 6;								// 冻结用户
+        public static final int EM_USER_TYPE_LOGOUT = 7;								// 注销用户
+        public static final int EM_USER_TYPE_LOSSCARD = 8;								// 挂失卡
+    }
+
+    // 人员温度信息
+    public static class NET_MAN_TEMPERATURE_INFO extends SdkStructure
+    {
+        public float						fCurrentTemperature;			// 人员体温
+        public int	                        emTemperatureUnit;				// 温度单位(参考EM_HUMAN_TEMPERATURE_UNIT)
+        public int						    bIsOverTemperature;				// 是否超温
+        public byte[]            			byReserved=new byte[260];       // 预留字节
+    };
+
+    // 陪同人员信息
+    public static class NET_COMPANION_INFO extends SdkStructure
+    {
+        public byte[] 				        szCompanionCard=new byte[32];					// 陪同者卡号
+        public byte[] 				        szCompanionUserID=new byte[32];					// 陪同者ID
+        public byte[] 				        szCompanionName=new byte[120];					// 陪同者姓名
+        public byte[] 						byReserved=new byte[256];						// 预留字段
+    };
+
+    // 人员信息
+    public static class DEV_ACCESS_CTL_CUSTOM_WORKER_INFO extends SdkStructure
+    {
+        public int       			emSex;                                      	// 性别, 详见NET_ACCESSCTLCARD_SEX
+        public byte[]               szRole = new byte[MAX_COMMON_STRING_32];        // 角色
+        public byte[]               szProjectNo = new byte[MAX_COMMON_STRING_32];   // 项目ID
+        public byte[]               szProjectName = new byte[MAX_COMMON_STRING_64]; // 项目名称
+        public byte[]               szBuilderName = new byte[MAX_COMMON_STRING_64]; // 施工单位全称
+        public byte[]               szBuilderID = new byte[MAX_COMMON_STRING_32];   // 施工单位ID
+        public byte[]               szBuilderType = new byte[MAX_COMMON_STRING_32]; // 施工单位类型
+        public byte[]               szBuilderTypeID = new byte[MAX_COMMON_STRING_8];// 施工单位类别ID
+        public byte[]               szPictureID = new byte[MAX_COMMON_STRING_64];   // 人员照片ID
+        public byte[]               szContractID = new byte[MAX_COMMON_STRING_16];  // 原合同系统合同编号
+        public byte[]               szWorkerTypeID = new byte[MAX_COMMON_STRING_8]; // 工种ID
+        public byte[]               szWorkerTypeName = new byte[MAX_COMMON_STRING_32];  // 工种名称
+        public int                  bPersonStatus;                              	// 人员状态, TRUE:启用, FALSE:禁用
+        public byte[]				bReserved = new byte[256];					    // 保留字节,留待扩展.
+    }
+
+    //图片信息
+    public static class DEV_ACCESS_CTL_IMAGE_INFO extends SdkStructure
+    {
+        public int emType; // 图片类型, 参考 EM_ACCESS_CTL_IMAGE_TYPE
+        public int						nOffSet;												// 二进制块偏移字节
+        public int						nLength;												// 图片大小
+        public int						nWidth;													// 图片宽度(单位:像素)
+        public int						nHeight;												// 图片高度(单位:像素)
+        public byte[]					byReserved = new byte[64];								// 保留字节
+    }
+
+    //图片类型
+    public static class EM_ACCESS_CTL_IMAGE_TYPE extends SdkStructure
+    {
+        public static final int EM_ACCESS_CTL_IMAGE_UNKNOWN = -1;								// 未知
+        public static final int EM_ACCESS_CTL_IMAGE_LOCAL = 0;									// 本地人脸图库
+        public static final int EM_ACCESS_CTL_IMAGE_SCENE = 1;									// 拍摄场景抠图
+        public static final int EM_ACCESS_CTL_IMAGE_FACE = 2;									// 人脸抠图
+    }
+
+    public static class COMPANION_CARD extends SdkStructure
+    {
+        public byte[]				    szCompanionCard = new byte[NET_MAX_CARDINFO_LEN];    	// 陪同者卡号信息
+    }
+
+    // 门禁事件类型
+    public static class NET_ACCESS_CTL_EVENT_TYPE extends SdkStructure
+    {
+        public static final int NET_ACCESS_CTL_EVENT_UNKNOWN = 0;
+        public static final int NET_ACCESS_CTL_EVENT_ENTRY = 1;                          // 进门
+        public static final int NET_ACCESS_CTL_EVENT_EXIT = 2;                           // 出门
+    }
+
+    // 当前门采集状态
+    public static class EM_CARD_STATE extends SdkStructure
+    {
+        public static final int EM_CARD_STATE_UNKNOWN = -1;				// 未知
+        public static final int EM_CARD_STATE_SWIPE = 0;				// 门禁刷卡
+        public static final int EM_CARD_STATE_COLLECTION = 1;			// 门禁采集卡
+    }
+
+    // 获取热度统计信息, 对应命令 NET_DEVSTATE_GET_HEAT_MAP
+    public static class NET_QUERY_HEAT_MAP extends SdkStructure
+    {
+        public int                    	dwSize;                         // 该结构体大小
+        public NET_IN_QUERY_HEAT_MAP    stuIn;                          // 热度统计信息查询条件
+        public NET_OUT_QUERY_HEAT_MAP   stuOut;                         // 热度统计信息查询结果
+
+        public NET_QUERY_HEAT_MAP() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取热度统计信息入参
+    public static class NET_IN_QUERY_HEAT_MAP extends SdkStructure
+    {
+        public int                      nChannel;                       // 通道号
+        public NET_TIME_EX              stuBegin;                       // 开始时间
+        public NET_TIME_EX              stuEnd;                         // 结束时间
+        public int                      nPlanID;                        // 计划ID,仅球机有效,从1开始
+        public int	 					emDataType;					 	// 希望获取的数据类型, 参考  EM_HEAT_PIC_DATA_TYPE
+        public byte[]                   reserved = new byte[1016];      // 预留
+    }
+
+    // 获取热度统计信息出参
+    public static class NET_OUT_QUERY_HEAT_MAP extends SdkStructure
+    {
+        public int                      nWidth;                         // 图片宽度
+        public int                      nHeight;                        // 图片高度
+        public Pointer                  pBufData;                       // 热度数据灰阶位图, 用户申请内存,大小为nBufLen
+        // 若emDataType为EM_HEAT_PIC_DATA_TYPE_GRAYDATA,则一个字节表示一个点
+        // 若emDataType为EM_HEAT_PIC_DATA_TYPE_SOURCEDATA,则四个字节表示一个点
+        public int                      nBufLen;                        // pBufData最大长度
+        public int                      nBufRet;                        // 实际返回的长度
+        public int                      nAverage;                       // 均值信息
+        public int					 	nPlanID;						// 计划ID,与请求NET_IN_QUERY_HEAT_MAP的nPlanID对应
+        public int    					emDataType;						// 获取到的数据类型, 参考 EM_HEAT_PIC_DATA_TYPE
+        public int					 	nPixelMax;						// 实际像素点的最大值
+        public int					 	nPixelMin;						// 实际像素点的最小值
+        public byte[]                   reserved = new byte[1004];      // 预留
+    }
+
+
+    // 热度图数据类型
+    public static class EM_HEAT_PIC_DATA_TYPE extends SdkStructure
+    {
+        public static final int EM_HEAT_PIC_DATA_TYPE_UNKNOWN = 0;		// 未知类型
+        public static final int EM_HEAT_PIC_DATA_TYPE_GRAYDATA = 1;		// 灰度数据
+        public static final int EM_HEAT_PIC_DATA_TYPE_SOURCEDATA = 2;	// 原始数据
+    }
+
+
+    // 通道名称配置
+    public static class NET_ENCODE_CHANNELTITLE_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public byte[]				szChannelName = new byte[MAX_CHANNEL_NAME_LEN];				// 通道名称
+
+        public NET_ENCODE_CHANNELTITLE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频分析全局配置
+    public static class CFG_ANALYSEGLOBAL_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[]				            szSceneType = new byte[MAX_NAME_LEN];	// 应用场景,详见"支持的场景列表", 参考  EM_SCENE_TYPE 里的场景
+
+        //交通场景信息
+        public double				            CameraHeight;							// 摄像头离地高度	单位:米
+        public double				            CameraDistance;						    // 摄像头离地面检测区域中心的水平距离	单位:米
+        public CFG_POLYGON                      stuNearDetectPoint;                     // 近景检测点
+        public CFG_POLYGON                      stuFarDectectPoint;                     // 远景检测点
+        public int                              nNearDistance;                          // NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
+        public int                              nFarDistance;                           // FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
+        public byte[]                           szSubType = new byte[MAX_NAME_LEN];     // 交通场景的子类型,"Gate",卡口类型,"Junction" 路口类型,"ParkingSpace" 车位检测类型
+        public int                              nLaneNum;                               // 车道数
+        public CFG_LANE[]                       stuLanes = (CFG_LANE[])new CFG_LANE().toArray(MAX_LANE_NUM);                 // 车道信息
+        public int                              nPlateHintNum;                          // 车牌字符暗示个数
+        public PLATE_HINT[]                     szPlateHintsArr = (PLATE_HINT[])new PLATE_HINT().toArray(MAX_PLATEHINT_NUM); // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
+        public int                              nLightGroupNum;                         // 灯组数
+        public CFG_LIGHTGROUPS[]                stLightGroups = (CFG_LIGHTGROUPS[])new CFG_LIGHTGROUPS().toArray(MAX_LIGHTGROUP_NUM);      // 灯组配置信息
+        public boolean                          bHangingWordPlate;                      // 是否识别挂字车牌
+        public boolean                          bNonStdPolicePlate;                     // 是否识别非标准警牌
+        public boolean                          bYellowPlateLetter;                     // 是否识别黄牌字母
+        public int                              nReportMode;                            // 上报模式,0:未定义,1:上报所有违章车辆,2:上报车牌识别成功的违章车辆
+        public int                              nPlateMatch;                            // 车牌匹配率,0~100,多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
+        public int                              nJudgment;                              // 违章判定依据,0:未定义,1:按车道,2:按行驶方向,3:按车道和行驶方向
+        public int                              nLeftDivisionPtCount;                   // 左转弯分界线点数
+        public CFG_POLYLINE[]                   stLeftDivisionLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);   // 左转弯分界线
+        public int                              nRightDivisionPtCount;                  // 右转弯分界线点数
+        public CFG_POLYLINE[]                   stRightDivisionLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);  // 右转弯分界线
+        public CFG_ADJUST_LIGHT_COLOR           stAdjustLightColor;                     // 交通灯颜色校正配置
+        public int                              nParkingSpaceNum;                       // 车位数
+        public CFG_PARKING_SPACE[]              stParkingSpaces = (CFG_PARKING_SPACE[])new CFG_PARKING_SPACE().toArray(MAX_PARKING_SPACE_NUM);  // 车位配置信息,每个元素代表一个车位
+
+
+        // 一般场景信息
+        public int                              nStaffNum;                              // 标尺数
+        public CFG_STAFF[]                      stuStaffs = (CFG_STAFF[])new CFG_STAFF().toArray(MAX_STAFF_NUM);               // 标尺
+
+        public int                    			nCalibrateAreaNum;                      // 标定区域数
+        public CFG_CALIBRATEAREA_INFO[]         stuCalibrateArea = (CFG_CALIBRATEAREA_INFO[])new CFG_CALIBRATEAREA_INFO().toArray(MAX_CALIBRATEBOX_NUM); // 标定区域(若该字段不存在,则以整幅场景为标定区域)
+
+        public boolean                          bFaceRecognition;                       // 目标识别场景是否有效
+        public CFG_FACERECOGNITION_SCENCE_INFO  stuFaceRecognitionScene;                // 目标识别场景
+
+        public byte                          	abJitter;
+        public byte                          	abDejitter;
+        public byte[]                           bReserved = new byte[2];                // 保留字段
+
+        public int					            nJitter;								// 摄像机抖动率 : 摄像机抖动率,取值0-100,反应静止摄像机抖动程度,抖动越厉害,值越大。
+        public boolean                          bDejitter;                              // 是否开启去抖动模块 目前不实现
+
+        public boolean                          abCompatibleMode;
+        public int                              nCompatibleMode;                        // 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" :  交通新规则兼容模式;-1:字符串错误
+
+        public int                              nCustomDataLen;                         // 实际数据长度,不能大于1024
+        public byte[]                           byCustomData = new byte[1024];          // 第三方自定义配置数据
+        public double				            CameraAngle;							// 摄像头与垂方向的夹角
+        public CFG_POLYGON			            stuLandLineStart;						// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
+        public CFG_POLYGON			            stuLandLineEnd;							// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)
+
+        public boolean				            bFaceDetection;							// 目标检测场景是否有效
+        public CFG_FACEDETECTION_SCENCE_INFO    stuFaceDetectionScene=new CFG_FACEDETECTION_SCENCE_INFO();		            // 目标检测场景
+        public CFG_TIME_PERIOD		            stuDayTimePeriod=new CFG_TIME_PERIOD();						// 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
+        public CFG_TIME_PERIOD		            stuNightTimePeriod=new CFG_TIME_PERIOD();						// 标定黑夜的时间段.(20,7),表示从晚8点到凌晨7点为黑夜
+        public CFG_TIME_PERIOD_SCENE_INFO       stuTimePeriodSceneInfo;                 // 多场景标定白天和黑夜时间段
+        public CFG_CALIBRATEAREA_SCENE_INFO     stuCalibrateAreaSceneInfo;              // 多场景标定区域配置信息
+        public int       						emSwitchMode;                           // 昼夜算法切换模式,详见 CFG_TIMEPERIOD_SWITCH_MODE
+
+        public int					            nSceneNum;								// 场景数, >0时表示支持多场景, stuMultiScene有效
+        //public CFG_ANALYSEGLOBAL_SCENE[]	    stuMultiScene = (CFG_ANALYSEGLOBAL_SCENE[])new CFG_ANALYSEGLOBAL_SCENE().toArray(MAX_ANALYSE_SCENE_NUM);	// 多场景配置
+
+        public byte[]	    stuMultiScene=new byte[189872 * MAX_ANALYSE_SCENE_NUM];
+        public int								nSceneCount;							// 实际场景个数
+        public SCENE_TYPE_LIST[]				szSceneTypeListArr = (SCENE_TYPE_LIST[])new SCENE_TYPE_LIST().toArray(MAX_SCENE_TYPE_LIST_SIZE);// 场景列别,同一视频通道下启用多个场景时,表示第2个之后的方案(可选)
+        public int								emDepthType;							// 画面景深, 参考 EM_DEPTH_TYPE
+        public int								nPtzPresetId;							// 云台预置点编号,0~255
+        public int								unLongitude;							// 经度 单位百万分之一度
+        public int								unLatitude;								// 纬度 单位百万分之一度
+
+        public int							bSceneTypeListEx;						// szSceneTypeListEx 是否有效,当为TRUE时,使用 szSceneTypeListEx;否则使用 szSceneTypeList
+        public int								nSceneCountEx;							// 实际场景个数扩展,szSceneTypeListEx 的有效个数
+        public byte[]							szSceneTypeListEx=new byte[32*128];				// 场景列表扩展,szSceneTypeList 扩展字段
+
+        public CFG_ANATOMYTEMP_SCENCE_INFO		stuAnatomyTempScene;					// 人体测温场景配置
+        public Pointer			pstuDetectRegionsInfo=new Pointer(new CFG_DETECT_REGIONS_INFO().size());					// 规则相关检测区域信息,CFG_DETECT_REGIONS_INFO
+        public int								nMaxDetectRegions;						// 最大规则相关检测区域个数,内存由客户申请
+        public int								nDetectRegionsNum;						// 规则相关检测区域信息个数
+        public CFG_DETAIL_DRIVEASSISTANT_INFO  stuDriveAssistant=new CFG_DETAIL_DRIVEASSISTANT_INFO();                      // 驾驶辅助场景配置
+        public int  							bParkingSpaceChangeEnable;				// 车位变更使能 FALSE:不使能 TRUE:使能
+        public int					           emSceneType;							    // szSceneType的枚举形式
+        public int							   nSceneCountEm;							// SceneTypeList数量
+        public int[]					       emSceneTypeList = new int[32];			// szSceneTypeList的枚举形式
+    	public CFG_PARKING_STATISTICS_INFO	   stuParkingStatistics;					// 车位统计场景配置信息, szSubType为ParkingStatistics时有效
+        @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+        public CFG_ANALYSEGLOBAL_INFO(){
+
+            this.setAutoSynch(false);
+
+
+        }
+    }
+
+    // 人体测温场景配置
+    public static class CFG_ANATOMYTEMP_SCENCE_INFO extends SdkStructure
+    {
+        public int			                emFaceDetectType;								// 目标检测智能类型(参考CFG_EM_FACEDETECT_TYPE)
+        public CFG_FACEDETECT_VISUAL_INFO	stuVisual;										// 可见光配置,emFaceDetectType为CFG_EM_FACEDETECT_TYPE_VISUAL或CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
+        public CFG_TIME_SECTION				stuTimeSection;									// 可见光时间段,emFaceDetectType为CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
+        public byte[]						byReserved=new byte[1024];						// 预留字段
+    };
+
+    // 可见光配置
+    public static class CFG_FACEDETECT_VISUAL_INFO extends SdkStructure
+    {
+        public int						nFaceAngleUp;								// 需要检测的人脸向上(向下)最大偏角,超过此角度不上报,单位度,0-90。
+        public int						nFaceAngleRight;							// 需要检测的人脸向右(向左)最大偏角,超过此角度不上报,单位度,0-90。
+        public int						nFaceRollRight;								// 需要检测的人脸向右(向左)歪头最大偏角,超过此角度不上报,单位度,0-90。
+        public byte[]					byReserved=new byte[1024];							// 预留字段
+    };
+
+    public static class PLATE_HINT extends SdkStructure
+    {
+        public byte[] 							szPlateHints = new byte[MAX_NAME_LEN];    // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
+    }
+
+    public static class SCENE_TYPE_LIST extends SdkStructure
+    {
+        public byte[]							szSceneTypeList = new byte[CFG_COMMON_STRING_16]; // 场景列别,同一视频通道下启用多个场景时,表示第2个之后的方案(可选)
+    }
+
+    // 车道信息
+    public static class CFG_LANE extends SdkStructure
+    {
+        public int                				nLaneId;                           												// 车道编号
+        public int                				nDirection;                        												// 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
+        public CFG_POLYLINE[]       			stuLeftLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);     // 左车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线
+        public int                				nLeftLineNum;                      												// 左车道线顶点数
+        public CFG_POLYLINE[]       			stuRightLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);    // 右车道线,车道线的方向表示车道方向,沿车道方向右边的称为右车道线
+        public int                				nRightLineNum;                     												// 右车道线顶点数
+        public int                				nLeftLineType;                     												// 左车道线属性,1-表示白实线,2- 白虚线,3- 黄线
+        public int               				nRightLineType;                    												// 右车道线属性,1-表示白实线,2- 白虚线,3- 黄线
+        public int               				bDriveDirectionEnable;             												// 车道行驶方向使能, 1-true  0-false
+        public int                				nDriveDirectionNum;                     										// 车道行驶方向数
+        public DRIVE_DIRECTION[]               	szDriveDirectionArr = (DRIVE_DIRECTION[])new DRIVE_DIRECTION().toArray(MAX_LIGHT_DIRECTION);  // 车道行驶方向,"Straight" 直行,"TurnLeft" 左转,"TurnRight" 右转,"U-Turn":掉头
+        public int                				nStopLineNum;                      												// 车道对应停止线顶点数
+        public CFG_POLYLINE[]       			stuStopLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);     // 车道对应停止线
+        public int                				nTrafficLightNumber;               												// 车道对应的红绿灯组编号
+
+        public byte               				abDetectLine;                      												// 对应能力集
+        public byte               				abPreLine;
+        public byte              				abPostLine;
+        public byte[]              				byReserved = new byte[1];
+
+        public int                				nDetectLine;
+        public CFG_POLYLINE[]       			stuDetectLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);   // 车道对应的检测线
+        public int                				nPreLine;
+        public CFG_POLYLINE[]       			stuPreLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);      // 车道对应的前置线
+        public int                				nPostLine;
+        public CFG_POLYLINE[]      				stuPostLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM); 	// 车道对应的后置线
+        public CFG_TRAFFIC_FLOWSTAT_DIR_INFO 	stuTrafficFlowDir;	  															// 车道流量信息
+        public int  							emRankType;						  												// 道路等级,用于车流量统计上报交通状态, 参考 EM_LANE_RANK_TYPE
+        public int                              nRoadwayNumber;                                                                 // 用户自定义车道号, 1-16
+    }
+
+    public static class DRIVE_DIRECTION extends SdkStructure
+    {
+        public byte[]               			szDriveDirection = new byte[MAX_NAME_LEN];  // 车道行驶方向,"Straight" 直行,"TurnLeft" 左转,"TurnRight" 右转,"U-Turn":掉头
+    }
+
+    // 折线的端点信息
+    public static class CFG_POLYLINE extends SdkStructure
+    {
+        public int							nX; //0~8191
+        public int							nY;
+    }
+
+    // 车辆流量统计车道方向信息
+    public static class CFG_TRAFFIC_FLOWSTAT_DIR_INFO extends SdkStructure
+    {
+        public int							emDrivingDir;									//行驶方向, 参考 CFG_FLOWSTAT_DIRECTION
+        public byte[]						szUpGoing = new byte[CFG_FLOWSTAT_ADDR_NAME];	//上行地点
+        public byte[]						szDownGoing = new byte[CFG_FLOWSTAT_ADDR_NAME];	//下行地点
+    }
+
+    // 交通灯组配置信息
+    public static class CFG_LIGHTGROUPS extends SdkStructure
+    {
+        public int                  		nLightGroupId;                     						// 灯组编号
+        public CFG_RECT             		stuLightLocation;                  						// 灯组坐标
+        public int                 		    nDirection;                        						// 灯组的方向,1- 灯组水平向,2- 灯组垂直向
+        public int               			bExternalDetection;                						// 是否为外接红绿灯信号,当外接红绿灯时,以外界信号为判断依据。外界信号每次跳变时通知
+        public int               			bSwingDetection;                   						// 是否支持自适应灯组摇摆检测,在风吹或者容易震动的场景下,位置会进行一定的浮动偏差。如果由算法自行检测,会增加检测时间
+        public int                  		nLightNum;                         						// 灯组中交通灯的数量
+        public CFG_LIGHTATTRIBUTE[] 		stuLightAtrributes = (CFG_LIGHTATTRIBUTE[])new CFG_LIGHTATTRIBUTE().toArray(MAX_LIGHT_NUM); // 灯组中各交通灯的属性
+
+    }
+
+    // 交通灯属性
+    public static class CFG_LIGHTATTRIBUTE extends SdkStructure
+    {
+        public int              			bEnable;                           											// 当前交通灯是否有效,与车辆通行无关的交通需要设置无效
+        public int              			nTypeNum;
+        public LIGHT_TYPE[]					szLightTypeArr = (LIGHT_TYPE[])new LIGHT_TYPE().toArray(MAX_LIGHT_TYPE);    // 当前交通灯显现内容(包括:红-Red,黄-Yellow,绿-Green,倒计时-Countdown),如某交通灯可以显示红黄绿三种颜色,某交通灯只显示倒计时
+        public int              			nDirectionNum;
+        public DIRECTION[]       		    szDirectionArr = (DIRECTION[])new DIRECTION().toArray(MAX_LIGHT_DIRECTION); // 交通灯指示的行车方向,"Straight": 直行,"TurnLeft":左转,"TurnRight":右转,"U-Turn": 掉头
+        public int              			nYellowTime;                       									    	// 黄灯亮时间
+    }
+
+    public static class LIGHT_TYPE extends SdkStructure
+    {
+        public byte[]		     			szLightType = new byte[MAX_NAME_LEN];      // 当前交通灯显现内容(包括:红-Red,黄-Yellow,绿-Green,倒计时-Countdown),如某交通灯可以显示红黄绿三种颜色,某交通灯只显示倒计时
+    }
+
+    public static class DIRECTION extends SdkStructure
+    {
+        public byte[]             		szDirection = new byte[MAX_NAME_LEN];         // 交通灯指示的行车方向,"Straight": 直行,"TurnLeft":左转,"TurnRight":右转,"U-Turn": 掉头
+    }
+
+    // 交通灯颜色校正配置
+    public static class CFG_ADJUST_LIGHT_COLOR extends SdkStructure
+    {
+        public int                  nMode;                                  								// 红灯颜色校正模式 0:未定义 1:红绿灯才校正 2:一直校正
+        public int                  bEnable;                                								// 是否允许图片红绿灯颜色校正
+        public int                  nLevel;                                 								// 校正等级 范围0~100,数值越大矫正越明显
+        public int                  bVideoEnable;                           								// 是否启用视频涂红功能,存在此项时,Level值使用LevelSeparate下的Level值
+        public ADJUST_LEVEL_SEP[]   stLevelSep = (ADJUST_LEVEL_SEP[])new ADJUST_LEVEL_SEP().toArray(4);     // 分立等级,目前为4个
+    }
+
+    // 交通灯颜色校正配置,分立项
+    public static class ADJUST_LEVEL_SEP extends SdkStructure
+    {
+        public int                  nType;                                  // 0:未定义,1:视频,2:图片
+        public int                  nTime;                                  // 0:未定义,1:白天,2:夜晚
+        public int                  nLevel;                                 // 范围0~100,数值越大矫正越明显
+    }
+
+    public static class CFG_PARKING_SPACE extends SdkStructure
+    {
+        public int             	    nNumber;                									 //车位编号
+        public CFG_REGION      	    stArea;                										 //检测区域
+        public int                  nShieldAreaNum;                              				 //有效屏蔽区个数
+        public CFG_REGION[]         stShieldArea =
+                (CFG_REGION[])new CFG_REGION().toArray(MAX_SHIELD_AREA_NUM); //屏蔽区域
+        public byte[]            szCustomParkNo=new byte[CFG_COMMON_STRING_32];        // 自定义车位名称
+        //public int             nPtzPresetId;							     // 云台预置点编号,0~255
+    }
+
+    public static class CFG_STAFF extends SdkStructure
+    {
+        public CFG_POLYLINE         stuStartLocation;      					// 起始坐标点
+        public CFG_POLYLINE         stuEndLocation;        					// 终止坐标点
+        public float                nLenth;               					// 实际长度,单位米
+        public int	   		        emType;                					// 标尺类型, 参考 EM_STAFF_TYPE
+    }
+
+    // 标定区域,普通场景使用
+    public static class CFG_CALIBRATEAREA_INFO extends SdkStructure
+    {
+        public int					nLinePoint;								// 水平方向标尺线顶点数
+        public CFG_POLYGON[]		stuLine =
+                (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYLINE_NUM);// 水平方向标尺线
+        public float				fLenth;                 				// 实际长度
+        public CFG_REGION			stuArea;                  				// 区域
+        public int                 	nStaffNum;                 				// 垂直标尺数
+        public CFG_STAFF[]          stuStaffs =
+                (CFG_STAFF[])new CFG_STAFF().toArray(MAX_STAFF_NUM); // 垂直标尺
+        public int 					emType;									// 区域类型, 参考 EM_CALIBRATEAREA_TYPE
+        public int				    emMethodType;							// 标定方式, 参考  EM_METHOD_TYPE
+    }
+
+    // 目标识别场景
+    public static class CFG_FACERECOGNITION_SCENCE_INFO extends SdkStructure
+    {
+        public double				dbCameraHeight;							// 摄像头离地高度 单位:米
+        public double				dbCameraDistance;						// 摄像头离地面检测区域中心的水平距离 单位:米
+        public int                  nMainDirection;                         // 人流主要方向顶点数
+        public CFG_POLYGON[]        stuMainDirection =
+                (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYLINE_NUM); // 人流主要方向,第一个点是起始点,第二个点是终止点
+        public byte                 byFaceAngleDown;                        // 需要检测的人脸向下最大偏角, 单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
+        public byte                 byFaceAngleUp;                          // 需要检测的人脸向上最大偏角,单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
+        public byte                 byFaceAngleLeft;                        // 需要检测的人脸向左最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
+        public byte                 byFaceAngleRight;                       // 需要检测的人脸向右最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
+        public int					emDetectType;							// 目标检测类型, 参考 EM_FACEDETECTION_TYPE
+    }
+
+    // 目标检测场景
+    public static class CFG_FACEDETECTION_SCENCE_INFO extends SdkStructure
+    {
+        public double				dbCameraHeight;							// 摄像头离地高度 单位:米
+        public double				dbCameraDistance;						// 摄像头离地面检测区域中心的水平距离 单位:米
+        public int                  nMainDirection;                         // 人流主要方向顶点数
+        public CFG_POLYGON[]        stuMainDirection = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYLINE_NUM);     // 人流主要方向,第一个点是起始点,第二个点是终止点
+        public byte                 byFaceAngleDown;                        // 需要检测的人脸向下最大偏角, 单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
+        public byte                 byFaceAngleUp;                          // 需要检测的人脸向上最大偏角,单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
+        public byte                 byFaceAngleLeft;                        // 需要检测的人脸向左最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
+        public byte                 byFaceAngleRight;                       // 需要检测的人脸向右最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
+        public int					emDetectType;							// 目标检测类型, 参考 EM_FACEDETECTION_TYPE
+    }
+
+    public static class CFG_TIME_PERIOD extends SdkStructure
+    {
+        public CFG_TIME				stuStartTime;
+        public CFG_TIME				stuEndTime;
+    }
+
+    public static class CFG_TIME extends SdkStructure
+    {
+        public int					dwHour;									// 时
+        public int					dwMinute;								// 分
+        public int					dwSecond;								// 秒
+    }
+
+    // 多场景标定白天和黑夜配置
+    public static class CFG_TIME_PERIOD_SCENE_INFO extends SdkStructure
+    {
+        public int                  dwMaxTimePeriodSceneNum;                // 多场景标定白天和黑夜配置最大个数(需要申请此大小内存)
+        public int                  dwRetTimePeriodSceneNum;                // 实际包含多场景标定白天和黑夜配置个数
+        public Pointer   			pstuTimePeriodScene;                    // 多场景标白天和黑夜配置域单元,由用户申请内存,大小为sizeof(CFG_TIME_PERIOD_SCENE_UNIT)*dwMaxTimePeriodSceneNum
+        // 指向  CFG_TIME_PERIOD_SCENE_UNIT[]
+    }
+
+    // 多场景标定区域配置
+    public static class CFG_CALIBRATEAREA_SCENE_INFO extends SdkStructure
+    {
+        public int                  dwMaxSceneCalibrateAreaNum;             // 多场景标定区域最大个数(需要申请此大小内存)
+        public int                  dwRetSceneCalibrateAreaNum;             // 实际包含多场景标定区域个数
+        public Pointer 				pstuCalibrateArea;                      // 多场景标定区域单元, 由用户申请内存, 指向 CFG_CALIBRATEAREA_SCENE_UNIT[]。
+        // 大小为  sizeof(CFG_CALIBRATEAREA_SCENE_UNIT)*dwMaxSceneCalibrateAreaNum
+    }
+
+    // 昼夜算法切换模式
+    public static class CFG_TIMEPERIOD_SWITCH_MODE extends SdkStructure
+    {
+        public static final int CFG_TIMEPERIOD_SWITCH_MODE_UNKNOWN = 0;        // 未知
+        public static final int CFG_TIMEPERIOD_SWITCH_MODE_BYCOLOR = 1;        // 通过色彩切换
+        public static final int CFG_TIMEPERIOD_SWITCH_MODE_BYBRIGHTNESS = 2;   // 通过亮度切换
+        public static final int CFG_TIMEPERIOD_SWITCH_MODE_BYPOS = 3;		   // 通过经纬度计算日出日落时间切换
+    }
+
+    // 视频分析全局配置场景
+    public static class CFG_ANALYSEGLOBAL_SCENE extends SdkStructure
+    {
+        public byte[]							szSceneType = new byte[MAX_NAME_LEN];	// 应用场景,详见"支持的场景列表"
+
+        public union 			   				union = new union();
+        // 以下为场景具体信息, 根据szSceneType决定哪个场景有效
+        public static class union extends Union {
+            public CFG_FACEDETECTION_SCENCE_INFO	stuFaceDetectionScene;				// 目标检测场景/目标识别检查
+            public CFG_TRAFFIC_SCENE_INFO			stuTrafficScene;					// 交通场景
+            public CFG_NORMAL_SCENE_INFO			stuNormalScene;						// 普通场景/远景场景/中景场景/近景场景/室内场景/人数统计场景
+            public CFG_TRAFFIC_TOUR_SCENE_INFO		stuTrafficTourScene;				// 交通巡视场景
+            public CFG_CROWD_SCENE_INFO			    stuCrowdScene;			// 人群态势和人群密度场景
+            public CFG_ANATOMYTEMP_SCENCE_INFO		stuAnatomyTempScene;	// 人体测温场景
+        }
+
+        public int								emDepthType;							// 画面景深, 参考 EM_DEPTH_TYPE
+        public int								nPtzPresetId;							// 云台预置点编号,0~255
+        // 以下是有多个大类业务的情况
+        public int								nSceneListCount;						// 实际场景个数
+        public SCENE_TYPE_LIST[]				szSceneTypeListArr = (SCENE_TYPE_LIST[])new SCENE_TYPE_LIST().toArray(MAX_SCENE_TYPE_LIST_SIZE);// 场景列别,同一视频通道下启用多个场景时,表示第2个之后的方案
+        // 多个大类业务时有效
+        public CFG_INTELLI_UNIFORM_SCENE 		stuUniformScene; 						// 统一场景配置
+        public int						    bSceneTypeListEx;						// szSceneTypeListEx 是否有效,当为TRUE时,使用szSceneTypeListEx
+        public int							nSceneListCountEx;						// 实际场景个数扩展,szSceneTypeListEx 的有效个数
+        public byte[]						szSceneTypeListEx=new byte[32*128];				// 场景列表扩展,szSceneTypeList 的扩展字段
+        public Pointer		                pstuDetectRegionsInfo;					// 规则相关检测区域信息,CFG_DETECT_REGIONS_INFO
+        public int							nMaxDetectRegions;						// 最大规则相关检测区域个数,内存由客户申请
+        public int							nDetectRegionsNum;						// 规则相关检测区域信息个数
+    }
+
+    public static class CFG_CROWD_SCENE_INFO extends SdkStructure{
+    	public float				fCameraHeight;		// 摄像头离地高度	单位:米
+    }
+
+    // 交通场景
+    public static class CFG_TRAFFIC_SCENE_INFO extends SdkStructure
+    {
+        public int                		abCompatibleMode;
+        public int                 		nCompatibleMode;                        	// 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" :  交通新规则兼容模式;-1:字符串错误
+        public float					fCameraHeight;								// 摄像头离地高度	单位:米
+        public float					fCameraDistance;							// 摄像头离地面检测区域中心的水平距离	单位:米
+        public byte[]                	szSubType = new byte[MAX_NAME_LEN];     	// 交通场景的子类型,"Gate" 卡口类型,"Junction" 路口类型
+        // "Tunnel"隧道类型 , "ParkingSpace"车位检测类型
+        // "Bridge"桥梁类型
+        // "Freeway"高速公路类型
+        public CFG_POLYGON         		stuNearDetectPoint;                     	// 近景检测点
+        public CFG_POLYGON         		stuFarDectectPoint;                     	// 远景检测点
+        public int                 		nNearDistance;                          	// NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
+        public int                 		nFarDistance;                           	// FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
+        public int                 		nPlateHintNum;                          	// 车牌字符暗示个数
+        public PLATE_HINT[]         	szPlateHintsArr = (PLATE_HINT[])new PLATE_HINT().toArray(MAX_PLATEHINT_NUM); 		   // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
+        public int                 		nLaneNum;                               	// 车道数
+        public CFG_LANE[]            	stuLanes = (CFG_LANE[])new CFG_LANE().toArray(MAX_LANE_NUM);                 		   // 车道信息
+        public int                 		nLightGroupNum;                         	// 灯组数
+        public CFG_LIGHTGROUPS[]     	stLightGroups = (CFG_LIGHTGROUPS[])new CFG_LIGHTGROUPS().toArray(MAX_LIGHTGROUP_NUM);  // 灯组配置信息
+        public int                		bHangingWordPlate;                      	// 是否识别挂字车牌
+        public int                		bNonStdPolicePlate;                     	// 是否识别非标准警牌
+        public int                		bYellowPlateLetter;                     	// 是否识别黄牌字母
+        public int                 		nReportMode;                            	// 上报模式,0:未定义,1:上报所有违章车辆,2:上报车牌识别成功的违章车辆
+        public int                 		nPlateMatch;                            	// 车牌匹配率,0~100,多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
+        public int                 		nJudgment;                              	// 违章判定依据,0:未定义,1:按车道,2:按行驶方向,3:按车道和行驶方向
+        public int                 		nLeftDivisionPtCount;                   	// 左转弯分界线点数
+        public CFG_POLYLINE[]        	stLeftDivisionLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);     // 左转弯分界线
+        public int                 		nRightDivisionPtCount;                  	// 右转弯分界线点数
+        public CFG_POLYLINE[]        	stRightDivisionLine = (CFG_POLYLINE[])new CFG_POLYLINE().toArray(MAX_POLYLINE_NUM);    // 右转弯分界线
+        public CFG_ADJUST_LIGHT_COLOR   stAdjustLightColor;                 		// 交通灯颜色校正配置
+        public int                  	nParkingSpaceNum;                       	// 车位数
+        public CFG_PARKING_SPACE[]    	stParkingSpaces = (CFG_PARKING_SPACE[])new CFG_PARKING_SPACE().toArray(MAX_PARKING_SPACE_NUM);// 车位配置信息,每个元素代表一个车位
+
+    }
+
+    // 普遍场景
+    public static class CFG_NORMAL_SCENE_INFO extends SdkStructure
+    {
+        public float					fCameraHeight;							// 摄像头离地高度	单位:米
+        public float					fCameraAngle;							// 摄像头与垂方向的夹角	单位度,0~90,
+        public float					fCameraDistance;						// 摄像头离地面检测区域中心的水平距离	单位:米
+        public CFG_POLYGON				stuLandLineStart;						// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
+        public CFG_POLYGON				stuLandLineEnd;							// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)
+    }
+
+    // 交通巡视场景
+    public static class CFG_TRAFFIC_TOUR_SCENE_INFO extends SdkStructure
+    {
+        public int                 		nPlateHintNum;                          // 车牌字符暗示个数
+        public PLATE_HINT[]             szPlateHintsArr = (PLATE_HINT[])new PLATE_HINT().toArray(MAX_PLATEHINT_NUM); // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
+    }
+
+    // 统一场景配置,TypeList存在时配置此场景
+    public static class CFG_INTELLI_UNIFORM_SCENE extends SdkStructure
+    {
+        public byte[]                	szSubType = new byte[MAX_NAME_LEN];                			  // 交通场景的子类型,"Gate" 卡口类型,"Junction" 路口类型
+        // "Tunnel"隧道类型 , "ParkingSpace"车位检测类型
+        // "Bridge"桥梁类型
+        // "Freeway"高速公路类型
+        public int                 		nPlateHintNum;                          					  // 车牌字符暗示个数
+        public PLATE_HINT[]             szPlateHints = (PLATE_HINT[])new PLATE_HINT[MAX_PLATEHINT_NUM]; // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
+        public int                 		nLaneNum;                               					  // 车道数
+        public CFG_LANE[]            	stuLanes = (CFG_LANE[])new CFG_LANE().toArray(MAX_LANE_NUM);  // 车道信息
+    }
+
+    // CLIENT_MatrixAddCamerasByDevice 接口输入参数
+    public static class NET_IN_ADD_LOGIC_BYDEVICE_CAMERA extends SdkStructure
+    {
+        public int                   	dwSize;
+        public byte[]                   pszDeviceID = new byte[NET_DEV_ID_LEN]; 	// 设备ID
+        public NET_REMOTE_DEVICE        stuRemoteDevice;            				// 远程设备信息
+        public int                      nCameraCount;               				// 视频源信息数量
+        public Pointer 					pCameras;      								// 视频源信息数组,用户分配内存,大小为sizeof(NET_LOGIC_BYDEVICE_ADD_CAMERA_PARAM)*nCameraCount
+        // 对应 NET_LOGIC_BYDEVICE_ADD_CAMERA_PARAM[]
+
+        public NET_IN_ADD_LOGIC_BYDEVICE_CAMERA() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_MatrixAddCamerasByDevice 接口输出参数
+    public static class NET_OUT_ADD_LOGIC_BYDEVICE_CAMERA extends SdkStructure
+    {
+        public int                   	dwSize;
+        public byte[]                   szDeviceID = new byte[NET_DEV_ID_LEN];     // 设备ID
+        public int                      nMaxResultCount;              			   // nMaxResultCount, 用户填写
+        public int                      nRetResultCount;              			   // 实际结果数量
+        public Pointer 					pResults;        						   // 添加视频源结果数组,用户分配内存,大小为sizeof(NET_LOGIC_BYDEVICE_ADD_CAMERA_RESULT)*nMaxResultCount
+        // 对应  NET_LOGIC_BYDEVICE_ADD_CAMERA_RESULT[]
+
+        public NET_OUT_ADD_LOGIC_BYDEVICE_CAMERA() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频源信息
+    public static class NET_LOGIC_BYDEVICE_ADD_CAMERA_PARAM extends SdkStructure
+    {
+        public int                   	dwSize;
+        public int                      nUniqueChannel;             			  // 统一编号
+        public int                      nChannel;                   			  // 通道号
+
+        public NET_LOGIC_BYDEVICE_ADD_CAMERA_PARAM() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加视频源结果信息
+    public static class NET_LOGIC_BYDEVICE_ADD_CAMERA_RESULT extends SdkStructure
+    {
+        public int                   	dwSize;
+        public int                      nUniqueChannel;             		      // 统一编号
+        public int                      nFailedCode;               			      // 失败码, 0-成功,1-通道不支持设置
+
+        public NET_LOGIC_BYDEVICE_ADD_CAMERA_RESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 EVENT_IVS_FACEDETECT (目标检测事件)对应的规则配置
+    public static class CFG_FACEDETECT_INFO extends SdkStructure
+    {
+        public byte[]							szRuleName = new byte[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
+        public byte								bRuleEnable;														// 规则使能, 1-true  0-false
+        public byte[]                			bReserved = new byte[3];                                            // 保留字段
+        public int								nObjectTypeNum;														// 相应物体类型个数
+        public byte[]				            szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];			    // 相应物体类型列表
+        public int								nDetectRegionPoint;													// 检测区顶点数
+        public CFG_POLYGON[]					stuDetectRegion = (CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);						    // 检测区
+        public int                 				nHumanFaceTypeCount;                                    			// 触发事件的人脸类型个数
+        public byte[]     		                szHumanFaceType = new byte[MAX_HUMANFACE_LIST_SIZE*MAX_NAME_LEN];   // 触发事件的人脸类型
+        public CFG_ALARM_MSG_HANDLE 			stuEventHandler;													// 报警联动
+        public CFG_TIME_SECTION[]	            stuTimeSection =
+                (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);	// 事件响应时间段
+        public int                 				nPtzPresetId;														// 云台预置点编号	0~65535
+        public int                 				nMinDuration;                                           			// 最短触发时间,单位:秒
+        public int                 				nSensitivity;                                           			// 灵敏度,范围[1,10],灵敏度越高越容易检测
+        public int                 				nReportInterval;                                        			// 重复报警间隔,单位:秒,[0,600](等于0表示不重复报警)
+        public int               		 		bSizeFileter;                                           			// 规则特定的尺寸过滤器是否有效
+        public CFG_SIZEFILTER_INFO 				stuSizeFileter;                                         			// 规则特定的尺寸过滤器, 1-true  0-false
+        public int								bFeatureEnable;														// 是否开启人脸属性识别, IPC增加, 1-true 0-false
+        // (通过FaceDetection能力中的FeatureSupport来确定该配置是否可以设置)
+        public int								nFaceFeatureNum;													// 需要检测的人脸属性个数
+        public int[]  							emFaceFeatureType = new int[MAX_FEATURE_LIST_SIZE];				 	// 需检测的人脸属性, 通过FaceDetection能力来获取支持哪些人脸属性, 参考  EM_FACEFEATURE_TYPE
+    }
+
+    public static class MAX_OBJECT_LIST extends SdkStructure
+    {
+        public byte[]				 			szObjectTypes = new byte[MAX_NAME_LEN];   	// 相应物体类型列表
+    }
+
+    public static class MAX_HUMANFACE_LIST extends SdkStructure
+    {
+        public byte[]                			szHumanFaceType = new byte[MAX_NAME_LEN];  // 触发事件的人脸类型
+    }
+
+    public static class TIME_SECTION_WEEK_DAY_10 extends SdkStructure
+    {
+        public CFG_TIME_SECTION[]	 			stuTimeSection = (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(MAX_REC_TSECT_EX);	 // 事件响应时间段
+             public TIME_SECTION_WEEK_DAY_10(){
+            for(int i=0;i<stuTimeSection.length;i++){
+                stuTimeSection[i]=new CFG_TIME_SECTION();
+            }
+        }
+    }
+
+    public static class TIME_SECTION_WEEK_DAY_6 extends SdkStructure
+    {
+        public CFG_TIME_SECTION[]	 			stuTimeSection = (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(MAX_REC_TSECT);	     // 事件响应时间段, 每天最多6个时间段
+        public TIME_SECTION_WEEK_DAY_6(){
+            for(int i=0;i<stuTimeSection.length;i++){
+                stuTimeSection[i]=new CFG_TIME_SECTION();
+            }
+
+        }
+    }
+
+    public static class TIME_SECTION_WEEK_DAY_4 extends SdkStructure
+    {
+        public CFG_TIME_SECTION[]	 			stuTimeSection = (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(MAX_DOOR_TIME_SECTION);	 // 事件响应时间段, 每天最多4个时间段
+        public TIME_SECTION_WEEK_DAY_4(){
+            for(int i=0;i<stuTimeSection.length;i++){
+                stuTimeSection[i]=new CFG_TIME_SECTION();
+            }
+        }
+    }
+
+    public static class TIME_SECTION_WEEK_DAY_2 extends SdkStructure
+    {
+        public CFG_TIME_SECTION[]	 			stuTimeSection = (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(MAX_NAS_TIME_SECTION);	 // 事件响应时间段, 每天最多4个时间段
+                public TIME_SECTION_WEEK_DAY_2(){
+                    for(int i=0;i<stuTimeSection.length;i++){
+                        stuTimeSection[i]=new CFG_TIME_SECTION();
+                    }
+                }
+    }
+
+    // 设备ID
+    public static class DEVICE_ID extends SdkStructure
+    {
+        public byte[]	szDeviceID = new byte[NET_DEV_ID_LEN_EX]; 	// 设备ID
+    }
+
+    // 设备通知类型
+    public static class EM_DEVICE_NOTIFY_TYPE extends SdkStructure
+    {
+        public static final int EM_DEVICE_NOTIFY_TYPE_UNKNOWN = 0;			// 未知
+        public static final int EM_DEVICE_NOTIFY_TYPE_NEW = 1;			    // 新设备添加
+        public static final int EM_DEVICE_NOTIFY_TYPE_UPDATE = 2;			// 设备信息更新
+        public static final int EM_DEVICE_NOTIFY_TYPE_REMOVE = 3;			// 设备删除
+        public static final int EM_DEVICE_NOTIFY_TYPE_CONNECT = 4;			// 设备有通道上下线
+    }
+
+    // 向设备注册的回调返回信息
+    public static class NET_CB_ATTACH_DEVICE_STATE extends SdkStructure
+    {
+        public int   		    emNotifyType;    	                // 通知类型, 详见 EM_DEVICE_NOTIFY_TYPE
+        public int 				nRetCount;				            // 设备个数
+        public DEVICE_ID[]		szDeviceIDsArr = (DEVICE_ID[])new DEVICE_ID().toArray(MAX_LINK_DEVICE_NUM); // 设备列表
+        public byte[] 			byReserved = new byte[512];         // 保留字节
+    }
+
+    // CLIENT_AttachDeviceState 注册设备状态回调入参结构
+    public static class NET_IN_ATTACH_DEVICE_STATE extends SdkStructure
+    {
+        public int                           	dwSize;
+        public Callback         			cbDeviceState; 		//回调函数
+        public Pointer                          dwUser;             //用户数据
+
+        public NET_IN_ATTACH_DEVICE_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachDeviceState 注册设备状态回调出参结构
+    public static class NET_OUT_ATTACH_DEVICE_STATE extends SdkStructure
+    {
+        public int           dwSize;
+
+        public NET_OUT_ATTACH_DEVICE_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AsyncAddDevice 添加设备入参结构
+    public static class NET_IN_ASYNC_ADD_DEVICE extends SdkStructure
+    {
+        public int                           dwSize;
+        public int							 nCount;																	// URL个数
+        public DEVICE_URL[]		 			 szUrlsArr = (DEVICE_URL[])new DEVICE_URL().toArray(MAX_ADD_DEVICE_NUM);	// URL组
+
+        public NET_IN_ASYNC_ADD_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备URL
+    public static class DEVICE_URL extends SdkStructure {
+        public byte[] szUrl = new byte[MAX_COMMON_STRING_512];    // URL
+    }
+
+    // CLIENT_AsyncAddDevice 添加设备出参结构
+    public static class NET_OUT_ASYNC_ADD_DEVICE extends SdkStructure
+    {
+        public int           				dwSize;
+        public int							nTaskID;		//任务ID
+
+        public NET_OUT_ASYNC_ADD_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备的添加状态
+    public static class EM_DEVICE_ADD_STATE extends SdkStructure
+    {
+        public static final int EM_DEVICE_ADD_STATE_UNKNOWN = 0;			// 未知
+        public static final int EM_DEVICE_ADD_STATE_WAIT = 1;			    // 等待添加
+        public static final int EM_DEVICE_ADD_STATE_CONNECT = 2;			// 连接中
+        public static final int EM_DEVICE_ADD_STATE_FAILURE = 3;			// 添加失败
+        public static final int EM_DEVICE_ADD_STATE_SUCCESS = 4;			// 添加成功
+        public static final int EM_DEVICE_ADD_STATE_STOP = 5;				// 停止添加
+    }
+
+    // 注册添加设备的回调返回信息
+    public static class NET_CB_ATTACH_ADD_DEVICE extends SdkStructure
+    {
+        public int                	nTaskID;       						// 任务ID
+        public int					emAddState;							// 添加设备结果
+        public int					nIndex;								// 任务中设备序号
+        public byte[] 				byReserved = new byte[512];         // 保留字节
+    }
+
+    // CLIENT_AttachAddDevice 注册添加设备回调入参结构
+    public static class NET_IN_ATTACH_ADD_DEVICE extends SdkStructure
+    {
+        public int                           	dwSize;
+        public Callback         			cbAddDevice; 		//回调函数
+        public Pointer                          dwUser;             //用户数据
+
+        public NET_IN_ATTACH_ADD_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_AttachAddDevice 注册添加设备回调出参结构
+    public static class NET_OUT_ATTACH_ADD_DEVICE extends SdkStructure
+    {
+        public int               	dwSize;
+
+        public NET_OUT_ATTACH_ADD_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetAddDeviceInfo 获取添加中的设备状态入参结构
+    public static class NET_IN_GET_ADD_DEVICE_LIST_INFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public int					nTaskID;										// 任务ID
+        public int					nCount;											// 设备个数
+        public int[]              	nIndex = new int[MAX_ADD_DEVICE_NUM];       	// 设备序号列表(NET_IN_ADD_DEVICE中szUrls的序号,从0开始)
+
+        public NET_IN_GET_ADD_DEVICE_LIST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加中设备的结果信息
+    public static class NET_GET_ADD_DEVICE_INFO extends SdkStructure
+    {
+        public byte[]                	szDeviceID = new byte[NET_DEV_ID_LEN_EX];       // 设备ID
+        public byte[]                	szUrl = new byte[NET_COMMON_STRING_512];        // url
+        public int						emAddState;										// 当前添加状态,详见 EM_DEVICE_ADD_STATE
+        public int						nErrorCode;										// 错误码
+        public byte[] 					byReserved = new byte[512];                     // 保留字节
+    }
+
+    // CLIENT_GetAddDeviceInfo 获取添加中的设备状态出参结构
+    public static class NET_OUT_GET_ADD_DEVICE_LIST_INFO extends SdkStructure
+    {
+        public int               			dwSize;
+        public int							nRetCount;															// 设备个数
+        public NET_GET_ADD_DEVICE_INFO[]  	stuDeviceInfo =
+                (NET_GET_ADD_DEVICE_INFO[])new NET_GET_ADD_DEVICE_INFO().toArray(MAX_ADD_DEVICE_NUM);  	// 设备信息列表
+
+        public NET_OUT_GET_ADD_DEVICE_LIST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetDeviceInfo 获取已添加的设备状态入参结构
+    public static class NET_IN_GET_DEVICE_LIST_INFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public int					nCount;															// 设备个数
+        public DEVICE_ID[]			szDeviceIDsArr = (DEVICE_ID[])new DEVICE_ID().toArray(MAX_LINK_DEVICE_NUM); // 设备列表
+
+        public NET_IN_GET_DEVICE_LIST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 已添加设备的结果信息
+    public static class NET_GET_DEVICE_INFO extends SdkStructure
+    {
+        public byte[]                szDeviceID = new byte[NET_DEV_ID_LEN_EX];           						// 设备ID
+        public byte[]                szUrl = new byte[NET_COMMON_STRING_512];           						// url
+        public byte[]                szSerialNo = new byte[NET_COMMON_STRING_32];           					// 设备序列号
+        public byte[]                szDeviceType = new byte[NET_COMMON_STRING_64];      						// 设备类型
+        public byte[]                szDeviceClass = new byte[NET_DEV_CLASS_LEN];        						// 设备大类
+        public int					 nMacCount;																	// 设备mac个数
+        public DEVICE_MAC[]	 		 szMacsArr = (DEVICE_MAC[])new DEVICE_MAC().toArray(MAX_MACADDR_NUM);		// 设备mac地址组
+        public byte[]                szDevSoftVersion = new byte[NET_COMMON_STRING_128];       					// 设备软件版本号
+        public byte[]                szDeviceName = new byte[NET_DEV_NAME_LEN];          						// 设备名称
+        public byte[]                szDetail = new byte[NET_COMMON_STRING_512];          						// 设备详细信息
+        public int                	 nVideoInputCh;                          									// 视频输入通道数
+        public int               	 nVideoOutputCh;                         									// 视频输出通道数
+        public int               	 nAudioInputCh;                          									// 音频输入通道数
+        public int               	 nAudioOutputCh;                         									// 音频输出通道数
+        public int               	 nAlarmInputCh;                          									// 报警输入通道数
+        public int                	 nAlarmOutputCh;                         									// 报警输出通道数
+        public int					 nErrorCode;																// 设备离线错误码
+        public int					 nVtoDoors;																	// 门禁设备可控制的门的总数
+        public byte					 byOnline;																	// 设备是否在线 0:离线 1:在线
+        public byte[] 				 byReserved = new byte[511];                    							// 保留字节
+    }
+
+    // 设备mac地址
+    public static class DEVICE_MAC extends SdkStructure {
+        public byte[] szMac = new byte[NET_MACADDR_LEN];    // 设备mac地址
+    }
+
+    // CLIENT_GetDeviceInfo 获取已添加的设备状态出参结构
+    public static class NET_OUT_GET_DEVICE_LIST_INFO extends SdkStructure
+    {
+        public int               		dwSize;
+        public int						nMaxCount;			// 用户申请的设备个数
+        public int						nRetCount;			// 实际返回的设备个数
+        public Pointer  				pstuDeviceInfo; 	// 设备信息列表 用户分配内存,大小为sizeof(NET_GET_DEVICE_INFO)*nMaxCount, 对应 NET_GET_DEVICE_INFO[]
+
+        public NET_OUT_GET_DEVICE_LIST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SetConnectChannel 设置连接通道入参结构
+    public static class NET_IN_SET_CONNECT_CHANNEL extends SdkStructure
+    {
+        public int               	dwSize;
+        public byte[]               szDeviceID = new byte[NET_DEV_ID_LEN_EX];    	// 设备ID
+        public int					nCount;											// 通道个数
+        public int[]            	nChannels = new int[MAX_DEVICE_CHANNEL_NUM];    // 通道列表
+
+        public NET_IN_SET_CONNECT_CHANNEL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SetConnectChannel 设置连接通道出参结构
+    public static class NET_OUT_SET_CONNECT_CHANNEL extends SdkStructure
+    {
+        public int					dwSize;
+
+        public NET_OUT_SET_CONNECT_CHANNEL() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetChannelInfo 获取设备通道信息入参结构
+    public static class NET_IN_GET_CHANNEL_INFO extends SdkStructure
+    {
+        public int					dwSize;
+        public byte[]		        szDeviceID = new byte[NET_DEV_ID_LEN_EX]; // 设备ID
+
+        public NET_IN_GET_CHANNEL_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取设备通道信息结果信息
+    public static class NET_GET_CHANNEL_INFO extends SdkStructure
+    {
+        public int                	nRemoteChannel;           								// 远程通道号
+        public int                 	nLogicChannel;           								// 分配的逻辑通道
+        public byte[]       		szName = new byte[NET_DEV_NAME_LEN];      				// 通道名称
+        public byte[]       		szDetail = new byte[NET_COMMON_STRING_512];     		// 设备详细信息
+        public byte[]               szDeviceType = new byte[NET_COMMON_STRING_64];      	// 设备类型
+        public byte[]               szDeviceClass = new byte[NET_DEV_CLASS_LEN];        	// 设备大类
+        public byte[]               szIP = new byte[NET_MAX_IPADDR_LEN];          			// ip地址
+        public byte[]               szMac = new byte[NET_MACADDR_LEN];     					// 设备mac地址
+        public byte[]               szSerialNo = new byte[NET_DEV_SERIALNO_LEN];           	// 设备序列号
+        public byte[]               szDevSoftVersion = new byte[NET_COMMON_STRING_128];     // 设备软件版本号
+        public int                	nVideoInputCh;                          				// 视频输入通道数
+        public int               	nVideoOutputCh;                         				// 视频输出通道数
+        public int               	nAudioInputCh;                          				// 音频输入通道数
+        public int               	nAudioOutputCh;                         				// 音频输出通道数
+        public int               	nAlarmInputCh;                          				// 报警输入通道数
+        public int                	nAlarmOutputCh;                         				// 报警输出通道数
+        public byte					byOnline;												// 通道是否在线0:离线 1:在线
+        public byte					byUsed;													// 该通道是否被本地设备使用 0:未使用 1:使用
+        public byte[] 				byReserved = new byte[510];                    			// 保留字节
+    }
+
+    // CLIENT_GetChannelInfo 获取设备通道信息出参结构
+    public static class NET_OUT_GET_CHANNEL_INFO extends SdkStructure
+    {
+        public int						dwSize;
+        public int						nMaxCount;			// 用户申请的通道个数
+        public int						nRetCount;			// 实际返回的通道个数
+        public Pointer					pstuChannelInfo;	// 通道信息列表 用户分配内存,大小为sizeof(NET_GET_CHANNEL_INFO)*nMaxCount, 对应 NET_GET_CHANNEL_INFO[]
+
+        public NET_OUT_GET_CHANNEL_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RemoveDevice 删除设备入参结构
+    public static class NET_IN_REMOVE_DEVICE extends SdkStructure
+    {
+        public int					dwSize;
+        public int					nCount;				// 设备个数
+        public DEVICE_ID[]			szDeviceIDsArr = (DEVICE_ID[])new DEVICE_ID().toArray(MAX_LINK_DEVICE_NUM); // 设备列表
+
+        public NET_IN_REMOVE_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+    // CLIENT_RemoveDevice 删除设备出参结构
+    public static class NET_OUT_REMOVE_DEVICE extends SdkStructure
+    {
+        public int	dwSize;
+
+        public NET_OUT_REMOVE_DEVICE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_CancelAddDeviceTask 接口输入参数
+    public static class NET_IN_CANCEL_ADD_TASK extends SdkStructure
+    {
+        public int                          dwSize;
+        public int 							nTaskID;		 // 任务ID
+
+        public NET_IN_CANCEL_ADD_TASK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_CancelAddDeviceTask 接口输出参数
+    public static class NET_OUT_CANCEL_ADD_TASK extends SdkStructure
+    {
+        public int                          dwSize;
+
+        public NET_OUT_CANCEL_ADD_TASK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ConfirmAddDeviceTask 接口输入参数
+    public static class NET_IN_CONFIRM_ADD_TASK extends SdkStructure
+    {
+        public int                          dwSize;
+        public int 							nTaskID;		 // 任务ID
+
+        public NET_IN_CONFIRM_ADD_TASK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ConfirmAddDeviceTask 接口输出参数
+    public static class NET_OUT_CONFIRM_ADD_TASK extends SdkStructure
+    {
+        public int                          dwSize;
+
+        public NET_OUT_CONFIRM_ADD_TASK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SCADAAlarmAttachInfo()接口输入参数
+    public static class NET_IN_SCADA_ALARM_ATTACH_INFO extends SdkStructure
+    {
+        public int                           	dwSize;
+        public Callback    				cbCallBack;                 // 数据回调函数,对应回调 fSCADAAlarmAttachInfoCallBack
+        public Pointer                          dwUser;	                    // 用户定义参数
+
+        public NET_IN_SCADA_ALARM_ATTACH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SCADAAlarmAttachInfo()接口输出参数
+    public static class NET_OUT_SCADA_ALARM_ATTACH_INFO extends SdkStructure
+    {
+        public int                       		dwSize;
+
+        public NET_OUT_SCADA_ALARM_ATTACH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SyncParkingInfo 接口输入参数
+    public static class NET_IN_SYNC_PARKING_INFO extends SdkStructure
+    {
+        public int                      dwSize;
+        public int						nChannel;								// 通道号
+        public byte[]					szParkingNum = new byte[32];			// 车位编号
+        public int						dwPresetNum;							// 预置点编号
+        public int						bHaveCar;								// 车位是否有车
+        public int						bParkingFault;							// 车位是否有故障
+        public int						nSnapTimes;								// 补拍次数(取值范围:0-5)
+        public int						nSnapIntervel;							// 补拍间隔(取值范围:3-10)
+
+        public NET_IN_SYNC_PARKING_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SyncParkingInfo 接口输出参数
+    public static class NET_OUT_SYNC_PARKING_INFO extends SdkStructure
+    {
+        public int                       		dwSize;
+
+        public NET_OUT_SYNC_PARKING_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测点位报警信息列表
+    public static class NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST extends SdkStructure
+    {
+        public int                               	dwSize;
+        public int	                                nList;                                          // 监测点位报警信息个数
+        public NET_SCADA_NOTIFY_POINT_ALARM_INFO[]  stuList = (NET_SCADA_NOTIFY_POINT_ALARM_INFO[])new NET_SCADA_NOTIFY_POINT_ALARM_INFO().toArray(MAX_SCADA_POINT_LIST_ALARM_INFO_NUM);   // 监测点位报警信息
+        public NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX[] stuListEx = (NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX[])new NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX().toArray(256);// 监测点位报警信息
+        
+        public NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测点位报警信息
+    public static class NET_SCADA_NOTIFY_POINT_ALARM_INFO extends SdkStructure
+    {
+        public int           		dwSize;
+        public byte[]            	szDevID = new byte[NET_COMMON_STRING_16];               // 设备ID
+        public byte[]            	szPointID = new byte[NET_COMMON_STRING_128];            // 点位ID
+        public int            		bAlarmFlag;                                 			// 报警标志, 1-true  0-false
+        public NET_TIME        		stuAlarmTime;                               			// 报警时间
+        public int	           		nAlarmLevel;                                			// 报警级别(0~6)
+        public int             		nSerialNo;                                  			// 报警编号,同一个告警的开始和结束的编号是相同的。
+        public byte[]           	szAlarmDesc = new byte[NET_COMMON_STRING_128];          // 报警描述
+        public byte[]               szSignalName = new byte[64];                            // 点位名称
+        public NET_SCADA_NOTIFY_POINT_ALARM_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 信息采集(对应 CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT 命令)
+    public static class NET_CTRL_CAPTURE_FINGER_PRINT extends SdkStructure
+    {
+        public int           		dwSize;
+        public int            		nChannelID;                             				// 门禁序号(从开始)
+        public byte[]            	szReaderID = new byte[NET_COMMON_STRING_32];        	// 读卡器ID
+        public byte[]			    szUserID   = new byte[12];							    // 用户ID(智能楼宇需求,可选)
+
+        public NET_CTRL_CAPTURE_FINGER_PRINT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁状态事件
+    public static class ALARM_ACCESS_CTL_STATUS_INFO extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  nDoor;                  		 // 门通道号
+        public NET_TIME             stuTime;               			 // 事件发生的时间
+        public int  				emStatus;              			 // 门禁状态, 对应   NET_ACCESS_CTL_STATUS_TYPE
+        public byte[]               szSerialNumber = new byte[256];  //无线设备序列号(智能锁)
+        public boolean				bRealUTC;				// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用
+        // stuTime 字段
+        public NET_TIME_EX         	RealUTC;                // 事件发生的时间(标准UTC)
+        public ALARM_ACCESS_CTL_STATUS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //事件类型 EVENT_IVS_SNAPMANUAL(SnapManual事件)对应数据块描述信息
+    public static class DEV_EVENT_SNAPMANUAL extends SdkStructure
+    {
+        public int                 	 nChannelID;                                   		// 通道号
+        public byte[]                szName = new byte[NET_EVENT_NAME_LEN];             // 事件名称
+        public byte[]                bReserved1 = new byte[4];                          // 字节对齐
+        public double              	 PTS;                                          		// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	 UTC;                                          		// 事件发生的时间
+        public int                 	 nEventID;                                     		// 事件ID
+
+        public NET_EVENT_FILE_INFO	 stuFileInfo;								  		// 事件对应文件信息
+        public byte				     byImageIndex;								  		// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int				     dwSnapFlagMask;								  	// 抓图标志(按位),具体见 NET_RESERVED_COMMON
+        public byte[]				 bReserved = new byte[1024];						// 保留字节,留待扩展.
+    }
+
+    // 即时抓图(又名手动抓图)入参, 对应命令 CTRLTYPE_CTRL_SNAP_MNG_SNAP_SHOT
+    public static class NET_IN_SNAP_MNG_SHOT extends SdkStructure
+    {
+        public int                    dwSize;                 // 该结构体大小
+        public int                    nChannel;               // 通道号
+        public int                    nTime;                  // 连拍次数, 0表示停止抓拍,正数表示连续抓拍的张数
+
+        public NET_IN_SNAP_MNG_SHOT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 即时抓图(又名手动抓图)出参, 对应命令 CTRLTYPE_CTRL_SNAP_MNG_SNAP_SHOT
+    public static class NET_OUT_SNAP_MNG_SHOT extends SdkStructure
+    {
+        public int                    dwSize;                 // 该结构体大小
+
+        public NET_OUT_SNAP_MNG_SHOT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取摄像机状态, CLIENT_QueryDevInfo 接口 NET_QUERY_GET_CAMERA_STATE 命令入参
+    public static class NET_IN_GET_CAMERA_STATEINFO extends SdkStructure
+    {
+        public int               	dwSize;
+        public int               	bGetAllFlag;                                		 // 是否查询所有摄像机状态,若该成员为 TRUE,则 nChannels 成员无需设置, 1-true; 0-false
+        public int                  nValidNum;                                 			 // 该成员,bGetAllFlag 为 FALSE时有效,表示 nChannels 成员有效个数
+        public int[]                nChannels = new int[NET_MAX_CAMERA_CHANNEL_NUM];     // 该成员,bGetAllFlag 为 FALSE时有效,将需要查询的通道号依次填入
+
+        public NET_IN_GET_CAMERA_STATEINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取摄像机状态, CLIENT_QueryDevInfo 接口 NET_QUERY_GET_CAMERA_STATE 命令出参
+    public static class NET_OUT_GET_CAMERA_STATEINFO extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  nValidNum;              	// 查询到的摄像机通道状态有效个数,由sdk返回
+        public int                  nMaxNum;                	// pCameraStateInfo 数组最大个数,由用户填写
+        public Pointer      		pCameraStateInfo;           // 摄像机通道信息数组,由用户分配, 对应  NET_CAMERA_STATE_INFO[]
+
+        public NET_OUT_GET_CAMERA_STATEINFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_CAMERA_STATE_INFO extends SdkStructure
+    {
+        public int                  nChannel;           			// 摄像机通道号, -1表示通道号无效
+        public int 				    emConnectionState;  			// 连接状态, 参考  EM_CAMERA_STATE_TYPE
+        public byte[]               szReserved = new byte[1024];    // 保留字节
+    }
+
+    public static class EM_CAMERA_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_CAMERA_STATE_TYPE_UNKNOWN = 0;       // 未知
+        public static final int EM_CAMERA_STATE_TYPE_CONNECTING = 1;    // 正在连接
+        public static final int EM_CAMERA_STATE_TYPE_CONNECTED = 2;     // 已连接
+        public static final int EM_CAMERA_STATE_TYPE_UNCONNECT = 3;     // 未连接
+        public static final int EM_CAMERA_STATE_TYPE_EMPTY = 4;         // 通道未配置,无信息
+        public static final int EM_CAMERA_STATE_TYPE_DISABLE = 5;       // 通道有配置,但被禁用
+    }
+
+    // CLIENT_StartFindFaceInfo 输入参数
+    public static class NET_IN_FACEINFO_START_FIND extends SdkStructure
+    {
+        public int 				dwSize;
+        public byte[]			szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+
+        public NET_IN_FACEINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFindFaceInfo 输出参数
+    public static class NET_OUT_FACEINFO_START_FIND extends SdkStructure
+    {
+        public int 				dwSize;
+        public int              nTotalCount;                   // 符合查询条件的总数
+
+        public NET_OUT_FACEINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindFaceInfo 输入参数
+    public static class NET_IN_FACEINFO_DO_FIND extends SdkStructure
+    {
+        public int 			   dwSize;
+        public int             nStartNo;                       // 起始序号
+        public int             nCount;                         // 本次查询的条数
+
+        public NET_IN_FACEINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindFaceInfo 输出参数
+    public static class NET_OUT_FACEINFO_DO_FIND extends SdkStructure
+    {
+        public int 				dwSize;
+        public int              nRetNum;                        // 本次查询到的个数
+        public Pointer   		pstuInfo;                       // 查询结果, 用户分配内存,大小为sizeof(NET_FACEINFO)*nMaxNum, 对应 NET_FACEINFO[]
+        public int	            nMaxNum;                        // 用户分配内存的个数
+        public byte[]           byReserved = new byte[4];
+
+        public NET_OUT_FACEINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 人脸信息
+    public static class NET_FACEINFO extends SdkStructure
+    {
+        public byte[]			szUserID = new byte[NET_MAX_USERID_LEN];	// 用户ID
+        public int              nMD5;                           			// 有效的MD5编码数量
+        public MD5[]            szMD5Arr = (MD5[])new MD5().toArray(5);  	// 图片对应的32字节MD5编码加密
+        public byte[]           byReserved = new byte[512];
+    }
+
+    // 图片对应的32字节MD5编码加密
+    public static class MD5 extends SdkStructure
+    {
+        public byte[]   		szMD5 = new byte[NET_COMMON_STRING_64];
+    }
+
+    // 初始化设备账户输入结构体
+    public static class NET_IN_INIT_DEVICE_ACCOUNT extends SdkStructure
+    {
+        public int				dwSize;													// 结构体大小:初始化结构体时赋值
+        public byte[]			szMac = new byte[NET_MACADDR_LEN];						// 设备mac地址
+        public byte[]			szUserName = new byte[MAX_USER_NAME_LEN];				// 用户名
+        public byte[]			szPwd = new byte[MAX_PWD_LEN];							// 设备密码
+        public byte[]			szCellPhone = new byte[MAX_CELL_PHONE_NUMBER_LEN];		// 预留手机号
+        public byte[]			szMail = new byte[MAX_MAIL_LEN];						// 预留邮箱
+        public byte				byInitStatus;										    // 此字段已经废弃
+        public byte				byPwdResetWay;											// 设备支持的密码重置方式:搜索设备接口(CLIENT_SearchDevices、CLIENT_StartSearchDevices的回调函数、CLIENT_SearchDevicesByIPs)返回字段byPwdResetWay的值
+        // 该值的具体含义见 DEVICE_NET_INFO_EX 结构体,需要与设备搜索接口返回的 byPwdResetWay 值保持一致
+        // bit0 : 1-支持预留手机号,此时需要在szCellPhone数组中填入预留手机号(如果需要设置预留手机) ;
+        // bit1 : 1-支持预留邮箱,此时需要在szMail数组中填入预留邮箱(如果需要设置预留邮箱)
+        public byte[]			byReserved = new byte[2];								// 保留字段
+
+        public NET_IN_INIT_DEVICE_ACCOUNT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 初始化设备账户输出结构体
+    public static class NET_OUT_INIT_DEVICE_ACCOUNT extends SdkStructure
+    {
+        public int				dwSize;						// 结构体大小:初始化结构体时赋值
+
+        public NET_OUT_INIT_DEVICE_ACCOUNT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //用户权限
+    public static class NET_ATTENDANCE_AUTHORITY extends SdkStructure
+    {
+        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;     //管理员
+    }
+
+    //考勤用户信息
+    public static class NET_ATTENDANCE_USERINFO extends SdkStructure
+    {
+        public byte[]                    szUserID = new byte[MAX_COMMON_STRING_32];   			//用户编号ID
+        public byte[]                    szUserName = new byte[MAX_ATTENDANCE_USERNAME_LEN]; 	//人员姓名
+        public byte[]                    szCardNo = new byte[MAX_COMMON_STRING_32];   			// 卡号
+        public int  					 emAuthority;      										// 用户权限
+        public byte[]                    szPassword = new byte[MAX_COMMON_STRING_32]; 			// 密码
+        public int                       nPhotoLength;                     						// 照片数据长度
+        public byte[]					 szClassNumber = new byte[MAX_CLASS_NUMBER_LEN];  		// 班级
+        public byte[]					 szPhoneNumber = new byte[MAX_PHONENUMBER_LEN];   		// 电话
+        public byte[]					 byReserved = new byte[208];				   			// 保留字节
+    }
+
+    // CLIENT_Attendance_AddUser 入参
+    public static class NET_IN_ATTENDANCE_ADDUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public NET_ATTENDANCE_USERINFO    stuUserInfo = new NET_ATTENDANCE_USERINFO();           // 用户信息
+        public Pointer                    pbyPhotoData;        			 						 // 照片数据
+
+        public NET_IN_ATTENDANCE_ADDUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_AddUser 出参
+    public static class NET_OUT_ATTENDANCE_ADDUSER extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_OUT_ATTENDANCE_ADDUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_DelUser 入参
+    public static class NET_IN_ATTENDANCE_DELUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public byte[]    				  szUserID = new byte[MAX_COMMON_STRING_32];  // 用户ID
+
+        public NET_IN_ATTENDANCE_DELUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_DelUser 出参
+    public static class NET_OUT_ATTENDANCE_DELUSER extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_OUT_ATTENDANCE_DELUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_ModifyUser 入参
+    public static class NET_IN_ATTENDANCE_ModifyUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public NET_ATTENDANCE_USERINFO    stuUserInfo = new NET_ATTENDANCE_USERINFO();           // 用户信息
+        public Pointer                    pbyPhotoData;        			 						 // 照片数据
+
+        public NET_IN_ATTENDANCE_ModifyUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_ModifyUser 出参
+    public static class NET_OUT_ATTENDANCE_ModifyUSER extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_OUT_ATTENDANCE_ModifyUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // CLIENT_Attendance_GetUser 入参
+    public static class NET_IN_ATTENDANCE_GetUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public byte[]    				  szUserID = new byte[MAX_COMMON_STRING_32];  // 用户ID
+
+        public NET_IN_ATTENDANCE_GetUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_Attendance_GetUser 出参
+    public static class NET_OUT_ATTENDANCE_GetUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public NET_ATTENDANCE_USERINFO    stuUserInfo = new NET_ATTENDANCE_USERINFO();      // 用户信息
+        public int                        nMaxLength;             							// 最大存放照片数据的长度
+        public Pointer                    pbyPhotoData;        			 					// 照片数据
+
+        public NET_OUT_ATTENDANCE_GetUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_InsertFingerByUserID 入参
+    public static class NET_IN_FINGERPRINT_INSERT_BY_USERID extends SdkStructure
+    {
+        public int						  dwSize;
+        public byte[]    				  szUserID = new byte[NET_COMMON_STRING_32];  	// 用户ID
+        public int 						  nSinglePacketLen;								// 单个信息数据包长度
+        public int 						  nPacketCount;									// 信息数据包的个数
+        public Pointer					  szFingerPrintInfo;							// 信息数据(数据总长度即nSinglePacketLen*nPacketCount)
+
+        public NET_IN_FINGERPRINT_INSERT_BY_USERID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_InsertFingerByUserID 出参
+    public static class NET_OUT_FINGERPRINT_INSERT_BY_USERID extends SdkStructure
+    {
+        public int						dwSize;
+        public int[]					nFingerPrintID = new int[NET_MAX_FINGER_PRINT];	//信息ID数组
+        public int 						nReturnedCount;									//数组中实际返回的个数
+        public int						nFailedCode;									//错误码  0:成功;   1:其他错误;  2:超过本用户下信息能力的限制.
+
+        public NET_OUT_FINGERPRINT_INSERT_BY_USERID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_RemoveFingerByUserID 入参(removeByUserID)
+    public static class NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID extends SdkStructure
+    {
+        public int						  dwSize;
+        public byte[]    				  szUserID = new byte[NET_COMMON_STRING_32];  // 用户ID
+
+        public NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_RemoveFingerByUserID 出参
+    public static class NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_RemoveFingerRecord 入参(remove)
+    public static class NET_CTRL_IN_FINGERPRINT_REMOVE extends SdkStructure
+    {
+        public int						  dwSize;
+        public int    				  	  nFingerPrintID;  // 信息编号
+
+        public NET_CTRL_IN_FINGERPRINT_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_RemoveFingerRecord 出参
+    public static class NET_CTRL_OUT_FINGERPRINT_REMOVE extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_CTRL_OUT_FINGERPRINT_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_GetFingerRecord 入参
+    public static class NET_CTRL_IN_FINGERPRINT_GET extends SdkStructure
+    {
+        public int						  dwSize;
+        public int    				  	  nFingerPrintID;  // 信息编号
+
+        public NET_CTRL_IN_FINGERPRINT_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_GetFingerRecord 出参
+    public static class NET_CTRL_OUT_FINGERPRINT_GET extends SdkStructure
+    {
+        public int							dwSize;
+        public byte[] 						szUserID = new byte[NET_COMMON_STRING_32];			// 所属用户的用户ID
+        public byte[] 						szFingerPrintName = new byte[NET_COMMON_STRING_32]; // 信息名称
+        public int							nFingerPrintID;										// 信息ID
+        public int							nRetLength;											// 实际返回的二进制信息数据长度
+        public int							nMaxFingerDataLength;								// 二进制信息数据的最大长度
+        public Pointer						szFingerPrintInfo;									// 信息数据
+
+        public NET_CTRL_OUT_FINGERPRINT_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_FindUser 入参
+    public static class NET_IN_ATTENDANCE_FINDUSER extends SdkStructure
+    {
+        public int				dwSize;
+        public int				nOffset;						// 查询偏移
+        public int				nPagedQueryCount;				// 查询个数,分页查询,最多不超过100
+
+        public NET_IN_ATTENDANCE_FINDUSER() {
+            this.dwSize = this.size();
+        }
+    };
+
+    //CLIENT_Attendance_FindUser 出参
+    public static class NET_OUT_ATTENDANCE_FINDUSER extends SdkStructure
+    {
+        public int 								dwSize;
+        public int								nTotalUser;					// 总的用户数
+        public int								nMaxUserCount;				// 用户信息最大缓存数
+        public Pointer       					stuUserInfo;            	// 用户信息,内存由用户申请,大小为(sizeof(NET_ATTENDANCE_USERINFO)*nMaxUserCount)
+        public int								nRetUserCount;				// 实际返回的用户个数
+        public int                           	nMaxPhotoDataLength;        // 照片数据最大长度
+        public int								nRetPhoteLength;			// 实际返回的照片数据长度
+        public Pointer                        	pbyPhotoData;           	// 照片数据
+
+        public NET_OUT_ATTENDANCE_FINDUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_GetFingerByUserID 入参
+    public static class NET_IN_FINGERPRINT_GETBYUSER extends SdkStructure
+    {
+        public int						  dwSize;
+        public byte[]    				  szUserID = new byte[NET_COMMON_STRING_32];  // 用户ID
+
+        public NET_IN_FINGERPRINT_GETBYUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //CLIENT_Attendance_GetFingerByUserID 出参
+    public static class NET_OUT_FINGERPRINT_GETBYUSER extends SdkStructure
+    {
+        public int							dwSize;
+        public int[]						nFingerPrintIDs = new int[NET_MAX_FINGER_PRINT];// 信息ID数组
+        public int							nRetFingerPrintCount;							// 实际返回的信息ID个数,即nFingerPrintIDs数组中实际有效个数
+        public int							nSinglePacketLength;							// 单个信息数据包长度
+        public int							nMaxFingerDataLength;							// 接受信息数据的缓存的最大长度
+        public int							nRetFingerDataLength;							// 实际返回的总的信息数据包的长度
+        public Pointer                      pbyFingerData;                       			// 信息数据
+
+        public NET_OUT_FINGERPRINT_GETBYUSER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取考勤机在线状态入参
+    public static class NET_IN_ATTENDANCE_GETDEVSTATE extends SdkStructure
+    {
+        public int						  dwSize;
+
+        public NET_IN_ATTENDANCE_GETDEVSTATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取考勤机在线状态出参
+    public static class NET_OUT_ATTENDANCE_GETDEVSTATE extends SdkStructure
+    {
+        public int 			           		dwSize;
+        public int                          nState;     // 0:离线;1:在线;其他:未知;考勤机状态
+
+        public NET_OUT_ATTENDANCE_GETDEVSTATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 输入通道基本配置
+    public static class CFG_VIDEO_IN_INFO extends SdkStructure
+    {
+        public byte[]				szDevType = new byte[MAX_NAME_LEN];			// 通道类型(指通道连接的设备类型)
+        public byte[]				szDevID = new byte[MAX_NAME_LEN];			// 摄像头唯一编号
+        public byte[]				szChnName = new byte[MAX_NAME_LEN];			// 通道名称
+        public byte[]				szManufacturer = new byte[MAX_NAME_LEN];	// 厂商
+        public byte[]				szModel = new byte[MAX_NAME_LEN];			// 设备型号
+        public byte[]				szAddress = new byte[MAX_ADDRESS_LEN];		// 安装地址
+        public byte[]				szCivilCode = new byte[MAX_NAME_LEN];		// 行政区域
+        public byte[]				szOwner = new byte[MAX_NAME_LEN];			// 设备归属
+        public int					bParental;						// 是否有子设备
+        public int					bEnable;						// 通道使能
+        public int					nRegisterWay;					// 注册方式
+        // 0-符合sip3261标准的认证注册模式
+        // 1-基于口令的双向认证注册模式
+        // 2-基于数字证书的双向认证注册模式
+        public int					bSecrecy;						// 属性, FALSE不涉密, TRUE涉密
+        public byte[]				szUpperDevID = new byte[MAX_NAME_LEN];		// 上级连接设备设备ID
+        public int					nUpperDevOutChn;				// 上级连接设备输出通道号
+        public byte[]				szRemoteName = new byte[MAX_NAME_LEN];		// 远程通道名称
+        public int 					emSignalType;              	// 输入信号类型 , 详见EM_CFG_VIDEO_SIGNAL_TYPE
+        public int  				emLineType;                 // 通道接入线缆的类型, 详见EM_CFG_VIDEO_LINE_TYPE
+    }
+
+    // 输入信号类型
+    public static class EM_CFG_VIDEO_SIGNAL_TYPE extends SdkStructure
+    {
+        public static final int EM_CFG_VIDEO_SIGNAL_UNKNOWN = 0;
+        public static final int EM_CFG_VIDEO_SIGNAL_CVBS = 1;
+        public static final int EM_CFG_VIDEO_SIGNAL_SDI = 2;
+        public static final int EM_CFG_VIDEO_SIGNAL_VGA = 3;
+        public static final int EM_CFG_VIDEO_SIGNAL_DVI = 4;
+        public static final int EM_CFG_VIDEO_SIGNAL_HDMI = 5;
+        public static final int EM_CFG_VIDEO_SIGNAL_YPBPR = 6;
+        public static final int EM_CFG_VIDEO_SIGNAL_SFP = 7;
+        public static final int EM_CFG_VIDEO_SIGNAL_HDCVI = 8;
+        public static final int EM_CFG_VIDEO_SIGNAL_DUALLINK = 9;
+        public static final int EM_CFG_VIDEO_SIGNAL_AHD = 10;
+        public static final int EM_CFG_VIDEO_SIGNAL_AUTO = 11;
+        public static final int EM_CFG_VIDEO_SIGNAL_TVI = 12;
+    }
+
+    // 通道接入线缆的类型
+    public static class EM_CFG_VIDEO_LINE_TYPE extends SdkStructure
+    {
+        public static final int EM_CFG_VIDEO_LINE_TYPE_UNKNOWN = 0;     // 未知
+        public static final int EM_CFG_VIDEO_LINE_TYPE_COAXIAL = 1;    	// 同轴线
+        public static final int EM_CFG_VIDEO_LINE_TYPE_TP10 = 2;     	// 10欧姆阻抗双绞线
+        public static final int EM_CFG_VIDEO_LINE_TYPE_TP17 = 3;     	// 17欧姆阻抗双绞线
+        public static final int EM_CFG_VIDEO_LINE_TYPE_TP25 = 4;        // 25欧姆阻抗双绞线
+        public static final int EM_CFG_VIDEO_LINE_TYPE_TP35 = 5;        // 35欧姆阻抗双绞线
+    }
+
+    // 通道名称配置
+    public static class AV_CFG_ChannelName extends SdkStructure
+    {
+        public int			nStructSize;
+        public int			nSerial;						// 摄像头唯一编号
+        public byte[]		szName = new byte[CFG_MAX_CHANNEL_NAME_LEN];// 通道名
+
+        public AV_CFG_ChannelName() {
+            this.nStructSize = this.size();
+        }
+    }
+
+    // 设备通过Wifi模块扫描周围无线设备配置
+    public static class CFG_WIFI_SEARCH_INFO extends SdkStructure
+    {
+        public int 		bEnable;					// 是否生效, boolean类型,为1或者0
+        public int		nPeriod;            		// 事件上报周期,单位秒,该值需要大于等于6
+        public int		bOptimizNotification;  		// boolean类型,为1或者0,默认值是0,置0时,搜索到的设备状态每次均全部上报,置1时,搜索到的设备状态在未超过PD中OptimizationPeriod取值周期时,只上报新增/离开的设备状态;超过PD中OptimizationPeriod取值周期时,当次需上报搜索到的全部设备状态
+    }
+
+    public static class EM_CFG_CARD_STATE extends SdkStructure
+    {
+
+        public static final int EM_CFG_CARD_STATE_UNKNOWN = -1;					// 未知
+        public static final int EM_CFG_CARD_STATE_SWIPE = 0;					// 门禁刷卡
+        public static final int EM_CFG_CARD_STATE_COLLECTION = 1;				// 门禁采集卡
+    }
+
+    // 门禁事件配置
+    public static class CFG_ACCESS_EVENT_INFO extends SdkStructure
+    {
+        public byte[]               szChannelName = new byte[MAX_NAME_LEN];		// 门禁通道名称
+        public int   			 	emState;									// 门禁状态, 参考 CFG_ACCESS_STATE
+        public int     				emMode;										// 门禁模式, 参考  CFG_ACCESS_MODE
+        public int					nEnableMode;								// 门禁使能电平值, 0:低电平有效(断电启动); 1:高电平有效(通电启动);
+        public int                	bSnapshotEnable;							// 事件联动抓图使能, 1-true, 0-false
+
+        // 能力
+        public byte                 abDoorOpenMethod;
+        public byte                 abUnlockHoldInterval;
+        public byte                 abCloseTimeout;
+        public byte                 abOpenAlwaysTimeIndex;
+        public byte                 abCloseAlwaysTimeIndex;
+        public byte                 abHolidayTimeIndex;
+        public byte                 abBreakInAlarmEnable;
+        public byte				    abRepeatEnterAlarmEnable;
+        public byte                 abDoorNotClosedAlarmEnable;
+        public byte				    abDuressAlarmEnable;
+        public byte                 abDoorTimeSection;
+        public byte				    abSensorEnable;
+        public byte				    abFirstEnterEnable;
+        public byte                 abRemoteCheck;
+        public byte                 abRemoteDetail;
+        public byte                 abHandicapTimeOut;
+        public byte                 abCheckCloseSensor;
+        public byte                 abAutoRemoteCheck;
+        public byte[]               reverse = new byte[2];
+
+        public int					emDoorOpenMethod;							// 开门方式, 参考  CFG_DOOR_OPEN_METHOD
+        public int					nUnlockHoldInterval;						// 门锁保持时间(自动关门时间),单位毫秒,[250, 20000]
+        public int					nCloseTimeout;								// 关门超时时间, 超过阈值未关会触发报警,单位秒,[0,9999];0表示不检测超时
+        public int					nOpenAlwaysTimeIndex;						// 常开时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
+        public int                  nCloseAlwaysTimeIndex;          			// 常关时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
+        public int					nHolidayTimeRecoNo;							// 假期内时间段, 值为假日记录集的记录编号,对应NET_RECORDSET_HOLIDAY的nRecNo
+        public int					bBreakInAlarmEnable;						// 闯入报警使能, 1-true, 0-false
+        public int					bRepeatEnterAlarm;							// 反潜报警使能, 1-true, 0-false
+        public int 					bDoorNotClosedAlarmEnable;					// 门未关报警使能, 1-true, 0-false
+        public int					bDuressAlarmEnable;							// 胁迫报警使能, 1-true, 0-false
+        public CFG_DOOROPEN_TIMESECTION_WEEK_DAY[]	stuDoorTimeSectionArr =
+                (CFG_DOOROPEN_TIMESECTION_WEEK_DAY[])new CFG_DOOROPEN_TIMESECTION_WEEK_DAY().toArray(WEEK_DAY_NUM);// 分时段开门信息
+        public int 					bSensorEnable;								// 门磁使能, 1-true, 0-false
+        public CFG_ACCESS_FIRSTENTER_INFO stuFirstEnterInfo;					// 首卡开门信息
+        public int                  bRemoteCheck;                   			// 1-true, 0-false, 是否需要平台验证, TRUE表示权限通过后必须要平台验证后才能开门, FALSE表示权限验证通过后可立即开门
+        public CFG_REMOTE_DETAIL_INFO  stuRemoteDetail;            				// 与bRemoteCheck配合使用, 如果远端验证未应答, 设定的设备超时时间到后, 是正常开门还是不开门
+        public CFG_HANDICAP_TIMEOUT_INFO   stuHandicapTimeOut;     				// 针对残障人士的开门参数
+        public int                  bCloseCheckSensor;              			// 闭锁前是否检测门磁, 1-true, 0-false
+        // true:则当开锁保持时间计时结束后,只有监测到有效门磁信号时,才可以恢复关闭锁的动作。
+        // 反之,如果开锁保持时间已到,但未检测到有效门磁信号,则一直保持开锁状态;
+        // false(默认):则直接按照设定的开锁保持时间进行开锁保持和恢复关闭的动作。
+        public CFG_AUTO_REMOTE_CHECK_INFO  stuAutoRemoteCheck;     				// 开门远程验证, 如果开启, 在该时间段内, 设备通过多人组合开门事件通知到平台确认是否可以开门
+        public int                	bLocalControlEnable;            			// 本地控制启用, 1-TRUE 启用,   0-false 停用
+        public int                	bRemoteControlEnable;           			// 远程控制启用, 1-true  启用,   0-false 停用
+        public int                  nSensorDelay;                   			// 传感器输出延时,超过此时间判断有人, 单位:秒。 0~10
+        public int                  nHumanStatusSensitivity;        			// 人状态变化检测灵敏度,在此时间内,判断有人 单位: 秒。 0~300
+        public int                  nDetectSensitivity;             			// 传感器本身的检测灵敏度  单位:%, 0~100
+        public int					bLockTongueEnable;							// 锁舌使能, 1-true, 0-false
+        public int                  nABLockRoute;                   			// AB互锁路线与AB互锁的index对应;-1代表无效
+        public int                  nDoorNotClosedReaderAlarmTime; 	 			// 门未关超时读卡器报警, 单位:秒
+        public int					bEnable;									// 使能项,此通道配置是否启用, 1-true为使能, 0-false为关闭
+        public byte[]				szSN = new byte[CFG_MAX_SN_LEN];			// 无线设备序列号,只获取,不能设置
+        public int					nCloseDuration;								// 门闭合时间,单位:秒
+        public int					nUnlockReloadInterval;						// 开锁命令响应间隔时间,单位:毫秒
+        public int		 		 	emAccessProtocol;							// 门禁协议, 参考  CFG_EM_ACCESS_PROTOCOL
+        public int	  				emProtocolType;								// 参考 CFG_EM_SERIAL_PROTOCOL_TYPE, 串口协议下的具体协议功能,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_SERIAL时有效
+        public CFG_ACCESS_CONTROL_UDP_INFO	  stuAccessControlUdpInfo;  		// 门禁udp开锁信息,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
+        public int				    nEntranceLockChannel;						// 门禁控制器下的子通道,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
+        public int					bSnapshotUpload;							// 使能项,抓图是否上传, 1-true为抓图上传, 0-false为抓图不上传
+        public int				    nSnapUploadPos;								// 抓图上传地址,对应的是NAS配置项的下标,NAS配置为CFG_CMD_NASEX
+        public int                  bCustomPasswordEnable;              		// 是否启用个性化密码, 1-true, 0-false
+        public int                  nRepeatEnterTime;                   		// 重复进入时间,0~180秒,0表示不启用
+        public int                  nCardNoConvert;                     		// 卡号转换,0:不需要转换,1:字节取反,2:按HIDpro转换
+        public int                	bUnAuthorizedMaliciousSwipEnable;   		// 未授权恶意刷卡事件使能, 1-true, 0-false
+        public int                	bFakeLockedAlarmEnable;             		// 假锁报警使能, 1-true, 0-false
+        public int					emReadCardState;							// 当前门采集状态,参考EM_CFG_CARD_STATE
+        public int				    bHelmetEnable;						        // 是否检测安全帽
+    	public int				    nSpecialDaysOpenAlwaysTime;			        // 门禁假日常开时间段,值为SpecialDaysSchedule索引
+    	public int				    nSpecialDaysCloseAlwaysTime;		        // 门禁假日常闭时间段,值为SpecialDaysSchedule索引
+    	public int				    nSensorType;						        // 门磁类型, 0: 未知, 1: 常开型门磁, 2: 常闭型门磁
+    	public CFG_AUTO_REMOTE_CHECK_INFO_EX		stuAutoRemoteCheckEx;		// 自动远程开门扩展信息
+    	public byte[]			    szResvered = new byte[1024];				// 保留字节
+    	
+    }
+
+    // 分时段开门信息
+    public static class CFG_DOOROPEN_TIMESECTION_WEEK_DAY extends SdkStructure
+    {
+
+        public CFG_DOOROPEN_TIMESECTION_INFO[]	stuDoorTimeSection =
+                (CFG_DOOROPEN_TIMESECTION_INFO[])new CFG_DOOROPEN_TIMESECTION_INFO().toArray(MAX_DOOR_TIME_SECTION);
+    }
+
+    // 分时段开门
+    public static class CFG_DOOROPEN_TIMESECTION_INFO extends SdkStructure
+    {
+        public CFG_TIME_PERIOD			stuTime;						// 时间段
+        public int						emDoorOpenMethod;				// 开门模式, 参考 CFG_DOOR_OPEN_METHOD
+    }
+
+    // 首卡开门信息
+    public static class CFG_ACCESS_FIRSTENTER_INFO extends SdkStructure
+    {
+        public int						bEnable;						// 在指定的时间,只有拥有首卡权限的用户验证通过后,其他的用户才能刷卡(信息等)进入,1-true 使能, 0-false 关闭
+        public int						emStatus;						// 首卡权限验证通过后的门禁状态, 参考 CFG_ACCESS_FIRSTENTER_STATUS
+        public int						nTimeIndex;						// 需要首卡验证的时间段, 值为  配置 "AccessTimeSchedule"的门禁刷卡时间段的下标
+    }
+
+    // 远程开门验证
+    public static class CFG_REMOTE_DETAIL_INFO extends SdkStructure
+    {
+        public int                 		nTimeOut;                       // 超时时间, 0表示永久等待, 其他值表示超时时间(单位为秒)
+        public int                		bTimeOutDoorStatus;             // 超时后的门状态, 1-true:打开, 0-false:关闭
+    }
+
+    // 针对残障人士的开门信息
+    public static class CFG_HANDICAP_TIMEOUT_INFO extends SdkStructure
+    {
+        public int                	    nUnlockHoldInterval;            // 门锁保持时间(自动关门时间),单位毫秒,[250, 60000]
+        public int                 		nCloseTimeout;                  // 关门超时时间, 超过阈值未关会触发报警,单位秒,[0,9999];0表示不检测超时
+    }
+
+    // 开门远程验证
+    public static class CFG_AUTO_REMOTE_CHECK_INFO extends SdkStructure
+    {
+        public int                		bEnable;                        // 使能项, 1-true: 开启, 0-false: 关闭
+        public int                	 	nTimeSechdule;                  // 对应CFG_CMD_ACCESSTIMESCHEDULE配置的索引
+    }
+
+    // DH门禁udp开锁信息
+    public static class CFG_ACCESS_CONTROL_UDP_INFO extends SdkStructure
+    {
+        public byte[]					szAddress = new byte[CFG_MAX_ACCESS_CONTROL_ADDRESS_LEN];// 地址
+        public int						nPort;													 // 端口
+    }
+
+    // 门禁状态
+    public static class CFG_ACCESS_STATE extends SdkStructure
+    {
+        public static final int ACCESS_STATE_NORMAL = 0;                                        // 普通
+        public static final int ACCESS_STATE_CLOSEALWAYS = 1;                                   // 常关
+        public static final int ACCESS_STATE_OPENALWAYS = 2;                                    // 常开
+        // 常开常闭状态下,Opendoor开门无效.
+        public static final int ACCESS_STATE_NOPERSONNC = 3;                                    // 无人状态常闭
+        public static final int ACCESS_STATE_NOPERSONNO = 4;                                    // 无人状态常开
+    }
+
+    // 门禁模式
+    public static class CFG_ACCESS_MODE extends SdkStructure
+    {
+        public static final int ACCESS_MODE_HANDPROTECTED = 0;                                  // 防夹模式
+        public static final int ACCESS_MODE_SAFEROOM = 1;                                       // 防护房间模式
+        public static final int ACCESS_MODE_OTHER = 2;                                          // 其它
+    }
+
+    // 自定义开门方式
+    public static class CFG_DOOR_OPEN_METHOD extends SdkStructure
+    {
+        public static final int CFG_DOOR_OPEN_METHOD_UNKNOWN                        = 0;
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_ONLY						= 1;    	 // 只允许密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD							= 2;    	 // 只允许刷卡开锁
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_OR_CARD					= 3;    	 // 密码或刷卡开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_FIRST						= 4;    	 // 先刷卡后密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_FIRST						= 5;    	 // 先密码后刷卡开锁
+        public static final int CFG_DOOR_OPEN_METHOD_SECTION						= 6;    	 // 分时段开门
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINTONLY                = 7;    	 // 仅信息开锁
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_OR_CARD_OR_FINGERPRINT     = 8;    	 // 密码或刷卡或信息开锁
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_AND_CARD_AND_FINGERPINT    = 9;   		 // 密码+刷卡+信息组合开锁
+        public static final int CFG_DOOR_OPEN_METHOD_PWD_AND_FINGERPRINT            = 10;   	 // 密码+信息组合开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT           = 11;   	 // 刷卡+信息开锁
+        public static final int CFG_DOOR_OPEN_METHOD_MULTI_PERSON                   = 12;  		 // 多人开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIDCARD						= 13;   	 // 人证对比
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIDCARD_AND_IDCARD			= 14;		 // 证件+ 人证比对
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGER	= 15;		 // 人证比对或刷卡或信息
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FINGER	= 16;// (证件+认证比对)或刷卡或信息
+        public static final int CFG_DOOR_OPEN_METHOD_USERID_AND_PWD                 = 17;   	 // UserID+密码
+        public static final int CFG_DOOR_OPEN_METHOD_FACE_ONLY                      = 18; 		 // 只允许人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FACE_AND_PWD                   = 19;   	 // 人脸+密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_PWD            = 20;  		 // 信息+密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE           = 21;  		 // 信息+人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_FACE                  = 22;  		 // 刷卡+人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FACE_OR_PWD                    = 23;  		 // 人脸或密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_PWD             = 24;  		 // 信息或密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE            = 25;   	 // 信息或人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_OR_FACE                   = 26;   	 // 刷卡或人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT            = 27;   	 // 刷卡或信息开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD   = 28;   	 // 信息+人脸+密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_AND_PWD          = 29;  		 // 刷卡+人脸+密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD   = 30;   	 // 刷卡+信息+密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_PWD_AND_FACE          = 31;  		 // 卡+信息+人脸组合开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD     = 32;   	 // 信息或人脸或密码
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_OR_PWD               = 33;	 // 卡或人脸或密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE    = 34;   	 // 卡或信息或人脸开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD  = 35;// 卡+信息+人脸+密码组合开锁
+        public static final int CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD     = 36;// 卡或信息或人脸或密码开锁
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE    = 37;//(证件+人证比对)或 刷卡 或 人脸
+        public static final int CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE        = 38;     // 人证比对 或 刷卡(二维码) 或 人脸
+    }
+
+    // 首卡权限验证通过后的门禁状态
+    public static class CFG_ACCESS_FIRSTENTER_STATUS extends SdkStructure
+    {
+        public static final int ACCESS_FIRSTENTER_STATUS_UNKNOWN = 0;									// 未知状态
+        public static final int ACCESS_FIRSTENTER_STATUS_KEEPOPEN = 1;									// KeepOpen-首卡权限验证通过后,门保持常开
+        public static final int ACCESS_FIRSTENTER_STATUS_NORMAL = 2;									// Normal-首卡权限验证通过后,其他用户才能刷卡(信息等)验证通过
+    }
+
+    // 门禁协议
+    public static class CFG_EM_ACCESS_PROTOCOL extends SdkStructure
+    {
+        public static final int CFG_EM_ACCESS_PROTOCOL_UNKNOWN = 0;										// 未知
+        public static final int CFG_EM_ACCESS_PROTOCOL_LOCAL = 1;										// 本机开关量控制
+        public static final int CFG_EM_ACCESS_PROTOCOL_SERIAL = 2;										// 串口协议
+        public static final int CFG_EM_ACCESS_PROTOCOL_REMOTE = 3;										// 门禁udp开锁
+    }
+
+    // 串口协议下的具体协议功能
+    public static class CFG_EM_SERIAL_PROTOCOL_TYPE extends SdkStructure
+    {
+        public static final int CFG_EM_SERIAL_PROTOCOL_TYPE_UNKNOWN = -1;								// 未知
+        public static final int CFG_EM_SERIAL_PROTOCOL_TYPE_UNUSED = 0;									// 未使用
+        public static final int CFG_EM_SERIAL_PROTOCOL_TYPE_DAHUA_ACCESS_485 = 1;						// 门禁485
+        public static final int CFG_EM_SERIAL_PROTOCOL_TYPE_LADDER_CONTROL = 2;							// 梯控
+        public static final int CFG_EM_SERIAL_PROTOCOL_TYPE_REMOTE_READ_HEAD = 3;						// 远距离读头
+    }
+
+    // CLIENT_MatrixSetCameras接口的输入参数
+    public static class NET_IN_MATRIX_SET_CAMERAS extends SdkStructure
+    {
+        public int                   dwSize;
+        public Pointer  			 pstuCameras;                    // 显示源信息 NET_MATRIX_CAMERA_INFO 数组, 用户分配内存,大小为sizeof(NET_MATRIX_CAMERA_INFO)*nCameraCount
+        public int                   nCameraCount;                   // 显示源数组大小
+
+        public NET_IN_MATRIX_SET_CAMERAS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_MatrixSetCameras接口的输出参数
+    public static class NET_OUT_MATRIX_SET_CAMERAS extends SdkStructure
+    {
+        public int                   dwSize;
+
+        public NET_OUT_MATRIX_SET_CAMERAS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 各种违章事件联动报警输出事件 (NET_ALARM_TRAFFIC_LINKAGEALARM)
+    public static class ALARM_TRAFFIC_LINKAGEALARM_INFO extends SdkStructure
+    {
+        public NET_TIME_EX			stuTime;									// 事件发生的时间
+        public byte[]				szCode = new byte[NET_COMMON_STRING_32];	// 违章联动报警事件
+        public byte[]               byReserved = new byte[1024];       			// 保留字节
+    }
+
+    // IPC新增(2017.4),RFID标签信息采集事件
+    public static class ALARM_LABELINFO extends SdkStructure
+    {
+        public int					nChannelID;										// 通道号
+        public byte[]				szIndexIs = new byte[NET_COMMON_STRING_8];		// 事件Index代表的含义,如无该字段,无法级联
+        public int					nVideoIndex;									// 视频通道号
+        public int					nACK;											// 确认ID
+        public byte[]				szReceiverID = new byte[NET_COMMON_STRING_16];	// 接收器ID
+        public byte[]				szLabelID = new byte[NET_COMMON_STRING_16];		// RFID标签
+        public NET_TIME_EX			stuDateTime;									// 采集时间UTC
+        public int					emLabelDataState;								// 标签的数据状态(进入0、离开1)
+        public byte[]				byReserve = new byte[1024];						// 保留字节
+    }
+
+    // 事件数据类型
+    public static class NET_EM_EVENT_DATA_TYPE extends SdkStructure
+    {
+        public static final int NET_EN_EVENT_DATA_TYPE_UNKNOWN = 0;									// 未知
+        public static final int NET_EN_EVENT_DATA_TYPE_REAL = 1;									// 实时数据
+        public static final int NET_EN_EVENT_DATA_TYPE_ALARM = 2;									// 报警数据
+    }
+
+    // 事件类型 NET_ALARM_FLOATINGOBJECT_DETECTION (漂浮物检测事件)
+    public static class ALARM_FLOATINGOBJECT_DETECTION_INFO extends SdkStructure
+    {
+        public int                 	nAction;                        // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              	reserved1 = new byte[4];		// 预留字段
+        public byte[]              	szName = new byte[128];         // 事件名称
+        public double              	PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;							// 事件发生的时间
+        public int				    nChannel;						// 通道号
+        public int					nEventID;						// 事件ID
+
+        public int				    nPresetID;						// 事件触发的预置点ID
+        public byte[]			    szPresetName = new byte[64];	// 事件触发的预置名称
+        public int				    bExistFloatingObject;			// 是否存在漂浮物
+        public int					emEventType;					// 事件数据类型,详见NET_EM_EVENT_DATA_TYPE
+        public float				fCurrentRatio;					// 漂浮物当前占比(相对于检测区域)单位:%, 取值范围[0, 100]
+        public float				fAlarmThreshold;				// 报警阈值。漂浮物相对于检测区域的占比, 取值范围[0, 100]
+
+        public NET_POINT[]          stuDetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM); // 规则检测区域
+        public int                 	nDetectRegionNum;               // 规则检测区域顶点数
+
+        public byte[]               byReserved = new byte[1020];    // 预留字段
+    }
+
+    // 水位状态
+    public static class NET_EM_WATER_LEVEL_STATUS extends SdkStructure
+    {
+        public static final int NET_EM_WATER_LEVEL_STATUS_UNKNOWN = 0;		// 未知
+        public static final int NET_EM_WATER_LEVEL_STATUS_NORMAL = 1;		// 水位正常
+        public static final int NET_EM_WATER_LEVEL_STATUS_HIGH = 2;			// 水位高于上限阈值
+        public static final int NET_EM_WATER_LEVEL_STATUS_LOW = 3;			// 水位低于上限阈值
+    }
+
+    // 水位尺颜色
+    public static class NET_EM_WATER_RULER_COLOR extends SdkStructure
+    {
+        public static final int NET_EM_WATER_LEVEL_STATUS_UNKNOWN = 0;		// 未知
+        public static final int NET_EM_WATER_RULER_COLOR_BLUE = 1;			// 蓝色
+        public static final int NET_EM_WATER_RULER_COLOR_RED = 2;			// 红色
+    }
+
+    // 水位尺
+    public static class NET_WATER_RULER extends SdkStructure
+    {
+        public int					emRulerColor;							// 水位尺颜色, 详见 NET_EM_WATER_RULER_COLOR
+        public byte[]				szRulerNum = new byte[128];				// 水位尺编号
+        public float				fWaterLevel;							// 水位值(对于有拼接的情况,该值为标定的基准值加上当前刻度值,单位:米)
+        public byte[]				byReserved = new byte[512];				// 保留字节
+    }
+
+    // 事件类型 NET_ALARM_WATER_LEVEL_DETECTION (水位检测事件)
+    public static class ALARM_WATER_LEVEL_DETECTION_INFO extends SdkStructure
+    {
+        public int                 	nAction;                        // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              	reserved1 = new byte[4];		// 预留字段
+        public byte[]              	szName = new byte[128];         // 事件名称
+        public double              	PTS;                            // 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;							// 事件发生的时间
+        public int				    nChannel;						// 通道号
+        public int					nEventID;						// 事件ID
+        public int					nPresetID;						// 预置点ID
+        public byte[]				szPresetName = new byte[64];	// 预置点名称
+        public byte[]				szObjectUUID = new byte[48];	// 智能物体全局唯一物体标识
+        public int					emEventType;					// 事件数据类型, 详见 NET_EM_EVENT_DATA_TYPE
+        public int					emStatus;						// 水位状态, 详见 NET_EM_WATER_LEVEL_STATUS
+        public NET_WATER_RULER		stuWaterRuler;					// 水位尺
+        public byte[]				byReserved = new byte[1024];    // 预留字段
+    }
+
+    // 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测)对应的规则配置
+    public static class CFG_FLOATINGOBJECT_DETECTION_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[]				szRuleName=new byte[MAX_NAME_LEN];						// 规则名称,不同规则不能重名
+        public int				    bRuleEnable;											// 规则使能
+        public int					nObjectTypeNum;											// 相应物体类型个数
+        public byte[]				szObjectTypes=new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];		// 相应物体类型列表
+        public int                  nPtzPresetId;											// 云台预置点编号	0~65535
+        public CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
+        public CFG_TIME_SECTION[]	stuTimeSection=(CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);			// 事件响应时间段
+        public int					nDetectRegionPoint;										// 检测区顶点数
+        public CFG_POLYGON[]		stuDetectRegion=(CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);						// 检测区
+        public float				fAlarmThreshold;										// 报警阈值。当检测区域内的漂浮物占比超过阈值时则产生报警;单位:%,取值范围(0, 100]
+        public int				    nAlarmInterval;											// 报警时间间隔。(单位:秒)。取值范围[60, 86400]
+        public int				    bDataUpload;											// 是否上报实时数据。
+        public int				    nUpdateInterval;										// 实时数据上报间隔。(单位:秒)。取值范围[60, 86400]
+        public byte[]				byReserved=new byte[4096]; 								// 保留字节
+    };
+
+    // 事件类型 EVENT_IVS_WATER_LEVEL_DETECTION (水位检测事件)对应的规则配置
+    public static class CFG_WATER_LEVEL_DETECTION_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[]				szRuleName=new byte[MAX_NAME_LEN];						// 规则名称,不同规则不能重名
+        public int				    bRuleEnable;											// 规则使能
+        public int					nObjectTypeNum;											// 相应物体类型个数
+        public byte[]				szObjectTypes=new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];		// 相应物体类型列表
+        public int                 nPtzPresetId;											// 云台预置点编号	0~65535
+        public CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
+        public CFG_TIME_SECTION[]	stuTimeSection=(CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);			// 事件响应时间段
+        public int					nBaseLinePointNum;										// 拼接的水位尺坐标点数
+        public CFG_POLYGON[]		stuBaseLine=(CFG_POLYGON[])new CFG_POLYGON().toArray(16);										// 对于拼接的水位尺,需页面上标定出拼接处,若无拼接无需填充																					// 一般4个点,最大不超过16个点,每个点坐标归一化到[0,8192]区间
+        public float				fBaseLevel;												// 对应BaseLine标定的实际水位值。(单位:米)
+        public float				fHighLevel;												// 水位上限报警阈值(单位:米)
+        public float				fLowLevel;												// 水位下限报警阈值(单位:米)
+        public int				    nAlarmInterval;											// 报警时间间隔。(单位:秒)。取值范围[60, 86400]
+        public int				    bDataUpload;											// 是否上报实时数据。
+        public int				    nUpdateInterval;										// 实时数据上报间隔。(单位:秒)。取值范围[60, 86400]
+        public byte[]				byReserved=new byte[4096]; 								// 保留字节
+    };
+
+    // 事件类型NET_ALARM_TRAFFIC_JUNCTION
+    public static class ALARM_TAFFIC_JUNCTION_INFO extends SdkStructure
+    {
+        public int				   nAction;									// 事件动作
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public byte                byMainSeatBelt;                             // 主驾驶座,系安全带状态,1-系安全带,2-未系安全带
+        public byte                bySlaveSeatBelt;                            // 副驾驶座,系安全带状态,1-系安全带,2-未系安全带
+        public byte                byVehicleDirection;                         // 当前被抓拍到的车辆是车头还是车尾,具体请见 EM_VEHICLE_DIRECTION
+        public byte                byOpenStrobeState;                          // 开闸状态,具体请见 EM_OPEN_STROBE_STATE
+        public byte[]			   byReserved1=new byte[4];					   // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体
+        public int                 nLane;                                      // 对应车道号
+        public int                 dwBreakingRule;                             // 违反规则掩码,第一位:闯红灯;
+        // 第二位:不按规定车道行驶;
+        // 第三位:逆行; 第四位:违章掉头;
+        // 第五位:交通堵塞; 第六位:交通异常空闲
+        // 第七位:压线行驶; 否则默认为:交通路口事件
+        public NET_TIME_EX         RedLightUTC;                                // 红灯开始UTC时间
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public int                 nSequence;                                  // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public int                 nSpeed;                                     // 车辆实际速度Km/h
+        /*public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;*/
+        public byte                byDirection;                                // 路口方向,1-表示正向,2-表示反向
+        public byte                byLightState;                               // LightState表示红绿灯状态:0 未知,1 绿灯,2 红灯,3 黄灯
+        public byte                byReserved2;                                 // 保留字节
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public NET_MSG_OBJECT      stuVehicle;                                 // 车身信息
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见 NET_RESERVED_COMMON, 0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public NET_RESOLUTION_INFO stuResolution;                              // 对应图片的分辨率
+        public byte[]              szRecordFile = new byte[NET_COMMON_STRING_128];// 报警对应的原始录像文件信息
+        public EVENT_JUNCTION_CUSTOM_INFO   stuCustomInfo;                     // 自定义信息
+        public byte                byPlateTextSource;                          // 车牌识别来源, 0:本地算法识别,1:后端服务器算法识别
+        public byte[]              byReserved3 = new byte[3];                   // 保留字节,留待扩展.
+        public NET_GPS_INFO        stuGPSInfo;                                 // GPS信息 
+
+        public byte                byNoneMotorInfo;                            // 0-无非机动车人员信息信息,1-有非机动车人员信息信息  此字段为1时下面11个字段生效
+        public byte                byBag;                                      // 是否背包, 0-未知 1-不背包   2-背包
+        public byte                byUmbrella;                                 // 是否打伞, 0-未知 1-不打伞   2-打伞
+        public byte                byCarrierBag;                               // 手提包状态,0-未知 1-没有 2-有
+        public byte                byHat;                                      // 是否戴帽子, 0-未知 1-不戴帽子 2-戴帽子
+        public byte                byHelmet;                                   // 头盔状态,0-未知 1-没有 2-有
+        public byte                bySex;                                      // 性别,0-未知 1-男性 2-女性
+        public byte                byAge;                                      // 年龄
+        public NET_COLOR_RGBA      stuUpperBodyColor;                          // 上身颜色
+        public NET_COLOR_RGBA      stuLowerBodyColor;                          // 下身颜色
+        public byte                byUpClothes;                                // 上身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
+        public byte                byDownClothes;                              // 下身衣服类型 0:未知 1:长袖 2:短袖 3:长裤 4:短裤 5:裙子 6:背心 7:超短裤 8:超短裙
+
+        public NET_EXTENSION_INFO  stuExtensionInfo;                           // 扩展信息
+        public byte[]              byReserved4 = new byte[22];                   // 保留字节,留待扩展.
+        public int                 nTriggerType;                               // TriggerType:触发类型,0车检器,1雷达,2视频
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;                 // 交通车辆信息
+        public int                 dwRetCardNumber;                            // 卡片个数
+        public EVENT_CARD_INFO[]   stuCardInfo = (EVENT_CARD_INFO[])new EVENT_CARD_INFO().toArray(NET_EVENT_MAX_CARD_NUM);// 卡片信息
+        public EVENT_COMM_INFO     stCommInfo;                                 // 公共信息
+
+        public int				   bNonMotorInfoEx;							   // 是否有非机动车信息, 1-true; 0-false
+        public VA_OBJECT_NONMOTOR  stuNonMotor;								   // 非机动车信息
+        public byte[]			   byReserved = new byte[2048];			   // 保留字节,留待扩展
+    }
+
+    // 门禁控制器操作类型
+    public static class NET_EM_ACCESS_CTL_MANAGER extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_CTL_MANAGER_ADDDEVICE = 0;            // 添加单个分控器, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_ADDDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_ADDDEVICE
+        public static final int NET_EM_ACCESS_CTL_MANAGER_MODIFYDEVICE = 1;         // 修改分控器名称, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_MODIFYDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_MODIFYDEVICE
+        public static final int NET_EM_ACCESS_CTL_MANAGER_REMOVEDEVICE = 2;         // 删除分控器, 对应结构体 pstInParam = NET_IN_ACCESS_CTL_MANAGER_REMOVEDEVICE, pstOutParam = NET_OUT_ACCESS_CTL_MANAGER_REMOVEDEVICE
+        public static final int NET_EM_ACCESS_CTL_GETSUBCONTROLLER_INFO = 3;        // 获取分控器信息, 对应结构体 pstInParam = NET_IN_GET_SUB_CONTROLLER_INFO, pstOutParam = NET_OUT_GET_SUB_CONTROLLER_INFO
+        public static final int NET_EM_ACCESS_CTL_GETSUBCONTROLLER_STATE = 4;       // 获取分控器状态, 对应结构体 pstInParam = NET_IN_GET_SUB_CONTROLLER_STATE, pstOutParam = NET_OUT_GET_SUB_CONTROLLER_STATE
+        public static final int NET_EM_ACCESS_CTL_SET_REPEAT_ENTERROUTE = 5;        // 设置反潜路径信息, 对应结构体 pstInparam = NET_IN_SET_REPEAT_ENTERROUTE, pstOutParam = NET_OUT_SET_REPEAT_ENTERROUTE
+        public static final int NET_EM_ACCESS_CTL_GET_REPEAT_ENTERROUTE = 6;        // 获取反潜路径信息, 对应结构体 pstInparam = NET_IN_GET_REPEAT_ENTERROUTE, pstOutParam = NET_OUT_GET_REPEAT_ENTERROUTE
+        public static final int NET_EM_ACCESS_CTL_SET_ABLOCK_ROUTE = 7;             // 设置AB互锁路径信息, 对应结构体 pstInparam = NET_IN_SET_ABLOCK_ROUTE, pstOutParam = NET_OUT_SET_ABLOCK_ROUTE
+        public static final int NET_EM_ACCESS_CTL_GET_ABLOCK_ROUTE = 8;             // 获取AB互锁路径信息, 对应结构体 pstInparam = NET_IN_GET_ABLOCK_ROUTE, pstOutParam = NET_OUT_GET_ABLOCK_ROUTE
+        public static final int NET_EM_ACCESS_CTL_GET_LOGSTATUS = 9;                // 获取日志同步状态,对应结构体 pstInparam = NET_IN_GET_LOGSTATUS, pstOutParam = NET_OUT_GET_LOGSTATUS
+        public static final int NET_EM_ACCESS_CTL_SYNCHRO_OFFLINE_LOG = 10;         // 同步离线日志, 对应结构体 pstInparam = NET_IN_SYNCHRO_OFFLINE_LOG, pstOutParam = NET_OUT_SYNCHRO_OFFLINE_LOG
+        public static final int NET_EM_ACCESS_CTL_SYNCHRO_TIME = 11;                // 同步分控器时间,对应结构体 pstInparam = NET_IN_SYNCHRO_CONTROLLER_TIME, pstOutParam = NET_OUT_SYNCHRO_CONTROLLER_TIME
+        public static final int NET_EM_ACCESS_CTL_SET_QRCODEDECODE_INFO = 12;       // 设置二维码的解码信息, 对应结构体 pstInparam = NET_IN_SET_QRCODE_DECODE_INFO, pstOutParam = NET_OUT_SET_QRCODE_DECODE_INFO
+    }
+
+    // 获取分控器信息入参
+    public static class NET_IN_GET_SUB_CONTROLLER_INFO extends SdkStructure
+    {
+        public int                 dwSize;
+        public int[]               nSubControllerID = new int[MAX_ACCESSSUBCONTROLLER_NUM];  // 分控器ID, 取值范围 -1~255, -1:获取所有,0:获取本地,1~255:外置分控
+        public int                 nSubControllerNum;                              			 // 需要查询的分控器数量
+
+        public NET_IN_GET_SUB_CONTROLLER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取分控器信息出参
+    public static class NET_OUT_GET_SUB_CONTROLLER_INFO extends SdkStructure
+    {
+        public int                           dwSize;
+        public NET_SUB_CONTROLLER_INFO[]     stuSubControllerInfo =
+                (NET_SUB_CONTROLLER_INFO[])new NET_SUB_CONTROLLER_INFO().toArray(MAX_ACCESSSUBCONTROLLER_NUM);  // 分控器信息
+        public int                           nRetNum;                                            									         // 查询到的分控器数量
+
+        public NET_OUT_GET_SUB_CONTROLLER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 分控器信息
+    public static class NET_SUB_CONTROLLER_INFO extends SdkStructure
+    {
+        public int                       nSubControllerID;                               		 // 分控器ID,取值范围 0~255,0为本地
+        public byte[]                    szSubControllerName = new byte[MAX_COMMON_STRING_128];  // 分控器名称
+        public int         	 			 emProperty;                                     		 // 门禁单双向, 对应枚举 NET_ACCESS_PROPERTY
+        public byte[]                    szDeviceType = new byte[MAX_COMMON_STRING_128];         // 分控器型号
+        public byte[]                    szVesion = new byte[MAX_COMMON_STRING_128];             // 分控器版本号
+        public int                       nDoorNum;                                               // 门数量
+        public NET_CARDREAD_INFO[]       stuReaderInfo =
+                (NET_CARDREAD_INFO[])new NET_CARDREAD_INFO().toArray(MAX_ACCESSDOOR_NUM);   // 门对应的读卡器号
+        public byte[]                    byReserved = new byte[128];
+    }
+
+    // 读卡器信息
+    public static class NET_CARDREAD_INFO extends SdkStructure
+    {
+        public int                       nDoor;                                          	     // 门序号
+        public int                       nReadNum;                                       		 // 读卡器数量
+        public READ_ID[]                 szReadIDArr =
+                (READ_ID[])new READ_ID().toArray(MAX_ACCESS_READER_NUM);// 读卡器ID
+        public byte[]                    byReserved = new byte[64];
+    }
+
+    // 读卡器ID
+    public static class READ_ID extends SdkStructure
+    {
+        public byte[]                    szReadID = new byte[NET_COMMON_STRING_32];  			// 读卡器ID
+    }
+
+    // 单双向
+    public static class NET_ACCESS_PROPERTY extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_PROPERTY_UNKNOWN = 0;                             // 未知
+        public static final int NET_EM_ACCESS_PROPERTY_BIDIRECT = 1;                            // 双向门禁
+        public static final int NET_EM_ACCESS_PROPERTY_UNIDIRECT = 2;                           // 单向门径
+    }
+
+
+    // 门禁刷卡时间段,对此配置,通道号实际表示配置索引, 对应命令  CFG_CMD_ACCESSTIMESCHEDULE
+    public static class CFG_ACCESS_TIMESCHEDULE_INFO extends SdkStructure
+    {
+        public TIME_SECTION_WEEK_DAY_4[]	stuTimeWeekDay =
+                (TIME_SECTION_WEEK_DAY_4[])new TIME_SECTION_WEEK_DAY_4().toArray(WEEK_DAY_NUM); // 刷卡时间段
+        public int					        bEnable;																	 	// 时间段使能开关, 1-true; 0-false
+        public byte[]                    	szName = new byte[CFG_COMMON_STRING_128];                  				 	    // 自定义名称
+        public   int[]						nTimeScheduleConsumptionTimes=new int[7*4];			// 每个时间段可消费的次数
+        // 第一维:前7个元素代表每周7天,第8个元素对应节假日
+        // 7个元素中第一个是星期日,第二个是星期一,以此类推
+        // 第二维:每天最多6个时间段
+        // (设备只支持7*4,数组大小和stuTime保持一致)
+        public int						nConsumptionStrategyNums;						// 消费策略的个数
+        public DayTimeStrategy[]					szConsumptionStrategy=new DayTimeStrategy[42];			// 消费策略,每天最多6个时间段,每6个元素对应一天, 一共7天。
+        // 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额"
+        // 星期从0开始,表示周日,前6个时段前面都是0,表示周日的6个时段,剩下依次周一,周二... 一共42个时段。
+        // 消费类型包括:0为定额消费,1为非定额消费;可消费次数最大上限200次;可消费金额最高999900,也就是9999元
+    }
+    public static class DayTimeStrategy extends SdkStructure{
+        public byte[] dayTime=new byte[34];
+
+    }
+    // 普通配置 (CFG_CMD_DEV_GENERRAL) General
+    public static class CFG_DEV_DISPOSITION_INFO extends SdkStructure
+    {
+        public int                      	nLocalNo;              				// 本机编号,主要用于遥控器区分不同设备	0~998
+        public byte[]                     	szMachineName = new byte[256];    	// 机器名称或编号
+        public byte[]                     	szMachineAddress = new byte[256]; 	// 机器部署地点即道路编码
+        public byte[]                     	szMachineGroup = new byte[256];   	// 机器分组或叫设备所属单位	默认为空,用户可以将不同的设备编为一组,便于管理,可重复。
+        public byte[]					 	szMachineID = new byte[64];			// 机器编号, 联网平台内唯一
+        public int						 	nLockLoginTimes;					// 登陆失败可尝试次数
+        public int						 	nLoginFailLockTime;    				// 登陆失败锁定时间
+        public int					 		bLockLoginEnable;					// 登陆失败可尝试次数使能, 1-true; 0-false
+        public byte[]		             	bReserved = new byte[948];        	// 保留字节
+    }
+
+    // 接口 CLIENT_StartVideoDiagnosis 的输入参数
+    public static class NET_IN_VIDEODIAGNOSIS extends SdkStructure
+    {
+        public int                			dwSize;                         	// 此结构体大小
+        public int                  		nDiagnosisID;                   	// 视频诊断ID,从0开始
+        public int                			dwWaitTime;                     	// 接口超时等待时间
+        public Callback  			cbVideoDiagnosis;               	// 视频诊断结果回调函数, 对应回调函数  fRealVideoDiagnosis
+        public Pointer               		dwUser;                         	// 用户自定义参数
+
+        public NET_IN_VIDEODIAGNOSIS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 接口 CLIENT_StartVideoDiagnosis 的输出参数
+    public static class NET_OUT_VIDEODIAGNOSIS extends SdkStructure
+    {
+        public int                			dwSize;                         	// 此结构体大小
+        public LLong                		lDiagnosisHandle;               	// 订阅句柄
+
+        public NET_OUT_VIDEODIAGNOSIS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // cbVideoDiagnosis 回调参数类型
+    public static class NET_REAL_DIAGNOSIS_RESULT extends SdkStructure
+    {
+        public int                			dwSize;                         	// 此结构体大小
+        public Pointer					    pstDiagnosisCommonInfo;  			// 视频诊断通用信息, 对应 NET_VIDEODIAGNOSIS_COMMON_INFO
+        public int                  		nTypeCount;                     	// 诊断结果数据诊断类型个数
+        public Pointer                		pDiagnosisResult;               	// 一次诊断结果数据, 大小为 dwBufSize, 格式如 NET_DIAGNOSIS_RESULT_HEADER+诊断类型1+NET_DIAGNOSIS_RESULT_HEADER+诊断类型2+...
+        public int                			dwBufSize;                      	// 缓冲长度
+
+        public NET_REAL_DIAGNOSIS_RESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_DIAGNOSIS_RESULT_HEADER extends SdkStructure
+    {
+        public int                			dwSize;                         	  // 此结构体大小
+        public byte[]                 		szDiagnosisType = new byte[MAX_PATH]; // 诊断类型,详见"视频诊断上报结果检测类型定义" 如 NET_DIAGNOSIS_DITHER
+        public int                  		nDiagnosisTypeLen;              	  // 该诊断类型结构体大小
+
+        public NET_DIAGNOSIS_RESULT_HEADER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频诊断结果上报通用数据
+        public class NET_VIDEODIAGNOSIS_COMMON_INFO extends SdkStructure {
+            /**
+             此结构体大小
+             */
+            public			int					dwSize;
+            /**
+             检测通道
+             */
+            public			int					nDiagnosisID;
+            /**
+             计划名称
+             */
+            public			NET_ARRAY					stProject=new NET_ARRAY();
+            /**
+             任务名称
+             */
+            public			NET_ARRAY					stTask=new NET_ARRAY();
+            /**
+             参数表名称
+             */
+            public			NET_ARRAY					stProfile=new NET_ARRAY();
+            /**
+             设备唯一标志
+             */
+            public			NET_ARRAY					stDeviceID=new NET_ARRAY();
+            /**
+             开始时间
+             */
+            public NET_TIME stStartTime=new NET_TIME();
+            /**
+             结束时间
+             */
+            public NET_TIME stEndTime=new NET_TIME();
+            /**
+             视频通道号 前端设备比如DVR,IPC的通道
+             */
+            public			int					nVideoChannelID;
+            /**
+             视频码流 {@link NET_STREAM_TYPE}
+             */
+            public			int					emVideoStream;
+            /**
+             诊断结果类型 {@link NET_VIDEODIAGNOSIS_RESULT_TYPE}
+             */
+            public			int					emResultType;
+            /**
+             诊断结果
+             */
+            public			int					bCollectivityState;
+            /**
+             失败原因 {@link NET_VIDEODIAGNOSIS_FAIL_TYPE}
+             */
+            public			int					emFailedCause;
+            /**
+             失败原因描述
+             */
+            public			byte[]					szFailedCode=new byte[64];
+            /**
+             诊断结果存放地址,建议使用szResultAddressEx字段
+             */
+            public			byte[]					szResultAddress=new byte[128];
+            /**
+             码率	单位 kb/s, 每天上报一次
+             */
+            public			int					nFrameRate;
+            /**
+             宽	每天上报一次
+             */
+            public			int					nFrameWidth;
+            /**
+             高	每天上报一次
+             */
+            public			int					nFrameHeight;
+            /**
+             背景图片个数
+             */
+            public			int					nBackPic;
+            /**
+             背景图片路径
+             */
+            public BACK_PICTURE_ADDRESS[]		 szBackPicAddressArr = new BACK_PICTURE_ADDRESS[MAX_BACKPIC_COUNT];	// 背景图片路径列表
+            /**
+             诊断结果存放地址扩展
+             */
+            public			byte[]					szResultAddressEx=new byte[256];
+            /**
+             流开始时间
+             */
+            public NET_TIME stStreamStartTime=new NET_TIME();
+            /**
+             流结束时间
+             */
+            public NET_TIME stStreamEndTime=new NET_TIME();
+
+            public	NET_VIDEODIAGNOSIS_COMMON_INFO(){
+                for(int i=0;i<szBackPicAddressArr.length;i++){
+                    szBackPicAddressArr[i]=new BACK_PICTURE_ADDRESS();
+                }
+
+                this.dwSize=this.size();
+
+            }
+        }
+
+
+
+    // 背景图片路径
+    public static class BACK_PICTURE_ADDRESS extends SdkStructure
+    {
+        public byte[]						 szBackPicAddress = new byte[NET_COMMON_STRING_128];	// 背景图片路径
+    }
+
+    // 通用变长字符串以‘\0’结束
+    public static class NET_ARRAY extends SdkStructure
+    {
+        public int          				dwSize;                  	     // 此结构体大小
+        public Pointer          			pArray;                 		 // 缓冲区 目前最小260字节,调用者申请内存 填充数据保证是'\0'结束
+        public int         				    dwArrayLen;             		 // 缓冲空间长度
+
+        public NET_ARRAY() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频码流类型
+    public static class NET_STREAM_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_STREAM_ERR = 0;                      // 其它
+        public static final int NET_EM_STREAM_MAIN = 1;                     // "Main"-主码流
+        public static final int NET_EM_STREAM_EXTRA_1 = 2;                  // "Extra1"-辅码流1
+        public static final int NET_EM_STREAM_EXTRA_2 = 3;                  // "Extra2"-辅码流2
+        public static final int NET_EM_STREAM_EXTRA_3 = 4;                  // "Extra3"-辅码流3
+        public static final int NET_EM_STREAM_SNAPSHOT = 5;                 // "Snapshot"-抓图码流
+        public static final int NET_EM_STREAM_OBJECT = 6;                   // "Object"-物体流
+        public static final int NET_EM_STREAM_AUTO = 7;                     // "Auto"-自动选择合适码流
+        public static final int NET_EM_STREAM_PREVIEW = 8;                  // "Preview"-预览裸数据码流
+        public static final int NET_EM_STREAM_NONE = 9;                     // 无视频码流(纯音频)
+    }
+
+    // 视频诊断结果类型
+    public static class NET_VIDEODIAGNOSIS_RESULT_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_ROTATION = 0;                        // "Rotation" -视频轮巡分析结果
+        public static final int NET_EM_REAL = 1;                            // "Real" -实时视频分析结果
+        public static final int NET_EM_NR_UNKNOW = 2;                       // 未定义
+    }
+
+    //视频诊断错误原因
+    public static class NET_VIDEODIAGNOSIS_FAIL_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_NO_ERROR = 0;                        // 诊断成功
+        public static final int NET_EM_DISCONNECT = 1;                      // "Disconnect" - 末能连接设备
+        public static final int NET_EM_CH_NOT_EXIST = 2;                    // "ChannelNotExist" - 通道不存在
+        public static final int NET_EM_LOGIN_OVER_TIME = 3;                 // "LoginOverTime" - 登录超时
+        public static final int NET_EM_NO_VIDEO = 4;                        // "NoVideo" - 登录成功无视频
+        public static final int NET_EM_NO_RIGHT = 5;                        // "NoRight" - 无操作权限
+        public static final int NET_EM_PLATFROM_LOGIN_FAILED = 6;           // "PlatformLoginFailed" - 平台登入失败
+        public static final int NET_EM_PLATFROM_DISCONNECT = 7;             // "PlatformDisconnect" - 平台断开连接
+        public static final int NET_EM_GET_STREAM_OVER_TIME = 8;            // "GetStreamOverTime" - 获取码流超时
+        public static final int NET_EM_GET_NO_ENOUGH_STREAM = 9;            // "NoEnoughStream" - 码流不足
+        public static final int NET_EM_DECODE_STREAM_FAILED = 10;           // "DecodeStreamFailed" - 解码失败
+        public static final int NET_EM_GET_OFF_LINE = 11;                   // "OffLine" - 前端设备离线
+        public static final int NET_EM_NF_UNKNOW = 12;                      // 其他原因,详见结构体里的失败原因描述
+        public static final int NET_EM_NOT_SD = 13;                         // "NotSD" - 设备非球机,云台类检测无效
+    }
+
+    // 接口 CLIENT_StartFindDiagnosisResult 的输入参数
+    public static class NET_IN_FIND_DIAGNOSIS extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nDiagnosisID;                   		// 视频诊断ID,从0开始
+        public int                	dwWaitTime;                     		// 接口超时等待时间
+        public NET_ARRAY            stuDeviceID;                    		// 设备唯一标志,pArray : null表示不使用设备ID查询
+        public NET_TIME             stuStartTime;                   		// 开始时间
+        public NET_TIME             stuEndTime;                     		// 结束时间
+        public int                  nVideoChannel;                  		// 视频通道号,-1:所有通道号
+        public int                  nTypeCount;                     		// 诊断类型个数,0:不使用诊断类型查询
+        public Pointer          	pstDiagnosisTypes;              		// 诊断类型数组,表示需要查询的诊断类型, 对应 NET_ARRAY[]
+        // 由用户申请内存,大小为sizeof(NET_ARRAY)*nTypeCount
+        public byte[]               szProjectName = new byte[MAX_PATH];     // 计划名称
+        public int                  nCollectivityStateNum;                  // 需要查询的诊断结果状态个数, 为0时表示需要查询的诊断结果类型为成功
+        public int[]                emCollectivityState=new int[2];         // 需要查询的诊断结果状态数组, 表示需要查询的诊断结果类型,对应枚举EM_COLLECTIVITY_STATE
+        public NET_IN_FIND_DIAGNOSIS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 接口 CLIENT_StartFindDiagnosisResult 的输出参数
+    public static class NET_OUT_FIND_DIAGNOSIS extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public LLong                lFindHandle;                    		// 查询句柄
+        public int                	dwTotalCount;                   		// 符合条件的总个数
+
+        public NET_OUT_FIND_DIAGNOSIS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 接口 CLIENT_DoFindDiagnosisResult 的输入参数
+    public static class NET_IN_DIAGNOSIS_INFO extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nDiagnosisID;                   		// 视频诊断ID,从0开始
+        public int                	dwWaitTime;                     		// 接口超时等待时间
+        public int                  nFindCount;                     		// 每次查询的视频诊断结果条数
+        public int                  nBeginNumber;                   		// 查询起始序号 0<=beginNumber<= totalCount-1
+
+        public NET_IN_DIAGNOSIS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 接口 CLIENT_DoFindDiagnosisResult 的输出参数
+    public static class NET_OUT_DIAGNOSIS_INFO extends SdkStructure
+    {
+        public int                  dwSize;                         		// 此结构体大小
+        public int                  nInputNum;                      		// 用户分配的 NET_VIDEODIAGNOSIS_RESULT_INFO 个数
+        public int                  nReturnNum;                    			// 返回结果个数
+        public Pointer  			pstDiagnosisResult; 					// 结果数据  结构体指针需要调用者分配, 对应 NET_VIDEODIAGNOSIS_RESULT_INFO[]
+        // 申请内存大小为sizeof(NET_VIDEODIAGNOSIS_RESULT_INFO)*nInputNum
+
+        public NET_OUT_DIAGNOSIS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_VIDEODIAGNOSIS_RESULT_INFO extends SdkStructure
+    {
+        public int                  dwSize;                                	// 此结构体大小
+
+        public Pointer       	    pstDiagnosisCommonInfo;					// 视频诊断通用信息  以下结构体指针需要调用者分配, 对应 NET_VIDEODIAGNOSIS_COMMON_INFO
+
+        public int                  abDither;                              	// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer     			pstDither;             					// 视频抖动检测, 对应  NET_VIDEO_DITHER_DETECTIONRESULT
+
+        public int                  abStration;							    // 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer  			pstStration;           					// 视频条纹检测, 对应  NET_VIDEO_STRIATION_DETECTIONRESULT
+
+        public int                  abLoss;								    // 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer       		pstLoss;              				    // 视频丢失检测, 对应  NET_VIDEO_LOSS_DETECTIONRESULT
+
+        public int                  abCover;								// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer      		pstCover;              					// 视频遮挡检测, 对应 NET_VIDEO_COVER_DETECTIONRESULT
+
+        public int                  abFrozen;								// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer     			pstFrozen;             					// 视频冻结检测, 对应 NET_VIDEO_FROZEN_DETECTIONRESULT
+
+        public int                  abBrightness;							// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer 				pstBrightness;         					// 视频亮度异常检测, 对应  NET_VIDEO_BRIGHTNESS_DETECTIONRESULT
+
+        public int                  abContrast;								// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer   			pstContrast;           					// 视频对比度异常检测, 对应  NET_VIDEO_CONTRAST_DETECTIONRESULT
+
+        public int                  abUnbalance;							// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer  			pstUnbalance;          					// 视频偏色检测, 对应 NET_VIDEO_UNBALANCE_DETECTIONRESULT
+
+        public int                  abNoise;								// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer      		pstNoise;              					// 视频噪声检测, 对应 NET_VIDEO_NOISE_DETECTIONRESULT
+
+        public int                  abBlur;									// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer       		pstBlur;               					// 视频模糊检测, 对应  NET_VIDEO_BLUR_DETECTIONRESULT
+
+        public int                  abSceneChange;							// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer 				pstSceneChange;       					// 视频场景变化检测, 对应 NET_VIDEO_SCENECHANGE_DETECTIONRESULT
+
+        public int                  abVideoDelay;							// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer       		pstVideoDelay;         					// 视频延迟检测, 对应 NET_VIDEO_DELAY_DETECTIONRESUL
+
+        public int                  abPTZMoving;							// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer       		pstPTZMoving;          					// 云台操作检测, 对应 NET_PTZ_MOVING_DETECTIONRESULT
+
+        public int					abBlackAndWhite;						// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer	  			pstBlackAndWhite;		    			// 黑白图像检测, 对应  NET_BLACK_WHITE_DETECTIONRESULT
+
+        public int					abDramaticChange;						// 用于表示此次结果中这个诊断项是否有效, 1-true, 0-false
+        public Pointer 				pstDramaticChange;						// 场景剧变检测, 对应  NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT
+        public boolean				abVideoAvailability;                    // 是否支持视频完好率监测
+        public Pointer              pstVideoAvailability;	                // 视频完好率监测结果,对应NET_VIDEO_AVAILABILITY_DETECTIONRESULT
+
+        public boolean              abSnowflake;                            // 是否支持雪花屏检测
+        public Pointer              pstSnowflake;                           // 雪花屏检测,对应NET_VIDEO_SNOWFLAKE_DETECTIONRESULT
+
+        public boolean				abAlgorithmType;						//是否支持视频算法类型检测结果
+        public Pointer              pstAlgorithmType;                       //视频算法类型检测结果,对应NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT
+
+        public boolean				abVideoFilckering;						//是否支持视频闪频检测
+        public Pointer              pstVideoFilckering;                     //视频闪频检测,对应NET_VIDEO_FILCKERING_DETECTION_RESULT
+
+    	public boolean				abVideoLossFrame;						//是否支持视频丢帧检测
+    	public Pointer              pstVideoLossFrame;  	                //视频丢帧检测,对应NET_VIDEO_LOSS_FRAME_DETECTION_RESULT
+
+        public NET_VIDEODIAGNOSIS_RESULT_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_DITHER) 视频抖动检测结果 -- 画面变化 风吹,晃动,转动包括云台转动
+    public static class NET_VIDEO_DITHER_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态  一般小于是正常,大于是异常,中间是警告, 参考  NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间  检测项持续检测时间 暂时无用
+        public byte[]               szPicUrl= new byte[256];                // 异常检测结果图片地址
+        public NET_VIDEO_DITHER_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_STATE_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_STATE_ERR = 0;        				// 其它
+        public static final int NET_EM_STATE_NORMAL = 1;     				// "Normal" 正常
+        public static final int NET_EM_STATE_WARNING = 2;    				// "Warning" 警告
+        public static final int NET_EM_STATE_ABNORMAL = 3;   				// "Abnormal" 异常
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_STRIATION)视频条纹检测结果 -- 相机受到干扰出现异常条纹
+    public static class NET_VIDEO_STRIATION_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考  NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_STRIATION_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_LOSS)视频丢失检测结果 -- 断电 断线等造成的
+    public static class NET_VIDEO_LOSS_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                     		 	// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+
+        public NET_VIDEO_LOSS_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_COVER)视频遮挡检测结果 -- 相机被遮挡了
+    public static class NET_VIDEO_COVER_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_COVER_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_FROZEN)视频冻结检测结果 -- 画面不动多久为冻结
+    public static class NET_VIDEO_FROZEN_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_FROZEN_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_BRIGHTNESS)视频亮度异常检测结果 --以下是相机配置不正确的一些现象检测
+    public static class NET_VIDEO_BRIGHTNESS_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_BRIGHTNESS_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_CONTRAST)视频对比度异常检测结果
+    public static class NET_VIDEO_CONTRAST_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_CONTRAST_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_UNBALANCE)视频偏色异常检测结果
+    public static class NET_VIDEO_UNBALANCE_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_UNBALANCE_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_NOISE)视频噪声异常检测结果
+    public static class NET_VIDEO_NOISE_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                  // 异常检测结果图片地址
+        public NET_VIDEO_NOISE_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_BLUR)视频模糊异常检测结果
+    public static class NET_VIDEO_BLUR_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                      		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                 // 异常检测结果图片地址
+        public NET_VIDEO_BLUR_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对应检测类型(NET_DIAGNOSIS_SCENECHANGE)视频场景变化检测结果
+    public static class NET_VIDEO_SCENECHANGE_DETECTIONRESULT extends SdkStructure
+    {
+        public int                	dwSize;                         		// 此结构体大小
+        public int                  nValue;                         		// 检测结果量化值
+        public int       			emState;                        		// 检测结果状态, 参考 NET_STATE_TYPE
+        public int                  nDuration;                     	 		// 状态持续时间
+        public byte[]               szPicUrl=new byte[256];                 // 异常检测结果图片地址
+        public NET_VIDEO_SCENECHANGE_DETECTIONRESULT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DeleteDevConfig 输入参数
+    public static class NET_IN_DELETECFG extends SdkStructure
+    {
+        public int         			dwSize;                       			// 结构体大小
+        public String        		szCommand;                    			// 配置命令
+
+        public NET_IN_DELETECFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DeleteDevConfig 输出参数
+    public static class NET_OUT_DELETECFG extends SdkStructure
+    {
+        public int         			dwSize;                       			// 结构体大小
+        public int           		nError;                       			// 设备返回的错误码
+        public int           		nRestart;                     			// 设备是否重启
+        public int         			dwOptionMask;                 			// 选项 具体见枚举 NET_EM_CONFIGOPTION
+
+        public NET_OUT_DELETECFG() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_EM_CONFIGOPTION extends SdkStructure
+    {
+        public static final int NET_EM_CONFIGOPTION_OK = 0;
+        public static final int NET_EM_CONFIGOPTION_NEEDRESTART = 1;       // 需要重启应用程序
+        public static final int NET_EM_CONFIGOPTION_NEEDREBOOT = 2;		   // 需要重启系统
+        public static final int NET_EM_CONFIGOPTION_WRITEFILEERROR = 4;    // 写文件出错
+        public static final int NET_EM_CONFIGOPTION_CAPSNOTSUPPORT = 8;    // 设备特性不支持
+        public static final int NET_EM_CONFIGOPTION_VALIDATEFAILED = 16;   // 配置校验失败
+    }
+
+    // CLIENT_GetMemberNames 输入参数
+    public static class NET_IN_MEMBERNAME extends SdkStructure
+    {
+        public int         		    dwSize;                       		   // 结构体大小
+        public String         		szCommand;                    		   // 配置命令
+
+        public NET_IN_MEMBERNAME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_GetMemberNames 输出参数
+    public static class NET_OUT_MEMBERNAME extends SdkStructure
+    {
+        public int         			dwSize;                       		  // 结构体大小
+        public int           		nError;                       		  // 设备返回的错误码
+        public int           		nRestart;                     		  // 设备是否重启
+        public int           		nTotalNameCount;              		  // 名称个数 通过能力集得到,调用者填写
+        public int           		nRetNameCount;                		  // 返回的实际名称个数
+        public Pointer     			pstNames;                     		  // 名称数组 调用者申请内存,个数是 nTotalNameCount 个 NET_ARRAY
+        // 由用户申请内存,大小为sizeof(NET_ARRAY)*nTotalNameCount
+
+        public NET_OUT_MEMBERNAME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 视频诊断参数表(CFG_CMD_VIDEODIAGNOSIS_PROFILE),支持多种参数表,用表名称来索引   调用者申请内存并初始化
+    public static class CFG_VIDEODIAGNOSIS_PROFILE extends SdkStructure
+    {
+        public int						nTotalProfileNum;					// 调用者分配参数表数 根据能力集获取
+        public int						nReturnProfileNum;					// 返回的实际参数表数
+        public Pointer					pstProfiles;						// 调用者分配 nTotalProfileNum 个 CFG_VIDEO_DIAGNOSIS_PROFILE
+    }
+
+    public static class CFG_VIDEO_DIAGNOSIS_PROFILE extends SdkStructure
+    {
+        public byte[]					szName = new byte[MAX_PATH];		// 名称Ansi编码
+
+        public Pointer					pstDither;							// 视频抖动检测, 对应 CFG_VIDEO_DITHER_DETECTION
+        public Pointer 					pstStriation;						// 视频条纹检测, 对应  CFG_VIDEO_STRIATION_DETECTION
+        public Pointer 					pstLoss;							// 视频丢失检测, 对应  CFG_VIDEO_LOSS_DETECTION
+        public Pointer 					pstCover;							// 视频遮挡检测, 对应  CFG_VIDEO_COVER_DETECTION
+        public Pointer 					pstFrozen;							// 视频冻结检测, 对应  CFG_VIDEO_FROZEN_DETECTION
+        public Pointer 					pstBrightness;						// 视频亮度异常检测, 对应  CFG_VIDEO_BRIGHTNESS_DETECTION
+        public Pointer 					pstContrast;						// 对比度异常检测, 对应  CFG_VIDEO_CONTRAST_DETECTION
+        public Pointer 					pstUnbalance;						// 偏色异常检测, 对应  CFG_VIDEO_UNBALANCE_DETECTION
+        public Pointer 					pstNoise;							// 噪声检测, 对应  CFG_VIDEO_NOISE_DETECTION
+        public Pointer 					pstBlur;							// 模糊检测, 对应  CFG_VIDEO_BLUR_DETECTION
+        public Pointer 					pstSceneChange;						// 场景变化检测, 对应  CFG_VIDEO_SCENECHANGE_DETECTION
+        public Pointer        			pstVideoDelay;                      // 视频延时检测, 对应  CFG_VIDEO_DELAY_DETECTION
+        public Pointer         			pstPTZMoving;                       // 云台移动检测, 对应  CFG_PTZ_MOVING_DETECTION
+        public Pointer 	 				pstBlackAndWhite;					// 黑白图像检测, 对应  CFG_VIDEO_BLACKWHITE_DETECTION
+        public Pointer 					pstDramaticChange;				    // 场景剧变检测, 对应  CFG_VIDEO_DRAMATICCHANGE_DETECTION
+        public Pointer	                pstVideoAvailability;			    // 视频完好率监测,对应 CFG_VIDEO_AVAILABILITY_DETECTION
+        public Pointer                  pstSnowflake;                       // 雪花屏检测,对应 CFG_VIDEO_SNOWFLAKE_DETECTION
+        public Pointer                  pstVideoAlgorithmType;				// 视频算法类型检测,对应CFG_VIDEO_ALGORITHMTYPE_DETECTION
+        public Pointer		            pstuVideoFilckeringDetection;		// 闪频检测,对应 CFG_VIDEO_FILCKERING_DETECTION
+        public Pointer		            pstuVideoLossFrameDetection;		// 丢帧检测,对应 CFG_VIDEO_LOSS_FRAME_DETECTION
+    	public int					bIsCompareRecord;					// 是否比较录像
+    }
+
+    ///////////////////////////////////视频诊断参数配置///////////////////////////////////////
+    // 视频抖动检测
+    public static class CFG_VIDEO_DITHER_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 条纹检测
+    public static class CFG_VIDEO_STRIATION_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+        public byte[]					byReserved1 = new byte[2];			// 字节对齐
+        public int						bUVDetection;						// UV分量是否检测, 1-true, 0-false
+    }
+
+    // 视频丢失检测
+    public static class CFG_VIDEO_LOSS_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+    }
+
+    // 视频遮挡检测
+    public static class CFG_VIDEO_COVER_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 画面冻结检测
+    public static class CFG_VIDEO_FROZEN_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+    }
+
+    // 亮度异常检测
+    public static class CFG_VIDEO_BRIGHTNESS_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						bylowerThrehold1;					// 预警阀值 取值1-100
+        public byte						bylowerThrehold2;					// 报警阀值 取值1-100
+        public byte						byUpperThrehold1;					// 预警阀值 取值1-100
+        public byte						byUpperThrehold2;					// 报警阀值 取值1-100
+    }
+
+    // 对比度异常检测
+    public static class CFG_VIDEO_CONTRAST_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						bylowerThrehold1;					// 预警阀值 取值1-100
+        public byte						bylowerThrehold2;					// 报警阀值 取值1-100
+        public byte						byUpperThrehold1;					// 预警阀值 取值1-100
+        public byte						byUpperThrehold2;					// 报警阀值 取值1-100
+    }
+
+    // 偏色检测
+    public static class CFG_VIDEO_UNBALANCE_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 噪声检测
+    public static class CFG_VIDEO_NOISE_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte					    byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 模糊检测
+    public static class CFG_VIDEO_BLUR_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte						byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 场景变化检测
+    public static class CFG_VIDEO_SCENECHANGE_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nMinDuration;						// 最短持续时间 单位:秒 0~65535
+        public byte					    byThrehold1;						// 预警阀值 取值1-100
+        public byte						byThrehold2;						// 报警阀值 取值1-100
+    }
+
+    // 视频延时检测
+    public static class CFG_VIDEO_DELAY_DETECTION extends SdkStructure
+    {
+        public int    					bEnable;                			// 使能配置, 1-true, 0-false
+    }
+
+    // 云台移动检测
+    public static class CFG_PTZ_MOVING_DETECTION extends SdkStructure
+    {
+        public int    					bEnable;                			// 使能配置, 1-true, 0-false
+    }
+
+    // 黑白图像检测
+    public static class CFG_VIDEO_BLACKWHITE_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nEarlyWarning;						// 预警阈值
+        public int						nAlarm;								// 报警阈值
+        public int						nMinDuration;						// 最短持续时间
+    }
+
+    // 场景剧变检测
+    public static class CFG_VIDEO_DRAMATICCHANGE_DETECTION extends SdkStructure
+    {
+        public int						bEnable;							// 使能配置, 1-true, 0-false
+        public int						nEarlyWarning;						// 预警阈值
+        public int						nAlarm;								// 报警阈值
+        public int						nMinDuration;						// 最短持续时间
+    }
+
+    // 视频诊断任务表(CFG_CMD_VIDEODIAGNOSIS_TASK),不同的任务通过名子索引  调用者申请内存并初始化
+    public static class CFG_VIDEODIAGNOSIS_TASK extends SdkStructure
+    {
+        public int						nTotalTaskNum; 						// 调用者分配任务个数  根据能力集获取
+        public int						nReturnTaskNum; 					// 返回实际任务个数
+        public Pointer					pstTasks;							// 任务配置 调用者分配内存 nTotalTaskNum 个 CFG_DIAGNOSIS_TASK
+    }
+
+    public static class CFG_DIAGNOSIS_TASK extends SdkStructure
+    {
+        public byte[]					szTaskName = new byte[MAX_PATH];	// 任务名称Ansi编码
+        public byte[]					szProfileName = new byte[MAX_PATH]; // 本任务使用的诊断参数表名Ansi编码
+        public int						nTotalSourceNum;					// 调用者分配任务数据源的个数  根据能力集获取
+        public int						nReturnSourceNum;					// 返回实际任务数据源的个数
+        public Pointer					pstSources;							// 任务数据源 调用者分配内存 nTotalSourceNum 个 CFG_TAST_SOURCES
+    }
+
+    public static class CFG_TAST_SOURCES extends SdkStructure
+    {
+        // 能力
+        public byte						abDeviceID;                         // abDeviceID(使用szDeviceID) 和 abRemoteDevice(使用stRemoteDevice) 必须有一个为true,否则Sources是null
+        public byte						abRemoteDevice;
+
+        public byte[]					szDeviceID = new byte[MAX_PATH];	// 设备ID
+        public CFG_TASK_REMOTEDEVICE    stRemoteDevice = new CFG_TASK_REMOTEDEVICE();   // 设备详细信息
+        public int						nVideoChannel;						// 视频通道号
+        public int						emVideoStream;						// 视频码流类型, 参考 CFG_EM_STREAM_TYPE
+        public int						nDuration;							// 持续诊断时间
+        public int                      abStartTime;                        // 0 表示源为实时码流, stuStartTime字段无效; 1表示源为录像文件, stuStartTime字段有效
+        public CFG_NET_TIME             stuStartTime;                       // 当abStartTime为TRUE时有效,表示源不是实时预览码流, 而是录像文件,该时间表示要分析的录像的开始时间
+        // stuStartTime字段作废,后续都使用stuDiagnosisRecordInfo,保留此字段只为兼容老设备
+        public int                  abDiagnosisRecordInfo;                      // 表示stuDiagnosisRecordInfo字段是否有效; 若源为录像文件则设置为TRUE, 否则设置成FALSE.
+        public NET_VIDEO_DIAGNOSIS_RECORD_INFO stuDiagnosisRecordInfo;                     // 视频诊断录像信息, 当 abDiagnosisRecordInfo 为TRUE有效
+        public int                      emSourceInputType;                       // 视频源输入方式,EM_VIDEO_CHANNEL_SOURCE_INPUT_TYPE
+        public byte[]					szPath=new byte[MAX_PATH];							// 视频流地址,字段不为空优先使用
+        public int					abCompareRecordInfo;						// 表示stuCompareRecordInfo字段是否有效;
+        public NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO		stuCompareRecordInfo;			// 比较录像详细信息
+    }
+
+    // 设备详细信息
+    public static class CFG_TASK_REMOTEDEVICE extends SdkStructure
+    {
+        public byte[]                   szAddress = new byte[MAX_PATH];     // 设备地址或域名
+        public int                    	dwPort;                             // 端口号
+        public byte[]                   szUserName = new byte[MAX_PATH];    // 用户名
+        public byte[]                   szPassword = new byte[MAX_PATH];    // 密码明文
+        public byte[]                   szProtocolType = new byte[MAX_PATH];// 连接设备的协议类型
+        public Pointer      			pVideoInput;                		// 视频输入通道,用户申请nMaxVideoInputs 个 CFG_RemoteDeviceVideoInput
+        public int				        nMaxVideoInputs;					// 视频输入通道最大数
+        public int				        nRetVideoInputs;					// 返回的视频输入通道数
+    }
+
+    public static class CFG_EM_STREAM_TYPE extends SdkStructure
+    {
+        public static final int CFG_EM_STREAM_ERR = 0;                  	// 其它
+        public static final int CFG_EM_STREAM_MAIN = 1;						// "Main"-主码流
+        public static final int CFG_EM_STREAM_EXTRA_1 = 2;					// "Extra1"-辅码流1
+        public static final int CFG_EM_STREAM_EXTRA_2 = 3;					// "Extra2"-辅码流2
+        public static final int CFG_EM_STREAM_EXTRA_3 = 4;					// "Extra3"-辅码流3
+        public static final int CFG_EM_STREAM_SNAPSHOT = 5;					// "Snapshot"-抓图码流
+        public static final int CFG_EM_STREAM_OBJECT = 6;					// "Object"-物体流
+    }
+
+    // 频诊断计划表(CFG_CMD_VIDEODIAGNOSIS_PROJECT),不同的计划通过名字索引 调用者申请内存并初始化
+    public static class CFG_VIDEODIAGNOSIS_PROJECT extends SdkStructure
+    {
+        public int						nTotalProjectNum;					// 调用者分配计划个数  根据能力集获取
+        public int						nReturnProjectNum;					// 返回实际计划个数
+        public Pointer					pstProjects;						// 计划配置 调用者分配内存 nTotalProjectNum 个 CFG_DIAGNOSIS_PROJECT
+    }
+
+    public static class CFG_DIAGNOSIS_PROJECT extends SdkStructure
+    {
+        public byte[]					szProjectName = new byte[MAX_PATH]; // 计划名称Ansi编码
+        public int						nTotalTaskNum;						// 调用者分配任务列表个数  根据能力集获取
+        public int						nReturnTaskNum;					    // 返回实际任务列表个数
+        public Pointer					pstProjectTasks;					// 任务列表 调用者分配内存 nTotalTaskNum 个 CFG_PROJECT_TASK
+    }
+
+    // 视频诊断计划
+    public static class CFG_PROJECT_TASK extends SdkStructure
+    {
+        public int						 bEnable;							// 任务是否使能, 1-true, 0-false
+        public byte[]					 szTaskName = new byte[MAX_PATH];	// 任务名称Ansi编码
+        public TIME_SECTION_WEEK_DAY_6[] stTimeSectionWeekDay =
+                (TIME_SECTION_WEEK_DAY_6[])new TIME_SECTION_WEEK_DAY_6().toArray(WEEK_DAY_NUM);	// 任务时间段
+        public int                       bIsCycle;                          // 任务是否循环, 1表示循环, 0表示不循环
+        //public int                       emTaskType;                        // 任务类型 EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE
+        public int                       bIsRepeat;                         // 任务是否重复执行,(跨天/周是否重复执行)
+        public int						 nCycleInterval;					// 任务循环间隔,单位秒
+    }
+
+    // 任务类型
+    public static class EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE
+    {
+        public static final int EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_UNKNOWN = 0;			// 未知
+        public static final int EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_BY_TIMESECTION = 1;	// 基于TimeSection进行分析,分析时间根据TimeSection控制
+        public static final int EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE_BY_CHANNELNUM = 2;	    // 基于通道数量进行分析,任务下发立即执行,单次任务直至所有通道分析完毕才停止,IsCycle为true则开启下次分析,若无此字段默认基于TimeSection
+    }
+
+    // 获取视频诊断进行状态( CFG_CMD_VIDEODIAGNOSIS_GETSTATE )对应结构体
+    public static class CFG_VIDEODIAGNOSIS_STATE_INFO extends SdkStructure
+    {
+        public int                      bEnable;                               // 是否使能, 1-true, 0-false
+        public int                      bRunning;                              // 是否正在运行, 1-true, 0-false, 使能开启,并且当前有工作任务正在进行,没有错误发生。
+        public byte[]                   szCurrentProject = new byte[MAX_PATH]; // 当前计划名称
+        public byte[]                   szCurrentTask = new byte[MAX_PATH];    // 当前任务名称
+        public byte[]                   szCurrentProfile = new byte[MAX_PATH]; // 当前任务配置参数表名称
+        public int                      nCurrentSourceCount;                   // 当前任务轮训视频源个数
+        public int                      nCurrentSourceIndex;                   // 当前任务当前视频源序号	从0开始
+        public CFG_TIME_SECTION         stCurrentTimeSection;                  // 当前计划时间段
+        public int                      nTaskCountOfProject;                   // 当前计划总任务数
+        public int                      nIndexOfCurrentTask;                   // 当前任务序号 从0开始
+        public int                      emTaskState;                           // 任务运行状态,对应枚举EM_VIDEODIAGNOSIS_TASK_STATE
+    }
+
+
+    // 云台支持能力信息( CFG_CAP_CMD_PTZ_ENABLE )对应结构体
+    public static class CFG_CAP_PTZ_ENABLEINFO extends SdkStructure
+    {
+        public int bEnable;												//该通道是否支持云台
+    }
+
+    // CLIENT_GetVideoDiagnosisState 入参
+    public static class NET_IN_GET_VIDEODIAGNOSIS_STATE extends SdkStructure
+    {
+        public int				        dwSize;                                //  结构体大小
+        public byte[]                  szProject = new byte[128];             //  计划名,为空表示所有执行的计划
+
+        public NET_IN_GET_VIDEODIAGNOSIS_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 诊断状态
+    public static class VIDEODIAGNOSIS_STATE extends SdkStructure
+    {
+        public int                      bEnable;                               // 是否使能
+        public int                      bRunning;                              // 是否正在运行	使能开启,并且当前有工作任务正在进行,没有错误发生。
+        public byte[]                   szCurrentProject = new byte[MAX_PATH]; // 当前计划名称
+        public byte[]                   szCurrentTask = new byte[MAX_PATH];    // 当前任务名称
+        public byte[]                   szCurrentProfile = new byte[MAX_PATH]; // 当前任务配置参数表名称
+        public int                      nCurrentSourceCount;                   // 当前任务轮训视频源个数
+        public int                      nCurrentSourceIndex;                   // 当前任务当前视频源序号	从0开始
+        public NET_TSECT                stCurrentTimeSection;                  // 当前计划时间段
+        public int                      nTaskCountOfProject;                   // 当前计划总任务数
+        public int                      nIndexOfCurrentTask;                   // 当前任务序号 从0开始
+        public byte[]				    byReserved = new byte[512];			   // 保留字节
+    }
+    // CLIENT_GetVideoDiagnosisState 出参
+    public static class NET_OUT_GET_VIDEODIAGNOSIS_STATE extends SdkStructure
+    {
+        public int				        dwSize;                                      //  结构体大小
+        public VIDEODIAGNOSIS_STATE[]   stuState = (VIDEODIAGNOSIS_STATE[])new VIDEODIAGNOSIS_STATE().toArray(2);//  工作状态,数组下标0:Tour,1:RealTime
+
+        public NET_OUT_GET_VIDEODIAGNOSIS_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RadiometryAttach 入参
+    public static class NET_IN_RADIOMETRY_ATTACH extends SdkStructure
+    {
+        public int              	    dwSize;
+        public int                 		nChannel;                              // 视频通道号	-1 表示全部
+        public Callback 	   		cbNotify;                              // 状态回调函数指针, 对应回调函数  fRadiometryAttachCB
+        public Pointer             		dwUser;                                // 用户数据
+
+        public NET_IN_RADIOMETRY_ATTACH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RadiometryAttach 出参
+    public static class NET_OUT_RADIOMETRY_ATTACH extends SdkStructure
+    {
+        public int               		 dwSize;
+
+        public NET_OUT_RADIOMETRY_ATTACH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 热图数据
+    public static class NET_RADIOMETRY_DATA extends SdkStructure
+    {
+        public NET_RADIOMETRY_METADATA   stMetaData;                 		// 元数据
+        public Pointer                   pbDataBuf;                  		// 热图数据缓冲区(压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压)
+        public int                       dwBufSize;                  		// 热图数据缓冲区大小
+        public byte[]                    reserved = new byte[512];
+    }
+
+    // 热图元数据信息
+    public static class NET_RADIOMETRY_METADATA extends SdkStructure
+    {
+        public int                 		 nHeight;                            // 高
+        public int                 		 nWidth;                             // 宽
+        public int                 		 nChannel;                           // 通道
+        public NET_TIME           		 stTime;                             // 获取数据时间
+        public int                		 nLength;                            // 数据大小
+        public byte[]                	 szSensorType = new byte[64];        // 机芯类型
+        public int                 		 nUnzipParamR;                       // 解压缩参数R
+        public int                		 nUnzipParamB;                       // 解压缩参数B
+        public int                		 nUnzipParamF;                       // 解压缩参数F
+        public int                		 nUnzipParamO;                       // 解压缩参数O
+        public byte[]             	     Reserved = new byte[256];
+    }
+
+    // CLIENT_RadiometryFetch 入参
+    public static class NET_IN_RADIOMETRY_FETCH extends SdkStructure
+    {
+        public int               		 dwSize;
+        public int                	     nChannel;                           // 通道号, 通道号要与订阅时一致, -1除外
+
+        public NET_IN_RADIOMETRY_FETCH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RadiometryFetch 出参
+    public static class NET_OUT_RADIOMETRY_FETCH extends SdkStructure
+    {
+        public int               		 dwSize;
+        public int                 		 nStatus;                            // 0: 未知, 1: 空闲, 2: 获取热图中
+
+        public NET_OUT_RADIOMETRY_FETCH() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设备信息类型,对应 CLIENT_StartFind CLIENT_DoFind CLIENT_StopFind 接口
+    public static class NET_FIND extends SdkStructure
+    {
+        public static final int NET_FIND_RADIOMETRY = 0;      // 热成像温度查询, pInBuf= NET_IN_RADIOMETRY_*FIND*, pOutBuf= NET_OUT_RADIOMETRY_*FIND*
+        public static final int NET_FIND_POS_EXCHANGE = 1;	  // POS交易信息查询,pInBuf = NET_IN_POSEXCHANGE_*FIND*,pOutBuf= NET_OUT_POSEXCHANGE_*FIND*
+    }
+
+    //热成像查询保存周期
+    public static class EM_RADIOMETRY_PERIOD extends SdkStructure
+    {
+        public static final int EM_RADIOMETRY_PERIOD_UNKNOWN = 0;		  // 未知
+        public static final int EM_RADIOMETRY_PERIOD_5  = 5;			  // 5分钟记录表,默认
+        public static final int EM_RADIOMETRY_PERIOD_10 = 10;           // 10分钟记录表
+        public static final int EM_RADIOMETRY_PERIOD_15 = 15;           // 15分钟记录表
+        public static final int EM_RADIOMETRY_PERIOD_30 = 30;           // 30分钟记录表
+    }
+
+    // CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令入参
+    public static class NET_IN_RADIOMETRY_STARTFIND extends SdkStructure
+    {
+        public int                    dwSize;
+        public NET_TIME               stStartTime;                       // 查询开始时间
+        public NET_TIME               stEndTime;                         // 查询结束时间
+        public int                    nMeterType;                        // 查询类别,见NET_RADIOMETRY_METERTYPE
+        public int                    nChannel;                          // 通道号
+        public int   				  emPeriod;                          // 所查询表的保存周期,详见EM_RADIOMETRY_PERIOD
+
+        public NET_IN_RADIOMETRY_STARTFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFind 接口 NET_FIND_RADIOMETRY 命令出参
+    public static class NET_OUT_RADIOMETRY_STARTFIND extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nFinderHanle;                      // 取到的查询句柄
+        public int               nTotalCount;                       // 符合此次查询条件的结果总条数
+
+        public NET_OUT_RADIOMETRY_STARTFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    // CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令入参
+    public static class NET_IN_RADIOMETRY_DOFIND extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nFinderHanle;                      // 查询句柄
+        public int                 nBeginNumber;                      // 本次查询开始的索引号
+        public int                 nCount;                            // 本次查询条数,最大为NET_IN_RADIOMETRY_DOFIND_MAX
+
+        public NET_IN_RADIOMETRY_DOFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+	// 热成像查询返回的查询结果
+	public static class NET_RADIOMETRY_QUERY extends SdkStructure
+	{
+		public NET_TIME            stTime;                            // 记录时间
+		public int                 nPresetId;                         // 预置点编号
+		public int                 nRuleId;                           // 规则编号
+		public byte[]              szName = new byte[64];             // 查询项名称
+		public NET_POINT           stCoordinate;                      // 查询测温点坐标
+		public int                 nChannel;                          // 通道号
+		public NET_RADIOMETRYINFO  stTemperInfo;                      // 测温信息,目前nTemperMid, nTemperStd 成员无效
+		//public NET_POINT            stCoordinates[8];				   // 查询测温点坐标
+		public NET_POINT[]         stCoordinates = (NET_POINT[])new NET_POINT().toArray(8);
+		public int				   nCoordinateNum;					   // 查询温度点坐标返回的个数
+		public byte[]              reserved = new byte[220];
+	}
+
+    // CLIENT_DoFind 接口 NET_FIND_RADIOMETRY 命令出参
+    public static class NET_OUT_RADIOMETRY_DOFIND extends SdkStructure
+    {
+        public int                       dwSize;
+        public int                       nFound;                             // 实际查询到的点数
+        public NET_RADIOMETRY_QUERY[]    stInfo = (NET_RADIOMETRY_QUERY[])new NET_RADIOMETRY_QUERY().toArray(NET_RADIOMETRY_DOFIND_MAX); // 温度统计信息
+
+        public NET_OUT_RADIOMETRY_DOFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令入参
+    public static class NET_IN_RADIOMETRY_STOPFIND extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nFinderHanle;                       // 查询句柄
+
+        public NET_IN_RADIOMETRY_STOPFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StopFind 接口 NET_FIND_RADIOMETRY 命令出参
+    public static class NET_OUT_RADIOMETRY_STOPFIND extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_OUT_RADIOMETRY_STOPFIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // IPC报警,IPC通过DVR或NVR上报的本地报警(对应事件 NET_ALARM_IPC)
+    public static class ALARM_IPC_INFO extends SdkStructure
+    {
+        public int               		dwSize;
+        public int						nChannelID;										// 通道号
+        public int                 		nEventAction;                   				// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX				UTC;											// 事件发生的时间
+        public byte[]					szName = new byte[MAX_ALARM_CHANNEL_NAME_LEN];	// 报警通道名称
+        public int					    nAlarmChannel;					                // 报警输入通道号,从0开始。没有该字段表示无法区分报警通道号。
+
+        public ALARM_IPC_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 蓝牙开门记录集信息查询条件
+    public static class FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION extends SdkStructure
+    {
+        public int						dwSize;
+        public byte[]					szUserName = new byte[NET_COMMON_STRING_128];  // 用户名
+
+        public FIND_RECORD_ACCESS_BLUETOOTH_INFO_CONDITION() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 蓝牙开门记录集信息
+    public static class NET_RECORD_ACCESS_BLUETOOTH_INFO extends SdkStructure
+    {
+        public int                      dwSize;                                 	  // 结构体大小
+        public int                      nRecNo;                                 	  // 记录集编号,只读
+        public byte[]				    szUserName = new byte[NET_COMMON_STRING_128]; // 用户名
+        public byte[]					szPassword = new byte[NET_COMMON_STRING_128]; // 密码
+        public byte[]        			szMac = new byte[NET_COMMON_STRING_32];       // mac地址
+        public byte[]        			szNote = new byte[NET_COMMON_STRING_128];     // 用户备注信息
+
+        public NET_RECORD_ACCESS_BLUETOOTH_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁添加更新用户信息接口 CLIENT_UpdateSmartLockUser 入参
+    public static class NET_IN_SMARTLOCK_UPDATE_USER_INFO extends SdkStructure
+    {
+        public int							dwSize;						                						// 结构体大小
+        public byte[]                       szSerialNumber = new byte[32];                         				// 设备序列号
+        public byte[]                       szCredentialHolder = new byte[16];                    				// 身份拥有者(与AccessControlCard记录集中的UserID概念一致)
+        public byte[]                       szUserName = new byte[32];                             				// 用户名称
+        public NET_TIME                     stuStartTime;                               						// 起始时间
+        public NET_TIME                     stuEndTime;                                 						// 结束时间
+        public byte[]						szReserve = new byte[512];					            			// 保留字段
+        public int                          nCardInfoNum;                               						// 卡信息数量
+        public NET_SMARTLOCK_CARDINFO[]     stuCardInfo =
+                (NET_SMARTLOCK_CARDINFO[])new NET_SMARTLOCK_CARDINFO().toArray(4);  // 卡的信息
+        public int                          nPwdInfoNum;                                						// 密码信息数量
+        public NET_SMARTLOCK_PWDINFO[]      stuPwdInfo =
+                (NET_SMARTLOCK_PWDINFO[])new NET_SMARTLOCK_PWDINFO().toArray(4);    // 密码信息
+        public int                          nFingerPrintInfoNum;                        						// 密码信息数量
+        public NET_SMARTLOCK_FPINFO[]       stuFingerPrintInfo =
+                (NET_SMARTLOCK_FPINFO[])new NET_SMARTLOCK_FPINFO().toArray(4);      // 信息信息
+        public int							nTaskID;															// 任务ID
+
+        public NET_IN_SMARTLOCK_UPDATE_USER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁添加更新用户信息接口 CLIENT_UpdateSmartLockUser 出参
+    public static class NET_OUT_SMARTLOCK_UPDATE_USER_INFO extends SdkStructure
+    {
+        public int							dwSize;							// 结构体大小
+
+        public NET_OUT_SMARTLOCK_UPDATE_USER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 卡片信息
+    public static class NET_SMARTLOCK_CARDINFO extends SdkStructure
+    {
+        public int			   				 emType;                       // 开门类型, 参考 NET_ACCESS_METHOD
+        public int                           nIndex;                       // 用户信息序号
+        public byte[]                        szCardNo = new byte[32];      // 卡号
+        public int          				 emCardType;                   // 卡类型, 参考 NET_ACCESSCTLCARD_TYPE
+        public byte[]						 szReserve = new byte[512];	   // 保留字段
+    }
+
+    // 密码信息
+    public static class NET_SMARTLOCK_PWDINFO extends SdkStructure
+    {
+        public int			    			emType;                        // 开门类型, 参考 NET_ACCESS_METHOD
+        public int                          nIndex;                        // 用户信息序号
+        public byte[]                       szPassword = new byte[32];     // 密码
+        public int                          dwUseTime;                     // 使用次数
+        public byte[]						szReserve = new byte[512];	   // 保留字段
+    }
+
+    // 信息信息
+    public static class NET_SMARTLOCK_FPINFO extends SdkStructure
+    {
+        public int			    			emType;                        // 开门类型, 参考 NET_ACCESS_METHOD
+        public int                          nIndex;                        // 用户信息序号
+        public int                          nFingerprintLen;               // 信息数据长度,不超过1.5K
+        public Pointer                      pFingerprintData;              // 信息数据
+        public byte[]						szReserve = new byte[512];	   // 保留字段
+    }
+
+    // 控制方式
+    public static class NET_ACCESS_METHOD extends SdkStructure
+    {
+        public static final int NET_ACCESS_METHOD_UNKNOWN = 0;             // 未知
+        public static final int NET_ACCESS_METHOD_CARD = 1;                // 卡
+        public static final int NET_ACCESS_METHOD_PASSWORD = 2;            // 密码
+        public static final int NET_ACCESS_METHOD_FINGERPRINT = 3;         // 信息
+    }
+
+    // 获取当前智能锁的注册用户信息 CLIENT_GetSmartLockRegisterInfo 入参 (每次获取最多获取32条信息)
+    public static class NET_IN_GET_SMART_LOCK_REGISTER_INFO extends SdkStructure
+    {
+        public int				 			dwSize;												// 结构体大小
+        public byte[]            			szSerialNumber = new byte[MAX_COMMON_STRING_32];    // 设备序列号
+        public int				 			nOffset;											// 用户列表的偏移量
+
+        public NET_IN_GET_SMART_LOCK_REGISTER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 注册用户的信息
+    public static class NET_SMART_LOCK_REGISTER_INFO extends SdkStructure
+    {
+        public int							emType;												// 开锁方式类型, 参考 NET_ACCESS_METHOD
+        public byte[]						szUserID = new byte[MAX_COMMON_STRING_16];			// 用户ID(非AccessControlCard记录集中的UserID概念)
+        public byte[]						szName = new byte[MAX_COMMON_STRING_32];			// 用户名称
+        public byte[]						byReserved = new byte[512];							// 保留字段
+    }
+
+    // 获取当前智能锁的注册用户信息 CLIENT_GetSmartLockRegisterInfo 出参
+    public static class NET_OUT_GET_SMART_LOCK_REGISTER_INFO extends SdkStructure
+    {
+        public int								dwSize;											// 结构体大小
+        public int								nTotalCount;									// 总的用户数量
+        public int								nReturnCount;									// 实际返回的用户数量
+        public NET_SMART_LOCK_REGISTER_INFO[]	stuRegisterInfo =
+                (NET_SMART_LOCK_REGISTER_INFO[])new NET_SMART_LOCK_REGISTER_INFO().toArray(MAX_NUMBER_REGISTER_INFO);	// 注册用户的信息
+
+        public NET_OUT_GET_SMART_LOCK_REGISTER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁修改用户信息 CLIENT_SetSmartLockUserName 入参
+    public static class NET_IN_SET_SMART_LOCK_USERNAME extends SdkStructure
+    {
+        public int							dwSize;												// 结构体大小
+        public int							emType;												// 开锁方式类型, 参考 NET_ACCESS_METHOD
+        public byte[]						szSerialNumber = new byte[MAX_COMMON_STRING_32];    // 智能锁序列号
+        public byte[]						szUserID = new byte[MAX_COMMON_STRING_16];			// 用户ID(非AccessControlCard记录集中的UserID概念)
+        public byte[]						szName = new byte[MAX_COMMON_STRING_32];			// 需要修改成的名称
+
+        public NET_IN_SET_SMART_LOCK_USERNAME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁修改用户信息 CLIENT_SetSmartLockUserName 出参
+    public static class NET_OUT_SET_SMART_LOCK_USERNAME extends SdkStructure
+    {
+        public int							dwSize;												// 结构体大小
+
+        public NET_OUT_SET_SMART_LOCK_USERNAME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁删除用户接口 CLIENT_RemoveSmartLockUser 入参
+    public static class NET_IN_SMARTLOCK_REMOVE_USER_INFO extends SdkStructure
+    {
+        public int							dwSize;						                		// 结构体大小
+        public byte[]                       szSerialNumber = new byte[32];                      // 设备序列号
+        public byte[]                       szCredentialHolder = new byte[16];                  // 身份拥有者(与AccessControlCard记录集中的UserID概念一致)
+        public int			    			emType;                                     		// 开门类型,unknown 表示全部, 参考 NET_ACCESS_METHOD
+        public int                          nIndex;                                     		// 某种开门方式的索引号,-1表示全部
+        public int							nTaskID;											// 任务ID
+
+        public NET_IN_SMARTLOCK_REMOVE_USER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 智能锁删除用户接口 CLIENT_RemoveSmartLockUser 出参
+    public static class NET_OUT_SMARTLOCK_REMOVE_USER_INFO extends SdkStructure
+    {
+        public int							dwSize;						                		// 结构体大小
+
+        public NET_OUT_SMARTLOCK_REMOVE_USER_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取对码信息, 对应命令  NET_DEVSTATE_GET_CODEID_LIST
+    public static class NET_GET_CODEID_LIST extends SdkStructure
+    {
+        public int                 			dwSize;
+        public int                			nStartIndex;            // 开始的索引号,开始第一次查询可设为0
+        public int                 			nQueryNum;              // 本次获取的对码条数,此值小于等于能力集中nMaxPageSize字段的值
+        public int                			nRetCodeIDNum;          // 实际返回的对码条数
+        public Pointer    		   			pstuCodeIDInfo;         // 获取对码的内容, 对应 NET_CODEID_INFO[],内存由用户分配,不能小于nQueryNum*sizeof(NET_CODEID_INFO)
+
+        public NET_GET_CODEID_LIST() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 对码信息
+    public static class NET_CODEID_INFO extends SdkStructure
+    {
+        public int                       	dwSize;
+        public long                     	nWirelessId;                        		    // 无线ID号
+        public int    					 	emType;                             			// 无线设备类型, 对应枚举 NET_WIRELESS_DEVICE_TYPE
+        public byte[]                       szName = new byte[NET_USER_NAME_LENGTH];        // 用户名
+        public int                        	bEnable;                            			// 是否启用了此设备, 1-true; 0-false
+        public byte[]                       szCustomName = new byte[NET_COMMON_STRING_64];  // 自定义名称
+        public int                          nChannel;                           			// 无线防区的alarm通道号,Alarm配置的下标,只有Type为Defence时此字段才有效。
+        public int     						emMode;                             			// 无线设备工作模式, 对应枚举  EM_WIRELESS_DEVICE_MODE
+        public int 							emSenseMethod;                     				// 传感器方式, 对应枚举  EM_CODEID_SENSE_METHOD_TYPE
+        public byte[]                       szSerialNumber = new byte[NET_WIRELESS_DEVICE_SERIAL_NUMBER_MAX_LEN]; // 无线设备序列号
+        public int                          nTaskID;                            // 任务ID
+        public byte[]                       szRoomNo=new byte[64];                       // 智能锁房间号
+        public int                          nMaxFingerprints;                   // 信息数量:为0时表示不支持信息
+        public int                          nMaxCards;                          // 卡片数量:为0时表示不支持卡片
+        public int                          nMaxPwd;                            // 密码数量:为0时表示不支持密码
+        public byte[]						szRandSalt=new byte[128];					// 智能门锁复杂盐值
+        public NET_CODEID_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 无线设备类型
+    public static class NET_WIRELESS_DEVICE_TYPE extends SdkStructure
+    {
+        public static final int NET_WIRELESS_DEVICE_TYPE_UNKNOWN = 0;
+        public static final int NET_WIRELESS_DEVICE_TYPE_KEYBOARD = 1;          	// 无线键盘
+        public static final int NET_WIRELESS_DEVICE_TYPE_DEFENCE = 2;           	// 无线防区
+        public static final int NET_WIRELESS_DEVICE_TYPE_REMOTECONTROL = 3;     	// 无线遥控
+        public static final int NET_WIRELESS_DEVICE_TYPE_MAGNETOMER = 4;        	// 无线门磁
+        public static final int NET_WIRELESS_DEVICE_TYPE_ALARMBELL = 5;				// 无线警号
+        public static final int NET_WIRELESS_DEVICE_TYPE_SWITCHER = 6;          	// 无线插座
+        public static final int NET_WIRELESS_DEVICE_TYPE_SMARTLOCK = 7;        	    // 无线智能锁
+        public static final int NET_WIRELESS_DEVICE_TYPE_REPEATER = 8;         	    // 无线中继器
+    }
+
+    // 无线设备工作模式
+    public static class EM_WIRELESS_DEVICE_MODE extends SdkStructure
+    {
+        public static final int EM_WIRELESS_DEVICE_MODE_UNKNOWN = 0;            	// 模式未识别
+        public static final int EM_WIRELESS_DEVICE_MODE_NORMAL = 1;             	// Normal 普通模式
+        public static final int EM_WIRELESS_DEVICE_MODE_POLLING = 2;            	// Polling 巡检模式 只有Type为RemoteControl时才能处于巡检模式
+    }
+
+    // 传感器方式
+    public static class EM_CODEID_SENSE_METHOD_TYPE extends SdkStructure
+    {
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_UNKOWN = 0;         	// 未知的
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_DOOR_MAGNETISM = 1; 	// 门磁
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_GAS_SENSOR = 2;     	// 燃气传感
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_CURTAIN_SENSOR = 3; 	// 幕帘传感器
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_MOBILE_SENSOR = 4;  	// 移动传感器
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_PASSIVEINFRA = 5;   	// 被动红外传感器
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_URGENCY_BUTTON = 6; 	// 紧急按钮
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_SMOKING_SENSOR = 7; 	// 烟雾传感器
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_DOUBLEMETHOD = 8;   	// 双鉴传感器(红外+微波)
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_WATER_SENSOR = 9;   	// 水浸传感器
+        public static final int EM_CODEID_SENSE_METHOD_TYPE_THREEMETHOD = 10;   	// 三技术
+    }
+
+    // CLIENT_EncryptString 接口入参
+    public static class NET_IN_ENCRYPT_STRING extends SdkStructure
+    {
+        public int							 dwSize;								// 结构体大小
+        public byte[]						 szCard = new byte[33];					// 需要加密的字符串
+        public byte[]                        byReserved1 = new byte[3];             // 字节对齐
+        public byte[]                        szKey = new byte[33];                  // 秘钥
+        public byte[]                        byReserved2 = new byte[3];             // 字节对齐
+
+        public NET_IN_ENCRYPT_STRING() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_EncryptString 接口出参
+    public static class NET_OUT_ENCRYPT_STRING extends SdkStructure
+    {
+        public int							dwSize;									// 结构体大小
+        public byte[]						szEncryptString = new byte[1024];		// 加密后字符串
+
+        public NET_OUT_ENCRYPT_STRING() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设置二维码的解码信息入参
+    public static class NET_IN_SET_QRCODE_DECODE_INFO extends SdkStructure
+    {
+        public int                       	dwSize;
+        public int      					emCipher;                                // 加密方式, 参考枚举 NET_ENUM_QRCODE_CIPHER
+        public byte[]                       szKey = new byte[33];                    // 秘钥
+        public byte[]                       byReserved = new byte[3];                // 字节对齐
+
+        public NET_IN_SET_QRCODE_DECODE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 设置二维码的解码信息出参
+    public static class NET_OUT_SET_QRCODE_DECODE_INFO extends SdkStructure
+    {
+        public int                       dwSize;
+
+        public NET_OUT_SET_QRCODE_DECODE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 使用的加密算法
+    public static class NET_ENUM_QRCODE_CIPHER extends SdkStructure
+    {
+        public static final int NET_ENUM_QRCODE_CIPHER_UNKNOWN = 0;
+        public static final int NET_ENUM_QRCODE_CIPHER_AES256 = 1;                  // AES-256
+    }
+
+    //门禁卡数据操作事件
+    public static class ALARM_ACCESS_CARD_OPERATE_INFO extends SdkStructure
+    {
+        public int                   	dwSize;
+        public int   				    emActionType;                    			 // 门禁卡数据操作类型, 参考  NET_ACCESS_ACTION_TYPE
+        public byte[]                   szCardNo = new byte[NET_MAX_CARDINFO_LEN];   // 门禁卡卡号
+        public int    					emResult;                        			 // 操作结果,-1为未知,0为失败,1为成功,参考 NET_THREE_STATUS_BOOL
+        public int                      nChannelID;                      			 // 门通道号(或者门锁,门和门锁一一对应), 从0开始
+        public byte[]                   szCredentialHolder = new byte[16];           // 身份拥有者
+        public int						emType;                          			 // 用户类型, 参考 NET_ACCESS_METHOD
+        public byte[]                   szSerialNum = new byte[32];                  // 序列号
+        public int                      nIndex;                          		     // 某开门方式下的索引号
+        public int						nTaskID;						 			 // 任务ID
+        public int 	                    emErrorde;						 // 操作错误码 (只有当操作结果emResult=0时才有效)
+        public ALARM_ACCESS_CARD_OPERATE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    //门禁卡数据操作类型
+    public static class NET_ACCESS_ACTION_TYPE extends SdkStructure
+    {
+        public static final int NET_ACCESS_ACTION_TYPE_UNKNOWN  = 0;    			// 未知
+        public static final int NET_ACCESS_ACTION_TYPE_INSERT   = 1;   			 	// 插入
+        public static final int NET_ACCESS_ACTION_TYPE_UPDATE   = 2;    			// 更新
+        public static final int NET_ACCESS_ACTION_TYPE_REMOVE   = 3;    			// 删除
+    }
+
+    // 门禁未关事件详细信息
+    public static class ALARM_ACCESS_CTL_NOT_CLOSE_INFO extends SdkStructure
+    {
+        public int           	 	dwSize;
+        public int             	 	nDoor;                                  		// 门通道号
+        public byte[]            	szDoorName = new byte[NET_MAX_DOORNAME_LEN];    // 门禁名称
+        public NET_TIME        	 	stuTime;                                		// 报警事件发生的时间
+        public int             	 	nAction;                                		// 0:开始 1:停止
+        public int 		    	 	nEventID;				                		// 事件ID
+        public boolean			    bRealUTC;	// RealUTC 是否有效,bRealUTC 为 TRUE 时,用RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX          RealUTC;								// 事件发生的时间(标准UTC)
+        public ALARM_ACCESS_CTL_NOT_CLOSE_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 闯入事件详细信息
+    public static class ALARM_ACCESS_CTL_BREAK_IN_INFO extends SdkStructure
+    {
+        public int           		dwSize;
+        public int             		nDoor;                                  		// 门通道号
+        public byte[]            	szDoorName = new byte[NET_MAX_DOORNAME_LEN];    // 门禁名称
+        public NET_TIME        		stuTime;                                		// 报警事件发生的时间
+        public int 					nEventID;				                		//事件ID
+        public int                  emMethod;                                       // 闯入方式
+        public boolean				bRealUTC;	// RealUTC 是否有效,bRealUTC 为 TRUE 时,用RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX         	RealUTC;								// 事件发生的时间(标准UTC)
+        public byte[]               reserved=new byte[4];                           // 字节对齐
+
+        public ALARM_ACCESS_CTL_BREAK_IN_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁控制-重置密码(对应CLIENT_ControlDevice接口的 CTRLTYPE_CTRL_ACCESS_RESET_PASSWORD 命令)
+    public static class NET_CTRL_ACCESS_RESET_PASSWORD extends SdkStructure
+    {
+        public int                  dwSize;                                 		   // 结构体大小
+        public int                  nChannelID;                            			   // 门禁序号(从0开始)
+        public int         			emType;                                 		   // 密码类型, 参考 EM_ACCESS_PASSWORD_TYPE
+        public byte[]               szUserID = new byte[MAX_COMMON_STRING_32];         // 用户ID
+        public byte[]               szNewPassword = new byte[MAX_COMMON_STRING_32];    // 新密码
+
+        public NET_CTRL_ACCESS_RESET_PASSWORD() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁控制密码类型
+    public static class EM_ACCESS_PASSWORD_TYPE extends SdkStructure
+    {
+        public static final int EM_ACCESS_PASSWORD_OPENDOOR = 1;                 	  // 开门密码
+        public static final int EM_ACCESS_PASSWORD_ALARM = 2;                         // 防劫持报警密码
+    }
+
+    //设置对讲状态
+    public static class EM_CALL_STATUS extends SdkStructure
+    {
+        public static final int EM_CALL_STATUS_UNKNOWN = 0;
+        public static final int EM_CALL_STATUS_TRYING = 1;					// 通话请求正在处理事件
+        public static final int EM_CALL_STATUS_RINGING = 2;					// 主叫时,被叫回铃事件
+        public static final int EM_CALL_STATUS_PREPARECONNECTED = 3;		// 收到对端通话接通
+        public static final int EM_CALL_STATUS_CONNECTED = 4;				// 双方通话已经正式建立
+        public static final int EM_CALL_STATUS_CALLED = 5;					// 被叫来电事件
+        public static final int EM_CALL_STATUS_PREPARELEAVINGMESSAGE = 6;	// 收到留言请求事件
+        public static final int EM_CALL_STATUS_LEAVINGMESSAGECONNECTED = 7;	// 留言通话接通事件
+        public static final int EM_CALL_STATUS_CALLEND = 8;					// 呼叫结束事件
+        public static final int EM_CALL_STATUS_CALLTRANSFER = 9;			// 转移呼叫到其他设备
+        public static final int EM_CALL_STATUS_CALLTRANSFERCONNECTED = 10;	// 呼叫转移接通
+        public static final int EM_CALL_STATUS_HELD = 11;					// 呼叫保持
+        public static final int EM_CALL_STATUS_RESUME = 12;					// 呼叫召回
+        public static final int EM_CALL_STATUS_DND = 13;						// 免打扰
+        public static final int EM_CALL_STATUS_REMOTESDPCHANGE = 14;			// 远端SDP改变
+        public static final int EM_CALL_STATUS_REFUSE = 15;					// 拒接
+    }
+
+    // CLIENT_ControlDeviceEx接口的  DH_CTRL_SET_THIRD_CALLSTATUS 命令参数入参
+    public static class NET_IN_VTP_THIRDCALL_STATUS extends SdkStructure
+    {
+        public int                      dwSize;
+        public int						emCallStatus;           // 门禁对讲状态,参考EM_CALL_STATUS
+        public NET_IN_VTP_THIRDCALL_STATUS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ControlDeviceEx接口的  DH_CTRL_SET_THIRD_CALLSTATUS 命令参数出参
+    public static class NET_OUT_VTP_THIRDCALL_STATUS extends SdkStructure
+    {
+        public int              dwSize;
+        public byte[]			szCallID= new byte[64];           // 对讲id
+        public NET_OUT_VTP_THIRDCALL_STATUS() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 录像回放入参信息
+    public static class NET_IN_PLAY_BACK_BY_TIME_INFO extends SdkStructure
+    {
+        public NET_TIME            	  stStartTime;                       			// 开始时间
+        public NET_TIME            	  stStopTime;                        			// 结束时间
+        public Pointer                hWnd;                             		 	// 播放窗格, 可为NULL
+        public fDownLoadPosCallBack   cbDownLoadPos;                    			// 进度回调
+        public Pointer                dwPosUser;                        		 	// 进度回调用户信息
+        public fDataCallBack          fDownLoadDataCallBack;             			// 数据回调
+        public Pointer                dwDataUser;                        			// 数据回调用户信息
+        public int                    nPlayDirection;                    			// 播放方向, 0:正放; 1:倒放;
+        public int                    nWaittime;                         			// 接口超时时间, 目前倒放使用
+        public byte[]                 bReserved = new byte[1024];                   // 预留字节
+    }
+
+    // 录像回放出参信息
+    public static class NET_OUT_PLAY_BACK_BY_TIME_INFO extends SdkStructure
+    {
+        public byte[]                 bReserved = new byte[1024];                   // 预留字节
+    }
+
+    // 扩展模块掉线事件 对应事件类型 NET_ALARM_MODULE_LOST
+    public static class ALARM_MODULE_LOST_INFO extends SdkStructure
+    {
+        public int                    dwSize;
+        public NET_TIME               stuTime;                        				// 事件上报时间
+        public int                    nSequence;                      				// 扩展模块接的总线的序号(从0开始)
+        public int            		  emBusType;                      				// 总线类型, 参考枚举  NET_BUS_TYPE
+        public int                    nAddr;                          				// 掉线的扩展模块数目
+        public int[]                  anAddr = new int[MAX_ALARMEXT_MODULE_NUM];	// 掉线的扩展模块的序号(从0开始)
+        public byte[]				  szDevType = new byte[NET_COMMON_STRING_64];	// 设备类型 "SmartLock",是级联设备,当设备类型"AlarmDefence"接口序号为报警序号
+        public int					  bOnline;										// 在线情况   默认0。   0-不在线;  1-在线
+        public byte[]                 szSN = new byte[32];                       	// 无线配件序列号
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+
+        public ALARM_MODULE_LOST_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 总线类型
+    public static class NET_BUS_TYPE extends SdkStructure
+    {
+        public static final int NET_BUS_TYPE_UNKNOWN = 0;
+        public static final int NET_BUS_TYPE_MBUS = 1;                              // M-BUS总线
+        public static final int NET_BUS_TYPE_RS485 = 2;                             // RS-485总线
+        public static final int  NET_BUS_TYPE_CAN = 3;                              // CAN总线
+    }
+
+    //节假日记录信息
+    public static class NET_RECORDSET_HOLIDAY extends SdkStructure {
+        public int             dwSize;
+        public int             nRecNo;                                 // 记录集编号,只读
+        public int             nDoorNum;                               // 有效的的门数目
+        public int[]           sznDoors  = new int[NET_MAX_DOOR_NUM];              // 有权限的门序号,即CFG_CMD_ACCESS_EVENT配置CFG_ACCESS_EVENT_INFO的数组下标
+        public NET_TIME        stuStartTime;                           // 开始时间
+        public NET_TIME        stuEndTime;                             // 结束时间
+        public int             bEnable;                                // 假期使能
+        public byte[]          szHolidayNo = new byte[NET_COMMON_STRING_32];       // 假期编号
+        public byte[]    	   szHolidayName   =     new byte [NET_COMMON_STRING_128];    // 假期名称
+
+        public NET_RECORDSET_HOLIDAY() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测)对应的规则配置
+    public static class NET_FLOATINGOBJECT_DETECTION_RULE_INFO extends SdkStructure
+    {
+        public int					nDetectRegionPoint;										// 检测区顶点数
+        public POINTCOORDINATE[]	stuDetectRegion=(POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);									// 检测区
+        public float				fAlarmThreshold;										// 报警阈值。当检测区域内的漂浮物占比超过阈值时则产生报警;单位:%,取值范围(0, 100]
+        public int				    nAlarmInterval;											// 报警时间间隔。(单位:秒)。取值范围[60, 86400]
+        public int				    bDataUpload;											// 是否上报实时数据。
+        public int 				    nUpdateInterval;										// 实时数据上报间隔。(单位:秒)。取值范围[60, 86400]
+        public byte[]				byReserved=new byte[4096]; 										// 保留字节
+    };
+
+    // 堆积物点阵图信息
+    public static class NET_FLOATINGOBJECT_MASK_INFO extends SdkStructure
+    {
+        public int            nColNum;                     // 点阵列数
+        public int            nOffset;                     // 偏移
+        public int            nLength;                     // 长度
+        public byte[]		  byReserved=new byte[508];    // 预留字段
+    };
+
+    // 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO extends SdkStructure
+    {
+        public int                 	nChannelID;                         // 通道号
+        public int                 	nAction;                       		// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              	szName = new byte[128];             // 事件名称
+        public double              	PTS;                            	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;								// 事件发生的时间
+        public int					nEventID;							// 事件ID
+        public NET_EVENT_FILE_INFO  stuFileInfo;                        // 事件对应文件信息
+        public NET_POINT[]          stuDetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM); // 规则检测区域
+        public int                 	nDetectRegionNum;                   // 规则检测区域顶点数
+        public int                 	nImageIndex;                        // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int               	dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 	nSourceIndex;                       // 事件源设备上的index,-1表示数据无效
+        public byte[]               szSourceDevice = new byte[MAX_PATH];           // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int					nOccurrenceCount;                   // 事件触发累计次数
+        public int                 	nObjectNum;                         // 检测到的物体个数
+        public NET_MSG_OBJECT[]    	stuObjects = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(HDBJ_MAX_OBJECTS_NUM);   // 检测到的物体
+        public EVENT_INTELLI_COMM_INFO   stuIntelliCommInfo;         	// 智能事件公共信息
+        public byte[]				szPresetName = new byte[64];		// 事件触发的预置名称
+        public int					bExistFloatingObject;				// 是否存在漂浮物
+        public int					emEventType;						// 事件数据类型,详见NET_EM_EVENT_DATA_TYPE
+        public float				fCurrentRatio;						// 漂浮物当前占比(相对于检测区域)单位:%, 取值范围[0, 100]
+        public float				fAlarmThreshold;					// 报警阈值。漂浮物相对于检测区域的占比, 取值范围[0, 100]
+        public NET_INTELLIGENCE_IMAGE_INFO	stuOriginalImage;			// 原始图
+        public NET_INTELLIGENCE_IMAGE_INFO	stuSceneImage;				// 球机变到最小倍下的抓图
+        public NET_FLOATINGOBJECT_MASK_INFO stuObjectMaskInfo;         // 堆积物点阵图信息
+        /**
+         	用来区分是普通漂浮物场景还是泡沫检测场景 {@link com.netsdk.lib.enumeration.EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE}
+         */
+        public	int		emDetectSenceType;
+        public	int		nImageInfoNum;						    // 图片信息个数
+        public	Pointer	pstuImageInfo;						    //图片信息数组, refer to {@link NET_IMAGE_INFO_EX3} 
+        public	byte[]	byReserved=new byte[3428 - POINTERSIZE];//保留字节,留待扩展.
+    }
+
+    // 事件类型 EVENT_IVS_WATER_LEVEL_DETECTION(水位检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_WATER_LEVEL_DETECTION_INFO extends SdkStructure
+    {
+        public int					nChannelID;							// 通道号
+        public int					nAction;							// 0:脉冲 1:开始 2:停止
+        public byte[]              	szName = new byte[MAX_EVENT_NAME];  // 事件名称
+        public double              	PTS;                            	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;								// 事件发生的时间
+        public int					nEventID;							// 事件ID
+        public NET_EVENT_FILE_INFO  stuFileInfo;                        // 事件对应文件信息
+        public EVENT_INTELLI_COMM_INFO    stuIntelliCommInfo;			// 智能事件公共信息
+        public byte[]				szPresetName = new byte[64];		// 预置点名称
+        public byte[]				szObjectUUID = new byte[48];		// 智能物体全局唯一物体标识
+        public int					emEventType;						// 事件数据类型,详见NET_EM_EVENT_DATA_TYPE
+        public int					emStatus;							// 水位状态,详见NET_EM_WATER_LEVEL_STATUS
+        public NET_WATER_RULER		stuWaterRuler;						// 水位尺
+        public NET_INTELLIGENCE_IMAGE_INFO	stuOriginalImage;			// 原始图
+        public NET_INTELLIGENCE_IMAGE_INFO	stuSceneImage;				// 球机变到最小倍下的抓图
+        public byte[]				byReserved = new byte[1024];        // 保留字节
+    }
+
+    // 全景广角图
+    public static class SCENE_IMAGE_INFO_EX extends SdkStructure
+    {
+        public int	   nOffSet;					// 在二进制数据块中的偏移
+        public int	   nLength;					// 图片大小,单位字节
+        public int	   nWidth;					// 图片宽度(像素)
+        public int	   nHeight;					// 图片高度(像素)
+        public byte[]  szFilePath = new byte[260];	// 全景图片路径
+        public byte[]  byReserved = new byte[512];	// 预留字节
+    }
+
+
+    // 水果类型
+    public static class EM_FRUIT_TYPE extends SdkStructure
+    {
+        public static final int EM_FRUIT_TYPE_UNKNOWN = 0;					// 未知
+        public static final int EM_FRUIT_TYPE_GREEN_TANGERINE = 1;			// 青橘
+        public static final int EM_FRUIT_TYPE_YELLOW_TANGERINE_ORANGE = 2;	// 黄橘,橙类
+        public static final int EM_FRUIT_TYPE_GRAPEFRUIT = 3;				// 柚子
+        public static final int EM_FRUIT_TYPE_LEMON = 4;					// 柠檬
+        public static final int EM_FRUIT_TYPE_WATERMELON = 5;				// 西瓜
+        public static final int EM_FRUIT_TYPE_BANANA = 6;					// 香蕉
+        public static final int EM_FRUIT_TYPE_RED_APPLE = 7;				// 红苹果
+        public static final int EM_FRUIT_TYPE_GREEN_APPLE = 8;				// 青苹果
+        public static final int EM_FRUIT_TYPE_MUSKMELON = 9;				// 香瓜
+        public static final int EM_FRUIT_TYPE_HAMIMELON = 10;				// 哈密瓜
+        public static final int EM_FRUIT_TYPE_PEAR = 11;					// 梨
+        public static final int EM_FRUIT_TYPE_KIWI = 12;					// 奇异果
+        public static final int EM_FRUIT_TYPE_PAPAYA = 13;					// 木瓜
+        public static final int EM_FRUIT_TYPE_PINEAPPLE = 14;				// 菠萝
+        public static final int EM_FRUIT_TYPE_MANGO = 15;					// 芒果
+        public static final int EM_FRUIT_TYPE_LONGAN = 16;					// 龙眼
+        public static final int EM_FRUIT_TYPE_GINSENG_FRUIT = 17;			// 人参果
+        public static final int EM_FRUIT_TYPE_POMEGRABATE = 18;				// 石榴
+        public static final int EM_FRUIT_TYPE_COCONUT = 19;					// 椰子
+        public static final int EM_FRUIT_TYPE_CREAM_JUJUBE = 20;			// 奶油枣
+        public static final int EM_FRUIT_TYPE_WINTER_JUJUBE = 21;			// 冬枣
+        public static final int EM_FRUIT_TYPE_AVOCADO = 22;					// 牛油果
+        public static final int EM_FRUIT_TYPE_RED_PLUM = 23;				// 红布林
+        public static final int EM_FRUIT_TYPE_PITAYA = 24;					// 火龙果
+        public static final int EM_FRUIT_TYPE_GUAVA = 25;					// 芭乐
+        public static final int EM_FRUIT_TYPE_PERSIMMON = 26;				// 柿子
+        public static final int EM_FRUIT_TYPE_YACON = 27;					// 雪莲果
+    }
+
+
+    // 检测到的水果信息
+    public static class NET_CANDIDATE_FRUIT_INFO extends SdkStructure
+    {
+        public int				nSimilarity;				// 相似度
+        public int				emFruitType;				// 检测到的水果类型,参考EM_FRUIT_TYPE
+        public byte[]  byReserved = new byte[1024];	// 预留字节
+    }
+
+    // 事件类型 EVENT_IVS_WEIGHING_PLATFORM_DETECTION(称重平台检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO extends SdkStructure
+    {
+        public int                 	nChannelID;							// 通道号
+        public int                	nAction;							// 0:脉冲 1:开始 2:停止
+        public byte[]               szName = new byte[MAX_EVENT_NAME];	// 事件名称
+        public double              	PTS;								// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;								// 事件发生的时间
+        public int                 	nEventID;							// 事件ID
+
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;          // 智能事件公共信息
+        public int					nCandidateFruitNum;					// 检测到的水果信息个数
+        public NET_CANDIDATE_FRUIT_INFO[]	stuFruitInfos = (NET_CANDIDATE_FRUIT_INFO[])new NET_CANDIDATE_FRUIT_INFO().toArray(100);// 检测到的水果信息
+        public SCENE_IMAGE_INFO_EX			stuSceneImage;				// 全景图
+        public SCENE_IMAGE_INFO_EX			stuFruitImage;				// 水果抠图
+        public byte[]          		byReserved = new byte[1024];		// 保留字节
+    }
+
+    // 安全帽佩戴状态
+    public static class EM_WORK_HELMET_STATE extends SdkStructure
+    {
+        public static final int EM_HELMET_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_HELMET_STATE_NOTWEAR = 1;		// 不带安全帽
+        public static final int EM_HELMET_STATE_WEAR = 2;			// 有带安全帽
+    }
+
+    // 安全帽属性
+    public static class NET_HELMET_ATTRIBUTE extends SdkStructure
+    {
+        public int 					emHelmetState;								// 安全帽佩戴状态,参考EM_WORK_HELMET_STATE
+        public int 					emHelmetColor;								// 安全帽颜色,参考EM_CLOTHES_COLOR
+        public byte[]          		byReserved = new byte[1024];		// 保留字节
+    }
+
+    // 工作服穿戴状态
+    public static class EM_WORKCLOTHES_STATE extends SdkStructure
+    {
+        public static final int EM_WORKCLOTHES_STATE_UNKNOWN = 0;		// 未知
+        public static final int EM_WORKCLOTHES_STATE_NOTWEAR = 1;		// 无工作服
+        public static final int EM_WORKCLOTHES_STATE_WEAR = 2;			// 有工作服
+    }
+
+    //工作服合法状态
+    public static class EM_CLOTHES_LEGAL_STATE extends SdkStructure{
+    	public static final int EM_CLOTHES_LEGAL_STATE_UNKNOWN = 0;		    // 未知
+        public static final int EM_CLOTHES_LEGAL_STATE_WRONGFUL = 1;		// 不合法
+        public static final int EM_CLOTHES_LEGAL_STATE_LEGAL = 2;			// 合法
+    }
+
+    // 工作服属性
+    public static class NET_WORKCLOTHES_ATTRIBUTE extends SdkStructure
+    {
+        public int					emWorkClothesState;							// 工作服穿戴状态,参考EM_WORKCLOTHES_STATE
+        public int					emWorkClothColor;							// 工作服颜色,参考EM_CLOTHES_COLOR
+        public int                  emWorkClothesLegalState;                    // 工作服合法状态,参考EM_CLOTHES_LEGAL_STATE
+        public byte[]         		byReserved = new byte[1020];		// 保留字节
+    }
+
+   // 工作裤穿戴状态
+    public static class EM_WORKPANTS_STATE extends SdkStructure{
+    	 public static final int EM_WORKPANTS_STATE_UNKNOWN = 0;		// 未知
+         public static final int EM_WORKPANTS_STATE_NOTWEAR = 1;		// 没有
+         public static final int EM_WORKPANTS_STATE_WEAR = 2;			// 有
+    }
+
+    //工作裤属性
+    public static class NET_WORKPANTS_ATTRIBUTE extends SdkStructure{
+    	public int				   emWorkPantsState;							// 工作裤穿戴状态,参考EM_WORKPANTS_STATE
+    	public int				   emWorkPantsColor;							// 工作裤颜色,参考EM_CLOTHES_COLOR
+    	public byte[]			   byReserved = new byte[1024];			// 预留字节
+    }
+
+    // 事件类型 EVENT_IVS_WORKCLOTHES_DETECT(工装(安全帽/工作服等)) 对应的数据块描述信息
+    public static class DEV_EVENT_WORKCLOTHES_DETECT_INFO extends SdkStructure
+    {
+
+        public int                 			nChannelID;                         		// 通道号
+        public int							nAction;									// 0:脉冲 1:开始 2:停止
+        public byte[]                 		szName = new byte[MAX_EVENT_NAME];			// 事件名称
+        public double              			PTS;                                		// 时间戳(单位是毫秒)
+        public NET_TIME_EX         			UTC;                                		// 事件发生的时间
+        public int                 			nEventID;                           		// 事件ID
+
+        public int							emClassType;								// 智能事件所属大类,详见EM_SCENE_CLASS_TYPE
+        public int							nRuleID;									// 智能事件规则编号,用于标示哪个规则触发的事件
+        public int							nObjectID;									// 物体ID
+        public int							nGroupID;									// 事件组ID,一次检测的多个nGroupID相同
+        public int							nCountInGroup;								// 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
+        public int							nIndexInGroup;								// 一个事件组内的抓拍序号,从1开始
+        public SCENE_IMAGE_INFO				stuSceneImage;           					// 全景大图信息
+        public HUMAN_IMAGE_INFO    			stuHumanImage;         						// 人体小图信息
+        public NET_HELMET_ATTRIBUTE			stuHelmetAttribute;							// 安全帽属性
+        public NET_WORKCLOTHES_ATTRIBUTE	stuWorkClothesAttribute;					// 工作服属性
+        public NET_WORKPANTS_ATTRIBUTE      stuWorkPantsAttribute;                      // 工作裤属性
+        public int                          nAlarmType;                                 // 不规范报警类型 0-未知 1-防护服不规范 2: 工作服不规范3:安全帽不规范4:安全帽和工作服不规范
+        public byte					        szSourceID[] = new byte[32];                // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+        public int					        emRuleType;			                        // 报警规则类型
+        public NET_IMAGE_INFO_EX2           stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                          nImageInfoNum;                                  //图片信息个数
+        /**
+         * 普通帽子相关属性状态信息
+         */
+        public			NET_NORMALHAT_ATTRIBUTE					stuNormalHat=new NET_NORMALHAT_ATTRIBUTE();
+        /**
+         * 口罩相关属性状态信息
+         */
+        public			NET_MASK_ATTRIBUTE					stuMask=new NET_MASK_ATTRIBUTE();
+        /**
+         * 围裙相关属性状态信息
+         */
+        public			NET_APRON_ATTRIBUTE					stuApron=new NET_APRON_ATTRIBUTE();
+        /**
+         * 手套相关属性状态信息
+         */
+        public			NET_GLOVE_ATTRIBUTE					stuGlove=new NET_GLOVE_ATTRIBUTE();
+        /**
+         * 靴子相关属性状态信息
+         */
+        public			NET_BOOT_ATTRIBUTE					stuBoot=new NET_BOOT_ATTRIBUTE();
+        /**
+         * 鞋套相关属性状态信息
+         */
+        public			NET_SHOESCOVER_ATTRIBUTE					stuShoesCover=new NET_SHOESCOVER_ATTRIBUTE();
+        /**
+         * 无帽子相关属性状态信息
+         */
+        public			NET_NOHAT_ATTRIBUTE					stuNoHat=new NET_NOHAT_ATTRIBUTE();
+        /**
+         * 防护面罩相关属性状态信息
+         */
+        public       NET_PROHELMET_ATTRIBUTE  stuProhelmet = new NET_PROHELMET_ATTRIBUTE();
+        /**
+         * 事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    	public NET_FIREPROOF_CLOTHES   stuFireProofClothes = new NET_FIREPROOF_CLOTHES();// 防火衣相关属性状态信息
+        public Pointer				   pstObjectInfo;								// 物体信息数据  ,对应NET_MSG_OBJECT_EX2数组
+    	public int					   nObjectNum;									// 物体信息数
+        public NET_GLASSES_RELATED_INFO      stuGlassesInfo = new NET_GLASSES_RELATED_INFO();// 眼镜相关属性状态信息                
+        /**
+         * 预留字节
+         */
+        public byte[]					byReserved = new byte[620-POINTERSIZE];
+    }
+    // 智能事件抓图信息
+    public static class NET_INTELLIGENCE_IMAGE_INFO extends SdkStructure
+    {
+        public int				nOffSet;					// 在二进制数据块中的偏移
+        public int				nLength;					// 图片大小,单位字节
+        public int				nWidth;						// 图片宽度(像素)
+        public int				nHeight;					// 图片高度(像素)
+        public byte[]			byReserved = new byte[48];	// 预留字节
+    }
+
+    // 事件类型 EVENT_IVS_RADAR_SPEED_LIMIT_ALARM(雷达限速报警事件)对应的数据块描述信息
+    public static class DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                                     // 通道号
+        public int                 		nAction;                                        // 0:脉冲 1:开始 2:停止
+        public byte[]              		szAddress = new byte[32];                       // 设备IP地址
+        public int                 		nSpeed;                                         // 时速, 单位km/h
+        public NET_TIME_EX         		UTC;                                            // 事件发生时间
+
+        public int                 		nGroupID;                                       // 事件组ID
+        public int                 		nCountInGroup;                                  // 一个事件组内的抓拍张数
+        public int                 		nIndexInGroup;                                  // 一个事件组内的抓拍序号,测速过程第n张图片,从1开始
+        public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;                      	    // 智能事件公共信息
+        public byte[]                	byReserved = new byte[1024];                    // 保留字节
+    }
+
+    /*************************************************************************************************
+     * 							门禁用户信息操作:增、删、改、查、清空
+     ************************************************************************************************/
+    // 人员信息操作类型
+    public static class NET_EM_ACCESS_CTL_USER_SERVICE extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_CTL_USER_SERVICE_INSERT = 0;              // 添加/更新人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_INSERT , pstOutParam = NET_OUT_ACCESS_USER_SERVICE_INSERT
+        public static final int NET_EM_ACCESS_CTL_USER_SERVICE_GET = 1;                 // 获取人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_GET , pstOutParam = NET_OUT_ACCESS_USER_SERVICE_GET
+        public static final int NET_EM_ACCESS_CTL_USER_SERVICE_REMOVE = 2;              // 删除人员信息,包含所有授权信息 pstInParam = NET_IN_ACCESS_USER_SERVICE_REMOVE , pstOutParam = NET_OUT_ACCESS_USER_SERVICE_REMOVE
+        public static final int NET_EM_ACCESS_CTL_USER_SERVICE_CLEAR = 3;               // 清空所有人员信息, pstInParam = NET_IN_ACCESS_USER_SERVICE_CLEAR , pstOutParam = NET_OUT_ACCESS_USER_SERVICE_CLEAR
+    }
+
+    // 新增或更新用户信息入参
+    public static class NET_IN_ACCESS_USER_SERVICE_INSERT extends SdkStructure
+    {
+        public int                   dwSize;	                                		// 结构体大小
+        public int                   nInfoNum;                                   		// 用户信息数量
+        public Pointer       		 pUserInfo;                                  		// 用户信息,对应数组 NET_ACCESS_USER_INFO,内存由用户申请释放,申请大小不小于nInfoNum*sizeof(NET_ACCESS_USER_INFO);
+
+        public NET_IN_ACCESS_USER_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 新增或更新用户信息出参
+    public static class NET_OUT_ACCESS_USER_SERVICE_INSERT extends SdkStructure
+    {
+        public int                   dwSize;	                                    	// 结构体大小
+        public int                   nMaxRetNum;                                 		// 申请的最大返回的错误信息数量,不小于NET_IN_ACCESS_USER_SERVICE_INSERT中nInfoNum
+        public Pointer        		 pFailCode;                                 		// 对应 FAIL_CODE, 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_INSERT中nInfoNum
+
+        public NET_OUT_ACCESS_USER_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 插入失败时,对应插入的每一项的结果
+    public static class FAIL_CODE extends SdkStructure
+    {
+        public int        			 nFailCode;                                 		// 对应 NET_EM_FAILCODE
+    }
+
+    // 获取用户信息入参
+    public static class NET_IN_ACCESS_USER_SERVICE_GET extends SdkStructure
+    {
+        public int                   dwSize;	                                    	// 结构体大小
+        public int                   nUserNum;                                   		// 查询的数量
+        public USERID[]			     szUserIDs = new USERID[100];	                    // 用户ID列表
+        public USERIDEX[]			 szUserIDEx = new USERIDEX[100];	                // 用户ID扩展,当前只支持32位有效值下发
+    	public int					 bUserIDEx;									        // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+
+        public NET_IN_ACCESS_USER_SERVICE_GET() {
+            for(int i=0;i<szUserIDs.length;i++){
+                szUserIDs[i]=new USERID();
+            }
+            for (int i = 0; i < szUserIDEx.length; i++) {
+            	szUserIDEx[i]=new USERIDEX();
+			}
+            this.dwSize = this.size();
+
+        }
+    }
+
+    public static class USERID extends SdkStructure
+    {
+        public byte[]				szUserID = new byte[32];				            // 用户ID
+    }
+    
+    public static class USERIDEX extends SdkStructure
+    {
+        public byte[]				szUserIDEx = new byte[128];				            // 用户ID扩展,当前只支持32位有效值下发
+    }
+
+    // 获取用户信息出参
+    public static class NET_OUT_ACCESS_USER_SERVICE_GET extends SdkStructure
+    {
+        public int                  dwSize;	                                    		// 结构体大小
+        public int                  nMaxRetNum;                                 		// 查询返回的最大数量
+        public Pointer       		pUserInfo;                                 		    // 用户信息,对应数组 NET_ACCESS_USER_INFO,内存由用户申请释放,申请大小不小于 nUserNum*sizeof(NET_ACCESS_USER_INFO)                                                                           // 返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
+        public Pointer            	pFailCode;                                  		// 对应FAIL_CODE, 查询失败时,内存由用户申请释放,对应查询的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_GET中nUserNum
+
+        public NET_OUT_ACCESS_USER_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除指定ID人员信息入参
+    public static class NET_IN_ACCESS_USER_SERVICE_REMOVE extends SdkStructure
+    {
+        public int                  dwSize;	                                    		// 结构体大小
+        public int                  nUserNum;                                   		// 删除的数量
+        public USERID[]			    szUserIDs = (USERID[])new USERID().toArray(100);    // 用户ID列表
+        public USERIDEX[]			szUserIDEx = (USERIDEX[])new USERIDEX().toArray(100);    // 用户ID扩展,当前只支持32位有效值下发
+    	public int					bUserIDEx;									        // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+        public NET_IN_ACCESS_USER_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除指定ID人员信息出参
+    public static class NET_OUT_ACCESS_USER_SERVICE_REMOVE extends SdkStructure
+    {
+        public int                  dwSize;	                                    	   // 结构体大小
+        public int                  nMaxRetNum;                                        // 返回的最大数量,不小于 NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
+        public Pointer            	pFailCode;                          			   // 对应FAIL_CODE, 插入失败时,内存由用户申请释放,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_USER_SERVICE_REMOVE中nUserNum
+
+        public NET_OUT_ACCESS_USER_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除所有人员信息入参
+    public static class NET_IN_ACCESS_USER_SERVICE_CLEAR extends SdkStructure
+    {
+        public int                  dwSize;	                                    	  // 结构体大小
+
+        public NET_IN_ACCESS_USER_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除所有人员信息出参
+    public static class NET_OUT_ACCESS_USER_SERVICE_CLEAR extends SdkStructure
+    {
+        public int                 dwSize;	                                    	// 结构体大小
+
+        public NET_OUT_ACCESS_USER_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 用户类型
+    public static class NET_ENUM_USER_TYPE extends SdkStructure
+    {
+        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;                  		// 
+        public static final int NET_ENUM_USER_TYPE_VIP = 4;                     		// 
+        public static final int NET_ENUM_USER_TYPE_HANDICAP = 5;               			// 
+    }
+
+    // 用户信息
+    public static class NET_ACCESS_USER_INFO extends SdkStructure
+    {
+        public byte[]				szUserID = new byte[NET_MAX_USERID_LEN];				// 用户ID
+        public byte[]				szName = new byte[MAX_COMMON_STRING_32];				// 人员名称
+        public int          		emUserType;                                 			// 用户类型, 对应枚举  NET_ENUM_USER_TYPE
+        public int                  nUserStatus;                                			// 用户状态, 0 正常, 1 冻结
+        public int                  nUserTime;                                  			// 来宾卡的通行次数
+        public byte[]			    szCitizenIDNo = new byte[MAX_COMMON_STRING_32];			// 证件号码
+        public byte[]               szPsw = new byte[NET_MAX_CARDPWD_LEN];                  // UserID+密码开门时密码
+        public int                  nDoorNum;                                   			// 有效的门数目;
+        public int[]                nDoors = new int[NET_MAX_DOOR_NUM];                     // 有权限的门序号,即 CFG_CMD_ACCESS_EVENT 配置的数组下标
+        public int                  nTimeSectionNum;                            			// 有效的的开门时间段数目
+        public int[]                nTimeSectionNo = new int[NET_MAX_TIMESECTION_NUM];      // 开门时间段索引,即 CFG_ACCESS_TIMESCHEDULE_INFO 的数组下标
+        public int				    nSpecialDaysScheduleNum;								// 假日计划表示数量
+        public int[]				nSpecialDaysSchedule = new int[MAX_ACCESSDOOR_NUM];		// 假日计划标识, 即 NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE 配置的下标
+        public NET_TIME             stuValidBeginTime = new NET_TIME();                     // 开始有效期
+        public NET_TIME             stuValidEndTime = new NET_TIME();                       // 结束有效期
+        public int                  bFirstEnter;                                			// 是否拥有首卡权限, 1-true, 0-false
+        public int                  nFirstEnterDoorsNum;                        			// 拥有首用户权限的门数量
+        public int[]                nFirstEnterDoors = new int[NET_MAX_DOOR_NUM];           // 拥有首用户权限的门序号,bFirstEnter为TRUE时有效,-1表示全通道
+        public int    				emAuthority;                                			// 用户权限,可选, 对应枚举   NET_ATTENDANCE_AUTHORITY
+        public int                  nRepeatEnterRouteTimeout;                   			// 反潜超时时间
+        public int                  nFloorNum;                                              // 有效的楼层数量
+        public ACCESS_FLOOR_INFO[]  szFloorNos = (ACCESS_FLOOR_INFO[])new ACCESS_FLOOR_INFO().toArray(MAX_ACCESS_FLOOR_NUM); // 楼层号列表
+        public int			        nRoom;												    // 房间个数
+        public ROOM_INFO[]		    szRoomNos = (ROOM_INFO[])new ROOM_INFO().toArray(MAX_ROOMNUM_COUNT); 	    			 // 房间号列表
+        public boolean			    bFloorNoExValid;										// szFloorNoEx 是否有效
+        public int                  nFloorNumEx;											// 有效的楼层数量扩展
+        public FloorNoEx_INFO[]     szFloorNoEx=(FloorNoEx_INFO[])new FloorNoEx_INFO().toArray(256);	// 楼层号扩展
+        public byte[]				szClassInfo=new byte[256];										// 班级信息
+        public byte[]				szStudentNo=new byte[64];										// 学号
+        public byte[]				szCitizenAddress=new byte[128];									// 证件地址
+        public NET_TIME				stuBirthDay;											// 出生日期(年月日有效)
+        public int                  emSex;                             						// 性别,枚举值参考NET_ACCESSCTLCARD_SEX
+        public byte[]				szDepartment=new byte[128];										// 部门
+        public byte[]				szSiteCode=new byte[32];											// 站点码
+        public byte[]				szPhoneNumber=new byte[32];										// 手机号码
+        public byte[]				szDefaultFloor=new byte[8];										// 默认楼层号
+        public boolean				bFloorNoEx2Valid;										// 是否使用扩展结构体
+        /**
+         * 对应结构体,{@link NET_FLOORS_INFO}
+         */
+        public Pointer			    pstuFloorsEx2;											// 楼层号(再次扩展)
+        public boolean				bHealthStatus;										// 人员健康状态 
+        public int					nUserTimeSectionsNum;								// 用户自身的开门时间段校验有效个数
+        // 针对用户自身的开门时间段校验
+        public USER_TIME_SECTION[]	szUserTimeSections=(USER_TIME_SECTION[]) new USER_TIME_SECTION().toArray(6);
+        public byte[]				szECType=new byte[64];										// 保留字段
+        /**
+         * EM_TYPE_OF_CERTIFICATE
+         */
+        public int		            emTypeOfCertificate;				// 证件类型
+        public byte[]				szCountryOrAreaCode=new byte[8];	// 国籍或所在地区代码,符合GB/T2659-2000的规范
+        public byte[]				szCountryOrAreaName=new byte[64];	// 国籍或所在地区名称,符合GB/T2659-2000的规范
+        public byte[]				szCertificateVersionNumber=new byte[64];// 永久居住证的证件版本号
+        public byte[]				szApplicationAgencyCode=new byte[64];	// 申请受理机关代码
+        public byte[]				szIssuingAuthority=new byte[64];		// 签发机关
+        public byte[]				szStartTimeOfCertificateValidity=new byte[64];	// 证件有效开始时间
+        public byte[]				szEndTimeOfCertificateValidity=new byte[64];	// 证件有效结束时间
+        public int					nSignNum;												// 证件签发次数
+        public byte[]				szActualResidentialAddr=new byte[108];		// 实际家庭住址
+        /**
+         工作班别
+         */
+        public			byte[]					szWorkClass=new byte[256];
+        /**
+         有效时间段内启动时间
+         */
+        public NET_TIME stuStartTimeInPeriodOfValidity=new NET_TIME();
+        /**
+         测试项目    {@link com.netsdk.lib.enumeration.EM_TEST_ITEMS }
+         */
+        public			int					emTestItems;
+        /**
+         szNameEx 是否有效,为TRUE时,使用szNameEx字段
+         */
+        public			int					bUseNameEx;
+        /**
+         人员名称扩展
+         */
+        public			byte[]					szNameEx=new byte[128];
+        /**
+         是否使用用户信息结构体
+         */
+        public			int					bUserInfoExValid;
+        /**
+         扩展用户信息  NET_ACCESS_USER_INFO_EX
+         */
+        public			Pointer					pstuUserInfoEx;
+        /**
+         授权时间、过期时间,时间单位: 小时
+         */
+        public			int					nAuthOverdueTime;
+        /**
+         人员健康状态(添加)      {@link com.netsdk.lib.enumeration.EM_GREENCNHEALTH_STATUS}
+         */
+        public			int					emGreenCNHealthStatus;
+        /**
+         电子通行证状态(添加)     {@link com.netsdk.lib.enumeration.EM_ALLOW_PERMIT_FLAG}
+         */
+        public			int					emAllowPermitFlag;
+        /**
+        假日组HolidayGroup索引值
+         */
+        public			int					nHolidayGroupIndex;
+        /**
+         信息更新时间,UTC时间
+         */
+        public com.netsdk.lib.structure.NET_TIME stuUpdateTime=new com.netsdk.lib.structure.NET_TIME();
+        /**
+         * 用户的门通道起始有效期,每个通道设置一个有效期,数组元素与门通道一一对应
+         */
+        public byte[] szValidFroms = new byte[8 * 24];
+        /**
+         * 用户的门通道起始有效期有效个数, 最大值为8
+         */
+        public int nValidFromsNum;
+        /**
+         * 用户的门通道截止有效期有效个数, 最大值为8
+         */
+        public int nValidTosNum;
+        /**
+         * 用户的门通道截止有效期,每个通道设置一个有效期,数组元素与门通道一一对应
+         */
+        public byte[] szValidTos = new byte[8 * 24];
+        /**
+         * 用户ID扩展,当前只支持32位有效值下发
+         */
+        public byte[] szUserIDEx = new byte[128];
+        /**
+         * szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+         */
+        public int bUserIDEx;
+        /**
+         * 金融业务库的人员权限,-1:表示未知, 0:存取人, 1:复核人, 2:管理员
+         */
+        public int nFinancialUserType;
+        /**
+         * 自定义人员类型枚举 0 : 未知,1:轻工类型
+         */
+        public int nCustomUserType;
+        /**
+         * 自定义类型的枚举 0默认值 1学生 2教师 3保安 4保障人员 5其他 6家属 7受限用户 8临时 9临时人员 10维修工 11博士 12硕士 13本科
+         * 14特定学生 15在编 16校聘 17特殊岗位 19一般 20特殊 21蒋钱湾居民 22立信公寓长城别苑居民 23社区居民 24常住户 25租户
+         * 26教职工家属 27预留1 28预留2 29预留3 30预留4 31预留5 32预留6 33预留7 34预留8 35预留9 36预留10 37预留11
+         * 38预留12 39预留13 40预留14
+         */
+        public int nCustomUserTypeValue;
+        /**
+         * 允许签入的时间点
+         */
+        public com.netsdk.lib.structure.NET_TIME_EX stuAllowCheckInTime = new com.netsdk.lib.structure.NET_TIME_EX();
+        /**
+         * 允许签出的时间点
+         */
+        public com.netsdk.lib.structure.NET_TIME_EX stuAllowCheckOutTime = new com.netsdk.lib.structure.NET_TIME_EX();
+        /**
+         * 扩展用户信息V2, refer to {@link NET_ACCESS_USER_INFO_EX2}
+         */
+        public Pointer pstuUserInfoEx2;
+        /**
+         * 是否使用用户信息结构体V2
+         */
+        public int bUserInfoEx2Valid;
+        /**
+         * 保留字段
+         */
+        public byte[] byReserved = new byte[660 - 2 * POINTERSIZE];
+
+        public NET_ACCESS_USER_INFO() {
+        }
+    }
+    public static class FloorNoEx_INFO extends SdkStructure{
+        public byte[] szFloorNoEx=new byte[4];
+    }
+    public static class ACCESS_FLOOR_INFO extends SdkStructure
+    {
+        public byte[]              szFloorNo = new byte[NET_COMMON_STRING_16];   			// 楼层号
+    }
+
+    public static class ROOM_INFO extends SdkStructure
+    {
+        public byte[]		       szRoomNo = new byte[NET_COMMON_STRING_16]; 	 			// 房间号
+    }
+
+    // 操作错误码
+    public static class NET_EM_FAILCODE extends SdkStructure
+    {
+        public static final int NET_EM_FAILCODE_NOERROR = 0;                                // 没有错误
+        public static final int NET_EM_FAILCODE_UNKNOWN = 1;                                // 未知错误
+        public static final int NET_EM_FAILCODE_INVALID_PARAM = 2;                          // 参数错误
+        public static final int NET_EM_FAILCODE_INVALID_PASSWORD = 3;                       // 无效密码
+        public static final int NET_EM_FAILCODE_INVALID_FP = 4;                             // 无效信息数据
+        public static final int NET_EM_FAILCODE_INVALID_FACE = 5;                           // 无效人脸数据
+        public static final int NET_EM_FAILCODE_INVALID_CARD = 6;                           // 无效卡数据
+        public static final int NET_EM_FAILCODE_INVALID_USER = 7;                           // 无效人数据
+        public static final int NET_EM_FAILCODE_FAILED_GET_SUBSERVICE = 8;                  // 能力集子服务获取失败
+        public static final int NET_EM_FAILCODE_FAILED_GET_METHOD = 9;                      // 获取组件的方法集失败
+        public static final int NET_EM_FAILCODE_FAILED_GET_SUBCAPS = 10;                    // 获取资源实体能力集失败
+        public static final int NET_EM_FAILCODE_ERROR_INSERT_LIMIT = 11;                    // 已达插入上限
+        public static final int NET_EM_FAILCODE_ERROR_MAX_INSERT_RATE = 12;                 // 已达最大插入速度
+        public static final int NET_EM_FAILCODE_FAILED_ERASE_FP = 13;						// 清除信息数据失败
+        public static final int NET_EM_FAILCODE_FAILED_ERASE_FACE = 14;						// 清除人脸数据失败
+        public static final int NET_EM_FAILCODE_FAILED_ERASE_CARD = 15;						// 清除卡数据失败
+        public static final int NET_EM_FAILCODE_NO_RECORD = 16;								// 没有记录
+        public static final int NET_EM_FAILCODE_NOMORE_RECORD = 17;							// 查找到最后,没有更多记录
+        public static final int NET_EM_FAILCODE_RECORD_ALREADY_EXISTS = 18;					// 下发卡或信息时,数据重复
+        public static final int NET_EM_FAILCODE_MAX_FP_PERUSER = 19;						// 超过个人最大信息记录数
+        public static final int NET_EM_FAILCODE_MAX_CARD_PERUSER = 20;						// 超过个人最大卡片记录数
+        public static final int NET_EM_FAILCODE_EXCEED_MAX_PHOTOSIZE=21;									// 超出最大照片大小
+        public static final int NET_EM_FAILCODE_INVALID_USERID=22;											// 用户ID无效(未找到客户)
+        public static final int NET_EM_FAILCODE_EXTRACTFEATURE_FAIL=23;									// 提取人脸特征失败
+        public static final int NET_EM_FAILCODE_PHOTO_EXIST=24;											// 人脸照片已存在
+        public static final int NET_EM_FAILCODE_PHOTO_OVERFLOW=25;											// 超出最大人脸照片数
+        public static final int NET_EM_FAILCODE_INVALID_PHOTO_FORMAT=26;									// 照片格式无效
+        public static final int NET_EM_FAILCODE_EXCEED_ADMINISTRATOR_LIMIT=27;								// 超出管理员人数限制
+        public static final int NET_EM_FAILECODE_FACE_FEATURE_ALREADY_EXIST=28;							// 人脸特征已存在
+        public static final int NET_EM_FAILECODE_FINGERPRINT_EXIST=29;										// 信息已存在
+        public static final int NET_EM_FAILECODE_CITIZENID_EXIST=30;										// 证件号已存在
+        public static final int NET_EM_FAILECODE_NORMAL_USER_NOTSUPPORT=31;								// 不支持普通用户下发
+        public static final int NET_EM_FAILCODE_NO_FACE_DETECTED=32;										// 图片中检测到0个人脸目标
+        public static final int NET_EM_FAILCODE_MULTI_FACE_DETECTED=33;									// 图片中检测到多个人脸,无法返回特征
+        public static final int NET_EM_FAILCODE_PICTURE_DECODING_ERROR=34;									// 图片解码错误
+        public static final int NET_EM_FAILCODE_LOW_PICTURE_QUALITY=35;									// 图片质量太低
+        public static final int NET_EM_FAILCODE_NOT_RECOMMENDED=36;										// 结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别
+        public static final int NET_EM_FAILCODE_FACE_ANGLE_OVER_THRESHOLDS=37;								// 人脸角度超过配置阈值
+        public static final int NET_EM_FAILCODE_FACE_RADIO_EXCEEDS_RANGE=38;								// 人脸占比超出范围,算法建议占比:不要超过2/3;不要小于1/3
+        public static final int NET_EM_FAILCODE_FACE_OVER_EXPOSED=39;										// 人脸过爆
+        public static final int NET_EM_FAILCODE_FACE_UNDER_EXPOSED=40;										// 人脸欠爆
+        public static final int NET_EM_FAILCODE_BRIGHTNESS_IMBALANCE=41;									// 人脸亮度不均衡 ,用于判断阴阳脸
+        public static final int NET_EM_FAILCODE_FACE_LOWER_CONFIDENCE=42;									// 人脸的置信度低
+        public static final int NET_EM_FAILCODE_FACE_LOW_ALIGN=43;										// 人脸对齐分数低
+        public static final int NET_EM_FAILCODE_FRAGMENTARY_FACE_DETECTED=44;								// 人脸存在遮挡、残缺不全
+        public static final int NET_EM_FAILCODE_PUPIL_DISTANCE_NOT_ENOUGH=45;								// 人脸瞳距小于阈值
+        public static final int NET_EM_FAILCODE_FACE_DATA_DOWNLOAD_FAILED=46;								// 人脸数据下载失败
+        public static final int NET_EM_FAILCODE_FACE_FFE_FAILED=47;										// 人脸可检测,但特征值提取失败(算法场景)
+        public static final int NET_EM_FAILCODE_PHOTO_FEATURE_FAILED_FOR_FA=48;							// 人脸照片因口罩,帽子,墨镜等人脸属性不符合而提取特征值错误
+        public static final int NET_EM_FAILCODE_FACE_DATA_PHOTO_INCOMPLETE=49;								// 人脸照片不完整
+    }
+
+    /*************************************************************************************************
+     * 							门禁卡信息操作:增、删、改、查、清空
+     ************************************************************************************************/
+    // 卡片信息操作类型
+    public static class NET_EM_ACCESS_CTL_CARD_SERVICE extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_INSERT = 0;                  // 添加, pstInParam = NET_IN_ACCESS_CARD_SERVICE_INSERT , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_INSERT
+        public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_GET = 1;                     // 获取, pstInParam = NET_IN_ACCESS_CARD_SERVICE_GET , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_GET
+        public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_UPDATE = 2;                  // 更新, pstInParam = NET_IN_ACCESS_CARD_SERVICE_UPDATE , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_UPDATE
+        public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_REMOVE = 3;                  // 删除, pstInParam = NET_IN_ACCESS_CARD_SERVICE_REMOVE , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_REMOVE
+        public static final int NET_EM_ACCESS_CTL_CARD_SERVICE_CLEAR = 4;                   // 清空, pstInParam = NET_IN_ACCESS_CARD_SERVICE_CLEAR , pstOutParam = NET_OUT_ACCESS_CARD_SERVICE_CLEAR
+    }
+
+    /**
+     * @author 260611
+     * @description 卡片信息
+     * @origin autoTool
+     * @date 2023/09/18 10:23:47
+     */
+    public class NET_ACCESS_CARD_INFO extends SdkStructure {
+        /**
+         * / 卡号
+         */
+        public byte[] szCardNo = new byte[32];
+        /**
+         * / 用户ID
+         */
+        public byte[] szUserID = new byte[32];
+        /**
+         * / 卡类型,只支持一般卡、胁迫卡和母卡 {@link NET_ACCESSCTLCARD_TYPE}
+         */
+        public int emType;
+        /**
+         * / 动态校验码
+         */
+        public byte[] szDynamicCheckCode = new byte[16];
+        /**
+         * / 信息更新时间,UTC时间
+         */
+        public com.netsdk.lib.structure.NET_TIME stuUpdateTime = new com.netsdk.lib.structure.NET_TIME();
+        /**
+         * / 用户ID扩展,当前只支持32位有效值下发
+         */
+        public byte[] szUserIDEx = new byte[128];
+        /**
+         * / szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+         */
+        public int bUserIDEx;
+        /**
+         * / 保留字节
+         */
+        public byte[] byReserved = new byte[3940];
+
+        public NET_ACCESS_CARD_INFO() {
+        }
+    }
+
+    // 新增卡片信息入参
+    public static class NET_IN_ACCESS_CARD_SERVICE_INSERT extends SdkStructure
+    {
+        public int                  dwSize;	                                    			// 结构体大小
+        public int                  nInfoNum;                                   			// 用户信息数量
+        public Pointer       		pCardInfo;                                  			// 卡片信息,对应数组NET_ACCESS_CARD_INFO,用户分配释放内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
+
+        public NET_IN_ACCESS_CARD_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 新增卡片信息出参
+    public static class NET_OUT_ACCESS_CARD_SERVICE_INSERT extends SdkStructure
+    {
+        public int                  dwSize;	                                    			// 结构体大小
+        public int                  nMaxRetNum;                                 			// 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
+        public Pointer              pFailCode;                                  			// 对应  FAIL_CODE, 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_INSERT中nInfoNum
+        public byte[]               byReserved = new byte[4];
+
+        public NET_OUT_ACCESS_CARD_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取卡片信息入参
+    public static class NET_IN_ACCESS_CARD_SERVICE_GET extends SdkStructure
+    {
+        public int                   dwSize;	                                   			// 结构体大小
+        public int                   nCardNum;                                   			// 查询的数量
+        public CARDNO[]              szCardNos = (CARDNO[])new CARDNO().toArray(100);   	// 卡号列表
+
+        public NET_IN_ACCESS_CARD_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class CARDNO extends SdkStructure
+    {
+        public byte[]               szCardNo = new byte[32];                          		// 卡号
+    }
+
+    // 获取卡片信息出参
+    public static class NET_OUT_ACCESS_CARD_SERVICE_GET extends SdkStructure
+    {
+        public int                  dwSize;                                     			// 结构体大小
+        public int                  nMaxRetNum;                                 			// 查询返回的最大数量
+        public Pointer       		pCardInfo;                                  			// 卡片信息,对应数组NET_ACCESS_CARD_INFO,内存由用户申请释放,申请大小不小于nCardNum*sizeof(NET_ACCESS_CARD_INFO);                                                                           // 返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
+        public Pointer           	pFailCode;                                  			// 对应FAIL_CODE, 查询失败时,对应查询的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_GET中nCardNum
+
+        public NET_OUT_ACCESS_CARD_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新卡片信息入参
+    public static class NET_IN_ACCESS_CARD_SERVICE_UPDATE extends SdkStructure
+    {
+        public int                  dwSize;	                                    			// 结构体大小
+        public int                  nInfoNum;                                   			// 用户信息数量
+        public Pointer       		pCardInfo;                                  			// 卡片信息, 对应数组NET_ACCESS_CARD_INFO,用户分配释放内存,大小为sizeof(NET_ACCESS_CARD_INFO)*nInfoNum
+
+        public NET_IN_ACCESS_CARD_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新卡片信息出参
+    public static class NET_OUT_ACCESS_CARD_SERVICE_UPDATE extends SdkStructure
+    {
+        public int                   dwSize;	                                    		// 结构体大小
+        public int                   nMaxRetNum;                                 			// 最大返回的用户信息数量,不小于NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
+        public Pointer               pFailCode;                                  			// 对应 FAIL_CODE, 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_UPDATE中nInfoNum
+        public byte[]                byReserved = new byte[4];
+
+        public NET_OUT_ACCESS_CARD_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除指定卡号信息入参
+    public static class NET_IN_ACCESS_CARD_SERVICE_REMOVE extends SdkStructure
+    {
+        public int                   dwSize;	                                    		// 结构体大小
+        public int                   nCardNum;                                   			// 删除的数量
+        public CARDNO[]              szCardNos = (CARDNO[])new CARDNO().toArray(100);       // 卡号列表
+
+        public NET_IN_ACCESS_CARD_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除指定卡号信息出参
+    public static class NET_OUT_ACCESS_CARD_SERVICE_REMOVE extends SdkStructure
+    {
+        public int                   dwSize;	                                    		// 结构体大小
+        public int                   nMaxRetNum;                                 			// 最大返回信息数量,不小于 NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
+        public Pointer            	 pFailCode;                                  			// 对应 FAIL_CODE, 用户分配释放内存,插入失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_CARD_SERVICE_REMOVE中nCardNum
+        public byte[]                byReserved = new byte[4];
+
+        public NET_OUT_ACCESS_CARD_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除所有卡片信息入参
+    public static class NET_IN_ACCESS_CARD_SERVICE_CLEAR extends SdkStructure
+    {
+        public int                   dwSize;	                                    		// 结构体大小
+
+        public NET_IN_ACCESS_CARD_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除所有卡片信息出参
+    public static class NET_OUT_ACCESS_CARD_SERVICE_CLEAR extends SdkStructure
+    {
+        public int                   dwSize;	                                    	    // 结构体大小
+
+        public NET_OUT_ACCESS_CARD_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 产品定义
+    public static class NET_PRODUCTION_DEFNITION extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nVideoInChannel;                        // 视频输入通道数
+        public int                 nVideoOutChannel;                       // 视频输出通道数
+        public int                 nRemoteDecChannel;                      // 远程解码通道数
+        public byte[]              szDevType = new byte[NET_DEV_TYPE_LEN]; // 设备类型
+        public byte[]              szVendor = new byte[NET_MAX_NAME_LEN];  // OEM客户
+        public int                 nOEMVersion;                            // OEM版本
+        public int                 nMajorVerion;                           // 主版本号
+        public int                 nMinorVersion;                          // 次版本号
+        public int                 nRevision;                              // 修订版本
+        public byte[]              szWebVerion = new byte[NET_MAX_NAME_LEN];   // Web版本
+        public byte[]              szDefLanguage = new byte[NET_MAX_NAME_LEN]; // 默认语言
+        public NET_TIME            stuBuildDateTime;                       // 发布时间, 精确到秒
+        public int                 nAudioInChannel;                        // 音频输入通道数
+        public int                 nAudioOutChannel;                       // 音频输出通道数
+        public int                 bGeneralRecord;                         // 是否支持定时存储
+        public int                 bLocalStore;                            // 是否支持本地存储
+        public int                 bRemoteStore;                           // 是否支持网络存储
+        public int                 bLocalurgentStore;                      // 是否支持紧急存储到本地
+        public int                 bRealtimeCompress;                      // 是否支持实时压缩存储
+        public int                 dwVideoStandards;                       // 支持的视频制式列表, bit0-PAL, bit1-NTSC
+        public int                 nDefVideoStandard;                      // 默认视频制式, 0-PAL, 1-NTSC
+        public int                 nMaxExtraStream;                        // 最大辅码流路数
+        public int                 nRemoteRecordChannel;                   // 远程录像通道数
+        public int                 nRemoteSnapChannel;                     // 远程抓图通道数
+        public int                 nRemoteVideoAnalyseChannel;             // 远程视频分析通道数
+        public int                 nRemoteTransmitChannel;                 // 远程实时流转发最大通道数
+        public int                 nRemoteTransmitFileChannel;             // 远程文件流竹筏通道通道数
+        public int                 nStreamTransmitChannel;                 // 最大网络传输通道总数
+        public int                 nStreamReadChannel;                     // 最大读文件流通道总数
+        public int                 nMaxStreamSendBitrate;                  // 最大码流网络发送能力, kbps
+        public int                 nMaxStreamRecvBitrate;                  // 最大码流网络接口能力, kbps
+        public int                 bCompressOldFile;                       // 是否压缩旧文件, 去除P帧, 保留I帧
+        public int                 bRaid;                                  // 是否支持RAID
+        public int                 nMaxPreRecordTime;                      // 最大预录时间, s
+        public int                 bPtzAlarm;                              // 是否支持云台报警
+        public int                 bPtz;                                   // 是否支持云台
+        public int                 bATM;                                   // 是否显示ATM相关功能
+        public int                 b3G;                                    // 是否支持3G模块
+        public int                 bNumericKey;                            // 是否带数字键
+        public int                 bShiftKey;                              // 是否带Shift键
+        public int                 bCorrectKeyMap;                         // 数字字母映射表是否正确
+        public int                 bNewATM;                                // 新的二代ATM前面板
+        public int                 bDecoder;                               // 是否是解码器
+        public DEV_DECODER_INFO    stuDecoderInfo;                         // 解码器信息, bDecoder=true时有效
+        public int                 nVideoOutputCompositeChannels;          // 融合屏输出通道上限
+        public int                 bSupportedWPS;                          // 是否支持WPS功能
+        public int                 nVGAVideoOutputChannels;                // VGA视频输出通道数
+        public int                 nTVVideoOutputChannels;                 // TV视频输出通道数
+        public int                 nMaxRemoteInputChannels;                // 最大远程通道数
+        public int                 nMaxMatrixInputChannels;                // 最大矩阵通道数
+        public int                 nMaxRoadWays;                           // 智能交通最大车道数 1~6
+        public int                 nMaxParkingSpaceScreen;                 // 和相机对接最多支持的区域屏个数 0~20
+
+        public int                 nPtzHorizontalAngleMin;                 // 云台水平最小角度, [0-360]
+        public int                 nPtzHorizontalAngleMax;                 // 云台水平最大角度, [0-360]
+        public int                 nPtzVerticalAngleMin;                   // 云台垂直最小角度, [-90,90]
+        public int                 nPtzVerticalAngleMax;                   // 云台垂直最大角度, [-90,90]
+        public int                 bPtzFunctionMenu;                       // 是否支持云台功能菜单
+        public int                 bLightingControl;                       // 是否支持灯光控制
+        public int                 dwLightingControlMode;                  // 手动灯光控制模式, 按位, 见NET_LIGHTING_CTRL_ON_OFF
+        public int                 nNearLightNumber;                       // 近光灯组数量, 0表示不支持
+        public int                 nFarLightNumber;                        // 远光灯组数量, 0表示不支持
+        public int                 bFocus;                                 // 是否支持控制聚焦
+        public int                 bIris;                                  // 是否支持控制光圈
+        public byte[]              szPtzProtocolList = new byte[NET_COMMON_STRING_1024];// 云台支持的协议列表, 可以是多个, 每个用';'分隔
+        public int                 bRainBrushControl;                      // 是否支持雨刷控制
+        public int                 nBrushNumber;                           // 雨刷数量, 为0时表示不支持
+        public int[]               nLowerMatrixInputChannels = new int[NET_MAX_LOWER_MITRIX_NUM]; // 下位矩阵视频输入通道, 下标对应矩阵编号
+        public int[]               nLowerMatrixOutputChannels = new int[NET_MAX_LOWER_MITRIX_NUM];// 下位矩阵视频输出通道, 下标对应矩阵编号
+        public int                 bSupportVideoAnalyse;                   // 是否支持智能分析
+        public int                 bSupportIntelliTracker;                 // 是否支持智能跟踪
+
+        public int                 nSupportBreaking;                       //设备支持的违章类型掩码(按位获取)
+        //0-闯红灯 1-压线 2-逆行 3-欠速 4-超速 5-有车占道 6-黄牌占道 7-违章行驶(左转、右转、调头)
+        //8-违章进入待行区 9-违章停车 10-交通拥堵 11-不按车道行驶 12-违章变道 13-压黄线 14-路肩行驶
+        //15-手动抓拍 16-违章滞留 17-斑马线行人优先 18-流量过大 19-流量过小 20-违章占道 21-违章倒车
+        //22-压停止线 23-闯黄灯 24-黄网格线停车 25-车位有车 26-车位无车 27-车位有车压线 28-受限车牌
+        //29-禁行 30-不系安全带 31-驾驶员抽烟
+        public int                 nSupportBreaking1;                      //0-驾驶员打电话 1-行人闯红灯 2-车辆拥堵禁入 3-未按规定依次交替通行
+        public NET_PD_VIDEOANALYSE stuVideoAnalyse;                        //智能分析
+        public int                 bTalkTransfer;                          //是否支持转发对讲功能
+        public int				   bCameraAttribute;						// 是否支持球机摄像头属性页面
+        public int				   bPTZFunctionViaApp;						// 是否支持由应用主控的云台功能逻辑
+        public int				   bAudioProperties;						// 喇叭是否支持语音播报
+        public int				   bIsCameraIDOsd;							// 是否支持摄像机编号叠加
+        public int				   bIsPlaceOsd;								// 是否支持地点信息叠加
+
+        public int				   nMaxGeographyTitleLine;					// 地理位置叠加最大支持行数
+        public int 				   emAudioChannel;					    	// 设备声道支持类型,详见EM_AUDIO_CHANNEL_TYPE
+        public byte[]			   szVendorAbbr = new byte[NET_COMMON_STRING_32];		// 厂商缩写
+        public byte[]			   szTypeVersion = new byte[NET_COMMON_STRING_32];		// 软件发布类型
+        public int				   bIsVideoNexus;							// 是否是视讯互联大基线
+        public int                 emWlanScanAndConfig;        // WIFI扫描及配置支持的版本类型,EM_WLAN_SCAN_AND_CONFIG_TYPE
+        public boolean             bSupportLensMasking;                    // IPC是否支持镜头调节到负角度,进行结构遮挡
+        public NET_PRODUCTION_DEFNITION(){
+            this.dwSize =  this.size();
+        }
+    }
+
+
+    // 解码器信息
+    public static class DEV_DECODER_INFO extends SdkStructure
+    {
+        public byte[]            	szDecType = new byte[64];           // 类型
+        public int             		nMonitorNum;                        // TV个数
+        public int             		nEncoderNum;                        // 解码通道个数
+        public byte[]            	szSplitMode = new byte[16];         // 支持的TV画面分割数,以数组形式表示,0为结尾
+        public byte[]            	bMonitorEnable = new byte[16];      // 各TV使能
+        public byte            		bTVTipDisplay;                      // 指示是否支持TV提示信息叠加设置, 0:不支持 1:支持.
+        public byte[]            	reserved1 = new byte[3];
+        public byte[]            	byLayoutEnable = new byte[48];      // 各解码通道显示叠加信息使能
+        public int[]           		dwLayoutEnMask = new int[2];        // 各解码通道显示叠加信息使能掩码,从低位到高位支持64个通道,其中dwLayoutEnMask[0]是低32位
+        public byte[]            	reserved = new byte[4];
+    }
+
+    // 智能分析
+    public static class NET_PD_VIDEOANALYSE extends SdkStructure
+    {
+        public int                	   bSupport;                   // 是否支持智能分析
+        public NET_COMMON_STRING_64[]  szSupportScenes = (NET_COMMON_STRING_64[])new NET_COMMON_STRING_64().toArray(NET_VIDEOANALYSE_SCENES);   // 支持的场景
+        public NET_COMMON_STRING_64[]  SupportRules = (NET_COMMON_STRING_64[])new NET_COMMON_STRING_64().toArray(NET_VIDEOANALYSE_RULES);;       // 支持的规则
+    }
+
+    public static class NET_COMMON_STRING_64 extends SdkStructure
+    {
+        public byte[]     szCommon = new byte[NET_COMMON_STRING_64];   // 通用64位字符串
+    }
+
+    /*************************************************************************************************
+     * 							门禁人脸信息操作:增、删、改、查、清空
+     ************************************************************************************************/
+    // 人脸信息操作类型
+    public static class NET_EM_ACCESS_CTL_FACE_SERVICE extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT = 0;                  // 添加, pInbuf = NET_IN_ACCESS_FACE_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_INSERT
+        public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_GET = 1;                     // 获取, pInbuf = NET_IN_ACCESS_FACE_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_GET
+        public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE = 2;                  // 更新, pInbuf = NET_IN_ACCESS_FACE_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_UPDATE
+        public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE = 3;                  // 删除, pInbuf = NET_IN_ACCESS_FACE_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_REMOVE
+        public static final int NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR = 4;                   // 清空, pInbuf = NET_IN_ACCESS_FACE_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FACE_SERVICE_CLEAR
+    }
+
+    // 人脸信息
+    public static class NET_ACCESS_FACE_INFO extends SdkStructure
+    {
+        public byte[]					szUserID = new byte[32];	                            // 用户ID
+        public int 		                nFaceData;												// 人脸模板数据个数,最大20
+        public FACEDATA[]		        szFaceDatas = new FACEDATA[20];	                        // 人脸模板数据
+        public int[]                    nFaceDataLen = new int[20];                             // 人脸模版数据大小
+        public int                      nFacePhoto;                                         	// 人脸照片个数,不超过5个
+        public int[]                    nInFacePhotoLen = new int[5];                           // 用户申请的每张图片的大小
+        public int[]                    nOutFacePhotoLen = new int[5];                          // 每张图片实际的大小
+        public FACEPHOTO[]              pFacePhotos = new FACEPHOTO[5];                         // 人脸照片数据数组 人脸照片数据,大小不超过200K
+        public int					bFaceDataExEnable;									        // 是否使用扩展人脸模板数据
+        public int[]                         nMaxFaceDataLen=new int[20];                                // 用户申请的扩展人脸模板数据大小
+        public int[]                        nRetFaceDataLen=new int[20];                                // 实际人脸模板数据大小
+        public  FACEDATAEX[]				pFaceDataEx=new FACEDATAEX[20];	// 人脸模板数据扩展字段 当bFaceDataExEnable有效时,建议使用扩展字段pFaceDataEx
+        public    NET_TIME                    stuUpdateTime=new NET_TIME();                                      // 人脸信息更新时间,UTC时间
+        public byte[]							szUserIDEx=new byte[128];									// 用户ID扩展,当前只支持32位有效值下发
+        public int						    bUserIDEx;											// szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+        public  int							nEigenData;											// 人脸特征值个数
+        public int[]						nInEigenDataLen=new int[5];									// 用户申请的每个人脸特征值大小
+        public int[]						nOutEigenDataLen=new int[5];								// 每个人脸特征值实际的大小
+        public EIGENDATA[]  pEigenDatas=new EIGENDATA[5];                               // 人脸特征值, 大小不超过2048
+        public byte[]                    byReserved = new byte[1600-POINTERSIZE*5];                                   // 保留字节
+
+       public NET_ACCESS_FACE_INFO(){
+
+           for(int i=0;i<szFaceDatas.length;i++){
+               szFaceDatas[i]=new FACEDATA();
+           }
+
+           for(int i=0;i<pFacePhotos.length;i++){
+               pFacePhotos[i]=new FACEPHOTO();
+           }
+
+           for(int i=0;i<pFaceDataEx.length;i++){
+               pFaceDataEx[i]=new FACEDATAEX();
+           }
+
+           for(int i=0;i<pEigenDatas.length;i++){
+               pEigenDatas[i]=new  EIGENDATA();
+           }
+       }
+    }
+
+    public static class EIGENDATA extends SdkStructure{
+        public Pointer        			pEigenData;												// 人脸特征值, 大小不超过2048
+    }
+
+    public static class FACEDATA extends SdkStructure
+    {
+        public byte[]		            szFaceData = new byte[2048];		                    // 人脸模板数据
+    }
+    public static class FACEDATAEX extends SdkStructure{
+        public Pointer pFaceDataEx;//人脸模板数据拓展,当bFaceDataExEnable为true有效
+    }
+    public static class FACEPHOTO extends SdkStructure
+    {
+        public Pointer        			pFacePhoto;												// 人脸照片数据,大小不超过200K
+    }
+
+    // 添加人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
+    public static class NET_IN_ACCESS_FACE_SERVICE_INSERT extends SdkStructure
+    {
+        public int 					    dwSize;                                                 // 结构体大小
+        public int                      nFaceInfoNum;                                       	// 人脸信息数量
+        public Pointer	    			pFaceInfo;					                        	// 人脸数据,用户自行分配数据, 对应数组NET_ACCESS_FACE_INFO
+
+        public NET_IN_ACCESS_FACE_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 添加人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_INSERT)
+    public static class NET_OUT_ACCESS_FACE_SERVICE_INSERT extends SdkStructure
+    {
+        public int 			            dwSize;                                             	// 结构体大小
+        public int                      nMaxRetNum;                                         	// 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_INSERT 中的nFaceInfoNum
+        public Pointer            		pFailCode;                                          	// 对应FAIL_CODE, 用户分配内存,添加失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_INSERT中的nFaceInfoNum
+
+        public NET_OUT_ACCESS_FACE_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 批量获取多用户多个人脸输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
+    public static class NET_IN_ACCESS_FACE_SERVICE_GET extends SdkStructure
+    {
+        public int 			            dwSize;                                             	// 结构体大小
+        public int                      nUserNum;                                           	// 用户ID数量,最大100
+        public USERID[]			        szUserIDs = (USERID[])new USERID().toArray(100);	    // 用户ID
+        public USERIDEX[]			    szUserIDEx = (USERIDEX[])new USERIDEX().toArray(100);	// 用户ID扩展,当前只支持32位有效值下发
+        public int                      bUserIDEx;                                              // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+
+        public NET_IN_ACCESS_FACE_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 批量获取多用户多个人脸输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_GET)
+    public static class NET_OUT_ACCESS_FACE_SERVICE_GET extends SdkStructure
+    {
+        public int 			            dwSize;                                             	// 结构体大小
+        public int                      nMaxRetNum;                                         	// 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_GET 中的 nUserNum
+        public Pointer	    			pFaceInfo;					                        	// 人脸数据, 对应数组NET_ACCESS_FACE_INFO,用户分配内存,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum,只返人脸模版数据
+        public Pointer            		pFailCode;                                          	// 对应 FAIL_CODE, 用户分配内存,获取失败时,对应获取的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_GET中的nUserNum
+
+        public NET_OUT_ACCESS_FACE_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新多用户多个人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
+    public static class NET_IN_ACCESS_FACE_SERVICE_UPDATE extends SdkStructure
+    {
+        public int 					    dwSize;                                             // 结构体大小
+        public int                      nFaceInfoNum;                                       // 人脸信息数量
+        public Pointer	    			pFaceInfo;					                        // 人脸数据,用户分配内存, 对应数组 NET_ACCESS_FACE_INFO
+
+        public NET_IN_ACCESS_FACE_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新多用户多个人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_UPDATE)
+    public static class NET_OUT_ACCESS_FACE_SERVICE_UPDATE extends SdkStructure
+    {
+        public int  			        dwSize;                                             // 结构体大小
+        public int                      nMaxRetNum;                                         // 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
+        public Pointer            		pFailCode;                                          // 对应 FAIL_CODE, 用户分配内存.更新失败时,对应更新的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_UPDATE中的nFaceInfoNum
+
+        public NET_OUT_ACCESS_FACE_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除多用户的多个人脸信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
+    public static class NET_IN_ACCESS_FACE_SERVICE_REMOVE extends SdkStructure
+    {
+        public int 			            dwSize;                                             // 结构体大小
+        public int                      nUserNum;                                           // 用户ID数量,最大100
+        public USERID[]			        szUserIDs = (USERID[])new USERID().toArray(100);	// 用户ID
+        public USERIDEX[]			    szUserIDEx = (USERIDEX[])new USERIDEX().toArray(100);	// 用户ID扩展,当前只支持32位有效值下发
+        public int                      bUserIDEx;                                              // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+        
+        public NET_IN_ACCESS_FACE_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除多用户的多个人脸信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_REMOVE)
+    public static class NET_OUT_ACCESS_FACE_SERVICE_REMOVE extends SdkStructure
+    {
+        public int 			            dwSize;                                             // 结构体大小
+        public int                      nMaxRetNum;                                         // 最大返回数量,不小于 NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
+        public Pointer           		pFailCode;                                          // 对应 FAIL_CODE, 用户分配内存.删除失败时,对应删除的每一项的结果,返回个数同NET_IN_ACCESS_FACE_SERVICE_REMOVE中的nUserNum
+
+        public NET_OUT_ACCESS_FACE_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清空所有人脸记录信息输入参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
+    public static class NET_IN_ACCESS_FACE_SERVICE_CLEAR extends SdkStructure
+    {
+        public int 			            dwSize;                                             // 结构体大小
+
+        public NET_IN_ACCESS_FACE_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清空所有人脸记录信息输出参数(NET_EM_ACCESS_CTL_FACE_SERVICE_CLEAR)
+    public static class NET_OUT_ACCESS_FACE_SERVICE_CLEAR extends SdkStructure
+    {
+        public int 			            dwSize;                                             // 结构体大小
+
+        public NET_OUT_ACCESS_FACE_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    /*************************************************************************************************
+     * 							门禁信息信息操作:增、删、改、查、清空
+     ************************************************************************************************/
+    // 信息信息操作类型
+    public static class NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE extends SdkStructure
+    {
+        public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_INSERT = 0;             // 添加, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT
+        public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_GET = 1;                // 获取, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_GET , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET
+        public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_UPDATE = 2;             // 更新, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE
+        public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_REMOVE = 3;             // 删除, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE
+        public static final int NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE_CLEAR = 4;              // 清空, pInbuf = NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR , pOutBuf = NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR
+    }
+
+    // 信息信息
+    public static class NET_ACCESS_FINGERPRINT_INFO extends SdkStructure
+    {
+        public byte[]			         szUserID = new byte[NET_MAX_USERID_LEN];	         // 用户ID
+        public int                       nPacketLen;                                     	 // 单个信息数据包长度
+        public int                       nPacketNum;                                     	 // 信息数据包个数
+        public Pointer                   szFingerPrintInfo;                              	 // 信息数据(数据总长度即nPacketLen*nPacketNum),用户分配释放内存
+        public int                       nDuressIndex;                                   	 // 胁迫信息序号,取值范围[1,nPacketNum] 非法取值的话,该字段无效
+        public byte[]                    byReserved = new byte[4096];                        // 保留字节
+    }
+
+    // 插入信息信息入参
+    public static class NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int                       nFpNum;                                     		// 信息信息的数量
+        public Pointer    				 pFingerPrintInfo;                           		// 信息信息,用户分配释放内存, 对应 NET_ACCESS_FINGERPRINT_INFO
+
+        public NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 插入信息信息出参
+    public static class NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int                       nMaxRetNum;                                 		// 返回信息数量,不小于NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中 nFpNum
+        public Pointer                	 pFailCode;                                  		// 对应FAIL_CODE, 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_INSERT 中nFpNum
+
+        public NET_OUT_ACCESS_FINGERPRINT_SERVICE_INSERT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新信息信息入参
+    public static class NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE extends SdkStructure
+    {
+        public int  			         dwSize;                                     		// 结构体大小
+        public int                       nFpNum;                                     		// 信息信息的数量
+        public Pointer    				 pFingerPrintInfo;                           		// 信息信息,用户分配释放内存, 对应数组 NET_ACCESS_FINGERPRINT_INFO
+
+        public NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 更新信息信息出参
+    public static class NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int                       nMaxRetNum;                                 		// 最大返回信息数量,不小于 NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE中nFpNum
+        public Pointer                	 pFailCode;                                  		// 对应 FAIL_CODE, 用户分配释放内存,插入失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_UPDATE中nFpNum
+
+        public NET_OUT_ACCESS_FINGERPRINT_SERVICE_UPDATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取信息信息入参
+    public static class NET_IN_ACCESS_FINGERPRINT_SERVICE_GET extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public byte[]			         szUserID = new byte[NET_MAX_USERID_LEN];	        // 用户ID
+    	public byte[]					 szUserIDEx = new byte[128];					    // 用户ID扩展,当前只支持32位有效值下发
+    	public int						 bUserIDEx;									        // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+        
+
+        public NET_IN_ACCESS_FINGERPRINT_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取信息信息出参
+    public static class NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int						 nRetFingerPrintCount;					    		// 实际返回的信息个数
+        public int						 nSinglePacketLength;					    		// 单个信息数据包长度
+        public int                       nDuressIndex;                               		// 胁迫信息序号
+        public int					     nMaxFingerDataLength;					    		// 接受信息数据的缓存的最大长度
+        public int					     nRetFingerDataLength;					    		// 实际返回的总的信息数据包的长度
+        public Pointer                   pbyFingerData;                       	    		// 用户分配释放内存,信息数据
+        public NET_TIME                  stuUpdateTime;                                     // 信息更新时间,UTC时间
+
+        public NET_OUT_ACCESS_FINGERPRINT_SERVICE_GET() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除用户信息信息入参
+    public static class NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int                       nUserNum;                                   		// 删除的用户数量
+        public USERID[]                  szUserIDs = (USERID[])new USERID().toArray(100);   // 用户ID
+        public USERIDEX[]                szUserIDEx = (USERIDEX[])new USERIDEX().toArray(100);   // 用户ID扩展,当前只支持32位有效值下发
+    	public int						 bUserIDEx;									        // szUserIDEx 是否有效,为TRUE时,使用szUserIDEx字段
+
+        public NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 删除用户信息信息出参
+    public static class NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE extends SdkStructure
+    {
+        public int 			             dwSize;                                     		// 结构体大小
+        public int                       nMaxRetNum;                                 		// 最大返回数量,不小于 NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum
+        public Pointer               	 pFailCode;                                  		// 对应 FAIL_CODE, 用户分配释放内存,删除失败时,对应插入的每一项的结果,返回个数同NET_IN_ACCESS_FINGERPRINT_SERVICE_REMOVE中nUserNum
+
+        public NET_OUT_ACCESS_FINGERPRINT_SERVICE_REMOVE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清除所有信息信息入参
+    public static class NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR extends SdkStructure
+    {
+        public int 			             dwSize;                                         	// 结构体大小
+
+        public NET_IN_ACCESS_FINGERPRINT_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 清除所有信息信息出参
+    public static class NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR extends SdkStructure
+    {
+        public int 			            dwSize;                                         	// 结构体大小
+
+        public NET_OUT_ACCESS_FINGERPRINT_SERVICE_CLEAR() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFindUserInfo 输入参数
+    public static class NET_IN_USERINFO_START_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     	    // 结构体大小
+        public byte[]			        szUserID = new byte[MAX_COMMON_STRING_32];	        // 用户ID
+
+        public NET_IN_USERINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFindUserInfo 输出参数
+    public static class NET_OUT_USERINFO_START_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nTotalCount;                                		// 符合查询条件的总数
+        public int                      nCapNum;                                    		// doFind一次查询的最大数量
+
+        public NET_OUT_USERINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindUserInfo 输入参数
+    public static class NET_IN_USERINFO_DO_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nStartNo;                                   		// 起始序号
+        public int                      nCount;                                     		// 本次查询的条数
+
+        public NET_IN_USERINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindUserInfo 输出参数
+    public static class NET_OUT_USERINFO_DO_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nRetNum;                                    		// 本次查询到的个数
+        public Pointer       			pstuInfo;                                   		// 查询结果, 对应 NET_ACCESS_USER_INFO数组, 用户分配释放内存,大小为sizeof(NET_ACCESS_USER_INFO)*nMaxNum
+        public int	                    nMaxNum;                                    		// 用户分配内存的个数
+        public byte[]                   byReserved = new byte[4];
+
+        public NET_OUT_USERINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFindCardInfo 输入参数
+    public static class NET_IN_CARDINFO_START_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public byte[]			        szUserID = new byte[32];	                        // 用户ID
+        public byte[]                   szCardNo = new byte[32];                            // 卡号
+        public int      				emType;                                     		// 卡类型,只支持一般卡、胁迫卡和母卡, 参考  NET_ACCESSCTLCARD_TYPE
+
+        public NET_IN_CARDINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_StartFindCardInfo 输出参数
+    public static class NET_OUT_CARDINFO_START_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nTotalCount;                                		// 符合查询条件的总数
+        public int                      nCapNum;                                    		// CLIENT_DoFindCardInfo接口一次查询的最大数量
+
+        public NET_OUT_CARDINFO_START_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindCardInfo 输入参数
+    public static class NET_IN_CARDINFO_DO_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nStartNo;                                  			// 起始序号
+        public int                      nCount;                                     		// 本次查询的条数
+
+        public NET_IN_CARDINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindCardInfo 输出参数
+    public static class NET_OUT_CARDINFO_DO_FIND extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int                      nRetNum;                                    		// 本次查询到的个数
+        public Pointer       			pstuInfo;                                   		// 查询结果, 对应 NET_ACCESS_CARD_INFO数组, 用户分配释放内存,大小为sizeof(NET_FACEINFO)*nMaxNum
+        public int	                    nMaxNum;                                    		// 用户分配内存的个数
+        public byte[]                   byReserved = new byte[4];                           // 保留字节
+
+        public NET_OUT_CARDINFO_DO_FIND() {
+            this.dwSize = this.size();
+        }
+    }
+    // 回放数据回调结构体
+    public static class NET_DATA_CALL_BACK_INFO extends SdkStructure
+    {
+        public int 			            dwSize;                                     		// 结构体大小
+        public int						dwDataType;					// 数据类型
+        public Pointer					        pBuffer;					// 数据
+        public int						dwBufSize;					// 数据长度
+        public NET_DATA_CALL_BACK_TIME			stuTime;					// 时间戳
+        public int		                        emFramType;					// 帧类型,EM_DATA_CALL_BACK_FRAM_TYPE
+        public int                             emFramSubType;				// 帧子类型,EM_DATA_CALL_BACK_FRAM_SUB_TYPE
+
+        public NET_DATA_CALL_BACK_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 回调数据时间信息
+    public static class NET_DATA_CALL_BACK_TIME extends SdkStructure
+    {
+        public int                dwYear;                  // 年
+        public int                dwMonth;                 // 月
+        public int                dwDay;                   // 日
+        public int                dwHour;                  // 时
+        public int                dwMinute;                // 分
+        public int                dwSecond;                // 秒
+        public int                dwMillisecond;           // 毫秒
+        public int                dwPTS;                   // pts 时间戳
+        public int                dwDTS;                   // dts 时间戳
+        public int[]			  dwReserved=new int[3];  // 预留字段
+    }
+    // 升级类型
+    public static class EM_UPGRADE_TYPE extends SdkStructure
+    {
+        public static final int DH_UPGRADE_BIOS_TYPE = 1;				// BIOS升级
+        public static final int DH_UPGRADE_WEB_TYPE = 2;				// WEB升级
+        public static final int DH_UPGRADE_BOOT_YPE = 3;				// BOOT升级
+        public static final int DH_UPGRADE_CHARACTER_TYPE = 4;			// 汉字库
+        public static final int DH_UPGRADE_LOGO_TYPE = 5;				// LOGO
+        public static final int DH_UPGRADE_EXE_TYPE = 6;				// EXE,例如播放器等
+        public static final int DH_UPGRADE_DEVCONSTINFO_TYPE = 7;		// 设备固有信息设置(如:硬件ID,MAC,序列号)
+        public static final int DH_UPGRADE_PERIPHERAL_TYPE = 8;			// 外设接入从片(如车载287芯片)
+        public static final int DH_UPGRADE_GEOINFO_TYPE = 9;			// 地理信息定位芯片
+        public static final int DH_UPGRADE_MENU = 10;					// 菜单(设备操作界面的图片)
+        public static final int DH_UPGRADE_ROUTE = 11;					// 线路文件(如公交线路)
+        public static final int DH_UPGRADE_ROUTE_STATE_AUTO = 12;		// 报站音频(与线路配套的报站音频)
+        public static final int DH_UPGRADE_SCREEN = 13;					// 调度屏(如公交操作屏)
+
+    }
+
+    /***********************************************************************
+     ** 回调
+     ***********************************************************************/
+    //JNA Callback方法定义,断线回调
+    public interface fDisConnect extends Callback {
+        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser);
+    }
+
+    // 网络连接恢复回调函数原形
+    public interface fHaveReConnect extends Callback {
+        public void invoke(LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser);
+    }
+
+    // 消息回调函数原形(pBuf内存由SDK内部申请释放)
+    public interface fMessCallBack extends Callback{
+        public boolean invoke(int lCommand, LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, Pointer dwUser);
+    }
+
+    // 消息回调函数原形(pBuf内存由SDK内部申请释放)
+    // 新增参数说明
+    // bAlarmAckFlag : TRUE,该事件为可以进行确认的事件;FALSE,该事件无法进行确认
+    // nEventID 用于对 CLIENT_AlarmAck 接口的入参进行赋值,当 bAlarmAckFlag 为 TRUE 时,该数据有效
+    // pBuf内存由SDK内部申请释放
+    public interface fMessCallBackEx1 extends Callback{
+        public boolean invoke(int lCommand, LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, int bAlarmAckFlag, NativeLong nEventID, Pointer dwUser);
+    }
+
+    // 订阅人脸回调函数
+    public interface fFaceFindState extends Callback {
+        // pstStates 指向NET_CB_FACE_FIND_STATE的指针
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pstStates, int nStateNum, Pointer dwUser);
+    }
+
+    // 智能分析数据回调;nSequence表示上传的相同图片情况,为0时表示是第一次出现,为2表示最后一次出现或仅出现一次,为1表示此次之后还有
+    // int nState = *(int*) reserved 表示当前回调数据的状态, 为0表示当前数据为实时数据,为1表示当前回调数据是离线数据,为2时表示离线数据传送结束
+    // pAlarmInfo 对应智能事件信息, pBuffer 对应智能图片信息, dwBufSize 智能图片信息大小
+    public interface fAnalyzerDataCallBack extends Callback {
+        public int invoke(LLong lAnalyzerHandle, int dwAlarmType, Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize, Pointer dwUser, int nSequence, Pointer reserved) throws UnsupportedEncodingException;
+    }
+
+    // 抓图回调函数原形(pBuf内存由SDK内部申请释放)
+    // EncodeType 编码类型,10:表示jpeg图片      0:mpeg4    CmdSerial : 操作流水号,同步抓图的情况下用不上
+    public interface fSnapRev extends Callback{
+        public void invoke(LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser);
+    }
+
+    // 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放)
+    public interface fSearchDevicesCB extends Callback{
+        public void invoke(Pointer pDevNetInfo, Pointer pUserData);
+    }
+
+    // 按时间回放进度回调函数原形
+    public interface fTimeDownLoadPosCallBack extends Callback {
+        public void invoke(LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser);
+    }
+    
+    // 回放数据回调函数原形
+    public interface fDataCallBack extends Callback {
+        public int invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, Pointer dwUser);
+    }
+
+    // 回放进度回调函数原形
+    public interface fDownLoadPosCallBack extends Callback {
+        public void invoke(LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, Pointer dwUser);
+    }
+
+    // 视频统计摘要信息回调函数原形,lAttachHandle 是 CLIENT_AttachVideoStatSummary 返回值
+    public interface fVideoStatSumCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_VIDEOSTAT_SUMMARY pBuf, int dwBufLen, Pointer dwUser);
+    }
+    // 回放数据回调函数原形(扩展)
+    public interface fDataCallBackEx extends Callback {
+        public int invoke(LLong lRealHandle, NET_DATA_CALL_BACK_INFO pDataCallBack, Pointer dwUser);
+    }
+
+    // 用户自定义的数据回调   lTalkHandle是CLIENT_StartTalkEx的返回值
+    // byAudioFlag:   0表示是本地录音库采集的音频数据 ,  1表示收到的设备发过来的音频数据
+    public interface pfAudioDataCallBack extends Callback {
+        public void invoke(LLong lTalkHandle, Pointer pDataBuf, int dwBufSize, byte byAudioFlag, Pointer dwUser);
+    }
+
+    // lHandle是文件传输句柄 ,nTransType是文件传输类型,nState是文件传输状态,
+    public interface fTransFileCallBack extends Callback {
+        public void invoke(LLong lHandle, int nTransType, int nState, int nSendSize, int nTotalSize, Pointer dwUser);
+    }
+
+    // GPS信息订阅回调--扩展
+    public interface fGPSRevEx extends Callback {
+        public void invoke(LLong lLoginID, GPS_Info.ByValue GpsInfo, ALARM_STATE_INFO.ByValue stAlarmInfo, Pointer dwUserData, Pointer reserved);
+    }
+
+    // GPS信息订阅回调--扩展2
+    public interface fGPSRevEx2 extends Callback {
+        public void invoke(LLong lLoginID, NET_GPS_LOCATION_INFO lpData, Pointer dwUserData, Pointer reserved);
+    }
+
+    // 实时预览数据回调函数--扩展(pBuffer内存由SDK内部申请释放)EM_CLASS_CROWD_ABNORMAL
+    // lRealHandle实时预览           dwDataType: 0-原始数据   1-帧数据    2-yuv数据   3-pcm音频数据
+    // pBuffer对应BYTE*
+    // param:当类型为0(原始数据)和2(YUV数据) 时为0。当回调的数据类型为1时param为一个tagVideoFrameParam结构体指针。
+    // param:当数据类型是3时,param也是一个tagCBPCMDataParam结构体指针
+    public interface fRealDataCallBackEx extends Callback {
+        public void invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, int param, Pointer dwUser);
+    }
+    // 实时预览数据回调函数原形--扩展(pBuffer内存由SDK内部申请释放)
+    // 通过 dwDataType 过滤得到对应码流,具体码流类型请参考 EM_REALDATA_FLAG; 转码流时 dwDataType 值请参考 NET_DATA_CALL_BACK_VALUE 说明
+    // 当转码流时,param 为具体的转码信息(视频帧、音频帧等信息),对应结构体 NET_STREAMCONVERT_INFO
+    public interface fRealDataCallBackEx2 extends Callback{
+        void invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, LLong param, Pointer dwUser);
+    }
+    // 视频预览断开回调函数, (param内存由SDK内部申请释放 )
+    // lOperateHandle监控句柄   dwEventType对应EM_REALPLAY_DISCONNECT_EVENT_TYPE   param对应void*,事件参数
+    public interface fRealPlayDisConnect extends Callback {
+        public void invoke(LLong lOperateHandle, int dwEventType, Pointer param, Pointer dwUser);
+    }
+
+    // 订阅过车记录数据回调函数原型     lAttachHandle为CLIENT_ParkingControlAttachRecord返回值
+    public interface fParkingControlRecordCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_CAR_PASS_ITEM pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 订阅车位信息回调函数原型
+    public interface fParkInfoCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_PARK_INFO_ITEM pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 订阅监测点位信息回调函数原型
+    public interface fSCADAAttachInfoCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_SCADA_NOTIFY_POINT_INFO_LIST pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    // 透明串口回调函数原形(pBuffer内存由SDK内部申请释放))
+    public interface fTransComCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lTransComChannel, Pointer pBuffer, int dwBufSize, Pointer dwUser);
+    }
+
+    //视频分析进度状态实时回调函数
+    public interface fVideoAnalyseState extends Callback {
+        public int invoke(LLong lAttachHandle, NET_VIDEOANALYSE_STATE pAnalyseStateInfos, Pointer dwUser, Pointer pReserved);
+    }
+
+    // 侦听服务器回调函数原形
+    public interface fServiceCallBack extends Callback {
+        public int invoke(LLong lHandle, String pIp, int wPort, int lCommand, Pointer pParam, int dwParamLen, Pointer dwUserData);
+    }
+
+    // 雷达RFID信息回调函数原形
+    public interface fRadarRFIDCardInfoCallBack extends Callback {
+        public int invoke(LLong lLoginID, LLong lAttachHandle, NET_RADAR_NOTIFY_RFIDCARD_INFO pBuf, int dwBufLen, Pointer pReserved, Pointer dwUser);
+    }
+
+    // CLIENT_ListenServer 接口回调fServiceCallBack函数支持的命令类型
+    public static class EM_LISTEN_TYPE extends SdkStructure
+    {
+        public static final int NET_DVR_DISCONNECT = -1;                           // 验证期间设备断线回调
+        public static final int NET_DVR_SERIAL_RETURN = 1;                         // 设备注册携带序列号 对应 char* szDevSerial
+        public static final int NET_DEV_AUTOREGISTER_RETURN = 2;                   // 设备注册携带序列号和令牌 对应NET_CB_AUTOREGISTER
+        public static final int NET_DEV_NOTIFY_IP_RETURN = 3;                      // 设备仅上报IP, 不作为主动注册用, 用户获取ip后只能按照约定的端口按照非主动注册的类型登录
+    }
+
+    //订阅Bus状态回调函数原型
+    public interface fBusStateCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, int lCommand, Pointer pBuf, int dwBufLen, Pointer dwUser);
+    }
+
+    // GPS温湿度信息订阅回调
+    public interface fGPSTempHumidityRev extends Callback {
+        public void invoke(LLong lLoginID, GPS_TEMP_HUMIDITY_INFO.ByValue GpsTHInfo, Pointer dwUserData);
+    }
+
+    // 向设备注册的回调函数原型
+    public interface fDeviceStateCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_CB_ATTACH_DEVICE_STATE pstDeviceState, Pointer dwUser);
+    }
+
+    // 注册添加设备的回调函数原型
+    public interface fAddDeviceCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_CB_ATTACH_ADD_DEVICE pstAddDevice, Pointer dwUser);
+    }
+
+    // 定义监测点报警信息回调函数原型
+    public interface fSCADAAlarmAttachInfoCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_SCADA_NOTIFY_POINT_ALARM_INFO_LIST pInfo, int nBufLen, Pointer dwUser);
+    }
+
+    //视频诊断结果上报回调函数
+    public interface fRealVideoDiagnosis extends Callback {
+        public int invoke(LLong lDiagnosisHandle, NET_REAL_DIAGNOSIS_RESULT pDiagnosisInfo, Pointer pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    /// \fn 温度分布数据状态回调函数
+    /// \brief
+    /// \param  LLONG lAttachHandle [OUT] 订阅句柄, CLIENT_RadiometryAttach 的返回值
+    /// \param  NET_RADIOMETRY_DATA pBuf [OUT] 热图数据信息
+    /// \param  int nBufLen [OUT] 状态信息长度
+    /// \param  LDWORD dwUser 用户数据
+    /// \return 无
+    public interface fRadiometryAttachCB extends Callback {
+        public void invoke(LLong lAttachHandle, NET_RADIOMETRY_DATA pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    // 刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBurnState返回值, 每次1条,pBuf->dwSize == nBufLen
+    public interface fAttachBurnStateCB extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_CB_BURNSTATE pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    // 刻录设备回调扩展函数原形
+    public interface fAttachBurnStateCBEx extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, NET_OUT_BURN_GET_STATE pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    //刻录设备回调函数,lUploadHandle是CLIENT_StartUploadFileBurned返回值
+    //typedef void (CALLBACK *fBurnFileCallBack) (LLONG lLoginID, LLONG lUploadHandle, int nTotalSize, int nSendSize, LDWORD dwUser);
+    public interface fBurnFileCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lUploadHandle, int nTotalSize, int nSendSize, Pointer dwUser);
+    }
+
+
+    // 升级回调
+    public interface fUpgradeCallBackEx extends Callback {
+        public void invoke(LLong lLoginID, LLong lUpgradechannel, int nTotalSize, int nSendSize, Pointer dwUserData);
+    }
+
+    /************************************************************************
+     ** 接口
+     ***********************************************************************/
+    //  JNA直接调用方法定义,cbDisConnect 实际情况并不回调Java代码,仅为定义可以使用如下方式进行定义。 fDisConnect 回调
+    public boolean CLIENT_Init(Callback cbDisConnect, Pointer dwUser);
+
+    //  JNA直接调用方法定义,SDK退出清理
+    public void CLIENT_Cleanup();
+
+    //  JNA直接调用方法定义,设置断线重连成功回调函数,设置后SDK内部断线自动重连, fHaveReConnect 回调
+    public void CLIENT_SetAutoReconnect(Callback cbAutoConnect, Pointer dwUser);
+
+    // 返回函数执行失败代码
+    public int CLIENT_GetLastError();
+
+    // 设置连接设备超时时间和尝试次数
+    public void CLIENT_SetConnectTime(int nWaitTime, int nTryTimes);
+
+    // 设置登陆网络环境
+    public void CLIENT_SetNetworkParam(NET_PARAM pNetParam);
+
+    //
+    public boolean CLIENT_SetDeviceSearchParam(NET_DEVICE_SEARCH_PARAM pstParam);
+
+    // 获取SDK的版本信息
+    public int CLIENT_GetSDKVersion();
+
+    //  JNA直接调用方法定义,登陆接口
+    public LLong CLIENT_LoginEx(String pchDVRIP, int wDVRPort, String pchUserName, String pchPassword, int nSpecCap, Pointer pCapParam, NET_DEVICEINFO lpDeviceInfo, IntByReference error/*= 0*/);
+
+    //  JNA直接调用方法定义,登陆扩展接口///////////////////////////////////////////////////
+    //  nSpecCap 对应  EM_LOGIN_SPAC_CAP_TYPE 登陆类型
+    public LLong CLIENT_LoginEx2(String pchDVRIP, int wDVRPort, String pchUserName, String pchPassword, int nSpecCap, Pointer pCapParam, NET_DEVICEINFO_Ex lpDeviceInfo, IntByReference error/*= 0*/);
+
+    //  JNA直接调用方法定义,向设备注销
+    public boolean CLIENT_Logout(LLong lLoginID);
+
+    // 获取配置
+    // error 为设备返回的错误码: 0-成功 1-失败 2-数据不合法 3-暂时无法设置 4-没有权限
+    public boolean CLIENT_GetNewDevConfig(LLong lLoginID, String szCommand, int nChannelID, byte[] szOutBuffer, int dwOutBufferSize, IntByReference error, int waiitime,Pointer pReserved);
+
+    // 设置配置
+    public boolean CLIENT_SetNewDevConfig(LLong lLoginID, String szCommand, int nChannelID, byte[] szInBuffer, int dwInBufferSize, IntByReference error, IntByReference restart, int waittime);
+
+    // 删除配置接口(Json格式)
+    public boolean CLIENT_DeleteDevConfig(LLong lLoginID, NET_IN_DELETECFG pInParam, NET_OUT_DELETECFG pOutParam, int waittime);
+
+    // 获取配置成员名称接口(Json格式)(pInParam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_GetMemberNames(LLong lLoginID, NET_IN_MEMBERNAME pInParam, NET_OUT_MEMBERNAME pOutParam, int waittime);
+
+    // 解析查询到的配置信息
+    public boolean CLIENT_ParseData(String szCommand, byte[] szInBuffer, Pointer lpOutBuffer, int dwOutBufferSize, Pointer pReserved);
+
+    // 组成要设置的配置信息
+    public boolean CLIENT_PacketData(String szCommand, Pointer lpInBuffer, int dwInBufferSize, byte[] szOutBuffer, int dwOutBufferSize);
+
+    // 设置报警回调函数, fMessCallBack 回调
+    public void  CLIENT_SetDVRMessCallBack(Callback cbMessage, Pointer dwUser);
+
+    // 设置报警回调函数, fMessCallBackEx1 回调
+    public void  CLIENT_SetDVRMessCallBackEx1(fMessCallBackEx1 cbMessage, Pointer dwUser);
+
+    // 向设备订阅报警--扩展
+    public boolean  CLIENT_StartListenEx(LLong lLoginID);
+
+    // 停止订阅报警
+    public boolean CLIENT_StopListen(LLong lLoginID);
+
+    /////////////////////////////////目标识别接口/////////////////////////////////////////
+    //目标识别数据库信息操作(包括添加,修改和删除)
+    // pstInParam指向NET_IN_OPERATE_FACERECONGNITIONDB类型的指针
+    // pstOutParam指向NET_OUT_OPERATE_FACERECONGNITIONDB类型的指针
+    public boolean  CLIENT_OperateFaceRecognitionDB(LLong lLoginID, NET_IN_OPERATE_FACERECONGNITIONDB pstInParam, NET_OUT_OPERATE_FACERECONGNITIONDB pstOutParam, int nWaitTime);
+
+    // 按条件查询目标识别结果
+    // pstInParam指向NET_IN_STARTFIND_FACERECONGNITION类型的指针
+    // pstOutParam指向NET_OUT_STARTFIND_FACERECONGNITION类型的指针
+    public boolean  CLIENT_StartFindFaceRecognition(LLong lLoginID, NET_IN_STARTFIND_FACERECONGNITION pstInParam, NET_OUT_STARTFIND_FACERECONGNITION pstOutParam, int nWaitTime);
+
+    // 查找目标识别结果:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值<nFilecount则相应时间段内的文件查询完毕(每次最多只能查询20条记录)
+    // pstInParam指向NET_IN_DOFIND_FACERECONGNITION类型的指针
+    // pstOutParam指向NET_OUT_DOFIND_FACERECONGNITION类型的指针
+    public boolean  CLIENT_DoFindFaceRecognition(final NET_IN_DOFIND_FACERECONGNITION pstInParam, NET_OUT_DOFIND_FACERECONGNITION pstOutParam, int nWaitTime);
+
+    //结束查询
+    public boolean  CLIENT_StopFindFaceRecognition(LLong lFindHandle);
+
+    // 目标检测(输入一张大图,输入大图中被检测出来的人脸图片)
+    // pstInParam指向NET_IN_DETECT_FACE类型的指针
+    // pstOutParam指向NET_OUT_DETECT_FACE类型的指针
+    public boolean  CLIENT_DetectFace(LLong lLoginID, NET_IN_DETECT_FACE pstInParam, NET_OUT_DETECT_FACE pstOutParam, int nWaitTime);
+
+    // 目标识别人员组操作(包括添加,修改和删除)
+    // pstInParam指向NET_IN_OPERATE_FACERECONGNITION_GROUP类型的指针
+    // pstOutParam指向NET_OUT_OPERATE_FACERECONGNITION_GROUP类型的指针
+    public boolean  CLIENT_OperateFaceRecognitionGroup(LLong lLoginID, NET_IN_OPERATE_FACERECONGNITION_GROUP pstInParam, NET_OUT_OPERATE_FACERECONGNITION_GROUP pstOutParam, int nWaitTime);
+
+    // 查询目标识别人员组信息
+    // pstInParam指向NET_IN_FIND_GROUP_INFO类型的指针
+    // pstOutParam指向NET_OUT_FIND_GROUP_INFO类型的指针
+    public boolean  CLIENT_FindGroupInfo(LLong LLong, NET_IN_FIND_GROUP_INFO pstInParam, NET_OUT_FIND_GROUP_INFO pstOutParam, int nWaitTime);
+
+    // 获取布控在视频通道的组信息,pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_GetGroupInfoForChannel(LLong lLoginID, NET_IN_GET_GROUPINFO_FOR_CHANNEL pstInParam, NET_OUT_GET_GROUPINFO_FOR_CHANNEL pstOutParam, int nWaitTime);
+
+    // 布控通道人员组信息
+    // pstInParam指向NET_IN_SET_GROUPINFO_FOR_CHANNEL类型的指针
+    // pstOutParam指向NET_OUT_SET_GROUPINFO_FOR_CHANNEL类型的指针
+    public boolean CLIENT_SetGroupInfoForChannel(LLong lLoginID, NET_IN_SET_GROUPINFO_FOR_CHANNEL pstInParam, NET_OUT_SET_GROUPINFO_FOR_CHANNEL pstOutParam, int nWaitTime);
+
+    // 以人脸库的角度进行布控, pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_FaceRecognitionPutDisposition(LLong lLoginID, NET_IN_FACE_RECOGNITION_PUT_DISPOSITION_INFO pstInParam, NET_OUT_FACE_RECOGNITION_PUT_DISPOSITION_INFO pstOutParam, int nWaitTime);
+
+    // 以人脸库的角度进行撤控, pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_FaceRecognitionDelDisposition(LLong lLoginID, NET_IN_FACE_RECOGNITION_DEL_DISPOSITION_INFO pstInParam, NET_OUT_FACE_RECOGNITION_DEL_DISPOSITION_INFO pstOutParam, int nWaitTime);
+
+    // 订阅人脸查询状态
+    // pstInParam指向NET_IN_FACE_FIND_STATE类型的指针
+    // pstOutParam指向NET_OUT_FACE_FIND_STATE类型的指针
+    public LLong CLIENT_AttachFaceFindState(LLong lLoginID, NET_IN_FACE_FIND_STATE pstInParam, NET_OUT_FACE_FIND_STATE pstOutParam, int nWaitTime);
+
+    //取消订阅人脸查询状态,lAttachHandle为CLIENT_AttachFaceFindState返回的句柄
+    public boolean CLIENT_DetachFaceFindState(LLong lAttachHandle);
+
+    // 文件下载, 只适用于小文件,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_DownloadRemoteFile(LLong lLoginID, NET_IN_DOWNLOAD_REMOTE_FILE pInParam, NET_OUT_DOWNLOAD_REMOTE_FILE pOutParam, int nWaitTime);
+
+    // 打开日志功能
+    // pstLogPrintInfo指向LOG_SET_PRINT_INFO的指针
+    public boolean CLIENT_LogOpen(LOG_SET_PRINT_INFO pstLogPrintInfo);
+
+    // 关闭日志功能
+    public boolean CLIENT_LogClose();
+
+    // 获取符合查询条件的文件总数
+    // reserved为void *
+    public boolean CLIENT_GetTotalFileCount(LLong lFindHandle, IntByReference pTotalCount, Pointer reserved, int waittime);
+
+    // 设置查询跳转条件
+    // reserved为void *
+    public boolean  CLIENT_SetFindingJumpOption(LLong lFindHandle, NET_FINDING_JUMP_OPTION_INFO pOption, Pointer reserved, int waittime);
+
+    // 按查询条件查询文件
+    // pQueryCondition为void *, 具体类型根据emType的类型确定,对应 EM_FILE_QUERY_TYPE
+    // reserved为void *, 具体类型根据emType的类型确定
+    public LLong CLIENT_FindFileEx(LLong lLoginID, int emType, Pointer pQueryCondition, Pointer reserved, int waittime);
+
+    // 查找文件:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值<nFilecount则相应时间段内的文件查询完毕
+    // pMediaFileInfo为void *
+    // reserved为void *
+    public int CLIENT_FindNextFileEx(LLong lFindHandle, int nFilecount, Pointer pMediaFileInfo, int maxlen, Pointer reserved, int waittime);
+
+    // 结束录像文件查找
+    public boolean CLIENT_FindCloseEx(LLong lFindHandle);
+
+    // 实时上传智能分析数据-图片(扩展接口,bNeedPicFile表示是否订阅图片文件,Reserved类型为RESERVED_PARA)
+    // bNeedPicFile为BOOL类型,取值范围为0或者1, fAnalyzerDataCallBack回调
+    public LLong CLIENT_RealLoadPictureEx(LLong lLoginID, int nChannelID, int dwAlarmType, int bNeedPicFile, Callback cbAnalyzerData, Pointer dwUser, Pointer Reserved);
+
+    // 停止上传智能分析数据-图片
+    public boolean CLIENT_StopLoadPic(LLong lAnalyzerHandle);
+
+    // 设置抓图回调函数, fSnapRev回调
+    public void CLIENT_SetSnapRevCallBack(Callback OnSnapRevMessage, Pointer dwUser);
+
+    // 抓图请求扩展接口
+    public boolean CLIENT_SnapPictureEx(LLong lLoginID, SNAP_PARAMS stParam, IntByReference reserved);
+
+    // 异步搜索局域网内IPC、NVS等设备, fSearchDevicesCB回调
+    public LLong CLIENT_StartSearchDevices(Callback cbSearchDevices, Pointer pUserData, String szLocalIp);
+
+    // 停止异步搜索局域网内IPC、NVS等设备
+    public boolean CLIENT_StopSearchDevices(LLong lSearchHandle);
+
+    // 同步跨网段搜索设备IP (pIpSearchInfo内存由用户申请释放)DEVICE_IP_SEARCH_INFO
+    // szLocalIp为本地IP,可不做输入, fSearchDevicesCB回调
+    // 接口调用1次只发送搜索信令1次
+    public boolean CLIENT_SearchDevicesByIPs(Pointer pIpSearchInfo, Callback cbSearchDevices, Pointer dwUserData, String szLocalIp, int dwWaitTime);
+
+    // 开始实时预览
+    // rType  : NET_RealPlayType    返回监控句柄
+    public LLong CLIENT_RealPlayEx(LLong lLoginID, int nChannelID, Pointer hWnd, int rType);
+
+    // 停止实时预览--扩展     lRealHandle为CLIENT_RealPlayEx的返回值
+    public boolean CLIENT_StopRealPlayEx(LLong lRealHandle);
+
+    // 开始实时预览支持设置码流回调接口     rType  : NET_RealPlayType   返回监控句柄
+    // cbRealData 对应 fRealDataCallBackEx 回调
+    // cbDisconnect 对应 fRealPlayDisConnect 回调
+    public LLong CLIENT_StartRealPlay(LLong lLoginID, int nChannelID, Pointer hWnd, int rType, Callback cbRealData, Callback cbDisconnect, Pointer dwUser, int dwWaitTime);
+
+    // 停止实时预览
+    public boolean CLIENT_StopRealPlay(LLong lRealHandle);
+
+    // 设置实时预览数据回调函数扩展接口    lRealHandle监控句柄,fRealDataCallBackEx 回调
+    public boolean CLIENT_SetRealDataCallBackEx(LLong lRealHandle, Callback cbRealData, Pointer dwUser, int dwFlag);
+
+    // 设置图象流畅性
+    // 将要调整图象的等级(0-6),当level为0时,图象最流畅;当level为6时,图象最实时。Level的默认值为3。注意:直接解码下有效
+    public boolean CLIENT_AdjustFluency(LLong lRealHandle, int nLevel);
+
+
+    // 保存数据为文件,lRealHandle为CLIENT_RealPlayEx的返回值,pchFileName为实时预览保存文件名
+    public boolean CLIENT_SaveRealData(LLong lRealHandle, String pchFileName);
+
+    // 结束保存数据为文件,lRealHandle为CLIENT_RealPlayEx的返回值
+    public boolean CLIENT_StopSaveRealData(LLong lRealHandle);
+
+    // 打开声音
+    public boolean CLIENT_OpenSound(LLong hPlayHandle);
+
+    // 关闭声音
+    public boolean CLIENT_CloseSound();
+
+    // 设置显示源(pInparam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_MatrixSetCameras(LLong lLoginID, NET_IN_MATRIX_SET_CAMERAS pInParam, NET_OUT_MATRIX_SET_CAMERAS pOutParam, int nWaitTime);
+
+    // 获取所有有效显示源
+    // pInParam  对应  NET_IN_MATRIX_GET_CAMERAS
+    // pOutParam 对应  NET_OUT_MATRIX_GET_CAMERAS
+    public boolean CLIENT_MatrixGetCameras(LLong lLoginID, NET_IN_MATRIX_GET_CAMERAS pInParam, NET_OUT_MATRIX_GET_CAMERAS pOutParam, int nWaitTime);
+
+    // 抓图同步接口,将图片数据直接返回给用户
+   // public boolean CLIENT_SnapPictureToFile(LLong lLoginID, NET_IN_SNAP_PIC_TO_FILE_PARAM pInParam, NET_OUT_SNAP_PIC_TO_FILE_PARAM pOutParam, int nWaitTime);
+    public boolean CLIENT_SnapPictureToFile(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+    // 查询时间段内的所有录像文件
+    // nRecordFileType 录像类型 0:所有录像  1:外部报警  2:动态监测报警  3:所有报警  4:卡号查询   5:组合条件查询   6:录像位置与偏移量长度   8:按卡号查询图片(目前仅HB-U和NVS特殊型号的设备支持)  9:查询图片(目前仅HB-U和NVS特殊型号的设备支持)  10:按字段查询    15:返回网络数据结构(金桥网吧)  16:查询所有透明串数据录像文件
+    // nriFileinfo 返回的录像文件信息,是一个 NET_RECORDFILE_INFO 结构数组
+    // maxlen 是 nriFileinfo缓冲的最大长度(单位字节,建议在(100~200)*sizeof(NET_RECORDFILE_INFO)之间)
+    // filecount返回的文件个数,属于输出参数最大只能查到缓冲满为止的录像记录;
+    // bTime 是否按时间查(目前无效)
+    public boolean CLIENT_QueryRecordFile(LLong lLoginID, int nChannelId, int nRecordFileType, NET_TIME tmStart, NET_TIME tmEnd, String pchCardid, NET_RECORDFILE_INFO[] stFileInfo, int maxlen, IntByReference filecount, int waittime, boolean bTime);
+
+    // NET_RECORDFILE_INFO[] stFileInfo Pointer 版本
+    public boolean CLIENT_QueryRecordFile(LLong lLoginID, int nChannelId, int nRecordFileType, NET_TIME tmStart, NET_TIME tmEnd, String pchCardid, Pointer pFileInfo, int maxlen, IntByReference filecount, int waittime, boolean bTime);
+
+    // 查询时间段内是否有录像文件   bResult输出参数,true有录像,false没录像
+    public boolean CLIENT_QueryRecordTime(LLong lLoginID, int nChannelId, int nRecordFileType, NET_TIME tmStart, NET_TIME tmEnd, String pchCardid, IntByReference bResult, int waittime);
+
+    // 通过时间下载录像--扩展
+    // nRecordFileType 对应 EM_QUERY_RECORD_TYPE
+    // cbTimeDownLoadPos 对应 fTimeDownLoadPosCallBack 回调
+    // fDownLoadDataCallBack 对应 fDataCallBack 回调
+    public LLong CLIENT_DownloadByTimeEx(LLong lLoginID, int nChannelId, int nRecordFileType,
+                                         NET_TIME tmStart, NET_TIME tmEnd, String sSavedFileName,
+                                         Callback cbTimeDownLoadPos, Pointer dwUserData,
+                                         Callback fDownLoadDataCallBack, Pointer dwDataUser,
+                                         Pointer pReserved);
+
+    // 停止录像下载
+    public boolean CLIENT_StopDownload(LLong lFileHandle);
+
+    /******************************************************************************
+     功能描述	:	通过时间下载录像--扩展,可加载码流转换库
+     输入参数	:
+     lLoginID:       登录接口返回的句柄
+     nChannelId:     视频通道号,从0开始
+     nRecordFileType:录像类型 0 所有录像文件
+     1 外部报警
+     2 动态检测报警
+     3 所有报警
+     4 卡号查询
+     5 组合条件查询
+     6 录像位置与偏移量长度
+     8 按卡号查询图片(目前仅HB-U和NVS特殊型号的设备支持)
+     9 查询图片(目前仅HB-U和NVS特殊型号的设备支持)
+     10 按字段查询
+     15 返回网络数据结构(金桥网吧)
+     16 查询所有透明串数据录像文件
+     tmStart:        开始时间
+     tmEnd:          结束时间
+     sSavedFileName: 保存录像文件名,支持全路径
+     cbTimeDownLoadPos: 下载进度回调函数(回调下载进度,下载结果), 对应回调   fTimeDownLoadPosCallBack
+     dwUserData:     下载进度回调对应用户数据
+     fDownLoadDataCallBack: 录像数据回调函数(回调形式暂不支持转换PS流),对应回调  fDataCallBack
+     dwDataUser:     录像数据回调对应用户数据
+     scType:         码流转换类型,0-DAV码流(默认); 1-PS流,3-MP4
+     pReserved:      保留参数,后续扩展
+     输出参数	:	N/A
+     返 回 值	:	LLONG 下载录像句柄
+     其他说明	:	特殊接口,SDK默认不支持转PS流,需SDK
+     ******************************************************************************/
+    public LLong CLIENT_DownloadByTimeEx2(LLong lLoginID, int nChannelId, int nRecordFileType,
+                                          NET_TIME tmStart, NET_TIME tmEnd, String sSavedFileName,
+                                          Callback cbTimeDownLoadPos, Pointer dwUserData,
+                                          Callback fDownLoadDataCallBack, Pointer dwDataUser,
+                                          int scType, Pointer pReserved);
+
+    /**
+     * 下载录像文件--扩展
+     * sSavedFileName 不为空, 录像数据写入到该路径对应的文件; fDownLoadDataCallBack不为空, 录像数据通过回调函数返回
+     * pReserved 指加密录像的密码(长度不小于 8 的字符串)
+     *
+     * @param lLoginID 登录句柄
+     * @param lpRecordFile 录像信息
+     * @param sSavedFileName 本地保存路径 如果要保存到本地则必填
+     * @param cbDownLoadPos 下载进度回调 建议使用 可以在下载完成时调结束下载接口
+     * @param dwUserData 下载进度回调对应用户数据 不建议使用 直接填 null
+     * @param fDownLoadDataCallBack 下载数据回调 不为 null 则录像数据
+     * @param dwDataUser 录像数据回调对应用户数据 不建议使用 直接填 null
+     * @param pReserved pReserved 指加密录像的密码(长度不小于 8 的字符串) 没有的话填 null
+     * @return 录像下载句柄fDownLoadDataCallBack
+     */
+    public LLong CLIENT_DownloadByRecordFileEx(LLong lLoginID, LPNET_RECORDFILE_INFO lpRecordFile, Pointer sSavedFileName,
+                                               Callback cbDownLoadPos, Pointer dwUserData,
+                                               Callback fDownLoadDataCallBack, Pointer dwDataUser, Pointer pReserved);
+
+    // 下载录像文件--扩展 重载接口
+    // lpRecordFile 类型 替换为 NET_RECORDFILE_INFO
+    public LLong CLIENT_DownloadByRecordFileEx(LLong lLoginID, NET_RECORDFILE_INFO lpRecordFile, Pointer sSavedFileName,
+                                               Callback cbDownLoadPos, Pointer dwUserData,
+                                               Callback fDownLoadDataCallBack, Pointer dwDataUser, Pointer pReserved);
+
+    // 自适应速度的按文件下载录像, pstInParam 和 pstOutParam 资源由用户申请和释放
+    // pstInParam->NET_IN_DOWNLOAD_BYFILE_SELFADAPT
+    // pstOutParam->NET_OUT_DOWNLOAD_BYFILE_SELFADAPT
+    public LLong CLIENT_DownloadByFileSelfAdapt(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int dwWaitTime);
+
+    // 自适应速度的按时间下载录像
+    // pstInParam->NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME
+    // pstOutParam->NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME
+    public LLong CLIENT_AdaptiveDownloadByTime( LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int dwWaitTime );
+
+    // 私有云台控制扩展接口,支持三维快速定位
+    public boolean CLIENT_DHPTZControlEx(LLong lLoginID, int nChannelID, int dwPTZCommand, int lParam1, int lParam2, int lParam3, int dwStop);
+
+    // 云台控制扩展接口,支持三维快速定位,鱼眼
+    // dwStop类型为BOOL, 取值0或者1
+    // dwPTZCommand取值为NET_EXTPTZ_ControlType中的值或者是NET_PTZ_ControlType中的值
+    // NET_IN_PTZBASE_MOVEABSOLUTELY_INFO
+    // 精准绝对移动控制命令, param4对应结构 NET_IN_PTZBASE_MOVEABSOLUTELY_INFO(通过 CFG_CAP_CMD_PTZ 命令获取云台能力集( CFG_PTZ_PROTOCOL_CAPS_INFO ),若bSupportReal为TRUE则设备支持该操作)
+    public boolean CLIENT_DHPTZControlEx2(LLong lLoginID, int nChannelID, int dwPTZCommand, int lParam1, int lParam2, int lParam3, int dwStop, Pointer param4);
+
+    // 设备控制(param内存由用户申请释放)  emType对应 枚举 CtrlType
+    public boolean CLIENT_ControlDevice(LLong lLoginID, int emType, Pointer param, int waittime);
+
+    // 设备控制扩展接口,兼容 CLIENT_ControlDevice (pInBuf, pOutBuf内存由用户申请释放)
+    // emType的取值为CtrlType中的值
+    public boolean CLIENT_ControlDeviceEx(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    // 查询配置信息(lpOutBuffer内存由用户申请释放)
+    public boolean CLIENT_GetDevConfig(LLong lLoginID, int dwCommand, int lChannel, Pointer lpOutBuffer, int dwOutBufferSize, IntByReference lpBytesReturned, int waittime);
+
+    // 设置配置信息(lpInBuffer内存由用户申请释放)
+    public boolean CLIENT_SetDevConfig(LLong lLoginID, int dwCommand, int lChannel, Pointer lpInBuffer, int dwInBufferSize, int waittime);
+
+    // 查询设备状态(pBuf内存由用户申请释放)
+    // pBuf指向char *,输出参数
+    // pRetLen指向int *;输出参数,实际返回的数据长度,单位字节
+    public boolean CLIENT_QueryDevState(LLong lLoginID, int nType, Pointer pBuf, int nBufLen, IntByReference pRetLen, int waittime);
+
+    // 查询远程设备状态(pBuf内存由用户申请释放)
+    // nType为DH_DEVSTATE_ALARM_FRONTDISCONNECT时,通道号从1开始
+    public boolean CLIENT_QueryRemotDevState(LLong lLoginID, int nType, int nChannelID, Pointer pBuf, int nBufLen, IntByReference pRetLen, int waittime);
+
+    // 获取设备能力接口
+    // pInBuf指向void*,输入参数结构体指针       pOutBuf指向void*,输出参数结构体指针
+    public boolean CLIENT_GetDevCaps(LLong lLoginID, int nType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    // 新系统能力查询接口,查询系统能力信息(以Json格式,具体见配置SDK)(szOutBuffer内存由用户申请释放)
+    // szCommand: 对应命令查看上文
+    // szOutBuffer: 获取到的信息, 通过 CLIENT_ParseData 解析
+    // error 指向 int * : 错误码大于0表示设备返回的,小于0表示缓冲不够或数据校验引起的
+    public boolean CLIENT_QueryNewSystemInfo(LLong lLoginID, String szCommand, int nChannelID, byte[] szOutBuffer, int dwOutBufferSize, IntByReference error, int waittime);
+
+    // 新系统能力查询接口扩展,查询系统能力信息,入参新增扩展数据(以Json格式,具体见配置SDK)(szOutBuffer内存由用户申请释放)
+    public boolean CLIENT_QueryNewSystemInfoEx(LLong lLoginID, String szCommand, int nChannelID, byte[] szOutBuffer, int dwOutBufferSize, IntByReference error, Pointer pExtendInfo , int waittime);
+
+    // 查询系统能力信息(pSysInfoBuffer内存由用户申请释放,大小参照DH_SYS_ABILITY对应的结构体,若nSystemType为 ABILITY_DYNAMIC_CONNECT ,内存大小至少为sizeof(BOOL),若nSystemType为ABILITY_TRIGGER_MODE,内存大小为sizeof(int))
+    public boolean CLIENT_QuerySystemInfo(LLong lLoginID, int nSystemType, String pSysInfoBuffer, int nChannelID, byte[] szOutBuffer, int dwOutBufferSize, IntByReference error, int waittime);
+
+    // 订阅视频统计摘要信息
+    public LLong CLIENT_AttachVideoStatSummary(LLong lLoginID, NET_IN_ATTACH_VIDEOSTAT_SUM pInParam, NET_OUT_ATTACH_VIDEOSTAT_SUM pOutParam, int nWaitTime);
+
+    // 取消订阅视频统计摘要信息,lAttachHandle为CLIENT_AttachVideoStatSummary的返回值
+    public boolean CLIENT_DetachVideoStatSummary(LLong lAttachHandle);
+
+    // 开始查询视频统计信息/获取人数统计信息
+    public LLong CLIENT_StartFindNumberStat(LLong lLoginID, NET_IN_FINDNUMBERSTAT pstInParam, NET_OUT_FINDNUMBERSTAT pstOutParam);
+
+    // 继续查询视频统计/继续查询人数统计
+    public int CLIENT_DoFindNumberStat(LLong lFindHandle, NET_IN_DOFINDNUMBERSTAT pstInParam, NET_OUT_DOFINDNUMBERSTAT pstOutParam);
+
+    // 结束查询视频统计/结束查询人数统计
+    public boolean CLIENT_StopFindNumberStat(LLong lFindHandle);
+
+    // 设置语音对讲模式,客户端方式还是服务器方式
+    // emType : 方式类型 参照 EM_USEDEV_MODE
+    public boolean CLIENT_SetDeviceMode(LLong lLoginID, int emType, Pointer pValue);
+
+    ///////////////// 录像回放相关接口 ///////////////////////
+    // 按时间方式回放
+    public LLong CLIENT_PlayBackByTime(LLong lLoginID, int nChannelID, NET_TIME lpStartTime, NET_TIME lpStopTime, Pointer hWnd, fDownLoadPosCallBack cbDownLoadPos, Pointer dwPosUser);
+
+    // 按时间方式回放--扩展接口
+    // cbDownLoadPos 对应 fDownLoadPosCallBack 回调
+    // fDownLoadDataCallBack 对应 fDataCallBack 回调
+    public LLong CLIENT_PlayBackByTimeEx(LLong lLoginID, int nChannelID, NET_TIME lpStartTime, NET_TIME lpStopTime, Pointer hWnd,
+                                         Callback cbDownLoadPos, Pointer dwPosUser,
+                                         Callback fDownLoadDataCallBack, Pointer dwDataUser);
+
+    public LLong CLIENT_PlayBackByTimeEx2(LLong lLoginID, int nChannelID, NET_IN_PLAY_BACK_BY_TIME_INFO pstNetIn, NET_OUT_PLAY_BACK_BY_TIME_INFO pstNetOut);
+
+    // 停止录像回放接口
+    public boolean CLIENT_StopPlayBack(LLong lPlayHandle);
+
+    // 获取回放OSD时间
+    public boolean CLIENT_GetPlayBackOsdTime(LLong lPlayHandle, NET_TIME lpOsdTime, NET_TIME lpStartTime, NET_TIME lpEndTime);
+
+    // 暂停或恢复录像回放
+    // bPause: 1 - 暂停	0 - 恢复
+    public boolean CLIENT_PausePlayBack(LLong lPlayHandle, int bPause);
+
+    // 快进录像回放
+    public boolean CLIENT_FastPlayBack(LLong lPlayHandle);
+
+    // 慢进录像回放
+    public boolean CLIENT_SlowPlayBack(LLong lPlayHandle);
+
+    // 恢复正常回放速度
+    public boolean CLIENT_NormalPlayBack(LLong lPlayHandle);
+
+    // 设置录像回放速度, emSpeed 对应枚举 EM_PLAY_BACK_SPEED
+    public boolean CLIENT_SetPlayBackSpeed(LLong lPlayHandle, int emSpeed);
+
+    // 查询设备当前时间
+    public boolean CLIENT_QueryDeviceTime(LLong lLoginID, NET_TIME pDeviceTime, int waittime);
+
+    // 设置设备当前时间
+    public boolean CLIENT_SetupDeviceTime(LLong lLoginID, NET_TIME pDeviceTime);
+
+    // 获得亮度、色度、对比度、饱和度的参数
+    // param1/param2/param3/param4 四个参数范围0~255
+    public boolean CLIENT_ClientGetVideoEffect(LLong lPlayHandle, byte[] nBrightness, byte[] nContrast, byte[] nHue, byte[] nSaturation);
+
+    // 设置亮度、色度、对比度、饱和度的参数
+    // nBrightness/nContrast/nHue/nSaturation四个参数为 unsigned byte 范围0~255
+    public boolean CLIENT_ClientSetVideoEffect(LLong lPlayHandle, byte nBrightness, byte nContrast, byte nHue, byte nSaturation);
+
+    //------------------------用户管理-----------------------
+    // 查询用户信息--扩展(info内存由用户申请释放,大小为sizeof(USER_MANAGE_INFO_EX))
+    public boolean CLIENT_QueryUserInfoEx(LLong lLoginID, USER_MANAGE_INFO_EX info, int waittime);
+
+    // 查询用户信息--最大支持64通道设备
+    // pReserved指向void*
+    public boolean CLIENT_QueryUserInfoNew(LLong lLoginID, USER_MANAGE_INFO_NEW info, Pointer pReserved, int nWaittime);
+
+    // 设置用户信息接口--操作设备用户--最大支持64通道设备
+    // opParam指向void*           subParam指向void*
+    // pReserved指向void*
+    // opParam(设置用户信息的输入缓冲)和subParam(设置用户信息的辅助输入缓冲)对应结构体类型USER_GROUP_INFO_NEW或USER_INFO_NEW
+    public boolean CLIENT_OperateUserInfoNew(LLong lLoginID, int nOperateType, Pointer opParam, Pointer subParam, Pointer pReserved, int nWaittime);
+
+    /**
+     * // 查询设备日志,以分页方式查询(pQueryParam, pLogBuffer内存由用户申请释放)
+     * CLIENT_NET_API BOOL CALL_METHOD CLIENT_QueryDeviceLog(LLONG lLoginID, QUERY_DEVICE_LOG_PARAM *pQueryParam, char *pLogBuffer, int nLogBufferLen, int *pRecLogNum, int waittime=3000);
+     * pQueryParam 对应结构体QUERY_DEVICE_LOG_PARAM
+     * pLogBuffer:char *
+     * waitTime:默认3000
+     */
+    public boolean CLIENT_QueryDeviceLog(LLong lLoginID, Pointer pQueryParam, Pointer pLogBuffer, int nLogBufferLen, IntByReference pRecLogNum, int waittime);
+
+
+    //----------------------语音对讲--------------------------
+    // 向设备发起语音对讲请求          pfcb是用户自定义的数据回调接口, pfAudioDataCallBack 回调
+    public LLong CLIENT_StartTalkEx(LLong lLoginID, Callback pfcb, Pointer dwUser);
+
+    // 停止语音对讲        lTalkHandle语音对讲句柄,是CLIENT_StartTalkEx的返回 值
+    public boolean CLIENT_StopTalkEx(LLong lTalkHandle);
+
+    // 启动本地录音功能(只在Windows平台下有效),录音采集出来的音频数据通过CLIENT_StartTalkEx的回调函数回调给用户,对应操作是CLIENT_RecordStopEx
+    // lLoginID是CLIENT_Login的返回值
+    public boolean CLIENT_RecordStartEx(LLong lLoginID);
+
+    // 开始PC端录音
+    public boolean CLIENT_RecordStart();
+
+    // 结束PC端录音
+    public boolean CLIENT_RecordStop();
+
+    // 停止本地录音(只在Windows平台下有效),对应操作是CLIENT_RecordStartEx。
+    public boolean CLIENT_RecordStopEx(LLong lLoginID);
+
+    // 向设备发送用户的音频数据,这里的数据可以是从CLIENT_StartTalkEx的回调接口中回调出来的数据
+    public LLong CLIENT_TalkSendData(LLong lTalkHandle, Pointer pSendBuf, int dwBufSize);
+
+    // 解码音频数据扩展接口(只在Windows平台下有效)    pAudioDataBuf是要求解码的音频数据内容
+    public void CLIENT_AudioDec(Pointer pAudioDataBuf, int dwBufSize);
+    public boolean CLIENT_AudioDecEx(LLong lTalkHandle, Pointer pAudioDataBuf, int dwBufSize);
+
+    // 音频格式信息
+    public class NET_AUDIO_FORMAT extends SdkStructure
+    {
+        public byte              byFormatTag;                   // 编码类型,如0:PCM
+        public short             nChannels;                     // 声道数
+        public short             wBitsPerSample;                // 采样深度
+        public int               nSamplesPerSec;                // 采样率
+    }
+    // 音频格式信息
+    public class LPDH_AUDIO_FORMAT extends SdkStructure
+    {
+        public byte              byFormatTag;                   // 编码类型,如0:PCM
+        public short             nChannels;                     // 声道数
+        public short             wBitsPerSample;                // 采样深度
+        public int               nSamplesPerSec;                // 采样率
+    }
+
+    // 音频编码--初始化(特定标准格式->私有格式) 初始化对讲中的音频编码接口,告诉SDK内部要编码的源音频数据的音频格式,对不支持的音频格式初始化会失败
+    public int CLIENT_InitAudioEncode(NET_AUDIO_FORMAT aft);
+
+    // 进行音频的数据二次编码,从标准音频格式转换成设备支持的格式
+    // 音频编码--数据编码(lpInBuf, lpOutBuf内存由用户申请释放)
+    public int CLIENT_AudioEncode(LLong lTalkHandle, Pointer lpInBuf, IntByReference lpInLen, Pointer lpOutBuf, IntByReference lpOutLen);
+
+    // 音频编码--完成退出  解码功能使用完毕后,告诉接口清理内部资源
+    public int CLIENT_ReleaseAudioEncode();
+
+    //----------------------语音对讲音频裸数据相关接口--------------------------
+
+    /**
+     * 打开语音对讲,这个接口可以从回调中得到音频裸数据,而CLIENT_StartTalkEx只能得到带音频头的数据
+     * @param lLoginID
+     * @param pInParam -> NET_IN_START_TALK_INFO
+     * @param pOutParam -> NET_OUT_START_TALK_INFO
+     * @param nWaittime
+     * @return LLong
+     */
+    public LLong CLIENT_StartTalkByDataType(LLong lLoginID, Pointer pInParam, Pointer pOutParam,int nWaittime);
+
+    /**
+     * 发送语音数据到设备 返回值为发送给设备的音频流长度,-1表示接口调用失败
+     * @param lTalkHandle
+     * @param pInParam -> NET_IN_TALK_SEND_DATA_STREAM
+     * @param pOutParam -> NET_OUT_TALK_SEND_DATA_STREAM
+     * @return LLong 返回值为发送给设备的音频流长度,-1表示接口调用失败
+     */
+    public LLong CLIENT_TalkSendDataByStream(LLong lTalkHandle, Pointer pInParam, Pointer pOutParam);
+
+    /**
+     * 发送语音文件中的音频数据到设备 成功返回 lTalkHandle, 失败返回 0
+     * @param lTalkHandle
+     * @param pInParam -> NET_IN_TALK_SEND_DATA_FILE
+     * @param pOutParam -> NET_OUT_TALK_SEND_DATA_FILE
+     * @return LLong 成功返回 lTalkHandle, 失败返回 0
+     */
+    public LLong CLIENT_TalkSendDataByFile(LLong lTalkHandle, Pointer pInParam, Pointer pOutParam);
+
+
+    /**
+     * 停止发送音频文件
+     */
+    public boolean CLIENT_StopTalkSendDataByFile(LLong lTalkHandle);
+
+     /**
+      * 用户自定义的数据回调   lTalkHandle是CLIENT_StartTalkByDataType的返回值
+      * @param stAudioInfo -> NET_AUDIO_DATA_CB_INFO
+      * @param byAudioFlag -> 音频数据来源,参考枚举 EM_AUDIO_SOURCE_FLAG
+      * @param dwUser -> 用户自定义数据
+      */
+    public interface fAudioDataCallBackEx extends Callback {
+        public void invoke(LLong lTalkHandle, NET_AUDIO_DATA_CB_INFO stAudioInfo, int emAudioFlag,Pointer dwUser);
+    }
+
+    /**
+     * 音频文件发送进度回调函数
+     * @param lTalkHandle
+     * @param dwTotalSize
+     * @param dwSendSize
+     */
+    public interface fTalkSendPosCallBack extends Callback {
+       public void invoke(LLong lTalkHandle, int dwTotalSize, int dwSendSize,Pointer dwUser);
+    }
+
+    //-------------------允许名单-------------------------
+    // 按查询条件查询记录          pInParam查询记录参数        pOutParam返回查询句柄
+    // 可以先调用本接口获得查询句柄,再调用  CLIENT_FindNextRecord函数获取记录列表,查询完毕可以调用CLIENT_FindRecordClose关闭查询句柄。
+    public boolean CLIENT_FindRecord(LLong lLoginID, NET_IN_FIND_RECORD_PARAM pInParam, NET_OUT_FIND_RECORD_PARAM pOutParam, int waittime);
+
+    // 查找记录:nFilecount:需要查询的条数, 返回值为媒体文件条数 返回值小于nFilecount则相应时间段内的文件查询完毕
+    public boolean CLIENT_FindNextRecord(NET_IN_FIND_NEXT_RECORD_PARAM pInParam, NET_OUT_FIND_NEXT_RECORD_PARAM pOutParam, int waittime);
+
+    // 结束记录查找,lFindHandle是CLIENT_FindRecord的返回值
+    public boolean CLIENT_FindRecordClose(LLong lFindHandle);
+
+    // 查找记录条数,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_QueryRecordCount(NET_IN_QUEYT_RECORD_COUNT_PARAM pInParam, NET_OUT_QUEYT_RECORD_COUNT_PARAM pOutParam, int waittime);
+
+    // 禁止/允许名单操作 ,pstOutParam = null;
+    public boolean CLIENT_OperateTrafficList(LLong lLoginID, NET_IN_OPERATE_TRAFFIC_LIST_RECORD pstInParam, NET_OUT_OPERATE_TRAFFIC_LIST_RECORD pstOutParam, int waittime);
+
+    // 文件上传控制接口,允许名单上传需要三个步骤配合使用,CLIENT_FileTransmit的 NET_DEV_BLACKWHITETRANS_START、  NET_DEV_BLACKWHITETRANS_SEND、   NET_DEV_BLACKWHITETRANS_STOP,如下所示
+    // fTransFileCallBack 回调
+    public LLong CLIENT_FileTransmit(LLong lLoginID, int nTransType, Pointer szInBuf, int nInBufLen, Callback cbTransFile, Pointer dwUserData, int waittime);
+
+    // 查询设备信息
+    public boolean CLIENT_QueryDevInfo(LLong lLoginID, int nQueryType, Pointer pInBuf, Pointer pOutBuf, Pointer pReservedL, int nWaitTime);
+
+    // ------------------车载GPS-------------------------
+    // 设置GPS订阅回调函数--扩展, fGPSRevEx 回调
+    public void CLIENT_SetSubcribeGPSCallBackEX(Callback OnGPSMessage, Pointer dwUser);
+
+    // 设置GPS订阅回调函数--扩展2, fGPSRevEx2 回调
+    public void CLIENT_SetSubcribeGPSCallBackEX2(Callback OnGPSMessage, Pointer dwUser);
+
+    // GPS信息订阅
+    // bStart:表明是订阅还是取消          InterTime:订阅时间内GPS发送频率(单位秒)
+    // KeepTime:订阅持续时间(单位秒) 值为-1时,订阅时间为极大值,可视为永久订阅
+    // 订阅时间内GPS发送频率(单位秒)
+    public boolean CLIENT_SubcribeGPS(LLong lLoginID, int bStart, int KeepTime, int InterTime);
+
+    // 设置文件长度, pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_PreUploadRemoteFile(LLong lLoginID, NET_IN_PRE_UPLOAD_REMOTE_FILE pInParam, NET_OUT_PRE_UPLOAD_REMOTE_FILE pOutParam, int nWaitTime);
+
+    // 同步文件上传, 只适用于小文件
+    public boolean CLIENT_UploadRemoteFile(LLong lLoginID, NET_IN_UPLOAD_REMOTE_FILE pInParam, NET_OUT_UPLOAD_REMOTE_FILE pOutParam, int nWaitTime);
+
+    // 显示目录中文件和子目录,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_ListRemoteFile(LLong lLoginID, NET_IN_LIST_REMOTE_FILE pInParam, NET_OUT_LIST_REMOTE_FILE pOutParam, int nWaitTime);
+
+    // 删除文件或目录,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_RemoveRemoteFiles(LLong lLoginID, NET_IN_REMOVE_REMOTE_FILES pInParam, NET_OUT_REMOVE_REMOTE_FILES pOutParam, int nWaitTime);
+
+    // 过车记录订阅
+    public LLong CLIENT_ParkingControlAttachRecord(LLong lLoginID, NET_IN_PARKING_CONTROL_PARAM pInParam, NET_OUT_PARKING_CONTROL_PARAM pOutParam, int nWaitTime);
+
+    // 取消过车记录订阅
+    public boolean CLIENT_ParkingControlDetachRecord(LLong lAttachHandle);
+
+    // 开始过车记录查询
+    public LLong CLIENT_ParkingControlStartFind(LLong lLoginID, NET_IN_PARKING_CONTROL_START_FIND_PARAM pInParam, NET_OUT_PARKING_CONTROL_START_FIND_PARAM pOutParam, int waittime);
+
+    // 获取过车记录
+    public boolean CLIENT_ParkingControlDoFind(LLong lFindeHandle, NET_IN_PARKING_CONTROL_DO_FIND_PARAM pInParam, NET_OUT_PARKING_CONTROL_DO_FIND_PARAM pOutParam, int waittime);
+
+    // 结束过车记录查询
+    public boolean CLIENT_ParkingControlStopFind(LLong lFindHandle);
+
+    // 车位状态订阅,pInParam与pOutParam内存由用户申请释放
+    public LLong CLIENT_ParkingControlAttachParkInfo(LLong lLoginID, NET_IN_PARK_INFO_PARAM pInParam, NET_OUT_PARK_INFO_PARAM pOutParam, int nWaitTime);
+
+    // 取消车位状态订阅
+    public boolean CLIENT_ParkingControlDetachParkInfo(LLong lAttachHandle);
+
+    // 清除异常车位车辆信息 NET_IN_REMOVE_PARKING_CAR_INFO, NET_OUT_REMOVE_PARKING_CAR_INFO
+    public boolean CLIENT_RemoveParkingCarInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 电源控制,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_PowerControl(LLong lLoginID, NET_IN_WM_POWER_CTRL pInParam, NET_OUT_WM_POWER_CTRL pOutParam, int nWaitTime);
+
+    // 载入/保存预案,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_LoadMonitorWallCollection(LLong lLoginID, NET_IN_WM_LOAD_COLLECTION pInParam, NET_OUT_WM_LOAD_COLLECTION pOutParam, int nWaitTime);
+    public boolean CLIENT_SaveMonitorWallCollection(LLong lLoginID, NET_IN_WM_SAVE_COLLECTION pInParam, NET_OUT_WM_SAVE_COLLECTION pOutParam, int nWaitTime);
+
+    // 获取电视墙预案,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_GetMonitorWallCollections(LLong lLoginID, NET_IN_WM_GET_COLLECTIONS pInParam, NET_OUT_WM_GET_COLLECTIONS pOutParam, int nWaitTime);
+
+    // 查询/设置显示源(pstuSplitSrc内存由用户申请释放),  nWindow为-1表示所有窗口 ; pstuSplitSrc 对应 NET_SPLIT_SOURCE 指针
+    public boolean CLIENT_GetSplitSource(LLong lLoginID, int nChannel, int nWindow, NET_SPLIT_SOURCE[] pstuSplitSrc, int nMaxCount, IntByReference pnRetCount, int nWaitTime);
+    public boolean CLIENT_SetSplitSource(LLong lLoginID, int nChannel, int nWindow, NET_SPLIT_SOURCE pstuSplitSrc, int nSrcCount, int nWaitTime);
+
+    // 设置显示源, 支持同时设置多个窗口(pInparam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_SplitSetMultiSource(LLong lLoginID, NET_IN_SPLIT_SET_MULTI_SOURCE pInParam, NET_OUT_SPLIT_SET_MULTI_SOURCE pOutParam, int nWaitTime);
+
+    // 查询矩阵子卡信息(pstuCardList内存由用户申请释放)
+    public boolean CLIENT_QueryMatrixCardInfo(LLong lLoginID, NET_MATRIX_CARD_LIST pstuCardList, int nWaitTime);
+
+    // 开始查找录像文件帧信息(pInParam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_FindFrameInfo(LLong lLoginID, NET_IN_FIND_FRAMEINFO_PRAM pInParam, NET_OUT_FIND_FRAMEINFO_PRAM pOutParam, int nWaitTime);
+
+    // 获取标签信息
+    public boolean CLIENT_FileStreamGetTags(LLong lFindHandle, NET_IN_FILE_STREAM_GET_TAGS_INFO pInParam, NET_OUT_FILE_STREAM_GET_TAGS_INFO pOutParam, int nWaitTime);
+
+    // 设置标签信息
+    public boolean CLIENT_FileStreamSetTags(LLong lFindHandle, NET_IN_FILE_STREAM_TAGS_INFO pInParam, NET_OUT_FILE_STREAM_TAGS_INFO pOutParam, int nWaitTime);
+
+    // 查询/设置分割模式(pstuSplitInfo内存由用户申请释放)
+    public boolean CLIENT_GetSplitMode(LLong lLoginID, int nChannel, NET_SPLIT_MODE_INFO pstuSplitInfo, int nWaitTime);
+    public boolean CLIENT_SetSplitMode(LLong lLoginID, int nChannel, NET_SPLIT_MODE_INFO pstuSplitInfo, int nWaitTime);
+
+    // 开窗/关窗(pInparam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_OpenSplitWindow(LLong lLoginID, NET_IN_SPLIT_OPEN_WINDOW pInParam, NET_OUT_SPLIT_OPEN_WINDOW pOutParam, int nWaitTime);
+    public boolean CLIENT_CloseSplitWindow(LLong lLoginID, NET_IN_SPLIT_CLOSE_WINDOW pInParam, NET_OUT_SPLIT_CLOSE_WINDOW pOutParam, int nWaitTime);
+
+    // 获取当前显示的窗口信息(pInparam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_GetSplitWindowsInfo(LLong lLoginID, NET_IN_SPLIT_GET_WINDOWS pInParam, NET_OUT_SPLIT_GET_WINDOWS pOutParam, int nWaitTime);
+
+    // 查询分割能力(pstuCaps内存由用户申请释放)
+    public boolean CLIENT_GetSplitCaps(LLong lLoginID, int nChannel, NET_SPLIT_CAPS pstuCaps, int nWaitTime);
+
+    // 下位矩阵切换(pInparam, pOutParam内存由用户申请释放)
+    public boolean CLIENT_MatrixSwitch(LLong lLoginID, NET_IN_MATRIX_SWITCH pInParam, NET_OUT_MATRIX_SWITCH pOutParam, int nWaitTime);
+
+    // 打开刻录会话, 返回刻录会话句柄,pstInParam与pstOutParam内存由用户申请释放
+    public LLong CLIENT_StartBurnSession(LLong lLoginID, NET_IN_START_BURN_SESSION pstInParam, NET_OUT_START_BURN_SESSION pstOutParam, int nWaitTime);
+
+    // 关闭刻录会话
+    public boolean CLIENT_StopBurnSession(LLong lBurnSession);
+
+    //------------有盘/无盘刻录----lBurnSession 是 CLIENT_StartBurnSession返回的句柄//
+    // 开始刻录,pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_StartBurn(LLong lBurnSession, NET_IN_START_BURN pstInParam, NET_OUT_START_BURN pstOutParam, int nWaitTime);
+    // 停止刻录
+    public boolean CLIENT_StopBurn(LLong lBurnSession);
+    // 暂停/恢复刻录
+    public boolean CLIENT_PauseBurn(LLong lBurnSession, int bPause);
+
+    // 获取刻录状态
+    public boolean CLIENT_BurnGetState(LLong lBurnSession, NET_IN_BURN_GET_STATE pstInParam, NET_OUT_BURN_GET_STATE pstOutParam, int nWaitTime);
+
+    // 监听刻录状态,pstInParam与pstOutParam内存由用户申请释放
+    public LLong CLIENT_AttachBurnState(LLong lLoginID, NET_IN_ATTACH_STATE pstInParam, NET_OUT_ATTACH_STATE pstOutParam, int nWaitTime);
+
+    // 取消监听刻录状态,lAttachHandle是CLIENT_AttachBurnState返回值
+    public boolean CLIENT_DetachBurnState(LLong lAttachHandle);
+
+    // 开始刻录附件上传
+    // 刻录上传开始 返回此次上传操作句柄, 注意以下接口不能在fAttachBurnStateCB回调函数里面调用,pstInParam与pstOutParam内存由用户申请释放
+    public LLong CLIENT_StartUploadFileBurned(LLong lLoginID, NET_IN_FILEBURNED_START pstInParam, NET_OUT_FILEBURNED_START pstOutParam, int nWaitTime);
+
+    //上传刻录附件,lUploadHandle是CLIENT_StartUploadFileBurned返回值
+    public boolean CLIENT_SendFileBurned(LLong lUploadHandle);
+
+    //停止刻录附件上传
+    // 刻录上传停止,lUploadHandle是CLIENT_StartUploadFileBurned返回值,此接口不能在fBurnFileCallBack回调函数中调用
+    public boolean CLIENT_StopUploadFileBurned(LLong lUploadHandle);
+
+
+    // 下载指定的智能分析数据 - 图片, fDownLoadPosCallBack 回调
+    // emType 参考 EM_FILE_QUERY_TYPE
+    public LLong CLIENT_DownloadMediaFile(LLong lLoginID, int emType, Pointer lpMediaFileInfo, String sSavedFileName, Callback cbDownLoadPos, Pointer dwUserData, Pointer reserved);
+
+    // 停止下载数据
+    public boolean CLIENT_StopDownloadMediaFile(LLong lFileHandle);
+
+    // 下发通知到设备 接口, 以emNotifyType来区分下发的通知类型, pInParam 和 pOutParam 都由用户来分配和释放, emNotifyType对应结构体 NET_EM_NOTIFY_TYPE
+    public boolean CLIENT_SendNotifyToDev(LLong lLoginID, int emNotifyType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 查询IO状态(pState内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小), emType 参考 NET_IOTYPE
+    public boolean CLIENT_QueryIOControlState(LLong lLoginID, int emType,
+                                              Pointer pState, int maxlen, IntByReference nIOCount, int waittime);
+
+    // IO控制(pState内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小),emType 参考 NET_IOTYPE
+    public boolean CLIENT_IOControl(LLong lLoginID, int emType, Pointer pState, int maxlen);
+
+    // 订阅监测点位信息,pInParam与pOutParam内存由用户申请释放
+    public LLong CLIENT_SCADAAttachInfo(LLong lLoginID, NET_IN_SCADA_ATTACH_INFO pInParam, NET_OUT_SCADA_ATTACH_INFO pOutParam, int nWaitTime);
+
+    // 取消监测点位信息订阅
+    public boolean CLIENT_SCADADetachInfo(LLong lAttachHandle);
+
+    // 创建透明串口通道,TransComType高2个字节表示串口序号,低2个字节表示串口类型,目前类型支持 0:串口(232), 1:485
+    // baudrate 串口的波特率,1~8分别表示1200,2400,4800,9600,19200,38400,57600,115200
+    // databits 串口的数据位 4~8表示4位~8位
+    // stopbits 串口的停止位   232串口 : 数值0 代表停止位1; 数值1 代表停止位1.5; 数值2 代表停止位2.    485串口 : 数值1 代表停止位1; 数值2 代表停止位2.
+    // parity 串口的检验位,0:无校验,1:奇校验;2:偶校验;
+    // cbTransCom 串口数据回调,回调出前端设备发过来的信息
+    // fTransComCallBack 回调
+    public LLong CLIENT_CreateTransComChannel(LLong lLoginID, int TransComType, int baudrate, int databits, int stopbits, int parity, Callback cbTransCom, Pointer dwUser);
+
+    // 透明串口发送数据(pBuffer内存由用户申请释放)
+    public boolean CLIENT_SendTransComData(LLong lTransComChannel, byte[] pBuffer, int dwBufSize);
+
+    // 释放通明串口通道
+    public boolean CLIENT_DestroyTransComChannel(LLong lTransComChannel);
+
+    // 查询透明串口状态(pCommState内存由用户申请释放), TransComType 低2个字节表示串口类型, 0:串口(232), 1:485口;高2个字节表示串口通道号,从0开始
+    public boolean CLIENT_QueryTransComParams(LLong lLoginID, int TransComType, NET_COMM_STATE pCommState, int nWaitTime);
+
+    // 订阅智能分析进度(适用于视频分析源为录像文件时),pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_AttachVideoAnalyseState(LLong lLoginID, NET_IN_ATTACH_VIDEOANALYSE_STATE pstInParam, NET_OUT_ATTACH_VIDEOANALYSE_STATE pstOutParam, int nWaittime);
+
+    // 停止订阅
+    public boolean CLIENT_DetachVideoAnalyseState(LLong lAttachHandle);
+
+    // 抓图, hPlayHandle为预览或回放句柄
+    public boolean CLIENT_CapturePicture(LLong hPlayHandle, String pchPicFileName);
+
+    // 抓图, hPlayHandle为预览或回放句柄
+    public boolean CLIENT_CapturePictureEx(LLong hPlayHandle, String pchPicFileName, int eFormat);
+
+    // 获取设备自检信息,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_GetSelfCheckInfo(LLong lLoginID, NET_IN_GET_SELTCHECK_INFO pInParam, NET_SELFCHECK_INFO pOutParam, int nWaitTime);
+
+    // 主动注册功能,启动服务;nTimeout参数已无效 .
+    // cbListen对象为  fServiceCallBack 子类
+    public LLong CLIENT_ListenServer(String ip, int port, int nTimeout, Callback cbListen, Pointer dwUserData);
+
+    // 停止服务
+    public boolean CLIENT_StopListenServer(LLong lServerHandle);
+
+    // 指定回调数据类型 实施预览(预览), 数据回调函数 cbRealData 中得到的码流类型为 emDataType 所指定的类型
+    public LLong CLIENT_RealPlayByDataType(LLong lLoginID, NET_IN_REALPLAY_BY_DATA_TYPE pstInParam, NET_OUT_REALPLAY_BY_DATA_TYPE pstOutParam, int dwWaitTime);
+
+    // 指定回调数据格式  开始回放,  数据回调函数 fDownLoadDataCallBack 中得到的码流类型为 emDataType 所指定的类型
+    public LLong CLIENT_PlayBackByDataType(LLong lLoginID, NET_IN_PLAYBACK_BY_DATA_TYPE pstInParam, NET_OUT_PLAYBACK_BY_DATA_TYPE pstOutParam, int dwWaitTime);
+
+    // 指定码流类型 开始下载, 下载得到的文件和数据回调函数 fDownLoadDataCallBack 中得到的码流类型均为 emDataType 所指定的类型
+    // NET_IN_DOWNLOAD_BY_DATA_TYPE pstInParam, NET_OUT_DOWNLOAD_BY_DATA_TYPE pstOutParam
+    public LLong CLIENT_DownloadByDataType(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int dwWaitTime);
+
+    /************************************************************************/
+    /*                            BUS订阅                                   */
+    /************************************************************************/
+    // 订阅Bus状态,pstuInBus与pstuOutBus内存由用户申请释放
+    public LLong CLIENT_AttachBusState(LLong lLoginID, NET_IN_BUS_ATTACH pstuInBus, NET_OUT_BUS_ATTACH pstuOutBus, int nWaitTime);
+
+    // 停止订阅Bus状态,lAttachHandle是CLIENT_AttachBusState返回值
+    public boolean CLIENT_DetachBusState(LLong lAttachHandle);
+
+    //订阅事件重传,pInParam内存由用户申请释放
+    public LLong CLIENT_AttachEventRestore(LLong lLoginID, NET_IN_ATTACH_EVENT_RESTORE pInParam, int nWaitTime);
+
+    // 停止订阅事件重传,pInParam内存由用户申请释放
+    public boolean CLIENT_DetachEventRestore(LLong lAttachHandle);
+
+    // 设置GPS温湿度订阅回调函数, fGPSTempHumidityRev
+    public void CLIENT_SetSubcribeGPSTHCallBack(Callback OnGPSMessage, Pointer dwUser);
+
+    // GPS温湿度信息订阅, bStart为BOOL类型
+    public boolean CLIENT_SubcribeGPSTempHumidity(LLong lLoginID, int bStart, int InterTime, Pointer Reserved);
+
+    // 人脸信息记录操作函数
+    public boolean CLIENT_FaceInfoOpreate(LLong lLoginID, int emType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 下发人脸图片信息
+    public boolean CLIENT_DeliverUserFacePicture(LLong lLoginID, NET_IN_DELIVER_USER_PICTURE pInParam, NET_OUT_DELIVER_USER_PICTURE pOutParam, int nWaitTime);
+
+    //开始查询人脸信息
+    public LLong CLIENT_StartFindFaceInfo(LLong lLoginID, NET_IN_FACEINFO_START_FIND pstIn, NET_OUT_FACEINFO_START_FIND pstOut, int nWaitTime);
+
+    //获取人脸信息
+    public boolean CLIENT_DoFindFaceInfo(LLong lFindHandle, NET_IN_FACEINFO_DO_FIND pstIn, NET_OUT_FACEINFO_DO_FIND pstOut, int nWaitTime);
+
+    //停止查询人脸信息
+    public boolean CLIENT_StopFindFaceInfo(LLong lFindHandle);
+
+    /***********************************************************************************
+     *						                     诱导屏相关接口									  *
+     **********************************************************************************/
+    // 设置诱导屏配置信息接口
+    public boolean CLIENT_SetGuideScreenCfg(LLong lLoginID, NET_IN_SET_GUIDESCREEN_CFG pInParam, NET_OUT_SET_GUIDESCREEN_CFG pstOutPqram, int nWaitTime);
+
+    // 添加一个节目信息到诱导屏
+    public boolean CLIENT_AddOneProgramme(LLong lLoginID, NET_IN_ADD_ONE_PROGRAMME pInParam, NET_OUT_ADD_ONE_PROGRAMME pOutParam, int nWaitTime);
+
+    // 通过节目ID 修改节目
+    public boolean CLIENT_ModifyOneProgrammeByID(LLong lLoginID, NET_IN_MODIFY_ONE_PROGRAMME pInParam, NET_OUT_MODIFY_ONE_PROGRAMME pOutParam, int nWaitTime);
+
+    // 批量删除节目信息
+    public boolean CLIENT_DelMultiProgrammesById(LLong lLoginID, NET_IN_DEL_PROGRAMMES pInParam, NET_OUT_DEL_PROGRAMMES pOutParam, int nWaitTime);
+
+    // 增加一个即时节目计划
+    public boolean CLIENT_AddOneImmediProgrammePlan(LLong lLoginID, NET_IN_ADD_IMME_PROGRAMMEPLAN pInParam, NET_OUT_ADD_PROGRAMMEPLAN pOutParam, int nWaitTime);
+
+    // 修改一个即时节目计划
+    public boolean CLIENT_ModifyOneImmediProgrammePlan(LLong lLoginID, NET_IN_MODIFY_IMME_PROGRAMMEPLAN pInParam, NET_OUT_MODIFY_IMME_PROGRAMMEPLAN pOutParam, int nWaitTime);
+
+    // 增加一个定时节目计划
+    public boolean CLIENT_AddOneTimerProgrammePlan(LLong lLoginID, NET_IN_ADD_TIMER_PROGRAMMEPLAN pInParam, NET_OUT_ADD_PROGRAMMEPLAN pOutParam, int nWaitTime);
+
+    // 修改一个定时节目计划
+    public boolean CLIENT_ModifyOneTimerProgrammePlan(LLong lLoginID, NET_IN_MODIFY_TIMER_PROGRAMMEPLAN pInParam, NET_OUT_MODIFY_TIMER_PROGRAMMEPLAN pOutParam, int nWaitTime);
+
+    // 删除多个节目计划
+    public boolean CLIENT_DelMultiProgrammePlans(LLong lLoginID, NET_IN_DEL_PROGRAMMEPLANS pInParam, NET_OUT_DEL_PROGRAMMEPLANS pOutParam, int nWaitTime);
+
+    // 通过诱导屏ID 获取诱导屏配置信息
+    public boolean CLIENT_GetOneGuideScreenCfgById(LLong lLoginID, NET_IN_GET_GUIDESCREEN_CFG_BYID pInParam, NET_OUT_GET_GUIDESCREEN_CFG_BYID pOutParam, int nWaitTime);
+
+    // 获取所有诱导屏配置信息
+    public boolean CLIENT_GetAllGuideScreenCfg(LLong lLoginID, NET_IN_GET_ALL_GUIDESCREEN_CFG pInParam, NET_OUT_GET_ALL_GUIDESCREEN_CFG pOutParam, int nWaitTime);
+
+    // 通过节目ID 获取节目信息
+    public boolean CLIENT_GetOneProgrammeById(LLong lLoginID, NET_IN_GET_PROGRAMME_BYID pInParam, NET_OUT_GET_PROGRAMME_BYID pOutParam, int nWaitTime);
+
+    // 获取所有节目信息
+    public boolean CLIENT_GetAllProgrammes(LLong lLoginID, NET_IN_GET_ALL_PROGRAMMES pInParam, NET_OUT_GET_ALL_PROGRAMMES pOutParam, int nWaitTime);
+
+    // 获取所有节目的简要信息
+    public boolean CLIENT_GetAllBrieflyProgrammes(LLong lLoginID, NET_IN_GET_ALL_BRIEFLYPROGRAMMES pInParam, NET_OUT_GET_ALL_BRIEFLYPROGRAMMES pOutParam, int nWaitTime);
+
+    // 获取所有节目计划信息
+    public boolean CLIENT_GetAllProgrammePlans(LLong lLoginID, NET_IN_GET_ALL_PROGRAMMEPLANS pInParam, NET_OUT_GET_ALL_PROGRAMMEPLANS pOutParam, int nWaitTime);
+
+    // 通过节目计划ID 获取节目计划
+    public boolean CLIENT_GetOneProgrammePlanByID(LLong lLoginID, NET_IN_GET_PROGRAMMEPLAN_BYID pInParam, NET_OUT_GET_PROGRAMMEPLAN_BYID pOutParam, int nWaitTime);
+
+    // 设置光带状态信息
+    public boolean CLIENT_SetGuideScreenGDStatus(LLong lLoginID, NET_IN_SET_GD_STATUS pInParam, NET_OUT_SET_GD_STATUS pOutParam, int nWaitTime);
+
+    /***********************************************************************************
+     *						                  播放盒与广告机的节目操作接口					      *
+     **********************************************************************************/
+    // 获取播放盒上全部节目信息
+    public boolean CLIENT_GetAllProgramOnPlayBox(LLong lLoginID, NET_IN_GET_ALL_PLAYBOX_PROGRAM pInParam, NET_OUT_GET_ALL_PLAYBOX_PROGRAM pOutParam, int nWaitTime);
+
+    // 通过programme ID 获取播放盒上对应的节目信息
+    public boolean CLIENT_GetOneProgramByIdOnPlayBox(LLong lLoginID, NET_IN_GET_PLAYBOX_PROGRAM_BYID pInParam, NET_OUT_GET_PLAYBOX_PROGRAM_BYID pOutParam, int nWaitTime);
+
+    // 在播放盒上添加一个节目
+    public boolean CLIENT_AddOneProgramToPlayBox(LLong lLoginID, NET_IN_ADD_ONE_PLAYBOX_PRAGROM pInParam, NET_OUT_ADD_ONE_PLAYBOX_PRAGROM pOutParam, int nWaitTime);
+
+    // 在播放盒上修改指定ID的节目信息
+    public boolean CLIENT_ModifyProgramOnPlayBoxById(LLong lLoginID, NET_IN_MODIFY_PLAYBOX_PROGRAM_BYID pInParam, NET_OUT_MODIFY_PLAYBOX_PROGRAM_BYID pOutParam, int nWaitTime);
+
+
+    // 获取配置信息(szOutBuffer内存由用户申请释放, 具体见枚举类型 NET_EM_CFG_OPERATE_TYPE 说明)
+    public boolean CLIENT_GetConfig(LLong lLoginID, int emCfgOpType, int nChannelID, Pointer szOutBuffer, int dwOutBufferSize, int waittime, Pointer reserve);
+
+    // 设置配置信息(szInBuffer内存由用户申请释放, 具体见枚举类型 NET_EM_CFG_OPERATE_TYPE 说明)
+    public boolean CLIENT_SetConfig(LLong lLoginID, int emCfgOpType, int nChannelID, Pointer szInBuffer, int dwInBufferSize, int waittime, IntByReference restart, Pointer reserve);
+
+    // 显示私有数据,例如规则框,规则框报警,移动侦测等       lPlayHandle:播放句柄      bTrue=1 打开, bTrue= 0 关闭
+    public boolean CLIENT_RenderPrivateData(LLong lPlayHandle, int bTrue);
+
+    // 按设备信息添加显示源,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_MatrixAddCamerasByDevice(LLong lLoginID, NET_IN_ADD_LOGIC_BYDEVICE_CAMERA pInParam, NET_OUT_ADD_LOGIC_BYDEVICE_CAMERA pOutParam, int nWaitTime);
+
+    // 订阅监测点位报警信息,pInParam与pOutParam内存由用户申请释放
+    public LLong CLIENT_SCADAAlarmAttachInfo(LLong lLoginID, NET_IN_SCADA_ALARM_ATTACH_INFO pInParam, NET_OUT_SCADA_ALARM_ATTACH_INFO pOutParam, int nWaitTime);
+
+    // 取消订阅监测点位报警信息
+    public boolean CLIENT_SCADAAlarmDetachInfo(LLong lAttachHandle);
+
+    /***********************************************************************************
+     *						           IVSS设备添加相关接口				             *
+     **********************************************************************************/
+    // 注册设备状态回调
+    public LLong CLIENT_AttachDeviceState(LLong lLoginID, NET_IN_ATTACH_DEVICE_STATE pInParam, NET_OUT_ATTACH_DEVICE_STATE pOutParam, int nWaitTime);
+
+    // 注销设备状态回调
+    public boolean CLIENT_DetachDeviceState(LLong lAttachHandle);
+
+    // 添加设备
+    public boolean CLIENT_AsyncAddDevice(LLong lLoginID, NET_IN_ASYNC_ADD_DEVICE pInParam, NET_OUT_ASYNC_ADD_DEVICE pOutParam, int nWaitTime);
+
+    // 注册添加设备回调
+    public LLong CLIENT_AttachAddDevice(LLong lLoginID, NET_IN_ATTACH_ADD_DEVICE pInParam, NET_OUT_ATTACH_ADD_DEVICE pOutParam, int nWaitTime);
+
+    // 注销添加设备回调
+    public boolean CLIENT_DetachAddDevice(LLong lAttachHandle);
+
+    // 获取添加中的设备状态
+    public boolean CLIENT_GetAddDeviceInfo(LLong lLoginID, NET_IN_GET_ADD_DEVICE_LIST_INFO pInParam, NET_OUT_GET_ADD_DEVICE_LIST_INFO pOutParam, int nWaitTime);
+
+    // 获取已添加的设备状态
+    public boolean CLIENT_GetDeviceInfo(LLong lLoginID, NET_IN_GET_DEVICE_LIST_INFO pInParam, NET_OUT_GET_DEVICE_LIST_INFO pOutParam, int nWaitTime);
+
+    // 设置连接通道
+    public boolean CLIENT_SetConnectChannel(LLong lLoginID, NET_IN_SET_CONNECT_CHANNEL pInParam, NET_OUT_SET_CONNECT_CHANNEL pOutParam, int nWaitTime);
+
+    // 获取设备通道信息
+    public boolean CLIENT_GetChannelInfo(LLong lLoginID, NET_IN_GET_CHANNEL_INFO pInParam, NET_OUT_GET_CHANNEL_INFO pOutParam, int nWaitTime);
+
+    // 删除设备
+    public boolean CLIENT_RemoveDevice(LLong lLoginID, NET_IN_REMOVE_DEVICE pInParam, NET_OUT_REMOVE_DEVICE pOutParam, int nWaitTime);
+
+    // 中止添加设备任务
+    public boolean CLIENT_CancelAddDeviceTask(LLong lLoginID, NET_IN_CANCEL_ADD_TASK pInParam, NET_OUT_CANCEL_ADD_TASK pOutParam, int nWaitTime);
+
+    // 确认添加设备任务
+    public boolean CLIENT_ConfirmAddDeviceTask(LLong lLoginID, NET_IN_CONFIRM_ADD_TASK pInParam, NET_OUT_CONFIRM_ADD_TASK pOutParam, int nWaitTime);
+
+    // 球机,地磁车位同步上报车位信息,如有车停入、或车从车位开出
+    public boolean CLIENT_SyncParkingInfo(LLong lLoginID, NET_IN_SYNC_PARKING_INFO pInParam, NET_OUT_SYNC_PARKING_INFO pOutParam, int nWaitTime);
+
+    // 初始化账户
+    public boolean CLIENT_InitDevAccount(NET_IN_INIT_DEVICE_ACCOUNT pInitAccountIn, NET_OUT_INIT_DEVICE_ACCOUNT pInitAccountOut, int dwWaitTime, String szLocalIp);
+
+    // 根据设备IP初始化账户
+    public boolean CLIENT_InitDevAccountByIP(NET_IN_INIT_DEVICE_ACCOUNT pInitAccountIn, NET_OUT_INIT_DEVICE_ACCOUNT pInitAccountOut, int dwWaitTime, String szLocalIp, String szDeviceIP);
+
+    public boolean CLIENT_ModifyDevice(DEVICE_NET_INFO_EX pDevNetInfo, int nWaitTime, IntByReference iError, String szLocalIp);
+
+    /**
+     * 门禁控制器操作接口
+     * @param lLoginID 登录句柄
+     * @param emtype 门禁控制器操作类型, 对应 枚举{@link NET_EM_ACCESS_CTL_MANAGER}
+     * @param pstInParam 入参, 根据 emtype 来填
+     * @param pstOutParam 出参, 根据 emtype 来填
+     * @param nWaitTime 超时等待时间
+     * @return true:成功    false:失败
+     */
+    public boolean CLIENT_OperateAccessControlManager(LLong lLoginID, int emtype, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 设置安全密钥(播放加密码流使用)
+     * @param lPlayHandle 拉流句柄
+     * @param szKey 密钥
+     * @param nKeyLen 密钥的长度
+     * @return true:成功    false:失败
+     */
+    public boolean CLIENT_SetSecurityKey(LLong lPlayHandle, String szKey, int nKeyLen);
+
+    /***********************************************************************************
+     *						           	  考勤机相关接口						         *
+     **********************************************************************************/
+    //考勤新增加用户
+    public boolean CLIENT_Attendance_AddUser(LLong lLoginID, NET_IN_ATTENDANCE_ADDUSER pstuInAddUser, NET_OUT_ATTENDANCE_ADDUSER pstuOutAddUser, int nWaitTime);
+
+    //考勤删除用户
+    public boolean CLIENT_Attendance_DelUser(LLong lLoginID, NET_IN_ATTENDANCE_DELUSER pstuInDelUser, NET_OUT_ATTENDANCE_DELUSER pstuOutDelUser, int nWaitTime);
+
+    //考勤修改用户信息
+    public boolean CLIENT_Attendance_ModifyUser(LLong lLoginID, NET_IN_ATTENDANCE_ModifyUSER pstuInModifyUser, NET_OUT_ATTENDANCE_ModifyUSER pstuOutModifyUser, int nWaitTime);
+
+    //考勤获取用户信息
+    public boolean CLIENT_Attendance_GetUser(LLong lLoginID, NET_IN_ATTENDANCE_GetUSER pstuInGetUser, NET_OUT_ATTENDANCE_GetUSER pstuOutGetUser, int nWaitTime);
+
+    //考勤机  通过用户ID插入信息数据
+    public boolean CLIENT_Attendance_InsertFingerByUserID(LLong lLoginID, NET_IN_FINGERPRINT_INSERT_BY_USERID pstuInInsert, NET_OUT_FINGERPRINT_INSERT_BY_USERID pstuOutInsert, int nWaitTime);
+
+    //考勤机 删除单个用户下所有信息数据
+    public boolean CLIENT_Attendance_RemoveFingerByUserID(LLong lLoginID, NET_CTRL_IN_FINGERPRINT_REMOVE_BY_USERID pstuInRemove, NET_CTRL_OUT_FINGERPRINT_REMOVE_BY_USERID pstuOutRemove, int nWaitTime);
+
+    //考勤机 通过信息ID获取信息数据
+    public boolean CLIENT_Attendance_GetFingerRecord(LLong lLoginID, NET_CTRL_IN_FINGERPRINT_GET pstuInGet, NET_CTRL_OUT_FINGERPRINT_GET pstuOutGet, int nWaitTime);
+
+    //考勤机 通过信息ID删除信息数据
+    public boolean CLIENT_Attendance_RemoveFingerRecord(LLong lLoginID, NET_CTRL_IN_FINGERPRINT_REMOVE pstuInRemove, NET_CTRL_OUT_FINGERPRINT_REMOVE pstuOutRemove, int nWaitTime);
+
+    //考勤机 查找用户
+    public boolean CLIENT_Attendance_FindUser(LLong lLoginID, NET_IN_ATTENDANCE_FINDUSER pstuInFindUser, NET_OUT_ATTENDANCE_FINDUSER pstuOutFindUser, int nWaitTime);
+
+    //考勤机 通过用户ID查找该用户下的所有信息数据
+    public boolean CLIENT_Attendance_GetFingerByUserID(LLong lLoginID, NET_IN_FINGERPRINT_GETBYUSER pstuIn, NET_OUT_FINGERPRINT_GETBYUSER pstuOut, int nWaitTime);
+
+    //获取考勤机在线状态
+    public boolean CLIENT_Attendance_GetDevState(LLong lLoginID, NET_IN_ATTENDANCE_GETDEVSTATE pstuInParam, NET_OUT_ATTENDANCE_GETDEVSTATE pstuOutParam, int nWaitTime);
+
+    /*********************************************************************************************************
+     * 									视频诊断功能接口														 *												 												     *
+     * 视频诊断参数表配置 CFG_CMD_VIDEODIAGNOSIS_PROFILE														 *
+     * 视频诊断任务表配置 CFG_CMD_VIDEODIAGNOSIS_TASK_ONE						 								 *
+     * 视频诊断计划表配置 CFG_CMD_VIDEODIAGNOSIS_PROJECT														 *
+     * 删除任务接口  CLIENT_DeleteDevConfig																	 *
+     * 获取成员配置接口 CLIENT_GetMemberNames	  对应命令  CFG_CMD_VIDEODIAGNOSIS_TASK					         *
+     * 获取诊断状态  CLIENT_QueryNewSystemInfo CFG_CMD_VIDEODIAGNOSIS_GETSTATE							 	 *
+     *********************************************************************************************************/
+
+    // 实时获取视频诊断结果,pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_StartVideoDiagnosis(LLong lLoginID, NET_IN_VIDEODIAGNOSIS pstInParam, NET_OUT_VIDEODIAGNOSIS pstOutParam);
+
+    // 停止视频诊断结果上报
+    public boolean CLIENT_StopVideoDiagnosis(LLong hDiagnosisHandle);
+
+    // 开始视频诊断结果查询,pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_StartFindDiagnosisResult(LLong lLoginID, NET_IN_FIND_DIAGNOSIS pstInParam, NET_OUT_FIND_DIAGNOSIS pstOutParam);
+
+    // 获取视频诊断结果信息,pstInParam与pstOutParam内存由用户申请释放
+    public boolean CLIENT_DoFindDiagnosisResult(LLong hFindHandle, NET_IN_DIAGNOSIS_INFO pstInParam, NET_OUT_DIAGNOSIS_INFO pstOutParam);
+
+    // 结束视频诊断结果查询
+    public boolean CLIENT_StopFindDiagnosis(LLong hFindHandle);
+
+    // 获取视频诊断进行状态
+    public boolean CLIENT_GetVideoDiagnosisState(LLong lLoginID, NET_IN_GET_VIDEODIAGNOSIS_STATE pstInParam, NET_OUT_GET_VIDEODIAGNOSIS_STATE pstOutParam, int nWaitTime);
+
+    /********************************************************************************************
+     * 									热成像												    *
+     ********************************************************************************************/
+
+    // 订阅温度分布数据(热图),pInParam与pOutParam内存由用户申请释放
+    public LLong CLIENT_RadiometryAttach(LLong lLoginID, NET_IN_RADIOMETRY_ATTACH pInParam, NET_OUT_RADIOMETRY_ATTACH pOutParam, int nWaitTime);
+
+    // 取消订阅温度分布数据,lAttachHandle是 CLIENT_RadiometryAttach 的返回值
+    public boolean CLIENT_RadiometryDetach(LLong lAttachHandle);
+
+    // 通知开始获取热图数据,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_RadiometryFetch(LLong lLoginID, NET_IN_RADIOMETRY_FETCH pInParam, NET_OUT_RADIOMETRY_FETCH pOutParam, int nWaitTime);
+
+    // 热图数据解压与转换接口
+    /// \brief
+    /// \param  pRadiometryData [IN] 热图数据, 由 fRadiometryAttachCB 获得
+    /// \param  pGrayImg [IN, OUT] 解压后的数据,是一张灰度图,
+    ///			传空指针表示不需要此数据
+    ///         用户需保证传入的缓冲区足够大(不小于 图像像素数*sizeof(unsigned short))
+    ///         每个像素对应一个 unsigned short 型数据,表示图像某个像素的热成像灰度(范围 0 ~ 16383),
+    ///         低地址对应画面左上角,高地址对应画面右下角
+    /// \param  pTempForPixels [IN, OUT] 每个像素的温度数据
+    ///			传空指针表示不需要此数据
+    ///         用户需保证传入的缓冲区足够大(不小于 图像像素数*sizeof(float))
+    ///         每个像素对应一个 float 型数据,表示该像素位置的摄氏温度
+    ///         低地址对应画面左上角,高地址对应画面右下角
+    /// \return TRUE 成功,FALSE 失败
+    public boolean CLIENT_RadiometryDataParse(NET_RADIOMETRY_DATA pRadiometryData, short[] pGrayImg, float[] pTempForPixels);
+
+    // 开始查询信息(获取查询句柄)(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小)
+    public boolean  CLIENT_StartFind(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+    // 查询信息(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小
+    public boolean  CLIENT_DoFind(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+    // 停止查询信息(销毁查询句柄)(pInBuf, pOutBuf内存由用户申请释放,根据emType对应的类型找到相应的结构体,进而确定申请内存大小)
+    public boolean  CLIENT_StopFind(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+
+    // 智能锁添加更新用户信息接口
+    public boolean CLIENT_UpdateSmartLockUser(LLong lLoginID, NET_IN_SMARTLOCK_UPDATE_USER_INFO pstInParam, NET_OUT_SMARTLOCK_UPDATE_USER_INFO pstOutParam, int nWaitTime);
+
+    // 获取当前智能锁的注册用户信息
+    public boolean CLIENT_GetSmartLockRegisterInfo(LLong lLoginID, NET_IN_GET_SMART_LOCK_REGISTER_INFO pstInParam, NET_OUT_GET_SMART_LOCK_REGISTER_INFO pstOutParam, int nWaitTime);
+
+    // 智能锁修改用户信息
+    public boolean CLIENT_SetSmartLockUsername(LLong lLoginID, NET_IN_SET_SMART_LOCK_USERNAME pstInParam, NET_OUT_SET_SMART_LOCK_USERNAME pstOutParam, int nWaitTime);
+
+    // 智能锁删除用户接口
+    public boolean CLIENT_RemoveSmartLockUser(LLong lLoginID, NET_IN_SMARTLOCK_REMOVE_USER_INFO pstInParam, NET_OUT_SMARTLOCK_REMOVE_USER_INFO pstOutParam, int nWaitTime);
+
+    // 字符串加密接口 (pInParam, pOutParam内存由用户申请释放) 接口
+    public boolean CLIENT_EncryptString(NET_IN_ENCRYPT_STRING pInParam, NET_OUT_ENCRYPT_STRING pOutParam, int nWaitTime);
+
+    /*************************************************************************************************************
+     * 门禁用户、卡、人脸、信息操作新接口
+     * 1、添加一个用户
+     * 2、根据用户ID可以来添加多张卡、多张人脸、多个信息
+     *************************************************************************************************************/
+    /**
+     *  门禁人员信息管理接口
+     * @param emtype 对应 {@link NET_EM_ACCESS_CTL_USER_SERVICE}
+     */
+    public boolean CLIENT_OperateAccessUserService(LLong lLoginID, int emtype, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    // 开始查询人员信息
+    public LLong CLIENT_StartFindUserInfo(LLong lLoginID, NET_IN_USERINFO_START_FIND pstIn, NET_OUT_USERINFO_START_FIND pstOut, int nWaitTime);
+
+    // 获取人员信息 ,lFindHandle 为 CLIENT_StartFindUserInfo 接口返回值
+    public boolean CLIENT_DoFindUserInfo(LLong lFindHandle, NET_IN_USERINFO_DO_FIND pstIn, NET_OUT_USERINFO_DO_FIND pstOut, int nWaitTime);
+
+    // 停止查询人员信息 ,lFindHandle 为 CLIENT_StartFindUserInfo 接口返回值
+    public boolean CLIENT_StopFindUserInfo(LLong lFindHandle);
+
+    /**
+     * 门禁卡片信息管理接口
+     * @param emtype 对应 {@link NET_EM_ACCESS_CTL_CARD_SERVICE}
+     */
+    public boolean CLIENT_OperateAccessCardService(LLong lLoginID, int emtype, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    // 开始查询卡片信息
+    public LLong CLIENT_StartFindCardInfo(LLong lLoginID, NET_IN_CARDINFO_START_FIND pstIn, NET_OUT_CARDINFO_START_FIND pstOut, int nWaitTime);
+
+    // 获取卡片信息,lFindHandle 为CLIENT_StartFindCardInfo接口返回值
+    public boolean CLIENT_DoFindCardInfo(LLong lFindHandle, NET_IN_CARDINFO_DO_FIND pstIn, NET_OUT_CARDINFO_DO_FIND pstOut, int nWaitTime);
+
+    // 停止查询卡片信息,lFindHandle 为CLIENT_StartFindCardInfo接口返回值
+    public boolean CLIENT_StopFindCardInfo(LLong lFindHandle);
+
+    /**
+     * 门禁人脸信息管理接口
+     * @param emtype 对应 {@link NET_EM_ACCESS_CTL_FACE_SERVICE}
+     */
+    public boolean CLIENT_OperateAccessFaceService(LLong lLoginID, int emtype, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 信息信息管理接口
+     * @param emtype 对应 {@link NET_EM_ACCESS_CTL_FINGERPRINT_SERVICE}
+     */
+    public boolean CLIENT_OperateAccessFingerprintService(LLong lLoginID, int emtype, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    // 开始升级
+    public LLong CLIENT_StartUpgradeEx(LLong lLoginID, int emtype, String pchFileName, Callback cbUpgrade, Pointer dwUser);
+
+    // 发送数据
+    public boolean CLIENT_SendUpgrade(LLong lUpgradeID);
+
+    // 结束升级设备程序
+    public boolean CLIENT_StopUpgrade(LLong lUpgradeID);
+
+    // 查询产品定义
+    public boolean CLIENT_QueryProductionDefinition(LLong lLoginID, NET_PRODUCTION_DEFNITION pstuProdDef, int nWaitTime);
+
+    // 录播主机窗口最大个数
+    public static final int NET_MAX_WINDOWS_NUMBER = 64;
+    // 录播主机模式最大个数
+    public static final int NET_MAX_MODE_NUMBER = 64;
+
+    /**
+     * 录播主机相关 添加新的课程记录
+     * NET_IN_ADD_COURSE *pstInParam, NET_OUT_ADD_COURSE *pstOutParam
+     */
+    public boolean CLIENT_AddCourse(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     *  录播主机相关 修改课程
+     *  NET_IN_MODIFY_COURSE *pstInParam, NET_OUT_MODIFY_COURSE *pstOutParam
+     */
+    public boolean CLIENT_ModifyCourse(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     *  录播主机相关 删除课程
+     *  NET_IN_DELETE_COURSE *pstInParam, NET_OUT_DELETE_COURSE *pstOutParam
+     */
+    public boolean CLIENT_DeleteCourse(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 开始查询课程
+     * NET_IN_QUERY_COURSE_OPEN *pstInParam, NET_OUT_QUERY_COURSE_OPEN *pstOutParam
+     */
+    public boolean CLIENT_QueryCourseOpen(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 查询课程
+     * NET_IN_QUERY_COURSE *pstInParam, NET_OUT_QUERY_COURSE *pstOutParam
+     */
+    public boolean CLIENT_QueryCourse(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 结束查询课程
+     * NET_IN_QUERY_COURSE_CLOSE *pstInParam, NET_OUT_QUERY_COURSE_CLOSE *pstOutParam
+     */
+    public boolean CLIENT_QueryCourseClose(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 获取真实预览通道号,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_GET_REAL_PREVIEW_CHANNEL* pInBuf, NET_OUT_GET_REAL_PREVIEW_CHANNEL* pOutBuf
+     */
+    public boolean CLIENT_GetRealPreviewChannel(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 录播主机组合通道模式操作 emOperateType NET_COURSECOMPOSITE_MODE_OPERATE_TYPE
+     *
+     * NET_COURSECOMPOSITE_MODE_OPERATE_TYPE {
+     *
+     *      NET_COURSECOMPOSITE_MODE_ADD,      // 添加模式,对应结构体
+     *                                         // pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD,
+     *                                         // pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD
+     * 	    NET_COURSECOMPOSITE_MODE_DELETE,   // 删除模式,对应结构体
+     * 	                                       // pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE,
+     * 	                                       // pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE
+     * 	    NET_COURSECOMPOSITE_MODE_MODIFY,   // 修改模式,对应结构体
+     * 	                                       // pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY,
+     * 	                                       // pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY
+     * 	    NET_COURSECOMPOSITE_MODE_GET,      // 获取模式,对应结构体
+     * 	                                       // pInParam = NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET,
+     * 	                                       // pOutParam = NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET
+     * }
+     */
+    public boolean CLIENT_OperateCourseCompositeChannelMode(LLong lLoginID, int emOperateType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 获取录播主机默认真实通道号,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_GET_DEFAULT_REAL_CHANNEL* pInBuf, NET_OUT_GET_DEFAULT_REAL_CHANNEL* pOutBuf
+     */
+    public boolean CLIENT_GetDefaultRealChannel(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 获取录播主机逻辑通道号,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_GET_COURSE_LOGIC_CHANNEL* pInBuf,NET_OUT_GET_COURSE_LOGIC_CHANNEL* pOutBuf
+     */
+    public boolean CLIENT_GetLogicChannel(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 设置逻辑通道号和真实通道号的绑定关系,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_SET_BLIND_REAL_CHANNEL* pInBuf,NET_OUT_SET_BLIND_REAL_CHANNEL* pOutBuf
+     */
+    public boolean CLIENT_SetBlindRealChannel(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 设置课程录像模式,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_SET_COURSE_RECORD_MODE* pInBuf, NET_OUT_SET_COURSE_RECORD_MODE* pOutBuf
+     */
+    public boolean CLIENT_SetCourseRecordMode(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 获取课程录像模式,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_GET_COURSE_RECORD_MODE* pInBuf, NET_OUT_GET_COURSE_RECORD_MODE* pOutBuf
+     */
+    public boolean CLIENT_GetCourseRecordMode(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 获取录播主机通道输入媒体介质,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_GET_INPUT_CHANNEL_MEDIA* pInBuf,NET_OUT_GET_INPUT_CHANNEL_MEDIA* pOutBuf
+     */
+    public boolean CLIENT_GetInputChannelMedia(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 开启/关闭指定通道录像
+     * NET_IN_SET_COURSE_RECORD_STATE *pInBuf, NET_OUT_SET_COURSE_RECORD_STATE *pOutBuf
+     */
+    public boolean CLIENT_SetCourseRecordState(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 开始查询课程视频信息,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_QUERY_COURSEMEDIA_FILEOPEN *pInBuf, NET_OUT_QUERY_COURSEMEDIA_FILEOPEN *pOutBuf
+     */
+    public boolean CLIENT_OpenQueryCourseMediaFile(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 查询课程视频信息,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_QUERY_COURSEMEDIA_FILE *pInBuf, NET_OUT_QUERY_COURSEMEDIA_FILE *pOutBuf
+     */
+    public boolean CLIENT_DoQueryCourseMediaFile(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 关闭课程视频查询,pInBuf与pOutBuf内存由用户申请释放
+     * NET_IN_QUERY_COURSEMEDIA_FILECLOSE *pInBuf, NET_OUT_QUERY_COURSEMEDIA_FILECLOSE *pOutBuf
+     */
+    public boolean CLIENT_CloseQueryCourseMediaFile(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    public static final int MAX_COURSE_LOGIC_CHANNEL = 64;              // 录播主机最大逻辑通道数
+
+    /**
+     * 录播主机录像信息操作接口 EM_COURSERECORD_OPERATE_TYPE emOperateType
+     * {
+     *         EM_COURSERECORDE_TYPE_GET_INFO,    //获取教室录像信息,对应结构体
+     *              pInParam = NET_IN_COURSERECORD_GETINFO,pOutParam = NET_OUT_COURSERECORD_GETINFO
+     *         EM_COURSERECORDE_TYPE_SET_INFO,    //设置教室录像信息,对应结构体
+     *              pInParam = NET_IN_COURSERECORD_SETINFO,pOutParam = NET_OUT_COURSERECORD_SETINFO
+     *         EM_COURSERECORDE_TYPE_UPDATE_INFO, //将录像信息更新到time时的信息,对应结构体
+     *              pInParam = NET_IN_COURSERECORD_UPDATE_INFO, pOutParam = NET_OUT_COURSERECORD_UPDATE_INFO
+     *         EM_COURSERECORDE_TYPE_GET_TIME,     //获取当前课程教室已录制时间,对应结构体
+     *              pInParam = NET_IN_COURSERECORD_GET_TIME, pOutParam = NET_OUT_COURSERECORD_GET_TIME
+     *     }
+     */
+    public boolean CLIENT_OperateCourseRecordManager(LLong lLoginID, int emOperateType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     *  录播主机组合通道操作 EM_COURSECOMPOSITE_OPERATE_TYPE
+     *  {
+     *         EM_COURSECOMPOSITE_TYPE_LOCK_CONTROL,                   //控制组合通道与逻辑通道,对应结构体
+     *              pInParam = NET_IN_COURSECOMPOSITE_LOCK_CONTROL,pOutParam = NET_OUT_COURSECOMPOSITE_LOCK_CONTROL
+     *         EM_COURSECOMPOSITE_TYPE_GET_LOCKINFO,                   //获取组合通道与逻辑通道的锁定信息,对应结构体
+     *              pInParam = NET_IN_COURSECOMPOSITE_GET_LOCKINFO,pOutParam = NET_OUT_COURSECOMPOSITE_GET_LOCKINFO
+     *         EM_COURSECOMPOSITE_TYPE_GET_INFO,                       //获取组合通道信息,对应结构体
+     *              pInParam = NET_IN_COURSECOMPOSITE_GET_INFO,pOutParam = NET_OUT_COURSECOMPOSITE_GET_INFO
+     *         EM_COURSECOMPOSITE_TYPE_SET_INFO,                       //设置组合通道信息,对应结构体
+     *              pInParam = NET_IN_COURSECOMPOSITE_SET_INFO,pOutParam = NET_OUT_COURSECOMPOSITE_SET_INFO
+     *         EM_COURSECOMPOSITE_TYPE_UPDATE_INFO,                    //将组合通道信息更新到time时的信息,对应结构体
+     *              pInParam = NET_IN_COURSECOMPOSITE_UPDATE_INFO, pOutParam = NET_OUT_COURSECOMPOSITE_UPDATE_INFO
+     *     }
+     */
+    public boolean CLIENT_OperateCourseCompositeChannel(LLong lLoginID, int emOperateType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 获取录像状态
+     * NET_IN_GET_RECORD_STATE *pInParam, NET_OUT_GET_RECORD_STATE *pOutParam
+     */
+    public boolean CLIENT_GetRecordState(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 电视墙操作
+     * NET_MONITORWALL_OPERATE_TYPE emType, void* pInParam, void* pOutParam
+     */
+    public boolean CLIENT_OperateMonitorWall(LLong lLoginID, int emType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 分页获取信息标注信息列表
+     * NET_IN_SCENICSPOT_GETPOINTINFOS_INFO *pInstuParam, NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO *pstuOutParam
+     */
+    public boolean CLIENT_ScenicSpotGetPointInfos(LLong lLoginID, Pointer pInstuParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 设置景物点,原编号的景物点将会被覆盖
+     * NET_IN_SCENICSPOT_SETPOINTINFO_INFO *pInstuParam, NET_OUT_SCENICSPOT_SETPOINTINFO_INFO *pstuOutParam
+     */
+    public boolean CLIENT_ScenicSpotSetPointInfo(LLong lLoginID, Pointer pInstuParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 获取景物点支持的能力
+     * NET_IN_SCENICSPOT_GETCAPS_INFO *pInstuParam, NET_OUT_SCENICSPOT_GETCAPS_INFO *pstuOutParam
+     */
+    public boolean CLIENT_ScenicSpotGetCaps(LLong lLoginID, Pointer pInstuParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 以景物标注点为中心,进行三维定位(倍率不变)
+     * NET_IN_SCENICSPOT_TURNTOPOINT_INFO *pInParam, NET_OUT_SCENICSPOT_TURNTOPOINT_INFO *pOutParam
+     */
+    public boolean CLIENT_ScenicSpotTurnToPoint(LLong lLoginID, Pointer pInstuParam, Pointer pstuOutParam, int nWaitTime);
+
+    /////////////////////////////////////////新增接口 ///////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * 设置停车车位状态
+     * NET_IN_SET_PARKINGSPACE_STATE_INFO *pInParam, NET_OUT_SET_PARKINGSPACE_STATE_INFO *pOutParam
+     */
+    public boolean CLIENT_SetParkingSpaceState(LLong lLoginID, Pointer pstInParm, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 修改停车记录信息
+     * NET_IN_MODIFY_PARKINGRECORD_INFO *pInParam, NET_OUT_MODIFY_PARKINGRECORD_INFO *pOutParam
+     */
+    public boolean CLIENT_ModifyParkingRecord(LLong lLoginID, Pointer pstInParm, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 按照事件类型抓图(配合CLIENT_RealLoadPic()、CLIENT_RealLoadPicEx()接口使用, 按照手动抓拍模式(Manual)订阅,图片通过回调给用户)(pInParam, pOutParam内存由用户申请释放)
+     * NET_IN_SNAP_BY_EVENT *pInParam, NET_OUT_SNAP_BY_EVENT *pOutParam
+     */
+    public boolean CLIENT_SnapPictureByEvent(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    public static class NET_IN_SET_MARK_FILE_BY_TIME extends SdkStructure
+    {
+        public int           					dwSize;
+        public int           					nChannel;			//需要锁定的通道号,从0开始,元素为-1时,表示全通道。
+        public NET_TIME_EX  					stuStartTime;		//开始时间
+        public NET_TIME_EX  					stuEndTime;			//结束时间
+        public int            	  				bFlag;				// 标记动作	true : 标记, false : 清除
+        public int                              bLockTimeFlag;      //nLockTime字段标志位, 为 TRUE 时使用nLockTime
+        public int                              nLockTime;          //锁定时长,以加锁时间为起点 ,单位为小时
+        public NET_IN_SET_MARK_FILE_BY_TIME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_OUT_SET_MARK_FILE_BY_TIME extends SdkStructure
+    {
+        public int           					dwSize;
+
+        public NET_OUT_SET_MARK_FILE_BY_TIME() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 按时间标记录像
+    public boolean CLIENT_SetMarkFileByTime(LLong lUpgradeID, NET_IN_SET_MARK_FILE_BY_TIME pInParam, NET_OUT_SET_MARK_FILE_BY_TIME pOutParam, int nWaitTime);
+
+    public static class NET_IN_SET_MARK_FILE extends SdkStructure
+    {
+        public int                          dwSize;
+        public int	                    	emLockMode;								// 录像加锁方式,详见EM_MARKFILE_MODE
+        public int							emFileNameMadeType;						// 文件名产生的方式,详见EM_MARKFILE_NAMEMADE_TYPE
+        public int							nChannelID;								// 通道号
+        public byte[]						szFilename = new byte[MAX_PATH];	    // 文件名
+        public int							nFramenum;								// 文件总帧数
+        public int							nSize;									// 文件长度
+        public NET_TIME						stuStartTime;							// 开始时间
+        public NET_TIME						stuEndTime;								// 结束时间
+        public int							nDriveNo;								// 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像)
+        public int							nStartCluster;							// 起始簇号
+        public byte							byRecordFileType;						// 录象文件类型  0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片, 5: 智能录像
+        public byte							byImportantRecID;						// 0:普通录像 1:重要录像
+        public byte							byHint;									// 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 )
+        public byte							byRecType;								// 0-主码流录像  1-辅码流1录像 2-辅码流2录像 3-辅码流3录像
+        public int                          nLockTime;                              // 锁定时长,以加锁时间为起点,单位为小时
+
+        public NET_IN_SET_MARK_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 录像加锁方式
+    public static class EM_MARKFILE_MODE extends SdkStructure
+    {
+        public static final int EM_MARK_FILE_BY_TIME_MODE = 0;		// 通过时间方式对录像加锁
+        public static final int EM_MARK_FILE_BY_NAME_MODE = 1;		// 通过文件名方式对录像加锁
+    }
+
+    // 文件名产生的方式
+    public static class EM_MARKFILE_NAMEMADE_TYPE extends SdkStructure
+    {
+        public static final int EM_MARKFILE_NAMEMADE_DEFAULT = 0;	// 默认方式:需要用户传递录像文件名参数szFilename
+        public static final int EM_MARKFILE_NAMEMADE_JOINT = 1;		// 拼接文件名方式:用户传递磁盘号(nDriveNo)、起始簇号(nStartCluster),不需要传递录像文件名
+    }
+
+    public static class NET_OUT_SET_MARK_FILE extends SdkStructure
+    {
+        public int           					dwSize;
+
+        public NET_OUT_SET_MARK_FILE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 按文件标记录像
+    public boolean CLIENT_SetMarkFile(LLong lLoginID, NET_IN_SET_MARK_FILE pInParam, NET_OUT_SET_MARK_FILE pOutParam, int nWaitTime);
+
+
+    public static class NET_IN_DEV_GPS_INFO extends SdkStructure
+    {
+        public int                     dwSize;                         // 该结构体大小
+        public int                     nChannel;
+
+        public NET_IN_DEV_GPS_INFO() {
+            this.dwSize =this.size();
+        }
+    }
+
+    public static class NET_OUT_DEV_GPS_INFO extends SdkStructure
+    {
+        public int                     	dwSize;                          // 该结构体大小
+        public NET_TIME				   	stuLocalTime;                    // 当前时间
+        public double                  	dbLongitude;                     // 经度(单位是百万分之度,范围0-360度)
+        public double                  	dbLatitude;                      // 纬度(单位是百万分之度,范围0-180度)
+        public double                  	dbAltitude;                      // 高度(单位:米)
+        public double                  	dbSpeed;                         // 速度(单位:km/H)
+        public double                  	dbBearing;                       // 方向角(单位:度)
+        public int   					emAntennasStatus;				 // 天线状态(0:坏 1:好)
+        public int   					emPositioningResult;             // 定位状态(0:不定位 1:定位)
+        public int						dwSatelliteCount;				 // 卫星个数
+        public int     					emworkStatus;                    // 工作状态
+        public int                     	nAlarmCount;					 // 报警个数
+        public int[] 					nAlarmState = new int[128];		 // 发生的报警位置,值可能多个
+        public float					fHDOP;							 // 水平精度因子
+
+        public NET_OUT_DEV_GPS_INFO() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 实时抽帧配置,EVS
+    public static class CFG_BACKUP_LIVE_INFO extends SdkStructure
+    {
+        public int                 bEnable;                                        // 是否启动抽帧
+        public int                 nBackupRate;                                    // 抽帧备份比率,如为0表示只保留I帧,其它情况下表示保留I帧以及紧邻其后的若干P帧
+        // 单位:百分比
+        // 如果GOP为50,20表示保留50*20%=10帧数据(即1个I帧和9个P帧)。如果计算结果带小数,则取整
+        public CFG_TIME_SECTION    stuTimeSection;                                 // 抽帧时间段
+    } ;
+
+    // 定时录像配置信息
+    public static class CFG_RECORD_INFO extends SdkStructure
+    {
+        public int                 			nChannelID;					// 通道号(0开始)
+        public TIME_SECTION_WEEK_DAY_6[] 	stuTimeSection = (TIME_SECTION_WEEK_DAY_6[])new TIME_SECTION_WEEK_DAY_6().toArray(WEEK_DAY_NUM); // 时间表
+        public int							nPreRecTime;				// 预录时间,为零时表示关闭(0~300)
+        public int							bRedundancyEn;				// 录像冗余开关
+        public int							nStreamType;				// 0-主码流,1-辅码流1,2-辅码流2,3-辅码流3
+        public int							nProtocolVer;				// 协议版本号, 只读
+        public int							abHolidaySchedule;          // 为true时有假日配置信息,bHolidayEn、stuHolTimeSection才有效;
+        public int                			bHolidayEn;                 // 假日录像使能TRUE:使能,FALSE:未使能
+        public TIME_SECTION_WEEK_DAY_6 		stuHolTimeSection;			// 假日录像时间表
+        public int                          nBackupLiveNum;             // 实时抽帧配置个数
+        public CFG_BACKUP_LIVE_INFO[]       stuBackupLiveInfo=(CFG_BACKUP_LIVE_INFO[]) new CFG_BACKUP_LIVE_INFO().toArray(8);          // 实时抽帧配置,EVS
+        public int                          bSaveVideo;                 // 是否录制视频帧
+    	public int						    bSaveAudio;					// 录像时是否保存音频数据
+    }
+
+    //获取云升级信息入参
+    public static class NET_IN_UPGRADER_GETSERIAL extends SdkStructure
+    {
+        public int               dwSize;					// 此结构体大小
+
+        public NET_IN_UPGRADER_GETSERIAL() {
+            this.dwSize = this.size();
+        }
+    }
+
+
+    //云升级信息
+    public static class NET_UPGRADER_SERIAL_INO extends SdkStructure
+    {
+        public int    		emVendor;               						// 厂商,详见ENUM_VENDOR_TYPE
+        public int  		emStandard;             						// 视频制式, 详见ENUM_STANDARD_TYPE
+        public NET_TIME_EX  stuBuild;                      					// 发布日期
+        public byte[]    	szChip = new byte[NET_COMMON_STRING_16];        // 可升级的程序名
+        public byte[]    	szSerial = new byte[NET_COMMON_STRING_256];     // 内部型号
+        public byte[]    	szLanguage = new byte[NET_COMMON_STRING_128];   // 语言
+        public byte[]    	szSn = new byte[NET_COMMON_STRING_64];          // 序列号
+        public byte[]    	szSWVersion = new byte[NET_COMMON_STRING_64];   // 软件版本
+        public byte[]    	szTag = new byte[NET_COMMON_STRING_256];        // 自定义标记
+        public byte[]    	szTag2 = new byte[NET_COMMON_STRING_256];       // 自定义标记2
+        public byte[]    	reserved = new byte[1024];
+    }
+
+    public static final int  MAX_UPGRADER_SERIAL_INFO  = 8;
+
+    //获取云升级信息出参
+    public static class NET_OUT_UPGRADER_GETSERIAL extends SdkStructure
+    {
+        public int                     		dwSize;					               // 此结构体大小
+        public NET_UPGRADER_SERIAL_INO[]   	stuSerialInfo = new NET_UPGRADER_SERIAL_INO[MAX_UPGRADER_SERIAL_INFO]; // 云升级信息
+        public int                       	nRetNum;                                 // 返回个数
+
+        public NET_OUT_UPGRADER_GETSERIAL() {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuSerialInfo.length; ++i) {
+                stuSerialInfo[i] = new NET_UPGRADER_SERIAL_INO();
+            }
+        }
+    }
+
+    //从设备获取信息,用于向DH云确认是否有升级包
+    public boolean CLIENT_GetUpdateSerial(LLong lLoginID, NET_IN_UPGRADER_GETSERIAL pstuInGetSerial, NET_OUT_UPGRADER_GETSERIAL pstuOutGetSerial, int nWaitTime);
+
+    // 云升级软件检查入参
+    public static class NET_IN_CLOUD_UPGRADER_CHECK extends SdkStructure
+    {
+        public int          dwSize;
+        public int    		emVendor;               						// 厂商,详见ENUM_VENDOR_TYPE
+        public int  		emStandard;             						// 视频制式, 详见ENUM_STANDARD_TYPE
+        public NET_TIME_EX  stuBuild;                      					// 编译时间,用于比较版本
+        public byte[]       szUrl = new byte[NET_COMMON_STRING_1024];      	// 云URL
+        public byte[]       szClass = new byte[NET_COMMON_STRING_64];      	// 设备大类
+        public byte[]       szSerial = new byte[NET_COMMON_STRING_256];    	// 设备硬件信号系列
+        public byte[]       szLanguage = new byte[NET_COMMON_STRING_128];  	// 语言
+        public byte[]       szSN = new byte[NET_COMMON_STRING_64];         	// 设备序列号
+        public byte[]       szSWVersion = new byte[NET_COMMON_STRING_64];  	// 版本号,用于显示
+        public byte[]       szTag1 = new byte[NET_COMMON_STRING_256];      	// 预留字段,可用于后续或扩展
+        public byte[]       szTag2 = new byte[NET_COMMON_STRING_256];       // 预留字段,可用于后续或扩展
+        public byte[]       szAccessKeyId = new byte[NET_COMMON_STRING_128];//Access Key ID
+        public byte[]       szSecretAccessKey = new byte[NET_COMMON_STRING_128];//Secret Access Key
+
+        public NET_IN_CLOUD_UPGRADER_CHECK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //设备制造商
+    public static class ENUM_VENDOR_TYPE extends SdkStructure
+    {
+        public static final int ENUM_VENDOR_TYPE_UNKNOWN = 0;   // 未知
+        public static final int ENUM_VENDOR_TYPE_GENERAL = 1;   // General
+        public static final int ENUM_VENDOR_TYPE_DH = 2;       	// DH
+        public static final int ENUM_VENDOR_TYPE_OEM = 3;       // OEM
+        public static final int ENUM_VENDOR_TYPE_LC = 4;       	// LC
+        public static final int ENUM_VENDOR_TYPE_EZIP = 5;      // EZIP
+    }
+
+    //视频制式
+    public static class ENUM_STANDARD_TYPE extends SdkStructure
+    {
+        public static final int ENUM_STANDARD_TYPE_UNKNOWN = 0;   	// 未知
+        public static final int ENUM_STANDARD_TYPE_PAL = 1;   		// P-PAL
+        public static final int ENUM_STANDARD_TYPE_NTSC = 2;       	// N-NTSC
+        public static final int ENUM_STANDARD_TYPE_PAL_NTSC = 3;    // PN-PAL/NTSC默认P制
+        public static final int ENUM_STANDARD_TYPE_NTSC_PAL = 4;    // NP-NTSC/PAL默认N制
+        public static final int ENUM_STANDARD_TYPE_SECAM = 5;       // S-SECAM
+    }
+
+    // 云升级软件检查出参
+    public static class NET_OUT_CLOUD_UPGRADER_CHECK extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  bHasNewVersion;                  					// 是否有可升级版本
+        public byte[]               szVersion = new byte[NET_COMMON_STRING_64];  		// 版本信息
+        public byte[]               szAttention = new byte[NET_COMMON_STRING_1024]; 	// 提醒设备升级的提示信息
+        public byte[]               szPackageUrl = new byte[NET_COMMON_STRING_1024]; 	// 设备升级包的URL
+        public byte[] 			    szPackageId = new byte[NET_COMMON_STRING_64];    	// 升级包ID
+
+        public NET_OUT_CLOUD_UPGRADER_CHECK() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 检查云端是否有可升级软件, 使用HTTP协议
+    public boolean CLIENT_CloudUpgraderCheck(NET_IN_CLOUD_UPGRADER_CHECK pIn, NET_OUT_CLOUD_UPGRADER_CHECK pOut, int dwWaitTime);
+
+    //云下载状态
+    public static class emCloudDownloadState extends SdkStructure
+    {
+        public static final int emCloudDownloadState_Unknown = 0;            	// 未知
+        public static final int emCloudDownloadState_Success = 1;            	// 云下载成功(需要关闭句柄)
+        public static final int emCloudDownloadState_Failed = 2;            	// 云下载失败(不需要关闭句柄,会不断尝试下载)
+        public static final int emCloudDownloadState_Downloading = 3;           // 正在下载中
+        public static final int emCloudDownloadState_NoEnoughDiskSpace = 4;     // 磁盘空间不足
+    }
+
+    // 云下载回调函数
+    public interface fCloudDownload_Process_callback extends Callback {
+        public void invoke(LLong lDownHandle, int emState, double dwDownloadSpeed, int dwProgressPercentage, Pointer dwUser);
+    }
+
+    // 云升级下载升级包入参
+    public static class NET_IN_CLOUD_UPGRADER_DOWN extends SdkStructure
+    {
+        public int                          dwSize;
+        public byte[]                       szPackageUrl = new byte[NET_COMMON_STRING_1024];// 设备升级包的URL
+        public byte[]                       szSaveFile = new byte[NET_COMMON_STRING_1024];  // 保存文件名
+        public Callback     			pfProcessCallback;                   			// 进度回调,实现fCloudDownload_Process_callback
+        public Pointer                      dwUser;                              			// 回调用户数据
+
+        public NET_IN_CLOUD_UPGRADER_DOWN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云升级下载升级包出参
+    public static class NET_OUT_CLOUD_UPGRADER_DOWN extends SdkStructure
+    {
+        public int                  dwSize;
+
+        public NET_OUT_CLOUD_UPGRADER_DOWN() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云 下载升级软件, 使用HTTP协议
+    public LLong CLIENT_CloudUpgraderDownLoad(NET_IN_CLOUD_UPGRADER_DOWN pIn, NET_OUT_CLOUD_UPGRADER_DOWN pOut);
+
+    // 停止云下载, 使用HTTP协议
+    public boolean CLIENT_CloudUpgraderStop(LLong lDownloadHandle);
+
+    // 暂停云下载, 使用HTTP协议
+    public boolean CLIENT_CloudUpgraderPause(LLong lDownloadHandle, int bPause);
+
+    //升级结果
+    public static class NET_UPGRADE_REPORT_RESULT extends SdkStructure
+    {
+        public static final int NET_UPGRADE_REPORT_RESULT_UNKNWON = 0;         // 未知
+        public static final int NET_UPGRADE_REPORT_RESULT_SUCCESS = 1;         // 成功
+        public static final int NET_UPGRADE_REPORT_RESULT_FAILED = 2;          // 失败
+    }
+
+    public static final int NET_UPGRADE_COUNT_MAX = 256;  // 最大升级个数
+
+    //上报升级结果结构体
+    public static class NET_UPGRADE_REPORT extends SdkStructure
+    {
+        public int     			nDeviceNum;
+        public DEVICE_SERIAL[]	szDevSerialArr = (DEVICE_SERIAL[])new DEVICE_SERIAL().toArray(NET_UPGRADE_COUNT_MAX); // 序列号
+        public byte[]    		szPacketID = new byte[MAX_COMMON_STRING_128];                          // 升级包ID
+        public int 				emResult;                                							   // 升级结果,详见NET_UPGRADE_REPORT_RESULT
+        public byte[]    		szCode = new byte[MAX_COMMON_STRING_128];                              // 错误码信息
+        public byte[]    		reserved = new byte[256];
+    }
+
+    public static class DEVICE_SERIAL extends SdkStructure
+    {
+        public byte[]    	szDevSerial = new byte[MAX_COMMON_STRING_64];   // 序列号
+    }
+
+    //上报升级结果入参
+    public static class NET_IN_UPGRADE_REPORT extends SdkStructure
+    {
+        public int                   	dwSize;
+        public int                      nCount;                                  // 升级包个数
+        public Pointer      			pstuUpgradeReport;                      // 升级结果信息 , 大小 nCount * sizeof(NET_UPGRADE_REPORT)
+        public byte[]                   szAccessKeyId = new byte[NET_COMMON_STRING_128];     //访问ID
+        public byte[]                   szSecretAccessKey = new byte[NET_COMMON_STRING_128]; //访问秘钥
+        public byte[]                   szUrl = new byte[NET_COMMON_STRING_1024];            // 云URL
+
+        public NET_IN_UPGRADE_REPORT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //上报升级结果出参
+    public static class NET_OUT_UPGRADE_REPORT extends SdkStructure
+    {
+        public int                  dwSize;
+
+        public NET_OUT_UPGRADE_REPORT() {
+            this.dwSize = this.size();
+        }
+    }
+
+    //上报升级结果, 使用HTTP协议
+    public boolean CLIENT_CloudUpgraderReport(NET_IN_UPGRADE_REPORT pIn, NET_OUT_UPGRADE_REPORT pOut, int dwWaitTime);
+
+    // 升级状态回调结构体
+    public static class NET_CLOUD_UPGRADER_STATE extends SdkStructure
+    {
+        public int						dwSize;
+        public int 						emState;							// 升级状态,详见EM_UPGRADE_STATE
+        public int						nProgress;							// 升级百分比
+        public byte[]					szFileName = new byte[NET_COMMON_STRING_128];	// 升级文件
+        public long                     nTotalLen;                          // 升级文件总大小,单位字节
+    	public byte[]					szFileNameEx = new byte[256];		// 升级文件扩展
+    	public byte[]					szReserved = new byte[1024];		// 扩展字段
+        public NET_CLOUD_UPGRADER_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 升级状态回调函数
+    public interface fUpgraderStateCallback extends Callback {
+        public void invoke(LLong lLoginId, LLong lAttachHandle, NET_CLOUD_UPGRADER_STATE pBuf, int dwBufLen, Pointer pReserved, Pointer dwUser);
+    }
+
+    // 订阅升级状态入参
+    public static class NET_IN_CLOUD_UPGRADER_ATTACH_STATE extends SdkStructure
+    {
+        public int					dwSize;
+        public Callback		cbUpgraderState;  // 升级状态回调实现fUpgraderStateCallback
+        public Pointer				dwUser;
+
+        public NET_IN_CLOUD_UPGRADER_ATTACH_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 订阅升级状态出参
+    public static class NET_OUT_CLOUD_UPGRADER_ATTACH_STATE extends SdkStructure
+    {
+        public int					dwSize;
+
+        public NET_OUT_CLOUD_UPGRADER_ATTACH_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取升级状态入参
+    public static class NET_IN_CLOUD_UPGRADER_GET_STATE extends SdkStructure
+    {
+        public int					dwSize;
+
+        public NET_IN_CLOUD_UPGRADER_GET_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取升级状态出参
+    public static class NET_OUT_CLOUD_UPGRADER_GET_STATE extends SdkStructure
+    {
+        public int					dwSize;
+        public int					emState;							// 升级状态,详见EM_UPGRADE_STATE
+        public int					nProgress;							// 升级进度
+        public byte[]				szFileName = new byte[NET_COMMON_STRING_128];	// 升级文
+
+        public NET_OUT_CLOUD_UPGRADER_GET_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 升级包和升级状态
+    public static class EM_UPGRADE_STATE extends SdkStructure
+    {
+        public static final int EM_UPGRADE_STATE_UNKNOWN = 0;   // 未知状态
+        public static final int EM_UPGRADE_STATE_NONE = 1;      // 没有检测到更新状态
+        public static final int EM_UPGRADE_STATE_INVALID = 2;   // 升级包不正确
+        public static final int EM_UPGRADE_STATE_NOT_ENOUGH_MEMORY = 3;  // 内存不够
+        public static final int EM_UPGRADE_STATE_DOWNLOADING = 4;        // 正在下载数据
+        public static final int EM_UPGRADE_STATE_DOWNLOAD_FAILED = 5;	 // 下载失败
+        public static final int EM_UPGRADE_STATE_DOWNLOAD_SUCCESSED = 6; // 下载成功
+        public static final int EM_UPGRADE_STATE_PREPARING = 7;			 // 准备升级
+        public static final int EM_UPGRADE_STATE_UPGRADING = 8;			 // 升级中
+        public static final int EM_UPGRADE_STATE_UPGRADE_FAILED = 9;	 // 升级失败
+        public static final int EM_UPGRADE_STATE_UPGRADE_SUCCESSED = 10; // 升级成功
+        public static final int EM_UPGRADE_STATE_UPGRADE_CANCELLED = 11; // 取消升级
+        public static final int EM_UPGRADE_STATE_FILE_UNMATCH = 12; 	 // 升级包不匹配
+    }
+
+    // 订阅升级状态观察接口
+    public LLong CLIENT_CloudUpgraderAttachState(LLong lLoginID, NET_IN_CLOUD_UPGRADER_ATTACH_STATE pInParam, NET_OUT_CLOUD_UPGRADER_ATTACH_STATE pOutParam, int nWaitTime);
+
+    // 退订升级状态观察接口
+    public boolean CLIENT_CloudUpgraderDetachState(LLong lAttachHandle);
+
+    // 获取升级状态
+    public boolean CLIENT_CloudUpgraderGetState(LLong lLoginID, NET_IN_CLOUD_UPGRADER_GET_STATE pInParam, NET_OUT_CLOUD_UPGRADER_GET_STATE pOutParam, int nWaitTime);
+
+    // 代理服务器地址
+    public static class NET_PROXY_SERVER_INFO extends SdkStructure
+    {
+        public byte[]						szIP = new byte[NET_MAX_IPADDR_LEN_EX];	// IP地址
+        public int							nPort;									// 端口
+        public byte[]						byReserved = new byte[84];
+    }
+
+    // CLIENT_CheckCloudUpgrader 入参
+    public static class NET_IN_CHECK_CLOUD_UPGRADER extends SdkStructure
+    {
+        public int								dwSize;			// 结构体大小
+        public int								nWay;			// 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测, 2-获取缓存的检测结果
+        public NET_PROXY_SERVER_INFO			stProxy;		// 代理服务器地址, way==1时有意义
+
+        public NET_IN_CHECK_CLOUD_UPGRADER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 云升级状态
+    public static class EM_CLOUD_UPGRADER_CHECK_STATE extends SdkStructure
+    {
+        public static final int EM_CLOUD_UPGRADER_CHECK_STATE_UNKNOWN = 0;				// 未知
+        public static final int EM_CLOUD_UPGRADER_CHECK_STATE_NONE = 1;					// 没有检测到更新
+        public static final int EM_CLOUD_UPGRADER_CHECK_STATE_REGULAR = 2;				// 一般升级 (需要用户确认, 只能向高版本)
+        public static final int EM_CLOUD_UPGRADER_CHECK_STATE_EMERGENCY = 3;			// 强制升级 (设备自动检测执行, 可以向低版本)
+        public static final int EM_CLOUD_UPGRADER_CHECK_STATE_AUTOMATIC = 4;			// 自动升级 (有新升级包, 自动升级, 当前为使用, 需使能页面自动升级选项)
+    }
+
+    // 云升级新版本升级包类型
+    public static class EM_CLOUD_UPGRADER_PACKAGE_TYPE extends SdkStructure
+    {
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_UNKNOWN = 0;				// 未知
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_ALL = 1;					// 整包
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ = 2;					// 云台主控包
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_WEB = 3;					// Web
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_LOGO = 4;				// Logo
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_CUSTOM = 5;				// Custom
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_GUI = 6;					// Gui
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_PD = 7;					// PD
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_DATA = 8;				// Data
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_POWER = 9;			// 云台电源
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_LIGHT = 10;			// 云台灯光
+        public static final int EM_CLOUD_UPGRADER_PACKAGE_TYPE_PTZ_HEATER = 11;			// 云台加热器
+    }
+
+    // CLIENT_CheckCloudUpgrader 出参
+    public static class NET_OUT_CHECK_CLOUD_UPGRADER extends SdkStructure
+    {
+        public int					dwSize;									// 结构体大小
+        public int					emState;								// 升级状态,详见EM_CLOUD_UPGRADER_CHECK_STATE
+        public int					emPackageType;							// 新版本升级包类型, State不为None需要返回,详见EM_CLOUD_UPGRADER_PACKAGE_TYPE
+        public byte[]				szOldVersion = new byte[MAX_COMMON_STRING_64];		// 旧版本号, State不为None需要返回
+        public byte[]				szNewVersion = new byte[MAX_COMMON_STRING_64];		// 新版本号,State不为None需要返回
+        public byte[]				szAttention = new byte[NET_COMMON_STRING_2048];		// 新的升级包更新内容
+        public byte[]				szPackageURL = new byte[NET_COMMON_STRING_256];		// 升级包下载地址(代理升级需要)
+        public byte[]				szPackageID = new byte[MAX_COMMON_STRING_64];		// 升级包ID
+        public byte[]				szCheckSum = new byte[MAX_COMMON_STRING_64];		// 升级包的SHA-256校验和
+        public byte[]				szBuildTime = new byte[MAX_COMMON_STRING_32];		// 升级包构建时间
+
+        public NET_OUT_CHECK_CLOUD_UPGRADER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在线升级检查是否有可用升级包, pInParam和pOutParam内存由用户申请和释放
+    public boolean CLIENT_CheckCloudUpgrader(LLong lLoginID, NET_IN_CHECK_CLOUD_UPGRADER pInParam, NET_OUT_CHECK_CLOUD_UPGRADER pOutParam, int nWaitTime);
+
+    // 升级包信息
+    public static class NET_CLOUD_UPGRADER_INFO extends SdkStructure
+    {
+        public byte[]					szPackageURL = new byte[NET_COMMON_STRING_256];		// 升级包下载地址(代理升级需要)
+        public byte[]					szPackageID = new byte[MAX_COMMON_STRING_64];		// 升级包ID
+        public byte[]					szCheckSum = new byte[MAX_COMMON_STRING_64];		// 升级包的SHA-256校验和
+        public byte[]					byReserved = new byte[1024];						// 保留字节
+    }
+
+    // CLIENT_ExecuteCloudUpgrader 入参
+    public static class NET_IN_EXECUTE_CLOUD_UPGRADER extends SdkStructure
+    {
+        public int								dwSize;									// 结构体大小
+        public byte[]							szNewVersion = new byte[MAX_COMMON_STRING_64];		// 上一次check得到的新版本号
+        public int								nWay;									// 检测路径, 0-直连升级服务器检测, 1-通过代理服务器检测
+        public NET_PROXY_SERVER_INFO			stProxy;								// 代理服务器地址, nWay==1时有意义
+        public NET_CLOUD_UPGRADER_INFO			stInfo;									// 升级包信息
+
+        public NET_IN_EXECUTE_CLOUD_UPGRADER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ExecuteCloudUpgrader 出参
+    public static class NET_OUT_EXECUTE_CLOUD_UPGRADER extends SdkStructure
+    {
+        public int								dwSize;									// 结构体大小
+
+        public NET_OUT_EXECUTE_CLOUD_UPGRADER() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 执行在线云升级, pInParam和pOutParam内存由用户申请和释放
+    public boolean CLIENT_ExecuteCloudUpgrader(LLong lLoginID, NET_IN_EXECUTE_CLOUD_UPGRADER pInParam, NET_OUT_EXECUTE_CLOUD_UPGRADER pOutParam, int nWaitTime);
+
+    // CLIENT_GetCloudUpgraderState 入参
+    public static class NET_IN_GET_CLOUD_UPGRADER_STATE extends SdkStructure
+    {
+        public int								dwSize;									// 结构体大小
+
+        public NET_IN_GET_CLOUD_UPGRADER_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 在线升级状态
+    public static class EM_CLOUD_UPGRADER_STATE extends SdkStructure
+    {
+        public static final int EM_CLOUD_UPGRADER_STATE_UNKNOWN = 0;				// 未知
+        public static final int EM_CLOUD_UPGRADER_STATE_NOUPGRADE = 1;				// "Noupgrade"-未进行升级
+        public static final int EM_CLOUD_UPGRADER_STATE_PREPARING = 2;				// "Preparing"-准备升级
+        public static final int EM_CLOUD_UPGRADER_STATE_DOWNLOADING = 3;			// "Downloading"-正在下载数据
+        public static final int EM_CLOUD_UPGRADER_STATE_DOWNLOADFAILED = 4;			// "DownloadFailed"-下载失败
+        public static final int EM_CLOUD_UPGRADER_STATE_UPGRADING = 5;				// "Upgrading"-正在升级
+        public static final int EM_CLOUD_UPGRADER_STATE_INVALID = 6;				// "Invalid"-升级包不正确
+        public static final int EM_CLOUD_UPGRADER_STATE_FAILED = 7;					// "Failed"-升级包写入Flash失败
+        public static final int EM_CLOUD_UPGRADER_STATE_SUCCEEDED = 8;				// "Succeeded"-升级包写入Flash成功
+    }
+
+    // CLIENT_GetCloudUpgraderState 出参
+    public static class NET_OUT_GET_CLOUD_UPGRADER_STATE extends SdkStructure
+    {
+        public int					dwSize;					// 结构体大小
+        public int					emState;				// 升级状态,详见EM_CLOUD_UPGRADER_STATE
+        public int					nProgress;				// 升级进度, 状态是Downloading/Upgrading时有意义
+
+        public NET_OUT_GET_CLOUD_UPGRADER_STATE() {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取云升级在线升级状态, pInParam和pOutParam内存由用户申请和释放
+    public boolean CLIENT_GetCloudUpgraderState(LLong lLoginID, NET_IN_GET_CLOUD_UPGRADER_STATE pInParam, NET_OUT_GET_CLOUD_UPGRADER_STATE pOutParam, int nWaitTime);
+
+
+    // 事件类型 EVENT_IVS_PHONECALL_DETECT(打电话检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_PHONECALL_DETECT_INFO extends SdkStructure
+    {
+        public int                 	nChannelID;										// 通道号
+        public int                 	nAction;										// 0:脉冲 1:开始 2:停止
+        public byte[]              	szName = new byte[MAX_EVENT_NAME];				// 事件名称
+        public double              	PTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;											// 事件发生的时间
+        public int                 	nEventID;										// 事件ID
+
+        public int					nGroupID;										// 事件组ID
+        public int					nCountInGroup;									// 一个事件组内的抓拍张数
+        public int					nIndexInGroup;									// 一个事件组内的抓拍序号,从1开始
+        public int					UTCMS;											// UTC对应的毫秒数
+        public NET_MSG_OBJECT		stuObject;										// 检测到的物体
+        public int					nDetectRegionNum;								// 规则检测区域顶点数
+        public NET_POINT[]  		stuDetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);	// 规则检测区域
+        public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;							// 智能事件公共信息
+        public int                nRuleID;                                        // 智能事件规则编号
+        public int                nObjectNum;                                     // 检测到的物体数量
+        public DH_MSG_OBJECT[]		stuObjects=(DH_MSG_OBJECT[])new DH_MSG_OBJECT().toArray(128);								// 多个检测到的物体信息
+        public int                nSerialUUIDNum;                                 // 智能物体数量
+        public byte[]             szSerialUUID=new byte[128*22];                          // 智能物体全局唯一物体标识
+        // 有效数据位21位,包含’\0’
+        // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+        // 中间14位YYYYMMDDhhmmss:年月日时分秒
+        // 后5位%u%u%u%u%u:物体ID,如00001
+        public boolean				bSceneImage;									// stuSceneImage 是否有效
+        public SCENE_IMAGE_INFO_EX stuSceneImage;									// 全景广角图
+        public byte[]				szUserName =new byte[32];						// 用户名称
+    	public Pointer              pstuImageInfo;					                // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+    	public int				    nImageInfoNum;						            // 图片信息个数
+    	public NET_EVENT_INFO_EXTEND        stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]				byReserved=new byte[188];						// 保留字节
+    }
+
+    // 事件类型 EVENT_IVS_SMOKING_DETECT(吸烟检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_SMOKING_DETECT_INFO extends SdkStructure
+    {
+        public int                 	nChannelID;										// 通道号
+        public int                 	nAction;										// 0:脉冲 1:开始 2:停止
+        public byte[]              	szName = new byte[MAX_EVENT_NAME];				// 事件名称
+        public double              	PTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX         	UTC;											// 事件发生的时间
+        public int                 	nEventID;										// 事件ID
+
+        public int					nGroupID;										// 事件组ID
+        public int					nCountInGroup;									// 一个事件组内的抓拍张数
+        public int					nIndexInGroup;									// 一个事件组内的抓拍序号,从1开始
+        public int					UTCMS;											// UTC对应的毫秒数
+        public NET_MSG_OBJECT		stuObject;										// 检测到的物体
+        public int					nDetectRegionNum;								// 规则检测区域顶点数
+        public NET_POINT[]  		stuDetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);	// 规则检测区域
+        public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;							// 智能事件公共信息
+        public byte					szSerialUUID[] = new byte[22];                  //智能物体全局唯一物体标识
+        public SCENE_IMAGE_INFO		stuSceneImageInfo = new SCENE_IMAGE_INFO();     //全景广角图
+        public byte					szUserName[] = new byte[32];                    //用户名称
+        public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                  nImageInfoNum;                                  //图片信息个数
+        public NET_EVENT_INFO_EXTEND        stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte                 byReserved[] = new byte[1024];                   //预留字节
+    }
+
+    // 事件类型 EVENT_IVS_FIREWARNING(火警事件) 对应的数据块描述信息
+    public static class DEV_EVENT_FIREWARNING_INFO extends SdkStructure
+    {
+        public int						nChannelID;									// 通道号
+        public byte[]					szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public NET_EVENT_FILE_INFO		stuFileInfo;								// 事件对应文件信息
+        public int						nAction;									// 1:开始 2:停止
+        public int						nFSID;										// Uint32	火情编号ID
+        public int						emPicType;									// 图片类型,详见 EM_FIREWARNING_PIC_TYPE
+    	public int						bIsLeaveFireDetect;							// 是否属于离岗火点检测(TRUE:是 FALSE:不是)
+    	public Pointer                  pstuImageInfo;		                        // 图片信息数组,指针对应结构体NET_IMAGE_INFO_EX2的数组    
+    	public int					    nImageInfoNum;			                    // 图片信息个数
+        public byte[]					byReserved = new byte[1008 - POINTERSIZE];				                    // 保留字节
+    }
+
+    // 图片类型
+    public static class EM_FIREWARNING_PIC_TYPE extends SdkStructure
+    {
+        public static final int EM_PIC_UNKNOWN = 0;		// 未知
+        public static final int EM_PIC_NONE = 1;		// 无
+        public static final int EM_PIC_OVERVIEW = 2;	// 全景图
+        public static final int EM_PIC_DETAIL = 3;		// 细节图
+    }
+
+    // 事件类型EVENT_IVS_LEFTDETECTION(物品遗留事件)对应的数据块描述信息
+    public static class DEV_EVENT_LEFT_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;
+        public byte[]                         byReserved = new byte[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public short                          nPreserID;                            // 事件触发的预置点号,从1开始(没有表示未知)
+        public byte[]                         szPresetName = new byte[64];          // 事件触发的预置名称
+        public NET_EXTENSION_INFO             stuExtensionInfo;                     // 扩展信息
+        public byte[]                         byReserved2 = new byte[2];            // 字节对齐
+        public NET_GPS_INFO                   stuGPSInfo;                           // GPS信息
+        public byte[]                         szVideoPath = new byte[256];          // 违章关联视频FTP上传路径
+        public SCENE_IMAGE_INFO_EX            stuSceneImage;                        // 全景广角图
+        public NET_IMAGE_INFO_EX2[]           stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int					          nImageInfoNum;						// 图片信息个数
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public DEV_EVENT_LEFT_INFO()
+        {
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 事件类型 EVENT_IVS_RIOTERDETECTION (聚众事件)对应的数据块描述信息
+    public static class DEV_EVENT_RIOTERL_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public int                            nObjectNum;                           // 检测到的物体个数
+        public NET_MSG_OBJECT[]               stuObjectIDs = new NET_MSG_OBJECT[NET_MAX_OBJECT_LIST];  // 检测到的物体列表
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;
+        public byte[]                         byReserved = new byte[2];             // 保留字节
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public NET_EXTENSION_INFO             stuExtensionInfo;                     // 扩展信息
+        public byte[]                         szSourceID=new byte[32];              // 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+        // 缺省时为空字符串,表示无此信息
+        // 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位
+        public NET_IMAGE_INFO_EX2[]           stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);// 图片信息数组    
+        public int					          nImageInfoNum;						// 图片信息个数
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                         bReserved = new byte[328];            // 保留字节,留待扩展.
+
+        public DEV_EVENT_RIOTERL_INFO()
+        {
+            for (int i = 0; i < stuObjectIDs.length; ++i) {
+                stuObjectIDs[i] = new NET_MSG_OBJECT();
+            }
+
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 事件类型EVENT_IVS_TAKENAWAYDETECTION(物品搬移事件)对应的数据块描述信息
+    public static class DEV_EVENT_TAKENAWAYDETECTION_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;
+        public byte[]                         byReserved = new byte[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public short                          nPreserID;                            // 事件触发的预置点号,从1开始(没有表示未知)
+        public byte[]                         szPresetName = new byte[64];          // 事件触发的预置名称
+        public NET_EXTENSION_INFO             stuExtensionInfo;                     // 扩展信息
+        public NET_IMAGE_INFO_EX2[]           stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);// 图片信息数组    
+        public int					nImageInfoNum;						        // 图片信息个数
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                         bReserved = new byte[418];            // 保留字节,留待扩展.
+
+        public DEV_EVENT_TAKENAWAYDETECTION_INFO()
+        {
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 事件类型EVENT_IVS_PARKINGDETECTION(非法停车事件)对应的数据块描述信息
+    public static class DEV_EVENT_PARKINGDETECTION_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;
+        public byte[]                         byReserved = new byte[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public NET_EXTENSION_INFO             stuExtensionInfo;                     // 扩展信息
+        public byte[]                         szCustomParkNo=new byte[64];          // 车位名称
+        public NET_PRESET_POSITION		      stPosition;							// 预置点的坐标和放大倍数 是一个数组,每个成员是int类型 
+																				    // 第一个参数是水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示。 
+																				    // 第二个参数是垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。 
+																				    // 第三个参数是放大参数,范围[0,127],表示最小倍到最大倍的变倍位置
+        public int				              nCurChannelHFOV;						// 当前报警通道的横向视场角,单位度,实际角度乘以100
+        public int				              nCurChannelVFOV;						// 当前报警通道的纵向视场角,单位度,实际角度乘以100
+        public SCENE_IMAGE_INFO_EX            stuSceneImage;                        // 全景广角图
+        public NET_IMAGE_INFO_EX2[]           stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);// 图片信息数组    
+        public int					          nImageInfoNum;						// 图片信息个数   
+		public int				              nObjectBoatsNum;					    // 船只物体个数
+		public NET_BOAT_OBJECT[]              stuBoatObjects = new NET_BOAT_OBJECT[100];	// 船只物品信息		
+	    public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                         bReserved = new byte[400];            // 保留字节,留待扩展.
+        public DEV_EVENT_PARKINGDETECTION_INFO()
+        {
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+			for (int i = 0; i < stuBoatObjects.length; i++) {
+			    stuBoatObjects[i] = new NET_BOAT_OBJECT();
+			}
+        }
+    }
+
+    // 事件类型EVENT_IVS_ABNORMALRUNDETECTION(异常奔跑事件)对应的数据块描述信息
+    public static class DEV_EVENT_ABNORMALRUNDETECTION_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public double                         dbSpeed;                              // 物体运动速度,km/h
+        public double                         dbTriggerSpeed;                       // 触发速度,km/h
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public int                            nTrackLineNum;                        // 物体运动轨迹顶点数
+        public NET_POINT[]                    TrackLine = new NET_POINT[NET_MAX_TRACK_LINE_NUM];  // 物体运动轨迹
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;
+        public byte                           bRunType;                             // 异常奔跑类型, 0-快速奔跑, 1-突然加速, 2-突然减速
+        public byte[]                         byReserved = new byte[1];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public Pointer                        pstuImageInfo;					    // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+        public int					          nImageInfoNum;						// 图片信息个数     
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                         bReserved = new byte[604];            // 保留字节,留待扩展.
+
+        public DEV_EVENT_ABNORMALRUNDETECTION_INFO()
+        {
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+
+            for (int i = 0; i < TrackLine.length; ++i) {
+                TrackLine[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 设置停车信息,对应CTRLTYPE_CTRL_SET_PARK_INFO命令参数
+    public static class NET_CTRL_SET_PARK_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szPlateNumber = new byte[MAX_PLATE_NUMBER_LEN];  		// 车牌号码
+        public int                            nParkTime;                            				// 停车时长,单位:分钟
+        public byte[]                         szMasterofCar = new byte[MAX_MASTER_OF_CAR_LEN];  	// 车主姓名
+        public byte[]                         szUserType = new byte[MAX_USER_TYPE_LEN];  			// 用户类型,非通用,用于出入口抓拍一体机
+        // monthlyCardUser表示月卡用户,yearlyCardUser表示年卡用户,longTimeUser表示长期用户/,casualUser表示临时用户/Visitor
+        public int                            nRemainDay;                          					// 到期天数
+        public byte[]                         szParkCharge = new byte[MAX_PARK_CHARGE_LEN];  		// 停车费
+        public int                            nRemainSpace;                         				// 停车库余位数
+        public int                            nPassEnable;                          				// 0:不允许车辆通过 1:允许车辆通过
+        public NET_TIME                       stuInTime;                            				// 车辆入场时间
+        public NET_TIME                       stuOutTime;                           				// 车辆出场时间
+        public int                            emCarStatus;                          				// 过车状态 详见EM_CARPASS_STATUS
+        public byte[]                         szCustom = new byte[MAX_CUSTOM_LEN];  				// 自定义显示字段,默认空
+        public byte[]                         szSubUserType = new byte[MAX_SUB_USER_TYPE_LEN];  	// 用户类型(szUserType字段)的子类型
+        public byte[]                         szRemarks = new byte[MAX_REMARKS_LEN];  				// 备注信息
+        public byte[]                         szResource = new byte[MAX_RESOURCE_LEN];  			// 资源文件(视频或图片)视频支持:mp4格式; 图片支持:BMP/jpg/JPG/jpeg/JPEG/png/PNG格式
+        public int                            nParkTimeout;                                // 停车超时时间,单位分钟。为0表示未超时,不为0表示超时时间。
+        public NET_CTRL_SET_PARK_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 过车状态
+    public static class EM_CARPASS_STATUS extends SdkStructure
+    {
+        public static final int EM_CARPASS_STATUS_UNKNOWN            = 0;   // 未知状态
+        public static final int EM_CARPASS_STATUS_CARPASS            = 1;   // 过车状态
+        public static final int EM_CARPASS_STATUS_NORMAL             = 2;   // 无车状态
+    }
+
+    // 事件类型EVENT_IVS_MOVEDETECTION(移动事件)对应的数据块描述信息
+    public static class DEV_EVENT_MOVE_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public byte                           bEventAction;                         // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                         byReserved = new byte[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public NET_POINT[]                    DetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                            nSourceIndex;                         // 事件源设备上的index,-1表示数据无效
+        public byte[]                         szSourceDevice = new byte[MAX_PATH];  // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                            nTrackLineNum;                        // 物体运动轨迹顶点数
+        public NET_POINT[]                    stuTrackLine = new NET_POINT[NET_MAX_TRACK_LINE_NUM];  // 物体运动轨迹
+        public int                            nOccurrenceCount;                     // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public NET_EXTENSION_INFO             stuExtensionInfo;                     // 扩展信息
+        public int                            nAnimalNum;                           // 动物个数
+        public Pointer                        pstuAnimals;                          // 动物信息,结构体VA_OBJECT_ANIMAL数组指针
+        public int                            nMsgObjArrayCount;                    // 检测到的物体信息个数
+        public Pointer                        pMsgObjArray;    					    // 检测到的物体信息数组指针,结构体NET_MSG_OBJECT_EX数组指针
+        public int					          nImageNum;							// 图片信息个数
+        public Pointer	                      pImageArray;						    // 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体       
+        public byte[]                         bReserved = new byte[236];            // 保留字节,留待扩展.
+        public DEV_EVENT_MOVE_INFO()
+        {
+            for (int i = 0; i < DetectRegion.length; ++i) {
+                DetectRegion[i] = new NET_POINT();
+            }
+
+            for (int i = 0; i < stuTrackLine.length; ++i) {
+                stuTrackLine[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 监测控制和数据采集设备的点位表路径信息输入参数, 查询条件
+    public static class NET_IN_SCADA_POINT_LIST_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDevType = new byte[NET_COMMON_STRING_64];  // 设备类型
+
+        public NET_IN_SCADA_POINT_LIST_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 点位表路径信息
+    public static class NET_SCADA_POINT_LIST extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nIndexValidNum;                       // 有效的配置下标个数
+        public int[]                          nIndex = new int[MAX_SCADA_POINT_LIST_INDEX];  // SCADADev配置下标值, 从0开始
+        public byte[]                         szPath = new byte[NET_COMMON_STRING_256];  // 点表的完整路径
+
+        public NET_SCADA_POINT_LIST()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测控制和数据采集设备的点位表路径信息输出参数, 查询结果
+    public static class NET_OUT_SCADA_POINT_LIST_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nList;                                // 有效点位表路径信息个数
+        public NET_SCADA_POINT_LIST[]         stuList = new NET_SCADA_POINT_LIST[MAX_SCADA_POINT_LIST_INFO_NUM];  // 点位表路径信息
+
+        public NET_OUT_SCADA_POINT_LIST_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuList.length; ++i) {
+                stuList[i] = new NET_SCADA_POINT_LIST();
+            }
+        }
+    }
+
+    // 监测控制和数据采集设备的点位表信息, (对应 DH_DEVSTATE_SCADA_POINT_LIST 命令)
+    public static class NET_SCADA_POINT_LIST_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public NET_IN_SCADA_POINT_LIST_INFO   stuIn;                                // 查询条件
+        public NET_OUT_SCADA_POINT_LIST_INFO  stuOut;                               // 查询结果
+
+        public NET_SCADA_POINT_LIST_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // SCADA监测点位查询条件
+    public static class NET_IN_SCADA_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emPointType;                          // 待查询的点位类型,详见EM_NET_SCADA_POINT_TYPE
+
+        public NET_IN_SCADA_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 点表信息
+    public static class NET_SCADA_POINT_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDevName = new byte[NET_COMMON_STRING_64];  // 设备名称
+        public int                            nYX;                                  // 有效遥信个数
+        public int[]                          anYX = new int[MAX_SCADA_YX_NUM];     // 遥信信息
+        public int                            nYC;                                  // 有效遥测个数
+        public float[]                        afYC = new float[MAX_SCADA_YC_NUM];   // 遥测信息
+
+        public NET_SCADA_POINT_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // SCADA监测点位查询结果
+    public static class NET_OUT_SCADA_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nPointInfoNum;                        // 有效点表个数
+        public NET_SCADA_POINT_INFO[]         stuPointInfo = new NET_SCADA_POINT_INFO[MAX_SCADA_POINT_INFO_NUM];  // 点表信息
+
+        public NET_OUT_SCADA_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuPointInfo.length; ++i) {
+                stuPointInfo[i] = new NET_SCADA_POINT_INFO();
+            }
+        }
+    }
+
+    // 监测控制和数据采集设备的监测点位信息(对应 DH_DEVSTATE_SCADA_INFO 命令)
+    public static class NET_SCADA_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public NET_IN_SCADA_INFO              stuIn;                                // 查询条件
+        public NET_OUT_SCADA_INFO             stuOut;                               // 查询结果
+
+        public NET_SCADA_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // SCADA能力名称
+    public static class EM_NET_SCADA_CAPS_TYPE extends SdkStructure
+    {
+        public static final int EM_NET_SCADA_CAPS_TYPE_UNKNOWN       = 0;
+        public static final int EM_NET_SCADA_CAPS_TYPE_ALL           = 1;   // 所有类型
+        public static final int EM_NET_SCADA_CAPS_TYPE_DEV           = 2;   // DevInfo
+    }
+
+    // 监测控制和数据采集设备能力信息查询条件
+    public static class NET_IN_SCADA_CAPS extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emType;                               // 查询类型,详见EM_NET_SCADA_CAPS_TYPE
+
+        public NET_IN_SCADA_CAPS()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监测控制和数据采集设备类型能力信息
+    public static class NET_OUT_SCADA_CAPS_ITEM extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDevType = new byte[NET_COMMON_STRING_32];  // 设备类型
+        public int                            nValidName;                           // 有效设备名称个数
+        public SCADA_DEVICE_NAME[]            stuScadaDevNames = new SCADA_DEVICE_NAME[MAX_NET_SCADA_CAPS_NAME];  // 设备名称, 唯一标示设备
+
+        public NET_OUT_SCADA_CAPS_ITEM()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuScadaDevNames.length; ++i) {
+                stuScadaDevNames[i] = new SCADA_DEVICE_NAME();
+            }
+        }
+    }
+
+    public static class SCADA_DEVICE_NAME extends SdkStructure
+    {
+        public byte[]            szDevName = new byte[NET_COMMON_STRING_32];  // 数据采集设备名称
+    }
+
+    // 监测控制和数据采集设备能力信息查询结果
+    public static class NET_OUT_SCADA_CAPS extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nValidType;                           // 有效设备类型个数
+        public NET_OUT_SCADA_CAPS_ITEM[]      stuItems = new NET_OUT_SCADA_CAPS_ITEM[MAX_NET_SCADA_CAPS_TYPE];  // 最多16个类型
+
+        public NET_OUT_SCADA_CAPS()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuItems.length; ++i) {
+                stuItems[i] = new NET_OUT_SCADA_CAPS_ITEM();
+            }
+        }
+    }
+
+    // 监测控制和数据采集设备能力信息(对应 DH_DEVSTATE_SCADA_CAPS 命令)
+    public static class NET_SCADA_CAPS extends SdkStructure
+    {
+        public int                            dwSize;
+        public NET_IN_SCADA_CAPS              stuIn;                                // 查询条件
+        public NET_OUT_SCADA_CAPS             stuOut;                               // 查询结果
+
+        public NET_SCADA_CAPS()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 点位信息(通过设备、传感器点位获取)
+    public static class NET_SCADA_POINT_BY_ID_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emType;                               // 点位类型,详见EM_NET_SCADA_POINT_TYPE
+        public byte[]                         szID = new byte[NET_COMMON_STRING_64];  // 监测点位ID
+        public int                            nMeasuredVal;                         // 点位类型为YX时有效
+        public float                          fMeasureVal;                          // 点位类型为YC时有效
+        public int                            nSetupVal;                            // 点位类型为YK时有效
+        public float                          fSetupVal;                            // 点位类型为YT时有效
+        public int                            nStatus;                              // 数据状态, -1:未知, 0:正常, 1:1级告警, 2:2级告警, 3:3级告警, 4:4级告警, 5:操作事件, 6:无效数据
+        public NET_TIME                       stuTime;                              // 记录时间
+        public byte[]                    szPointName=new byte[32];                // 点位名称
+        public NET_SCADA_POINT_BY_ID_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 通过设备、获取监测点位信息(对应 NET_SCADA_INFO_BY_ID)
+    public static class NET_SCADA_INFO_BY_ID extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szSensorID = new byte[NET_COMMON_STRING_64];  // 输入参数, 探测器ID
+        public int                            nIDs;                                 // 输入参数, 有效点位ID个数
+        public SCADA_ID_EX[]                  stuIDs = new SCADA_ID_EX[MAX_SCADA_ID_OF_SENSOR_NUM];  // 输入参数, 点位ID
+        public int                            bIsHandle;                            // 输入参数,返回数据是否经过处理(无效数据过滤等):"false":未处理,"true":处理
+        public int                            nMaxCount;                            // 输入参数, pstuInfo对应数组个数
+        public int                            nRetCount;                            // 输出参数, pstInfo实际返回有效个数, 可能大于用户分配个数nMaxCount
+        public Pointer                        pstuInfo;                             // 输入输出参数, 用户分配缓存,大小为sizeof(NET_SCADA_POINT_BY_ID_INFO)*nMaxCount,指向NET_SCADA_POINT_BY_ID_INFO
+
+        public NET_SCADA_INFO_BY_ID()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuIDs.length; ++i) {
+                stuIDs[i] = new SCADA_ID_EX();
+            }
+        }
+    }
+
+    public static class SCADA_ID_EX extends SdkStructure
+    {
+        public byte[]                       szID = new byte[NET_COMMON_STRING_64];  // 监测点位ID
+    }
+
+    // 监测设备信息
+    public static class NET_SCADA_DEVICE_ID_INFO extends SdkStructure
+    {
+        public byte[]                         szDeviceID = new byte[NET_COMMON_STRING_64];  // 设备id
+        public byte[]                         szDevName = new byte[NET_COMMON_STRING_64];  // 设备名称, 和CFG_SCADA_DEV_INFO配置中的szDevName一致
+        public byte[]                         reserve = new byte[1024];
+    }
+
+    // 获取当前主机所接入的外部设备ID
+    public static class NET_SCADA_DEVICE_LIST extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nMax;                                 // 用户分配的结构体个数
+        public int                            nRet;                                 // 设备实际返回的有效结构体个数
+        public Pointer                        pstuDeviceIDInfo;                     // 监测设备信息,用户分配内存,大小为sizeof(NET_SCADA_DEVICE_ID_INFO)*nMax,指向NET_SCADA_DEVICE_ID_INFO
+
+        public NET_SCADA_DEVICE_LIST()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 点位阈值信息
+    public static class NET_SCADA_ID_THRESHOLD_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emPointType;                          // 点位类型,详见EM_NET_SCADA_POINT_TYPE
+        public byte[]                         szID = new byte[NET_COMMON_STRING_32];  // 点位ID
+        public float                          fThreshold;                           // 告警门限
+        public float                          fAbsoluteValue;                       // 绝对阈值
+        public float                          fRelativeValue;                       // 相对阈值
+        public int                            nStatus;                              // 数据状态, -1:未知, 0:正常, 1:1级告警, 2:2级告警, 3:3级告警, 4:4级告警, 5:操作事件, 6:无效数据
+
+        public NET_SCADA_ID_THRESHOLD_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SCADAGetThreshold输入参数
+    public static class NET_IN_SCADA_GET_THRESHOLD extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDeviceID = new byte[NET_COMMON_STRING_64];  // 外接设备id
+        public int                            nIDs;                                 		// 有效监测点位个数
+        public SCADA_ID[]                     stuIDs = new SCADA_ID[MAX_SCADA_ID_NUM];  	// 待获取的监测点位ID
+
+        public NET_IN_SCADA_GET_THRESHOLD()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuIDs.length; ++i) {
+                stuIDs[i] = new SCADA_ID();
+            }
+        }
+    }
+
+    public static class SCADA_ID extends SdkStructure
+    {
+        public byte[]                       szID = new byte[NET_COMMON_STRING_32];  // 监测点位ID
+    }
+
+    // CLIENT_SCADAGetThreshold输出参数
+    public static class NET_OUT_SCADA_GET_THRESHOLD extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nMax;                                 // 用户分配的点位阈值信息个数
+        public int                            nRet;                                 // 实际返回的点位阈值信息
+        public Pointer                        pstuThresholdInfo;                    // 点位阈值信息, 用户分配内存,大小为sizeof(NET_SCADA_ID_THRESHOLD_INFO)*nMax,指向NET_SCADA_ID_THRESHOLD_INFO
+
+        public NET_OUT_SCADA_GET_THRESHOLD()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //////////////////////////////////////////////////////////////////////////
+    // CLIENT_SCADASetThreshold输入参数
+    public static class NET_IN_SCADA_SET_THRESHOLD extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDeviceID = new byte[NET_COMMON_STRING_64];  // 外接设备id
+        public int                            nMax;                                 // 用户分配的点位阈值信息个数
+        public Pointer                        pstuThresholdInfo;                    // 点位阈值信息, 用户分配内存,大小为sizeof(NET_SCADA_ID_THRESHOLD_INFO)*nMax,指向NET_SCADA_ID_THRESHOLD_INFO
+
+        public NET_IN_SCADA_SET_THRESHOLD()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_SCADASetThreshold输出参数
+    public static class NET_OUT_SCADA_SET_THRESHOLD extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nSuccess;                             // 有效的存放设置阈值成功的id个数
+        public SCADA_ID[]                     stuSuccessIDs = new SCADA_ID[MAX_SCADA_ID_NUM];  // 设置阈值成功的id,用户分配内存
+        public int                            nFail;                                // 用户分配的存放设置阈值失败的id个数
+        public SCADA_ID[]                     stuFailIDs = new SCADA_ID[MAX_SCADA_ID_NUM];  // 设置阈值失败的id, 用户分配内存
+
+        public NET_OUT_SCADA_SET_THRESHOLD()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuSuccessIDs.length; ++i) {
+                stuSuccessIDs[i] = new SCADA_ID();
+            }
+
+            for (int i = 0; i < stuFailIDs.length; ++i) {
+                stuFailIDs[i] = new SCADA_ID();
+            }
+        }
+    }
+
+    //////////////////////////////////////////////////////////////////////////
+    // CLIENT_StartFindSCADA输入参数
+    public static class NET_IN_SCADA_START_FIND extends SdkStructure
+    {
+        public int                            dwSize;
+        public NET_TIME                       stuStartTime;                         // 开始时间, 必填
+        public int                            bEndTime;                             // 是否限制结束时间, TRUE: 必填stuEndTime, FLASE: 不限制结束时间
+        public NET_TIME                       stuEndTime;                           // 结束时间
+        public byte[]                         szDeviceID = new byte[NET_COMMON_STRING_64];  // DeviceID, 必填
+        public byte[]                         szID = new byte[NET_COMMON_STRING_32];  // 监测点位ID, 必填
+        public int                            nIDsNum;                              // 监测点ID数组长度
+        public SCADA_ID[]                     stuIDs = new SCADA_ID[32];  			// 监控点ID号数组,SDT离网供电扩展字段
+
+        public NET_IN_SCADA_START_FIND()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuIDs.length; ++i) {
+                stuIDs[i] = new SCADA_ID();
+            }
+        }
+    }
+
+    // CLIENT_StartFindSCADA输出参数
+    public static class NET_OUT_SCADA_START_FIND extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            dwTotalCount;                         // 符合查询条件的总数
+
+        public NET_OUT_SCADA_START_FIND()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindSCADA输入参数
+    public static class NET_IN_SCADA_DO_FIND extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nStartNo;                             // 起始序号
+        public int                            nCount;                               // 本次欲获得结果的个数
+
+        public NET_IN_SCADA_DO_FIND()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_DoFindSCADA输出参数
+    public static class NET_OUT_SCADA_DO_FIND extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nRetNum;                              // 本次查询到的个数
+        public Pointer                        pstuInfo;                             // 查询结果, 用户分配内存,大小为sizeof(NET_SCADA_POINT_BY_ID_INFO)*nMaxNum,指向NET_SCADA_POINT_BY_ID_INFO
+        public int                            nMaxNum;                              // 用户分配内存的个数
+
+        public NET_OUT_SCADA_DO_FIND()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监控点值设置参数
+    public static class NET_SCADA_POINT_SET_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emType;                               // 监控点位类型,取YK、YT两种类型,详见EM_NET_SCADA_POINT_TYPE
+        public byte[]                         szPointID = new byte[NET_COMMON_STRING_64];  // 监控点位ID
+        public int                            nSetupVal;                            // 点位类型为YK时有效
+        public float                          fSetupVal;                            // 点位类型为YT时有效
+
+        public NET_SCADA_POINT_SET_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 监控点值设置参数列表,CLIENT_SetSCADAInfo()接口输入参数
+    public static class NET_IN_SCADA_POINT_SET_INFO_LIST extends SdkStructure
+    {
+        public int                            dwSize;
+        public byte[]                         szDevID = new byte[NET_COMMON_STRING_32];  // 设备ID
+        public int                            nPointNum;                            // 监控点个数
+        public NET_SCADA_POINT_SET_INFO[]     stuList = new NET_SCADA_POINT_SET_INFO[MAX_SCADA_ID_OF_SENSOR_NUM];  // 监控点列表信息
+
+        public NET_IN_SCADA_POINT_SET_INFO_LIST()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuList.length; ++i) {
+                stuList[i] = new NET_SCADA_POINT_SET_INFO();
+            }
+        }
+    }
+
+    // 设置监控点值返回的结果列表,CLIENT_SetSCADAInfo()接口输出参数
+    public static class NET_OUT_SCADA_POINT_SET_INFO_LIST extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nSuccess;                             // 有效的控制或调节成功的ID个数
+        public SCADA_ID[]                     stuSuccessIDs = new SCADA_ID[MAX_SCADA_ID_OF_SENSOR_NUM];  // 控制或调节成功的ID的列表
+        public int                            nFail;                                // 有效的控制或调节失败的ID个数
+        public SCADA_ID[]                     stuFailIDs = new SCADA_ID[MAX_SCADA_ID_OF_SENSOR_NUM];  // 控制或调节失败的ID的列表
+
+        public NET_OUT_SCADA_POINT_SET_INFO_LIST()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuSuccessIDs.length; ++i) {
+                stuSuccessIDs[i] = new SCADA_ID();
+            }
+
+            for (int i = 0; i < stuFailIDs.length; ++i) {
+                stuFailIDs[i] = new SCADA_ID();
+            }
+        }
+    }
+
+    // 获取阈值,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_SCADAGetThreshold(LLong lLoginID, NET_IN_SCADA_GET_THRESHOLD pInParam, NET_OUT_SCADA_GET_THRESHOLD pOutParam, int nWaitTime);
+
+    // 设置阈值,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_SCADASetThreshold(LLong lLoginID, NET_IN_SCADA_SET_THRESHOLD pInParam, NET_OUT_SCADA_SET_THRESHOLD pOutParam, int nWaitTime);
+
+    // 开始查询SCADA点位历史数据,pInParam与pOutParam内存由用户申请释放
+    public LLong CLIENT_StartFindSCADA(LLong lLoginID, NET_IN_SCADA_START_FIND pInParam, NET_OUT_SCADA_START_FIND pOutParam, int nWaitTime);
+
+    // 获取SCADA点位历史数据,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_DoFindSCADA(LLong lFindHandle, NET_IN_SCADA_DO_FIND pInParam, NET_OUT_SCADA_DO_FIND pOutParam, int nWaitTime);
+
+    // 停止查询SCADA点位历史数据
+    public boolean CLIENT_StopFindSCADA(LLong lFindHandle);
+
+    // 设置监测点位信息,pInParam与pOutParam内存由用户申请释放
+    public boolean CLIENT_SCADASetInfo(LLong lLoginID, NET_IN_SCADA_POINT_SET_INFO_LIST pInParam, NET_OUT_SCADA_POINT_SET_INFO_LIST pOutParam, int nWaitTime);
+
+    public static class CFG_SCADA_DEV_INFO extends SdkStructure
+    {
+        public int                            bEnable;                              // 是否启用
+        public byte[]                         szDevType = new byte[CFG_COMMON_STRING_64];  // 设备类型
+        public byte[]                         szDevName = new byte[CFG_COMMON_STRING_64];  // 设备名称, 唯一标示设备用
+        public int                            nSlot;                                // 虚拟槽位号, 详见AlarmSlotBond配置
+        public int                            nLevel;                               // 如果Slot绑定的是NetCollection类型的话,该字段为-1
+        public CFG_ALARM_MSG_HANDLE           stuEventHandler;                      // 报警联动
+    }
+
+    // 高频次报警
+    public static class CFG_HIGH_FREQUENCY extends SdkStructure
+    {
+        public int                            nPeriod;                              // 统计周期, 以秒为单位, 默认30分钟(1800s)
+        public int                            nMaxCount;                            // 在对应统计周期内最大允许上报报警数
+    }
+
+    // 告警屏蔽规则配置(对应 CFG_CMD_ALARM_SHIELD_RULE)
+    public static class CFG_ALARM_SHIELD_RULE_INFO extends SdkStructure
+    {
+        public CFG_HIGH_FREQUENCY             stuHighFreq;                          // 高频次报警, 在一定周期内允许上报的报警次数,以此过滤对于报警的频繁上报导致信息干扰
+    }
+
+    // 获取车位锁状态接口,CLIENT_GetParkingLockState 入参
+    public static class NET_IN_GET_PARKINGLOCK_STATE_INFO extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+
+        public NET_IN_GET_PARKINGLOCK_STATE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车位锁状态
+    public static class EM_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_STATE_TYPE_UNKNOW                 = 0;   // 未知
+        public static final int EM_STATE_TYPE_LOCKRISE               = 1;   // 车位锁升起
+        public static final int EM_STATE_TYPE_LOCKDOWN               = 2;   // 车位锁降下
+        public static final int EM_STATE_TYPE_LOCKERROR              = 3;   // 车位锁异常
+    }
+
+    // 车位锁状态通信接口参数
+    public static class NET_STATE_LIST_INFO extends SdkStructure
+    {
+        public int                            nLane;                                // 车位号
+        public int                            emState;                              // 车位锁状态,详见EM_STATE_TYPE
+        public byte[]                         byReserved = new byte[256];           // 保留
+    }
+
+    // 获取车位锁状态, CLIENT_GetParkingLockState 出参
+    public static class NET_OUT_GET_PARKINGLOCK_STATE_INFO extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+        public int                            nStateListNum;                        // 车位锁状态个数
+        public NET_STATE_LIST_INFO[]          stuStateList = new NET_STATE_LIST_INFO[MAX_PARKINGLOCK_STATE_NUM];  // 车位锁状态
+
+        public NET_OUT_GET_PARKINGLOCK_STATE_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuStateList.length; ++i) {
+                stuStateList[i] = new NET_STATE_LIST_INFO();
+            }
+        }
+    }
+
+    // 设置车位锁状态接口,CLIENT_SetParkingLockState 入参
+    public static class NET_IN_SET_PARKINGLOCK_STATE_INFO extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+        public int                            nStateListNum;                        // 车位锁状态个数
+        public NET_STATE_LIST_INFO[]          stuStateList = new NET_STATE_LIST_INFO[MAX_PARKINGLOCK_STATE_NUM];  // 车位锁状态
+   	    public int					          nControlType;						    // 控制车位锁状态类型, 0:未知, 1:平台正常控制, 2:平台手动控制 
+
+        public NET_IN_SET_PARKINGLOCK_STATE_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuStateList.length; ++i) {
+                stuStateList[i] = new NET_STATE_LIST_INFO();
+            }
+        }
+    }
+
+    // 设置车位锁状态接口,CLIENT_SetParkingLockState 出参
+    public static class NET_OUT_SET_PARKINGLOCK_STATE_INFO extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+
+        public NET_OUT_SET_PARKINGLOCK_STATE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取车位锁状态
+    public boolean CLIENT_GetParkingLockState(LLong lLoginID, NET_IN_GET_PARKINGLOCK_STATE_INFO pstInParam, NET_OUT_GET_PARKINGLOCK_STATE_INFO pstOutParam, int nWaitTime);
+
+    // 设置车位锁状态
+    public boolean CLIENT_SetParkingLockState(LLong lLoginID, NET_IN_SET_PARKINGLOCK_STATE_INFO pstInParm, NET_OUT_SET_PARKINGLOCK_STATE_INFO pstOutParam, int nWaitTIme);
+
+    // 刻录配置
+    public static class CFG_JUDICATURE_INFO extends SdkStructure
+    {
+        public byte[]                         szDiskPassword = new byte[MAX_PASSWORD_LEN];  // 光盘密码(废弃, 使用szPassword和nPasswordLen)
+        public byte[]                         szCaseNo = new byte[MAX_OSD_SUMMARY_LEN];  // 案件编号
+        public int                            bCaseNoOsdEn;                         // 案件编号叠加使能
+        public byte[]                         szCaseTitle = new byte[MAX_OSD_SUMMARY_LEN];  // 案件名称
+        public int                            bCaseTitleOsdEn;                      // 案件名称叠加使能
+        public byte[]                         szOfficer = new byte[MAX_OSD_SUMMARY_LEN];  // 办案人员
+        public int                            bOfficerOsdEn;                        // 办案人员叠加使能
+        public byte[]                         szLocation = new byte[MAX_OSD_SUMMARY_LEN];  // 办案地点
+        public int                            bLocationOsdEn;                       // 办案地点叠加使能
+        public byte[]                         szRelatedMan = new byte[MAX_OSD_SUMMARY_LEN];  // 涉案人员
+        public int                            bRelatedManOsdEn;                     // 涉案人员叠加使能
+        public byte[]                         szDiskNo = new byte[MAX_OSD_SUMMARY_LEN];  // 光盘编号
+        public int                            bDiskNoOsdEn;                         // 光盘编号叠加使能
+
+        public int                            bCustomCase;                          // TRUE:自定义案件信息,FALSE: 上边szCaseNo等字段有效
+        public int                            nCustomCase;                          // 实际CFG_CUSTOMCASE个数
+        public CFG_CUSTOMCASE[]               stuCustomCases = new CFG_CUSTOMCASE[MAX_CUSTOMCASE_NUM];  // 自定义案件信息
+
+        public int                            bDataCheckOsdEn;                      // 光盘刻录数据校验配置 叠加使能
+        public int                            bAttachFileEn;                        // 附件上传使能
+        public byte[]                         szPassword = new byte[MAX_PASSWORD_LEN];  // 密码, 刻录光盘时、配置读保护密码
+        public int                            nPasswordLen;                         // 密码长度
+        public CFG_NET_TIME                   stuStartTime;                         // 片头信息叠加开始时间
+        public int                            nPeriod;                              // 片头信息叠加时间长度,单位:分钟
+
+        public CFG_JUDICATURE_INFO()
+        {
+            for (int i = 0; i < stuCustomCases.length; ++i) {
+                stuCustomCases[i] = new CFG_CUSTOMCASE();
+            }
+        }
+    }
+
+    // 自定义案件信息
+    public static class CFG_CUSTOMCASE extends SdkStructure
+    {
+        public byte[]                         szCaseTitle = new byte[MAX_OSD_TITLE_LEN];  // 案件名称
+        public byte[]                         szCaseContent = new byte[MAX_OSD_SUMMARY_LEN];  // 案件名称
+        public int                            bCaseNoOsdEn;                         // 案件编号叠加使能
+    }
+
+    // 叠加类型
+    public static class NET_EM_OSD_BLEND_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_OSD_BLEND_TYPE_UNKNOWN        = 0;   // 未知叠加类型
+        public static final int NET_EM_OSD_BLEND_TYPE_MAIN           = 1;   // 叠加到主码流
+        public static final int NET_EM_OSD_BLEND_TYPE_EXTRA1         = 2;   // 叠加到辅码流1
+        public static final int NET_EM_OSD_BLEND_TYPE_EXTRA2         = 3;   // 叠加到辅码流2
+        public static final int NET_EM_OSD_BLEND_TYPE_EXTRA3         = 4;   // 叠加到辅码流3
+        public static final int NET_EM_OSD_BLEND_TYPE_SNAPSHOT       = 5;   // 叠加到抓图
+        public static final int NET_EM_OSD_BLEND_TYPE_PREVIEW        = 6;   // 叠加到预览视频
+    }
+
+    // 编码物件-通道标题
+    public static class NET_OSD_CHANNEL_TITLE extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emOsdBlendType;                       // 叠加类型,不管是获取还是设置都要设置该字段,详见NET_EM_OSD_BLEND_TYPE
+        public int                            bEncodeBlend;                         // 是否叠加
+        public NET_COLOR_RGBA                 stuFrontColor;                        // 前景色
+        public NET_COLOR_RGBA                 stuBackColor;                         // 背景色
+        public NET_RECT                       stuRect;                              // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public int	                          emTextAlign;					        // 文本对齐方式 ,参考枚举{@link EM_TITLE_TEXT_ALIGNTYPE}
+        
+        public NET_OSD_CHANNEL_TITLE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 编码物件-时间标题
+    public static class NET_OSD_TIME_TITLE extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emOsdBlendType;                       // 叠加类型,不管是获取还是设置都要设置该字段,详见NET_EM_OSD_BLEND_TYPE
+        public int                            bEncodeBlend;                         // 是否叠加
+        public NET_COLOR_RGBA                 stuFrontColor;                        // 前景色
+        public NET_COLOR_RGBA                 stuBackColor;                         // 背景色
+        public NET_RECT                       stuRect;                              // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public int                            bShowWeek;                            // 是否显示星期
+
+        public NET_OSD_TIME_TITLE()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 编码物件-自定义标题信息
+    public static class NET_CUSTOM_TITLE_INFO extends SdkStructure
+    {
+        public int                            bEncodeBlend;                         // 是否叠加
+        public NET_COLOR_RGBA                 stuFrontColor;                        // 前景色
+        public NET_COLOR_RGBA                 stuBackColor;                         // 背景色
+        public NET_RECT                       stuRect;                              // 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+        public byte[]                         szText = new byte[CUSTOM_TITLE_LEN];  // 标题内容
+        public byte[]                         byReserved = new byte[512];           // 保留字节
+    }
+
+    // 编码物件-自定义标题
+    public static class NET_OSD_CUSTOM_TITLE extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emOsdBlendType;                       // 叠加类型,不管是获取还是设置都要设置该字段,详见NET_EM_OSD_BLEND_TYPE
+        public int                            nCustomTitleNum;                      // 自定义标题数量
+        public NET_CUSTOM_TITLE_INFO[]        stuCustomTitle = new NET_CUSTOM_TITLE_INFO[MAX_CUSTOM_TITLE_NUM];  // 自定义标题
+
+        public NET_OSD_CUSTOM_TITLE()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuCustomTitle.length; ++i) {
+                stuCustomTitle[i] = new NET_CUSTOM_TITLE_INFO();
+            }
+        }
+    }
+
+    // 标题文本对齐方式
+    public static class EM_TITLE_TEXT_ALIGNTYPE extends SdkStructure
+    {
+        public static final int EM_TEXT_ALIGNTYPE_INVALID            = 0;   // 无效的对齐方式
+        public static final int EM_TEXT_ALIGNTYPE_LEFT               = 1;   // 左对齐
+        public static final int EM_TEXT_ALIGNTYPE_XCENTER            = 2;   // X坐标中对齐
+        public static final int EM_TEXT_ALIGNTYPE_YCENTER            = 3;   // Y坐标中对齐
+        public static final int EM_TEXT_ALIGNTYPE_CENTER             = 4;   // 居中
+        public static final int EM_TEXT_ALIGNTYPE_RIGHT              = 5;   // 右对齐
+        public static final int EM_TEXT_ALIGNTYPE_TOP                = 6;   // 按照顶部对齐
+        public static final int EM_TEXT_ALIGNTYPE_BOTTOM             = 7;   // 按照底部对齐
+        public static final int EM_TEXT_ALIGNTYPE_LEFTTOP            = 8;   // 按照左上角对齐
+        public static final int EM_TEXT_ALIGNTYPE_CHANGELINE         = 9;   // 换行对齐
+    }
+
+    // 自定义标题文本对齐
+    public static class NET_OSD_CUSTOM_TITLE_TEXT_ALIGN extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nCustomTitleNum;                      // 自定义标题数量
+        public int[]                          emTextAlign = new int[MAX_CUSTOM_TITLE_NUM];  // 自定义标题文本对齐方式,详见EM_TITLE_TEXT_ALIGNTYPE
+
+        public NET_OSD_CUSTOM_TITLE_TEXT_ALIGN()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    //编码物件-公共配置信息
+    public static class NET_OSD_COMM_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public double                         fFontSizeScale;                       // 叠加字体大小放大比例
+        //当fFontSizeScale≠0时,nFontSize不起作用
+        //当fFontSizeScale=0时,nFontSize起作用
+        //设备默认fFontSizeScale=1.0
+        //如果需要修改倍数,修改该值
+        //如果需要按照像素设置,则置该值为0,nFontSize的值生效
+        public int                            nFontSize;                            // 叠加到主码流上的全局字体大小,单位 px, 默认24.
+        //和fFontSizeScale共同作用
+        public int                            nFontSizeExtra1;                      // 叠加到辅码流1上的全局字体大小,单位 px
+        public int                            nFontSizeExtra2;                      // 叠加到辅码流2上的全局字体大小,单位 px
+        public int                            nFontSizeExtra3;                      // 叠加到辅码流3上的全局字体大小,单位 px
+        public int                            nFontSizeSnapshot;                    // 叠加到抓图流上的全局字体大小, 单位 px
+        public int                            nFontSizeMergeSnapshot;               // 叠加到抓图流上合成图片的字体大小,单位 px
+        public int	                          emFontSolution;					    // 叠加到主码流上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+        public int	                          emFontSolutionExtra1;			        // 叠加到辅码流1上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+   	    public int	                          emFontSolutionExtra2;			        // 叠加到辅码流2上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+   	    public int	                          emFontSolutionExtra3;			        // 叠加到辅码流3上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+   	    public int	                          emFontSolutionSnapshot;			    // 叠加到抓图码流上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+   	    public int	                          emFontSolutionMergeSnapshot;	        // 叠加到合成抓图流上的字体方案,参考枚举{@link EM_OSD_FONT_SOLUTION}
+
+        public NET_OSD_COMM_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 播报单元类型
+    public static class NET_PLAYAUDIO_TYPE extends SdkStructure
+    {
+        public static final int NET_PLAYAUDIO_TYPE_UNKNOWN           = 0;
+        public static final int NET_PLAYAUDIO_TYPE_PHRASE            = 1;   // 短语类型,不进行解析,依次读每个字,有该字的语音文件支持
+        public static final int NET_PLAYAUDIO_TYPE_FILE              = 2;   // 播放指定路径的语音文件(设备端完整路径)
+        public static final int NET_PLAYAUDIO_TYPE_PLATERNUM         = 3;   // 播报车牌号码,按车牌号码格式读出
+        public static final int NET_PLAYAUDIO_TYPE_MONEY             = 4;   // 播报金额,按金额形式读出
+        public static final int NET_PLAYAUDIO_TYPE_DATE              = 5;   // 播报日期,按日期形式读出
+        public static final int NET_PLAYAUDIO_TYPE_TIME              = 6;   // 播报时间,按时间形式读出
+        public static final int NET_PLAYAUDIO_TYPE_EMPTY             = 7;   // 空类型,停顿一个字符时间
+    }
+
+    // 语音播报内容
+    public static class NET_CTRL_PLAYAUDIO_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emPlayAudioType;                      // 播报单元类型,详见NET_PLAYAUDIO_TYPE,详见NET_PLAYAUDIO_TYPE
+        public byte[]                         szDetail = new byte[NET_COMMON_STRING_128];  // 详细内容各类型详细内容:
+        // Phrase类型:"欢迎"
+        // File类型: "/home/停车.pcm"
+        // PlateNumbe类型: "浙A12345"
+        // Money类型: "80.12元"
+        // Date类型: "2014年4月10日"
+        // Time类型: "1天10小时20分5秒
+        public int							nRepeatTimes;					// 播放重复次数
+        public int		emPriority;						// 播放优先级,对应枚举EM_PLAYAUDIO_PRIORITY
+        public NET_CTRL_PLAYAUDIO_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_ControlDevice接口的 DH_CTRL_START_PLAYAUDIOEX 命令参数
+    public static class NET_CTRL_START_PLAYAUDIOEX extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nAudioCount;                          // 播报内容数目
+        public NET_CTRL_PLAYAUDIO_INFO[]      stuAudioInfos = new NET_CTRL_PLAYAUDIO_INFO[NET_MAX_PLAYAUDIO_COUNT];  // 语音播报内容
+        public int                        nListRepeatTimes;                       // 语音播报内容重复次数, 描述所有播报单元
+        public NET_CTRL_START_PLAYAUDIOEX()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuAudioInfos.length; ++i) {
+                stuAudioInfos[i] = new NET_CTRL_PLAYAUDIO_INFO();
+            }
+        }
+    }
+
+    // 串口基本属性
+    public static class CFG_COMM_PROP extends SdkStructure
+    {
+        public byte                           byDataBit;                            // 数据位;0:5,1:6,2:7,3:8
+        public byte                           byStopBit;                            // 停止位;0:1位,1:1.5位,2:2位
+        public byte                           byParity;                             // 校验位;0:无校验,1:奇校验;2:偶校验
+        public byte                           byBaudRate;                           // 波特率;0:300,1:600,2:1200,3:2400,4:4800,
+        // 5:9600,6:19200,7:38400,8:57600,9:115200
+    }
+
+    // 归位预置点配置
+    public static class CFG_PRESET_HOMING extends SdkStructure
+    {
+        public int                            nPtzPresetId;                         // 云台预置点编号	0~65535
+        //-1表示无效
+        public int                            nFreeSec;                             // 空闲的时间,单位为秒
+    }
+
+    // 云台配置
+    public static class CFG_PTZ_INFO extends SdkStructure
+    {
+        // 能力
+        public byte                           abMartixID;
+        public byte                           abCamID;
+        public byte                           abPTZType;
+
+        // 信息
+        public int                            nChannelID;                           // 通道号(0开始)
+        public int                            bEnable;                              // 使能开关
+        public byte[]                         szProName = new byte[MAX_NAME_LEN];   // 协议名称
+        public int                            nDecoderAddress;                      // 解码器地址;0 - 255
+        public CFG_COMM_PROP                  struComm;
+        public int                            nMartixID;                            // 矩阵号
+        public int                            nPTZType;                             // 云台类型0-兼容,本地云台 1-远程网络云台
+        public int                            nCamID;                               // 摄像头ID
+        public int                            nPort;                                // 使用的串口端口号
+        public CFG_PRESET_HOMING              stuPresetHoming;                      // 一段时间不操作云台,自动归位到某个预置点
+        public int                            nControlMode;                         // 控制模式, 0:"RS485"串口控制(默认);1:"Coaxial" 同轴口控制
+    }
+
+    // 抓拍物体信息
+    public static class NET_SNAP_OBJECT_INFO extends SdkStructure
+    {
+        public NET_RECT                       stuBoundingBox;                       // 物体包围盒, 点坐标归一化到[0, 8192]坐标
+        public byte[]                         byReserved = new byte[512];           // 保留字节
+    }
+
+    // CLIENT_SnapPictureByAnalyseObject 接口输入参数
+    public static class NET_IN_SNAP_BY_ANALYSE_OBJECT extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         byReserved = new byte[4];      		// 字节对齐
+        public int                            nSnapObjectNum;                       // 抓拍物体个数
+        public NET_SNAP_OBJECT_INFO[]         stuSnapObjects = new NET_SNAP_OBJECT_INFO[32];  // 抓拍物体信息
+
+        public NET_IN_SNAP_BY_ANALYSE_OBJECT()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuSnapObjects.length; ++i) {
+                stuSnapObjects[i] = new NET_SNAP_OBJECT_INFO();
+            }
+        }
+    }
+
+    // CLIENT_SnapPictureByAnalyseObject 接口输出参数
+    public static class NET_OUT_SNAP_BY_ANALYSE_OBJECT extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+
+        public NET_OUT_SNAP_BY_ANALYSE_OBJECT()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 选中目标进行抓拍
+    public boolean CLIENT_SnapPictureByAnalyseObject(LLong lLoginID, NET_IN_SNAP_BY_ANALYSE_OBJECT pInParam, NET_OUT_SNAP_BY_ANALYSE_OBJECT pOutParam, int nWaitTime);
+
+    // 热成像着火点报警
+    public static class ALARM_FIREWARNING_INFO extends SdkStructure
+    {
+        public int                            nPresetId;                            // 该字段废弃,请由NET_ALARM_FIREWARNING_INFO事件获取此信息
+        public int                            nState;                               // 0 - 开始,1 - 结束,-1:无意义
+        public DH_RECT                       stBoundingBox;                        // 该字段废弃,请由NET_ALARM_FIREWARNING_INFO事件获取此信息
+        public int                            nTemperatureUnit;                     // 该字段废弃,请由NET_ALARM_FIREWARNING_INFO事件获取此信息
+        public float                          fTemperature;                         // 该字段废弃,请由NET_ALARM_FIREWARNING_INFO事件获取此信息
+        public int       					  nDistance;                          	// 该字段废弃,请由DH_ALARM_FIREWARNING_INFO事件获取此信息
+        public GPS_POINT                      stGpsPoint;                           // 该字段废弃,请由NET_ALARM_FIREWARNING_INFO事件获取此信息
+        public int                            nChannel;                             // 对应视频通道号
+        public byte[]                         reserved = new byte[252];
+    }
+
+    // 时间类型
+    public static class EM_TIME_TYPE extends SdkStructure
+    {
+        public static final int NET_TIME_TYPE_ABSLUTE                = 0;   // 绝对时间
+        public static final int NET_TIME_TYPE_RELATIVE               = 1;   // 相对时间,相对于视频文件头帧为时间基点,头帧对应于UTC(0000-00-00 00:00:00)
+    }
+
+    // 卡号省份
+    public static class EM_CARD_PROVINCE extends SdkStructure
+    {
+        public static final int EM_CARD_UNKNOWN                      = 10;  // 解析出错,未知省份
+        public static final int EM_CARD_BEIJING                      = 11;  // 北京
+        public static final int EM_CARD_TIANJIN                      = 12;  // 天津
+        public static final int EM_CARD_HEBEI                        = 13;  // 河北
+        public static final int EM_CARD_SHANXI_TAIYUAN               = 14;  // 山西
+        public static final int EM_CARD_NEIMENGGU                    = 15;  // 内蒙古
+        public static final int EM_CARD_LIAONING                     = 21;  // 辽宁
+        public static final int EM_CARD_JILIN                        = 22;  // 吉林
+        public static final int EM_CARD_HEILONGJIANG                 = 23;  // 黑龙江
+        public static final int EM_CARD_SHANGHAI                     = 31;  // 上海
+        public static final int EM_CARD_JIANGSU                      = 32;  // 江苏
+        public static final int EM_CARD_ZHEJIANG                     = 33;  // 浙江
+        public static final int EM_CARD_ANHUI                        = 34;  // 安徽
+        public static final int EM_CARD_FUJIAN                       = 35;  // 福建
+        public static final int EM_CARD_JIANGXI                      = 36;  // 江西
+        public static final int EM_CARD_SHANDONG                     = 37;  // 山东
+        public static final int EM_CARD_HENAN                        = 41;  // 河南
+        public static final int EM_CARD_HUBEI                        = 42;  // 湖北
+        public static final int EM_CARD_HUNAN                        = 43;  // 湖南
+        public static final int EM_CARD_GUANGDONG                    = 44;  // 广东
+        public static final int EM_CARD_GUANGXI                      = 45;  // 广西
+        public static final int EM_CARD_HAINAN                       = 46;  // 海南
+        public static final int EM_CARD_CHONGQING                    = 50;  // 重庆
+        public static final int EM_CARD_SICHUAN                      = 51;  // 四川
+        public static final int EM_CARD_GUIZHOU                      = 52;  // 贵州
+        public static final int EM_CARD_YUNNAN                       = 53;  // 云南
+        public static final int EM_CARD_XIZANG                       = 54;  // 西藏
+        public static final int EM_CARD_SHANXI_XIAN                  = 61;  // 陕西
+        public static final int EM_CARD_GANSU                        = 62;  // 甘肃
+        public static final int EM_CARD_QINGHAI                      = 63;  // 青海
+        public static final int EM_CARD_NINGXIA                      = 64;  // 宁夏
+        public static final int EM_CARD_XINJIANG                     = 65;  // 新疆
+        public static final int EM_CARD_XIANGGANG                    = 71;  // 香港
+        public static final int EM_CARD_AOMEN                        = 82;  // 澳门
+        public static final int EM_CARD_TAIWAN                       = 83;  // 台湾
+    }
+
+    // 车辆类型
+    public static class EM_CAR_TYPE extends SdkStructure
+    {
+        public static final int EM_CAR_0                             = 0;   // 其他车辆
+        public static final int EM_CAR_1                             = 1;   // 大型普通客车
+        public static final int EM_CAR_2                             = 2;   // 大型双层客车
+        public static final int EM_CAR_3                             = 3;   // 大型卧铺客车
+        public static final int EM_CAR_4                             = 4;   // 大型铰接客车
+        public static final int EM_CAR_5                             = 5;   // 大型越野客车
+        public static final int EM_CAR_6                             = 6;   // 大型轿车
+        public static final int EM_CAR_7                             = 7;   // 大型专用客车
+        public static final int EM_CAR_8                             = 8;   // 大型专用校车
+        public static final int EM_CAR_9                             = 9;   // 中型普通客车
+        public static final int EM_CAR_10                            = 10;  // 中型双层客车
+        public static final int EM_CAR_11                            = 11;  // 中型卧铺客车
+        public static final int EM_CAR_12                            = 12;  // 中型铰接客车
+        public static final int EM_CAR_13                            = 13;  // 中型越野客车
+        public static final int EM_CAR_14                            = 14;  // 中型轿车
+        public static final int EM_CAR_15                            = 15;  // 中型专用客车
+        public static final int EM_CAR_16                            = 16;  // 中型专用校车
+        public static final int EM_CAR_17                            = 17;  // 小型普通客车
+        public static final int EM_CAR_18                            = 18;  // 小型越野客车
+        public static final int EM_CAR_19                            = 19;  // 小型轿车
+        public static final int EM_CAR_20                            = 20;  // 小型专用客车
+        public static final int EM_CAR_21                            = 21;  // 小型专用校车
+        public static final int EM_CAR_22                            = 22;  // 小型面包车
+        public static final int EM_CAR_23                            = 23;  // 微型普通客车
+        public static final int EM_CAR_24                            = 24;  // 微型越野客车
+        public static final int EM_CAR_25                            = 25;  // 微型轿车
+        public static final int EM_CAR_26                            = 26;  // 微型面包车
+        public static final int EM_CAR_27                            = 27;  // 重型半挂牵引车
+        public static final int EM_CAR_28                            = 28;  // 重型全挂牵引车
+        public static final int EM_CAR_29                            = 29;  // 中型半挂牵引车
+        public static final int EM_CAR_30                            = 30;  // 中型全挂牵引车
+        public static final int EM_CAR_31                            = 31;  // 轻型半挂牵引车
+        public static final int EM_CAR_32                            = 32;  // 轻型全挂牵引车
+        public static final int EM_CAR_33                            = 33;  // 大型非载货专项作业车
+        public static final int EM_CAR_34                            = 34;  // 大型载货专项作业车
+        public static final int EM_CAR_35                            = 35;  // 中型非载货专项作业车
+        public static final int EM_CAR_36                            = 36;  // 中型载货专项作业车
+        public static final int EM_CAR_37                            = 37;  // 小型非载货专项作业车
+        public static final int EM_CAR_38                            = 38;  // 小型载货专项作业车
+        public static final int EM_CAR_39                            = 39;  // 微型非载货专项作业车
+        public static final int EM_CAR_40                            = 40;  // 微型载货专项作业车
+        public static final int EM_CAR_41                            = 41;  // 重型非载货专项作业车
+        public static final int EM_CAR_42                            = 42;  // 重型载货专项作业车
+        public static final int EM_CAR_43                            = 43;  // 轻型非载货专项作业车
+        public static final int EM_CAR_44                            = 44;  // 轻型载货专项作业车
+        public static final int EM_CAR_45                            = 45;  // 普通正三轮摩托车
+        public static final int EM_CAR_46                            = 46;  // 轻便正三轮摩托车
+        public static final int EM_CAR_47                            = 47;  // 正三轮载客摩托车
+        public static final int EM_CAR_48                            = 48;  // 正三轮载货摩托车
+        public static final int EM_CAR_49                            = 49;  // 侧三轮摩托车
+        public static final int EM_CAR_50                            = 50;  // 普通二轮摩托车
+        public static final int EM_CAR_51                            = 51;  // 轻便二轮摩托车
+        public static final int EM_CAR_52                            = 52;  // 无轨电车
+        public static final int EM_CAR_53                            = 53;  // 有轨电车
+        public static final int EM_CAR_54                            = 54;  // 三轮汽车
+        public static final int EM_CAR_55                            = 55;  // 轮式装载机械
+        public static final int EM_CAR_56                            = 56;  // 轮式挖掘机械
+        public static final int EM_CAR_57                            = 57;  // 轮式平地机械
+        public static final int EM_CAR_58                            = 58;  // 重型普通货车
+        public static final int EM_CAR_59                            = 59;  // 重型厢式货车
+        public static final int EM_CAR_60                            = 60;  // 重型封闭货车
+        public static final int EM_CAR_61                            = 61;  // 重型罐式货车
+        public static final int EM_CAR_62                            = 62;  // 重型平板货车
+        public static final int EM_CAR_63                            = 63;  // 重型集装箱车
+        public static final int EM_CAR_64                            = 64;  // 重型自卸货车
+        public static final int EM_CAR_65                            = 65;  // 重型特殊结构货车
+        public static final int EM_CAR_66                            = 66;  // 重型仓栅式货车
+        public static final int EM_CAR_67                            = 67;  // 重型车辆运输车
+        public static final int EM_CAR_68                            = 68;  // 重型厢式自卸货车
+        public static final int EM_CAR_69                            = 69;  // 重型罐式自卸货车
+        public static final int EM_CAR_70                            = 70;  // 重型平板自卸货车
+        public static final int EM_CAR_71                            = 71;  // 重型集装箱自卸货车
+        public static final int EM_CAR_72                            = 72;  // 重型特殊结构自卸货车
+        public static final int EM_CAR_73                            = 73;  // 重型仓栅式自卸货车
+        public static final int EM_CAR_74                            = 74;  // 中型普通货车
+        public static final int EM_CAR_75                            = 75;  // 中型厢式货车
+        public static final int EM_CAR_76                            = 76;  // 中型封闭货车
+        public static final int EM_CAR_77                            = 77;  // 中型罐式货车
+        public static final int EM_CAR_78                            = 78;  // 中型平板货车
+        public static final int EM_CAR_79                            = 79;  // 中型集装箱车
+        public static final int EM_CAR_80                            = 80;  // 中型自卸货车
+        public static final int EM_CAR_81                            = 81;  // 中型特殊结构货车
+        public static final int EM_CAR_82                            = 82;  // 中型仓栅式货车
+        public static final int EM_CAR_83                            = 83;  // 中型车辆运输车
+        public static final int EM_CAR_84                            = 84;  // 中型厢式自卸货车
+        public static final int EM_CAR_85                            = 85;  // 中型罐式自卸货车
+        public static final int EM_CAR_86                            = 86;  // 中型平板自卸货车
+        public static final int EM_CAR_87                            = 87;  // 中型集装箱自卸货车
+        public static final int EM_CAR_88                            = 88;  // 中型特殊结构自卸货车
+        public static final int EM_CAR_89                            = 89;  // 中型仓栅式自卸货车
+        public static final int EM_CAR_90                            = 90;  // 轻型普通货车
+        public static final int EM_CAR_91                            = 91;  // 轻型厢式货车
+        public static final int EM_CAR_92                            = 92;  // 轻型封闭货车
+        public static final int EM_CAR_93                            = 93;  // 轻型罐式货车
+        public static final int EM_CAR_94                            = 94;  // 轻型平板货车
+        public static final int EM_CAR_95                            = 95;  // 轻型自卸货车
+        public static final int EM_CAR_96                            = 96;  // 轻型特殊结构货车
+        public static final int EM_CAR_97                            = 97;  // 轻型仓栅式货车
+        public static final int EM_CAR_98                            = 98;  // 轻型车辆运输车
+        public static final int EM_CAR_99                            = 99;  // 轻型厢式自卸货车
+        public static final int EM_CAR_100                           = 100;  // 轻型罐式自卸货车
+        public static final int EM_CAR_101                           = 101;  // 轻型平板自卸货车
+        public static final int EM_CAR_102                           = 102;  // 轻型特殊结构自卸货车
+        public static final int EM_CAR_103                           = 103;  // 轻型仓栅式自卸货车
+        public static final int EM_CAR_104                           = 104;  // 微型普通货车
+        public static final int EM_CAR_105                           = 105;  // 微型厢式货车
+        public static final int EM_CAR_106                           = 106;  // 微型封闭货车
+        public static final int EM_CAR_107                           = 107;  // 微型罐式货车
+        public static final int EM_CAR_108                           = 108;  // 微型自卸货车
+        public static final int EM_CAR_109                           = 109;  // 微型特殊结构货车
+        public static final int EM_CAR_110                           = 110;  // 微型仓栅式货车
+        public static final int EM_CAR_111                           = 111;  // 微型车辆运输车
+        public static final int EM_CAR_112                           = 112;  // 微型厢式自卸货车
+        public static final int EM_CAR_113                           = 113;  // 微型罐式自卸货车
+        public static final int EM_CAR_114                           = 114;  // 微型特殊结构自卸货车
+        public static final int EM_CAR_115                           = 115;  // 微型仓栅式自卸货车
+        public static final int EM_CAR_116                           = 116;  // 普通低速货车
+        public static final int EM_CAR_117                           = 117;  // 厢式低速货车
+        public static final int EM_CAR_118                           = 118;  // 罐式低速货车
+        public static final int EM_CAR_119                           = 119;  // 自卸低速货车
+        public static final int EM_CAR_120                           = 120;  // 仓栅式低速货车
+        public static final int EM_CAR_121                           = 121;  // 厢式自卸低速货车
+        public static final int EM_CAR_122                           = 122;  // 罐式自卸低速货车
+        public static final int EM_CAR_123                           = 123;  // 重型普通全挂车
+        public static final int EM_CAR_124                           = 124;  // 重型厢式全挂车
+        public static final int EM_CAR_125                           = 125;  // 重型罐式全挂车
+        public static final int EM_CAR_126                           = 126;  // 重型平板全挂车
+        public static final int EM_CAR_127                           = 127;  // 重型集装箱全挂车
+        public static final int EM_CAR_128                           = 128;  // 重型自卸全挂车
+        public static final int EM_CAR_129                           = 129;  // 重型仓栅式全挂车
+        public static final int EM_CAR_130                           = 130;  // 重型旅居全挂车
+        public static final int EM_CAR_131                           = 131;  // 重型专项作业全挂车
+        public static final int EM_CAR_132                           = 132;  // 重型厢式自卸全挂车
+        public static final int EM_CAR_133                           = 133;  // 重型罐式自卸全挂车
+        public static final int EM_CAR_134                           = 134;  // 重型平板自卸全挂车
+        public static final int EM_CAR_135                           = 135;  // 重型集装箱自卸全挂车
+        public static final int EM_CAR_136                           = 136;  // 重型仓栅式自卸全挂车
+        public static final int EM_CAR_137                           = 137;  // 重型专项作业自卸全挂车
+        public static final int EM_CAR_138                           = 138;  // 中型普通全挂车
+        public static final int EM_CAR_139                           = 139;  // 中型厢式全挂车
+        public static final int EM_CAR_140                           = 140;  // 中型罐式全挂车
+        public static final int EM_CAR_141                           = 141;  // 中型平板全挂车
+        public static final int EM_CAR_142                           = 142;  // 中型集装箱全挂车
+        public static final int EM_CAR_143                           = 143;  // 中型自卸全挂车
+        public static final int EM_CAR_144                           = 144;  // 中型仓栅式全挂车
+        public static final int EM_CAR_145                           = 145;  // 中型旅居全挂车
+        public static final int EM_CAR_146                           = 146;  // 中型专项作业全挂车
+        public static final int EM_CAR_147                           = 147;  // 中型厢式自卸全挂车
+        public static final int EM_CAR_148                           = 148;  // 中型罐式自卸全挂车
+        public static final int EM_CAR_149                           = 149;  // 中型平板自卸全挂车
+        public static final int EM_CAR_150                           = 150;  // 中型集装箱自卸全挂车
+        public static final int EM_CAR_151                           = 151;  // 中型仓栅式自卸全挂车
+        public static final int EM_CAR_152                           = 152;  // 中型专项作业自卸全挂车
+        public static final int EM_CAR_153                           = 153;  // 轻型普通全挂车
+        public static final int EM_CAR_154                           = 154;  // 轻型厢式全挂车
+        public static final int EM_CAR_155                           = 155;  // 轻型罐式全挂车
+        public static final int EM_CAR_156                           = 156;  // 轻型平板全挂车
+        public static final int EM_CAR_157                           = 157;  // 轻型自卸全挂车
+        public static final int EM_CAR_158                           = 158;  // 轻型仓栅式全挂车
+        public static final int EM_CAR_159                           = 159;  // 轻型旅居全挂车
+        public static final int EM_CAR_160                           = 160;  // 轻型专项作业全挂车
+        public static final int EM_CAR_161                           = 161;  // 轻型厢式自卸全挂车
+        public static final int EM_CAR_162                           = 162;  // 轻型罐式自卸全挂车
+        public static final int EM_CAR_163                           = 163;  // 轻型平板自卸全挂车
+        public static final int EM_CAR_164                           = 164;  // 轻型集装箱自卸全挂车
+        public static final int EM_CAR_165                           = 165;  // 轻型仓栅式自卸全挂车
+        public static final int EM_CAR_166                           = 166;  // 轻型专项作业自卸全挂车
+        public static final int EM_CAR_167                           = 167;  // 重型普通半挂车
+        public static final int EM_CAR_168                           = 168;  // 重型厢式半挂车
+        public static final int EM_CAR_169                           = 169;  // 重型罐式半挂车
+        public static final int EM_CAR_170                           = 170;  // 重型平板半挂车
+        public static final int EM_CAR_171                           = 171;  // 重型集装箱半挂车
+        public static final int EM_CAR_172                           = 172;  // 重型自卸半挂车
+        public static final int EM_CAR_173                           = 173;  // 重型特殊结构半挂车
+        public static final int EM_CAR_174                           = 174;  // 重型仓栅式半挂车
+        public static final int EM_CAR_175                           = 175;  // 重型旅居半挂车
+        public static final int EM_CAR_176                           = 176;  // 重型专项作业半挂车
+        public static final int EM_CAR_177                           = 177;  // 重型低平板半挂车
+        public static final int EM_CAR_178                           = 178;  // 重型车辆运输半挂车
+        public static final int EM_CAR_179                           = 179;  // 重型罐式自卸半挂车
+        public static final int EM_CAR_180                           = 180;  // 重型平板自卸半挂车
+        public static final int EM_CAR_181                           = 181;  // 重型集装箱自卸半挂车
+        public static final int EM_CAR_182                           = 182;  // 重型特殊结构自卸半挂车
+        public static final int EM_CAR_183                           = 183;  // 重型仓栅式自卸半挂车
+        public static final int EM_CAR_184                           = 184;  // 重型专项作业自卸半挂车
+        public static final int EM_CAR_185                           = 185;  // 重型低平板自卸半挂车
+        public static final int EM_CAR_186                           = 186;  // 重型中置轴旅居挂车
+        public static final int EM_CAR_187                           = 187;  // 重型中置轴车辆运输车
+        public static final int EM_CAR_188                           = 188;  // 重型中置轴普通挂车
+        public static final int EM_CAR_189                           = 189;  // 中型普通半挂车
+        public static final int EM_CAR_190                           = 190;  // 中型厢式半挂车
+        public static final int EM_CAR_191                           = 191;  // 中型罐式半挂车
+        public static final int EM_CAR_192                           = 192;  // 中型平板半挂车
+        public static final int EM_CAR_193                           = 193;  // 中型集装箱半挂车
+        public static final int EM_CAR_194                           = 194;  // 中型自卸半挂车
+        public static final int EM_CAR_195                           = 195;  // 中型特殊结构半挂车
+        public static final int EM_CAR_196                           = 196;  // 中型仓栅式半挂车
+        public static final int EM_CAR_197                           = 197;  // 中型旅居半挂车
+        public static final int EM_CAR_198                           = 198;  // 中型专项作业半挂车
+        public static final int EM_CAR_199                           = 199;  // 中型低平板半挂车
+        public static final int EM_CAR_200                           = 200;  // 中型车辆运输半挂车
+        public static final int EM_CAR_201                           = 201;  // 中型罐式自卸半挂车
+        public static final int EM_CAR_202                           = 202;  // 中型平板自卸半挂车
+        public static final int EM_CAR_203                           = 203;  // 中型集装箱自卸半挂车
+        public static final int EM_CAR_204                           = 204;  // 中型特殊结构自卸挂车
+        public static final int EM_CAR_205                           = 205;  // 中型仓栅式自卸半挂车
+        public static final int EM_CAR_206                           = 206;  // 中型专项作业自卸半挂车
+        public static final int EM_CAR_207                           = 207;  // 中型低平板自卸半挂车
+        public static final int EM_CAR_208                           = 208;  // 中型中置轴旅居挂车
+        public static final int EM_CAR_209                           = 209;  // 中型中置轴车辆运输车
+        public static final int EM_CAR_210                           = 210;  // 中型中置轴普通挂车
+        public static final int EM_CAR_211                           = 211;  // 轻型普通半挂车
+        public static final int EM_CAR_212                           = 212;  // 轻型厢式半挂车
+        public static final int EM_CAR_213                           = 213;  // 轻型罐式半挂车
+        public static final int EM_CAR_214                           = 214;  // 轻型平板半挂车
+        public static final int EM_CAR_215                           = 215;  // 轻型自卸半挂车
+        public static final int EM_CAR_216                           = 216;  // 轻型仓栅式半挂车
+        public static final int EM_CAR_217                           = 217;  // 轻型旅居半挂车
+        public static final int EM_CAR_218                           = 218;  // 轻型专项作业半挂车
+        public static final int EM_CAR_219                           = 219;  // 轻型低平板半挂车
+        public static final int EM_CAR_220                           = 220;  // 轻型车辆运输半挂车
+        public static final int EM_CAR_221                           = 221;  // 轻型罐式自卸半挂车
+        public static final int EM_CAR_222                           = 222;  // 轻型平板自卸半挂车
+        public static final int EM_CAR_223                           = 223;  // 轻型集装箱自卸半挂车
+        public static final int EM_CAR_224                           = 224;  // 轻型特殊结构自卸挂车
+        public static final int EM_CAR_225                           = 225;  // 轻型仓栅式自卸半挂车
+        public static final int EM_CAR_226                           = 226;  // 轻型专项作业自卸半挂车
+        public static final int EM_CAR_227                           = 227;  // 轻型低平板自卸半挂车
+        public static final int EM_CAR_228                           = 228;  // 轻型中置轴旅居挂车
+        public static final int EM_CAR_229                           = 229;  // 轻型中置轴车辆运输车
+        public static final int EM_CAR_230                           = 230;  // 轻型中置轴普通挂车
+    }
+
+    // 号牌类型
+    public static class EM_PLATE_TYPE extends SdkStructure
+    {
+        public static final int EM_PLATE_OTHER                       = 0;   // 其他车
+        public static final int EM_PLATE_BIG_CAR                     = 1;   // 大型汽车
+        public static final int EM_PLATE_SMALL_CAR                   = 2;   // 小型汽车
+        public static final int EM_PLATE_EMBASSY_CAR                 = 3;   // 使馆汽车
+        public static final int EM_PLATE_CONSULATE_CAR               = 4;   // 领馆汽车
+        public static final int EM_PLATE_ABROAD_CAR                  = 5;   // 境外汽车
+        public static final int EM_PLATE_FOREIGN_CAR                 = 6;   // 外籍汽车
+        public static final int EM_PLATE_LOW_SPEED_CAR               = 7;   // 低速车
+        public static final int EM_PLATE_COACH_CAR                   = 8;   // 教练车
+        public static final int EM_PLATE_MOTORCYCLE                  = 9;   // 摩托车
+        public static final int EM_PLATE_NEW_POWER_CAR               = 10;  // 新能源车
+        public static final int EM_PLATE_POLICE_CAR                  = 11;  // 警用车
+        public static final int EM_PLATE_HONGKONG_MACAO_CAR          = 12;  // 港澳两地车
+        public static final int EM_PLATE_WJPOLICE_CAR             = 13;  //
+        public static final int EM_PLATE_OUTERGUARD_CAR                = 14;  //
+    }
+
+    // 车身颜色
+    public static class EM_CAR_COLOR_TYPE extends SdkStructure
+    {
+        public static final int EM_CAR_COLOR_WHITE                   = 0;   // 白色
+        public static final int EM_CAR_COLOR_BLACK                   = 1;   // 黑色
+        public static final int EM_CAR_COLOR_RED                     = 2;   // 红色
+        public static final int EM_CAR_COLOR_YELLOW                  = 3;   // 黄色
+        public static final int EM_CAR_COLOR_GRAY                    = 4;   // 灰色
+        public static final int EM_CAR_COLOR_BLUE                    = 5;   // 蓝色
+        public static final int EM_CAR_COLOR_GREEN                   = 6;   // 绿色
+        public static final int EM_CAR_COLOR_PINK                    = 7;   // 粉色
+        public static final int EM_CAR_COLOR_PURPLE                  = 8;   // 紫色
+        public static final int EM_CAR_COLOR_DARK_PURPLE             = 9;   // 暗紫色
+        public static final int EM_CAR_COLOR_BROWN                   = 10;  // 棕色
+        public static final int EM_CAR_COLOR_MAROON                  = 11;  // 粟色
+        public static final int EM_CAR_COLOR_SILVER_GRAY             = 12;  // 银灰色
+        public static final int EM_CAR_COLOR_DARK_GRAY               = 13;  // 暗灰色
+        public static final int EM_CAR_COLOR_WHITE_SMOKE             = 14;  // 白烟色
+        public static final int EM_CAR_COLOR_DEEP_ORANGE             = 15;  // 深橙色
+        public static final int EM_CAR_COLOR_LIGHT_ROSE              = 16;  // 浅玫瑰色
+        public static final int EM_CAR_COLOR_TOMATO_RED              = 17;  // 番茄红色
+        public static final int EM_CAR_COLOR_OLIVE                   = 18;  // 橄榄色
+        public static final int EM_CAR_COLOR_GOLDEN                  = 19;  // 金色
+        public static final int EM_CAR_COLOR_DARK_OLIVE              = 20;  // 暗橄榄色
+        public static final int EM_CAR_COLOR_YELLOW_GREEN            = 21;  // 黄绿色
+        public static final int EM_CAR_COLOR_GREEN_YELLOW            = 22;  // 绿黄色
+        public static final int EM_CAR_COLOR_FOREST_GREEN            = 23;  // 森林绿
+        public static final int EM_CAR_COLOR_OCEAN_BLUE              = 24;  // 海洋绿
+        public static final int EM_CAR_COLOR_DEEP_SKYBLUE            = 25;  // 深天蓝
+        public static final int EM_CAR_COLOR_CYAN                    = 26;  // 青色
+        public static final int EM_CAR_COLOR_DEEP_BLUE               = 27;  // 深蓝色
+        public static final int EM_CAR_COLOR_DEEP_RED                = 28;  // 深红色
+        public static final int EM_CAR_COLOR_DEEP_GREEN              = 29;  // 深绿色
+        public static final int EM_CAR_COLOR_DEEP_YELLOW             = 30;  // 深黄色
+        public static final int EM_CAR_COLOR_DEEP_PINK               = 31;  // 深粉色
+        public static final int EM_CAR_COLOR_DEEP_PURPLE             = 32;  // 深紫色
+        public static final int EM_CAR_COLOR_DEEP_BROWN              = 33;  // 深棕色
+        public static final int EM_CAR_COLOR_DEEP_CYAN               = 34;  // 深青色
+        public static final int EM_CAR_COLOR_ORANGE                  = 35;  // 橙色
+        public static final int EM_CAR_COLOR_DEEP_GOLDEN             = 36;  // 深金色
+        public static final int EM_CAR_COLOR_OTHER                   = 255;  // 未识别、其他
+    }
+
+    // 使用性质
+    public static class EM_USE_PROPERTY_TYPE extends SdkStructure
+    {
+        public static final int EM_USE_PROPERTY_NONOPERATING         = 0;   // 非营运
+        public static final int EM_USE_PROPERTY_HIGWAY               = 1;   // 公路客运,旅游客运
+        public static final int EM_USE_PROPERTY_BUS                  = 2;   // 公交客运
+        public static final int EM_USE_PROPERTY_TAXI                 = 3;   // 出租客运
+        public static final int EM_USE_PROPERTY_FREIGHT              = 4;   // 货运
+        public static final int EM_USE_PROPERTY_LEASE                = 5;   // 租赁
+        public static final int EM_USE_PROPERTY_SECURITY             = 6;   // 警用,消防,救护,工程救险
+        public static final int EM_USE_PROPERTY_COACH                = 7;   // 教练
+        public static final int EM_USE_PROPERTY_SCHOOLBUS            = 8;   // 幼儿校车,小学生校车,其他校车
+        public static final int EM_USE_PROPERTY_FOR_DANGE_VEHICLE    = 9;   // 危化品运输
+        public static final int EM_USE_PROPERTY_OTHER                = 10;  // 其他
+        public static final int EM_USE_PROPERTY_ONLINE_CAR_HAILING   = 11;  // 网约车
+    }
+
+    // 大类业务方案
+    public static class EM_CLASS_TYPE extends SdkStructure
+    {
+        public static final int EM_CLASS_UNKNOWN                     = 0;   // 未知业务
+        public static final int EM_CLASS_VIDEO_SYNOPSIS              = 1;   // 视频浓缩
+        public static final int EM_CLASS_TRAFFIV_GATE                = 2;   // 卡口
+        public static final int EM_CLASS_ELECTRONIC_POLICE           = 3;   // 电警
+        public static final int EM_CLASS_SINGLE_PTZ_PARKING          = 4;   // 单球违停
+        public static final int EM_CLASS_PTZ_PARKINBG                = 5;   // 主从违停
+        public static final int EM_CLASS_TRAFFIC                     = 6;   // 交通事件"Traffic"
+        public static final int EM_CLASS_NORMAL                      = 7;   // 通用行为分析"Normal"
+        public static final int EM_CLASS_PS                          = 8;   
+        public static final int EM_CLASS_ATM                         = 9;   // 金融行为分析"ATM"
+        public static final int EM_CLASS_METRO                       = 10;  // 地铁行为分析
+        public static final int EM_CLASS_FACE_DETECTION              = 11;  // 目标检测"FaceDetection"
+        public static final int EM_CLASS_FACE_RECOGNITION            = 12;  // 目标识别"FaceRecognition"
+        public static final int EM_CLASS_NUMBER_STAT                 = 13;  // 人数统计"NumberStat"
+        public static final int EM_CLASS_HEAT_MAP                    = 14;  // 热度图"HeatMap"
+        public static final int EM_CLASS_VIDEO_DIAGNOSIS             = 15;  // 视频诊断"VideoDiagnosis"
+        public static final int EM_CLASS_VIDEO_ENHANCE               = 16;  // 视频增强
+        public static final int EM_CLASS_SMOKEFIRE_DETECT            = 17;  // 烟火检测
+        public static final int EM_CLASS_VEHICLE_ANALYSE             = 18;  // 车辆特征识别"VehicleAnalyse"
+        public static final int EM_CLASS_PERSON_FEATURE              = 19;  // 人员特征识别
+        public static final int EM_CLASS_SDFACEDETECTION             = 20;  // 多预置点目标检测"SDFaceDetect"
+        //配置一条规则但可以在不同预置点下生效
+        public static final int EM_CLASS_HEAT_MAP_PLAN               = 21;  // 球机热度图计划"HeatMapPlan"
+        public static final int EM_CLASS_NUMBERSTAT_PLAN             = 22;  // 球机客流量统计计划 "NumberStatPlan"
+        public static final int EM_CLASS_ATMFD                       = 23;  // 金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
+        public static final int EM_CLASS_HIGHWAY                     = 24;  // 高速交通事件检测"Highway"
+        public static final int EM_CLASS_CITY                        = 25;  // 城市交通事件检测 "City"
+        public static final int EM_CLASS_LETRACK                     = 26;  // 民用简易跟踪"LeTrack"
+        public static final int EM_CLASS_SCR                         = 27;  // 打靶相机"SCR"
+        public static final int EM_CLASS_STEREO_VISION               = 28;  // 立体视觉(双目)"StereoVision"
+        public static final int EM_CLASS_HUMANDETECT                 = 29;  // 人体检测"HumanDetect"
+        public static final int EM_CLASS_FACE_ANALYSIS               = 30;  // 人脸分析 "FaceAnalysis"
+        public static final int EM_CALSS_XRAY_DETECTION              = 31;  // X光检测 "XRayDetection"
+        public static final int EM_CLASS_STEREO_NUMBER               = 32;  // 双目相机客流量统计 "StereoNumber"
+        public static final int EM_CLASS_CROWDDISTRIMAP              = 33;  // 人群分布图
+        public static final int EM_CLASS_OBJECTDETECT                = 34;  // 目标检测
+        public static final int EM_CLASS_FACEATTRIBUTE               = 35;  // IVSS目标检测 "FaceAttribute"
+        public static final int EM_CLASS_FACECOMPARE                 = 36;  // IVSS目标识别 "FaceCompare"
+        public static final int EM_CALSS_STEREO_BEHAVIOR             = 37;  // 立体行为分析 "StereoBehavior"
+        public static final int EM_CALSS_INTELLICITYMANAGER          = 38;  // 智慧城管 "IntelliCityMgr"
+        public static final int EM_CALSS_PROTECTIVECABIN             = 39;  // 防护舱(ATM舱内)"ProtectiveCabin"
+        public static final int EM_CALSS_AIRPLANEDETECT              = 40;  // 飞机行为检测 "AirplaneDetect"
+        public static final int EM_CALSS_CROWDPOSTURE                = 41;  // 人群态势(人群分布图服务)"CrowdPosture"
+        public static final int EM_CLASS_PHONECALLDETECT             = 42;  // 打电话检测 "PhoneCallDetect"
+        public static final int EM_CLASS_SMOKEDETECTION              = 43;  // 烟雾检测 "SmokeDetection"
+        public static final int EM_CLASS_BOATDETECTION               = 44;  // 船只检测 "BoatDetection"
+        public static final int EM_CLASS_SMOKINGDETECT               = 45;  // 吸烟检测 "SmokingDetect"
+        public static final int EM_CLASS_WATERMONITOR                = 46;  // 水利监测 "WaterMonitor"
+        public static final int EM_CLASS_GENERATEGRAPHDETECTION      = 47;  // 生成图规则 "GenerateGraphDetection"
+        public static final int EM_CLASS_TRAFFIC_PARK                = 48;  // 交通停车 "TrafficPark"
+        public static final int EM_CLASS_OPERATEMONITOR              = 49;  // 作业检测 "OperateMonitor"
+        public static final int EM_CLASS_INTELLI_RETAIL              = 50;  // 智慧零售大类 "IntelliRetail"
+        public static final int EM_CLASS_CLASSROOM_ANALYSE           = 51;  // 教育智慧课堂"ClassroomAnalyse"
+        public static final int EM_CLASS_FEATURE_ABSTRACT            = 52;  // 特征向量提取大类 "FeatureAbstract"
+        public static final int EM_CLASS_CROWD_ABNORMAL				 = 60;	// 人群异常检测 "CrowdAbnormal"
+        public static final int EM_CLASS_ANATOMY_TEMP_DETECT		 = 63;	// 人体温智能检测 "AnatomyTempDetect"
+        public static final int EM_CLASS_WEATHER_MONITOR			 = 64;	// 天气监控 "WeatherMonitor"
+        public static final int EM_CLASS_ELEVATOR_ACCESS_CONTROL	 = 65;	// 电梯门禁 "ElevatorAccessControl"
+        public static final int	EM_CLASS_BREAK_RULE_BUILDING		 = 66;	// 违章建筑	"BreakRuleBuilding"
+        public static final int	EM_CLASS_FOREIGN_DETECT              = 67;   // 异物检测 "ForeignDetection"
+        public static final int	EM_CLASS_PANORAMA_TRAFFIC            = 68;   // 全景交通 "PanoramaTraffic"
+
+        public static final int	EM_CLASS_CONVEY_OR_BLOCK			 = 69;	// 传送带阻塞 "ConveyorBlock"
+        public static final int	EM_CLASS_KITCHEN_ANIMAL              = 70;   // 厨房有害动物检测 "KitchenAnimal"
+        public static final int	EM_CLASS_ALLSEEINGEYE                = 71;   // 万物检测 "AllSeeingEye"
+        public static final int	EM_CLASS_INTELLI_FIRE_CONTROL		 = 72;	// 智慧消防 "IntelliFireControl"
+        public static final int	EM_CLASS_CONVERYER_BELT              = 73;   // 传送带检测 "ConveyerBelt"
+        public static final int	EM_CLASS_INTELLI_LOGISTICS           = 74;   // 智慧物流 "IntelliLogistics"
+        public static final int	EM_CLASS_SMOKE_FIRE                  = 75;   // 烟火检测"SmokeFire"
+        public static final int	EM_CLASS_OBJECT_MONITOR              = 76;   // 物品监控"ObjectMonitor"
+        public static final int	EM_CLASS_INTELLI_PARKING			 = 77;	// 智能停车"IntelliParking"
+    }
+
+    // 交通车辆行驶方向类型
+    public static class EM_TRAFFICCAR_MOVE_DIRECTION extends SdkStructure
+    {
+        public static final int EM_TRAFFICCAR_MOVE_DIRECTION_UNKNOWN = 0;   // 未知的
+        public static final int EM_TRAFFICCAR_MOVE_DIRECTION_STRAIGHT = 1;   // 直行
+        public static final int EM_TRAFFICCAR_MOVE_DIRECTION_TURN_LEFT = 2;   // 左转
+        public static final int EM_TRAFFICCAR_MOVE_DIRECTION_TURN_RIGHT = 3;   // 右转
+        public static final int EM_TRAFFICCAR_MOVE_DIRECTION_TURN_AROUND = 4;   // 掉头
+    }
+
+    // 货物通道信息(物流)
+    public static class NET_CUSTOM_INFO extends SdkStructure
+    {
+        public int                            nCargoChannelNum;                     // 货物通道个数
+        public float[]                        fCoverageRate = new float[MAX_CARGO_CHANNEL_NUM];  // 货物覆盖率
+        public byte[]                         byReserved = new byte[40];            // 保留字节
+    }
+
+    // 车辆物件类型
+    public static class EM_COMM_ATTACHMENT_TYPE extends SdkStructure
+    {
+        public static final int COMM_ATTACHMENT_TYPE_UNKNOWN         = 0;   // 未知类型
+        public static final int COMM_ATTACHMENT_TYPE_FURNITURE       = 1;   // 摆件
+        public static final int COMM_ATTACHMENT_TYPE_PENDANT         = 2;   // 挂件
+        public static final int COMM_ATTACHMENT_TYPE_TISSUEBOX       = 3;   // 纸巾盒
+        public static final int COMM_ATTACHMENT_TYPE_DANGER          = 4;   // 危险品
+        public static final int COMM_ATTACHMENT_TYPE_PERFUMEBOX      = 5;   // 香水
+    }
+
+    // 按功能划分的车辆类型
+    public static class EM_VEHICLE_TYPE_BY_FUNC extends SdkStructure
+    {
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_UNKNOWN      = 0;   // 未知
+        /*以下为特种车辆类型*/
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_TANK_CAR     = 1;   // 危化品车辆
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_SLOT_TANK_CAR = 2;   // 槽罐车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_DREGS_CAR    = 3;   // 渣土车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_CONCRETE_MIXER_TRUCK = 4;   // 混凝土搅拌车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_TAXI         = 5;   // 出租车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_POLICE       = 6;   // 警车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_AMBULANCE    = 7;   // 救护车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_GENERAL      = 8;   // 普通车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_WATERING_CAR = 9;   // 洒水车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_FIRE_ENGINE  = 10;  // 消防车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_MACHINESHOP_TRUCK = 11;  // 工程车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_POWER_LOT_VEHICLE = 12;  // 粉粒物料车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_SUCTION_SEWAGE_TRUCK = 13;  // 吸污车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_NORMAL_TANK_TRUCK = 14;  // 普通罐车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_SCHOOL_BUS   = 15;  // 校车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_EXCAVATOR    = 16;  // 挖掘机
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_BULLDOZER    = 17;  // 推土车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_CRANE        = 18;  // 吊车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_PUMP_TRUCK   = 19;  // 泵车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_POULTRY      = 20;	// 禽畜车
+        public static final int EM_VEHICLE_TYPE_BY_FUNC_TRACTOR      = 21;	// 拖拉机
+        /*以上为特种车辆类型*/
+    }
+
+    // 标准车辆类型
+    public static class EM_STANDARD_VEHICLE_TYPE extends SdkStructure
+    {
+        public static final int EM_STANDARD_VEHICLE_UNKNOWN          = 0;   // 未知
+        public static final int EM_STANDARD_VEHICLE_MOTOR            = 1;   // 机动车
+        public static final int EM_STANDARD_VEHICLE_BUS              = 2;   // 公交车
+        public static final int EM_STANDARD_VEHICLE_UNLICENSED_MOTOR = 3;   // 无牌机动车
+        public static final int EM_STANDARD_VEHICLE_LARGE_CAR        = 4;   // 大型汽车
+        public static final int EM_STANDARD_VEHICLE_MICRO_CAR        = 5;   // 小型汽车
+        public static final int EM_STANDARD_VEHICLE_EMBASSY_CAR      = 6;   // 使馆汽车
+        public static final int EM_STANDARD_VEHICLE_MARGINAL_CAR     = 7;   // 领馆汽车
+        public static final int EM_STANDARD_VEHICLE_AREAOUT_CAR      = 8;   // 境外汽车
+        public static final int EM_STANDARD_VEHICLE_FOREIGN_CAR      = 9;   // 外籍汽车
+        public static final int EM_STANDARD_VEHICLE_FARM_TRANS_CAR   = 10;  // 农用运输车
+        public static final int EM_STANDARD_VEHICLE_TRACTOR          = 11;  // 拖拉机
+        public static final int EM_STANDARD_VEHICLE_TRAILER          = 12;  // 挂车
+        public static final int EM_STANDARD_VEHICLE_COACH_CAR        = 13;  // 教练汽车
+        public static final int EM_STANDARD_VEHICLE_TRIAL_CAR        = 14;  // 试验汽车
+        public static final int EM_STANDARD_VEHICLE_TEMPORARYENTRY_CAR = 15;  // 临时入境汽车
+        public static final int EM_STANDARD_VEHICLE_TEMPORARYENTRY_MOTORCYCLE = 16;  // 临时入境摩托
+        public static final int EM_STANDARD_VEHICLE_TEMPORARY_STEER_CAR = 17;  // 临时行驶车
+        public static final int EM_STANDARD_VEHICLE_LARGE_TRUCK      = 18;  // 大货车
+        public static final int EM_STANDARD_VEHICLE_MID_TRUCK        = 19;  // 中货车
+        public static final int EM_STANDARD_VEHICLE_MICRO_TRUCK      = 20;  // 小货车
+        public static final int EM_STANDARD_VEHICLE_MICROBUS         = 21;  // 面包车
+        public static final int EM_STANDARD_VEHICLE_SALOON_CAR       = 22;  // 轿车
+        public static final int EM_STANDARD_VEHICLE_CARRIAGE         = 23;  // 小轿车
+        public static final int EM_STANDARD_VEHICLE_MINI_CARRIAGE    = 24;  // 微型轿车
+        public static final int EM_STANDARD_VEHICLE_SUV_MPV          = 25;  // SUV或者MPV
+        public static final int EM_STANDARD_VEHICLE_SUV              = 26;  // SUV
+        public static final int EM_STANDARD_VEHICLE_MPV              = 27;  // MPV
+        public static final int EM_STANDARD_VEHICLE_PASSENGER_CAR    = 28;  // 客车
+        public static final int EM_STANDARD_VEHICLE_MOTOR_BUS        = 29;  // 大客车
+        public static final int EM_STANDARD_VEHICLE_MID_PASSENGER_CAR = 30;  // 中客车
+        public static final int EM_STANDARD_VEHICLE_MINI_BUS         = 31;  // 小客车
+        public static final int EM_STANDARD_VEHICLE_PICKUP           = 32;  // 皮卡车
+        public static final int EM_STANDARD_VEHICLE_OILTANK_TRUCK    = 33;  // 油罐车
+    }
+
+    // 报警事件类型 EVENT_ALARM_LOCALALARM(外部报警),EVENT_ALARM_MOTIONALARM(动检报警)报警)
+    public static class DEV_EVENT_ALARM_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         Reserved = new byte[4];               // 保留字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public EVENT_COMM_INFO                stCommInfo;                           // 公共信息
+        public byte                           byEventAction;								// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                         byReserved=new byte[3];               // 保留字节
+
+        public int				  emSenseType;			// 传感器类型,参考NET_SENSE_METHOD
+        public int				emDefenceAreaType;		// 防区类型 ,参考EM_NET_DEFENCE_AREA_TYPE
+        public NET_GPS_STATUS_INFO			stuGPS;					// GPS信息
+        public byte[]						szUserID = new byte[32];			// 本地报警时登陆的用户ID
+        public byte[]						szUserName = new byte[128];		// 本地报警时登陆的用户名
+        public byte[]						szSN = new byte[32];				// 设备序列号
+        public int						bExAlarmIn;				// 外部输入报警
+        public NET_FILE_PROCESS_INFO		stuFileProcessInfo;					// 图片与智能事件信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    	public byte[]						byReservedEx = new byte[512];		// 保留字节
+    }
+
+    // 报警事件类型 EVENT_ALARM_VIDEOBLIND(视频遮挡报警)
+    public static class DEV_EVENT_ALARM_VIDEOBLIND extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public byte[]                         Reserved = new byte[4];               // 保留字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_TIME_EX                    stuTime;                              // 事件发生的时间, (设备时间, 不一定是utc时间)
+        public byte[]                         szDriverID=new byte[32];                             // 司机ID
+        public NET_GPS_STATUS_INFO stuGPSStatus;                               // GPS信息
+        public byte[]             szVideoPath=new byte[256];                           // 违章关联视频FTP上传路径
+        public NET_IMAGE_INFO_EX   stuImageInfo[] = (NET_IMAGE_INFO_EX[])new NET_IMAGE_INFO_EX().toArray(6);    //图片信息扩展
+        public int                  nImageInfo;                                  //图片信息扩展的个数
+        public NET_IMAGE_INFO_EX2   stuImageInfoEx2[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                  nImageInfoEx2Num;                                  //图片信息个数
+        public int                  nRelatingVideoInfoNum;                           // 违章关联的多个视频信息个数
+	    public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+	    public int                           bEventAction;                           // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; 
+        public byte                          byReserved[] = new byte[1023];          //预留字节
+    }
+
+    // 事件类型 EVENT_IVS_HIGHSPEED(车辆超速报警事件)对应的数据块描述信息
+    public static class DEV_EVENT_HIGHSPEED_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public int                            nAction;                              // 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public byte[]                         byReserved = new byte[4];             // 保留字节
+        public double                         dbPTS;                                // 时间戳(单位是毫秒)
+        public NET_GPS_STATUS_INFO            stGPSStatusInfo;                      // GPS信息
+        public int                            nSpeedLimit;                          // 车连限速值(km/h)
+        public int                            nCurSpeed;                            // 当前车辆速度(km/h)
+        public int                            nMaxSpeed;                            // 最高速度(Km/h)
+        public NET_TIME_EX                    stuStartTime;                         // 开始时间(需求),nAction为2时上报此字段
+        public byte[]                         byReserved1 = new byte[1024];         // 保留字节
+    }
+
+    // 事件类型EVENT_IVS_TIREDPHYSIOLOGICAL(生理疲劳驾驶事件)对应的数据块描述信息
+    public static class DEV_EVENT_TIREDPHYSIOLOGICAL_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public int                            nAction;                              // 0:脉冲 1:开始 2:停止
+        public NET_GPS_STATUS_INFO            stuGPSStatus;                         // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];          // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_TIREDPHYSIOLOGICAL_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_TIREDLOWERHEAD(开车低头报警事件)对应的数据块描述信息
+    public static class DEV_EVENT_TIREDLOWERHEAD_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_GPS_STATUS_INFO            stuGPSStatus;                         // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];          // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_TIREDLOWERHEAD_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST(开车离岗报警事件)对应的数据块描述信息
+    public static class DEV_EVENT_DRIVERLEAVEPOST_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_GPS_STATUS_INFO            stuGPSStatus;                         // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];           // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_DRIVERLEAVEPOST_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    // 事件类型 EVENT_IVS_TRAFFIC_DRIVERYAWN (开车打哈欠事件) 对应的数据块描述信息
+    public static class DEV_EVENT_DRIVERYAWN_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         szReserved1 = new byte[4];            // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_GPS_STATUS_INFO            stuGPSStatus;                         // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];          // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_DRIVERYAWN_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    // 事件类型 EVENT_IVS_FORWARDCOLLISION_WARNNING(前向碰撞预警) 对应的数据块描述信息
+    public static class DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public int                            nEventID;                             // 事件ID
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nAction;                              // 0:脉冲 1:开始 2:停止
+
+        public NET_GPS_STATUS_INFO            stuGPSStatusInfo;                     // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];          // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节
+        public DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    // 事件类型 EVNET_IVS_LANEDEPARTURE_WARNNING(车道偏移预警) 对应的数据块描述信息
+    public static class DEV_EVENT_LANEDEPARTURE_WARNNING_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public int                            nEventID;                             // 事件ID
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nAction;                              // 0:脉冲 1:开始 2:停止
+
+        public NET_GPS_STATUS_INFO            stuGPSStatusInfo;                     // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];          // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_LANEDEPARTURE_WARNNING_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+    }
+
+    //图片路径类型
+    public static class NET_PICTURE_PATH_TYPE extends SdkStructure
+    {
+        public static final int NET_PATH_LOCAL_PATH                  = 0;   // 本地硬盘或者sd卡成功写入路径
+        public static final int NET_PATH_FTP_PATH                    = 1;   // 设备成功写到ftp服务器的路径
+        public static final int NET_PATH_VIDEO_PATH                  = 2;   // 当前接入需要获取当前违章的关联视频的FTP上传路径
+    }
+
+    public static final int MAX_PIC_PATH_NUM               = 16;
+    public static class NET_RESERVED_PATH extends SdkStructure
+    {
+        public int                            nMaxPathNum;                          // 图片路径总数,为0时采用设备默认路径
+        public int[]                          emPictruePaths = new int[MAX_PIC_PATH_NUM];  // 图片路径类型,详见NET_PICTURE_PATH_TYPE
+    }
+
+    //离线传输参数
+    public static class NET_OFFLINE_PARAM extends SdkStructure
+    {
+        public byte[]                         szClientID = new byte[20];            // 客户端mac地址,冒号分隔形式
+        public byte[]                         byReserved = new byte[108];           // 保留
+    }
+
+    public static class NET_RESERVED_COMMON extends SdkStructure
+    {
+        public int                            dwStructSize;
+        public Pointer                        pIntelBox;                            // 兼容RESERVED_TYPE_FOR_INTEL_BOX,指向ReservedDataIntelBox
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+        public Pointer                        pstuOfflineParam;                     // 离线传输参数,指向NET_OFFLINE_PARAM
+        public Pointer                        pstuPath;                             // 兼容RESERVED_TYPE_FOR_PATH,指向NET_RESERVED_PATH
+        public int            emPathMode;         // 返回的图片存储路径模式,对应枚举EM_PATH_MODE
+        /**
+         * 对应结构体{@link EM_FILTER_IMAGE_TYPE}
+         */
+        public Pointer   pImageType;         // 返回的图片类型, 由用户申请释放
+        public int                     nImageTypeNum;      // pImageType 有效个数
+    	public int                 bFlagCustomInfo;    // szCustomInfo 标志位 TRUE时 使用szCustomInfo字段
+    	public byte[]                  szCustomInfo = new byte[512];  // 客户自定义信息 customInfo是getFiltercaps中能力对应的订阅参数的格式化字符串表示,字符串格式为:订阅参数以&分隔,订阅参数的名字和值用=连接
+    	public int                    bSetEventsType;     // 是否设置事件类型
+    	public int					  nVOLayer;			  // 视频输出口图层, 0:未知 1:视频层 2:GUI层 3:动态跑马显示
+    	public int			 emOrder;			// 设备给客户端传离线图片需要按照的顺序,如果是倒序上传:越晚产生的优先上传,越早产生的后传,参考枚举EM_EVENT_ORDER
+    	
+    	public NET_RESERVED_COMMON()
+        {
+            this.dwStructSize = this.size();
+        }
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_DRIVER_SMOKING (驾驶员抽烟事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_DRIVER_SMOKING extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public int                            nTriggerType;                         // TriggerType:触发类型,0车检器,1雷达,2视频
+        public int                            PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public int                            nSequence;                            // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                           byEventAction;                        // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;    BYTE                    byReserved1[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]                         byReserved1 = new byte[2];
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public int                            nLane;                                // 对应车道号
+        public int                            nMark;                                // 底层产生的触发抓拍帧标记
+        public int                            nFrameSequence;                       // 视频分析帧序号
+        public int                            nSource;                              // 视频分析的数据源地址
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public NET_MSG_OBJECT                 stuVehicle;                           // 车身信息
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;                        // 交通车辆信息
+        public int                            nSpeed;                               // 车辆实际速度,Km/h
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public NET_RESOLUTION_INFO            stuResolution;                        // 对应图片的分辨率
+        public EVENT_COMM_INFO                stCommInfo;                           // 公共信息
+        public NET_GPS_INFO                   stuGPSInfo;                           // GPS信息 
+		public byte[]                         szDriverID = new byte[32];                 // 司机ID
+	    public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+	    public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+	    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+	    public byte[]                         byReserved = new byte[952];           // 保留字节
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_DRIVER_CALLING(驾驶员打电话事件)对应的数据块描述信息
+    public static class DEV_EVENT_TRAFFIC_DRIVER_CALLING extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public int                            nTriggerType;                         // TriggerType:触发类型,0车检器,1雷达,2视频
+        public int                            PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public int                            nSequence;                            // 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+        public byte                           byEventAction;                        // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;    BYTE                    byReserved1[2];
+        public byte                           byImageIndex;                         // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public byte[]                         byReserved1 = new byte[2];
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+        public int                            nLane;                                // 对应车道号
+        public int                            nMark;                                // 底层产生的触发抓拍帧标记
+        public int                            nFrameSequence;                       // 视频分析帧序号
+        public int                            nSource;                              // 视频分析的数据源地址
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体
+        public NET_MSG_OBJECT                 stuVehicle;                           // 车身信息
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;                        // 交通车辆信息
+        public int                            nSpeed;                               // 车辆实际速度,Km/h
+        public int                            dwSnapFlagMask;                       // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public NET_RESOLUTION_INFO            stuResolution;                        // 对应图片的分辨率
+        public EVENT_COMM_INFO                stCommInfo;                           // 公共信息
+        public NET_GPS_INFO                   stuGPSInfo;                           // GPS信息 
+		public byte[]                         szDriverID = new byte[32];                 // 司机ID
+	    public int                            nRelatingVideoInfoNum;          // 违章关联的多个视频信息个数
+	    public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+	    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+	    public byte[]                         byReserved = new byte[952];           // 保留字节
+		public DEV_EVENT_TRAFFIC_DRIVER_CALLING() {		
+			for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+				stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+		}
+    }
+
+    // 事件类型EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND(开车左顾右盼报警事件)对应的数据块描述信息
+    public static class DEV_EVENT_DRIVERLOOKAROUND_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+
+        public NET_GPS_STATUS_INFO            stuGPSStatus;                         // GPS信息
+        public byte[]                         szDriverID= new byte[32];            // 司机ID
+        public byte[]                         szVideoPath= new byte[256];           // 违章关联视频FTP上传路径
+        public int                            nRelatingVideoInfoNum;                // 违章关联的多个视频信息个数
+        public NET_RELATING_VIDEO_INFO[]      stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];      // 违章关联的多个视频信息数组,最多支持16个视频
+        public byte[]                         bReserved = new byte[736];           // 保留字节,留待扩展.
+        public DEV_EVENT_DRIVERLOOKAROUND_INFO() {
+        	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+        		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+			}
+        }
+
+    }
+
+    // 进站离站状态
+    public static class NET_BUS_STATE extends SdkStructure
+    {
+        public static final int NET_BUS_STATE_UNKNOWN                = 0;   // 未知
+        public static final int NET_BUS_STATE_ILLEGAL                = 1;   // 非法
+        public static final int NET_BUS_STATE_LEGAL                  = 2;   // 合法
+    }
+
+    // 报警事件类型NET_ALARM_ENCLOSURE_ALARM(电子围栏事件)对应的数据描述信息
+    public static class ALARM_ENCLOSURE_ALARM_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            dwAlarmType;                          // 报警类型, 按位分别表示,
+        // 0:LimitSpeed, 1:DriveAllow, 2:ForbidDrive, 3:LoadGoods, 4:UploadGoods
+        public int                            dwAlarmDetail;                        // 报警描述, 按位分别表示,
+        // 0:DriveIn, 1:DriveOut, 2:Overspeed, 3:SpeedClear
+        public int                            emState;                              // 是否按规定时间触发事件,详见NET_BUS_STATE
+        public int                            dwDriverNo;                           // 司机编号
+        public int                            dwEnclosureID;                        // 围栏ID
+        public int                            dwLimitSpeed;                         // 限速
+        public int                            dwCurrentSpeed;                       // 当前速度
+        public NET_TIME_EX                    stuTime;                              // 当前时间
+        public NET_GPS_STATUS_INFO            stuGPSStatusInfo;                     // GPS信息
+
+        public ALARM_ENCLOSURE_ALARM_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class DEV_SET_RESULT extends SdkStructure
+    {
+        public int               dwType;                     // 类型(即GetDevConfig和SetDevConfig的类型)
+        public short             wResultCode;                // 返回码;0:成功,1:失败,2:数据不合法,3:暂时无法设置,4:没有权限
+        public short             wRebootSign;                // 重启标志;0:不需要重启,1:需要重启才生效
+        public int[]             dwReserved = new int[2];              // 保留
+    }
+
+    // ALARM_ENCLOSURE_INFO
+    // 电子围栏报警
+    public static class ALARM_ENCLOSURE_INFO extends SdkStructure
+    {
+        public int           nTypeNumber;                          // 有效电子围栏类型个数
+        public byte[]        bType = new byte[16];                 // 电子围栏类型, 见 ENCLOSURE_TYPE
+        public int           nAlarmTypeNumber;                     // 有效报警类型个数
+        public byte[]        bAlarmType = new byte[16];            // 报警类型,见ENCLOSURE_ALARM_TYPE
+        public byte[]        szDriverId = new byte[32];            // 司机工号
+        public int           unEnclosureId;                        // 电子围栏ID
+        public int           unLimitSpeed;                         // 限速,单位km/h
+        public int           unCurrentSpeed;                       // 当前速度
+        public NET_TIME      stAlarmTime;                          // 报警发生时间
+        public int           dwLongitude;                          // 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
+        public int           dwLatidude;                           // 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为12018338
+        // 经纬度的具体转换方式可以参考结构体 NET_WIFI_GPS_INFO 中的注释
+        public byte          bOffline;                             // 0-实时 1-补传
+        public byte[]        reserve = new byte[3];                // 字节对齐
+        public int           unTriggerCount;                       // 围栏触发次数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public int           bIsAlarmEnclosureInfoEx;              // 该值为TRUE时应使用 ALARM_ENCLOSURE_INFO_EX 结构体中字段
+        public ALARM_ENCLOSURE_INFO_EX   stuAlarmEnclosureInfoEx = new ALARM_ENCLOSURE_INFO_EX(); // 当走三代事件时数据存在该结构体
+        public byte[]        byReserved = new byte[128];          // 保留字节
+    }
+
+    // NETDEV_3GFLOW_EXCEED_STATE_INFO
+    // 3G流量超出阈值状态信息
+    public static class NETDEV_3GFLOW_EXCEED_STATE_INFO extends SdkStructure
+    {
+        public byte                bState;                 // 3G流量超出阈值状态,0表示未超出阀值,1表示超出阀值
+        public byte[]              reserve1 = new byte[3]; // 字节对齐
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              reserve = new byte[32];  // 保留字节
+    }
+
+    // 飞行器类型
+    public static class ENUM_UAV_TYPE extends SdkStructure
+    {
+        public static final int ENUM_UAV_TYPE_GENERIC                = 0;   // 通用
+        public static final int ENUM_UAV_TYPE_FIXED_WING             = 1;   // 固定翼
+        public static final int ENUM_UAV_TYPE_QUADROTOR              = 2;   // 四轴
+        public static final int ENUM_UAV_TYPE_COAXIAL                = 3;   // 共轴
+        public static final int ENUM_UAV_TYPE_HELICOPTER             = 4;   // 直机
+        public static final int ENUM_UAV_TYPE_ANTENNA_TRACKER        = 5;   // 地面跟踪天线
+        public static final int ENUM_UAV_TYPE_GCS                    = 6;   // 地面站
+        public static final int ENUM_UAV_TYPE_AIRSHIP                = 7;   // 有控飞艇
+        public static final int ENUM_UAV_TYPE_FREE_BALLOON           = 8;   // 自由飞气球
+        public static final int ENUM_UAV_TYPE_ROCKET                 = 9;   // 火箭
+        public static final int ENUM_UAV_TYPE_GROUND_ROVER           = 10;  // 地面车辆
+        public static final int ENUM_UAV_TYPE_SURFACE_BOAT           = 11;  // 水面船艇
+        public static final int ENUM_UAV_TYPE_SUBMARINE              = 12;  // 潜艇
+        public static final int ENUM_UAV_TYPE_HEXAROTOR              = 13;  // 六轴
+        public static final int ENUM_UAV_TYPE_OCTOROTOR              = 14;  // 八轴
+        public static final int ENUM_UAV_TYPE_TRICOPTER              = 15;  // 三轴
+        public static final int ENUM_UAV_TYPE_FLAPPING_WING          = 16;  // 扑翼机
+        public static final int ENUM_UAV_TYPE_KITE                   = 17;  // 风筝
+        public static final int ENUM_UAV_TYPE_ONBOARD_CONTROLLER     = 18;  // 控制器
+        public static final int ENUM_UAV_TYPE_VTOL_DUOROTOR          = 19;  // 两翼VTOL
+        public static final int ENUM_UAV_TYPE_VTOL_QUADROTOR         = 20;  // 四翼VTOL
+        public static final int ENUM_UAV_TYPE_VTOL_TILTROTOR         = 21;  // 倾转旋翼机
+        public static final int ENUM_UAV_TYPE_VTOL_RESERVED2         = 22;  // VTOL 保留2
+        public static final int ENUM_UAV_TYPE_VTOL_RESERVED3         = 23;  // VTOL 保留3
+        public static final int ENUM_UAV_TYPE_VTOL_RESERVED4         = 24;  // VTOL 保留4
+        public static final int ENUM_UAV_TYPE_VTOL_RESERVED5         = 25;  // VTOL 保留5
+        public static final int ENUM_UAV_TYPE_GIMBAL                 = 26;  // 常平架
+        public static final int ENUM_UAV_TYPE_ADSB                   = 27;  // ADSB
+    }
+
+    // 飞行器模式
+    public static class ENUM_UAV_MODE extends SdkStructure
+    {
+        public static final int ENUM_UAV_MODE_UNKNOWN                = 0;   // 未知模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_MANUAL      = 0;   // 固定翼 手动模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_CIRCLE      = 1;   // 固定翼 绕圈模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_STABILIZE   = 2;   // 固定翼 自稳模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_TRAINING    = 3;   // 固定翼 训练模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_ACRO        = 4;   // 固定翼 特技模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_FLY_BY_WIRE_A = 5;   // 固定翼 A翼飞行模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_FLY_BY_WIRE_B = 6;   // 固定翼 B翼飞行模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_CRUISE      = 7;   // 固定翼 巡航模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_AUTOTUNE    = 8;   // 固定翼 自动统调
+        public static final int ENUM_UAV_MODE_FIXED_WING_AUTO        = 10;  // 固定翼 智能模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_RTL         = 11;  // 固定翼 返航模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_LOITER      = 12;  // 固定翼 定点模式
+        public static final int ENUM_UAV_MODE_FIXED_WING_GUIDED      = 15;  // 固定翼 引导模式
+
+        public static final int ENUM_UAV_MODE_QUADROTOR_STABILIZE    = 100;  // 四轴 自稳模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_ACRO         = 101;  // 四轴 特技模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_ALT_HOLD     = 102;  // 四轴 定高模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_AUTO         = 103;  // 四轴 智能模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_GUIDED       = 104;  // 四轴 引导模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_LOITER       = 105;  // 四轴 定点模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_RTL          = 106;  // 四轴 返航模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_CIRCLE       = 107;  // 四轴 绕圈模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_LAND         = 109;  // 四轴 降落模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_OF_LOITER    = 110;  // 四轴 启用光流的悬停模式需要光流传感器来保持位置和高度
+        public static final int ENUM_UAV_MODE_QUADROTOR_TOY          = 111;  // 四轴 飘移模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_SPORT        = 113;  // 四轴 运动模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_AUTOTUNE     = 115;  // 四轴 自动统调
+        public static final int ENUM_UAV_MODE_QUADROTOR_POSHOLD      = 116;  // 四轴 保持模式
+        public static final int ENUM_UAV_MODE_QUADROTOR_BRAKE        = 117;  // 四轴 制动模式
+
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_MANUAL    = 200;  // 地面车辆 手动模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_LEARNING  = 202;  // 地面车辆 学习模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_STEERING  = 203;  // 地面车辆 驾驶模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_HOLD      = 204;  // 地面车辆 锁定模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_AUTO      = 210;  // 地面车辆 智能模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_RTL       = 211;  // 地面车辆 返航模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_GUIDED    = 215;  // 地面车辆 引导模式
+        public static final int ENUM_UAV_MODE_GROUND_ROVER_INITIALIZING = 216;  // 地面车辆 初始化模式
+
+        public static final int ENUM_UAV_MODE_HEXAROTOR_STABILIZE    = 300;  // 六轴 自稳模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_ACRO         = 301;  // 六轴 特技模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_ALT_HOLD     = 302;  // 六轴 定高模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_AUTO         = 303;  // 六轴 智能模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_GUIDED       = 304;  // 六轴 引导模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_LOITER       = 305;  // 六轴 定点模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_RTL          = 306;  // 六轴 返航模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_CIRCLE       = 307;  // 六轴 绕圈模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_LAND         = 309;  // 六轴 降落模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_OF_LOITER    = 310;  // 六轴 启用光流的悬停模式需要光流传感器来保持位置和高度
+        public static final int ENUM_UAV_MODE_HEXAROTOR_DRIFT        = 311;  // 六轴 飘移模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_SPORT        = 313;  // 六轴 运动模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_AUTOTUNE     = 315;  // 六轴 自动统调
+        public static final int ENUM_UAV_MODE_HEXAROTOR_POSHOLD      = 316;  // 六轴 保持模式
+        public static final int ENUM_UAV_MODE_HEXAROTOR_BRAKE        = 317;  // 六轴 制动模式
+    }
+
+    // 无人机系统状态
+    public static class ENUM_UAV_STATE extends SdkStructure
+    {
+        public static final int ENUM_UAV_STATE_UNINIT                = 0;   // 未初始化, 状态未知
+        public static final int ENUM_UAV_STATE_BOOT                  = 1;   // 正在启动
+        public static final int ENUM_UAV_STATE_CALIBRATING           = 2;   // 正在校准,未准备好起飞.
+        public static final int ENUM_UAV_STATE_STANDBY               = 3;   // 系统地面待命,随时可以起飞.
+        public static final int ENUM_UAV_STATE_ACTIVE                = 4;   // 开车/开航. 发动机已经启动.
+        public static final int ENUM_UAV_STATE_CRITICAL              = 5;   // 系统处于失常飞行状态,仍能导航.
+        public static final int ENUM_UAV_STATE_EMERGENCY             = 6;   // 系统处于失常飞行状态,若干设备失灵,坠落状态.
+        public static final int ENUM_UAV_STATE_POWEROFF              = 7;   // 系统刚执行了关机指令,正在关闭.
+    }
+
+    // UAV 系统当前模式
+    public static class NET_UAV_SYS_MODE_STATE extends SdkStructure
+    {
+        public int                            bSafetyArmedEnabled;                  // 主发动机使能, 准备好起飞.
+        public int                            bManualInputEnabled;                  // 遥控输入信号使能.
+        public int                            bHILEnabled;                          // HIL硬件环在线模拟使能.所有发动机, 舵机及其他动作设备阻断, 但内部软件处于全部可操作状态.
+        public int                            bStabilizeEnabled;                    // 高度/位置电子增稳使能.在此状态下,飞行器仍需要外部操作指令以实现操作
+        public int                            bGuidedEnabled;                       // 导航使能.导航数据和指令来自导航/航点指令表文件
+        public int                            bAutoEnabled;                         // 全自主航行模式使能.系统自行决定目的地.前一项“导航使能”可以设置为TURE或FLASE状态
+        public int                            bTestEnabled;                         // 测试模式使能.本标识仅供临时的系统测试之用,不应该用于实际航行的应用中.
+        public int                            bReserved;                            // 保留模式
+    }
+
+    // 心跳状态信息
+    public static class NET_UAV_HEARTBEAT extends SdkStructure
+    {
+        public int                            emUAVMode;                            // 飞行模式和飞行器形态类型相关,详见ENUM_UAV_MODE
+        public int                            emUAVType;                            // 飞行器形态类型,详见ENUM_UAV_TYPE
+        public int                            emSystemStatus;                       // 系统状态,详见ENUM_UAV_STATE
+        public NET_UAV_SYS_MODE_STATE         stuBaseMode;                          // 系统当前模式
+        public byte[]                         byReserved = new byte[8];             // 保留字节
+    }
+
+    // 传感器
+    public static class ENUM_UAV_SENSOR extends SdkStructure
+    {
+        public static final int ENUM_UAV_SENSOR_UNKNOWN              = 0;   // 未知类型
+        public static final int ENUM_UAV_SENSOR_3D_GYRO              = 1;   // 三轴陀螺
+        public static final int ENUM_UAV_SENSOR_3D_ACCEL             = 2;   // 三轴加速度/倾角仪
+        public static final int ENUM_UAV_SENSOR_3D_MAG               = 3;   // 三轴磁罗盘
+        public static final int ENUM_UAV_SENSOR_ABSOLUTE_PRESSURE    = 4;   // 绝对气压计
+        public static final int ENUM_UAV_SENSOR_DIFFERENTIAL_PRESSURE = 5;   // 相对气压计
+        public static final int ENUM_UAV_SENSOR_GPS                  = 6;   // GPS
+        public static final int ENUM_UAV_SENSOR_OPTICAL_FLOW         = 7;   // 光测设备
+        public static final int ENUM_UAV_SENSOR_VISION_POSITION      = 8;   // 计算机视觉定位仪
+        public static final int ENUM_UAV_SENSOR_LASER_POSITION       = 9;   // 激光定位
+        public static final int ENUM_UAV_SENSOR_EXTERNAL_GROUND_TRUTH = 10;  // 外部激光定位(Vicon 或徕卡)
+        public static final int ENUM_UAV_SENSOR_ANGULAR_RATE_CONTROL = 11;  // 三轴角速度控制器
+        public static final int ENUM_UAV_SENSOR_ATTITUDE_STABILIZATION = 12;  // 高度稳定器
+        public static final int ENUM_UAV_SENSOR_YAW_POSITION         = 13;  // 方向稳定器(锁尾等)
+        public static final int ENUM_UAV_SENSOR_Z_ALTITUDE_CONTROL   = 14;  // 高度控制器
+        public static final int ENUM_UAV_SENSOR_XY_POSITION_CONTROL  = 15;  // X/Y位置控制器
+        public static final int ENUM_UAV_SENSOR_MOTOR_OUTPUTS        = 16;  // 马达输出控制器
+        public static final int ENUM_UAV_SENSOR_RC_RECEIVER          = 17;  // RC 接收器
+        public static final int ENUM_UAV_SENSOR_3D_GYRO2             = 18;  // 2nd 三轴陀螺
+        public static final int ENUM_UAV_SENSOR_3D_ACCEL2            = 19;  // 2nd 三轴加速度/倾角仪
+        public static final int ENUM_UAV_SENSOR_3D_MAG2              = 20;  // 2nd 三轴磁罗盘
+        public static final int ENUM_UAV_GEOFENCE                    = 21;  // 地理围栏
+        public static final int ENUM_UAV_AHRS                        = 22;  // 姿态子系统运行状况
+        public static final int ENUM_UAV_TERRAIN                     = 23;  // 地形子系统运行状况
+        public static final int ENUM_UAV_REVERSE_MOTOR               = 24;  // 保留马达
+    }
+
+    public static final int UAV_MAX_SENSOR_NUM             = 32;   // 最大传感器个数
+    // 传感器信息
+    public static class NET_UAV_SENSOR extends SdkStructure
+    {
+        public int                            emType;                               // 传感器类型,详见ENUM_UAV_SENSOR
+        public int                            bEnabled;                             // 使能状态
+        public int                            bHealthy;                             // 传感器状态
+    }
+
+    // 系统状态信息
+    public static class NET_UAV_SYS_STATUS extends SdkStructure
+    {
+        public int                            nPresentSensorNum;                    // 可见传感器个数, 最大支持32
+        public NET_UAV_SENSOR[]               stuSensors = new NET_UAV_SENSOR[UAV_MAX_SENSOR_NUM];  // 传感器信息
+        public int                            nBatteryVoltage;                      // 电池电压, 单位: 毫伏
+        public int                            nBatteryCurrent;                      // 电池电流, 单位: 10毫安
+        public int                            nChargeDischargeNum;                  // 电池充放电次数
+        public int                            nHomeDistance;                        // 距离Home的距离, 单位: 米
+        public int                            nRemainingFlightTime;                 // 剩余飞行时间, 单位: 秒
+        public int                            nRemainingBattery;                    // 剩余电量百分比 -1: 正在估测剩余电量
+        public byte[]                         byReserverd = new byte[16];           // 保留字节
+
+        public NET_UAV_SYS_STATUS()
+        {
+            for (int i = 0; i < stuSensors.length; ++i) {
+                stuSensors[i] = new NET_UAV_SENSOR();
+            }
+        }
+    }
+
+    public static final int UAV_MAX_SATELLITE_NUM          = 20;   // 最多支持卫星个数
+    // 卫星信息
+    public static class NET_SATELLITE_STATUS extends SdkStructure
+    {
+        public int                            bUsed;                                // 卫星使用状态 FLASE: 未使用 TURE: 使用
+        public int                            nID;                                  // 卫星ID
+        public int                            nElevation;                           // 卫星在天空中的仰角 单位: 度
+        public int                            nDireciton;                           // 卫星方位角 单位: 度
+        public int                            nSNR;                                 // 信噪比, 信号强度百分比
+    }
+
+    // GPS 可见卫星的状态信息
+    public static class NET_UAV_GPS_STATUS extends SdkStructure
+    {
+        public int                            nVisibleNum;                          // 可见卫星个数, 最多支持20个
+        public NET_SATELLITE_STATUS[]         stuSatellites = new NET_SATELLITE_STATUS[UAV_MAX_SATELLITE_NUM];  // 卫星信息
+
+        public NET_UAV_GPS_STATUS()
+        {
+            for (int i = 0; i < stuSatellites.length; ++i) {
+                stuSatellites[i] = new NET_SATELLITE_STATUS();
+            }
+        }
+    }
+
+    // 姿态信息
+    public static class NET_UAV_ATTITUDE extends SdkStructure
+    {
+        public float                          fRollAngle;                           // 滚转角, 单位: 度
+        public float                          fPitchAngle;                          // 俯仰角, 单位: 度
+        public float                          fYawAngle;                            // 偏航角, 单位: 度
+        public byte[]                         bReserved = new byte[16];             // 保留字节
+    }
+
+    // 遥控通道信息
+    public static class NET_UAV_RC_CHANNELS extends SdkStructure
+    {
+        public int                            nControllerSignal;                    // 遥控器信号百分比, 255: 非法未知
+        public byte[]                         byReserved = new byte[80];            // 保留字节
+    }
+
+    // 平视显示信息
+    public static class NET_UAV_VFR_HUD extends SdkStructure
+    {
+        public float                          fGroundSpeed;                         // 水平速度, 单位: 米/秒
+        public float                          fAltitude;                            // 高度, 单位: 米
+        public float                          fClimbSpeed;                          // 垂直速度, 单位: 米/秒
+        public byte[]                         byReserved = new byte[12];
+    }
+
+    // 故障等级
+    public static class ENUM_UAV_SEVERITY extends SdkStructure
+    {
+        public static final int ENUM_UAV_SEVERITY_EMERGENCY          = 0;   // 系统不可用, 最紧急状态
+        public static final int ENUM_UAV_SEVERITY_ALERT              = 1;   // 警报. 非致命性系统故障, 应立即应对.
+        public static final int ENUM_UAV_SEVERITY_CRITICAL           = 2;   // 警报: 主要系统故障, 应立即应对
+        public static final int ENUM_UAV_SEVERITY_ERROR              = 3;   // 故障: 次系统故障/备份系统故障
+        public static final int ENUM_UAV_SEVERITY_WARNING            = 4;   // 警告
+        public static final int ENUM_UAV_SEVERITY_NOTICE             = 5;   // 注意: 出现失常现象, 单非错误故障. 应该排查其现象根源
+        public static final int ENUM_UAV_SEVERITY_INFO               = 6;   // 提示: 一般性操作消息, 可用于日志. 此消息不需要应对行动
+        public static final int ENUM_UAV_SEVERITY_DEBUG              = 7;   // 调试信息。正常操作的时候不该出现
+    }
+
+    // 报警文本信息
+    public static class NET_UAV_STATUSTEXT extends SdkStructure
+    {
+        public int                            emSeverity;                           // 故障等级,详见ENUM_UAV_SEVERITY
+        public byte[]                         szText = new byte[60];                // 文本信息
+        public byte[]                         byReserved = new byte[4];             // 保留字节
+    }
+
+    // 全球定位数据
+    public static class NET_UAV_GLOBAL_POSITION extends SdkStructure
+    {
+        public float                          fLatitude;                            // 纬度, 单位: 角度
+        public float                          fLongitude;                           // 经度, 单位: 角度
+        public int                            nAltitude;                            // 海拔高度, 单位: 厘米
+        public int                            nRelativeAltitude;                    // 相对高度, 单位: 厘米
+        public int                            nXSpeed;                              // X速度(绝对速度、北东地坐标系), 单位: 厘米每秒
+        public int                            nYSpeed;                              // Y速度(绝对速度、北东地坐标系), 单位: 厘米每秒
+        public int                            nZSpeed;                              // Z速度(绝对速度、北东地坐标系), 单位: 厘米每秒
+        public byte[]                         byReserved = new byte[12];
+    }
+
+    //  GPS原始数据
+    public static class NET_UAV_GPS_RAW extends SdkStructure
+    {
+        public int                            nDHOP;                                // GPS水平定位经度因子, 单位厘米. 65535 表示未知
+        public int                            nGroudSpeed;                          // GPS地速, 厘米每秒. 65535 表示未知
+        public int                            nVisibleStatellites;                  // 卫星数, 255 表示未知
+        public int                            nVDOP;                                // GPS 垂直定位因子,单位厘米。65535表示未知
+        public int                            nCourseOverGround;                    // 整体移动方向, 非机头移动方向. 单位: 100*度
+        public int                            nFixType;                             // 定位类型.  0 或 1 尚未定位, 2: 2D 定位, 3: 3D 定位
+        public byte[]                         byReserved = new byte[20];
+    }
+
+    // 系统时间
+    public static class NET_UAV_SYS_TIME extends SdkStructure
+    {
+        public NET_TIME_EX                    UTC;                                  // UTC 时间
+        public int                            dwBootTime;                           // 启动时间, 单位毫秒
+    }
+
+    // 当前航点
+    public static class NET_UAV_MISSION_CURRENT extends SdkStructure
+    {
+        public int                            nSequence;                            // 序号 0 ~ 700
+        public byte[]                         byReserved = new byte[16];            // 保留字节
+    }
+
+    // 到达航点
+    public static class NET_UAV_MISSION_REACHED extends SdkStructure
+    {
+        public int                            nSequence;                            // 序号 0 ~ 700
+        public byte[]                         byReserved = new byte[16];            // 保留字节
+    }
+
+    // 云台姿态
+    public static class NET_UAV_MOUNT_STATUS extends SdkStructure
+    {
+        public float                          fRollAngle;                           // 滚转角, 单位: 度
+        public float                          fPitchAngle;                          // 俯仰角, 单位: 度
+        public float                          fYawAngle;                            // 偏航角, 单位: 度
+        public int                            nTargetSystem;                        // 目标系统
+        public int                            nTargetComponent;                     // 目标部件
+        public int                            nMountMode;                           // 云台模式, 参照 NET_UAVCMD_MOUNT_CONFIGURE
+        public byte[]                         byReserved = new byte[8];             // 保留字节
+    }
+
+    // Home点位置信息
+    public static class NET_UAV_HOME_POSITION extends SdkStructure
+    {
+        public float                          fLatitude;                            // 纬度, 单位: 角度
+        public float                          fLongitude;                           // 经度, 单位: 角度
+        public int                            nAltitude;                            // 海拔高度, 单位: 厘米
+        public float                          fLocalX;                              // X 点
+        public float                          fLocalY;                              // Y 点
+        public float                          fLocalZ;                              // Z 点
+        public float                          fApproachX;                           // 本地 x 矢量点
+        public float                          fApproachY;
+        public float                          fApproachZ;
+        public byte[]                         byReserved = new byte[16];
+    }
+
+    // 无人机实时消息类型
+    public static class EM_UAVINFO_TYPE extends SdkStructure
+    {
+        public static final int EM_UAVINFO_TYPE_UNKNOWN              = 0;   // 未知类型
+        public static final int EM_UAVINFO_TYPE_HEARTBEAT            = 1;   // 心跳状态 *pInfo = NET_UAV_HEARTBEAT
+        public static final int EM_UAVINFO_TYPE_SYS_STATUS           = 2;   // 系统状态 *pInfo = NET_UAV_SYS_STATUS
+        public static final int EM_UAVINFO_TYPE_GPS_STATUS           = 3;   // GPS状态 *pInfo = NET_UAV_GPS_STATUS
+        public static final int EM_UAVINFO_TYPE_ATTITUDE             = 4;   // 姿态信息 *pInfo = NET_UAV_ATTITUDE
+        public static final int EM_UAVINFO_TYPE_RC_CHANNELS          = 5;   // 遥控通道信息 *pInfo = NET_UAV_RC_CHANNELS
+        public static final int EM_UAVINFO_TYPE_VFR_HUD              = 6;   // 平视显示信息 *pInfo = NET_UAV_VFR_HUD
+        public static final int EM_UAVINFO_TYPE_STATUSTEXT           = 7;   // 报警文本信息 *pInfo = NET_UAV_STATUSTEXT
+        public static final int EM_UAVINFO_TYPE_GLOBAL_POSITION      = 8;   // 全球定位数据 *pInfo = NET_UAV_GLOBAL_POSITION
+        public static final int EM_UAVINFO_TYPE_GPS_RAW              = 9;   // GPS原始数据 *pInfo = NET_UAV_GPS_RAW
+        public static final int EM_UAVINFO_TYPE_SYS_TIME             = 10;  // 系统时间 *pInfo = NET_UAV_SYS_TIME
+        public static final int EM_UAVINFO_TYPE_MISSION_CURRENT      = 11;  // 当前航点 *pInfo = NET_UAV_MISSION_CURRENT
+        public static final int EM_UAVINFO_TYPE_MOUNT_STATUS         = 12;  // 云台姿态 *pInfo = NET_UAV_MOUNT_STATUS
+        public static final int EM_UAVINFO_TYPE_HOME_POSITION        = 13;  // Home点位置信息 *pInfo = NET_UAV_HOME_POSITION
+        public static final int EM_UAVINFO_TYPE_MISSION_REACHED      = 14;  // 到达航点 *pInfo = NET_UAV_MISSION_REACHED
+    }
+
+    // 无人机实时回调数据
+    public static class NET_UAVINFO extends SdkStructure
+    {
+        public int                            emType;                               // 消息类型,详见EM_UAVINFO_TYPE
+        public Pointer                        pInfo;                                // 消息内容,指向void
+        public int                            dwInfoSize;                           // 消息大小
+        public byte[]                         byReserved = new byte[512];           // 保留字节
+    }
+
+    // 无人机实时数据回调
+    public interface fUAVInfoCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_UAVINFO pstuUAVInfo, int dwUAVInfoSize, Pointer dwUser);
+    }
+
+    // 订阅无人机实时消息入参
+    public static class NET_IN_ATTACH_UAVINFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public Callback                		  cbNotify;                             // 实时回调函数,实现fUAVInfoCallBack
+        public Pointer                        dwUser;                               // 用户信息
+
+        public NET_IN_ATTACH_UAVINFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 订阅无人机实时消息入参
+    public static class NET_OUT_ATTACH_UAVINFO extends SdkStructure
+    {
+        public int                            dwSize;
+
+        public NET_OUT_ATTACH_UAVINFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 无人机通用设置命令类型 结构体大小与 NET_UAVCMD_PARAM_BUFFER 保持一致
+    public static class ENUM_UAVCMD_TYPE extends SdkStructure
+    {
+        public static final int ENUM_UAVCMD_UNKNOWN                  = -1;
+        public static final int ENUM_UAVCMD_NAV_TAKEOFF              = 0;   // 地面起飞或手抛起飞 NET_UAVCMD_TAKEOFF
+        public static final int ENUM_UAVCMD_NAV_LOITER_UNLIM         = 1;   // 悬停 NET_UAVCMD_LOITER_UNLIMITED
+        public static final int ENUM_UAVCMD_NAV_RETURN_TO_LAUNCH     = 2;   // 返航降落 NET_UAVCMD_RETURN_TO_LAUNCH
+        public static final int ENUM_UAVCMD_NAV_LAND                 = 3;   // 设定点着陆  NET_UAVCMD_LAND
+        public static final int ENUM_UAVCMD_CONDITION_YAW            = 4;   // 变换航向 NET_UAVCMD_CONDITION_YAW
+        public static final int ENUM_UAVCMD_DO_CHANGE_SPEED          = 5;   // 改变速度 NET_UAVCMD_CHANGE_SPEED
+        public static final int ENUM_UAVCMD_DO_SET_HOME              = 6;   // 设置返航点 NET_UAVCMD_SET_HOME
+        public static final int ENUM_UAVCMD_DO_FLIGHTTERMINATION     = 7;   // 立即停转电机, 飞机锁定 NET_UAVCMD_FLIGHT_TERMINATION
+        public static final int ENUM_UAVCMD_MISSION_START            = 8;   // 开始航点任务 NET_UAVCMD_MISSION_START
+        public static final int ENUM_UAVCMD_COMPONENT_ARM_DISARM     = 9;   // 电调解锁, 电调锁定 NET_UAVCMD_COMPONENT_ARM_DISARM
+        public static final int ENUM_UAVCMD_PREFLIGHT_REBOOT_SHUTDOWN = 10;  // 重启飞行器 NET_UAVCMD_REBOOT_SHUTDOWN
+        public static final int ENUM_UAVCMD_DO_SET_RELAY             = 11;  // 继电器控制 NET_UAVCMD_SET_RELAY
+        public static final int ENUM_UAVCMD_DO_REPEAT_RELAY          = 12;  // 继电器循环控制 NET_UAVCMD_REPEAT_RELAY
+        public static final int ENUM_UAVCMD_DO_FENCE_ENABLE          = 13;  // 电子围栏启用禁用 NET_UAVCMD_FENCE_ENABLE
+        public static final int ENUM_UAVCMD_MOUNT_CONFIGURE          = 14;  // 云台模式配置 NET_UAVCMD_MOUNT_CONFIGURE
+        public static final int ENUM_UAVCMD_GET_HOME_POSITION        = 15;  // 异步获取Home点位置, 实时数据回调中返回 NET_UAVCMD_GET_HOME_POSITION
+        public static final int ENUM_UAVCMD_IMAGE_START_CAPTURE      = 16;  // 开始抓拍 NET_UAVCMD_IMAGE_START_CAPTURE
+        public static final int ENUM_UAVCMD_IMAGE_STOP_CAPTURE       = 17;  // 停止抓拍 NET_UAVCMD_IMAGE_STOP_CAPTURE
+        public static final int ENUM_UAVCMD_VIDEO_START_CAPTURE      = 18;  // 开始录像 NET_UAVCMD_VIDEO_START_CAPTURE
+        public static final int ENUM_UAVCMD_VIDEO_STOP_CAPTURE       = 19;  // 停止录像 NET_UAVCMD_VIDEO_STOP_CAPTURE
+        public static final int ENUM_UAVCMD_NAV_WAYPOINT             = 20;  // 航点 NET_UAVCMD_NAV_WAYPOINT
+        public static final int ENUM_UAVCMD_NAV_LOITER_TURNS         = 21;  // 循环绕圈 NET_UAVCMD_NAV_LOITER_TURNS
+        public static final int ENUM_UAVCMD_NAV_LOITER_TIME          = 22;  // 固定时间等待航点 NET_UAVCMD_NAV_LOITER_TIME
+        public static final int ENUM_UAVCMD_NAV_SPLINE_WAYPOINT      = 23;  // 曲线航点 NET_UAVCMD_NAV_SPLINE_WAYPOINT
+        public static final int ENUM_UAVCMD_NAV_GUIDED_ENABLE        = 24;  // 引导模式开关 NET_UAVCMD_NAV_GUIDED_ENABLE
+        public static final int ENUM_UAVCMD_DO_JUMP                  = 25;  // 跳转到任务单某个位置. 并执行N次 NET_UAVCMD_DO_JUMP
+        public static final int ENUM_UAVCMD_DO_GUIDED_LIMITS         = 26;  // 引导模式执行控制限制 NET_UAVCMD_DO_GUIDED_LIMITS
+        public static final int ENUM_UAVCMD_CONDITION_DELAY          = 27;  // 动作延时 NET_UAVCMD_CONDITION_DELAY
+        public static final int ENUM_UAVCMD_CONDITION_DISTANCE       = 28;  // 动作距离. 前往设定距离(到下一航点),然后继续 NET_UAVCMD_CONDITION_DISTANCE
+        public static final int ENUM_UAVCMD_DO_SET_ROI               = 29;  // 相机兴趣点 NET_UAVCMD_DO_SET_ROI
+        public static final int ENUM_UAVCMD_DO_DIGICAM_CONTROL       = 30;  // 相机控制 NET_UAVCMD_DO_DIGICAM_CONTROL
+        public static final int ENUM_UAVCMD_DO_MOUNT_CONTROL         = 31;  // 云台角度控制 NET_UAVCMD_DO_MOUNT_CONTROL
+        public static final int ENUM_UAVCMD_DO_SET_CAM_TRIGG_DIST    = 32;  // 聚焦距离 NET_UAVCMD_DO_SET_CAM_TRIGG_DIST
+        public static final int ENUM_UAVCMD_SET_MODE                 = 33;  // 设置模式 NET_UAVCMD_SET_MODE
+        public static final int ENUM_UAVCMD_NAV_GUIDED               = 34;  // 设定引导点 NET_UAVCMD_NAV_GUIDED
+        public static final int ENUM_UAVCMD_MISSION_PAUSE            = 35;  // 飞行任务暂停 NET_UAVCMD_MISSION_PAUSE
+        public static final int ENUM_UAVCMD_MISSION_STOP             = 36;  // 飞行任务停止 NET_UAVCMD_MISSION_STOP
+        public static final int ENUM_UAVCMD_LOAD_CONTROL             = 37;  // 负载控制 NET_UAVCMD_LOAD_CONTROL
+        public static final int ENUM_UAVCMD_RC_CHANNELS_OVERRIDE     = 38;  // 模拟摇杆 NET_UAVCMD_RC_CHANNELS_OVERRIDE
+        public static final int ENUM_UAVCMD_HEART_BEAT               = 39;  // 心跳 NET_UAVCMD_HEART_BEAT
+    }
+
+    // 无人机命令通用信息
+    public static class NET_UAVCMD_COMMON extends SdkStructure
+    {
+        public int                            nTargetSystem;                        // 目标系统
+        public int                            nTargetComponent;                     // 目标部件, 0 - 所有部件
+        public int                            nConfirmation;                        // 确认次数, 0 - 为首次命令. 用于航点任务为0
+        public byte[]                         byReserved = new byte[4];             // 保留
+    }
+
+    // 地面起飞命令 ENUM_UAVCMD_NAV_TAKEOFF
+    public static class NET_UAVCMD_TAKEOFF extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fMinimumPitch;                        // 最小爬升率(有空速传感器时适用)设定的爬升率(无传感器)
+        public float                          fYawAngle;                            // 指向设定.(有罗盘)如无罗盘, 则忽略此参数.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 悬停命令 ENUM_UAVCMD_NAV_LOITER_UNLIM
+    public static class NET_UAVCMD_LOITER_UNLIMITED extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fRadius;                              // 盘旋半径(m), 正值顺时针, 负值逆时针.
+        public float                          fYawAngle;                            // 指向设定, 仅适用可悬停机型
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 返航降落 ENUM_UAVCMD_NAV_RETURN_TO_LAUNCH
+    public static class NET_UAVCMD_RETURN_TO_LAUNCH extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public byte[]                         byReserved = new byte[28];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 设定点着陆 ENUM_UAVCMD_NAV_LAND
+    public static class NET_UAVCMD_LAND extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fYawAngle;                            // 指向设定, 仅适用可悬停机型.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[12];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 变换航向 ENUM_UAVCMD_CONDITION_YAW
+    public static class NET_UAVCMD_CONDITION_YAW extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fTargetAngle;                         // 目标角度: [0-360], 0为北
+        public float                          fSpeed;                               // 转向速率: [度/秒]
+        public float                          fDirection;                           // 指向: 负值逆时针, 正值顺时针
+        public float                          fRelativeOffset;                      // 相对偏置或绝对角[1,0]
+        public byte[]                         byReserved = new byte[12];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 改变速度 ENUM_UAVCMD_DO_CHANGE_SPEED
+    public static class NET_UAVCMD_CHANGE_SPEED extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fSpeedType;                           // 速度类型(0=空速, 1=地速)
+        public float                          fSpeed;                               // 速度(米/秒, -1表示维持原来速度不变)
+        public float                          fThrottle;                            // 油门开度, 百分比数据,-1表示维持原来数值不变
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 设置返航点 ENUM_UAVCMD_DO_SET_HOME
+    public static class NET_UAVCMD_SET_HOME extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nLocation;                            // 返航点: 1 = 使用当前点, 0 - 设定点
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[12];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 立即停转电机 ENUM_UAVCMD_DO_FLIGHTTERMINATION
+    public static class NET_UAVCMD_FLIGHT_TERMINATION extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fActivated;                           // 触发值: 大于0.5 被触发
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 开始航点任务  ENUM_UAVCMD_MISSION_START
+    public static class NET_UAVCMD_MISSION_START extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nFirstItem;                           // 第一项 n, 起始点的任务号
+        public int                            nLastItem;                            // 最后一项 m, 终点的任务号
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 飞行任务暂停  ENUM_UAVCMD_MISSION_PAUSE
+    public static class NET_UAVCMD_MISSION_PAUSE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public byte[]                         byReserved = new byte[28];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 飞行任务停止  ENUM_UAVCMD_MISSION_STOP
+    public static class NET_UAVCMD_MISSION_STOP extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public byte[]                         byReserved = new byte[28];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 负载类型
+    public static class EM_LOAD_CONTROL_TYPE extends SdkStructure
+    {
+        public static final int EM_LOAD_CONTROL_COMMON               = 0;   // 通用设备 NET_LOAD_CONTROL_COMMON
+        public static final int EM_LOAD_CONTROL_PHOTO                = 1;   // 拍照设备 NET_LOAD_CONTROL_PHOTO
+        public static final int EM_LOAD_CONTROL_VIDEO                = 2;   // 视频设备 NET_LOAD_CONTROL_VIDEO
+        public static final int EM_LOAD_CONTROL_AUDIO                = 3;   // 音频设备 NET_LOAD_CONTROL_AUDIO
+        public static final int EM_LOAD_CONTROL_LIGHT                = 4;   // 灯光设备 NET_LOAD_CONTROL_LIGHT
+        public static final int EM_LOAD_CONTROL_RELAY                = 5;   // 继电器设备NET_LOAD_CONTROL_RELAY
+        public static final int EM_LOAD_CONTROL_TIMING               = 6;   // 定时拍照设备NET_LOAD_CONTROL_TIMING
+        public static final int EM_LOAD_CONTROL_DISTANCE             = 7;   // 定距拍照设备NET_LOAD_CONTROL_DISTANCE
+    }
+
+    // 通用设备
+    public static class NET_LOAD_CONTROL_COMMON extends SdkStructure
+    {
+        public byte[]                         byReserved = new byte[24];            // 实际请使用对应负载填入
+    }
+
+    // 拍照设备
+    public static class NET_LOAD_CONTROL_PHOTO extends SdkStructure
+    {
+        public float                          fCycle;                               // 拍照周期 单位s
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_MISSION_ITEM_COMMON
+    }
+
+    // 视频设备
+    public static class NET_LOAD_CONTROL_VIDEO extends SdkStructure
+    {
+        public int                            nSwitch;                              // 开关 0-结束录像 1-开始录像
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 音频设备
+    public static class NET_LOAD_CONTROL_AUDIO extends SdkStructure
+    {
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 灯光设备
+    public static class NET_LOAD_CONTROL_LIGHT extends SdkStructure
+    {
+        public int                            nSwitch;                              // 开关 0-关闭 1-打开
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 继电器设备
+    public static class NET_LOAD_CONTROL_RELAY extends SdkStructure
+    {
+        public int                            nSwitch;                              // 开关 0-关闭 1-打开
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 定时拍照设备
+    public static class NET_LOAD_CONTROL_TIMING extends SdkStructure
+    {
+        public int                            nInterval;                            // 拍照时间间隔 单位:s
+        public int                            nSwitch;                              // 起停控制 0-停止 1-启用
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 定距拍照设备
+    public static class NET_LOAD_CONTROL_DISTANCE extends SdkStructure
+    {
+        public int                            nInterval;                            // 拍照距离间隔 单位:m
+        public int                            nSwitch;                              // 起停控制 0-停止 1-启用
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_LOAD_CONTROL_COMMON
+    }
+
+    // 负载控制
+    public static class NET_UAVCMD_LOAD_CONTROL extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            emLoadType;                           // 负载类型,详见EM_LOAD_CONTROL_TYPE
+        public NET_LOAD_CONTROL_COMMON        stuLoadInfo;                          // 负载控制信息
+    }
+
+    // 电调解锁/锁定 ENUM_UAVCMD_COMPONENT_ARM_DISARM,
+    public static class NET_UAVCMD_COMPONENT_ARM_DISARM extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            bArm;                                 // TRUE - 解锁, FALSE - 锁定
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 重启飞行器 ENUM_UAVCMD_PREFLIGHT_REBOOT_SHUTDOWN
+    public static class NET_UAVCMD_REBOOT_SHUTDOWN extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nCtrlAutopilot;                       // 控制飞控 0 - 空 1 - 重启 2 - 关机
+        public int                            nCtrlOnboardComputer;                 // 控制机载计算机 0 - 空 1 - 机载计算机重启 2 - 机载计算机关机
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 继电器控制 ENUM_UAVCMD_DO_SET_RELAY
+    public static class NET_UAVCMD_SET_RELAY extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nRelayNumber;                         // 继电器号
+        public int                            nCtrlRelay;                           // 0=关,1=开。
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 继电器循环控制 ENUM_UAVCMD_DO_REPEAT_RELAY
+    public static class NET_UAVCMD_REPEAT_RELAY extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nRelayNumber;                         // 继电器号
+        public int                            nCycleCount;                          // 循环次数
+        public int                            nCycleTime;                           // 周期(十进制,秒)
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 电子围栏启用禁用 ENUM_UAVCMD_DO_FENCE_ENABLE
+    public static class NET_UAVCMD_FENCE_ENABLE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nEnableState;                         // 启用状态 0 - 禁用 1 - 启用 2 - 仅地面禁用
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 云台模式设置 ENUM_UAVCMD_MOUNT_CONFIGURE
+    public static class NET_UAVCMD_MOUNT_CONFIGURE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nMountMode;                           // 云台模式
+        // 0 - 预留; 1 - 水平模式, RC 不可控; 2 - UAV模式, RC 不可控 ;
+        // 3 - 航向锁定模式, RC可控; 4 - 预留; 5-垂直90度模式, RC不可控 6 - 航向跟随模式, RC可控
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 异步获取Home点位置 ENUM_UAVCMD_GET_HOME_POSITION
+    public static class NET_UAVCMD_GET_HOME_POSITION extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public byte[]                         byReserved = new byte[28];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 开始抓拍 ENUM_UAVCMD_IMAGE_START_CAPTURE Start image capture sequence
+    public static class NET_UAVCMD_IMAGE_START_CAPTURE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nDurationTime;                        // 连拍持续时间
+        public int                            nTatolNumber;                         // 抓拍数量 0 - 表示无限制
+        public int							  emResolution;                         // 分辨率为 CAPTURE_SIZE_NR时, 表示自定义。目前仅支持 CAPTURE_SIZE_VGA 和 CAPTURE_SIZE_720
+        public int                            nCustomWidth;                         // 自定义水平分辨率 单位: 像素 pixel
+        public int                            nCustomHeight;                        // 自定义垂直分辨率 单位: 像素 pixel
+        public int                            nCameraID;                            // 相机ID
+        public byte[]                         byReserved = new byte[4];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 分辨率枚举
+    public static class CAPTURE_SIZE extends SdkStructure
+    {
+        public static final int CAPTURE_SIZE_D1                      = 0;   // 704*576(PAL)  704*480(NTSC),兼容WWxHH,下同
+        public static final int CAPTURE_SIZE_HD1                     = 1;   // 352*576(PAL)  352*480(NTSC)
+        public static final int CAPTURE_SIZE_BCIF                    = 2;   // 704*288(PAL)  704*240(NTSC)
+        public static final int CAPTURE_SIZE_CIF                     = 3;   // 352*288(PAL)  352*240(NTSC)
+        public static final int CAPTURE_SIZE_QCIF                    = 4;   // 176*144(PAL)  176*120(NTSC)
+        public static final int CAPTURE_SIZE_VGA                     = 5;   // 640*480
+        public static final int CAPTURE_SIZE_QVGA                    = 6;   // 320*240
+        public static final int CAPTURE_SIZE_SVCD                    = 7;   // 480*480
+        public static final int CAPTURE_SIZE_QQVGA                   = 8;   // 160*128
+        public static final int CAPTURE_SIZE_SVGA                    = 9;   // 800*592
+        public static final int CAPTURE_SIZE_XVGA                    = 10;  // 1024*768
+        public static final int CAPTURE_SIZE_WXGA                    = 11;  // 1280*800
+        public static final int CAPTURE_SIZE_SXGA                    = 12;  // 1280*1024
+        public static final int CAPTURE_SIZE_WSXGA                   = 13;  // 1600*1024
+        public static final int CAPTURE_SIZE_UXGA                    = 14;  // 1600*1200
+        public static final int CAPTURE_SIZE_WUXGA                   = 15;  // 1920*1200
+        public static final int CAPTURE_SIZE_LTF                     = 16;  // 240*192,ND1
+        public static final int CAPTURE_SIZE_720                     = 17;  // 1280*720
+        public static final int CAPTURE_SIZE_1080                    = 18;  // 1920*1080
+        public static final int CAPTURE_SIZE_1_3M                    = 19;  // 1280*960
+        public static final int CAPTURE_SIZE_2M                      = 20;  // 1872*1408,2_5M
+        public static final int CAPTURE_SIZE_5M                      = 21;  // 3744*1408
+        public static final int CAPTURE_SIZE_3M                      = 22;  // 2048*1536
+        public static final int CAPTURE_SIZE_5_0M                    = 23;  // 2432*2050
+        public static final int CPTRUTE_SIZE_1_2M                    = 24;  // 1216*1024
+        public static final int CPTRUTE_SIZE_1408_1024               = 25;  // 1408*1024
+        public static final int CPTRUTE_SIZE_8M                      = 26;  // 3296*2472
+        public static final int CPTRUTE_SIZE_2560_1920               = 27;  // 2560*1920(5_1M)
+        public static final int CAPTURE_SIZE_960H                    = 28;  // 960*576(PAL) 960*480(NTSC)
+        public static final int CAPTURE_SIZE_960_720                 = 29;  // 960*720
+        public static final int CAPTURE_SIZE_NHD                     = 30;  // 640*360
+        public static final int CAPTURE_SIZE_QNHD                    = 31;  // 320*180
+        public static final int CAPTURE_SIZE_QQNHD                   = 32;  // 160*90
+        public static final int CAPTURE_SIZE_960_540                 = 33;  // 960*540
+        public static final int CAPTURE_SIZE_640_352                 = 34;  // 640*352
+        public static final int CAPTURE_SIZE_640_400                 = 35;  // 640*400
+        public static final int CAPTURE_SIZE_320_192                 = 36;  // 320*192
+        public static final int CAPTURE_SIZE_320_176                 = 37;  // 320*176
+        public static final int CAPTURE_SIZE_SVGA1                   = 38;  // 800*600
+        public static final int CAPTURE_SIZE_NR                      = 255;
+    }
+
+    // 停止抓拍 ENUM_UAVCMD_IMAGE_STOP_CAPTURE
+    public static class NET_UAVCMD_IMAGE_STOP_CAPTURE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nCameraID;                            // 相机ID
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 开始录像 ENUM_UAVCMD_VIDEO_START_CAPTURE
+    public static class NET_UAVCMD_VIDEO_START_CAPTURE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nCameraID;                            // 相机ID 0 - 表示所有相机
+        public int                            nFrameSpeed;                          // 帧率 单位: 秒 -1 表示: 最高帧率
+        public int                   		  emResolution;                         // 分辨率 为 CAPTURE_SIZE_NR时, 表示自定义。目前仅支持 CAPTURE_SIZE_VGA 和 CAPTURE_SIZE_720
+        public int                            nCustomWidth;                         // 自定义水平分辨率 单位: 像素 pixel
+        public int                            nCustomHeight;                        // 自定义垂直分辨率 单位: 像素 pixel
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 停止录像 ENUM_UAVCMD_VIDEO_STOP_CAPTURE
+    public static class NET_UAVCMD_VIDEO_STOP_CAPTURE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nCameraID;                            // 相机ID
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 航点 ENUM_UAVCMD_NAV_WAYPOINT
+    public static class NET_UAVCMD_NAV_WAYPOINT extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nHoldTime;                            // 驻留时间. 单位: 秒
+        public float                          fAcceptanceRadius;                    // 触发半径. 单位: 米. 进入此半径, 认为该航点结束.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 循环绕圈 ENUM_UAVCMD_NAV_LOITER_TURNS
+    public static class NET_UAVCMD_NAV_LOITER_TURNS extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nTurnNumber;                          // 圈数.
+        public float                          fRadius;                              // 盘旋半径(m), 正值顺时针, 负值逆时针.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 在航点盘旋N秒  ENUM_UAVCMD_NAV_LOITER_TIME
+    public static class NET_UAVCMD_NAV_LOITER_TIME extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nTime;                                // 时间. 单位: 秒
+        public float                          fRadius;                              // 盘旋半径(m), 正值顺时针, 负值逆时针.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[8];             // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 曲线航点 ENUM_UAVCMD_NAV_SPLINE_WAYPOINT
+    public static class NET_UAVCMD_NAV_SPLINE_WAYPOINT extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nHoldTime;                            // 驻留时间 Hold time in decimal seconds.
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[12];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 引导模式开关 ENUM_UAVCMD_NAV_GUIDED_ENABLE
+    public static class NET_UAVCMD_NAV_GUIDED_ENABLE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            bEnable;                              // 使能
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 跳转 ENUM_UAVCMD_DO_JUMP
+    public static class NET_UAVCMD_DO_JUMP extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nSequenceNumber;                      // 任务序号
+        public int                            nRepeatCount;                         // 重复次数
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 引导模式执行控制限制 ENUM_UAVCMD_DO_GUIDED_LIMITS
+    public static class NET_UAVCMD_DO_GUIDED_LIMITS extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nMaxTime;                             // 最大时间. 单位: 秒
+        public float                          fMinAltitude;                         // 最低限制高度. 单位: 米
+        public float                          fMaxAltitude;                         // 最大限制高度. 单位: 米
+        public float                          fHorizontalDistance;                  // 水平限制距离. 单位: 米
+        public byte[]                         byReserved = new byte[12];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 动作延时 ENUM_UAVCMD_CONDITION_DELAY
+    public static class NET_UAVCMD_CONDITION_DELAY extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            nDelay;                               // 延迟时间. 单位: 秒
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 动作距离 ENUM_UAVCMD_CONDITION_DISTANCE
+    public static class NET_UAVCMD_CONDITION_DISTANCE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fDistance;                            // 距离. 单位: 米
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 无人机兴趣点类型
+    public static class ENUM_UAV_ROI_MODE extends SdkStructure
+    {
+        public static final int ENUM_UAV_ROI_MODE_NONE               = 0;   // 无兴趣点
+        public static final int ENUM_UAV_ROI_MODE_WPNEXT             = 1;   // 面向下一航点
+        public static final int ENUM_UAV_ROI_MODE_WPINDEX            = 2;   // 面向指定兴趣点
+        public static final int ENUM_UAV_ROI_MODE_LOCATION           = 3;   // 当前航点
+    }
+
+    // 相机兴趣点 ENUM_UAVCMD_DO_SET_ROI
+    public static class NET_UAVCMD_DO_SET_ROI extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            emROIMode;                            // 兴趣点模式,详见ENUM_UAV_ROI_MODE
+        public int                            nId;                                  // 指定航点或编号, 根据emROIMode而定
+        public int                            nROIIndex;                            // ROI 编号
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 相机控制 ENUM_UAVCMD_DO_DIGICAM_CONTROL
+    public static class NET_UAVCMD_DO_DIGICAM_CONTROL extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public byte[]                         byReserved = new byte[28];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 云台角度控制 ENUM_UAVCMD_DO_MOUNT_CONTROL
+    public static class NET_UAVCMD_DO_MOUNT_CONTROL extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fPitchAngle;                          // 俯仰角, 单位: 度. 0: 一键回中, -90 : 一键置90度
+        public float                          fYawAngle;                            // 航向角, 单位: 度. 0: 一键回中, -90 : 一键置90度
+        public byte[]                         byReserved = new byte[20];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 聚焦距离 ENUM_UAVCMD_DO_SET_CAM_TRIGG_DIST
+    public static class NET_UAVCMD_DO_SET_CAM_TRIGG_DIST extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fDistance;                            // 聚焦距离
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 设置模式 ENUM_UAVCMD_SET_MODE
+    public static class NET_UAVCMD_SET_MODE extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public int                            emUAVMode;                            // 飞行模式,详见ENUM_UAV_MODE
+        public byte[]                         byReserved = new byte[24];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 设定引导点 ENUM_UAVCMD_NAV_GUIDED
+    public static class NET_UAVCMD_NAV_GUIDED extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 通用信息
+        public float                          fLatitude;                            // 纬度
+        public float                          fLongitude;                           // 经度
+        public float                          fAltitude;                            // 高度
+        public byte[]                         byReserved = new byte[16];            // 对齐 NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 航点命令对应的通用参数, 需要转换成 ENUM_UAVCMD_TYPE 对应的结构体
+    public static class NET_UAVCMD_PARAM_BUFFER extends SdkStructure
+    {
+        public NET_UAVCMD_COMMON              stuCommon;                            // 命令通用信息
+        public byte[]                         byParamBuffer = new byte[28];         // 参数缓存
+    }
+
+    // 摇杆模拟:输入参数
+    public static class NET_UAVCMD_RC_CHANNELS_OVERRIDE extends SdkStructure
+    {
+        public short                          nChan1;                               // 滚转角,范围[1091, 1937],如果未改变,填 UINT16_MAX
+        public short                          nChan2;                               // 俯仰角,范围[1091, 1937],如果未改变,填 UINT16_MAX
+        public short                          nChan3;                               // 油门,范围[1091, 1937],如果未改变,填 UINT16_MAX
+        public short                          nChan4;                               // 偏航角,[1091, 1937],如果未改变,填 UINT16_MAX
+        public short                          nChan5;                               // 模式切换:取值1091,1514,1937,如果未改变,填 UINT16_MAX
+        public short                          nChan6;                               // 云台航向,范围[1091,1937],如果未改变,填 UINT16_MAX
+        public short                          nChan7;                               // 云台俯仰,范围[1091,1937],如果未改变,填 UINT16_MAX
+        public short                          nChan8;                               // 起落架,取值1091,1937,如果未改变,填 UINT16_MAX
+        public short                          nChan9;                               // 云台模式, 取值1091,1514,1937,如果未改变,填 UINT16_MAX
+        public short                          nChan10;                              // 一键返航,取值1091,1937,如果未改变,填 UINT16_MAX
+        public short                          nChan11;                              // 一键起降,取值1091,1937,如果未改变,填 UINT16_MAX
+        public short                          nChan12;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan13;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan14;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan15;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan16;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan17;                              // 当前没有用到,填 UINT16_MAX
+        public short                          nChan18;                              // 当前没有用到,填 UINT16_MAX
+        public byte                           nTargetSystem;                        // 目标系统
+        public byte                           nTargetComponent;                     // 目标组件
+        public byte[]                         szReserved = new byte[6];             // 保留字段,对齐NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 心跳结构体
+    public static class NET_UAVCMD_HEART_BEAT extends SdkStructure
+    {
+        public int                            nCustomMode;                          // 自动驾驶仪用户自定义模式
+        public byte                           nType;                                // MAV 类型
+        public byte                           nAutoPilot;                           // 自动驾驶仪类型
+        public byte                           nBaseMode;                            // 系统模式
+        public byte                           nSystemStatus;                        // 系统状态值
+        public byte                           nMavlinkVersion;                      // MAVLink 版本信息
+        public byte[]                         szReserved = new byte[35];            // 保留字段,对齐NET_UAVCMD_PARAM_BUFFER
+    }
+
+    // 订阅无人机实时消息 pstuInParam 和 pstuOutParam 由设备申请释放
+    public LLong CLIENT_AttachUAVInfo(LLong lLoginID, NET_IN_ATTACH_UAVINFO pstuInParam, NET_OUT_ATTACH_UAVINFO pstuOutParam, int nWaitTime);
+
+    // 退订无人机实时消息 lAttachHandle 是 CLIENT_AttachUAVInfo 返回值
+    public boolean CLIENT_DetachUAVInfo(LLong lAttachHandle);
+
+    // 警戒区入侵方向
+    public static class NET_CROSSREGION_DIRECTION_INFO extends SdkStructure
+    {
+        public static final int EM_CROSSREGION_DIRECTION_UNKNOW      = 0;
+        public static final int EM_CROSSREGION_DIRECTION_ENTER       = 1;   // 进入
+        public static final int EM_CROSSREGION_DIRECTION_LEAVE       = 2;   // 离开
+        public static final int EM_CROSSREGION_DIRECTION_APPEAR      = 3;   // 出现
+        public static final int EM_CROSSREGION_DIRECTION_DISAPPEAR   = 4;   // 消失
+    }
+
+    // 电源类型
+    public static class EM_POWER_TYPE extends SdkStructure
+    {
+        public static final int EM_POWER_TYPE_MAIN                   = 0;   // 主电源
+        public static final int EM_POWER_TYPE_BACKUP                 = 1;   // 备用电源
+    }
+
+    // 电源故障事件类型
+    public static class EM_POWERFAULT_EVENT_TYPE extends SdkStructure
+    {
+        public static final int EM_POWERFAULT_EVENT_UNKNOWN          = -1;  // 未知
+        public static final int EM_POWERFAULT_EVENT_LOST             = 0;   // 掉电、电池不在位
+        public static final int EM_POWERFAULT_EVENT_LOST_ADAPTER     = 1;   // 适配器不在位
+        public static final int EM_POWERFAULT_EVENT_LOW_BATTERY      = 2;   // 电池欠压
+        public static final int EM_POWERFAULT_EVENT_LOW_ADAPTER      = 3;   // 适配器欠压
+    }
+
+    // 电源故障事件
+    public static class ALARM_POWERFAULT_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            emPowerType;                          // 电源类型,详见EM_POWER_TYPE
+        public int                            emPowerFaultEvent;                    // 电源故障事件,详见EM_POWERFAULT_EVENT_TYPE
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public int                            nAction;                              // 0:开始 1:停止
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public ALARM_POWERFAULT_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 防拆报警事件
+    public static class ALARM_CHASSISINTRUDED_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nAction;                              // 0:开始 1:停止
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szReaderID = new byte[NET_COMMON_STRING_32];  // 读卡器ID
+        public int                            nEventID;                             // 事件ID
+        public byte[]                         szSN = new byte[32];                  // 无线设备序列号
+        public int				          bRealUTC;							// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX                    RealUTC;                            // 事件发生的时间(标准UTC)
+        public int                            emDevType;                          //设备类型,参考EM_ALARM_CHASSISINTRUDED_DEV_TYPE
+        public ALARM_CHASSISINTRUDED_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 传感器感应方式枚举类型
+    public static class NET_SENSE_METHOD extends SdkStructure
+    {
+        public static final int NET_SENSE_UNKNOWN                    = -1;  // 未知类型
+        public static final int NET_SENSE_DOOR                       = 0;   // 门磁
+        public static final int NET_SENSE_PASSIVEINFRA               = 1;   // 被动红外
+        public static final int NET_SENSE_GAS                        = 2;   // 气感
+        public static final int NET_SENSE_SMOKING                    = 3;   // 烟感
+        public static final int NET_SENSE_WATER                      = 4;   // 水感
+        public static final int NET_SENSE_ACTIVEFRA                  = 5;   // 主动红外
+        public static final int NET_SENSE_GLASS                      = 6;   // 玻璃破碎
+        public static final int NET_SENSE_EMERGENCYSWITCH            = 7;   // 紧急开关
+        public static final int NET_SENSE_SHOCK                      = 8;   // 震动
+        public static final int NET_SENSE_DOUBLEMETHOD               = 9;   // 双鉴(红外+微波)
+        public static final int NET_SENSE_THREEMETHOD                = 10;  // 三技术
+        public static final int NET_SENSE_TEMP                       = 11;  // 温度
+        public static final int NET_SENSE_HUMIDITY                   = 12;  // 湿度
+        public static final int NET_SENSE_WIND                       = 13;  // 风速
+        public static final int NET_SENSE_CALLBUTTON                 = 14;  // 呼叫按钮
+        public static final int NET_SENSE_GASPRESSURE                = 15;  // 气体压力
+        public static final int NET_SENSE_GASCONCENTRATION           = 16;  // 燃气浓度
+        public static final int NET_SENSE_GASFLOW                    = 17;  // 气体流量
+        public static final int NET_SENSE_OTHER                      = 18;  // 其他
+        public static final int NET_SENSE_OIL                        = 19;  // 油量检测,汽油、柴油等车辆用油检测
+        public static final int NET_SENSE_MILEAGE                    = 20;  // 里程数检测
+        public static final int NET_SENSE_URGENCYBUTTON              = 21;  // 紧急按钮
+        public static final int NET_SENSE_STEAL                      = 22;  // 盗窃
+        public static final int NET_SENSE_PERIMETER                  = 23;  // 周界
+        public static final int NET_SENSE_PREVENTREMOVE              = 24;  // 防拆
+        public static final int NET_SENSE_DOORBELL                   = 25;  // 门铃
+        public static final int NET_SENSE_ALTERVOLT                  = 26;  // 交流电压传感器
+        public static final int NET_SENSE_DIRECTVOLT                 = 27;  // 直流电压传感器
+        public static final int NET_SENSE_ALTERCUR                   = 28;  // 交流电流传感器
+        public static final int NET_SENSE_DIRECTCUR                  = 29;  // 直流电流传感器
+        public static final int NET_SENSE_RSUGENERAL                 = 30;  // 高新兴通用模拟量	4~20mA或0~5V
+        public static final int NET_SENSE_RSUDOOR                    = 31;  // 高新兴门禁感应
+        public static final int NET_SENSE_RSUPOWEROFF                = 32;  // 高新兴断电感应
+        public static final int NET_SENSE_TEMP1500                   = 33;  // 1500温度传感器
+        public static final int NET_SENSE_TEMPDS18B20                = 34;  // DS18B20温度传感器
+        public static final int NET_SENSE_HUMIDITY1500               = 35;  // 1500湿度传感器
+        public static final int NET_SENSE_INFRARED                   = 36;  // 红外报警
+        public static final int NET_SENSE_FIREALARM                  = 37;  // 火警
+        public static final int NET_SENSE_CO2                        = 38;  // CO2浓度检测,典型值:0~5000ppm
+        public static final int NET_SNESE_SOUND                      = 39;  // 噪音检测,典型值:30~130dB
+        public static final int NET_SENSE_PM25                       = 40;  // PM2.5检测,典型值:0~1000ug/m3
+        public static final int NET_SENSE_SF6                        = 41;  // SF6浓度检测,典型值:0~3000ppm
+        public static final int NET_SENSE_O3                         = 42;  // 臭氧浓度检测,典型值:0~100ppm
+        public static final int NET_SENSE_AMBIENTLIGHT               = 43;  // 环境光照检测,典型值:0~20000Lux
+        public static final int NET_SENSE_SIGNINBUTTON               = 44;  // 签入按钮
+        public static final int NET_SENSE_LIQUIDLEVEL                = 45;  // 液位
+        public static final int NET_SENSE_DISTANCE                   = 46;  // 测距
+        public static final int NET_SENSE_WATERFLOW                  = 47;  // 水流量
+
+
+
+        public static final int NET_SENSE_NUM                        = 48;  // 枚举类型总数
+    }
+
+    // 防区类型
+    public static class NET_DEFENCEAREA_TYPE extends SdkStructure
+    {
+        public static final int NET_DEFENCEAREA_TYPE_UNKNOWN         = 0;   // 未知类型防区
+        public static final int NET_DEFENCEAREA_TYPE_ALARM           = 1;   // 开关量防区
+    }
+
+    // 旁路状态类型
+    public static class NET_BYPASS_MODE extends SdkStructure
+    {
+        public static final int NET_BYPASS_MODE_UNKNOW               = 0;   // 未知状态
+        public static final int NET_BYPASS_MODE_BYPASS               = 1;   // 旁路
+        public static final int NET_BYPASS_MODE_NORMAL               = 2;   // 正常
+        public static final int NET_BYPASS_MODE_ISOLATED             = 3;   // 隔离
+    }
+
+    // 旁路状态变化事件的信息
+    public static class ALARM_BYPASSMODE_CHANGE_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 通道号
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public int                            emDefenceType;                        // 防区类型,详见NET_DEFENCEAREA_TYPE
+        public int                            nIsExtend;                            // 是否为扩展(通道)防区, 1:扩展通道, 0: 非扩展通道
+        public int                            emMode;                               // 变化后的模式,详见NET_BYPASS_MODE
+        public int                            dwID;                                 // ID号, 遥控器编号或键盘地址, emTriggerMode为NET_EM_TRIGGER_MODE_NET类型时为0
+        public int                            emTriggerMode;                        // 触发方式,详见NET_EM_TRIGGER_MODE
+
+        public ALARM_BYPASSMODE_CHANGE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 报警输入源事件详情(只要有输入就会产生改事件,不论防区当前的模式,无法屏蔽)
+    public static class ALARM_INPUT_SOURCE_SIGNAL_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 通道号
+        public int                            nAction;                              // 0:开始 1:停止
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+
+        public ALARM_INPUT_SOURCE_SIGNAL_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 门禁状态类型
+    public static class NET_ACCESS_CTL_STATUS_TYPE extends SdkStructure
+    {
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_UNKNOWN   = 0;
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_OPEN      = 1;   // 开门
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_CLOSE     = 2;   // 关门
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_ABNORMAL  = 3;   // 异常
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_FAKELOCKED = 4;   // 假锁
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_CLOSEALWAYS = 5;   // 常闭
+        public static final int NET_ACCESS_CTL_STATUS_TYPE_OPENALWAYS = 6;   // 常开
+    }
+
+    // 多人组合开门事件(对应NET_ALARM_OPENDOORGROUP类型)
+    public static class ALARM_OPEN_DOOR_GROUP_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 门通道号(从0开始)
+        public NET_TIME                       stuTime;                              // 事件时间
+
+        public ALARM_OPEN_DOOR_GROUP_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 获取信息事件(对应NET_ALARM_FINGER_PRINT类型)
+    public static class ALARM_CAPTURE_FINGER_PRINT_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 门通道号(从0开始)
+        public NET_TIME                       stuTime;                              // 事件时间
+        public byte[]                         szReaderID = new byte[NET_COMMON_STRING_32];  // 门读卡器ID
+        public int                            nPacketLen;                           // 单个信息数据包长度
+        public int                            nPacketNum;                           // 信息数据包个数
+        public Pointer                        szFingerPrintInfo;                    // 信息数据(数据总长度即nPacketLen*nPacketNum),指向byte
+        public int                            bCollectResult;                       // 采集结果
+        public byte[]			              szCardNo=new byte[32];				// 信息所属人员卡号
+        public byte[]			              szUserID=new byte[32];				// 信息所属人员ID
+
+        public ALARM_CAPTURE_FINGER_PRINT_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 子系统状态类型
+    public static class EM_SUBSYSTEM_STATE_TYPE extends SdkStructure
+    {
+        public static final int EM_SUBSYSTEM_STATE_UNKNOWN           = 0;   // 未知
+        public static final int EM_SUBSYSTEM_STATE_ACTIVE            = 1;   // 已激活
+        public static final int EM_SUBSYSTEM_STATE_INACTIVE          = 2;   // 未激活
+    }
+
+    // 子系统状态改变事件
+    public static class ALARM_SUBSYSTEM_STATE_CHANGE_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 子系统序号(从0开始)
+        public NET_TIME                       stuTime;                              // 事件发生的时间
+        public int                            emState;                              // 变化后的状态,详见EM_SUBSYSTEM_STATE_TYPE
+
+        public ALARM_SUBSYSTEM_STATE_CHANGE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // PSTN掉线事件
+    public static class ALARM_PSTN_BREAK_LINE_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 电话线序号(从0开始)
+        public int                            nAction;                              // 0:开始 1:停止
+        public NET_TIME                       stuTime;                              // 事件发生的时间
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public ALARM_PSTN_BREAK_LINE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 反复进入事件详细信息
+    public static class ALARM_ACCESS_CTL_REPEAT_ENTER_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nDoor;                                // 门通道号
+        public byte[]                         szDoorName = new byte[NET_MAX_DOORNAME_LEN];  // 门禁名称
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public byte[]                         szCardNo = new byte[NET_MAX_CARDNO_LEN];  // 卡号
+        public int                            nEventID;                             // 事件ID
+
+        public ALARM_ACCESS_CTL_REPEAT_ENTER_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 胁迫卡刷卡事件详细信息
+    public static class ALARM_ACCESS_CTL_DURESS_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nDoor;                                // 门通道号
+        public byte[]                         szDoorName = new byte[NET_MAX_DOORNAME_LEN];  // 门禁名称
+        public byte[]                         szCardNo = new byte[NET_MAX_CARDNO_LEN];  // 胁迫卡号
+        public NET_TIME                       stuTime;                              // 报警事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public byte[]                         szSN = new byte[32];                  // 无线设备序列号
+        public byte[]			              szUserID=new byte[12];				// 用户ID
+        public boolean			              bRealUTC;								// RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+        public NET_TIME_EX                    RealUTC;								// 事件发生的时间(标准UTC)
+    	public byte[]			              szUserIDEx= new byte[32];				// 用户ID扩展
+        public ALARM_ACCESS_CTL_DURESS_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 区域检测事件动作
+    public static class NET_CROSSREGION_ACTION_INFO extends SdkStructure
+    {
+        public static final int EM_CROSSREGION_ACTION_UNKNOW         = 0;
+        public static final int EM_CROSSREGION_ACTION_INSIDE         = 1;   // 在区域内
+        public static final int EM_CROSSREGION_ACTION_CROSS          = 2;   // 穿越区域
+        public static final int EM_CROSSREGION_ACTION_APPEAR         = 3;   // 出现
+        public static final int EM_CROSSREGION_ACTION_DISAPPEAR      = 4;   // 消失
+    }
+
+    // 警戒线入侵方向
+    public static class NET_CROSSLINE_DIRECTION_INFO extends SdkStructure
+    {
+        public static final int EM_CROSSLINE_DIRECTION_UNKNOW        = 0;
+        public static final int EM_CROSSLINE_DIRECTION_LEFT2RIGHT    = 1;   // 左到右
+        public static final int EM_CROSSLINE_DIRECTION_RIGHT2LEFT    = 2;   // 右到左
+        public static final int EM_CROSSLINE_DIRECTION_ANY           = 3;
+    }
+
+    // 拌线入侵事件(对应事件 NET_EVENT_CROSSLINE_DETECTION)
+    public static class ALARM_EVENT_CROSSLINE_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 通道号
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public int                            nEventAction;                         // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+
+        public int                            emCrossDirection;                     // 入侵方向,详见NET_CROSSLINE_DIRECTION_INFO
+        public int                            nOccurrenceCount;                     // 规则被触发生次数
+        public int                            nLevel;                               // 事件级别,GB30147需求项
+        public int                            bIsObjectInfo;                        // 是否检测到物体信息
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体信息
+        public int                            nRetObjectNum;                        // 实际返回多个检测到的物体信息
+        public NET_MSG_OBJECT[]               stuObjects = new NET_MSG_OBJECT[MAX_TARGET_OBJECT_NUM];  // 多个检测到的物体信息
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体        
+
+        public ALARM_EVENT_CROSSLINE_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuObjects.length; ++i) {
+                stuObjects[i] = new NET_MSG_OBJECT();
+            }
+        }
+    }
+
+    //区域入侵事件(对应事件 NET_EVENT_CROSSREGION_DETECTION)
+    public static class ALARM_EVENT_CROSSREGION_INFO extends SdkStructure
+    {
+        public int                            dwSize;
+        public int                            nChannelID;                           // 通道号
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public int                            nEventAction;                         // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+
+        public int                            emDirection;                          // 警戒区入侵方向,详见NET_CROSSREGION_DIRECTION_INFO
+        public int                            emActionType;                         // 警戒区检测动作类型,详见NET_CROSSREGION_ACTION_INFO
+        public int                            nOccurrenceCount;                     // 规则被触发生次数
+        public int                            nLevel;                               // 事件级别,GB30147需求项
+        public byte[]                         szName = new byte[NET_COMMON_STRING_128];  // 名称
+        public int                            bIsObjectInfo;                        // 是否检测到物体信息
+        public NET_MSG_OBJECT                 stuObject;                            // 检测到的物体信息
+        public int                            nRetObjectNum;                        // 实际返回多个检测到的物体信息
+        public NET_MSG_OBJECT[]               stuObjects = new NET_MSG_OBJECT[MAX_TARGET_OBJECT_NUM];  // 多个检测到的物体信息
+        public NET_EVENT_INFO_EXTEND          stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    	public byte[]						  szMac = new byte[32];					// 事件触发源的Mac地址
+    	public byte[]						  szReserved = new byte[1024];               // 预留字节
+
+        public ALARM_EVENT_CROSSREGION_INFO()
+        {
+            this.dwSize = this.size();
+
+            for (int i = 0; i < stuObjects.length; ++i) {
+                stuObjects[i] = new NET_MSG_OBJECT();
+            }
+        }
+    }
+
+    // 探测器状态
+    public static class EM_SENSOR_ABNORMAL_STATUS extends SdkStructure
+    {
+        public static final int NET_SENSOR_ABNORMAL_STATUS_UNKNOWN   = 0;
+        public static final int NET_SENSOR_ABNORMAL_STATUS_SHORT     = 1;   // 短路
+        public static final int NET_SENSOR_ABNORMAL_STATUS_BREAK     = 2;   // 断路
+        public static final int NET_SENSOR_ABNORMAL_STATUS_INTRIDED  = 3;   // 被拆开
+    }
+
+    //事件类型(NET_ALARM_SENSOR_ABNORMAL) 探测器状态异常报警
+    public static class ALARM_SENSOR_ABNORMAL_INFO extends SdkStructure
+    {
+        public int                            nAction;                              // 0:开始 1:停止
+        public int                            nChannelID;                           // 视频通道号
+        public NET_TIME_EX                    stuTime;                              // 事件发生的时间
+        public int                            emStatus;                             // 探测器状态,详见EM_SENSOR_ABNORMAL_STATUS
+        public int                            emSenseMethod;                        // SenseMethod, 感应方式,参见具体枚举定义NET_SENSE_METHOD
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]                         byReserved = new byte[124];           // 预留字段
+    }
+
+    // 防区布防撤防状态类型
+    public static class EM_DEFENCEMODE extends SdkStructure
+    {
+        public static final int EM_DEFENCEMODE_UNKNOWN               = 0;   // "unknown"   未知
+        public static final int EM_DEFENCEMODE_ARMING                = 1;   // "Arming"    布防
+        public static final int EM_DEFENCEMODE_DISARMING             = 2;   // "Disarming" 撤防
+    }
+
+    //触发方式
+    public static class EM_ARMMODECHANGE_TRIGGERMODE extends SdkStructure
+    {
+        public static final int EM_ARMMODECHANGE_TRIGGERMODE_UNKNOWN = 0;   // 未知
+        public static final int EM_ARMMODECHANGE_TRIGGERMODE_NET     = 1;   // 网络用户
+        public static final int EM_ARMMODECHANGE_TRIGGERMODE_KEYBOARD = 2;   // 键盘
+        public static final int EM_ARMMODECHANGE_TRIGGERMODE_REMOTECONTROL = 3;   // 遥控器
+    }
+
+    //防区类型
+    public static class EM_ARMMODECHANGE_DEFENCEAREATYPE extends SdkStructure
+    {
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_UNKNOWN = 0;   // 未知
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_INTIME = 1;   // 及时
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_DELAY = 2;   // 延时
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAY = 3;   // 全天
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_FOLLOW = 4;   // 跟随
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_MEDICAL = 5;   // 医疗紧急
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_PANIC = 6;   // 恐慌
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_FIRE = 7;   // 火警
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAYSOUND = 8;   // 全天有声
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_FULLDAYSILENT = 9;   // 全天无声
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_ENTRANCE1 = 10;  // 出入防区1
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_ENTRANCE2 = 11;  // 出入防区2
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_INSIDE = 12;  // 内部防区
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_OUTSIDE = 13;  // 外部防区
+        public static final int EM_ARMMODECHANGE_DEFENCEAREATYPE_PEOPLEDETECT = 14;  // 人员检测
+    }
+
+    // 事件类型NET_ALARM_DEFENCE_ARMMODECHANGE (防区布撤防状态改变事件)
+    public static class ALARM_DEFENCE_ARMMODECHANGE_INFO extends SdkStructure
+    {
+        public int                            emDefenceStatus;                      // 布撤防状态,详见EM_DEFENCEMODE
+        public int                            nDefenceID;                           // 防区号
+        public NET_TIME_EX                    stuTime;                              // 时间
+
+        public int                            emTriggerMode;                        // 触发方式,详见EM_ARMMODECHANGE_TRIGGERMODE
+        public int                            emDefenceAreaType;                    // 防区类型,详见EM_ARMMODECHANGE_DEFENCEAREATYPE
+        public int                            nID;                                  // 遥控器编号或键盘地址
+        public int                            nAlarmSubSystem;                      // 子系统号
+        public byte[]                         szName = new byte[64];                // 防区名称
+        public byte[]                         szNetClientAddr = new byte[64];       // 用户IP或网络地址
+
+        public byte[]                         reserved = new byte[368];             // 预留
+    }
+
+    // 工作状态
+    public static class EM_SUBSYSTEMMODE extends SdkStructure
+    {
+        public static final int EM_SUBSYSTEMMODE_UNKNOWN             = 0;   // "unknown"   未知
+        public static final int EM_SUBSYSTEMMODE_ACTIVE              = 1;   // "active"    激活
+        public static final int EM_SUBSYSTEMMODE_INACTIVE            = 2;   // "inactive"  未激活
+        public static final int EM_SUBSYSTEMMODE_UNDISTRIBUTED       = 3;   // "undistributed" 未分配
+        public static final int EM_SUBSYSTEMMODE_ALLARMING           = 4;   // "AllArming" 全部布防
+        public static final int EM_SUBSYSTEMMODE_ALLDISARMING        = 5;   // "AllDisarming" 全部撤防
+        public static final int EM_SUBSYSTEMMODE_PARTARMING          = 6;   // "PartArming" 部分布防
+    }
+
+    //触发方式
+    public static class EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE extends SdkStructure
+    {
+        public static final int EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_UNKNOWN = 0;   // 未知
+        public static final int EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_NET = 1;   // 网络用户
+        public static final int EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_KEYBOARD = 2;   // 键盘
+        public static final int EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE_REMOTECONTROL = 3;   // 遥控器
+    }
+
+    // 事件类型 NET_ALARM_SUBSYSTEM_ARMMODECHANGE (子系统布撤防状态改变事件)
+    public static class ALARM_SUBSYSTEM_ARMMODECHANGE_INFO extends SdkStructure
+    {
+        public int                            emSubsystemMode;                      // 布撤防状态 (只支持AllArming,AllDisarming,PartArming三种状态),详见EM_SUBSYSTEMMODE
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public byte[]                         szSubSystemname = new byte[64];       // 子系统名称
+        public int                            nSubSystemID;                         // 子系统编号
+
+        public int                            emTriggerMode;                        // 触发方式,详见EM_SUBSYSTEM_ARMMODECHANGE_TRIGGERMODE
+        public int                            nID;                                  // 键盘或遥控器地址
+        public byte[]                         szNetClientAddr = new byte[64];       // 网络用户IP地址或网络地址
+
+        public byte[]                         reserved = new byte[440];             // 预留
+    }
+
+    // 立体视觉站立事件区域内人员列表
+    public static class MAN_STAND_LIST_INFO extends SdkStructure
+    {
+        public NET_POINT                      stuCenter;                            // 站立人员所在位置,8192坐标系
+        public byte[]                szSerialUUID=new byte[22];   // 智能物体全局唯一物体标识
+        // 有效数据位21位,包含’\0’
+        // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+        // 中间14位YYYYMMDDhhmmss:年月日时分秒
+        // 后5位%u%u%u%u%u:物体ID,如00001
+        public DH_RECT             stuBoundingBox;     // 包围盒
+        public byte[]              szReversed = new byte[90];           // 保留字节
+    }
+
+    // 事件类型EVENT_IVS_MAN_STAND_DETECTION(立体视觉站立事件)对应数据块描述信息
+    public static class DEV_EVENT_MANSTAND_DETECTION_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public byte[]                         szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public byte[]                         bReserved1 = new byte[4];             // 字节对齐,非保留字节
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        ///////////////////////////////以上为公共字段,除nChannelID外的其他字段是为了预留公共字段空间//////////////////////////////
+        public int                            nAction;                              // 0:脉冲 1:开始 2:停止
+        public int                            nManListCount;                        // 区域人员列表数量
+        public MAN_STAND_LIST_INFO[]          stuManList = new MAN_STAND_LIST_INFO[MAX_MAN_LIST_COUNT];  // 区域内人员列表
+        public EVENT_INTELLI_COMM_INFO        stuIntelliCommInfo;                   // 智能事件公共信息
+        public byte[]                         szReversed = new byte[2048];          // 保留字节
+
+        public DEV_EVENT_MANSTAND_DETECTION_INFO()
+        {
+            for (int i = 0; i < stuManList.length; ++i) {
+                stuManList[i] = new MAN_STAND_LIST_INFO();
+            }
+        }
+    }
+
+    // 课堂行为动作类型
+    public static class EM_CLASSROOM_ACTION extends SdkStructure
+    {
+        public static final int EM_CLASSROOM_ACTION_UNKNOWN          = 0;   // 未知
+        public static final int EM_CLASSROOM_ACTION_PLAY_PHONE       = 1;   // 玩手机
+        public static final int EM_CLASSROOM_ACTION_HANDSUP          = 2;   // 举手
+        public static final int EM_CLASSROOM_ACTION_LISTEN           = 3;   // 听讲
+        public static final int EM_CLASSROOM_ACTION_READ_WRITE       = 4;   // 读写
+        public static final int EM_CLASSROOM_ACTION_TABLE            = 5;   // 趴桌子
+    }
+
+    // 事件类型 EVENT_IVS_CLASSROOM_BEHAVIOR (课堂行为分析事件) 对应的数据块描述信息
+    public static class DEV_EVENT_CLASSROOM_BEHAVIOR_INFO extends SdkStructure
+    {
+        public int                            nChannelID;                           // 通道号
+        public int                            nAction;                              // 0:脉冲 1:开始 2:停止
+        public byte[]                         szName = new byte[128];               // 事件名称
+        public double                         PTS;                                  // 时间戳(单位是毫秒)
+        public NET_TIME_EX                    UTC;                                  // 事件发生的时间
+        public int                            nEventID;                             // 事件ID
+        public NET_EVENT_FILE_INFO            stuFileInfo;                          // 事件对应文件信息
+
+        public int                            emClassType;                          // 智能事件所属大类,详见EM_SCENE_CLASS_TYPE
+        public int                            nRuleID;                              // 智能事件规则编号,用于标示哪个规则触发的事件
+        public int                            nObjectID;                            // 物体ID
+        public int                            nSequence;                            // 帧序号
+        public int                            emClassroomAction;                    // 课堂行为动作,详见EM_CLASSROOM_ACTION
+        public NET_POINT[]                    stuDetectRegion = new NET_POINT[NET_MAX_DETECT_REGION_NUM];  // 规则检测区域
+        public int                            nDetectRegionNum;                     // 规则检测区域顶点数
+        public int                            nPresetID;                            // 事件触发的预置点号
+        public byte[]                         szPresetName = new byte[64];          // 事件触发的预置点名称
+        public byte[]                         szSerialUUID = new byte[22];          // 智能物体全局唯一物体标识
+        // 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他;
+        //中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001
+        public byte[]                         byReserved1 = new byte[2];            // 用于字节对齐
+        public NET_RECT                       stuBoundingBox;                       // 包围盒
+        public NET_INTELLIGENCE_IMAGE_INFO    stuSceneImage;                        // 人脸底图信息
+        public NET_INTELLIGENCE_IMAGE_INFO    stuFaceImage;                         // 人脸小图信息
+        public NET_FACE_ATTRIBUTE_EX          stuFaceAttributes;                    // 人脸属性
+        public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                  nImageInfoNum;                                  //图片信息个数
+        public byte                 byReserved[] = new byte[1024];                   //预留字节
+
+        public DEV_EVENT_CLASSROOM_BEHAVIOR_INFO()
+        {
+            for (int i = 0; i < stuDetectRegion.length; ++i) {
+                stuDetectRegion[i] = new NET_POINT();
+            }
+        }
+    }
+
+    // 抓拍类型
+    public static class NET_EM_SNAP_SHOT_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_SNAP_SHOT_TYPE_UNKNOWN        = 0;   // 未知
+        public static final int NET_EM_SNAP_SHOT_TYPE_NEAR           = 1;   // 近景
+        public static final int NET_EM_SNAP_SHOT_TYPE_MEDIUM         = 2;   // 中景
+        public static final int NET_EM_SNAP_SHOT_TYPE_FAR            = 3;   // 远景
+        public static final int NET_EM_SNAP_SHOT_TYPE_FEATURE        = 4;   // 车牌特写
+    }
+
+    // 抓拍间隔模式
+    public static class NET_EM_SNAP_SHOT_INTERVAL_MODE extends SdkStructure
+    {
+        public static final int NET_EM_SNAP_SHOT_INTERVAL_UNKNOWN    = 0;   // 未知
+        public static final int NET_EM_SNAP_SHOT_INTERVAL_TIME       = 1;   // 按固定时间间隔,该模式下nSingleInterval有效
+        public static final int NET_EM_SNAP_SHOT_INTERVAL_FRAMEADAPTSPEED = 2;   // 速度自适应帧间隔
+        public static final int NET_EM_SNAP_SHOT_INTERVAL_FRAME      = 3;   // 固定帧间隔
+    }
+
+    // 规则集抓拍参数
+    public static class NET_SNAP_SHOT_WITH_RULE_INFO extends SdkStructure
+    {
+        public int                            nRuleId;
+        public int                            dwRuleType;                           // 规则类型,详见dhnetsdk.h中"智能分析事件类型"
+        public int                            nSnapShotNum;                         // 抓拍图片张数
+        public int[]                          emSnapShotType = new int[MAX_SNAP_SHOT_NUM];  // 抓拍图片类型数组,详见NET_EM_SNAP_SHOT_TYPE
+        public int[]                          nSingleInterval = new int[MAX_SNAP_SHOT_NUM];  // 抓图时间间隔数组,单位秒,数组第一个时间:5~180 默认10, 其余时间(N张抓拍有N-1个间隔时):1~3600 默认20
+        public int                            emIntervalMode;                       // 抓拍间隔模式,详见NET_EM_SNAP_SHOT_INTERVAL_MODE
+        public byte[]                         byReserved = new byte[1024];          // 预留
+    }
+
+    // 抓拍参数
+    public static class NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO extends SdkStructure
+    {
+        public int                            nPresetID;                            // 场景预置点号
+        public int                            nRetSnapShotRuleNum;                  // stuSnapShotWithRule中有效数据个数
+        public NET_SNAP_SHOT_WITH_RULE_INFO[] stuSnapShotWithRule = new NET_SNAP_SHOT_WITH_RULE_INFO[32];  // 规则集抓拍参数
+        public byte[]                         byReserved = new byte[1024];          // 预留
+
+        public NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO()
+        {
+            for (int i = 0; i < stuSnapShotWithRule.length; ++i) {
+                stuSnapShotWithRule[i] = new NET_SNAP_SHOT_WITH_RULE_INFO();
+            }
+        }
+    }
+
+    // 场景抓拍设置 对应枚举 NET_EM_CFG_SCENE_SNAP_SHOT_WITH_RULE2
+    public static class NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO extends SdkStructure
+    {
+        public int                            dwSize;                               // 结构体大小
+        public int                            nMaxRuleNum;                          // pstuSnapShotWithRule中用户分配的内存个数
+        public int                            nRetRuleNum;                          // pstuSnapShotWithRule中实际有效的数据个数
+        public Pointer                        pstuSceneSnapShotWithRule;            // 抓拍参数,由用户分配和释放内存,大小为nMaxRuleNum * sizeof(NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO),指向NET_SCENE_SNAP_SHOT_WITH_RULE2_INFO
+
+        public NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    }
+
+    // 车辆动作
+    public static class EM_VEHICLE_ACTION extends Structure{
+        public static final int EM_VEHICLE_ACTION_UNKNOWN=0;          // 未知
+        public static final int EM_VEHICLE_ACTION_APPEAR=1;           // "Appear"在检测区域内
+        public static final int EM_VEHICLE_ACTION_DISAPPEAR=2;        // "Disappear"离开检测区域
+    }
+
+    // 检测到的车辆信息
+    public static class NET_DETECT_VEHICLE_INFO extends SdkStructure{
+        public int                     emAction;               // 检测车辆动作
+        public int /*UINT*/            nObjectID;              // 物体ID
+        public EVENT_PIC_INFO          stuVehicleImage;        // 车辆抓图信息
+        public NET_COLOR_RGBA          stuColor;               // 车身主要颜色
+        public int                     emCategoryType;         // 车辆类型,参考枚举EM_CATEGORY_TYPE        
+        public int /*UINT*/            nFrameSequence;         // 帧序号
+        public int /*UINT*/            nCarLogoIndex;          // 车辆车标
+        public int /*UINT*/            nSubBrand;              // 车辆子品牌
+        public int /*UINT*/            nBrandYear;             // 车辆品牌年款
+        public int /*UINT*/            nConfidence;            // 置信度,值越大表示置信度越高, 范围 0~255
+        public NET_RECT                stuBoundingBox;         // 包围盒, 0-8191相对坐标
+        public byte[]                  szText=new byte[128];   // 车标
+        public int /*UINT*/            nSpeed;                 // 车速,单位为km/h
+        public int /*UINT*/            nDirection;             // 车辆行驶方向, 0:未知, 1:上行方向, 2:下行方向
+        public byte[]                  bReserved=new byte[512];// 保留字节
+    }
+
+    // 检测的车牌信息
+    public static class NET_DETECT_PLATE_INFO extends SdkStructure{
+        public int /*UINT*/            nObjectID;              // 车牌ID
+        public int /*UINT*/            nRelativeID;            // 关联的车辆ID
+        public EVENT_PIC_INFO          stuPlateImage;          // 车牌图片信息
+        public int                     emPlateType;            // 车牌类型,参考枚举EM_NET_PLATE_TYPE
+        public int                     emPlateColor;           // 车牌颜色,参考枚举EM_NET_PLATE_COLOR_TYPE
+        public int /*UINT*/            nConfidence;            // 置信度,值越大表示置信度越高, 范围 0~255
+        public byte[]                  szCountry=new byte[3];  // 车牌国家
+        public byte                    bReserved1;             // 字节对齐
+        public byte[]                  szPlateNumber=new byte[128];    // 车牌号码
+        public byte[]                  bReserved=new byte[512];// 保留字节
+    }
+
+    // 加油站车辆检测事件 (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO)
+    public static class DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO extends SdkStructure
+    {
+        public int						nChannelID;									// 通道号
+        public int						nAction;									// 0:脉冲1:开始 2:停止
+        public byte[]					szName = new byte[NET_EVENT_NAME_LEN];      // 事件名称
+        public double				    PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX		        UTC;								        // 事件发生的时间
+        public int						nEventID;									// 事件ID
+        public int						nRuleID;									// 智能事件规则编号,用于标示哪个规则触发的事件
+        public int					    emClassType;				                // 智能事件所属大类
+        public NET_DETECT_VEHICLE_INFO  stuDetectVehicleInfo;                       // 检测到的车辆信息
+        public NET_DETECT_PLATE_INFO    stuDetectPlateInfo;                         // 检测到的车牌信息
+        public boolean                  bIsGlobalScene;                             // 是否有场景图
+        public EVENT_PIC_INFO           stuSceneImage;                              // 场景图信息, bIsGlobalScene 为 TRUE 时有效
+        public int                      nCarCandidateNum;                           // 候选车辆数量
+        public NET_CAR_CANDIDATE_INFO[] stuCarCandidate = (NET_CAR_CANDIDATE_INFO[])new NET_CAR_CANDIDATE_INFO().toArray(MAX_CAR_CANDIDATE_NUM);  // 候选车辆数据
+        /*public boolean                  bIsEmptyPlace;                              // 是否是空车位报警*/
+        public NET_FUEL_DISPENSER_INFO		stuFuelDispenser;						// 从加油机获取的信息,IVSS对接加油机及N8000
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;                     // 交通车辆信息        
+        public byte[]                   bReserved=new byte[872];                   // 保留字节
+    }
+
+    // 事件级别,GB30147需求
+    public static class EM_EVENT_LEVEL extends Structure
+    {
+        public static final int EM_EVENT_LEVEL_HINT = 0;										// 提示
+        public static final int EM_EVENT_LEVEL_GENERAL=1;										// 普通
+        public static final int EM_EVENT_LEVEL_WARNING=2;										// 警告
+    }
+
+    // 事件类型EVENT_IVS_SHOPPRESENCE(商铺占道经营事件)对应的数据块描述信息
+    public static class DEV_EVENT_SHOPPRESENCE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName=new byte[128];                       // 事件名称
+        public byte[]              bReserved1=new byte[4];                     // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_MSG_OBJECT      stuObject;                                  // 检测到的物体,推荐使用字段stuObjects获取物体信息
+        public int                 nDetectRegionNum;                           // 规则检测区域顶点数
+        public NET_POINT[] DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);     // 规则检测区域
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                 bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved=new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice = new byte[MAX_PATH];        // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                           // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public byte[]			   szPresetName=new byte[64];                  // 事件触发的预置点名称
+        public int		           emEventLevel;							   // 事件级别,GB30147需求
+        public byte[]			   szShopAddress=new byte[256];		           // 商铺地址
+        public int                 nViolationDuration;                         // 违法持续时长,单位:秒,缺省值0表示无意义
+        public int				   nObjectNum;								   // 检测到的物体个数
+        public NET_MSG_OBJECT[]    stuObjects = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(HDBJ_MAX_OBJECTS_NUM);// 检测到的物体
+        public byte[]			   szSourceID=new byte[32];					   // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public Pointer             pstuImageInfo;					           // 图片信息数组,指针对应NET_IMAGE_INFO_EX2数组    
+    	public int				   nImageInfoNum;					           // 图片信息个数
+    	public SCENE_IMAGE_INFO_EX	stuSceneImage = new SCENE_IMAGE_INFO_EX(); // 全景图图片信息,事件前2~5s抓图
+    	public Pointer			   pstuMosaicImage;					           // 合成图,指针对应SCENE_IMAGE_INFO_EX数组
+    	public int				   nMosaicImageNum;				               // 合成图个数
+    	public Pointer			   pstuAdvanceImage;				           // 事件发生前抓图,指针对应SCENE_IMAGE_INFO_EX数组
+    	public int				   nAdvanceImageNum;				           // 事件发生前抓图个数   
+        public byte[]              byReserved2=new byte[1248-POINTERSIZE*3];   // 保留字节
+    }
+
+    // 事件类型 EVENT_IVS_FLOWBUSINESS (流动摊贩事件) 对应的数据块描述信息
+    public static class DEV_EVENT_FLOWBUSINESS_INFO extends SdkStructure
+    {
+        public int                 nChannelID;									// 通道号
+        public int                 nAction;										// 0:脉冲 1:开始 2:停止
+        public byte[]              szName=new byte[128];						// 事件名称
+        public double              PTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;											// 事件发生的时间
+        public int                 nEventID;									// 事件ID
+        public NET_EVENT_FILE_INFO stuFileInfo;							        // 事件对应文件信息
+        public int                 nDetectRegionNum;                   			// 检测区域顶点数
+        public NET_POINT[]         DetectRegion = (NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);// 检测区域
+        public byte[]			   szPresetName=new byte[64];					// 事件触发的预置名称
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;					// 智能事件公共信息
+        public int                 nViolationDuration;                          // 违法持续时长,单位:秒 缺省值0表示无意义
+        public int				   nObjectNum;									// 检测到的物体个数
+        public NET_MSG_OBJECT[]    stuObjects = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(HDBJ_MAX_OBJECTS_NUM);// 检测到的物体
+        public byte[]			   szSourceID=new byte[32];						// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int                 dwSnapFlagMask;								// 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public byte[]              byReserved=new byte[2044];					// 保留字节
+    }
+
+    // 立体视觉区域内人数统计事件区域人员列表
+    public static class MAN_NUM_LIST_INFO extends SdkStructure
+    {
+        public DH_RECT				stuBoudingBox;			                     // 人员包围盒,8192坐标系
+        public int					nStature;				                     // 人员身高,单位cm
+        public byte[]               szReversed=new byte[128];    	             // 保留字节
+    }
+
+    /**
+     * @author 260611
+     * @description 事件类型EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应数据块描述信息
+     * @date 2023/01/10 19:44:49
+     */
+    public class DEV_EVENT_MANNUM_DETECTION_INFO extends SdkStructure {
+        /**
+         * 通道号
+         */
+        public int nChannelID;
+        /**
+         * 事件名称
+         */
+        public byte[] szName = new byte[128];
+        /**
+         * 字节对齐, 非保留字节
+         */
+        public byte[] bReserved1 = new byte[4];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public double PTS;
+        /**
+         * 事件发生的时间
+         */
+        public com.netsdk.lib.structure.NET_TIME_EX UTC = new com.netsdk.lib.structure.NET_TIME_EX();
+        /**
+         * 事件ID
+         */
+        public int nEventID;
+        /**
+         * 0:脉冲 1:开始 2:停止
+         */
+        public int nAction;
+        /**
+         * 区域人员列表数量
+         */
+        public int nManListCount;
+        /**
+         * 区域内人员列表
+         */
+        public MAN_NUM_LIST_INFO[] stuManList = new MAN_NUM_LIST_INFO[64];
+        /**
+         * 智能事件公共信息
+         */
+        public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new EVENT_INTELLI_COMM_INFO();
+        /**
+         * 区域ID(一个预置点可以对应多个区域ID)
+         */
+        public int nAreaID;
+        /**
+         * 变化前人数
+         */
+        public int nPrevNumber;
+        /**
+         * 当前人数
+         */
+        public int nCurrentNumber;
+        /**
+         * 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+         * 缺省时为空字符串,表示无此信息
+         * 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位
+         */
+        public byte[] szSourceID = new byte[32];
+        /**
+         * null
+         */
+        public byte[] szRuleName = new byte[128];
+        /**
+         * 检测模式 {@link com.netsdk.lib.enumeration.EM_EVENT_DETECT_TYPE}
+         */
+        public int emDetectType;
+        /**
+         * 实际触发报警的人数
+         */
+        public int nAlertNum;
+        /**
+         * 报警类型. 0:未知, 1:从人数正常到人数异常, 2:从人数异常到人数正常
+         */
+        public int nAlarmType;
+        /**
+         * 图片信息数组
+         */
+        public Pointer pstuImageInfo;
+        /**
+         * 图片信息个数
+         */
+        public int nImageInfoNum;
+        /**
+         * 事件公共扩展字段结构体
+         */
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();        
+        /**
+         * 检测区个数
+         */
+    	public int nDetectRegionNum;
+    	/**
+    	 * 检测区
+    	 */
+    	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+        /**
+         * 保留字节
+         */
+        public byte[] szReversed = new byte[700];
+
+        public DEV_EVENT_MANNUM_DETECTION_INFO() {
+            for (int i = 0; i < stuManList.length; i++) {
+                stuManList[i] = new MAN_NUM_LIST_INFO();
+            }
+            for (int i = 0; i < stuDetectRegion.length; i++) {
+            	stuDetectRegion[i] = new NET_POINT_EX();
+    		}
+        }
+    }
+
+    public static class EM_ALARM_TYPE extends SdkStructure
+    {
+        public static final int EM_ALARM_TYPE_UNKNOWN = 0;								// 未知类型
+        public static final int EM_ALARM_TYPE_CROWD_DENSITY = 1;						// 拥挤人群密度报警
+        public static final int EM_ALARM_TYPE_NUMBER_EXCEED = 2;						// 人数超限报警
+        public static final int EM_ALARM_TYPE_CROWD_DENSITY_AND_NUMBER_EXCEED = 3;		// 拥挤人群密度报警和人数超限报警
+    };
+
+    // 全局拥挤人群密度列表(圆形)信息
+    public static class NET_CROWD_LIST_INFO extends SdkStructure
+    {
+        public NET_POINT			stuCenterPoint = new NET_POINT();				// 中心点坐标,8192坐标系
+        public int		nRadiusNum;					// 半径像素点个数
+        public byte[]				byReserved=new byte[1024];			// 保留字节
+    };
+
+    // 人数超限的报警区域ID列表信息
+    public static class NET_REGION_LIST_INFO extends SdkStructure
+    {
+        public int		nRegionID;				// 配置的区域下标
+        public int		nPeopleNum;				// 区域内人数统计值
+    	public byte[]	szName = new byte[32];				// 配置的名称
+    	public DH_POINT[]	stuDetectRegion = new DH_POINT[20];	// 配置的检测区域坐标
+    	public int		nDetectRegionNum;		// 配置的检测区域坐标个数	
+        public byte[]	byReserved=new byte[908];		// 保留字节
+    };
+
+    // 全局拥挤人群密度列表(矩形)信息
+    public static class NET_CROWD_RECT_LIST_INFO  extends SdkStructure
+    {
+        public NET_POINT[]   stuRectPoint = (NET_POINT[])new NET_POINT().toArray(RECT_POINT);   // 矩形的左上角点与右下角点,8192坐标系,表示矩形的人群密度矩形框
+        public byte[]				byReserved=new byte[32];			    // 保留字节
+    };
+    // 事件类型 EVENT_IVS_CROWDDETECTION(人群密度检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_CROWD_DETECTION_INFO extends SdkStructure
+    {
+        public int					  nChannelID;							// 通道号
+        public int					  nEventID;								// 事件ID
+        public double				  PTS;									// 时间戳(单位是毫秒)
+        public NET_TIME_EX			  UTC;									// 事件发生的时间
+        public int                    nEventAction;							// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public int		              emAlarmType;							// 报警业务类型
+        public byte[]				  szName=new byte[MAX_CROWD_DETECTION_NAME_LEN];	// 事件名称
+        public int					  nCrowdListNum;						// 返回的全局拥挤人群密度列表个数 (圆形描述)
+        public int					  nRegionListNum;						// 返回的人数超限的报警区域ID列表个数
+        public NET_CROWD_LIST_INFO[]	  stuCrowdList=new NET_CROWD_LIST_INFO[MAX_CROWD_LIST_NUM];		// 全局拥挤人群密度列表信息(圆形描述)
+        public NET_REGION_LIST_INFO[]   stuRegionList=new NET_REGION_LIST_INFO[MAX_REGION_LIST_NUM];	// 人数超限的报警区域ID列表信息
+        public NET_EXTENSION_INFO    stuExtensionInfo;					    // 扩展信息
+        public int					  nCrowdRectListNum;					// 返回的全局拥挤人群密度列表个数 (矩形描述)
+        public NET_CROWD_RECT_LIST_INFO[] stuCrowdRectList=new NET_CROWD_RECT_LIST_INFO[MAX_CROWD_RECT_LIST];  // 全局拥挤人群密度列表信息(矩形描述)
+        public int					  nGlobalPeopleNum;						// 检测区全局总人数
+    	public Pointer                pstuImageInfo;					// 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+    	public int				      nImageInfoNum;						     // 图片信息个数
+    	public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+        public byte[]				  byReserved=new byte[680];				// 保留扩展字节
+    };
+
+    // 人群密度检测事件(对应事件NET_ALARM_CROWD_DETECTION)
+    public static class ALARM_CROWD_DETECTION_INFO extends SdkStructure
+    {
+        public int					  nChannelID;							// 通道号
+        public int					  nEventID;								// 事件ID
+        public double				  PTS;									// 时间戳(单位是毫秒)
+        public NET_TIME_EX			  UTC;									// 事件发生的时间
+        public int                   nEventAction;							// 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public int		             emAlarmType;							// 报警业务类型
+        public byte[]				  szName=new byte[MAX_CROWD_DETECTION_NAME_LEN];	// 事件名称
+        public int					  nCrowdListNum;						// 返回的全局拥挤人群密度列表个数
+        public int					  nRegionListNum;						// 返回的人数超限的报警区域ID列表个数
+        public NET_CROWD_LIST_INFO[]	  stuCrowdList=new NET_CROWD_LIST_INFO[MAX_CROWD_LIST_NUM];		// 全局拥挤人群密度列表信息
+        public NET_REGION_LIST_INFO[]  stuRegionList=new NET_REGION_LIST_INFO[MAX_REGION_LIST_NUM];	// 人数超限的报警区域ID列表信息
+        public NET_EXTENSION_INFO    stuExtensionInfo;				        // 扩展信息
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]				  byReserved=new byte[896];						// 保留扩展字节
+    };
+
+    // 对象目标类型
+    public static class EM_OBJECT_TYPE extends SdkStructure
+    {
+        public static final int  EM_OBJECT_TYPE_UNKNOWN    = -1;                    // 未知
+        public static final int EM_OBJECT_TYPE_FACE        =  0;                    // 目标
+        public static final int EM_OBJECT_TYPE_HUMAN       =  1;                    // 人体
+        public static final int EM_OBJECT_TYPE_VECHILE     =  2;                    // 机动车
+        public static final int EM_OBJECT_TYPE_NOMOTOR     =  3;                    // 非机动车
+        public static final int EM_OBJECT_TYPE_ALL         =  4;                    // 所有类型
+    };
+
+    // CLIENT_StartMultiFindFaceRecognition 接口输入参数
+    public static class NET_IN_STARTMULTIFIND_FACERECONGNITION extends SdkStructure
+    {
+        public int                          dwSize;
+        public Pointer                      pChannelID;                        // 通道号
+        public int                          nChannelCount;                     //  通道申请个数
+        public int                          bPersonEnable;                     // 人员信息查询条件是否有效
+        public FACERECOGNITION_PERSON_INFO  stPerson;                          // 人员信息查询条件
+        public NET_FACE_MATCH_OPTIONS       stMatchOptions;                    // 人脸匹配选项
+        public NET_FACE_FILTER_CONDTION     stFilterInfo;                      // 查询过滤条件
+
+        // 图片二进制数据
+        public Pointer                       pBuffer;                          // 缓冲地址
+        public int                           nBufferLen;                       // 缓冲数据长度
+        public int                           bPersonExEnable;                  // 人员信息查询条件是否有效, 并使用人员信息扩展结构体
+        public FACERECOGNITION_PERSON_INFOEX stPersonInfoEx;                   // 人员信息扩展
+        public int                           emObjectType;                     // 搜索的目标类型,参考EM_OBJECT_TYPE
+        public int                           nChannelNum;                      // 通道有效个数
+        public byte[]                        szChannelString = new byte[512*32];// 通道号(使用)
+    	public int					         nProcessType;					   // 以图搜图类型, -1: 未知, 0: 特征值搜索, 1: SMD属性特征搜索
+        public int bIsUsingTaskID;                                             // 是否使能订阅的TaskID字段
+        public int nTaskIDNum;                                                 // 订阅的TaskID数组有效个数
+        public int[] nTaskID = new int[128];                                   // 订阅的TaskID, bIsUsingTaskID为TRUE,nTaskIDNum为0表示订阅所有任务结果
+
+        public NET_IN_STARTMULTIFIND_FACERECONGNITION() {
+            this.dwSize = this.size();
+        }
+    };
+
+    // CLIENT_StartMultiFindFaceRecognition 接口输出参数
+    public static class NET_OUT_STARTMULTIFIND_FACERECONGNITION extends SdkStructure
+    {
+        public int                           dwSize;
+        public int                           nTotalCount;                       // 返回的符合查询条件的记录个数
+        // -1表示总条数未生成,要推迟获取
+        // 使用CLIENT_AttachFaceFindState接口状态
+        public LLong                         lFindHandle;                       // 查询句柄
+        public int                           nToken;                            // 获取到的查询令牌
+
+        public NET_OUT_STARTMULTIFIND_FACERECONGNITION() {
+            this.dwSize = this.size();
+        }
+    };
+
+    // 开始目标检测/注册库的多通道查询
+    public Boolean  CLIENT_StartMultiFindFaceRecognition(LLong lLoginID, NET_IN_STARTMULTIFIND_FACERECONGNITION pstInParam, NET_OUT_STARTMULTIFIND_FACERECONGNITION pstOutParam, int nWaitTime);
+
+    // 事件类型 EVENT_IVS_PEDESTRIAN_JUNCTION (行人卡口事件) 对应的数据块描述信息
+    public static class DEV_EVENT_PEDESTRIAN_JUNCTION_INFO extends SdkStructure
+    {
+        public int					nChannelID;									// 通道号
+        public byte[]				szName=new byte[NET_EVENT_NAME_LEN];		// 事件名称
+        public int					nGroupID;									// 事件组ID, 同一个人抓拍过程内nGroupID相同
+        public int					nCountInGroup;								// 一个事件组内的抓拍张数
+        public int					nIndexInGroup;								// 一个事件组内的抓拍序号,从1开始
+        public double				PTS;										// 事件戳(单位是毫秒)
+        public NET_TIME_EX			UTC;										// 事件发生的时间
+        public int					UTCMS;										// UTC时间对应的毫秒数
+        public int					nEventID;									// 事件ID
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public NET_MSG_OBJECT		stuObject;									// 人脸信息
+        public int					nLane;										// 人行道号
+        public int					nSequence;									// 表示抓拍序号,如3/2/1,1表示抓拍结束,0表示异常结束
+        public VA_OBJECT_NONMOTOR  stuNonMotor;                                        // 非机动车信息
+        public boolean				bHasNonMotor;								        // stuNonMotor 字段是否有效
+        public NET_MSG_OBJECT		stuVehicle;									        // 行人信息
+        public byte[]				byReserved=new byte[336];					// 保留字节
+    };
+
+    // 多人多开门方式组合(对应 CFG_CMD_OPEN_DOOR_GROUP 命令),表示每个通道的组合信息,
+    // 第一个通道的组合的开门优先级最高,后面依次递减
+    public static class CFG_OPEN_DOOR_GROUP_INFO extends SdkStructure {
+        public int nGroup; // 有效组合数
+        public CFG_OPEN_DOOR_GROUP[] stuGroupInfo = new CFG_OPEN_DOOR_GROUP[CFG_MAX_OPEN_DOOR_GROUP_NUM];// 多人开门组合信息
+    	public int nGroupMaxNum;					// 组合总数,指明pGroupInfoEx实际内存空间大小,获取和下发均需要用户赋值,非0时nGroup、stuGroupInfo字段不生效
+    	public int nGroupRetNum;					// 实际有效的组合数,获取时由动态库赋值,下发时由用户赋值
+    	public Pointer pGroupInfoEx;                //多人开门组合信息扩展,内存有用户申请,指针对应CFG_OPEN_DOOR_GROUP数组
+    	public byte[] szReserved =new byte[2048];	// 保留字节
+    };
+
+    // 多人组合开门组信息
+    public static class CFG_OPEN_DOOR_GROUP extends SdkStructure {
+        public int nUserCount; // 用户数目,表示需要组合才能开门的人数
+        public int nGroupNum; // 有效组数目
+        public CFG_OPEN_DOOR_GROUP_DETAIL[] stuGroupDetail = new CFG_OPEN_DOOR_GROUP_DETAIL[CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM];// 多人组合开门组的详细信息
+        public Boolean bGroupDetailEx; // TRUE: stuGroupDetail
+        // 字段无效、pstuGroupDetailEx字段有效, FALSE:
+        // stuGroupDetail
+        // 字段有效、pstuGroupDetailEx字段无效
+        public int nMaxGroupDetailNum; // 多人组合开门组的详细信息最大个数
+        public Pointer pstuGroupDetailEx; /*
+         * 多人组合开门组的详细信息扩展, 由用户申请内存,
+         * 大小为sizeof(CFG_OPEN_DOOR_GROUP_DETAIL
+         * )*nMaxUserCount, 当多人组合开门组的详细信息个数大于
+         * CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM
+         * 时使用此字段
+         */
+    };
+
+    // 多人组合开门组详细信息
+    public static class CFG_OPEN_DOOR_GROUP_DETAIL extends SdkStructure {
+        public byte[] szUserID = new byte[CFG_MAX_USER_ID_LEN]; // 用户ID
+        public int emMethod; // 开门方式
+        public int nMethodExNum; // 开门方式扩展个数
+        public int[] emMethodEx = new int[CFG_MAX_METHODEX_NUM]; // 开门方式扩展
+    };
+
+    public static class EM_CFG_OPEN_DOOR_GROUP_METHOD extends SdkStructure {
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_UNKNOWN = 0;
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_CARD = 1; // 刷卡
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_PWD = 2; // 密码
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_FINGERPRINT = 3; // 信息
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_ANY = 4; // 任意组合方式开门
+        public static final int EM_CFG_OPEN_DOOR_GROUP_METHOD_FACE = 5; // 人脸
+    };
+
+    public static final int CFG_MAX_USER_ID_LEN = 32; // 门禁卡用户ID最大长度
+    public static final int CFG_MAX_METHODEX_NUM = 4; // 开门方式扩展最大个数
+    public static final int CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM = 64; // 每一组多人开门组合的最大人数
+    public static final int CFG_MAX_OPEN_DOOR_GROUP_NUM = 4; // 多人开门组合的最大组合数
+
+    // 开始查找X光机包裹信息
+    public  LLong  CLIENT_StartFindXRayPkg(LLong lLoginID, NET_IN_START_FIND_XRAY_PKG pInParam, NET_OUT_START_FIND_XRAY_PIC pOutParam, int nWaitTime);
+
+    // 查询X光机包裹的信息
+    public  Boolean  CLIENT_DoFindXRayPkg(LLong lFindID, NET_IN_DO_FIND_XRAY_PKG pInParam, NET_OUT_DO_FIND_XRAY_PKG pOutParam, int nWaitTime);
+
+    // 结束查询X光机包裹的信息
+    public  Boolean  CLIENT_StopFindXRayPkg(LLong lFindID);
+
+    // 物品类型
+    public static class EM_INSIDE_OBJECT_TYPE
+    {
+        public static final int					EM_INSIDE_OBJECT_UNKNOWN = 0;			// 算法未识别物品
+        public static final int					EM_INSIDE_OBJECT_KNIFE = 1;			// 刀具
+        public static final int					EM_INSIDE_OBJECT_BOTTLELIQUID = 2;			// 瓶装液体
+        public static final int					EM_INSIDE_OBJECT_GUN = 3;			// 枪支
+        public static final int					EM_INSIDE_OBJECT_UMBRELLA = 4;			// 雨伞
+        public static final int					EM_INSIDE_OBJECT_PHONE = 5;			// 手机
+        public static final int					EM_INSIDE_OBJECT_NOTEBOOK = 6;			// 笔记本
+        public static final int					EM_INSIDE_OBJECT_POWERBANK = 7;			// 充电宝
+        public static final int					EM_INSIDE_OBJECT_SHOES = 8;			// 鞋子
+        public static final int					EM_INSIDE_OBJECT_ROD = 9;			// 杠子
+        public static final int					EM_INSIDE_OBJECT_METAL = 10;			// 金属
+        public static final int					EM_INSIDE_OBJECT_EXPLOSIVE = 11;			// 爆炸物
+        public static final int					EM_INSIDE_OBJECT_CONTAINERSPRAY = 12;			// 喷雾喷灌
+        public static final int					EM_INSIDE_OBJECT_EXPLOSIVE_FIREWORKS = 13;			// 烟花爆竹
+        public static final int					EM_INSIDE_OBJECT_LIGHTER = 14;			// 打火机
+        public static final int					EM_INSIDE_OBJECT_STICK = 15;			// 警棍
+        public static final int					EM_INSIDE_OBJECT_BRASSKNUCKLE = 16;			// 指虎
+        public static final int					EM_INSIDE_OBJECT_HANDCUFFS = 17;			// 手铐
+        public static final int					EM_INSIDE_OBJECT_IVORY = 18;			// 象牙
+        public static final int					EM_INSIDE_OBJECT_BOOK = 19;			// 书籍
+        public static final int					EM_INSIDE_OBJECT_CD = 20;			// 光盘
+        public static final int					EM_INSIDE_OBJECT_HAMMERS = 21;			// 锤子
+        public static final int					EM_INSIDE_OBJECT_PLIERS = 22;			// 钳子
+        public static final int					EM_INSIDE_OBJECT_AXE = 23;			// 斧头
+        public static final int					EM_INSIDE_OBJECT_SCREW_DRIVER = 24;			// 螺丝刀
+        public static final int					EM_INSIDE_OBJECT_WRENCH = 25;			// 扳手
+        public static final int					EM_INSIDE_OBJECT_ELECTRIC_SHOCK_STICK = 26;			// 电击棍
+        public static final int					EM_INSIDE_OBJECT_THERMOS = 27;			// 保温杯
+        public static final int					EM_INSIDE_OBJECT_GLASS_BOTTLES = 28;			// 玻璃杯
+        public static final int					EM_INSIDE_OBJECT_PLASTIC_BOTTLE = 29;			// 塑料瓶
+        public static final int					EM_INSIDE_OBJECT_IGNITION_OIL = 30;			// 打火机油
+        public static final int					EM_INSIDE_OBJECT_NAIL_POLISH = 31;			// 指甲油
+        public static final int					EM_INSIDE_OBJECT_BLUNT_INSTRUMENT = 32;			// 工具
+        public static final int					EM_INSIDE_OBJECT_SCISSORS = 33;			// 剪刀
+        public static final int					EM_INSIDE_OBJECT_ELECTRONIC = 34;			// 电子产品
+        public static final int					EM_INSIDE_OBJECT_PISTOL = 35;			//	手枪
+        public static final int					EM_INSIDE_OBJECT_FOLDINGKNIFE = 36;			//	折叠刀
+        public static final int					EM_INSIDE_OBJECT_SHARPKNIFE = 37;			//	尖刀
+        public static final int					EM_INSIDE_OBJECT_KITCHENKNIFE = 38;			//	菜刀
+        public static final int					EM_INSIDE_OBJECT_UTILITYKNIFE = 39;			//	美工刀
+        public static final int					EM_INSIDE_OBJECT_FIREWORKS = 40;			//	烟花
+        public static final int					EM_INSIDE_OBJECT_FIRECRACKER = 41;			//	爆竹
+        public static final int					EM_INSIDE_OBJECT_POWDER = 42;			//	粉末
+        public static final int					EM_INSIDE_OBJECT_IMPENETERABLE_MATERALS = 43;			//难穿透物品
+        public static final int					EM_INSIDE_OBJECT_CIGARETTE = 44;			//香烟
+        public static final int					EM_INSIDE_OBJECT_BATTERY = 45;			//电池
+        public static final int					EM_INSIDE_OBJECT_GUNPARTS = 46;			//零部件
+        public static final int					EM_INSIDE_OBJECT_MATCH = 47;			//火柴
+        public static final int					EM_INSIDE_OBJECT_GUNGRIP = 48;			//握把
+        public static final int					EM_INSIDE_OBJECT_GUNMAGAZINE = 49;			//弹夹
+        public static final int					EM_INSIDE_OBJECT_GUNSLEEVE = 50;			//套筒
+        public static final int					EM_INSIDE_OBJECT_GUNBARREL = 51;			//枪管
+        public static final int					EM_INSIDE_OBJECT_BULLET = 52;			//子弹
+        public static final int					EM_INSIDE_OBJECT_GRENADE = 53;			//手雷
+        public static final int					EM_INSIDE_OBJECT_CERAMICSHEET = 54;			//陶瓷片
+        public static final int					EM_INSIDE_OBJECT_GLASSSHEET = 55;			//玻璃片
+        public static final int					EM_INSIDE_OBJECT_IPADBASE = 56;			//IPAD底壳
+        public static final int					EM_INSIDE_OBJECT_SLINGSHOT = 57;			//弹弓
+        public static final int					EM_INSIDE_OBJECT_DRUG = 58;			//毒品
+        public static final int					EM_INSIDE_OBJECT_EXPLOSIVEPACKAGE = 59;			//炸药包
+        public static final int					EM_INSIDE_OBJECT_CELLBATTERY = 60;			//纽扣电池
+        public static final int					EM_INSIDE_OBJECT_LEADBATTERY = 61;			//铅蓄电池
+        public static final int					EM_INSIDE_OBJECT_METALLIGHTER = 62;			//金属打火机
+        public static final int					EM_INSIDE_OBJECT_COSMETICBOTTLE = 63;			//化妆瓶
+        public static final int					EM_INSIDE_OBJECT_CONTAINERCAN = 64;			//易拉罐
+        public static final int					EM_INSIDE_OBJECT_AIRBOTTLE = 65;			//气罐
+        public static final int					EM_INSIDE_OBJECT_SQUAREKNIFE = 66;			//方刀
+    } ;
+
+    // 危险等级
+    public static class EM_DANGER_GRADE_TYPE extends SdkStructure
+    {
+        public static final int EM_DANGER_GRADE_UNKNOWN  = -1;								// 未知
+        public static final int EM_DANGER_GRADE_NORMAL=0;											// 普通级别
+        public static final int EM_DANGER_GRADE_WARN=1;											// 警示级别
+        public static final int EM_DANGER_GRADE_DANGER=2;											// 危险级别
+    } ;
+
+
+    // CLIENT_StartFindXRayPkg 接口输入参数
+    public static class NET_IN_START_FIND_XRAY_PKG extends SdkStructure
+    {
+        public int                   dwSize;                 // 结构体大小
+        public int    emTimeOrder;            // 查询结果按时间排序
+        public NET_TIME			    stuStartTime;		    // 查询的开始时间
+        public NET_TIME			    stuEndTime;			    // 查询的结束时间
+        public int[]                    nSimilarityRange=new int[2];    // 相似度范围,下标0:表示最小值, 下标1:表示最大值
+        public int                      nObjTypeNum;            // 物体类型的数量
+        public int[]	emObjType=new int[32];		    // 物品类型,参考枚举EM_INSIDE_OBJECT_TYPE
+        public int                  nObjTypeCount;          // 自定义物体类型的数量
+        public NET_XRAY_INSIDE_ONJECT_TYPE[] stuObjType=(NET_XRAY_INSIDE_ONJECT_TYPE[]) new NET_XRAY_INSIDE_ONJECT_TYPE().toArray(32);						// 自定义物品类型
+        public NET_IN_START_FIND_XRAY_PKG()
+        {
+            this.dwSize = this.size();
+        }
+    } ;
+    // X光机物体信息
+    public static class NET_PKG_OBJECT_INFO extends SdkStructure
+    {
+        public int	emObjType;		    	// 物品类型
+        public int	emDangerGrade;			// 物品危险等级
+        public int                    nSimilarity;	    	// 相似度,0~100
+        public byte[]                    byReserved=new byte[132];    	// 保留字节
+    };
+
+    // CLIENT_StartFindXRayPkg 接口输出参数
+    public static class NET_OUT_START_FIND_XRAY_PIC extends SdkStructure
+    {
+        public int                   dwSize;                 // 结构体大小
+        public int                     nTotal;                 // 包裹总数
+        public NET_OUT_START_FIND_XRAY_PIC()
+        {
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // CLIENT_DoFindXRayPkg 接口输入参数
+    public static class NET_IN_DO_FIND_XRAY_PKG extends SdkStructure
+    {
+        public int                    dwSize;                 // 结构体大小
+        public int                    nOffset;                // 查询偏移
+        public int                    nCount;                 // 需要查找的数目
+        public NET_IN_DO_FIND_XRAY_PKG()
+        {
+            this.dwSize = this.size();
+        }
+    };
+
+    // 视角信息数
+    public static class NET_PKG_VIEW_INFO extends SdkStructure
+    {
+        public int                        emViewType;				                    // 视图类型
+        public int                        nEnergyImageLength;                          // 能量图大小 单位字节
+        public byte[]                     szEnergyImagePath=new byte[128];             // 能量图绝对路径
+        public int                        nColorImageLength;                           // 彩图大小单位字节
+        public byte[]                     szColorImagePath=new byte[128];              // 彩图绝对路径
+        public int                        nColorOverlayImageLength;                    // 彩图叠加图大小单位字节
+        public byte[]                     szColorOverlayImagePath=new byte[128];       // 彩图叠加图绝对路径
+        public NET_PKG_OBJECT_INFO[]      stuObject=new NET_PKG_OBJECT_INFO[32];       // 物体数组
+        public int                        nObjectCount;                                // 物体数量
+        public byte[]                     byReserved=new byte[1024];                   // 保留字节
+    } ;
+    // X光机的包裹信息
+    public static class NET_XRAY_PKG_INFO extends SdkStructure
+    {
+        public NET_TIME			    	stuTime;		    	// 包裹产生时间(含时区)
+        public int                     	nChannelIn;             // 关联的进口IPC通道号,从0开始,-1表示无效
+        public int                     	nChannelOut;            // 关联的出口IPC通道号,从0开始,-1表示无效
+        public byte[]                    	szUser=new byte[128];            // 用户名
+        public NET_PKG_VIEW_INFO[]       	stuViewInfo= new NET_PKG_VIEW_INFO[2];         // 视角信息数组
+        public byte[]                    	byReserved=new byte[1024];        // 保留字节
+
+        public NET_XRAY_PKG_INFO() {
+            for (int i = 0; i < stuViewInfo.length; i ++) {
+                stuViewInfo[i] = new NET_PKG_VIEW_INFO();
+            }
+        }
+    };
+
+    // CLIENT_DoFindXRayPkg 接口输出参数
+    public static class NET_OUT_DO_FIND_XRAY_PKG extends SdkStructure
+    {
+        public int                     dwSize;                 // 结构体大小
+        public int                     nMaxCount;              // 用户指定分配结构体个数,需大于等于NET_IN_DO_FIND_XRAY_PKG的nCount
+        public int                     nRetCount;              // 实际返回的查询数量
+        public Pointer                 pstuXRayPkgInfo;        // X光机的包裹信息,缓存大小由用户指定
+        public NET_OUT_DO_FIND_XRAY_PKG()
+        {
+            this.dwSize = this.size();
+        }
+    }
+    //事件类型	EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(车位有车事件)对应的规则配置
+    public static class CFG_TRAFFIC_PARKINGSPACEPARKING_INFO extends SdkStructure
+    {
+        public byte[]				szRuleName=new byte[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
+        public byte				bRuleEnable;											// 规则使能
+        public byte[]              bReserved=new byte[3];                                           // 保留字段
+        public int					nObjectTypeNum;											// 相应物体类型个数
+        public byte[]				szObjectTypes=new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];		// 相应物体类型列表
+        public int                 nPtzPresetId;											// 云台预置点编号	0~65535
+        public CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
+        // public CFG_TIME_SECTION[]	stuTimeSection=new CFG_TIME_SECTION[WEEK_DAY_NUM*MAX_REC_TSECT_EX];			// 事件响应时间段
+        public CFG_TIME_SECTION[] stuTimeSection =
+                (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);   // 事件响应时间段
+        public int					nLane;													// 车位号
+        public int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
+        public int					nDetectRegionPoint;										// 检测区域顶点数
+        public CFG_POLYGON[]		stuDetectRegion=(CFG_POLYGON[]) new CFG_POLYGON().toArray(MAX_POLYGON_NUM);						// 检测区域
+        public int                 nPlateSensitivity;                                      // 有牌检测灵敏度(控制抓拍)
+        public int                 nNoPlateSensitivity;                                    // 无牌检测灵敏度(控制抓拍)
+        public int                 nLightPlateSensitivity;                                 // 有牌检测灵敏度(控制车位状态灯)
+        public int                 nLightNoPlateSensitivity;                               // 无牌检测灵敏度(控制车位状态灯)
+        public boolean             bForbidParkingEnable;									// 禁止停车使能 TRUE:禁止 FALSE:未禁止
+    };
+
+    //事件类型	EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(车位无车事件)对应的规则配置
+    public static class CFG_TRAFFIC_PARKINGSPACENOPARKING_INFO extends SdkStructure
+    {
+        public byte[]				szRuleName=new byte[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
+        public byte				bRuleEnable;											// 规则使能
+        public byte[]                bReserved=new byte[3];                                           // 保留字段
+        public int					nObjectTypeNum;											// 相应物体类型个数
+        public byte[]				szObjectTypes=new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];		// 相应物体类型列表
+        public int                 nPtzPresetId;											// 云台预置点编号	0~65535
+        public CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
+        public CFG_TIME_SECTION[] stuTimeSection =
+                (CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);   // 事件响应时间段
+
+        public int					nLane;													// 车位号
+        public int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
+        public int					nDetectRegionPoint;										// 检测区域顶点数
+        public CFG_POLYGON[]		stuDetectRegion=(CFG_POLYGON[]) new CFG_POLYGON().toArray(MAX_POLYGON_NUM);						// 检测区域
+        public int                 nPlateSensitivity;                                      // 有牌检测灵敏度(控制抓拍)
+        public int                 nNoPlateSensitivity;                                    // 无牌检测灵敏度(控制抓拍)
+        public int                 nLightPlateSensitivity;                                 // 有牌检测灵敏度(控制车位状态灯)
+        public int                 nLightNoPlateSensitivity;                               // 无牌检测灵敏度(控制车位状态灯)
+    };
+    // 事件类型 EVENT_IVS_CITY_MOTORPARKING (城市机动车违停事件) 对应的数据块描述信息
+    public static class DEV_EVENT_CITY_MOTORPARKING_INFO extends SdkStructure
+    {
+        public int                 nChannelID;										// 通道号
+        public int                 nAction;										// 0:脉冲 1:开始 2:停止
+        public byte[]                szName=new byte[128];									// 事件名称
+        public double              PTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX UTC = new NET_TIME_EX();											// 事件发生的时间
+        public int                 nEventID;										// 事件ID
+        public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();									// 事件对应文件信息
+        public int					nObjectNum;										// 检测到的物体个数
+        public NET_MSG_OBJECT[]		stuObjects=new NET_MSG_OBJECT[NET_MAX_OBJECT_NUM];						// 检测到的物体
+        public int                 nDetectRegionNum;                   			// 检测区域顶点数
+        public NET_POINT[]            DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; 		// 检测区域
+        public byte[]				szPresetName=new byte[64];								// 事件触发的预置名称
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo = new EVENT_INTELLI_COMM_INFO();						// 智能事件公共信息
+        public int                nParkingDuration;                               // 违停持续时长,单位:秒 缺省值0表示无意义
+        public byte[]				szSourceID=new byte[32];								    // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int               dwSnapFlagMask;									// 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int			bPtzPosition;					// stuPtzPosition 是否有效
+        public PTZ_NORMALIZED_POSITION_UNIT	stuPtzPosition = new PTZ_NORMALIZED_POSITION_UNIT();					// 云台信息
+        public int					emMotorStatus;                      // 车辆状态,{@link EM_CITYMOTOR_STATUS}
+        public SCENE_IMAGE_INFO					stuSceneImage = new SCENE_IMAGE_INFO(); // 全景广角图信息
+        public int					emPreAlarm;                         // 是否为违规预警图片(预警触发后一定时间,违规物体还没有离开,才判定为违规),参考EM_PREALARM
+        public Pointer              pstuImageInfo;    //图片信息数组,NET_IMAGE_INFO_EX2的数组
+        public int                  nImageInfoNum;                                  //图片信息个数
+        public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();      //事件公共扩展字段结构体
+        public byte                 byVehicleHeadDirection;                    // 车头朝向 0-未知,1-正面,2-侧面,3-背面
+        public byte[]               byReserved = new byte[1011];                   //预留字节
+        public DEV_EVENT_CITY_MOTORPARKING_INFO() {
+            for (int i = 0; i < stuObjects.length; i++) {
+                stuObjects[i] = new NET_MSG_OBJECT();
+            }
+            for (int i = 0; i < DetectRegion.length; i++) {
+                DetectRegion[i] = new NET_POINT();
+            }
+        }
+    };
+    // 事件类型 EVENT_IVS_CITY_NONMOTORPARKING (城市非机动车违停事件) 对应的数据块描述信息
+    public static class DEV_EVENT_CITY_NONMOTORPARKING_INFO extends SdkStructure
+    {
+        public int                 nChannelID;										// 通道号
+        public int                 nAction;										// 0:脉冲 1:开始 2:停止
+        public byte[]                szName=new byte[128];									// 事件名称
+        public double              PTS;											// 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;											// 事件发生的时间
+        public int                 nEventID;										// 事件ID
+
+        public NET_EVENT_FILE_INFO	stuFileInfo;									// 事件对应文件信息
+        public int                 nDetectRegionNum;                   			// 检测区域顶点数
+        public NET_POINT[]            DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; 		// 检测区域
+        public int					nAlarmNum;										// 报警阈值
+        public int					nNoMotorNum;									// 非机动车的个数
+        public byte[]				szPresetName=new byte[64];								// 事件触发的预置名称
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;						// 智能事件公共信息
+        public int                nViolationDuration;                             // 违法持续时长,单位:秒 缺省值0表示无意义
+        public int					nObjectNum;										// 检测到的物体个数
+        public NET_MSG_OBJECT[]		stuObjects=new NET_MSG_OBJECT[HDBJ_MAX_OBJECTS_NUM];				// 检测到的物体
+        public byte[]				szSourceID=new byte[32];								    // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int               dwSnapFlagMask;									// 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public SCENE_IMAGE_INFO             stuSceneImage;                                               // 全景广角图
+        public Pointer                      pstuImageInfo;					                      // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+        public int				     nImageInfoNum;						                // 图片信息个数
+        public NET_EVENT_INFO_EXTEND        stuEventInfoEx = new NET_EVENT_INFO_EXTEND();                //事件公共扩展字段结构体
+        public byte[]                byReserved=new byte[892];							// 保留字节
+    };
+    // 事件类型 EVENT_IVS_HOLD_UMBRELLA (违规撑伞检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_HOLD_UMBRELLA_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                         // 通道号
+        public int					nAction;						    // 0:脉冲 1:开始 2:停止
+        public byte[]                szName=new byte[128];                        // 事件名称
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                nEventID;                           // 事件ID
+        public NET_EVENT_FILE_INFO	stuFileInfo;						// 事件对应文件信息
+        public NET_POINT[]           DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; // 规则检测区域
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_MSG_OBJECT[]       stuObjects=new NET_MSG_OBJECT[HDBJ_MAX_OBJECTS_NUM];	// 检测到的物体
+        public int                 nObjectNum;                         // 检测到的物体个数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public byte[]				szPresetName=new byte[64];					// 事件触发的预置名称
+        public int                nViolationDuration;                 // 违法持续时长,单位:秒 缺省值0表示无意义
+        public byte[]				szSourceID=new byte[32];						// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int               dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public byte[]                bReserved=new byte[4092];                    // 保留字节,留待扩展.
+    };
+    // 事件类型 EVENT_IVS_GARBAGE_EXPOSURE (垃圾暴露检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_GARBAGE_EXPOSURE_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                         // 通道号
+        public int					nAction;							// 0:脉冲 1:开始 2:停止
+        public byte[]                szName=new byte[128];                        // 事件名称
+        public double              PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                // 事件发生的时间
+        public int                nEventID;                           // 事件ID
+        public NET_EVENT_FILE_INFO	stuFileInfo;						// 事件对应文件信息
+        public NET_POINT[]           DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; // 规则检测区域
+        public int                 nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_MSG_OBJECT[]       stuObjects=new NET_MSG_OBJECT[HDBJ_MAX_OBJECTS_NUM];	// 检测到的物体
+        public int                 nObjectNum;                         // 检测到的物体个数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public byte[]				szPresetName=new byte[64];					// 事件触发的预置名称
+        public int                nViolationDuration;                 // 违法持续时长,单位:秒 缺省值0表示无意义
+        public byte[]				szSourceID=new byte[32];						// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int               dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON
+    	public Pointer           pstuImageInfo;					     // 图片信息数组,指针对应NET_IMAGE_INFO_EX2的数组    
+    	public int				 nImageInfoNum;						 // 图片信息个数
+    	public NET_EVENT_INFO_EXTEND	stuEventInfoEx =new NET_EVENT_INFO_EXTEND();// 事件公共扩展字段结构体                
+        public byte[]            bReserved=new byte[3016];           // 保留字节,留待扩展.
+    } ;
+    // 事件类型 EVENT_IVS_DUSTBIN_OVER_FLOW (垃圾桶满溢检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_DUSTBIN_OVER_FLOW_INFO extends SdkStructure
+    {
+        public int                         nChannelID;                         // 通道号
+        public int					        nAction;							// 0:脉冲 1:开始 2:停止
+        public byte[]                      szName=new byte[128];                        // 事件名称
+        public double                      PTS;                                // 时间戳(单位是毫秒)
+        public NET_TIME_EX                 UTC;                                // 事件发生的时间
+        public int                         nEventID;                           // 事件ID
+        public NET_EVENT_FILE_INFO	        stuFileInfo;						// 事件对应文件信息
+        public NET_POINT[]                 DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; // 规则检测区域
+        public int                         nDetectRegionNum;                   // 规则检测区域顶点数
+        public NET_MSG_OBJECT[]            stuObjects=new NET_MSG_OBJECT[HDBJ_MAX_OBJECTS_NUM];	// 检测到的物体
+        public int                         nObjectNum;                         // 检测到的物体个数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;         // 智能事件公共信息
+        public byte[]				        szPresetName=new byte[64];					// 事件触发的预置名称
+        public int                         nViolationDuration;                 // 违法持续时长,单位:秒 缺省值0表示无意义
+        public byte[]				        szSourceID=new byte[32];						// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int                         dwSnapFlagMask;                     // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public Pointer                     pstuImageInfo;					   // 图片信息数组,指针对应NET_IMAGE_INFO_EX2数组    
+    	public int					       nImageInfoNum;					   // 图片信息个数
+    	public int                         nRuleId;                            // 规则编号
+    	public byte[]                      szRuleName = new byte[128];         // 规则名称
+    	public NET_EVENT_INFO_EXTEND	   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();// 事件公共扩展字段结构体
+    	public SCENE_IMAGE_INFO_EX		   stuSceneImage = new SCENE_IMAGE_INFO_EX();// 全景图图片信息,事件前2~5s抓图
+    	public Pointer			           pstuMosaicImage;					   // 合成图,指针对应SCENE_IMAGE_INFO_EX数组
+    	public int					       nMosaicImageNum;				       // 合成图个数
+    	public Pointer			           pstuAdvanceImage;				   // 事件发生前抓图,指针对应SCENE_IMAGE_INFO_EX数组
+    	public int					       nAdvanceImageNum;				   // 事件发生前抓图个数                
+        public byte[]                      bReserved=new byte[2088 - POINTERSIZE*2]; // 保留字节,留待扩展.
+    } ;
+    // 事件类型 EVENT_IVS_DOOR_FRONT_DIRTY (门前脏乱检测事件) 对应的数据块描述信息
+    public static class DEV_EVENT_DOOR_FRONT_DIRTY_INFO extends SdkStructure
+    {
+        public int                         nChannelID;                                              // 通道号
+        public int					        nAction;							                     // 0:脉冲 1:开始 2:停止
+        public byte[]                      szName=new byte[128];                                    // 事件名称
+        public double                      PTS;                                                     // 时间戳(单位是毫秒)
+        public NET_TIME_EX                 UTC;                                                     // 事件发生的时间
+        public int                         nEventID;                                                // 事件ID
+        public NET_EVENT_FILE_INFO	        stuFileInfo;						                     // 事件对应文件信息
+        public NET_POINT[]                 DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM];   // 规则检测区域
+        public int                         nDetectRegionNum;                                        // 规则检测区域顶点数
+        public NET_MSG_OBJECT[]            stuObjects=new NET_MSG_OBJECT[HDBJ_MAX_OBJECTS_NUM];	 // 检测到的物体
+        public int                         nObjectNum;                                              // 检测到的物体个数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                                      // 智能事件公共信息
+        public byte[]				        szPresetName=new byte[64];					             // 事件触发的预置名称
+        public byte[]				        szShopAddress=new byte[256];					         // 商铺地址名称
+        public int                         nViolationDuration;                                      // 违法持续时长,单位:秒,缺省值0表示无意义
+        public byte[]				        szSourceID=new byte[32];						         // 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+        public int                         dwSnapFlagMask;                                          // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public byte[]                      bReserved=new byte[4092];                                // 保留字节,留待扩展.
+    } ;
+
+    // CLIENT_StartRemoteUpgrade-输入参数
+    public static class NET_IN_START_REMOTE_UPGRADE_INFO extends SdkStructure
+    {
+        public int							    dwSize;						// 此结构体大小
+        public int							    nListNum;					// 需要升级的远程通道个数
+        public Pointer                         pstuList;					// 需要升级的远程通道信息
+        public Pointer							pReserved;					// 字节对齐
+        public byte[]							szFileName=new byte[256];	// 升级文件名称
+        public Callback			            cbRemoteUpgrade;			// 升级进度回调函数
+        public Pointer							dwUser;						// 用户数据
+		public int						        nPacketSize;				// 每次分包发送大小,为0默认为16K
+
+        public NET_IN_START_REMOTE_UPGRADE_INFO()
+        {
+            this.dwSize = this.size();
+        }
+    };
+
+    // CLIENT_StartRemoteUpgrade-输出参数
+    public static class NET_OUT_START_REMOTE_UPGRADE_INFO extends SdkStructure
+    {
+        public int							dwSize;
+
+        public NET_OUT_START_REMOTE_UPGRADE_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // CLIENT_AttachRemoteUpgradeState-输入参数
+    public static class NET_IN_ATTACH_REMOTEUPGRADE_STATE extends SdkStructure
+    {
+        public int							dwSize;						// 此结构体大小
+        public Callback	                cbCallback;					// 回调
+        public Pointer					    dwUser;						// 用户数据
+
+        public NET_IN_ATTACH_REMOTEUPGRADE_STATE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // CLIENT_AttachRemoteUpgradeState-输出参数
+    public static class NET_OUT_ATTACH_REMOTEUPGRADE_STATE extends SdkStructure
+    {
+        public int							dwSize;						// 此结构体大小
+
+        public NET_OUT_ATTACH_REMOTEUPGRADE_STATE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 远程通道信息
+    public static class NET_REMOTE_UPGRADE_CHNL_INFO extends SdkStructure
+    {
+        public int					nChannel;					// 远程通道号
+        public byte[]				byReserved=new byte[512];			// 预留字段
+    };
+
+    // 升级远程设备程序回调函数
+    public interface  fRemoteUpgradeCallBack extends Callback{
+        public void invoke(LLong lLoginID, LLong lUpgradeID, int emState, int nParam1, int nParam2, Pointer dwUser);
+    }
+
+    // 远程升级回调类型
+    public static class EM_REMOTE_UPGRADE_CB_TYPE extends SdkStructure
+    {
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_APPENDING=0;				    // 推送回调	nParam1 文件总大小 nParam2 已发送大小
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_EXECUTE=1;					// 执行回调	nParam1 执行execute的结果
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_FAILED=2;					// 失败回调  nParam1 错误码
+        public static final int EM_REMOTE_UPGRADE_CB_TYPE_CANCEL=3;					// 取消回调
+    };
+
+    // 升级状态回调函数
+    public interface  fRemoteUpgraderStateCallback extends Callback{
+        public void invoke(LLong lLoginId, LLong lAttachHandle, NET_REMOTE_UPGRADER_NOTIFY_INFO pBuf, int dwBufLen, Pointer pReserved, Pointer dwUser);
+    }
+
+    // 远程设备升级消息上报
+    public static class NET_REMOTE_UPGRADER_NOTIFY_INFO extends SdkStructure
+    {
+        public int							nStateNum;					// 状态数
+        public Pointer		                pstuStates;					// 状态列表
+        public byte[]					    byReserved=new byte[1024];			// 预留
+    };
+
+    // 远程设备升级状态
+    public static class NET_REMOTE_UPGRADER_STATE extends SdkStructure
+    {
+        public int								nChannel;					// 通道号
+        public int			                    emState;					// 状态(对应的枚举值EM_REMOTE_UPGRADE_STATE)
+        public int								nProgress;					// 进度
+        public byte[]                           szDeviceID=new byte[128];            // 远程设备ID
+    };
+
+    // 远程设备升级状态
+    public static class EM_REMOTE_UPGRADE_STATE extends SdkStructure
+    {
+        public static final int EM_REMOTE_UPGRADE_STATE_UNKNOWN=0;							    // 未知
+        public static final int EM_REMOTE_UPGRADE_STATE_INIT=1;								// 初始状态(未升级)
+        public static final int EM_REMOTE_UPGRADE_STATE_DOWNLOADING=2;						    // 正在下载数据
+        public static final int EM_REMOTE_UPGRADE_STATE_UPGRADING=3;							// 正在升级
+        public static final int EM_REMOTE_UPGRADE_STATE_FAILED=4;								// 升级失败
+        public static final int EM_REMOTE_UPGRADE_STATE_SUCCEEDED=5;							// 升级成功
+        public static final int EM_REMOTE_UPGRADE_STATE_CANCELLED=6;							// 取消升级
+        public static final int EM_REMOTE_UPGRADE_STATE_PREPARING=7;							// 准备升级中
+    };
+
+    //开始升级远程设备程序
+    public LLong  CLIENT_StartRemoteUpgrade(LLong lLoginID, NET_IN_START_REMOTE_UPGRADE_INFO pInParam, NET_OUT_START_REMOTE_UPGRADE_INFO pOutParam, int nWaitTime);
+
+    //结束升级远程设备程序
+    public Boolean  CLIENT_StopRemoteUpgrade(LLong lUpgradeID);
+
+    // 订阅ipc升级状态观察接口
+    public LLong  CLIENT_AttachRemoteUpgradeState(LLong lLoginID, NET_IN_ATTACH_REMOTEUPGRADE_STATE pInParam, NET_OUT_ATTACH_REMOTEUPGRADE_STATE pOutParam, int nWaitTime);
+
+    // 取消订阅升级状态接口
+    public Boolean  CLIENT_DetachRemoteUpgradeState(LLong lAttachHandle);
+
+    // 设置子连接网络参数, pSubConnectNetParam 资源由用户申请和释放
+    public Boolean CLIENT_SetSubConnectNetworkParam(LLong lLoginID, NET_SUBCONNECT_NETPARAM pSubConnectNetParam);
+
+    // 设置子链接网络参数
+    public static class NET_SUBCONNECT_NETPARAM extends SdkStructure
+    {
+        public int                 dwSize;                                             // 结构体大小
+        public int				    nNetPort;								            // 网络映射端口号
+        public byte[]				szNetIP=new byte[NET_MAX_IPADDR_EX_LEN];			// 网络映射IP地址
+        public NET_SUBCONNECT_NETPARAM()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+    public static class EM_ANALYSE_TASK_START_RULE extends SdkStructure
+    {
+        public static final int  EM_ANALYSE_TASK_START_NOW=0;          // 立刻启动
+        public static final int  EM_ANALYSE_TASK_START_LATER=1;        // 稍候手动启动
+    };
+
+    // 视频分析支持的对象类型
+    public static class EM_ANALYSE_OBJECT_TYPE extends SdkStructure
+    {
+        public static final int  EM_ANALYSE_OBJECT_TYPE_UNKNOWN=0;           // 未知的
+        public static final int  EM_ANALYSE_OBJECT_TYPE_HUMAN=1;             // 人
+        public static final int  EM_ANALYSE_OBJECT_TYPE_VEHICLE=2;           // 车辆
+        public static final int  EM_ANALYSE_OBJECT_TYPE_FIRE=3;              // 火
+        public static final int  EM_ANALYSE_OBJECT_TYPE_SMOKE=4;             // 烟雾
+        public static final int  EM_ANALYSE_OBJECT_TYPE_PLATE=5;             // 片状物体
+        public static final int  EM_ANALYSE_OBJECT_TYPE_HUMANFACE=6;         // 人脸
+        public static final int  EM_ANALYSE_OBJECT_TYPE_CONTAINER=7;         // 货柜
+        public static final int  EM_ANALYSE_OBJECT_TYPE_ANIMAL=8;            // 动物
+        public static final int  EM_ANALYSE_OBJECT_TYPE_TRAFFICLIGHT=9;      // 红绿灯
+        public static final int  EM_ANALYSE_OBJECT_TYPE_PASTEPAPER=10;        // 贴纸 贴片
+        public static final int  EM_ANALYSE_OBJECT_TYPE_HUMANHEAD=11;         // 人的头部
+        public static final int  EM_ANALYSE_OBJECT_TYPE_ENTITY=12;            // 普通物体
+    };
+
+    // 事件类型 EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房穿着检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO extends SdkStructure
+    {
+        public int                         nChannelID;									// 通道号
+        public int                         nAction;									// 0:脉冲 1:开始 2:停止
+        public byte[]                      szName=new byte[128];						// 事件名称
+        public double                      PTS;										// 时间戳(单位是毫秒)
+        public NET_TIME_EX                 UTC;										// 事件发生的时间
+        public int                         nEventID;									// 事件ID
+        public int							nRuleID;									// 用于
+        public int                         emClassType;								// 智能事件所属大类
+        public byte[]						szClassAlias=new byte[16];					// 智能事件所属大类别名
+        public HUMAN_IMAGE_INFO			stuHumanImage;								// 人体图片信息
+        public SCENE_IMAGE_INFO			stuSceneImage;								// 全景广角图片信息
+        public FACE_IMAGE_INFO				stuFaceImage;								// 人脸图片信息
+        public int						    nObjectID;									// 目标ID
+        public int	                        emHasMask;									// 检测是否有戴口罩(对应枚举值EM_NONMOTOR_OBJECT_STATUS)
+        public int	                        emHasChefHat;								// 检测是否有戴厨师帽(对应枚举值EM_NONMOTOR_OBJECT_STATUS)
+        public int	                        emHasChefClothes;							// 检测是否有穿厨师服(对应枚举值EM_NONMOTOR_OBJECT_STATUS)
+        public int		                    emChefClothesColor;							// 厨师服颜色(对应枚举值EM_OBJECT_COLOR_TYPE)
+        public NET_IMAGE_INFO_EX2			stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int					        nImageInfoNum;                              //图片信息个数
+        public byte					        bReserved[] = new byte[1024];               //预留字节
+    };
+
+
+    // 事件类型EVENT_IVS_BANNER_DETECTION(拉横幅事件)对应数据块描述信息
+    public static class DEV_EVENT_BANNER_DETECTION_INFO extends SdkStructure
+    {
+        public int					nChannelID;									  // 通道号
+        public int                 nEventID;                                     // 事件ID
+        public byte[]				szName=new byte[NET_EVENT_NAME_LEN];		  // 事件名称
+        public double              PTS;                                          // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                          // 事件发生的时间
+        public int                 nAction;                                      // 1:开始 2:停止
+
+        public int		            emClassType;								  // 智能事件所属大类(对应EM_CLASS_TYPE枚举)
+        public NET_EVENT_FILE_INFO	stuFileInfo;								  // 事件对应文件信息
+        public int					nObjectNum;									  // 检测到的物体个数
+        public NET_MSG_OBJECT []      stuObjects=new NET_MSG_OBJECT[32];         // 检测到的物体
+        public int                 nDetectRegionNum;                   		  // 检测区域顶点数
+        public NET_POINT []           DetectRegion=new NET_POINT[NET_MAX_DETECT_REGION_NUM]; 	  // 检测区域
+        public int					nCount;										  // 事件触发次数
+        public int				    nPresetID;									  // 预置点
+        public NET_EXTENSION_INFO  stuExtensionInfo;                             // 扩展信息
+        public Pointer			   pstuImageInfo;                                 //图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}
+        public int				   nImageInfoNum;                                 //图片信息个数
+        public int				   bSceneImage;                                   //pstuSceneImage是否有效
+        public Pointer			   pstuSceneImage;                                //全景广角图, refer to {@link SCENE_IMAGE_INFO_EX}
+        public byte[]			   byReserved = new byte[1020-2*POINTERSIZE];     //保留字节,留待扩展.
+
+        public DEV_EVENT_BANNER_DETECTION_INFO(){
+    		for(int i=0;i<stuObjects.length;i++){
+    			stuObjects[i]=new NET_MSG_OBJECT();
+    		}
+    		for(int i=0;i<DetectRegion.length;i++){
+    			DetectRegion[i]=new NET_POINT();
+    		}
+        }
+    } ;
+
+    // 事件类型EVENT_IVS_BANNER_DETECTION(拉横幅检测事件)对应的规则配置
+    public static class NET_BANNER_DETECTION_RULE_INFO extends SdkStructure
+    {
+        public int                                     dwSize;                         // 结构体大小
+        public int							            nDetectRegionPoint;             // 检测区顶点数
+        public POINTCOORDINATE	[]			            stuDetectRegion=new POINTCOORDINATE[20];            // 检测区域
+
+        public int										nMinDuration;					// 最短持续时间, 单位:秒,范围1-600, 默认30
+        public int										nReportInterval;				// 重复报警间隔,单位:秒,范围0-600,默认30,为0表示不重复
+        public int										nSensitivity;					// 检测灵敏度,范围1-10
+        public int										nBannerPercent;					// 近景抓拍时横幅在画面的百分比,范围1~100,默认80
+        public byte[]									bReserved=new byte[520]; 				// 保留字节
+
+        public NET_BANNER_DETECTION_RULE_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+    public static class POINTCOORDINATE extends SdkStructure
+    {
+        public int                nX;								// 第一个元素表示景物点的x坐标(0~8191)
+        public int                nY;								// 第二个元素表示景物点的y坐标(0~8191)
+    } ;
+
+    // 事件类型 EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧类型衣着检测)对应的规则配置
+    public static class NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO extends SdkStructure
+    {
+        public int                                     dwSize;                         // 结构体大小
+        public int									    bMaskEnable;					// 是否开启口罩检测  (TRUE:开启 FALSE:关闭)
+        public int									    bChefHatEnable;					// 是否开启厨师帽检测(TRUE:开启 FALSE:关闭)
+        public int									    bChefClothesEnable;				// 是否开启厨师服检测(TRUE:开启 FALSE:关闭)
+        public int										nChefClothesColorNum;			// 配置检查允许的厨师服颜色个数
+        public int	[]			                        emChefClothesColors=new int[8]; // 厨师衣服颜色(对应的枚举值EM_CFG_CHEF_CLOTHES_COLORS)
+        public int										nReportInterval;				// 重复报警间隔,单位:秒,范围0-600,默认30,为0表示不重复
+        public byte[]									byReserved=new byte[4096];		// 保留字节
+
+        public NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 智能分析规则信息
+    public static class NET_ANALYSE_RULE_INFO extends SdkStructure
+    {
+        public int             emClassType;                                // 分析大类类型(对应的枚举值EM_SCENE_CLASS_TYPE)
+        public int             dwRuleType;                                 // 规则类型, 详见dhnetsdk.h中"智能分析事件类型"
+        // EVENT_IVS_FACEANALYSIS(人脸分析)对应结构体 NET_FACEANALYSIS_RULE_INFO
+		// EVENT_IVS_NONMOTORDETECT(非机动车)对应结构体 NET_NONMOTORDETECT_RULE_INFO
+		// EVENT_IVS_VEHICLEDETECT(机动车) 对应结构体 NET_VEHICLEDETECT_RULE_INFO
+		// EVENT_IVS_HUMANTRAIT(人体) 对应结构体NET_HUMANTRAIT_RULE_INFO
+		// EVENT_IVS_XRAY_DETECT_BYOBJECT(X光按物体检测) 对应结构体 NET_XRAY_DETECT_BYPBJECT_RULE_INFO
+		// EVENT_IVS_WORKCLOTHES_DETECT(工装检测)对应结构体NET_WORKCLOTHDETECT_RULE_INFO
+		// EVENT_IVS_WORKSTATDETECTION(作业统计)对应结构体NET_WORKSTATDETECTION_RULE_INFO
+		// EVENT_IVS_CROSSLINEDETECTION(警戒线)对应结构体NET_CROSSLINE_RULE_INFO
+		// EVENT_IVS_CROSSREGIONDETECTION(警戒区)对应结构体 NET_CROSSREGION_RULE_INFO
+        // EVENT_IVS_FEATURE_ABSTRACT(特征提取)对应结构体 NET_FEATURE_ABSTRACT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件)对应结构体NET_ELECTRIC_GLOVE_DETECT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件)对应结构体NET_ELECTRIC_LADDER_DETECT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件)对应结构体NET_ELECTRIC_CURTAIN_DETECT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件)对应结构体NET_ELECTRIC_FENCE_DETECT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件)对应结构体NET_ELECTRIC_SIGNBOARD_DETECT_RULE_INFO
+        // EVENT_IVS_ELECTRIC_BELT_DETECT(电力检测安全带检测事件)对应结构体NET_ELECTRIC_BELT_DETECT_RULE_INFO
+		// EVENT_IVS_BANNER_DETECTION(拉横幅检测事件)对应结构体NET_BANNER_DETECTION_RULE_INFO
+		// EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(智慧厨房衣着检测事件)对应结构体NET_SMART_KITCHEN_CLOTHES_DETECTION_RULE_INFO
+		// EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件)对应结构体NET_WATER_STAGE_MONITOR_RULE_INFO
+		// EVENT_IVS_FLOATINGOBJECT_DETECTION(漂浮物检测事件)对应结构体 NET_FLOATINGOBJECT_DETECTION_RULE_INFO
+        // EVENT_IVS_RIOTERDETECTION (人群聚集) 对应结构体 NET_RIOTERDETECTION_RULE_INFO
+        // EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应结构体 NET_LEFTDETECTION_RULE_INFO
+        // EVENT_IVS_PARKINGDETECTION (非法停车事件) 对应结构体 NET_PARKINGDETECTION_RULE_INFO
+        // EVENT_IVS_WANDERDETECTION( 徘徊事件)对应结构体 NET_WANDERDETECTION_RULE_INFO
+        // EVENT_IVS_VIDEOABNORMALDETECTION (视频异常)对应结构体 NET_VIDEOABNORMALDETECTION_RULE_INFO
+        // EVENT_IVSS_FACEATTRIBUTE (人脸属性检测) 对应结构体 NET_FACEATTRIBUTE_RULE_INFO
+        // EVENT_IVS_MOVEDETECTION (移动检测) 对应结构体 NET_MOVEDETECTION_RULE_INFO
+		// EVENT_IVSS_FACECOMPARE(IVSS目标识别事件) 对应结构体 NET_FACECOMPARE_INFO
+		// EVENT_IVS_CONVEYER_BELT_DETECT(传送带检测) 对应结构体 NET_CONVEYER_BELT_DETECT_RULE_INFO
+        // EVENT_IVS_NUMBERSTAT(数量统计事件) 对应结构体NET_NUMBERSTAT_RULE_INFO
+        // EVENT_IVS_STEREO_FIGHTDETECTION(立体行为分析打架/剧烈运动检测) 对应结构体NET_STEREO_FIGHTDETECTION_RULE_INFO
+        // EVENT_IVS_SMOKEDETECTION(烟雾报警检测) 对应结构体 NET_SMOKEDETECTION_RULE_INFO
+        // EVENT_IVS_FIREDETECTION(火警检测)对应结构体 NET_FIREDETECTION_RULE_INFO
+        // EVENT_IVS_PHONECALL_DETECT(打电话检测)对应结构体 NET_PHONECALL_DETECT_RULE_INFO
+        // EVENT_IVS_SMOKING_DETECT(吸烟检测)对应结构体 NET_SMOKING_DETECT_RULE_INFO
+        // EVENT_IVS_STEREO_STEREOFALLDETECTION(立体行为分析跌倒检测)对应结构体 NET_STEREO_STEREOFALLDETECTION_RULE_INFO
+        // EVENT_IVS_WATER_LEVEL_DETECTION(水位尺检测)对应结构体 NET_WATER_LEVEL_DETECTION_RULE_INFO
+        // EVENT_IVS_CLIMBDETECTION(攀高检测)对应结构体 NET_CLIMBDETECTION_RULE_INFO
+        // EVENT_IVS_ARTICLE_DETECTION(物品检测)对应结构体NET_ARTICLE_DETECTION_RULE_INFO
+        // EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应结构体NET_IVS_MAN_NUM_DETECTION_RULE_INFO
+		// EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应结构体NET_IVS_DIALRECOGNITION_RULE_INFO
+		// EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应结构体NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO
+		// EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应结构体 NET_TRAFFIC_ROAD_BLOCK_RULE_INFO
+		// EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应结构体 NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO
+		// EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应结构体 NET_TRAFFIC_FLOWSTAT_RULE_INFO
+		// EVENT_IVS_TRAFFIC_OVERSPEED(超速事件) 对应结构体 NET_TRAFFIC_OVERSPEED_RULE_INFO
+		// EVENT_IVS_TRAFFIC_UNDERSPEED(欠速事件) 对应结构体 NET_TRAFFIC_UNDERSPEED_RULE_INFO
+		// EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应结构体 NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO
+		// EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应结构体 NET_TRAFFIC_CROSSLANE_RULE_INFO
+		// EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应结构体 NET_TRAFFIC_JAM_RULE_INFO
+		// EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应结构体 NET_TRAFFIC_PEDESTRAIN_RULE_INFO
+		// EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应结构体 NET_TRAFFIC_THROW_RULE_INFO
+		// EVENT_IVS_TRAFFIC_RETROGRADE(逆行检测事件) 对应结构体 NET_TRAFFIC_RETROGRADE_RULE_INFO
+		// EVENT_IVS_TRAFFICACCIDENT(交通事故事件) 对应结构体 NET_TRAFFIC_ACCIDENT_RULE_INFO
+		// EVENT_IVS_TRAFFIC_BACKING(倒车事件) 对应结构体 NET_TRAFFIC_BACKING_RULE_INFO
+		// EVENT_IVS_FOG_DETECTION(起雾检测事件) 对应结构体 NET_FOG_DETECTION_RULE_INFO
+		// EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件) 对应结构体 NET_CROSSREGION_RULE_INFO
+		// EVENT_IVS_TRAFFIC_PARKING(交通违章停车事件) 对应结构体 NET_TRAFFIC_PARKING_RULE_INFO
+		// EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件) 对应结构体 NET_FINANCE_CASH_TRANSACTION_RULE_INFO
+		// EVENT_IVS_LEAVEDETECTION(离岗检测事件) 对应结构体 NET_LEAVEDETECTION_RULE_INFO
+		// EVENT_IVS_LADLE_NO_DETECTION(钢包编号识别事件) 对应规则配置为空
+		// EVENT_IVS_DIALRECOGNITION_EX(仪表检测事件)对应结构体NET_IVS_DIALRECOGNITION_RULE_INFO
+        public Pointer			pReserved;							        // 规则配置, 具体结构体类型根据dwRuleType来确定, 具体信息见dwRuleType的注释
+        public int				nObjectTypeNum;						        // 检测物体类型个数, 为0 表示不指定物体类型
+        public int	[]		    emObjectTypes=new int[16];					// 检测物体类型列表(对应的枚举值EM_ANALYSE_OBJECT_TYPE)
+        public byte[]          byReserved=new byte[956];                   // 保留字节
+    } ;
+
+
+    // 智能分析规则
+    public static class NET_ANALYSE_RULE extends SdkStructure
+    {
+        public NET_ANALYSE_RULE_INFO []          stuRuleInfos=new NET_ANALYSE_RULE_INFO[MAX_ANALYSE_RULE_COUNT];       // 分析规则信息
+        public int                               nRuleCount;                                 // 分析规则条数
+        public byte[]                            byReserved=new byte[1028];                           // 保留字节
+
+    public NET_ANALYSE_RULE(){
+
+        for(int i=0;i<stuRuleInfos.length;i++){
+            stuRuleInfos[i]=new NET_ANALYSE_RULE_INFO();
+        }
+
+
+    }
+
+    };
+
+    // 推送图片文件信息
+    public static class NET_PUSH_PICFILE_INFO extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                           emStartRule;                            // 智能任务启动规则(对应的枚举值EM_ANALYSE_TASK_START_RULE)
+        public NET_ANALYSE_RULE              stuRuleInfo=new NET_ANALYSE_RULE();                            // 分析规则信息
+        public byte[]                        szTaskUserData = new byte[256];         // 任务数据
+        public byte[]					     szMQConfig = new byte[4096];			 // MQ配置信息,参考Paas协议配置中心-算子配置,小型化方案使用。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置
+        public int						     nIsRepeat;								 // 是否许可重复,0默认是可以重复,1表示不能重复
+        public NET_ANALYSE_TASK_GLOBAL			stuGlobal=new NET_ANALYSE_TASK_GLOBAL();								// 全局配置
+        public NET_ANALYSE_TASK_MODULE			stuModule=new NET_ANALYSE_TASK_MODULE();								// 模块配置
+        public NET_PUSH_PICFILE_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+               @Override
+        public int fieldOffset(String name) {
+            return super.fieldOffset(name);
+        }
+    }
+
+
+    // 智能分析数据源类型
+    public static class EM_DATA_SOURCE_TYPE extends SdkStructure
+    {
+        public static final int  EM_DATA_SOURCE_REMOTE_REALTIME_STREAM = 1;  // 远程实时流 , 对应 NET_REMOTE_REALTIME_STREAM_INFO
+        public static final int  EM_DATA_SOURCE_PUSH_PICFILE=2;                // 主动推送图片文件, 对应 NET_PUSH_PICFILE_INFO
+    };
+
+    // CLIENT_AddAnalyseTask 接口输出参数
+    public static class NET_OUT_ADD_ANALYSE_TASK extends SdkStructure
+    {
+        public int                            dwSize;                                 // 结构体大小
+        public int                            nTaskID;                                // 任务ID
+        public int                            nVirtualChannel;                        // 任务对应的虚拟通道号
+        public byte[]                         szUrl =new byte[256];                  // 智能码流rtsp地址
+        public NET_OUT_ADD_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 添加智能分析任务, 输入参数pInParam的结构体类型根据emDataSourceType的值来决定, pInParam 和 pOutParam 资源由用户申请和释放
+    public Boolean CLIENT_AddAnalyseTask(LLong lLoginID, int emDataSourceType, Pointer pInParam, NET_OUT_ADD_ANALYSE_TASK pOutParam, int nWaitTime);
+
+    // CLIENT_StartAnalyseTask 接口输入参数
+    public static class NET_IN_START_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                           nTaskID;                                // 任务ID
+
+        public NET_IN_START_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // CLIENT_StartAnalyseTask 接口输出参数
+    public static class NET_OUT_START_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+
+        public NET_OUT_START_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 视频流协议类型
+    public static class EM_STREAM_PROTOCOL_TYPE extends SdkStructure
+    {
+        public static final int EM_STREAM_PROTOCOL_UNKNOWN=0;         // 未知
+        public static final int EM_STREAM_PROTOCOL_PRIVATE_V2=1;      // 私有二代
+        public static final int EM_STREAM_PROTOCOL_PRIVATE_V3=2;      // 私有三代
+        public static final int EM_STREAM_PROTOCOL_RTSP=3;            // rtsp
+        public static final int EM_STREAM_PROTOCOL_ONVIF=4;           // Onvif
+        public static final int EM_STREAM_PROTOCOL_GB28181=5;         // GB28181
+        public static final int EM_STREAM_PROTOCOL_HIKVISION = 6;        
+        public static final int EM_STREAM_PROTOCOL_BSCP = 7;			  // 蓝星
+    };
+
+    // 远程实时视频源信息
+    public static class NET_REMOTE_REALTIME_STREAM_INFO extends SdkStructure
+    {
+        public int                             dwSize;                                 // 结构体大小
+        public int                             emStartRule;                            // 智能任务启动规则,Polling任务时无效(参考)EM_ANALYSE_TASK_START_RULE
+        public NET_ANALYSE_RULE                stuRuleInfo=new NET_ANALYSE_RULE();                            // 分析规则信息
+        public int                             emStreamProtocolType;                   // 视频流协议类型(参考EM_STREAM_PROTOCOL_TYPE)
+        public byte[]                          szPath=new byte[NET_COMMON_STRING_256]; // 视频流地址
+        public byte[]                 	        szIp=new byte[NET_MAX_IPADDR_OR_DOMAIN_LEN];      // IP 地址
+        public short                 	        wPort;                      		    // 端口号
+        public byte[]                          byReserved=new byte[2];                 // 用于字节对齐
+        public byte[]                  	    szUser=new byte[NET_COMMON_STRING_64];  // 用户名
+        public byte[]                  	    szPwd=new byte[NET_COMMON_STRING_64];   // 密码
+        public int                 	        nChannelID;                             // 通道号
+        public int                             nStreamType;                            // 码流类型, 0:主码流; 1:辅1码流; 2:辅2码流;
+        public byte[]                          szTaskUserData=new byte[256];           // 任务数据
+        public byte[]							szMQConfig = new byte[4096];			// MQ配置信息,参考Paas协议配置中心-算子配置,小型化方案使用。当远程访问类型为RabbitMq时,尝试从该字段获取MQ配置
+        public int								nIsRepeat;								// 是否许可重复,0默认是可以重复,1表示不能重复
+        public NET_ANALYSE_TASK_GLOBAL			stuGlobal=new NET_ANALYSE_TASK_GLOBAL();								// 全局配置
+        public NET_ANALYSE_TASK_MODULE			stuModule=new NET_ANALYSE_TASK_MODULE();								// 模块配置
+    	public byte[]							szChannelId=new byte[32];				// 平台通道信息(专用)
+        public NET_REMOTE_REALTIME_STREAM_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 启动智能分析任务, pInParam 和 pOutParam 资源由用户申请和释放
+    public Boolean CLIENT_StartAnalyseTask(LLong lLoginID, NET_IN_START_ANALYSE_TASK pInParam, NET_OUT_START_ANALYSE_TASK pOutParam, int nWaitTime);
+
+    // CLIENT_RemoveAnalyseTask 接口输入参数
+    public static class NET_IN_REMOVE_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                            nTaskID;                                // 任务ID
+
+        public NET_IN_REMOVE_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+    // CLIENT_RemoveAnalyseTask 接口输出参数
+    public static class NET_OUT_REMOVE_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+
+        public NET_OUT_REMOVE_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 删除(停止)智能分析任务, pInParam 和 pOutParam 资源由用户申请和释放
+    public Boolean CLIENT_RemoveAnalyseTask(LLong lLoginID, NET_IN_REMOVE_ANALYSE_TASK pInParam, NET_OUT_REMOVE_ANALYSE_TASK pOutParam, int nWaitTime);
+
+    /////////////////////////////////智能分析服务接口 开始/////////////////////////////////
+    public static final int   MAX_ANALYSE_REMAIN_CAPACITY_NUM     =32;      // 智能分析最大剩余数量
+    public static final int   MAX_ANALYSE_RULE_COUNT              =32;      // 最大分析规则条数
+    public static final int   MAX_ANALYSE_PICTURE_FILE_NUM        =32;      // 图片文件最大数量
+    public static final int   MAX_ANALYSE_TASK_NUM                =64;      // 最大智能分析任务个数
+    public static final int   MAX_ANALYSE_FILTER_EVENT_NUM        =64;      // 最大支持过滤的事件个数
+    public static final int   MAX_ANALYSE_ALGORITHM_NUM           =16;      // 最大算法数量
+    public static final int   MAX_ANALYSE_TOTALCAPS_NUM           =32;      // 最大的智能分析总能力数量
+
+    // CLIENT_FindAnalyseTask 接口输入参数
+    public static class NET_IN_FIND_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+
+        public NET_IN_FIND_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // CLIENT_FindAnalyseTask 接口输出参数
+    public static class NET_OUT_FIND_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                           nTaskNum;                               // 智能分析任务个数
+        public NET_ANALYSE_TASKS_INFO []     stuTaskInfos=new NET_ANALYSE_TASKS_INFO[256];     // 智能分析任务信息
+
+
+        public NET_OUT_FIND_ANALYSE_TASK()
+        {
+            for(int i=0;i<stuTaskInfos.length;i++){
+                stuTaskInfos[i]=new NET_ANALYSE_TASKS_INFO();
+            }
+            this.dwSize = this.size();
+
+        }// 此结构体大小
+    } ;
+
+    // 智能分析任务信息
+    public static class NET_ANALYSE_TASKS_INFO extends SdkStructure
+    {
+        /**
+         任务ID
+         */
+        public			int					nTaskID;
+        /**
+         分析状态 {@link EM_ANALYSE_STATE}
+         */
+        public			int					emAnalyseState;
+        /**
+         错误码 {@link com.netsdk.lib.enumeration.EM_ANALYSE_TASK_ERROR}
+         */
+        public			int					emErrorCode;
+        /**
+         字节对齐
+         */
+        public			byte[]					byReserved1=new byte[4];
+        /**
+         任务数据
+         */
+        public			byte[]					szTaskUserData=new byte[256];
+        /**
+         录像分析进度,当任务添加接口CLIENT_AddAnalyseTask emDataSourceType参数为录像分析"EM_DATA_SOURCE_REMOTE_PICTURE_FILE"时有效 范围1~100,100表示分析完成
+         */
+        public			int					nVideoAnalysisProcess;
+        /**
+         智能流rtsp地址,实时流时才填写
+         */
+        public			byte[]					szUrl=new byte[256];
+        /**
+         智能大类类型 {@link EM_SCENE_CLASS_TYPE}
+         */
+        public			int					emClassType;
+        /**
+         数据源类型 {@link com.netsdk.lib.enumeration.EM_DATA_SOURCE_TYPE}
+         */
+        public			int					emSourceType;
+        /**
+         任务使用的分析子卡ID.-1表示无效子卡,大于等于0的值表示子卡ID号
+         emErrorCode为EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE或EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE时此字段有效
+         */
+        public			int					nChipId;
+        /**
+         保留字节
+         */
+        public			byte[]					byReserved=new byte[428];
+
+        public			NET_ANALYSE_TASKS_INFO(){
+        }
+    };
+
+    // 分析状态
+    public static class EM_ANALYSE_STATE extends SdkStructure
+    {
+        public static final int  EM_ANALYSE_STATE_UNKNOWN=0;             // 未知
+        public static final int  EM_ANALYSE_STATE_IDLE=1;                // 已创建但未运行
+        public static final int  EM_ANALYSE_STATE_ANALYSING=2;           // 分析中
+        public static final int  EM_ANALYSE_STATE_ANALYSING_WAITPUSH=3;  // 分析中并等待push数据
+        public static final int  EM_ANALYSE_STATE_FINISH=4;              // 正常完成
+        public static final int  EM_ANALYSE_STATE_ERROR=5;               // 执行异常
+        public static final int  EM_ANALYSE_STATE_REMOVED=6;             // 被删除
+        public static final int  EM_ANALYSE_STATE_ROUNDFINISH=7;         // 完成一轮视频源分析
+        public static final int   EM_ANALYSE_STATE_STARTING=8;           //任务开启状态
+
+    };
+
+
+    /**
+     * 查找智能分析任务信息, pInParam 和 pOutParam 资源由用户申请和释放
+     *  param[in] nWaitTime 接口超时时间, 单位毫秒
+     *  return TRUE表示成功 FALSE表示失败
+     */
+   public Boolean CLIENT_FindAnalyseTask(LLong lLoginID, NET_IN_FIND_ANALYSE_TASK pInParam, NET_OUT_FIND_ANALYSE_TASK pOutParam, int nWaitTime);
+
+    // CLIENT_PushAnalysePictureFile 接口输入参数
+    public static class NET_IN_PUSH_ANALYSE_PICTURE_FILE extends SdkStructure
+    {
+        public int                           dwSize;                                         // 结构体大小
+        public int                           nTaskID;                                        // 任务ID
+        public NET_PUSH_PICTURE_INFO []      stuPushPicInfos=(NET_PUSH_PICTURE_INFO[]) new NET_PUSH_PICTURE_INFO().toArray(MAX_ANALYSE_PICTURE_FILE_NUM);  // 推送图片信息
+        public int                           nPicNum;                                        // 推送图片数量
+        public int                           nBinBufLen;                                     // 数据缓冲区长度, 单位:字节
+        public Pointer                       pBinBuf;                                        // 数据缓冲区, 由用户申请和释放
+
+        public NET_IN_PUSH_ANALYSE_PICTURE_FILE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // X光机视角类型
+    public static class EM_XRAY_VIEW_TYPE extends SdkStructure
+    {
+        public static final int EM_XRAY_VIEW_TYPE_UNKNOWN = -1;									// 未知
+        public static final int EM_XRAY_VIEW_TYPE_MASTER=0;										// 主视角
+        public static final int EM_XRAY_VIEW_TYPE_SLAVE=1;										// 从视角
+    };
+
+    // 客户自定义信息, X光机专用
+    public static class NET_XRAY_CUSTOM_INFO extends SdkStructure
+    {
+        public int               emViewType;             // 视角类型
+        public byte[]                            szSerialNumber=new byte[128];    // 流水号
+        public byte[]                            byReserved=new byte[124];        // 保留字节
+
+        @Override
+        public String toString() {
+            return "NET_XRAY_CUSTOM_INFO{" +
+                    "emViewType=" + emViewType +
+                    ", szSerialNumber=" + new String(szSerialNumber) +
+                    '}';
+        }
+    } ;
+
+    // 智能分析图片信息
+    public static class NET_PUSH_PICTURE_INFO extends SdkStructure
+    {
+        public byte[]                            szFileID=new byte[NET_COMMON_STRING_128];// 文件ID
+        public int                               nOffset;                                 // 文件数据在二进制数据中的偏移, 单位:字节
+        public int                               nLength;                                 // 文件数据长度, 单位:字节
+        public NET_XRAY_CUSTOM_INFO              stuXRayCustomInfo;                       // 客户自定义信息, X光机专用
+        public byte[]                            szUrl=new byte[512];                     // 远程文件url地址  带访问所需必要信息 包含用户名 密码
+        public byte[]                            byReserved=new byte[256];                // 保留字节
+    } ;
+
+    // CLIENT_PushAnalysePictureFile 接口输出参数
+    public static class NET_OUT_PUSH_ANALYSE_PICTURE_FILE extends SdkStructure
+    {
+        public int                            dwSize;                                 // 结构体大小
+
+        public NET_OUT_PUSH_ANALYSE_PICTURE_FILE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 推送智能分析图片文件,当CLIENT_AddAnalyseTask的数据源类型emDataSourceType为 EM_DATA_SOURCE_PUSH_PICFILE 时使用
+    public Boolean CLIENT_PushAnalysePictureFile(LLong lLoginID, NET_IN_PUSH_ANALYSE_PICTURE_FILE pInParam, NET_OUT_PUSH_ANALYSE_PICTURE_FILE pOutParam, int nWaitTime);
+
+    /*--------任务开始:  CLIENT_AttachAnalyseTaskState / CLIENT_DetachAnalyseTaskState --------*/
+
+
+    // 智能分析任务状态回调信息
+    public static class NET_CB_ANALYSE_TASK_STATE_INFO extends SdkStructure
+    {
+        public NET_ANALYSE_TASKS_INFO[]         stuTaskInfos =(NET_ANALYSE_TASKS_INFO[])new NET_ANALYSE_TASKS_INFO().toArray(MAX_ANALYSE_TASK_NUM);      // 智能分析任务信息
+        public int               				 nTaskNum;                         									  // 任务个数
+        public byte[]                         	 byReserved =new byte[1024];             						      // 保留字节
+    };
+
+    // 智能分析状态订阅函数原型, lAttachHandle 为 CLIENT_AttachAnalyseTaskState 函数的返回值
+    public interface fAnalyseTaskStateCallBack extends Callback{
+        public int invoke(LLong lAttachHandle, Pointer pstAnalyseTaskStateInfo, Pointer dwUser);
+    };
+
+
+    // CLIENT_AttachAnalyseTaskState 接口输入参数
+    public static class NET_IN_ATTACH_ANALYSE_TASK_STATE extends SdkStructure
+    {
+        public int                              dwSize;                                           // 结构体大小
+        public int[]                            nTaskIDs = new int[MAX_ANALYSE_TASK_NUM];         // 智能分析任务ID
+        public int                              nTaskIdNum;                                       // 智能分析任务个数, 0表示订阅全部任务
+        public fAnalyseTaskStateCallBack        cbAnalyseTaskState;                               // 智能分析任务状态订阅函数
+        public Pointer                          dwUser;                 			               // 用户数据
+
+        public NET_IN_ATTACH_ANALYSE_TASK_STATE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+
+    // 订阅智能分析任务状态, pInParam 资源由用户申请和释放
+    public LLong CLIENT_AttachAnalyseTaskState(LLong lLoginID, NET_IN_ATTACH_ANALYSE_TASK_STATE pInParam, int nWaitTime);
+
+    // 取消订阅智能分析任务状态, lAttachHandle 为 CLIENT_AttachAnalyseTaskState接口的返回值
+    public Boolean CLIENT_DetachAnalyseTaskState(LLong lAttachHandle);
+
+
+
+    /*--------任务结束:  CLIENT_AttachAnalyseTaskState / CLIENT_DetachAnalyseTaskState --------*/
+
+    /*--------任务开始:  CLIENT_AttachAnalyseTaskResult / CLIENT_DetachAnalyseTaskResult --------*/
+    // 事件类型
+    public static class EM_ANALYSE_EVENT_TYPE extends SdkStructure
+    {
+    	public static final int EM_ANALYSE_EVENT_UNKNOWN = 0;                  // 未知
+    	public static final int EM_ANALYSE_EVENT_ALL=1;                        // 所有事件
+    	public static final int EM_ANALYSE_EVENT_FACE_DETECTION=2;           // 目标检测事件, 对应结构体 DEV_EVENT_FACEDETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_FACE_RECOGNITION=3;           // 目标识别事件, 对应结构体 DEV_EVENT_FACERECOGNITION_INFO
+    	public static final int EM_ANALYSE_EVENT_TRAFFICJUNCTION=4;           // 交通路口事件, 对应结构体 DEV_EVENT_TRAFFICJUNCTION_INFO
+    	public static final int EM_ANALYSE_EVENT_HUMANTRAIT=5;                // 人体特征事件, 对应结构体 DEV_EVENT_HUMANTRAIT_INFO
+    	public static final int EM_ANALYSE_EVENT_XRAY_DETECTION=6;             // X光机检测事件, 对应结构体 DEV_EVENT_XRAY_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_WORKCLOTHESDETECT=7;         // 工装(安全帽/工作服等)检测事件, 对应结构体 DEV_EVENT_WORKCLOTHES_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_WORKSTATDETECTION=8;          // 作业检测事件, 对应结构体 DEV_EVENT_WORKSTATDETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_CORSSLINEDETECTION=9;       // 拌线入侵事件, 对应结构体 DEV_EVENT_CROSSLINE_INFO
+    	public static final int EM_ANALYSE_EVENT_CROSSREGIONDETECTION=10;       // 区域入侵事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO
+    	public static final int EM_ANALYSE_EVENT_FEATURE_ABSTRACT=11;         // 特征提取事件 DEV_EVENT_FEATURE_ABSTRACT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_GLOVE_DETECT=12;      // 电力检测手套检测事件,  对应结构体 DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_LADDER_DETECT=13;     // 电力检测梯子检测事件,  对应结构体 DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_CURTAIN_DETECT=14;   // 电力检测布幔检测事件,  对应结构体 DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_FENCE_DETECT=15;     // 电力检测围栏检测事件,  对应结构体 DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_SIGNBOARD_DETECT=16;  // 电力检测标识牌检测事件,  对应结构体 DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_ELECTRIC_BELT_DETECT=17;       // 电力检测安全带检测事件,  对应结构体 DEV_EVENT_ELECTRIC_BELT_DETECT_INFO
+    	public static final int	EM_ANALYSE_EVENT_BANNER_DETECTION=18; 		// 拉横幅检测事件,	对应的结构体 DEV_EVENT_BANNER_DETECTION_INFO
+    	public static final int	EM_ANALYSE_EVENT_SMART_KITCHEN_CLOTHES_DETECTION=19;  // 智慧厨房穿着检测事件, 对应结构体 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_WATER_STAGE_MONITOR=20;        // 水位监测事件, 对应结构体DEV_EVENT_WATER_STAGE_MONITOR_INFO
+    	public static final int EM_ANALYSE_EVENT_FLOATINGOBJECT_DETECTION=21;   // 漂浮物检测事件,  对应结构体 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_IVS_RIOTERDETECTION=22;       // 人群聚集 对应结构体 DEV_EVENT_RIOTERL_INFO)
+    	public static final int EM_ANALYSE_EVENT_IVS_LEFTDETECTION=23;         // 物品遗留事件 对应结构体 DEV_EVENT_LEFT_INFO
+    	public static final int EM_ANALYSE_EVENT_IVS_PARKINGDETECTION=24;      // 非法停车事件 对应结构体 DEV_EVENT_PARKINGDETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_IVS_WANDERDETECTION=25;        // 徘徊事件对应结构体 DEV_EVENT_WANDER_INFO
+    	public static final int EM_ANALYSE_EVENT_IVS_VIDEOABNORMALDETECTION=26; // 视频异常对应结构体 DEV_EVENT_VIDEOABNORMALDETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_MOVEDETECTION=27;              // 运动检测事件, 对应结构体 DEV_EVENT_MOVE_INFO
+    	public static final int EM_ANALYSE_EVENT_VIDEO_NORMAL_DETECTION=28; 	// 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件,对应结构体 DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO
+    	public static final int	EM_ANALYSE_EVENT_CONVEYER_BELT_BULK=29;        // 传送带大块异物检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_BULK_INFO
+    	public static final int EM_ANALYSE_EVENT_CONVEYER_BELT_NONLOAD=30;     // 传送带空载检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_NONLOAD_INFO
+    	public static final int EM_ANALYSE_EVENT_CONVEYER_BELT_RUNOFF=31;      // 传送带跑偏检测事件, 对应结构体 DEV_EVENT_CONVEYER_BELT_RUNOFF_INFO
+    	public static final int EM_ANALYSE_EVENT_CONVEYER_BELT_BLOCK=32;        // 传送带阻塞检测事件, 对应结构体 DEV_EVENT_CONVEYORBLOCK_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_NUMBER_STAT=33;              // 数量统计事件, 对应 结构体 DEV_EVENT_NUMBERSTAT_INFO
+    	public static final int EM_ANALYSE_EVENT_FIGHTDETECTION=34;            // 斗殴事件, 对应结构体 DEV_EVENT_FIGHT_INFO
+    	public static final int EM_ANALYSE_EVENT_SMOKEDETECTION=35;            // 烟雾报警检测事件, 对应结构体 DEV_EVENT_SMOKE_INFO
+    	public static final int EM_ANALYSE_EVENT_FIREDETECTION=36;             // 火警检测事件, 对应结构体 DEV_EVENT_FIRE_INFO
+    	public static final int EM_ANALYSE_EVENT_PHONECALL_DETECT=37;           // 打电话检测事件, 对应结构体 DEV_EVENT_PHONECALL_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_SMOKING_DETECT=38;             // 吸烟检测事件, 对应结构体 DEV_EVENT_SMOKING_DETECT_INFO
+    	public static final int EM_ANALYSE_EVENT_TUMBLE_DETECTION=39;           // 跌倒检测事件, 对应结构体 DEV_EVENT_TUMBLE_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_WATER_LEVEL_DETECTION=40;     // 水位尺检测事件, 对应结构体 DEV_EVENT_WATER_LEVEL_DETECTION_INFO
+    	public static final int EM_ANALYSE_EVENT_CLIMBDETECTION=41;            // 攀高检测事件, 对应结构体 DEV_EVENT_IVS_CLIMB_INFO
+    	public static final int EM_ANALYSE_EVENT_MAN_NUM_DETECTION=42;         // 立体视觉区域内人数统计事件, 对应结构体DEV_EVENT_MANNUM_DETECTION_INFO
+    	public static final int	EM_ANALYSE_EVENT_DIALRECOGNITION=43; 			// 仪表检测事件, 对应结构体DEV_EVENT_DIALRECOGNITION_INFO
+    	public static final int	EM_ANALYSE_EVENT_ELECTRICFAULT_DETECT=44; 		// 仪表类缺陷检测事件, 对应结构体DEV_EVENT_ELECTRICFAULTDETECT_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_ROAD_BLOCK=45; 	// 交通路障检测事件,对应结构体 DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION=46;  //交通道路施工检测事件,对应结构体 DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_FLOWSTATE=47; 	// 交通流量统计事件,对应结构体 DEV_EVENT_TRAFFIC_FLOW_STATE
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_OVERSPEED=48; 		// 超速事件,对应结构体 DEV_EVENT_TRAFFIC_OVERSPEED_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_UNDERSPEED=49; 	// 欠速事件,对应结构体 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_OVERYELLOWLINE=50; // 压黄线事件,对应结构体 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_CROSSLANE=51; 		// 违章变道事件, 对应结构体 DEV_EVENT_TRAFFIC_CROSSLANE_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFICJAM=52; 			// 交通拥堵事件, 对应结构体 DEV_EVENT_TRAFFICJAM_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_PEDESTRAIN=53; 	// 交通行人事件, 对应结构体 DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_THROW=54; 			// 抛洒物事件, 对应结构体 DEV_EVENT_TRAFFIC_THROW_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_RETROGRADE=55; 	// 交通逆行事件, 对应结构体 DEV_EVENT_TRAFFIC_RETROGRADE_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFICACCIDENT=56; 		// 交通事故事件, 对应结构体 DEV_EVENT_TRAFFICACCIDENT_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_BACKING=57; 		// 倒车事件, 对应结构体 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_FOG_DETECTION=58; 		// 起雾检测事件, 对应结构体 DEV_EVENT_FOG_DETECTION
+    	public static final int	EM_ANALYSE_EVENT_IVS_CROSSREGIONDETECTION=59; 	// 区域入侵事件, 对应结构体 DEV_EVENT_CROSSREGION_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_TRAFFIC_PARKING=60;     // 交通违章停车事件,对应结构体 DEV_EVENT_TRAFFIC_PARKING_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_FINANCE_CASH_TRANSACTION=61; //智慧金融现金交易检测事件,对应结构体 DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_LEAVEDETECTION=62; 		// 离岗检测事件,对应结构体 DEV_EVENT_IVS_LEAVE_INFO
+    	public static final int	EM_ANALYSE_EVENT_IVS_LADLE_NO_DETECTION=63;     // 钢包编号识别事件,对应结构体 DEV_EVENT_LADLE_NO_DETECTION_INFO
+
+    	public static final int EM_ANALYSE_EVENT_CROSSLINEDETECTION_EX = 2000;  // 拌线入侵事件(扩展), 对应结构体 DEV_EVENT_CROSSLINE_INFO_EX
+    };
+
+    // 文件分析状态
+    public static class EM_FILE_ANALYSE_STATE extends SdkStructure
+    {
+        public static final int EM_FILE_ANALYSE_UNKNOWN = -1;         // 未知
+        public static final int EM_FILE_ANALYSE_EXECUTING = 0;        // 分析中
+        public static final int EM_FILE_ANALYSE_FINISH = 1;           // 分析完成
+        public static final int EM_FILE_ANALYSE_FAILED = 2;           // 分析失败
+    };
+
+    // 二次录像分析事件信息
+    public static class NET_SECONDARY_ANALYSE_EVENT_INFO extends SdkStructure
+    {
+        public int							emEventType;					// 事件类型(对应的枚举值EM_ANALYSE_EVENT_TYPE)
+        public byte[]						byReserved1 = new byte[4];		// 字节对齐
+        public Pointer						pstEventInfo;					// 事件信息, 根据emEventType确定不同的结构体
+        // EM_ANALYSE_EVENT_FACE_DETECTION (目标检测事件), 对应结构体 DEV_EVENT_FACEDETECT_INFO
+        // EM_ANALYSE_EVENT_FACE_RECOGNITION (目标识别事件), 对应结构体 DEV_EVENT_FACERECOGNITION_INFO
+        // EM_ANALYSE_EVENT_TRAFFICJUNCTION (交通路口事件), 对应结构体 DEV_EVENT_TRAFFICJUNCTION_INFO
+        // EM_ANALYSE_EVENT_HUMANTRAIT (人体特征事件), 对应结构体 DEV_EVENT_HUMANTRAIT_INFO
+        // EM_ANALYSE_EVENT_XRAY_DETECTION(X光机检测事件), 对应结构体 DEV_EVENT_XRAY_DETECTION_INFO
+        // EM_ANALYSE_EVENT_WORKCLOTHESDETECT (工装(安全帽/工作服等)检测事件), 对应结构体 DEV_EVENT_WORKCLOTHES_DETECT_INFO
+        // EM_ANALYSE_EVENT_WORKSTATDETECTION (作业检测事件), 对应结构体 DEV_EVENT_WORKSTATDETECTION_INFO
+        // EM_ANALYSE_EVENT_CORSSLINEDETECTION (拌线入侵事件), 对应结构体 DEV_EVENT_CROSSLINE_INFO
+        // EM_ANALYSE_EVENT_CROSSLINEDETECTION_EX (拌线入侵事件(扩展)), 对应结构体 DEV_EVENT_CROSSLINE_INFO_EX
+        // EM_ANALYSE_EVENT_CROSSREGIONDETECTION (区域入侵事件), 对应结构体 DEV_EVENT_CROSSREGION_INFO
+        // EM_ANALYSE_EVENT_FEATURE_ABSTRACT(特征提取), 对应结构体 DEV_EVENT_FEATURE_ABSTRACT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_GLOVE_DETECT(电力检测手套检测事件),  对应结构体 DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_LADDER_DETECT(电力检测梯子检测事件),  对应结构体 DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_CURTAIN_DETECT(电力检测布幔检测事件),  对应结构体 DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_FENCE_DETECT(电力检测围栏检测事件),  对应结构体 DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_SIGNBOARD_DETECT(电力检测标识牌检测事件),  对应结构体 DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO
+        // EM_ANALYSE_EVENT_ELECTRIC_BELT_DETECT(电力检测安全带检测事件),  对应结构体 DEV_EVENT_ELECTRIC_BELT_DETECT_INFO
+        public byte[]						byReserved = new byte[1024];	// 保留字节
+    };
+
+    // 任务自定义数据
+    public static class NET_TASK_CUSTOM_DATA extends SdkStructure
+    {
+        public byte[]                    szClientIP = new byte[128];            // 客户端IP
+        public byte[]                    szDeviceID = new byte[128];            // 设备ID
+        public byte[]                    byReserved = new byte[256];            // 保留字节
+    };
+
+    // 智能分析结果订阅的过滤条件
+    public static class NET_ANALYSE_RESULT_FILTER extends SdkStructure
+    {
+        public int[]		    	           dwAlarmTypes = new int[MAX_ANALYSE_FILTER_EVENT_NUM];     	// 过滤事件, 详见dhnetsdk.h中"智能分析事件类型"
+        public int                             nEventNum;                                      			    // 过滤事件数量
+        public int                             nImageDataFlag;                                              // 是否包含图片, 0-包含,  1-不包含
+        public byte[]                          byReserved1=new byte[4];                                 // 对齐
+        public int                             nImageTypeNum;                                  // pImageType有效个数
+        /**
+         * 对应枚举类型为EM_FILTER_IMAGE_TYPE,int数组按位取值
+         */
+        public Pointer                         pImageType;                                    // 过滤上报的图片类型
+        public byte[]                          byReserved =new byte[1004];                   				// 保留字节
+    };
+
+    // CLIENT_AttachAnalyseTaskResult 接口输入参数
+    public static class NET_IN_ATTACH_ANALYSE_RESULT extends SdkStructure
+    {
+        public int                               dwSize;                                 			// 结构体大小
+        public int[]                             nTaskIDs = new int[MAX_ANALYSE_TASK_NUM];         // 智能分析任务ID
+        public int                               nTaskIdNum;                             			// 智能分析任务个数, 0表示订阅全部任务
+        public NET_ANALYSE_RESULT_FILTER         stuFilter;                              			// 过滤条件
+        public byte[]                            byReserved = new byte[4];                         // 字节对齐
+        public fAnalyseTaskResultCallBack        cbAnalyseTaskResult;                    			// 智能分析任务结果订阅函数
+        public Pointer                           dwUser;                                 			// 用户数据
+
+        public NET_IN_ATTACH_ANALYSE_RESULT()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 智能分析任务结果信息
+    public static class NET_ANALYSE_TASK_RESULT extends SdkStructure
+    {
+        public int                                  nTaskID;                                													// 任务ID
+        public byte[]                               szFileID = new byte [NET_COMMON_STRING_128];         										// 文件ID, 分析文件时有效
+        public int             					    emFileAnalyseState;                     													// 文件分析状态(对应的枚举值EM_FILE_ANALYSE_STATE)
+        public byte[]                            	szFileAnalyseMsg = new byte[NET_COMMON_STRING_256]; 										// 文件分析额外信息, 一般都是分析失败的原因
+        public NET_SECONDARY_ANALYSE_EVENT_INFO[]   stuEventInfos =new NET_SECONDARY_ANALYSE_EVENT_INFO[MAX_SECONDARY_ANALYSE_EVENT_NUM];		// 事件信息
+        public int                             	    nEventCount;                            													// 实际的事件个数
+        public NET_TASK_CUSTOM_DATA            	    stuCustomData = new NET_TASK_CUSTOM_DATA();                          													// 自定义数据
+        public byte[]                               szUserData=new byte[64];                                                                    // 频源数据,标示视频源信息,对应addPollingTask中UserData字段。
+        public byte[]                               szTaskUserData=new byte[256];                                                               // 任务数据
+        public Pointer                              pstuEventInfosEx;                                                                           // 扩展事件信息 NET_SECONDARY_ANALYSE_EVENT_INFO
+        public int								    nRetEventInfoExNum;					                                                        // 返回扩展事件信息个数
+        public byte[]  							    szUserDefineData =new byte[512];					                                        // 用户定义数据,对应analyseTaskManager.analysePushPictureFileByRule中UserDefineData字段
+        public byte[]                            	byReserved =new byte[184];                        											// 保留字节
+        public NET_ANALYSE_TASK_RESULT() {
+            for(int i = 0; i < stuEventInfos.length; i ++){
+                this.stuEventInfos[i] = new NET_SECONDARY_ANALYSE_EVENT_INFO();
+            }
+        }
+    };
+
+
+    // 智能分析任务结果回调信息
+    public static class NET_CB_ANALYSE_TASK_RESULT_INFO extends SdkStructure
+    {
+        public NET_ANALYSE_TASK_RESULT[]         	stuTaskResultInfos = new NET_ANALYSE_TASK_RESULT[MAX_ANALYSE_TASK_NUM];   	// 智能分析任务结果信息
+        public int                             	    nTaskResultNum;                             								// 任务个数
+        public byte[]                            	byReserved =new byte[1028];                           						// 保留字节
+
+        public NET_CB_ANALYSE_TASK_RESULT_INFO() {
+            for(int i = 0; i < MAX_ANALYSE_TASK_NUM; i ++){
+                this.stuTaskResultInfos[i] = new NET_ANALYSE_TASK_RESULT();
+            }
+        }
+    };
+
+    // 智能分析状态订阅函数原型, lAttachHandle 是 CLIENT_AttachAnalyseTaskResult接口的返回值,pstAnalyseTaskResult对应结构体NET_CB_ANALYSE_TASK_RESULT_INFO
+    public interface fAnalyseTaskResultCallBack extends Callback{
+        public int invoke(LLong lAttachHandle, Pointer pstAnalyseTaskResult, Pointer pBuf, int dwBufSize, Pointer dwUser);
+    };
+
+    // 取消订阅智能分析结果, lAttachHandle 为 CLIENT_AttachAnalyseTaskResult接口的返回值@@
+    public Boolean CLIENT_DetachAnalyseTaskResult(LLong lAttachHandle);
+
+
+    // 订阅智能分析结果, pInParam 资源由用户申请和释放
+    public LLong CLIENT_AttachAnalyseTaskResult(LLong lLoginID, NET_IN_ATTACH_ANALYSE_RESULT pInParam, int nWaitTime);
+
+    /*--------任务结束:  CLIENT_AttachAnalyseTaskResult / CLIENT_DetachAnalyseTaskResult --------*/
+
+    /*--------任务开始:  T0058223ERR191213010-TASK1  停留事件:DEV_EVENT_STAY_INFO--------*/
+    // 视频分析物体信息结构体
+    public static class DH_MSG_OBJECT extends SdkStructure
+    {
+        public int                 nObjectID;                          											// 物体ID,每个ID表示一个唯一的物体
+        public byte[]              szObjectType = new byte[128];                  								// 物体类型
+        public int                 nConfidence;                        											// 置信度(0~255),值越大表示置信度越高
+        public int                 nAction;                            											// 物体动作:1:Appear 2:Move 3:Stay 4:Remove 5:Disappear 6:Split 7:Merge 8:Rename
+        public DH_RECT             BoundingBox;                        											// 包围盒
+        public NET_POINT           Center;                             											// 物体型心
+        public int                 nPolygonNum;                        											// 多边形顶点个数
+        public NET_POINT[]         Contour = (NET_POINT[])new NET_POINT().toArray(NET_MAX_POLYGON_NUM); 		// 较精确的轮廓多边形
+        public int                 rgbaMainColor;                      										    // 表示车牌、车身等物体主要颜色;按字节表示,分别为红、绿、蓝和透明度,例如:RGB值为(0,255,0),透明度为0时, 其值为0x00ff0000.
+        public byte[]              szText = new byte[128];                        								// 物体上相关的带0结束符文本,比如车牌,集装箱号等等
+
+        public byte[]              szObjectSubType = new byte[62];              								// 物体子类别,根据不同的物体类型,可以取以下子类型:
+        // Vehicle Category:"Unknown"  未知,"Motor" 机动车,"Non-Motor":非机动车,"Bus": 公交车,"Bicycle" 自行车,"Motorcycle":摩托车,"PassengerCar":客车,
+        // "LargeTruck":大货车,    "MidTruck":中货车,"SaloonCar":轿车,"Microbus":面包车,"MicroTruck":小货车,"Tricycle":三轮车,    "Passerby":行人
+        // "DregsCar":渣土车, "Excavator":挖掘车, "Bulldozer":推土车, "Crane":吊车, "PumpTruck":泵车, "MachineshopTruck":工程车
+        //  Plate Category:"Unknown" 未知,"Normal" 蓝牌黑牌,"Yellow" 黄牌,"DoubleYellow" 双层黄尾牌,"Police" 警牌,
+        // "SAR" 港澳特区号牌,"Trainning" 教练车号牌
+        // "Personal" 个性号牌,"Agri" 农用牌,"Embassy" 使馆号牌,"Moto" 摩托车号牌,"Tractor" 拖拉机号牌,"Other" 其他号牌
+        // "Civilaviation"民航号牌,"Black"黑牌
+        // "PureNewEnergyMicroCar"纯电动新能源小车,"MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车
+        // "MixedNewEnergyLargeCar"混合新能源大车
+        // HumanFace Category:"Normal" 普通人脸,"HideEye" 眼部遮挡,"HideNose" 鼻子遮挡,"HideMouth" 嘴部遮挡,"TankCar"槽罐车(装化学药品、危险品)
+        public short               wColorLogoIndex;                    											// 车标索引
+        public short               wSubBrand;                          											// 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
+        public byte                byReserved1;
+        public byte                bPicEnble;                          											// 是否有物体对应图片文件信息
+        public NET_PIC_INFO stPicInfo;                         											// 物体对应图片信息
+        public byte                bShotFrame;                         											// 是否是抓拍张的识别结果
+        public byte                bColor;                             											// 物体颜色(rgbaMainColor)是否可用
+        public byte                byReserved2;																	// 保留字节,留待扩展
+        public byte                byTimeType;                         											// 时间表示类型,详见EM_TIME_TYPE说明
+        public NET_TIME_EX         stuCurrentTime;                     											// 针对视频浓缩,当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
+        public NET_TIME_EX         stuStartTime;                       											// 开始时间戳(物体开始出现时)
+        public NET_TIME_EX         stuEndTime;                         											// 结束时间戳(物体最后出现时)
+        public DH_RECT             stuOriginalBoundingBox;             											// 包围盒(绝对坐标)
+        public DH_RECT             stuSignBoundingBox;                 											// 车标坐标包围盒
+        public int                 dwCurrentSequence;                  											// 当前帧序号(抓下这个物体时的帧)
+        public int                 dwBeginSequence;                    											// 开始帧序号(物体开始出现时的帧序号)
+        public int                 dwEndSequence;                      											// 结束帧序号(物体消逝时的帧序号)
+        public long                nBeginFileOffset;                   											// 开始时文件偏移, 单位: 字节(物体开始出现时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public long                nEndFileOffset;                     											// 结束时文件偏移, 单位: 字节(物体消逝时,视频帧在原始视频文件中相对于文件起始处的偏移)
+        public byte[]              byColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX]; 				// 物体颜色相似度,取值范围:0-100,数组下标值代表某种颜色,详见EM_COLOR_TYPE
+        public byte[] 			   byUpperBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];		//上半身物体颜色相似度(物体类型为人时有效)
+        public byte[] 		       byLowerBodyColorSimilar = new byte[EM_COLOR_TYPE.NET_COLOR_TYPE_MAX];		//下半身物体颜色相似度(物体类型为人时有效)
+        public int                 nRelativeID;                        											// 相关物体ID
+        public byte[]              szSubText = new byte[20];                      								// "ObjectType"为"Vehicle"或者"Logo"时,表示车标下的某一车系,比如奥迪A6L,由于车系较多,SDK实现时透传此字段,设备如实填写。
+        public short               wBrandYear;                         											// 车辆品牌年款 需要通过映射表得到真正的年款 映射表详见开发手册
+        protected int getNativeAlignment(Class<?> type, Object value, boolean isFirstElement) {
+            int alignment = super.getNativeAlignment(type, value, isFirstElement);
+            return Math.min(4, alignment);
+        }
+
+        @Override
+        public String toString() {
+            return "DH_MSG_OBJECT{" +
+                    "nObjectID=" + nObjectID +
+                    ", szObjectType=" + new String(szObjectType) +
+                    ", nConfidence=" + nConfidence +
+                    ", nAction=" + nAction +
+                    ", BoundingBox=" + BoundingBox +
+                    ", Center=" + Center +
+                    ", nPolygonNum=" + nPolygonNum +
+                    ", Contour=" + Arrays.toString(Contour) +
+                    ", rgbaMainColor=" + rgbaMainColor +
+                    ", szText=" + new String(szText) +
+                    ", szObjectSubType=" + new String(szObjectSubType) +
+                    ", wColorLogoIndex=" + wColorLogoIndex +
+                    ", wSubBrand=" + wSubBrand +
+                    ", byReserved1=" + byReserved1 +
+                    ", bPicEnble=" + bPicEnble +
+                    ", bShotFrame=" + bShotFrame +
+                    ", bColor=" + bColor +
+                    ", byReserved2=" + byReserved2 +
+                    ", byTimeType=" + byTimeType +
+                    ", stuCurrentTime=" + stuCurrentTime +
+                    ", stuStartTime=" + stuStartTime +
+                    ", stuEndTime=" + stuEndTime +
+                    ", stuOriginalBoundingBox=" + stuOriginalBoundingBox +
+                    ", stuSignBoundingBox=" + stuSignBoundingBox +
+                    ", dwCurrentSequence=" + dwCurrentSequence +
+                    ", dwBeginSequence=" + dwBeginSequence +
+                    ", dwEndSequence=" + dwEndSequence +
+                    ", nBeginFileOffset=" + nBeginFileOffset +
+                    ", nEndFileOffset=" + nEndFileOffset +
+                    ", byColorSimilar=" + new String(byColorSimilar) +
+                    ", byUpperBodyColorSimilar=" + new String(byUpperBodyColorSimilar) +
+                    ", byLowerBodyColorSimilar=" + new String(byLowerBodyColorSimilar) +
+                    ", nRelativeID=" + nRelativeID +
+                    ", szSubText=" + new String(szSubText) +
+                    ", wBrandYear=" + wBrandYear +
+                    '}';
+        }
+    };
+
+    // 事件类型EVENT_IVS_STAYDETECTION(停留事件)对应的数据块描述信息
+    public static class DEV_EVENT_STAY_INFO extends SdkStructure
+    {
+        public int                   		nChannelID;                         								// 通道号
+        public byte[]                		szName = new byte[128];                    							// 事件名称
+        public byte[]                		bReserved1 = new byte[4];                  							// 字节对齐
+        public double              			PTS;                                								// 时间戳(单位是毫秒)
+        public NET_TIME_EX         			UTC;                                								// 事件发生的时间
+        public int                 			nEventID;                           								// 事件ID
+        public DH_MSG_OBJECT       			stuObject;                          								// 检测到的物体
+        public NET_EVENT_FILE_INFO  		stuFileInfo;                        								// 事件对应文件信息
+        public byte                			bEventAction;                       								// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]                		byReserved = new byte[2];											// 保留字节
+        public byte                			byImageIndex;                       								// 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从 0 开始
+        public int                 			nDetectRegionNum;   //较精确的轮廓多边形                								// 规则检测区域顶点数
+        public DH_POINT[]            		DetectRegion = (DH_POINT[])new DH_POINT().toArray(NET_MAX_DETECT_REGION_NUM);// 规则检测区域
+        public int               			dwSnapFlagMask;                     								// 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 			nSourceIndex;                       								// 事件源设备上的index,-1表示数据无效
+        public byte[]                		szSourceDevice = new byte[MAX_PATH];           						// 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int        					nOccurrenceCount;                   								// 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO     	stuIntelliCommInfo;         										// 智能事件公共信息
+        public int                 			nObjectNum;                         								// 检测到的物体个数
+        public DH_MSG_OBJECT[]       		stuObjectIDs =(DH_MSG_OBJECT[])new DH_MSG_OBJECT().toArray(DH_MAX_OBJECT_NUM);    				// 检测到的物体
+        public int							nAreaID;															// 区域ID(一个预置点可以对应多个区域ID)
+        public int                		bIsCompliant;                       								// 该场景下是否合规
+        public PTZ_PRESET_UNIT              stPosition;                                                         // 预置点的坐标和放大倍数
+        public int				            nCurChannelHFOV;					                                // 当前报警通道的横向视场角,单位:度,实际角度乘以100
+        public int				            nCurChannelVFOV;					                                // 当前报警通道的垂直视场角,单位:度,实际角度乘以100
+        public SCENE_IMAGE_INFO             stuSceneImage;                                                      // 全景广角图
+        public Pointer                      pstuImageInfo;					                                    // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+        public int					        nImageInfoNum;						                                // 图片信息个数        
+        public NET_LINK_INFO		        stuLinkInfo;						                                // 联动信息,保存其他设备传输的信息
+        public NET_EVENT_INFO_EXTEND        stuEventInfoEx = new NET_EVENT_INFO_EXTEND();                       //事件公共扩展字段结构体
+        public byte[]                		bReserved = new byte[624];                    						// 保留字节,留待扩展.
+    };
+    /*--------任务结束:  T0058223ERR191213010-TASK1  停留事件:DEV_EVENT_STAY_INFO--------*/
+
+
+    /*--------任务开始:  ERR191213083-TASK1  发动机数据上报:DH_ALARM_ENGINE_FAILURE_STATUS --------*/
+    // 发动机故障状态
+    public static class EM_ENGINE_FAILURE_STATUS extends SdkStructure
+    {
+        public static final int EM_ENGINE_FAILURE_UNKNOWN = 0;											// 未知
+        public static final int EM_ENGINE_FAILURE_NOTACTIVE = 1;										// "Not active"
+        public static final int EM_ENGINE_FAILURE_ACTIVE = 2;											// "Active"
+        public static final int EM_ENGINE_FAILURE_BLINK = 3;											// "Blink"
+        public static final int EM_ENGINE_FAILURE_NOTAVAILABLE = 4;										// "Not Available"
+    }
+
+    // 发动机故障状态上报事件( DH_ALARM_ENGINE_FAILURE_STATUS )
+    public static class ALARM_ENGINE_FAILURE_STATUS_INFO extends SdkStructure
+    {
+        public int							nChannelID;									// 通道号
+        public int							nAction;									// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public NET_TIME_EX					UTC;										// 事件发生的时间
+        public int							emStatus;									// 发动机故障状态 详见 EM_ENGINE_FAILURE_STATUS
+        public NET_GPS_STATUS_INFO			stuGPS;										// GPS信息(车载需求)
+        public byte[]						byReserved =new byte[1024];					// 保留字节
+    };
+    /*--------任务开始:  ERR191213083-TASK1  发动机数据上报:DH_ALARM_ENGINE_FAILURE_STATUS--------*/
+
+
+    /************************************************************************/
+    /*视频上传交通运输部需求   从这往下                                 */
+    /************************************************************************/
+    // 获取转码虚拟通道号(虚拟通道号用于预览与回放), pInParam 和pOutParam 由用户申请和释放
+    public boolean CLIENT_GetVirtualChannelOfTransCode(LLong lLoginID,
+                                                       NET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE pInParam, NET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE pOutParam, int nWaitTime);
+
+    // 虚拟通道转码策略
+    public static class NET_VIRTUALCHANNEL_POLICY extends SdkStructure
+    {
+        public int                     bDeleteByCaller;        // 是否由用户管理虚拟通道, TRUE:由用户管理  FALSE:由设备管理
+        public int                     bContinuous;            // 是否持续转码
+        public byte[]			       byReserved=new byte[512];		   // 保留字节
+    } ;
+
+    //CLIENT_GetVirtualChannelOfTransCode 接口输入参数
+    public static class NET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE extends SdkStructure{
+        public int       	dwSize;                                 // 结构体大小
+        public NET_VIDEO_SOURCE_INFO		stuVideoSourceInfo;		// 视频源信息
+        public NET_TRANSCODE_VIDEO_FORMAT	stuTransVideoFormat;	// 转码视频格式
+        public NET_TRANSCODE_AUDIO_FORMAT	stuTransAudioFormat;	// 转码音频格式
+        public NET_VIRTUALCHANNEL_POLICY	stuVirtualChnPolicy;	// 虚拟通道转码策略
+        public NET_TRANSCODE_SNAP_FORMAT	stuSnapFormat;			// 转码抓图格式参数
+        public NET_TRANSCODE_WATER_MARK[]	stuWaterMark=(NET_TRANSCODE_WATER_MARK[]) new NET_TRANSCODE_WATER_MARK().toArray(4);// 水印配置
+
+        public NET_IN_GET_VIRTUALCHANNEL_OF_TRANSCODE(){
+            this.dwSize = this.size();
+        }
+    }
+
+   //转码抓图格式参数
+    public static class NET_TRANSCODE_SNAP_FORMAT extends SdkStructure{
+        public int						nWidth;				// 抓图宽度
+        public int						nHeight;			// 抓图高度
+        public byte[]					byReserved=new byte[128];	// 保留字节
+    }
+    //水印配置
+    public static class NET_TRANSCODE_WATER_MARK extends SdkStructure{
+    	public byte[]					szText=new byte[256];	// 水印文本信息
+        public byte[]					byReserved=new byte[512];	// 保留字节
+    }
+    // 视频源信息
+    public static class NET_VIDEO_SOURCE_INFO extends SdkStructure{
+        public int				emProtocolType;		  		  // 设备协议类型,枚举值参考EM_DEV_PROTOCOL_TYPE
+        public byte[]          szIp = new byte[64];          // 前端设备IP地址
+        public int             nPort; 					      // 前端设备端口号
+        public byte[] 			szUser = new byte[128];       // 前端设备用户名
+        public byte[] 			szPwd = new byte[128];        // 前端设备密码
+        public int             nChannelID;                   // 前端设备通道号
+        public byte[] 			szStreamUrl = new byte[256];  // 视频源url地址, emProtocolType为EM_DEV_PROTOCOL_GENERAL 时有效
+        public byte[] 			byReserved = new byte[512];   // 保留字节
+    }
+    // 设备协议类型
+    public static class EM_DEV_PROTOCOL_TYPE extends SdkStructure
+    {
+        public static final int	EM_DEV_PROTOCOL_UNKNOWN = 0;		   // 未知
+        public static final int EM_DEV_PROTOCOL_V2 = 1; 		       // 私有二代
+        public static final int EM_DEV_PROTOCOL_V3 = 2; 			   // 私有三代
+        public static final int EM_DEV_PROTOCOL_ONVIF = 3;			   // onvif
+        public static final int EM_DEV_PROTOCOL_GENERAL = 4;		   // general
+        public static final int EM_DEV_PROTOCOL_GB28181 = 5;	       // 国标GB28181
+        public static final int EM_DEV_PROTOCOL_EHOME = 6;			
+        public static final int EM_DEV_PROTOCOL_HIKVISION = 7;         
+        public static final int EM_DEV_PROTOCOL_BSCP = 8;				
+        public static final int EM_DEV_PROTOCOL_PRIVATE = 9;           // 私有
+        public static final int EM_DEV_PROTOCOL_RTSP = 10;             // RTSP
+        public static final int EM_DEV_PROTOCOL_HBGK = 11;              
+        public static final int EM_DEV_PROTOCOL_LUAN = 12; 
+    }
+
+    // 转码视频格式
+    public static class NET_TRANSCODE_VIDEO_FORMAT extends SdkStructure{
+        public int emCompression;									// 视频压缩格式,枚举值参考EM_TRANSCODE_VIDEO_COMPRESSION
+        public int nWidth;											// 视频宽度
+        public int nHeight;											// 视频高度
+        public int emBitRateControl;								// 码流控制模式,枚举值参考NET_EM_BITRATE_CONTROL
+        public int nBitRate;										// 视频码流(kbps)
+        public float fFrameRate;                                    // 视频帧率
+        public int nIFrameInterval;	                                // I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。
+        public int emImageQuality;									// 图像质量,枚举值参考EM_TRANSCODE_IMAGE_QUALITY
+        public byte[]                byReserved=new byte[512];		// 保留字节
+    }
+    // 视频压缩格式
+    public static class EM_TRANSCODE_VIDEO_COMPRESSION extends SdkStructure{
+        public static final int EM_TRANSCODE_VIDEO_AUTO = 0;		// auto
+        public static final int EM_TRANSCODE_VIDEO_MPEG4 = 1;		// MPEG4
+        public static final int EM_TRANSCODE_VIDEO_MPEG2 = 2;		// MPEG2
+        public static final int EM_TRANSCODE_VIDEO_MPEG1 = 3;		// MPEG1
+        public static final int EM_TRANSCODE_VIDEO_MJPG = 4;		// MJPG
+        public static final int EM_TRANSCODE_VIDEO_H263 = 5;		// H.263
+        public static final int EM_TRANSCODE_VIDEO_H264 = 6;		// H.264
+        public static final int EM_TRANSCODE_VIDEO_H265 = 7;		// H.265
+    }
+    // 码流控制模式
+    public static class NET_EM_BITRATE_CONTROL extends SdkStructure{
+        public static final int EM_BITRATE_CBR = 0;					// 固定码流
+        public static final int EM_BITRATE_VBR = 1;					// 可变码流
+    }
+    // 图像质量
+    public static class EM_TRANSCODE_IMAGE_QUALITY extends SdkStructure{
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_SELFADAPT = 0;      // 自适应
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q10 = 1;            // 10%
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q30 = 2;            // 30%
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q50 = 3;            // 50%
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q60 = 4;            // 60%
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q80 = 5;            // 80%
+        public static final int EM_TRANSCODE_IMAGE_QUALITY_Q100 = 6;           // 100%
+    }
+
+    // 转码音频格式
+    public static class NET_TRANSCODE_AUDIO_FORMAT extends SdkStructure{
+        public int emCompression;		// 音频压缩模式,枚举值参考NET_EM_AUDIO_FORMAT
+        public int nFrequency;							// 音频采样频率
+        public byte[]	byReserved = new byte[512];		// 保留字节
+    }
+    public static class NET_EM_AUDIO_FORMAT extends SdkStructure{
+        public static final int EM_AUDIO_FORMAT_UNKNOWN = 0;							// unknown
+        public static final int EM_AUDIO_FORMAT_G711A = 1;                              // G711a
+        public static final int EM_AUDIO_FORMAT_PCM = 2;                                // PCM
+        public static final int EM_AUDIO_FORMAT_G711U = 3;                              // G711u
+        public static final int EM_AUDIO_FORMAT_AMR = 4;                                // AMR
+        public static final int EM_AUDIO_FORMAT_AAC = 5;                                // AAC
+
+        public static final int EM_AUDIO_FORMAT_G726 = 6;								// G.726
+        public static final int EM_AUDIO_FORMAT_G729 = 7;								// G.729
+        public static final int EM_AUDIO_FORMAT_ADPCM = 8;								// ADPCM
+        public static final int EM_AUDIO_FORMAT_MPEG2 = 9;								// MPEG2
+        public static final int EM_AUDIO_FORMAT_MPEG2L2 = 10;							// MPEG2-Layer2
+        public static final int EM_AUDIO_FORMAT_OGG = 11;								// OGG
+        public static final int EM_AUDIO_FORMAT_MP3 = 12;								// MP3
+        public static final int EM_AUDIO_FORMAT_G7221 = 13;								// G.722.1
+    }
+
+    //CLIENT_GetVirtualChannelOfTransCode 接口输出参数
+    public static class NET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE extends SdkStructure{
+        public int       	dwSize;						// 结构体大小
+        public int			nVirtualChannel;			// 虚拟通道号
+        public NET_OUT_GET_VIRTUALCHANNEL_OF_TRANSCODE(){
+            this.dwSize = this.size();
+        }
+    }
+
+
+
+
+    // 获取转码能力集, pInParam 和pOutParam 由用户申请和释放
+    public boolean CLIENT_GetCapsOfTransCode(LLong lLoginID,
+                                             NET_IN_TRANDCODE_GET_CAPS pInParam, NET_OUT_TRANSCODE_GET_CAPS pOutParam, int nWaitTime);
+    // 删除转码虚拟通道号
+    public boolean CLIENT_DelVirtualChannelOfTransCode(LLong lLoginID,
+                                                       NET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE pInParam, NET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE pOutParam, int nWaitTime);
+
+    // CLIENT_DelVirtualChannelOfTransCode 接口输入参数
+    public static class NET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE extends SdkStructure{
+        public int						    dwSize;							// 结构体大小
+        public int                         nVirtualChannel;                // 虚拟通道号, -1 表示删除所有虚拟通道
+        public NET_IN_DEL_VIRTUALCHANNEL_OF_TRANSCODE(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // CLIENT_DelVirtualChannelOfTransCode 接口输出参数
+    public static class NET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE extends SdkStructure{
+        public int						    dwSize;							// 结构体大小
+        public NET_OUT_DEL_VIRTUALCHANNEL_OF_TRANSCODE(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // CLIENT_GetCapsOfTransCode 接口输入参数
+    public static class NET_IN_TRANDCODE_GET_CAPS extends SdkStructure{
+        public int       	dwSize;						// 结构体大小
+        public NET_IN_TRANDCODE_GET_CAPS(){
+            this.dwSize = this.size();
+        }
+    }
+    // CLIENT_GetCapsOfTransCode 接口输出参数
+    public static class NET_OUT_TRANSCODE_GET_CAPS extends SdkStructure{
+        public int         dwSize;						    // 结构体大小
+        public int         nMinVirtualChannel;              // 最小虚拟通道号
+        public int         nMaxVirtualChannel;              // 最大虚拟通道号
+        public boolean     bSupportErrorCode;               // 是否支持压缩错误码实时上报
+        public boolean     bSupportContinuous;              // 是否支持持续转码
+        public boolean     bSupportDelByCaller;             // 是否支持由用户管理虚拟通道
+        public boolean	   bSupportSpecifyVirtualChannel;	// 是否支持由调用者指定虚拟通道号,
+                                                            // 此项为true时,调用CLIENT_GetVirtualChannelOfTransCode时指定虚拟通道nVirtualChannel,虚拟通道号必须在nMinVirtualChannel~nMaxVirtualChannel的范围内;
+                                                            // 当此项为false时,不支持客户端指定虚拟通道号。
+        public float	   fMaxDownLoadSpeed;				// 支持最大的压缩下载倍速
+        public int		   nSupportCompressMaxChannel;		// 设备当前支持的最多压缩通道数
+        public byte[]	   szSupportCompressResolutionRangeMin= new byte[32];	// 支持压缩的分辨率 最小值
+        public byte[]	   szSupportCompressResolutionRangeMax= new byte[32];	// 支持压缩的分辨率 最大值
+        public int		   nSupportCompressFpsRangeMin;	// 支持压缩的帧率 最小值
+        public int		   nSupportCompressFpsRangeMax;	// 支持压缩的帧率 最大值
+        public byte[]	   szSupportCompressAudioTypes= new byte[64*32];		// 支持的音频格式
+        public int		   nSupportCompressAudioTypesNum;				// 支持的音频格式个数
+        public int		   nSupportCompressCompressionTypesNum;		// 支持的视频压缩格式个数
+        public byte[]	   szSupportCompressCompressionTypes= new byte[64*32];	// 支持的视频压缩格式
+
+        public NET_OUT_TRANSCODE_GET_CAPS(){
+            this.dwSize = this.size();
+        }
+    }
+
+
+
+
+    // 订阅虚拟转码通道状态, pInParam 由用户申请和释放
+    public LLong CLIENT_AttachVirtualChannelStatus(LLong lLoginID,
+                                                   NET_IN_ATTACH_VIRTUALCHANNEL_STATUS pInParam, int nWaitTime);
+    //CLIENT_AttachVirtualChannelStatus 接口输入参数
+    public static class NET_IN_ATTACH_VIRTUALCHANNEL_STATUS extends SdkStructure{
+        public int       	dwSize;						// 结构体大小
+        public byte[]	byReserved = new byte[4];		// 用于字节对齐
+        public fVirtualChannelStatusCallBack cbVirtualChannelStatus;  // 虚拟转码通道状态订阅函数
+        public Pointer dwUser;// 用户数据
+        public NET_IN_ATTACH_VIRTUALCHANNEL_STATUS(){
+            this.dwSize = this.size();
+        }
+    }
+    public interface fVirtualChannelStatusCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_CB_VIRTUALCHANNEL_STATUS_INFO pstVirChnStatusInfo, Pointer dwUser);}
+
+    // 虚拟转码通道状态信息
+    public class NET_CB_VIRTUALCHANNEL_STATUS_INFO extends SdkStructure{
+        public int        nVirChannelID;                  // 虚拟转码通道号
+        public int        emVirChannelStatus;  		   // 虚拟转码通道状态,枚举值参考EM_VIRCHANNEL_STATUS
+        public byte[]	byReserved = new byte[1024];	   // 保留字节
+// 		 public static class ByValue extends NET_CB_VIRTUALCHANNEL_STATUS_INFO implements SdkStructure.ByValue { }
+    }
+    public class EM_VIRCHANNEL_STATUS extends SdkStructure {
+        public static final int	EM_VIRCHANNEL_STATUS_UNKNOWN    		= -1;   // 未知
+        public static final int	EM_VIRCHANNEL_STATUS_OVER_DECODE        = 0;    // 超出解码
+        public static final int	EM_VIRCHANNEL_STATUS_OVER_COMPRESS      = 1;    // 超出压缩
+        public static final int	EM_VIRCHANNEL_STATUS_NO_ORIGI_STREAM    = 2;    // 无原始码流
+        public static final int	EM_VIRCHANNEL_STATUS_SLAVE_OFFLINE      = 3;	// 压缩通道所在的从片掉线
+        public static final int	EM_VIRCHANNEL_STATUS_UNKNOWN_FAILURE 	= 255;	// 未知的失败原因
+    }
+
+
+
+    // 取消订阅虚拟转码通道状态, lAttachHandle 为 CLIENT_AttachVirtualChannelStatus 函数的返回值
+    public boolean CLIENT_DetachVirtualChannelStatus(LLong lAttachHandle);
+
+
+    /************************************************************************/
+    /* 视频上传交通运输部需求           从这往上                        */
+    /************************************************************************/
+
+    // 设置动态子连接断线回调函数,目前SVR设备的预览和回放是短连接的。
+    public void CLIENT_SetSubconnCallBack(Callback cbSubDisConnect, Pointer dwUser);
+
+    // 动态子连接断开回调函数原形
+    public interface fSubDisConnect extends Callback{
+        public void invoke(int emInterfaceType, Boolean bOnline, LLong lOperateHandle, LLong lLoginID, Pointer dwUser);
+    }
+    // 接口类型,对应CLIENT_SetSubconnCallBack接口
+    public static class EM_INTERFACE_TYPE extends SdkStructure
+    {
+        public static final int DH_INTERFACE_OTHER = 0;            // 未知接口
+        public static final int DH_INTERFACE_REALPLAY = 1;                     // 实时预览接口
+        public static final int DH_INTERFACE_PREVIEW = 2;                       // 多画面预览接口
+        public static final int DH_INTERFACE_PLAYBACK =3;                      // 回放接口
+        public static final int DH_INTERFACE_DOWNLOAD =4;                      // 下载接口
+        public static final int DH_INTERFACE_REALLOADPIC =5;                   // 下载智能图片接口
+    };
+    //人脸开门输入参数
+    public static class NET_IN_FACE_OPEN_DOOR extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  nChannel;         //门通道号
+        public int                  emCompareResult;  //比对结果,EM_COMPARE_RESULT
+        public NET_OPENDOOR_MATCHINFO stuMatchInfo;   //匹配信息
+        public NET_OPENDOOR_IMAGEINFO stuImageInfo;   //图片信息
+
+        public NET_IN_FACE_OPEN_DOOR(){
+            this.dwSize = this.size();
+        }
+    };
+
+    //匹配信息
+    public static class NET_OPENDOOR_MATCHINFO extends SdkStructure
+    {
+        public byte[]                                szUserID=new byte[32];     //远程用户ID
+        public byte[]                                szUserName=new byte[32];   //用户名
+        public int                                   emUserType;       //用户类型
+        public byte[]                                szName=new byte[64];       //门禁名称
+        public int                                   nMatchRate;       //匹配度,范围为0-100
+        public int                                   emOpenDoorType;   //开门方式
+        public NET_TIME                              stuActivationTime;                         //(卡、头像)生效日期
+        public NET_TIME                              stuExpiryTime;                             //(卡、头像)截止日期
+        public int                                   nScore;                                    // 信用积分
+        public byte[]                                szCompanyName=new byte[MAX_COMPANY_NAME_LEN];       //单位名称
+        public byte[]                                szCompanionName=new byte[120];                      //陪同人员姓名
+        public byte[]                                szCompanionCompany=new byte[MAX_COMPANY_NAME_LEN];  //陪同人员单位名称
+        public byte[]                                szPermissibleArea=new byte[MAX_COMMON_STRING_128];  //准许通行区域
+        public byte[]								  szSection=new byte[200];		//部门名称
+        public Pointer                               pstuCustomEducationInfo;      // 教育信息,参考NET_CUSTOM_EDUCATION_INFO
+        public Pointer                               pstuHealthCodeInfo;//健康码信息,NET_HEALTH_CODE_INFO
+        public byte[]                                szRoomNo=new byte[32];//房间号
+        public Pointer                               pstuIDCardInfo;//证件信息,NET_IDCARD_INFO
+        public Pointer                               pstuBusStationInfo;//公交站信息,NET_BUS_STATION_INFO
+        public Pointer                               pstuCustomWorkerInfo;//工地工人信息,NET_CUSTOM_WORKER_INFO
+        public boolean                               bUseMatchInfoEx;//否使用匹配信息扩展字段
+        public Pointer                               pstuMatchInfoEx;//匹配信息扩展字段,NET_OPENDOOR_MATCHINFO_EX
+        public Pointer			                     pstuHSJCInfo;	// 核酸检测信息,NET_HSJC_INFO
+        public Pointer	                             pstuVaccineInfo; // 新冠疫苗接种信息,NET_VACCINE_INFO
+        public Pointer		                         pstuTravelInfo; // 行程码信息,NET_TRAVEL_INFO
+        public byte[]                                byReserved=new byte[12];
+    };
+
+    // 教育信息
+    public static class NET_CUSTOM_EDUCATION_INFO extends SdkStructure
+    {
+        public int                                   emInfoType;                      // 信息类型
+        public int                                   nStudentSeatNumber;              // 座位号,最小值为1
+        public byte[]                                szInfoContent=new byte[128];     // 消息内容
+        public int			emVoiceType;					 // 语音类型,EM_CUSTOM_EDUCATION_VOICE_TYPE
+    };
+
+    //图片信息
+    public static class NET_OPENDOOR_IMAGEINFO extends SdkStructure
+    {
+        public int nLibImageLen;    //人脸库照片长度,限制为150k
+        public int nSnapImageLen;   //抓拍照片长度,限制为150k
+        public Pointer pLibImage;     //人脸库照片,内存由用户申请
+        public Pointer pSnapImage;    //抓拍照片,内存由用户申请
+        public byte[] byReserved=new byte[1024];
+    };
+
+    //人脸开门输出参数
+    public static class NET_OUT_FACE_OPEN_DOOR extends SdkStructure
+    {
+        public int dwSize;
+
+        public NET_OUT_FACE_OPEN_DOOR(){
+            this.dwSize = this.size();
+        }
+    };
+
+    //人脸开门
+    public boolean  CLIENT_FaceOpenDoor(LLong lLoginID, NET_IN_FACE_OPEN_DOOR pInParam, NET_OUT_FACE_OPEN_DOOR pOutParam, int nWaitTime);
+
+    // 水位场景类型
+    public static class EM_WATERSTAGE_SCENE_TYPE extends SdkStructure
+    {
+        public static final int  EM_WATERMONITOR_SCENE_UNKNOWN=0;                  // 未知
+        public static final int  EM_WATERMONITOR_SCENE_WATERSTAGE_RULE=1;          // 水位检测, 有水位尺
+        public static final int  EM_WATERMONITOR_SCENE_WATERSTAGE_NO_RULE=2;       // 水位检测, 无水位尺
+        public static final int  EM_WATERMONITOR_SCENE_WATERLOGG_RULE=3;           // 内涝检测, 有水位尺
+        public static final int  EM_WATERMONITOR_SCENE_WATERLOGG_NO_RULE=4;        // 内涝检测, 无水位尺
+    };
+
+    // 水面分割掩膜信息
+    public static class NET_WATER_SURFACE_MASK_INFO extends SdkStructure
+    {
+        public int            nColNum;            // 水面分割掩膜列数
+        public int            nOffset;            // 偏移
+        public int            nLength;            // 长度
+        public byte[]		   byReserved=new byte[1020];   // 预留字段
+    };
+
+    // 水位监测事件, 目前仅用于任务型智能分析
+    public static class DEV_EVENT_WATER_STAGE_MONITOR_INFO extends SdkStructure
+    {
+        public int                         nChannelID;				// 通道号
+        public int                         nAction;				// 1:开始 2:停止
+        public byte[]                      szName=new byte[128];	// 事件名称
+        public double                      PTS;					// 时间戳(单位是毫秒)
+        public NET_TIME_EX                 UTC;					// 事件发生的时间
+        public int                         nEventID;				// 事件ID
+        public int                         nRuleID;				// 智能事件规则编号,用于标示哪个规则触发的事件
+        public int                         emClassType;			// 智能事件所属大类
+        public int                         emSceneType;            // 水位场景类型
+        public double                      dbMark;                 // 水尺读数
+        public NET_POINT                   stuCrossPoint;          // 水尺与水面交点
+        public NET_WATER_SURFACE_MASK_INFO stuWaterSurfaceMask;    // 水面分割掩膜信息, emSceneType 为EM_WATERMONITOR_SCENE_WATERSTAGE_NO_RULE 或者EM_WATERMONITOR_SCENE_WATERLOGG_NO_RULE有效
+        public byte[]						byReserved=new byte[1020];		// 预留字段
+    } ;
+
+    // 标定线
+    public static class NET_CALIBRATE_LINE_INFO extends SdkStructure
+    {
+        public NET_POINT           stuStartPoint;          // 起点
+        public NET_POINT           stuEndPoint;            // 终点
+    };
+
+    // 事件类型EVENT_IVS_WATER_STAGE_MONITOR(水位检测事件)对应的规则配置
+    public static class NET_WATER_STAGE_MONITOR_RULE_INFO extends SdkStructure
+    {
+        public int						              nDetectRegionPoint;             // 检测区顶点数
+        public POINTCOORDINATE[]		              stuDetectRegion=(POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);            // 检测区域
+        public int                                   dwSceneMask;                    // 使能检测的场景掩码	                                                                             // bit2:内涝检测,有水位尺, bit3:内涝检测,无水位尺
+        public NET_CALIBRATE_LINE_INFO               stuCalibrateLine;               // 标定线, 仅在人物分析模式下有效
+        public byte[]                                byReserved=new byte[4096];//保留字节
+
+    }
+
+    // 事件类型EVENT_IVS_VIOLENT_THROW_DETECTION(暴力抛物检测)对应的数据块描述信息
+    public static class DEV_EVENT_VIOLENT_THROW_DETECTION_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public int					nAction;									// 0:脉冲 1:开始 2:停止
+        public byte[]              szName=new byte[128];                       // 事件名称
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_EVENT_FILE_INFO stuFileInfo;                               // 事件对应文件信息
+
+        public int                 nFrameSequence;                             // 视频分析帧序号
+        public byte[]              szRegionName=new byte[64];                  // 暴力抛物检测区域名称
+        public SCENE_IMAGE_INFO_EX stuSceneImage;                              // 大图信息
+        public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                  nImageInfoNum;                                  //图片信息个数
+        public byte                 byReserver[] = new byte[1024];                   //预留字节
+    };
+
+    // CLIENT_GetHumanRadioCaps 接口输入参数
+    public static class NET_IN_GET_HUMAN_RADIO_CAPS extends SdkStructure
+    {
+        public int				dwSize;
+        public int				nChannel;
+
+        public NET_IN_GET_HUMAN_RADIO_CAPS(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // CLIENT_GetHumanRadioCaps 接口输出参数
+    public static class NET_OUT_GET_HUMAN_RADIO_CAPS extends SdkStructure
+    {
+        public int				dwSize;
+        public int			bSupportRegulatorAlarm;
+
+        public NET_OUT_GET_HUMAN_RADIO_CAPS(){
+            this.dwSize = this.size();
+        }
+    };
+    // 获取能力级
+    public Boolean CLIENT_GetHumanRadioCaps(LLong lLoginID, NET_IN_GET_HUMAN_RADIO_CAPS pInParam, NET_OUT_GET_HUMAN_RADIO_CAPS pOutParam, int nWaitTime);
+
+    // 区域内人员体温信息
+    public static class NET_MAN_TEMP_INFO extends SdkStructure
+    {
+        public int						nObjectID;				// 物体ID
+        public NET_RECT					stRect;					// 人员头肩信息, 8192坐标系
+        public double					dbHighTemp;				// 最高的温度
+        public int						nTempUnit;				// 温度单位(0摄氏度 1华氏度 2开尔文)
+        public boolean					bIsOverTemp;			// 是否温度异常
+        public boolean					bIsUnderTemp;			// 是否温度异常
+        public int						nOffset;				// 人脸小图特征值在二进制数据块中的偏移
+        public int						nLength;				// 人脸小图特征值长度, 单位:字节
+        public int	                    emMaskDetectResult;		// 口罩检测结果(参考EM_MASK_DETECT_RESULT_TYPE)
+        public NET_RECT					stThermalRect;			// 热成像检测人员头肩坐标信息(坐标系:8192)
+        public int						nAge;					// 年龄
+        public int                      emSex;				    // 性别(参考EM_DEV_EVENT_FACEDETECT_SEX_TYPE)
+        public byte[]					byReserved=new byte[36];			// 预留字段
+    } ;
+
+    // 全景图
+    public static class NET_VIS_SCENE_IMAGE extends SdkStructure
+    {
+        public int						nOffset;				// 在二进制数据块中的偏移
+        public int						nLength;				// 图片大小, 单位字节
+        public int						nWidth;					// 图片宽度, 像素
+        public int						nHeight;				// 图片高度, 像素
+        public byte[]					byReserved=new byte[64];			// 预留字段
+    } ;
+
+    // 热成像全景图
+    public static class NET_THERMAL_SCENE_IMAGE extends SdkStructure
+    {
+        public int						nOffset;				// 在二进制数据块中的偏移
+        public int						nLength;				// 图片大小, 单位字节
+        public int						nWidth;					// 图片宽度, 像素
+        public int						nHeight;				// 图片高度, 像素
+        public byte[]					byReserved=new byte[64];			// 预留字段
+    } ;
+
+    // 事件类型EVENT_IVS_ANATOMY_TEMP_DETECT(人体测温检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_ANATOMY_TEMP_DETECT_INFO extends SdkStructure
+    {
+        public int                      nChannelID;				// 通道号
+        public int                      nAction;				// 1:开始 2:停止
+        public byte[]                   szName=new byte[128];	// 事件名称
+        public double                   PTS;					// 时间戳(单位是毫秒)
+        public NET_TIME_EX              UTC;					// 事件发生的时间
+        public int                      nEventID;				// 事件ID
+
+        public int                      emClassType;			// 智能事件所属大类(对应枚举类型EM_CLASS_TYPE)
+        public int						nPresetID;				// 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知
+        public NET_MAN_TEMP_INFO		stManTempInfo;          // 区域内人员体温信息
+        public NET_VIS_SCENE_IMAGE		stVisSceneImage;		// 可见光全景图
+        public NET_THERMAL_SCENE_IMAGE	stThermalSceneImage;	// 热成像全景图
+        public int						nSequence;				// 帧序号
+        public int						nEventRelevanceID;		// 事件关联ID
+        public boolean					bIsFaceRecognition;		// 是否做过后智能的目标识别
+        public Pointer                  pstuImageInfo;          // 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+        public int                      nImageInfoNum;          // 图片信息个数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]					byReserved=new byte[1004];		// 预留字段
+    } ;
+
+    // 事件类型 ALARM_ANATOMY_TEMP_DETECT_INFO(人体温智能检测事件)对应的数据块描述信息
+    public static class ALARM_ANATOMY_TEMP_DETECT_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                         	// 通道号
+        public int						nAction;								// 0:脉冲 1:开始 2:停止
+        public byte[]                	szName=new byte[128];                   // 事件名称
+        public double              		PTS;                                	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                	// 事件发生的时间
+        public int                		nEventID;                           	// 事件ID
+
+        public int						nPresetID;								// 事件触发的预置点号, 从1开始, 没有该字段,表示预置点未知
+        public NET_MAN_TEMP_INFO		stManTempInfo;							// 区域内人员体温信息
+        public int						nSequence;								// 帧序号
+        public int						nEventRelevanceID;						// 事件关联ID
+        public boolean					bIsFaceRecognition;						// 是否做过后智能的目标识别
+        public NET_EVENT_INFO_EXTEND    stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体        
+        public byte[]		    		byReserved=new byte[1020];			    // 预留字节
+    } ;
+
+    // 人体测温规则配置
+    public static class CFG_ANATOMY_TEMP_DETECT_INFO extends SdkStructure
+    {
+        // 信息
+        public byte[]				szRuleName=new byte[MAX_NAME_LEN];						// 规则名称,不同规则不能重名
+        public int				    bRuleEnable;											// 规则使能
+        public int					nObjectTypeNum;											// 相应物体类型个数
+        public byte[]				szObjectTypes=new byte[MAX_OBJECT_LIST_SIZE*MAX_NAME_LEN];		// 相应物体类型列表
+        public int                  nPtzPresetId;                                           // 云台预置点编号	0~65535
+        public CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
+        public CFG_TIME_SECTION[]	stuTimeSection=(CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(WEEK_DAY_NUM*MAX_REC_TSECT_EX);			// 事件响应时间段
+        public byte                 bTrackEnable;                                           // 触发跟踪使能,仅对拌线入侵事件,警戒区规则有效
+        public int					nDetectRegionPoint;							// 多边形顶点数
+        public CFG_POLYGON[]		stuDetectRegion=(CFG_POLYGON[])new CFG_POLYGON().toArray(MAX_POLYGON_NUM);			// 检测区域,多边形
+        public boolean				bHighEnable;								// 温度异常报警是否开启
+        public boolean				bLowEnable;									// 温度异常报警是否开启
+        public int				fHighThresholdTemp;							// 温度异常阈值,精度0.1,扩大10倍
+        public int				fLowThresholdTemp;							// 温度异常阈值,精度0.1,扩大10倍
+        public boolean				bIsAutoStudy;								// 是否自动学习
+        public int				fHighAutoOffset;							// 温度自动学习偏差值,精度0.1,扩大10倍
+        public int				fLowAutoOffset;								// 温度自动学习偏差值,精度0.1,扩大10倍
+        public int					nSensitivity;								// 灵敏度 范围[1, 10]
+        public boolean				bSizeFileter;								// 规则特定的尺寸过滤器是否有效
+        public CFG_SIZEFILTER_INFO	stuSizeFileter;								// 规则特定的尺寸过滤器
+        public boolean				bIsCaptureNormal;							// 是否上报正常体温信息
+
+        public byte[]				byReserved=new byte[1024]; 					// 保留字节
+    };
+
+    // 事件类型 ALARM_REGULATOR_ABNORMAL_INFO(标准黑体源异常报警事件)对应的数据块描述信息
+    public static class ALARM_REGULATOR_ABNORMAL_INFO extends SdkStructure
+    {
+        public int                 		nChannelID;                         	// 通道号
+        public int						nAction;								// 0:脉冲 1:开始 2:停止
+        public byte[]                	szName=new byte[128];                         	// 事件名称
+        public double              		PTS;                                	// 时间戳(单位是毫秒)
+        public NET_TIME_EX         		UTC;                                	// 事件发生的时间
+        public int                		nEventID;                           	// 事件ID
+
+        public byte[]					szTypes=new byte[MAX_COMMON_STRING_32];	// 异常类型
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]			    	byReserved=new byte[1024];			    // 预留字节
+    } ;
+
+    // 校准源信息
+    public static class NET_REGULATOR_INFO extends SdkStructure
+    {
+        public int						nDistance;				// 校准源距离, 单位cm
+        public int						nTemperature;			// 校准源温度, 精度0.1, 放大10倍
+        public NET_RECT					stRect;					// 校准源矩形位置取值0-8191
+        public int						nHeight;				// 校准源高度, 单位cm
+        public int						nDiffTemperature;		// 温度偏差值, 精度0.01, 放大100倍
+        public byte[]                   byReserve=new byte[32]; // 保留字节,用于字节对齐
+    } ;
+
+    // 人体测温标准黑体配置, 对应枚举 NET_EM_CFG_RADIO_REGULATOR
+    public static class NET_CFG_RADIO_REGULATOR extends SdkStructure
+    {
+        public int                      dwSize;                 // 结构体大小
+        public int					    bEnable;				// 标准黑体配置使能
+        public int						nPresetId;				// 预置点编号, 对于无预置点设备为0
+        public int						nCamerHeight;			// 热成像相机安装高度, 单位cm
+        public int						nCamerAngle;			// 相机安装角度, 精度0.1, 放大10倍
+        public NET_REGULATOR_INFO		stRegulatorInfo;		// 校准源信息
+
+        public NET_CFG_RADIO_REGULATOR(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // CLIENT_BatchAppendFaceRecognition 接口输入参数
+    public static class NET_IN_BATCH_APPEND_FACERECONGNITION extends SdkStructure
+    {
+        /**
+         * 结构体大小
+         */
+        public int                            dwSize;
+        /**
+         * 需要添加的人员数量
+         */
+        public int                            nPersonNum;
+        /**
+         * 人员信息,内存由用户申请,大小为nPersonNum * sizeof(FACERECOGNITION_PERSON_INFOEX)
+         */
+        public Pointer                        pstPersonInfo;
+
+        // 图片二进制数据
+        public Pointer                        pBuffer;                     // 缓冲地址
+        public int                            nBufferLen;                  // 缓冲数据长度
+        public byte[]                         bReserved=new byte[4];       // 字节对齐
+        public NET_MULTI_APPEND_EXTENDED_INFO stuInfo = new NET_MULTI_APPEND_EXTENDED_INFO(); //扩展信息
+        
+        public NET_IN_BATCH_APPEND_FACERECONGNITION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 批量添加人员结果信息
+    public static class NET_BATCH_APPEND_PERSON_RESULT extends SdkStructure
+    {
+        public int               nUID;                                     // 人员UID
+        public int               dwErrorCode;                              // 错误码信息
+        public byte[]            bReserved=new byte[512];                  // 保留字段
+    } ;
+
+    // CLIENT_BatchAppendFaceRecognition 接口输出参数
+    public static class NET_OUT_BATCH_APPEND_FACERECONGNITION extends SdkStructure
+    {
+        public int                             dwSize;                     // 结构体大小
+        public int                             nResultNum;                 // 批量添加结果个数,由用户指定,数值与NET_IN_BATCH_APPEND_FACERECONGNITION中的nPersonNum一致
+        /**
+         * 内存大小为结构体数组的大小,对应结构体为{@link NET_BATCH_APPEND_PERSON_RESULT}
+         */
+        public Pointer                         pstResultInfo;              // 批量添加结果信息
+    	public int							   nUIDType;				   // 指定NET_BATCH_APPEND_PERSON_RESULT中的UID使用字段,不存在本字段或值为0则使用UID字段,若值为1则使用UID2字段
+        public NET_OUT_BATCH_APPEND_FACERECONGNITION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 添加多个人员信息和人脸样本
+    public Boolean CLIENT_BatchAppendFaceRecognition(LLong lLoginID, NET_IN_BATCH_APPEND_FACERECONGNITION pstInParam, NET_OUT_BATCH_APPEND_FACERECONGNITION pstOutParam, int nWaitTime);
+
+    // CLIENT_FindFileEx+DH_FILE_QUERY_SNAPSHOT_WITH_MARK  对应查询参数
+    public static class MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM extends SdkStructure
+    {
+        public int               			dwSize;                			// 结构体大小
+        public NET_TIME            			stuStartTime;           		// 开始时间
+        public NET_TIME            			stuEndTime;             		// 结束时间
+    	public int							bOnlySupportRealUTC;			// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuStartTime, stuEndTime), 为FALSE表示仅下发stuStartTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+    	public NET_TIME						stuStartTimeRealUTC;			// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+    	public NET_TIME						stuEndTimeRealUTC;				// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuStartTime, stuEndTime)互斥
+        public MEDIAFILE_SNAPSHORT_WITH_MARK_PARAM(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 抓图标记信息
+    public static class NET_SNAPSHOT_MARK_INFO extends SdkStructure
+    {
+        public NET_POINT                       stuPosition;                    // 标记的坐标位置, 绝对坐标系
+        public byte[]						   byReserved=new byte[1020];	   // 预留字段
+    };
+
+    // DH_FILE_QUERY_SNAPSHOT_WITH_MARK 对应 FINDNEXT 查询返回结果
+    public static class MEDIAFILE_SNAPSHORT_WITH_MARK_INFO extends SdkStructure
+    {
+        public int               			dwSize;                			// 结构体大小
+        public int                 			nChannelID;             		// 通道号从0开始,-1表示查询所有通道
+        public NET_TIME            			stuStartTime;           		// 开始时间
+        public NET_TIME            			stuEndTime;             		// 结束时间
+        public int        					nFileSize;              		// 文件长度
+        public byte[]                		szFilePath=new byte[MAX_PATH];  // 文件路径
+
+        public NET_SNAPSHOT_MARK_INFO       stuMarkInfo;                    // 抓图标记信息
+    	public int							bRealUTC;						// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime)
+    	public NET_TIME						stuStartTimeRealUTC;			// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+    	public NET_TIME						stuEndTimeRealUTC;				// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+        public MEDIAFILE_SNAPSHORT_WITH_MARK_INFO(){
+            this.dwSize = this.size();
+        }
+    } ;
+    //////////////////////////////////////无人机航点功能开始///////////////////////////////////////////////////////////////////
+    // 获取无人机航点入参
+    public static class NET_IN_UAVMISSION_COUNT extends SdkStructure
+    {
+        public int               dwSize;
+        public NET_IN_UAVMISSION_COUNT(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 获取无人机航点出参
+    public static class NET_OUT_UAVMISSION_COUNT extends SdkStructure
+    {
+        public int               dwSize;
+        public int               nCount; // 航点总数
+        public NET_OUT_UAVMISSION_COUNT(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 获取任务入参
+    public static class NET_IN_READ_UAVMISSION extends SdkStructure
+    {
+        public int                dwSize;
+        public NET_IN_READ_UAVMISSION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 航点任务
+    public static class NET_UAVMISSION_ITEM extends SdkStructure
+    {
+        public int                     nCurrentMode;   // 使能状态 0-未使能; 1-使能;
+        public int                     bAutoContinue;  // 自动执行下一个航点
+        public int                     nSequence;      // 航点序号
+        public int                     emCommand;      // 航点指令(参考ENUM_UAVCMD_TYPE)
+        public NET_UAVCMD_PARAM_BUFFER stuCmdParam;    // 指令参数
+        public byte[]                  byReserved=new byte[8];  // 保留字段
+    };
+
+    // 获取任务出参
+    public static class NET_OUT_READ_UAVMISSION extends SdkStructure
+    {
+        public int                  dwSize;
+        public int                  nItemCount;  // 有效任务个数
+        public Pointer              pstuItems;   // 任务列表(参考NET_UAVMISSION_ITEM)
+        public NET_OUT_READ_UAVMISSION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 设置任务入参
+    public static class NET_IN_WRITE_UAVMISSION extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nItemCount; // 有效任务个数
+        public Pointer             pstuItems;  // 任务列表(参考NET_UAVMISSION_ITEM)
+        public NET_IN_WRITE_UAVMISSION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 设置任务出参
+    public static class NET_OUT_WRITE_UAVMISSION extends SdkStructure
+    {
+        public int               dwSize;
+        public NET_OUT_WRITE_UAVMISSION(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 订阅任务消息入参
+    public static class NET_IN_ATTACH_UAVMISSION_STATE extends SdkStructure
+    {
+        public int                        dwSize;
+        public fUAVMissionStateCallBack   cbNotify;	// 任务状态回调函数
+        public Pointer                    dwUser;		// 用户信息
+        public NET_IN_ATTACH_UAVMISSION_STATE(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 订阅任务消息出参
+    public static class NET_OUT_ATTACH_UAVMISSION_STATE extends SdkStructure
+    {
+        public int					dwSize;							// 赋值为结构体大小
+        public NET_OUT_ATTACH_UAVMISSION_STATE(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 任务状态类型
+    public static class ENUM_UAVMISSION_TYPE extends SdkStructure
+    {
+        public static final int ENUM_UAVMISSION_TYPE_UNKNOWN=0;     // 未知类型
+        public static final int ENUM_UAVMISSION_TYPE_WP_UPLOAD=1;   // 航点上传
+        public static final int ENUM_UAVMISSION_TYPE_WP_DOWNLOAD=2; // 航点下载
+    };
+
+    // 任务状态
+    public static class ENUM_UAVMISSION_STATE extends SdkStructure
+    {
+        public static final int ENUM_UAVMISSION_STATE_UNKNOWN=0;  // 未知类型
+        public static final int ENUM_UAVMISSION_STATE_BEGIN=1;    // 开始
+        public static final int ENUM_UAVMISSION_STATE_UNDERWAY=2; // 进行
+        public static final int ENUM_UAVMISSION_STATE_SUCCESS=3;  // 成功
+        public static final int ENUM_UAVMISSION_STATE_FAIL=4;     // 失败
+    };
+
+    // 任务状态信息
+    public static class NET_UAVMISSION_STATE extends SdkStructure
+    {
+        public int                     emType;     // 类型(参见ENUM_UAVMISSION_TYPE枚举类型)
+        public int                     emState;    // 状态(参见ENUM_UAVMISSION_STATE)
+        public int                     nTotalCount; // 总数
+        public int                     nSequence;  // 当前航点编号
+    };
+
+    // 无人机任务状态回调
+    public interface fUAVMissionStateCallBack extends Callback {
+        public void invoke(LLong lAttachHandle, NET_UAVMISSION_STATE pstuState, int dwStateInfoSize, Pointer dwUser);
+    }
+
+    // 无人机通用设置接口
+    //emCmdType(参考ENUM_UAVCMD_TYPE枚举)
+    //pParam对应ENUM_UAVCMD_TYPE所对应的结构体
+    public boolean CLIENT_SendCommandToUAV(LLong lLoginID, int emCmdType, Pointer pParam, int nWaitTime);
+    // 获取航点总数
+    public boolean CLIENT_GetUAVMissonCount(LLong lLoginID, NET_IN_UAVMISSION_COUNT pstuInParam, NET_OUT_UAVMISSION_COUNT pstuOutParam, int nWaitTime);
+
+    // 获取UAV航点信息
+    public boolean CLIENT_ReadUAVMissions(LLong lLoginID, NET_IN_READ_UAVMISSION pstuInParam, NET_OUT_READ_UAVMISSION pstuOutParam, int nWaitTime);
+
+    // 设置UAV航点信息
+    public boolean CLIENT_WriteUAVMissions(LLong lLoginID, NET_IN_WRITE_UAVMISSION pstuInParam, NET_OUT_WRITE_UAVMISSION pstuOutParam, int nWaitTime);
+
+    // 订阅UAV航点任务 pstuInParam 和 pstuOutParam 由设备申请释放
+    public LLong CLIENT_AttachUAVMissonState(LLong lLoginID, NET_IN_ATTACH_UAVMISSION_STATE pstuInParam, NET_OUT_ATTACH_UAVMISSION_STATE pstuOutParam, int nWaitTime);
+
+    // 退订UAV航点任务 lAttachHandle 是 CLIENT_AttachUAVMissonState 返回值
+    public boolean CLIENT_DettachUAVMissonState(LLong lAttachHandle);
+//////////////////////////////////////无人机航点功能结束///////////////////////////////////////////////////////////////////
+
+
+    ////////////////////////////////////云上高速抓图起雾事件开始//////////////////////////////////////////
+    // 起雾检测事件数据类型
+    public static class EM_FOG_DETECTION_EVENT_TYPE
+    {
+        public static final int EM_FOG_DETECTION_EVENT_TYPE_UNKNOWN=0;					// 未知
+        public static final int EM_FOG_DETECTION_EVENT_TYPE_REAL=1;						// 实时数据
+        public static final int EM_FOG_DETECTION_EVENT_TYPE_ALARM=2;					// 报警数据
+    };
+
+    // 雾值
+    public static class EM_FOG_LEVEL extends SdkStructure
+    {
+        public static final int EM_FOG_LEVEL_UNKNOWN=0;									// 未知
+        public static final int EM_FOG_LEVEL_NO=1;										// 无
+        public static final int EM_FOG_LEVEL_BLUE=2;									// 蓝色预警
+        public static final int EM_FOG_LEVEL_YELLOW=3;									// 黄色预警
+        public static final int EM_FOG_LEVEL_ORANGE=4;									// 橙色预警
+        public static final int EM_FOG_LEVEL_RED=5;										// 红色预警
+    };
+
+    // 起雾检测事件雾信息
+    public static class FOG_DETECTION_FOG_INFO extends SdkStructure
+    {
+        public int						emFogLevel;				   // 雾等级,参考EM_FOG_LEVEL
+        public byte[]					byReserved=new byte[508];  // 预留字段
+    };
+
+
+    // 事件类型EVENT_IVS_FOG_DETECTION(起雾检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_FOG_DETECTION extends SdkStructure
+    {
+        public int									nChannelID;				// 通道号
+        public int									nAction;				// 0:脉冲 1:开始 2:停止
+        public byte[]								szName=new byte[128];	// 事件名称
+        public double								PTS;					// 时间戳(单位是毫秒)
+        public NET_TIME_EX							UTC;					// 事件发生的时间
+        public int									nEventID;				// 事件ID
+        public int						            emClassType;			// 智能事件所属大类,参考EM_CLASS_TYPE
+        public int									nGroupID;				// 事件组ID,同一辆车抓拍过程内GroupID相同
+        public int									nCountInGroup;			// 一个事件组内的抓拍张数
+        public int									nIndexInGroup;			// 一个事件组内的抓拍序号
+        public int									nPresetID;				// 预置点号,从1开始有效
+        public byte[]								szPresetName=new byte[128];		// 阈值点名称
+        public int			                        emEventType;			// 事件数据类型,参考EM_FOG_DETECTION_EVENT_TYPE
+        public FOG_DETECTION_FOG_INFO				stuFogInfo;				// 雾信息
+        public NET_EVENT_FILE_INFO					stFileInfo;				// 事件对应文件信息
+        public byte[]								byReserved=new byte[1024];// 预留字段
+    };
+    ////////////////////////////////////云上高速抓图起雾事件开始//////////////////////////////////////////
+
+
+
+    ////////////////////////////////////云上高速抓图开始//////////////////////////////////////////、
+
+    // CLIENT_ManualSnap 接口输入参数
+    public static class NET_IN_MANUAL_SNAP extends SdkStructure
+    {
+        public int            dwSize;             // 结构体大小
+        public int            nChannel;           // 抓图通道号
+        public int            nCmdSerial;         // 请求序列号
+        public byte[]         szFilePath=new byte[260];    // 抓图保存路径
+
+        public NET_IN_MANUAL_SNAP(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 抓图图片编码格式
+    public static class EM_SNAP_ENCODE_TYPE extends SdkStructure
+    {
+        public static final int  EM_SNAP_ENCODE_TYPE_UNKNOWN=0;       // 未知
+        public static final int  EM_SNAP_ENCODE_TYPE_JPEG=1;          // jpeg图片
+        public static final int  EM_SNAP_ENCODE_TYPE_MPEG4_I=2;       // mpeg4的i 帧
+    };
+
+    // CLIENT_ManualSnap 接口输出参数
+    public static class NET_OUT_MANUAL_SNAP extends SdkStructure
+    {
+        public int                     dwSize;             // 结构体大小
+        public int                     nMaxBufLen;         // pRcvBuf的长度,由用户指定
+        public Pointer                 pRcvBuf;            // 接收图片缓冲, 用于存放抓图数据, 空间由用户申请和释放, 申请大小为nMaxBufLen
+        public int                     nRetBufLen;         // 实际接收到的图片大小
+        public int                     emEncodeType;       // 图片编码格式,参考EM_SNAP_ENCODE_TYPE
+        public int                     nCmdSerial;         // 请求序列号
+        public byte[]                  bReserved=new byte[4];// 字节对齐
+        public NET_OUT_MANUAL_SNAP(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 手动抓图, 支持并发调用
+    public boolean CLIENT_ManualSnap(LLong lLoginID, NET_IN_MANUAL_SNAP pInParam, NET_OUT_MANUAL_SNAP pOutParam, int nWaitTime);
+
+    // 订阅抓图回调信息
+    public static class NET_CB_ATTACH_SNAP_INFO extends SdkStructure
+    {
+        public Pointer                pRcvBuf;                // 接收到的图片数据
+        public int                    nBufLen;                // 图片数据长度
+        public int                    emEncodeType;           // 图片编码格式,参考EM_SNAP_ENCODE_TYPE
+        public int                    nCmdSerial;             // 抓图请求序列号
+        public byte[]                 byReserved=new byte[1028];// 保留字节
+    } ;
+
+    // 订阅抓图回调函数原形
+    public interface fAttachSnapRev extends Callback{
+        public void invoke(LLong lAttachHandle, NET_CB_ATTACH_SNAP_INFO pstAttachCbInfo, Pointer dwUser);
+    };
+
+    // CLIENT_AttachSnap 接口输入参数
+    public static class NET_IN_ATTACH_INTER_SNAP extends SdkStructure
+    {
+        public int            dwSize;             // 结构体大小
+        public int            nChannel;           // 抓图通道号
+        public int            nCmdSerial;         // 请求序列号
+        public int            nIntervalSnap;      // 定时抓图时间间隔
+        public fAttachSnapRev cbAttachSnapRev;    // 回调函数
+        public Pointer        dwUser;             // 用户数据
+        public NET_IN_ATTACH_INTER_SNAP(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // CLIENT_AttachSnap 接口输出参数
+    public static class NET_OUT_ATTACH_INTER_SNAP extends SdkStructure
+    {
+        public int           dwSize;             // 结构体大小
+        public NET_OUT_ATTACH_INTER_SNAP(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 订阅抓图
+    public LLong CLIENT_AttachSnap(LLong lLoginID, NET_IN_ATTACH_INTER_SNAP pInParam, NET_OUT_ATTACH_INTER_SNAP pOutParam);
+
+    // 取消订阅抓图
+    public boolean CLIENT_DetachSnap(LLong lAttachHandle);
+
+    ////////////////////////////////////云上高速抓图结束//////////////////////////////////////////
+
+    // 二维码上报事件信息( DH_ALARM_QR_CODE_CHECK )
+    public static class ALARM_QR_CODE_CHECK_INFO extends SdkStructure
+    {
+        public int						nEventID;						// 事件ID
+        public NET_TIME_EX		        UTC;							// 事件发生的时间
+        public double					dbPTS;							// 时间戳(单位是毫秒)
+        public byte[]                   szQRCode=new byte[256];         // 二维码字符串
+        public byte[] 					byReserved=new byte[1024];	    // 预留字节
+    };
+
+    /************************************************************************/
+    /*                            录像备份回传                                */
+    /************************************************************************/
+
+    // 录像备份恢复任务信息
+    public static class NET_REC_BAK_RST_TASK extends SdkStructure
+    {
+        public int                 dwSize;
+        public int                 nTaskID;                        // 任务ID
+        public byte[]              szDeviceID=new byte[NET_DEV_ID_LEN_EX];   // 设备ID
+        public int                 nChannelID;                     // 通道号
+        public NET_TIME            stuStartTime=new NET_TIME();                   // 录像开始时间
+        public NET_TIME            stuEndTime=new NET_TIME();                     // 录像结束时间
+        public int                 nState;                         // 当前备份状态, 0-等待, 1-进行中, 2-完成, 3-失败, 4-暂停
+    	public NET_RECORD_BACKUP_PROGRESS	stuProgress=new NET_RECORD_BACKUP_PROGRESS();			// 当前备份进度
+    	public int	               emFailReason;				   // 失败的原因, 当nState字段为3的情况下有效,参考EM_RECORD_BACKUP_FAIL_REASON
+    	public NET_TIME			   stuTaskStartTime=new NET_TIME();               // 任务开始时间, nState为"进行中"、"已完成"、"失败"的情况下该时间点有效;
+    	public NET_TIME			   stuTaskEndTime=new NET_TIME();                 // 任务结束时间, nState为"已完成"、"失败"的情况下该时间点有效;
+        public  int							nRemoteChannel;				 	// 备份源通道
+        public NET_REC_BAK_RST_TASK(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+
+    // CLIENT_AddRecordBackupRestoreTask接口输入参数
+    public static class NET_IN_ADD_REC_BAK_RST_TASK extends SdkStructure
+    {
+        public int                 dwSize;
+        public Pointer             pszDeviceID;                    // 设备ID
+        public Pointer             pnChannels;                     // 通道数组
+        public int                 nChannelCount;                  // 通道数组大小,由用户申请内存,大小为sizeof(int)*nChannelCount
+        public NET_TIME            stuStartTime;                   // 起始时间
+        public NET_TIME            stuEndTime;                     // 结束时间
+        public byte[]              szUrl = new byte[256];          // RTSP URL
+
+        public NET_IN_ADD_REC_BAK_RST_TASK(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // CLIENT_RemoveRecordBackupRestoreTask接口输入参数
+    public static class NET_IN_REMOVE_REC_BAK_RST_TASK extends SdkStructure
+    {
+        public int                 dwSize;
+        public Pointer             pnTaskIDs;                      // 任务ID数组,由用户申请内存,大小为sizeof(int)*nTaskCount
+        public int                 nTaskCount;                     // 任务数量
+
+        public NET_IN_REMOVE_REC_BAK_RST_TASK(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // CLIENT_QueryRecordBackupRestoreTask接口输入参数
+    public static class NET_IN_QUERY_REC_BAK_RST_TASK extends SdkStructure
+    {
+        public int               dwSize;
+
+        public NET_IN_QUERY_REC_BAK_RST_TASK(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+
+    // CLIENT_QueryRecordBackupRestoreTask接口输出参数
+    public static class NET_OUT_QUERY_REC_BAK_RST_TASK extends SdkStructure
+    {
+        public int                     dwSize;
+        public Pointer                 pTasks;                     // 任务数组,由用户申请内存,大小为sizeof(NET_REC_BAK_RST_TASK)*nMaxCount
+        public int                     nMaxCount;                  // 数组大小
+        public int                     nReturnCount;               // 返回的任务数量
+        public NET_OUT_QUERY_REC_BAK_RST_TASK(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 开始录像备份恢复
+    public LLong  CLIENT_StartRecordBackupRestore(LLong lLoginID);
+
+    // 停止录像备份恢复
+    public void  CLIENT_StopRecordBackupRestore(LLong lRestoreID);
+
+    // 添加录像备份恢复任务,pInParam内存由用户申请释放
+    public boolean  CLIENT_AddRecordBackupRestoreTask(LLong lRestoreID, NET_IN_ADD_REC_BAK_RST_TASK pInParam, int nWaitTime);
+
+    // 删除录像备份恢复任务,pInParam->NET_IN_REMOVE_REC_BAK_RST_TASK 内存由用户申请释放
+    public boolean  CLIENT_RemoveRecordBackupRestoreTask(LLong lRestoreID, Pointer pInParam, int nWaitTime);
+
+    // 获取录像备份恢复任务信息,pInParam与pOutParam内存由用户申请释放
+    // pInParam->NET_IN_QUERY_REC_BAK_RST_TASK pOutParam->NET_OUT_QUERY_REC_BAK_RST_TASK
+    public boolean  CLIENT_QueryRecordBackupRestoreTask(LLong lRestoreID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 导入配置文件(以JSON格式) pSendBuf: 待发送数据,用户分配内存, nSendBufLen: 待发送长度, reserved: 保留参数
+    public boolean  CLIENT_ImportConfigFileJson(LLong lLoginID, Pointer pSendBuf, int nSendBufLen, Pointer reserved, int nWaitTime);
+
+    // 导出配置文件(以JSON格式) pOutBuffer: 接收缓冲,用户分配内存, maxlen: 接收缓冲长度, nRetlen: 实际导出长度, reserved: 保留参数
+    public boolean  CLIENT_ExportConfigFileJson(LLong lLoginID, Pointer pOutBuffer, int maxlen, IntByReference nRetlen, Pointer reserved, int nWaitTime);
+
+    // web信息上传接口
+    public boolean  CLIENT_TransmitInfoForWeb(LLong lLoginID, Pointer szInBuffer, int dwInBufferSize, Pointer szOutBuffer, int dwOutBufferSize, Pointer pExtData, int waittime);
+
+
+    //================================================GIP200413016开始============================================
+    // 线圈信息(主要是里面的车辆信息)
+    public static class COILS_INFO extends SdkStructure
+    {
+        public int					nCarId;			//  车辆Id(不是车牌号,ID是设备检测到物体记录的编号)
+        public byte[]				PlateNum=new byte[64];	//  车牌号
+        public int			        emCarType;		//  车辆类型(參考EM_NET_CARTYPE)
+        public byte[]				byReserved=new byte[1024];// 预留字节
+    } ;
+
+    // 车道信息
+    public static class LANE_INFO extends SdkStructure
+    {
+        public int					nLane;					// 物理车道号(范围0~4)
+        public int						nLaneType;				// 车道类型,虚线车道:0, 实线车道:1
+        public double					dbLaneOcc;				// 车道空间占有率,范围[0.0~1.0]
+        public int					nRoadwayNumber;			// 自定义车道号(范围0~128)
+        public int						nCurrentLaneVehicleNum;	// 当前车道车的数量
+        public int						nVehicleNum;			// 从上次统计结束到现在,通过车的辆数(设备0.5秒下发一次)
+        public int					nCarId;					// 保留最近有效过车的ID(不是车牌号),CarId是设备检测到物体记录的编号
+        public double					dbCarEnterTime;			// 编号CarId车辆进入虚线车道的时间
+        public double					dbCarLeaveTime;			// 编号CarId车辆离开实线车道的时间
+        public int					nCarDistance;			// 编号CarId车辆行驶的距离,单位:米
+        public int						nQueueLen;				// 车辆等待时的排队长度,单位:米
+        public double					dbCarSpeed;				// 编号CarId车辆平均车速,单位:米/秒
+        public int						nCoilsInfoNum;			// 实际返回线圈信息个数
+        public COILS_INFO[]				stuCoilsInfo=(COILS_INFO[])new COILS_INFO().toArray(70*2);	// 线圈信息(主要是线圈内的车辆信息)
+        public int						nRetSolidLanNum;		// 实际返回虚线车道个数
+        public int[]						nSolidLaneNum=new int[6];		// 虚线车道对应的实线车道自定义车道号
+        public int						nVehicleNumByTypeNum;	// 实际返回车辆类型统计个数
+        public int[]					nVehicleNumByType=new int[64];	// 类型车辆统计,数组下标对应不同车型(车型参考 EM_NET_CARTYPE),下标值对应车辆类型统计的数量
+        public int						nEndLen;				// 车辆运行时,尾部车辆位置距离停车线的距离 ,单位:米
+        public byte[]					byReserved=new byte[1024];		// 预留字节
+    } ;
+
+    // 交通态势事件(NET_ALARM_TRAFFIC_XINKONG)
+    public static class ALARM_TRAFFIC_XINKONG_INFO extends SdkStructure
+    {
+        public int						nChannelID;				// 通道号
+        public int						nAction;				// 只有一个事件动作0,表示脉冲事件
+        public double                   dbPTS;					// 时间戳(单位是毫秒)
+        public NET_TIME_EX              UTC;					// 事件发生的时间
+        public int						nEventID;				// 事件ID
+
+        public byte[]					szName=new byte[128];			// 事件名称
+        public byte[]					byReserved1=new byte[4];			// 字节对齐
+        public int						nLaneInfoNum;			// 实际上报多少车道信息
+        public LANE_INFO[]				stuLaneInfo=(LANE_INFO[])new LANE_INFO().toArray(6);			// 车道信息
+        public byte[]					byReserved=new byte[1024];		// 预留字节
+    } ;
+
+    //================================================GIP200413016结束============================================
+
+    //================================================ERR200412034开始============================================
+
+    // 同轴IO控制类型
+    public static class EM_COAXIAL_CONTROL_IO_TYPE extends SdkStructure
+    {
+        public static final int EM_COAXIAL_CONTROL_IO_TYPE_UNKNOWN=0;				// 未知
+        public static final int EM_COAXIAL_CONTROL_IO_TYPE_LIGHT=1;				// 白光灯
+        public static final int EM_COAXIAL_CONTROL_IO_TYPE_SPEAKER=2;				// speak音频
+    } ;
+
+    // 同轴IO控制开关
+    public static class EM_COAXIAL_CONTROL_IO_SWITCH extends SdkStructure
+    {
+        public static final int EM_COAXIAL_CONTROL_IO_SWITCH_UNKNOWN=0;			// 未知
+        public static final int EM_COAXIAL_CONTROL_IO_SWITCH_OPEN=1;				// 开
+        public static final int EM_COAXIAL_CONTROL_IO_SWITCH_CLOSE=2;				// 关
+    } ;
+
+    // 同轴IO触发方式
+    public static class EM_COAXIAL_CONTROL_IO_TRIGGER_MODE extends SdkStructure
+    {
+        public static final int EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_UNKNOWN=0;			// 未知
+        public static final int EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_LINKAGE_TRIGGER=1;	// 联动触发
+        public static final int EM_COAXIAL_CONTROL_IO_TRIGGER_MODE_MANUAL_TRIGGER=2;	// 手动触发
+    } ;
+
+
+    // 同轴IO信息结构体
+    public static class NET_COAXIAL_CONTROL_IO_INFO extends SdkStructure
+    {
+        public int			emType;				// 同轴IO控制类型参考EM_COAXIAL_CONTROL_IO_TYPE
+        public int		    emSwicth;			// 同轴IO控制开关参考EM_COAXIAL_CONTROL_IO_SWITCH
+        public int	        emMode;				// 同轴IO触发方式参考EM_COAXIAL_CONTROL_IO_TRIGGER_MODE
+        public byte[]		byReserved=new byte[128];	// 保留字节
+    } ;
+
+    // 同轴IO信息最大个数
+    public static final int  MAX_COAXIAL_CONTROL_IO_COUNT	=8;
+
+    // 发送同轴IO控制命令, CLIENT_ControlDeviceEx 入参 对应 CTRLTYPE_CTRL_COAXIAL_CONTROL_IO
+    public static class NET_IN_CONTROL_COAXIAL_CONTROL_IO extends SdkStructure
+    {
+        public int							    dwSize;									// 结构体大小
+        public int								nChannel;								// 通道号
+        public int								nInfoCount;								// 同轴IO信息个数
+        public NET_COAXIAL_CONTROL_IO_INFO[]	stInfo=(NET_COAXIAL_CONTROL_IO_INFO[])new NET_COAXIAL_CONTROL_IO_INFO().toArray(MAX_COAXIAL_CONTROL_IO_COUNT);	// 同轴IO信息
+
+        public NET_IN_CONTROL_COAXIAL_CONTROL_IO(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 发送同轴IO控制命令, CLIENT_ControlDeviceEx 出参 对应 CTRLTYPE_CTRL_COAXIAL_CONTROL_IO
+    public static class NET_OUT_CONTROL_COAXIAL_CONTROL_IO extends SdkStructure
+    {
+        public int							dwSize;									// 结构体大小
+
+        public NET_OUT_CONTROL_COAXIAL_CONTROL_IO(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    //================================================ERR200412034结束============================================
+
+    //================================================ERR200410078 DH-TPC-BF2221开始============================================
+
+    // 火灾配置类型
+    public static class NET_EM_FIREWARNING_MODE_TYPE extends SdkStructure
+    {
+        public static final int NET_EM_FIREWARNING_TYPE_PTZPRESET=0;		// 云台预置点模式(默认)
+        public static final int NET_EM_FIREWARNING_TYPE_SPACEEXCLUDE=1;	    // 空间排除模式
+    } ;
+
+    // 火灾预警模式配置 NET_EM_CFG_FIRE_WARNINGMODE
+    public static class NET_FIREWARNING_MODE_INFO extends SdkStructure
+    {
+        public int							dwSize;								// 结构体大小
+        public int                         	emFireWarningMode;					// 火灾预警模式 参考NET_EM_FIREWARNING_MODE_TYPE
+
+        public NET_FIREWARNING_MODE_INFO(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    public static final int  MAX_FIREWARNING_DETECTRGN_NUM			=32;			// 最大火警区域检测的个数
+    public static final int  MAX_FIREWARNING_RULE_NUM				=32;			// 最大火警规则
+    public static final int  MAX_FIREWARNING_DETECTWND_NUM			=8;			    // 最大火警检测窗口个数
+
+    // 时间表信息
+    public static class NET_CFG_TIME_SCHEDULE extends SdkStructure
+    {
+        public int                    bEnableHoliday;                                                 // 是否支持节假日配置,默认为不支持,除非获取配置后返回为TRUE,不要使能假日配置
+        public NET_TSECT[]            stuTimeSection=(NET_TSECT[])new NET_TSECT().toArray(NET_N_SCHEDULE_TSECT*NET_N_REC_TSECT);            // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段
+    } ;
+
+    // 火灾预警联动项
+    public static class NET_FIREWARN_EVENTHANDLE_INFO extends SdkStructure
+    {
+        public NET_CFG_TIME_SCHEDULE    stuTimeSection;										            // 报警时间段
+        public int					    bRecordEnable;													// 录像使能,必须同时有RecordChannels。使能为TRUE,且事件action为start开始录像,stop停止录像。如果FALSE,则不做录像
+        public int						nRecordChannelNum;												// 录像通道个数
+        public int[]					nRecordChannels=new int[32];									// 录像通道号列表
+        public int						nRecordLatch;													// 录像延时时间(单位:秒)范围[10,300]
+        public int					    bAlarmOutEnable;												// 报警输出使能
+        public int						nAlarmOutChannelNum;											// 报警输出通道个数
+        public int[]					nAlarmOutChannels=new int[32];									// 报警输出通道号列表
+        public int						nAlarmOutLatch;													// 报警输入停止后,输出延时时间(单位:秒)范围[10, 300]
+        public int						nPtzLinkNum;													// 云台配置数
+        public SDK_PTZ_LINK[]			struPtzLink=(SDK_PTZ_LINK[])new SDK_PTZ_LINK().toArray(16);												// 云台联动
+        public int					    bPtzLinkEnable;													// 云台联动使能
+        public int					    bSnapshotEnable;												// 快照使能
+        public int						nSnapshotChannelNum;											// 快照通道个数
+        public int[]					nSnapshotChannels=new int[32];									// 快照通道号列表
+        public int					    bMailEnable;													// 发送邮件,如果有图片,作为附件
+        public byte[]					byReserved=new byte[1024];										// 保留字节
+    } ;
+
+    public static class NET_POSTIONF extends SdkStructure
+    {
+        public float                fHorizontalAngle;               // 水平角度 [-1,1]
+        public float                fVerticalAngle;                 // 垂直角度 [-1,1]
+        public float                fMagnification;                 // 放大倍数 [-1,1]
+    } ;
+
+    // 火警检测窗口
+    public static class NET_FIREWARN_DETECTWND_INFO extends SdkStructure
+    {
+        public int				nRgnNum;												// 检测区域的个数
+        public byte[]           byReservedAlign=new byte[4];							// 保留字节
+        public long[]			nRegions=new long[MAX_FIREWARNING_DETECTRGN_NUM];		// 检测区域
+        public NET_POSTIONF	    stuPostion;												// 空间排除信息
+        public int				nTargetSize;											// 目标的尺寸(火警配置为:Normal有效,单位:像素)
+        public int				nSensitivity;											// 检测灵敏度(火警配置为:Normal有效)
+        public int				nWindowsID;												// 窗口ID
+        public byte[]			szName=new byte[32];									// 窗口名称
+        public byte[]			byReserved=new byte[256];								// 保留字节
+    } ;
+
+    // 火灾预警规则信息
+    public static class NET_FIREWARN_RULE_INFO extends SdkStructure
+    {
+        public int							    bEnable;								// 火灾预警功能是否开启
+        public int								nPresetId;								// 预置点编号,火灾预警模式为预置点模式生效
+        public int								nRow;									// 火灾检测区域的行数
+        public int								nCol;									// 火灾检测区域的列数
+        public int		                        emFireWarningDetectMode;		        // 火警检测模式 参考NET_EM_FIREWARNING_DETECTMODE_TYPE
+        public int	                            emFireWarningDetectTragetType;	        // 火警检测目标类型 参考NET_EM_FIREWARNING_DETECTTARGET_TYPE
+        public int 							    bTimeDurationEnable;					// 是否启用持续时间
+        public int								nFireDuration;							// 观察火情持续时间,单位秒。水平旋转组检测火点时,为避免同一点重复检测,
+        // 设置超时时间,超过此时间,跳过此点
+
+        public NET_FIREWARN_EVENTHANDLE_INFO	stuEventHandler;						// 火警联动信息
+        public int								nDetectWindowNum;						// 窗口个数
+        public NET_FIREWARN_DETECTWND_INFO[]	stuDetectWnd=(NET_FIREWARN_DETECTWND_INFO[])new NET_FIREWARN_DETECTWND_INFO().toArray(MAX_FIREWARNING_DETECTWND_NUM); // 火警检测窗口
+        public byte[]							byReserved=new byte[256];				// 保留字节
+    } ;
+
+    // 火灾预警配置(结构体较大,建议用New分配内存) NET_EM_CFG_FIRE_WARNING
+    public static class NET_FIRE_WARNING_INFO extends SdkStructure
+    {
+        public int   							dwSize;																// 结构体大小
+        public int								nFireWarnRuleNum;													// 火灾预警配置个数
+        public NET_FIREWARN_RULE_INFO[]			stuFireWarnRule=(NET_FIREWARN_RULE_INFO[])new NET_FIREWARN_RULE_INFO().toArray(MAX_FIREWARNING_RULE_NUM);							// 火灾预警配置规则
+
+        public NET_FIRE_WARNING_INFO(){
+            this.dwSize = this.size();
+        }
+    } ;
+    //================================================ERR200410078 DH-TPC-BF2221结束============================================
+
+    //================================================ERR200420018============================================
+
+    // 事件类型 EVENT_IVS_VIDEOABNORMALDETECTION(视频异常事件)对应的数据块描述信息
+    public static class DEV_EVENT_VIDEOABNORMALDETECTION_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName=new byte[128];                       // 事件名称
+        public byte[]              bReserved1=new byte[4];                     // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public NET_EVENT_FILE_INFO  stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte                bType;                                      // 异常类型, 255-无意义(通常是设备了返回错误值)0-视频丢失, 1-视频冻结, 2-摄像头遮挡, 3-摄像头移动, 4-过暗, 5-过亮, 6-图像偏色, 7-噪声干扰, 8-条纹检测
+        public byte[]              byReserved=new byte[1];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice=new byte[MAX_PATH];          // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                           // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public SCENE_IMAGE_INFO_EX stuSceneImage = new SCENE_IMAGE_INFO_EX();   // 全景广角图信息
+        public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+        public int                  nImageInfoNum;                                  //图片信息个数
+    	public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();   //事件公共扩展字段结构体
+        public byte                 byReserved2[] = new byte[1024];                   //预留字节
+    } ;
+
+    // 人员信息
+    public static class NET_HUMAN extends SdkStructure
+    {
+        public NET_RECT            stuBoundingBox;				// 包围盒(8192坐标系)
+        public int                 nObjectID;                   // 物体ID
+        public byte[]              szSerialUUID=new byte[22];   // 智能物体全局唯一物体标识
+        // 有效数据位21位,包含’\0’
+        // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+        // 中间14位YYYYMMDDhhmmss:年月日时分秒
+        // 后5位%u%u%u%u%u:物体ID,如00001
+        public byte[]              bReserved=new byte[230];     // 保留字节
+    };
+
+    // 事件类型 EVENT_IVS_STAY_ALONE_DETECTION (单人独处事件) 对应的数据块描述信息
+    public static class DEV_EVENT_STAY_ALONE_DETECTION_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public int				   nAction;							           // 0:脉冲 1:开始 2:停止
+        public byte[]              szName=new byte[NET_EVENT_NAME_LEN];        // 事件名称
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public int	               emClassType;						           // 智能事件所属大类参考EM_CLASS_TYPE
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 UTCMS;                                      // UTC时间对应的毫秒数
+        public int                 nEventID;                                   // 事件ID
+        public NET_HUMAN           stuHuman;                                   // 人员信息
+        public SCENE_IMAGE_INFO_EX stuSceneImage;                              // 全景图
+        public int                 nDetectRegionNum;                           // 检测区域顶点数
+        public DH_POINT[]          stuDetectRegion=(DH_POINT[])new DH_POINT().toArray(NET_MAX_DETECT_REGION_NUM);  // 检测区域
+    	public int				   nImageInfoNum;						       // 图片信息个数
+    	public Pointer	           pstuImageInfo;						       // 图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}   
+        public byte[]              byReserved=new byte[1020 - POINTERSIZE];    // 保留字节
+    };
+
+    // 事件类型 EVENT_IVS_PSRISEDETECTION (囚犯起身事件) 对应的数据块描述信息
+    public static class DEV_EVENT_PSRISEDETECTION_INFO extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName=new byte[128];                       // 事件名称
+        public byte[]              bReserved1=new byte[4];                     // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public DH_MSG_OBJECT       stuObject;                                  // 检测到的物体
+        public int                 nDetectRegionNum;                           // 规则检测区域顶点数
+        public DH_POINT[]          DetectRegion=(DH_POINT[])new DH_POINT().toArray(NET_MAX_DETECT_REGION_NUM);     // 规则检测区域
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public double              dInitialUTC;                                // 事件初始UTC时间    UTC为事件的UTC (1970-1-1 00:00:00)秒数。
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved=new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice=new byte[MAX_PATH];          // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                           // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public byte[]              szSerialUUID=new byte[22];                  // 智能物体全局唯一物体标识
+        // 有效数据位21位,包含’\0’
+        // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+        // 中间14位YYYYMMDDhhmmss:年月日时分秒
+        // 后5位%u%u%u%u%u:物体ID,如00001
+        public byte[]              bReserved=new byte[594];                    // 保留字节,留待扩展.
+    };
+    //--------------------------------------------------------ERR200420018结束------------------------------------------------------------------------//
+
+    //--------------------------------------------------------ERR200424047------------------------------------------------------------------------//
+
+    // 逻辑屏显示内容
+    public static class NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS extends SdkStructure
+    {
+        public int	                        emContents;				        // 逻辑屏显示的内容:参考NET_EM_SCREEN_SHOW_CONTENTS
+        public byte[]						byReserved1=new byte[4];		// 字节对齐
+        public byte[]						szCustomStr=new byte[32];		// 自定义内容,emContents为	EM_TRAFFIC_LATTICE_SCREEN_CUSTOM 时有效
+        public byte[]						byReserved=new byte[32];		// 预留
+    };
+
+    // 点阵屏显示信息
+    public static class NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO extends SdkStructure
+    {
+        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS[]	stuContents=(NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS[])
+                new NET_TRAFFIC_LATTICE_SCREEN_SHOW_CONTENTS().toArray(64);		            // 逻辑屏显示内容
+        public int											nContentsNum;			        // 逻辑屏个数
+        public byte[]										byReserved=new byte[1020];		// 预留
+    };
+
+    // 点阵屏显示信息配置, 对应枚举 NET_EM_CFG_TRAFFIC_LATTICE_SCREEN
+    public static class NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO extends SdkStructure
+    {
+
+        public int									dwSize;						// 结构体大小
+        public int									nStatusChangeTime;			// 状态切换间隔,单位:秒,取值10 ~ 60
+        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO	stuNormal=new NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO();					// 常态下
+        public NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO	stuCarPass=new NET_TRAFFIC_LATTICE_SCREEN_SHOW_INFO();					// 过车时
+        public int			emShowType;					/** 显示方式 {@link com.netsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_SHOW_TYPE}*/
+        public int		emControlType;				 /** 控制方式 {@link com.netsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_CONTROL_TYPE}*/
+        public int	emBackgroundMode;	/** 逻辑屏背景风格模式 {@link com.netsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_BACKGROUND_MODE} */
+        public byte[]									szPlayList=new byte[10*64];  			// 资源文件播放列表,支持视频文件和图片文件播放,按照数组顺序循环播放
+        public int										nPlayListNum;				// 资料文件个数
+        public NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO	stuLogoInfo=new NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO();				// Logo信息
+        public   NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO stuAlarmNoticeInfo=new NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO();	// 报警提示显示信息
+        public NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO(){
+            this.dwSize = this.size();
+        }
+    };
+
+    // 车位灯色
+    public static class NET_PARKINGSPACELIGHT_INFO extends SdkStructure
+    {
+        public int						nRed;					// 红灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nYellow;				// 黄灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nBlue;					// 蓝灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nGreen;					// 绿灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nPurple;				// 紫灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nWhite;					// 白灯: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public int						nPink;					// 粉等: -1:无效, 0/灭, 1/亮, 2/闪烁
+        public byte[]					byReserved=new byte[32];// 保留字节
+
+        public void setInfo(int nRed, int nYellow, int nBlue, int nGreen, int nPurple, int nWhite,int nPink) {
+            this.nRed = nRed;
+            this.nYellow = nYellow;
+            this.nBlue = nBlue;
+            this.nGreen = nGreen;
+            this.nPurple = nPurple;
+            this.nWhite = nWhite;
+            this.nPink = nPink;
+        }
+    } ;
+
+    // 网络异常状态灯色
+    public static class NET_NETWORK_EXCEPTION_INFO extends SdkStructure
+    {
+        public NET_PARKINGSPACELIGHT_INFO[]  stNetPortAbortInfo=(NET_PARKINGSPACELIGHT_INFO[])
+                new NET_PARKINGSPACELIGHT_INFO().toArray(5);	// 网口断开状态灯色
+        public int							nRetNetPortAbortNum;					// 实际返回的个数
+        public NET_PARKINGSPACELIGHT_INFO	stuSpaceSpecialInfo;					// 车位专用状态灯色
+        public NET_PARKINGSPACELIGHT_INFO	stuSpaceChargingInfo;					// 充电车位状态灯色
+        public byte[]						byReserved=new byte[256];						// 保留字节
+    } ;
+
+
+    // 车位状态对应的车位指示灯色 对应 NET_EM_CFG_PARKINGSPACELIGHT_STATE
+    public static class NET_PARKINGSPACELIGHT_STATE_INFO extends SdkStructure
+    {
+        public int								    dwSize;
+        public NET_PARKINGSPACELIGHT_INFO			stuSpaceFreeInfo;			// 车位空闲状态灯色
+        public NET_PARKINGSPACELIGHT_INFO			stuSpaceFullInfo;			// 车位占满状态灯色
+        public NET_PARKINGSPACELIGHT_INFO			stuSpaceOverLineInfo;		// 车位压线状态灯色
+        public NET_PARKINGSPACELIGHT_INFO			stuSpaceOrderInfo;			// 车位预定状态灯色
+        public NET_NETWORK_EXCEPTION_INFO			stuNetWorkExceptionInfo;	// 网络异常状态灯色
+
+        public NET_PARKINGSPACELIGHT_STATE_INFO(){
+            this.dwSize = this.size();
+        }
+    } ;
+
+    // 车位监管状态
+    public static class EM_CFG_LANE_STATUS extends SdkStructure
+    {
+        public static final int EM_CFG_LANE_STATUS_UNKOWN = -1;                     // 状态未知
+        public static final int EM_CFG_LANE_STATUS_UNSUPERVISE = 0;                 // 不监管
+        public static final int EM_CFG_LANE_STATUS_SUPERVISE = 1;                   // 监管
+    };
+
+    public static final int MAX_LANES_NUM               = 64 ;                  // 灯组监管车位的最多个数
+
+    // 单个车位指示灯本机配置
+    public static class CFG_PARKING_SPACE_LIGHT_GROUP_INFO extends SdkStructure
+    {
+        public int                 bEnable;                            // 为TRUE时该配置生效,为FALSE时该配置无效
+        public int[]               emLaneStatus=new int[MAX_LANES_NUM];// 灯组监管的车位,下标表示车位号;参考EM_CFG_LANE_STATUS
+        public int                 nLanesNum;                          // 有效的车位数量(可以设为监管或不监管的车位数量)
+        public int                 bAcceptNetCtrl;                     // 是否接受远程控制
+    };
+
+    public static final int MAX_LIGHT_GROUP_INFO_NUM        = 8 ;                  // 车位指示灯本机配置的最多个数
+
+    // 车位指示灯本机配置 CFG_CMD_PARKING_SPACE_LIGHT_GROUP
+    public static class CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL extends SdkStructure
+    {
+        public int                                         nCfgNum;                                // 获取到的配置个数
+        public CFG_PARKING_SPACE_LIGHT_GROUP_INFO[]        stuLightGroupInfo=(CFG_PARKING_SPACE_LIGHT_GROUP_INFO[])
+                new CFG_PARKING_SPACE_LIGHT_GROUP_INFO().toArray(MAX_LIGHT_GROUP_INFO_NUM);        // 车位指示灯本机配置
+    };
+    //--------------------------------------------------------ERR200424047结束------------------------------------------------------------------------//
+
+    //--------------------------------------------------------ERR200426006------------------------------------------------------------------------//
+    // 灯光设备类型
+    public static class EM_LIGHT_TYPE extends SdkStructure
+    {
+        public static final int EM_LIGHT_TYPE_UNKNOWN=0;                                      // 未知类型
+        public static final int EM_LIGHT_TYPE_COMMLIGHT=1;                                    // 普通灯光
+        public static final int EM_LIGHT_TYPE_LEVELLIGHT=2;                                   // 可调光
+    };
+
+    // 串口地址
+    public static class CFG_COMMADDR_INFO extends SdkStructure
+    {
+        public int                 nAddressNum;                            // 串口地址个数
+        public int[] 			   nAddress=new int[MAX_ADDRESS_NUM];      // 地址描述,不同厂商地址位不同,用数组表示
+    };
+
+    public static final int  MAX_ADDRESS_NUM                         =16;              // 最大串口地址个数
+    public static final int  MAX_DEVICE_ID_LEN                       =48;              // 最大设备编码长度
+    public static final int  MAX_DEVICE_MARK_LEN                     =64;              // 最大设备描述长度
+    public static final int  MAX_BRAND_NAME_LEN                      =64;              // 最大设备品牌长度
+    // 灯光设备配置信息 (对应 CFG_CMD_LIGHT )
+    public static class CFG_LIGHT_INFO extends SdkStructure
+    {
+        public byte[]              szDeviceID=new byte[MAX_DEVICE_ID_LEN];          // 设备编码,惟一标识符
+        public byte[]              szName=new byte[MAX_DEVICE_MARK_LEN];            // 设备描述
+        public byte[]              szBrand=new byte[MAX_BRAND_NAME_LEN];            // 设备品牌
+        public CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址
+        public int                 nPositionID;                            // 设备在区域中编号
+        public CFG_POLYGON         stuPosition;                            // 坐标
+        public int                 nState;                                 // 设备状态: 1-打开,0-关闭
+        public int                 nRange;                                 // 灯亮度幅度值 0-7 , emType 为 EM_LIGHT_TYPE_ADJUSTABLE 有意义
+        public int                 emType;                                 // 灯光设备类型;参考EM_LIGHT_TYPE
+    };
+
+    // 近光灯信息
+    public static class CFG_NEARLIGHT_INFO extends SdkStructure
+    {
+        public int                bEnable;                // 是否使能,TRUE使能,FALSE不使能
+        public int               dwLightPercent;         // 灯光亮度百分比值(0~100)
+        public int               dwAnglePercent;         // 灯光角度百分比值(0~100)
+    };
+
+    // 远光灯信息
+    public static class CFG_FARLIGHT_INFO  extends SdkStructure
+    {
+        public int                bEnable;                // 是否使能,TRUE使能,FALSE不使能
+        public int               dwLightPercent;         // 灯光亮度百分比值(0~100)
+        public int               dwAnglePercent;         // 灯光角度百分比值(0~100)
+    };
+
+    public static final int  MAX_LIGHTING_NUM         =16;
+
+    // 灯光设置详情
+    public static class CFG_LIGHTING_DETAIL extends SdkStructure
+    {
+        public int                                 nCorrection;                     // 灯光补偿 (0~4) 倍率优先时有效
+        public int                                 nSensitive;                      // 灯光灵敏度(0~5)倍率优先时有效,默认为3
+        public int                                 emMode;                          // 灯光模式,参考EM_CFG_LIGHTING_MODE
+        public int                                 nNearLight;                      // 近光灯有效个数
+        public CFG_NEARLIGHT_INFO[]                stuNearLights=(CFG_NEARLIGHT_INFO[])
+                new CFG_NEARLIGHT_INFO().toArray(MAX_LIGHTING_NUM);                 // 近光灯列表
+        public int                                 nFarLight;                       // 远光灯有效个数
+        public CFG_FARLIGHT_INFO[]                 stuFarLights=(CFG_FARLIGHT_INFO[])
+                new CFG_FARLIGHT_INFO().toArray(MAX_LIGHTING_NUM);                  // 远光灯列表
+    };
+
+
+    // 灯光模式
+    public static class EM_CFG_LIGHTING_MODE extends SdkStructure
+    {
+        public static final int EM_CFG_LIGHTING_MODE_UNKNOWN=0;               // 未知
+        public static final int EM_CFG_LIGHTING_MODE_MANUAL=1;                // 手动
+        public static final int EM_CFG_LIGHTING_MODE_ZOOMPRIO=2;              // 倍率优先
+        public static final int EM_CFG_LIGHTING_MODE_TIMING=3;                // 定时模式
+        public static final int EM_CFG_LIGHTING_MODE_AUTO=4;                  // 自动
+        public static final int EM_CFG_LIGHTING_MODE_OFF=5;                   // 关闭模式
+    };
+
+    public static final int  MAX_LIGHTING_DETAIL_NUM  =16;
+
+    // 灯光设置(对应 CFG_CMD_LIGHTING 命令)
+    public static class CFG_LIGHTING_INFO extends SdkStructure
+    {
+        public int                         nLightingDetailNum;                         // 灯光设置有效个数
+        public CFG_LIGHTING_DETAIL[]       stuLightingDetail=(CFG_LIGHTING_DETAIL[])
+                new CFG_LIGHTING_DETAIL().toArray(MAX_LIGHTING_DETAIL_NUM); // 灯光设置信息列表
+    };
+    //--------------------------------------------------------ERR200426006结束------------------------------------------------------------------------//
+
+    //--------------------------------------------------------ERR200427081开始------------------------------------------------------------------------//
+
+
+
+    // 事件类型EVENT_IVS_HIGH_TOSS_DETECT(高空抛物检测事件)对应的数据块描述信息
+    public static class DEV_EVENT_HIGH_TOSS_DETECT_INFO extends SdkStructure
+    {
+        /**
+         *通道号
+         */
+        public int                         nChannelID;
+        /**
+         * 0:脉冲
+         * 1:开始
+         * 2:停止
+         */
+        public int                         nAction;
+        /**
+         * 事件名称
+         */
+        public byte[]                      szName=new byte[128];
+        /**
+         * 时间戳(单位是毫秒)
+         */
+        public double                      PTS;
+        /**
+         * 事件发生的时间
+         */
+        public NET_TIME_EX                 UTC;
+        /**
+         * 事件ID
+         */
+        public int                         nEventID;
+        /**
+         * 智能事件规则编号,用于标示哪个规则触发的事件
+         */
+        public int                         nRuleID;
+        /**
+         * 智能事件所属大类,枚举值参考{@link EM_CLASS_TYPE}
+         */
+        public int                         emClassType;
+        /**
+         * 物体信息
+         */
+        public NET_HIGHTOSS_OBJECT_INFO[]  stuObjInfos=(NET_HIGHTOSS_OBJECT_INFO[])
+                new NET_HIGHTOSS_OBJECT_INFO().toArray(50);
+        /**
+         * 物体个数
+         */
+        public int                         nObjNum;
+        /**
+         * 检测区域顶点数
+         */
+        public int                         nDetectRegionNum;
+        /**
+         * 检测区域,[0,8192)
+         */
+        public NET_POINT[]                  stuDetectRegion=(NET_POINT[])new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);
+        /**
+         * 视频分析帧序号
+         */
+        public int                         nFrameSequence;
+        /**
+         * 事件组ID, 同一物体抓拍过程内GroupID相同
+         */
+        public int                         nGroupID;
+        /**
+         * 抓拍序号,从1开始
+         */
+        public int                         nIndexInGroup;
+        /**
+         * 抓拍张数
+         */
+        public int                         nCountInGroup;
+        /**
+         * 图片信息
+         */
+        public NET_EVENT_IMAGE_OFFSET_INFO stuImageInfo;
+        /**
+         * 是否上传大图, true表示第一个图片为全景大图,信息由ImageInfo来表示
+         */
+        public boolean                        bIsGlobalScene;
+        /**
+         * 用于标记抓拍帧
+         */
+        public int                            nMark;
+        /**
+         * 预留字节
+         */
+        public byte[]                         byReserved=new byte[384];
+
+        @Override
+        public String toString() {
+            return "DEV_EVENT_HIGH_TOSS_DETECT_INFO{" +
+                    "通道号=" + nChannelID +
+                    ", nAction=" + nAction +
+                    ", 事件名称=" + new String(szName, Charset.forName("GBK")).trim() +
+                    ", s事件戳=" + PTS +
+                    ", 事件发生时间=" + UTC.toString() +
+                    ", nEventID=" + nEventID +
+                    ", 智能事件规则编号=" + nRuleID +
+                    ", 智能事件所属大类=" + emClassType +
+                    ", stuObjInfos=" + Arrays.toString(stuObjInfos) +
+                    ", 物体个数=" + nObjNum +
+                    ", 检测区域顶点数=" + nDetectRegionNum +
+                    ", stuDetectRegion=" + Arrays.toString(stuDetectRegion) +
+                    ", 帧序号=" + nFrameSequence +
+                    ", 事件组ID=" + nGroupID +
+                    ", 抓拍序号=" + nIndexInGroup +
+                    ", 抓拍张数=" + nCountInGroup +
+                    ", 图片信息=" + stuImageInfo +
+                    ", 是否大图=" + bIsGlobalScene +
+                    ", 标记抓拍帧=" + nMark +
+                    '}';
+        }
+    }
+    public static class NET_EVENT_IMAGE_OFFSET_INFO extends SdkStructure{
+        /**
+         * 偏移
+         */
+        public int     nOffSet;
+        /**
+         * 图片大小,单位字节
+         */
+        public int	   nLength;
+        /**
+         * 图片宽度
+         */
+        public int	   nWidth;
+        /**
+         * 图片高度
+         */
+        public int	   nHeight;
+        /**
+         * 图片路径
+         */
+        public byte[]  szPath=new byte[260];
+        /**
+         * 保留字节
+         */
+        public byte[]  byReserved=new byte[252];
+
+        @Override
+        public String toString() {
+            return "NET_EVENT_IMAGE_OFFSET_INFO{" +
+                    "nOffSet=" + nOffSet +
+                    ", nLength=" + nLength +
+                    ", nWidth=" + nWidth +
+                    ", nHeight=" + nHeight +
+                    ", szPath=" + new String(szPath,Charset.forName("GBK")) +
+                    '}';
+        }
+    }
+
+    // 高空抛物物体信息
+    public static class NET_HIGHTOSS_OBJECT_INFO extends SdkStructure
+    {
+        public int                             nObjectID;              // 物体ID
+        public int                             emObjAction;            // 物体动作类型;参考EM_HIGHTOSS_ACTION_TYPE
+        public NET_RECT                        stuBoundingBox;         // 包围盒
+        public int                             nConfidence;            // 置信度
+        public int                             emObjectType;           // 物体类型;参考EM_ANALYSE_OBJECT_TYPE
+        public NET_POINT                       stuCenter;              // 物体型心
+        public NET_EVENT_IMAGE_OFFSET_INFO     stuImageInfo;           // 抓拍小图
+        public byte[]                          byReserved=new byte[1516];// 预留字节 		// 预留字节
+
+        @Override
+        public String toString() {
+            return "NET_HIGHTOSS_OBJECT_INFO{" +
+                    "nObjectID=" + nObjectID +
+                    ", 动作类型=" + emObjAction +
+                    ", stuBoundingBox=" + stuBoundingBox +
+                    ", 置信度=" + nConfidence +
+                    ", 物体类型=" + emObjectType +
+                    ",物体型心="+stuCenter +
+                    ",抓拍小图="+stuImageInfo.toString()+
+                    '}';
+        }
+    } ;
+
+    // 登陆时TLS加密模式
+    public static class EM_LOGIN_TLS_TYPE extends SdkStructure {
+    	public static final int EM_LOGIN_TLS_TYPE_NO_TLS            = 0;    // 不走tls加密, 默认方式
+    	public static final int	EM_LOGIN_TLS_TYPE_TLS_ADAPTER       = 1;  // 自适应tls加密
+    	public static final int	EM_LOGIN_TLS_TYPE_TLS_COMPEL        = 2;   // 强制tls加密
+    	public static final int	EM_LOGIN_TLS_TYPE_TLS_MAIN_ONLY     = 3;  // 部分tls加密
+    }
+    // CLIENT_LoginWithHighLevelSecurity 输入参数
+    public static class NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY extends SdkStructure
+    {
+        public int						    dwSize;				            // 结构体大小
+        public byte[]						szIP=new byte[64];	            // IP
+        public int							nPort;				            // 端口
+        public byte[]						szUserName=new byte[64];		// 用户名
+        public byte[]						szPassword=new byte[64];		// 密码
+        public int		                    emSpecCap;			            // 登录模式
+        public byte[]						byReserved=new byte[4];		    // 字节对齐
+        public Pointer pCapParam;			            // 见 CLIENT_LoginEx 接口 pCapParam 与 nSpecCap 关系
+        public int                          emTLSCap;   //登录的TLS模式,参考EM_LOGIN_TLS_TYPE,目前仅支持EM_LOGIN_SPEC_CAP_TCP,EM_LOGIN_SPEC_CAP_SERVER_CONN 模式下的 tls登陆
+
+        public NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // CLIENT_LoginWithHighLevelSecurity 输出参数
+    public static class NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY extends SdkStructure
+    {
+        public int						    dwSize;				            // 结构体大小
+        public NET_DEVICEINFO_Ex			stuDeviceInfo;		            // 设备信息
+        public int							nError;				            // 错误码,见 CLIENT_Login 接口错误码
+        public byte[]						byReserved=new byte[132];	    // 预留字段
+
+        public NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 高安全级别登陆
+    public LLong CLIENT_LoginWithHighLevelSecurity(NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam, NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam);
+
+    // GDPR使能全局开关
+    public void	 CLIENT_SetGDPREnable(boolean bEnable);
+
+    // 合成通道配置(对应CFG_CMD_COMPOSE_CHANNEL)
+    public static class CFG_COMPOSE_CHANNEL extends SdkStructure
+    {
+        public int emSplitMode;			                                    // 分割模式,写入枚举值 枚举值在 CFG_SPLITMODE 类中定义,不要自己写
+        public int[] nChannelCombination = new int[MAX_VIDEO_CHANNEL_NUM];  // 割模式下的各子窗口显示内容  最大 MAX_VIDEO_CHANNEL_NUM
+        public int	 nChannelCount;		                                    // 分割窗口数量
+    }
+
+    // 画中画方案
+    public static class CFG_PICINPIC_INFO extends SdkStructure
+    {
+
+        public      int        nMaxSplit;          // 内存申请的CFG_SPLIT_INFO个数,最大值通过CLIENT_GetSplitCaps接口获取,见nModeCount
+        public      int        nReturnSplit;       // 解析得到实际使用的或封装发送的CFG_SPLIT_INFO个数
+        public      Pointer    pSplits;           // 分割方案,指向 CFG_SPLIT_INFO
+    }
+
+    // 分割方案
+    public static class CFG_SPLIT_INFO extends SdkStructure
+    {
+        public int        emSplitMode;        // CFG_SPLITMODE分割模式,通过CLIENT_GetSplitCaps接口获取,见emSplitMode
+        public int        nMaxChannels;       // 申请内存CFG_SPLIT_CHANNEL_INFO个数, 比如有16个通道,nMaxChannels就是16,SPLITMODE_4模式,则按顺序依次分为4组
+        public int        nReturnChannels;    // 解析返回通道个数,要封装发送的通道个数
+        public Pointer    pSplitChannels;     // 分割通道信息,指向 CFG_SPLIT_CHANNEL_INFO
+    }
+
+    // 分割通道
+    public static class CFG_SPLIT_CHANNEL_INFO extends SdkStructure
+    {
+        public int        bEnable;                      // 使能
+        public byte[]     szDeviceID      =    new byte[AV_CFG_Device_ID_Len];    // 设备ID
+        public int        nChannelID;					// 通道号(0开始)
+        public int        nMaxSmallChannels;            // 小画面通道个数,每个通道一个CFG_SMALLPIC_INFO,这里最大应该是设备通道数减一
+        public int        nReturnSmallChannels;         // 解析返回的或封装发送的小画面通道个数
+        public Pointer    pPicInfo;                     // 小画面信息 CFG_SMALLPIC_INFO
+    }
+
+    // 审讯画中画需求
+    // 小画面窗口信息
+    public static class CFG_SMALLPIC_INFO extends SdkStructure
+    {
+        public byte[]              szDeviceID     =   new byte[AV_CFG_Device_ID_Len];   // 设备ID
+        public int                 nChannelID;						   // 通道号(0开始)
+        public int                 bAudio;                             // 大画面是否混合小画面音频
+        public CFG_RECT            stuPosition;                        // 使用相对坐标体系,取值均为0-8192,在整个屏幕上的位置
+    }
+
+    //--------------------------------------------------------ERR200507125开始------------------------------------------------------------------------//
+    // 空闲动作配置信息
+    public static class CFG_IDLE_MOTION_INFO extends SdkStructure
+    {
+        public int                         bEnable;         // 使能
+        public int                         nTime;           // 启动空闲动作的时间1~60分钟
+        public int                         emFunction;      // 空闲动作功能,见枚举 EM_CFG_IDLEMOTION_FUNCTION
+        public int                         nPresetId;       // 预置点编号,   范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
+        public int                         nScanId;         // 自动线扫编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
+        public int                         nTourId;         // 巡航编号,     范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
+        public int                         nPatternId;      // 自动巡迹编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
+        public int						   nSecond;		    // 启动空闲动作的时长(秒数)范围0-59秒,总时长为nTime * 60 + nSecond
+    };
+
+    //--------------------------------------------------------ERR200507125结束------------------------------------------------------------------------//
+
+    //--------------------------------------------------------ERR200513038-TASK1开始------------------------------------------------------------------------//
+
+
+    // 每个通道的RTMP信息
+    public static class NET_CHANNEL_RTMP_INFO extends SdkStructure
+    {
+        public int						    bEnable;				        // 是否使能
+        public int							nChannel;				        // 通道号(URL中的Channel)
+        public byte[]						szUrl=new byte[512];			// RTMP连接URL
+        public byte[]						byReserved=new byte[1024];		// 预留字段
+    };
+
+    // RTMP 配置
+    public static class NET_CFG_RTMP_INFO extends SdkStructure
+    {
+        public int 						dwSize;					// 结构体大小,赋值为sizeof(NET_CFG_RTMP_INFO)
+        public int						bEnable;				// RTMP配置是否开启
+        public byte[]					szAddr=new byte[256];	// RTMP服务器地址
+        public int						nPort;					// RTMP服务器端口
+    	public byte[]  				    byReserved = new byte[4];		// 字节对齐
+        public byte[]					szCustomPath=new byte[256];		// 路径名
+        public byte[]					szStreamPath=new byte[256];		// 码流路径前缀:不同通道以后缀数字区分
+        public byte[]					szKey=new byte[128];	// 获取RTMP地址时的Key
+        public Pointer           		pstuMainStream;			// 主码流信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nMainStream
+        public int						nMainStream;			// pstuMainStream 个数
+        public int 						nMainStreamRet;			// 返回的 pstuMainStream 个数(获取配置时有效)
+        public Pointer	             	pstuExtra1Stream;		// 辅码流1信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nExtra1Stream
+        public int						nExtra1Stream;			// pstuExtra1Stream 个数
+        public int						nExtra1StreamRet;		// 返回的 nExtra1StreamRet 个数(获取配置时有效)
+        public Pointer           		pstuExtra2Stream;		// 辅码流2信息,用户分配内存,内存大小为 sizeof(NET_CHANNEL_RTMP_INFO) * nExtra2Stream
+        public int						nExtra2Stream;			// pstuExtra2Stream 个数
+        public int						nExtra2StreamRet;		// 返回的 nExtra2StreamRet 个数(获取配置时有效)
+
+        public NET_CFG_RTMP_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+    //--------------------------------------------------------ERR200513038开始------------------------------------------------------------------------//
+    //--------------------------------------------------------GIP200520016实现------------------------------------------------------------------------//
+
+
+
+    // 轮询任务对象
+    public static class NET_POLLING_INFO extends SdkStructure
+    {
+        public int                   emSourceType;                           // 数据源类型 参考EM_DATA_SOURCE_TYPE
+        public Pointer               pSourceData;                            // 数据源信息, 根据emSouceType对应不一样的结构体
+        public byte[]                szUserData=new byte[64];                // 视频源数据,标示视频源信息。在返回结果时,原封不动的带上。当任务的包含多个视频源时,attachResult每个视频源单独上报结果
+        public byte[]                byReserved=new byte[256];               // 保留字节
+    };
+
+    // 接口输出参数
+    public static class NET_IN_ADD_POLLING_ANALYSE_TASK extends SdkStructure
+    {
+        public int                  dwSize;                                 // 结构体大小
+        public int                  nIntervalTime;                          // 每个视频源的检测执行时间,单位为秒,1~65535
+        public int                  nLoopCount;                             // 诊断轮询次数, 0代表永久轮询
+        public int                  nInfoCount;                             // 任务对象个数
+        public Pointer              pInfoList;                              // 任务对象列表(参考NET_POLLING_INFO)
+
+        public NET_IN_ADD_POLLING_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 接口输出参数
+    public static class NET_OUT_ADD_POLLING_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                           nTaskID;                                // 任务ID
+
+        public NET_OUT_ADD_POLLING_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    public static class NET_IN_UPDATE_POLLING_ANALYSE_TASK extends SdkStructure
+    {
+        public int                             dwSize;                                 // 结构体大小
+        public int                             nTaskID;                                // 任务ID
+        public int                             nIntervalTime;                          // 每个视频源的检测执行时间,单位为秒,1~65535
+        public int                             nLoopCount;                             // 诊断轮询次数, 0代表永久轮询
+        public int                             nInfoCount;                             // 任务对象个数
+        public int                             nReserved;                              // 字节对齐
+        public Pointer                         pInfoList;                              // 任务对象列表(参考NET_POLLING_INFO)
+
+
+        public NET_IN_UPDATE_POLLING_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    // 接口输出参数
+    public static class NET_OUT_UPDATE_POLLING_ANALYSE_TASK extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+
+        public NET_OUT_UPDATE_POLLING_ANALYSE_TASK()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+    //获取剩余智能分析资源入参
+    public static class NET_IN_REMAIN_ANAYLSE_RESOURCE extends SdkStructure
+    {
+        public int                           dwSize;                                         // 结构体大小
+
+        public NET_IN_REMAIN_ANAYLSE_RESOURCE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    //智能分析剩余能力具体信息
+    public static class NET_REMAIN_ANALYSE_CAPACITY extends SdkStructure
+    {
+        public int                    nMaxStreamNum;                // 剩余能分析的视频流数目
+        public int                    emClassType;                  // 大类业务方案(参考EM_SCENE_CLASS_TYPE)
+        public byte[]                 byReserved=new byte[1024];    // 保留字节
+    } ;
+
+    //获取剩余智能分析资源出参
+    public static class NET_OUT_REMAIN_ANAYLSE_RESOURCE extends SdkStructure
+    {
+        public int                             dwSize;                                          // 结构体大小
+        public int                             nRetRemainCapNum;                                // 返回的能力格式
+        public NET_REMAIN_ANALYSE_CAPACITY[]   stuRemainCapacities=
+                (NET_REMAIN_ANALYSE_CAPACITY[])new NET_REMAIN_ANALYSE_CAPACITY().toArray(32);   // 智能分析剩余能力
+        public NET_REMAIN_ANALYSE_TOTAL_CAPACITY[]    stuTotalCapacity=
+                (NET_REMAIN_ANALYSE_TOTAL_CAPACITY[])new NET_REMAIN_ANALYSE_TOTAL_CAPACITY().toArray(32);                            //
+        // 可供任务调度的总的智能能力
+
+        public int                              nTotalCapacityNum;
+        public byte[]                           byReserved=new byte[60684];    // 保留字节
+        public NET_OUT_REMAIN_ANAYLSE_RESOURCE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    public static class NET_IN_REMOTEDEVICE_CAPS extends SdkStructure
+    {
+        public int						dwSize;															// 结构体大小
+        //public byte[]                   szSubClassID=new byte[32];                                      // 空表示管理远程通道的设备列表                                                                                                // "EmbeddedPlatform": 表示管理嵌入式管理平台的设备管理器
+
+        public NET_IN_REMOTEDEVICE_CAPS()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+    public static class NET_OUT_REMOTEDEVICE_CAP extends SdkStructure
+    {
+        public int						dwSize;												       // 结构体大小
+        public int                      nRetCount;                                                 // 返回的pnProtocal 有效个数
+        public int[]                    snProtocal=new int[512];                                   // 协议类型 值同 EM_STREAM_PROTOCOL_TYPE
+
+        public NET_OUT_REMOTEDEVICE_CAP()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+    //算法独立升级能力
+    public static class NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE extends SdkStructure
+    {
+        public int                           dwSize;                                         // 结构体大小
+        public int                           bSupportOnlyAlgorithmUpgrade;                   // 是否支持算法独立升级能力
+        public int                           nMaxUpgradeAINum;                               // AI 方案最大个数, 由用户指定,  最大支持128
+        public int                           nRetUpgradeAINum;                               // 实际返回的AI 方案个数, 即pstUpgradeAIInfo 数组的有效元素个数
+        /**
+         * 指针内传入结构体数组,结构体为{@link NET_ALGORITHM_UPGRADE_AI_INFO}
+         */
+        public Pointer                       pstUpgradeAIInfo;                              // 独立算法升级支持的AI方案信息, 内存由用户申请和释放, 申请大小sizeof(NET_ALGORITHM_UPGRADE_AI_INFO)*nMaxUpgradeAINum
+        public int                            nRetStorageNum;                                 // 实际返回的设备分区个数, 即stuStorageInfo 数组的有效元素个数
+        public NET_ALGORITHM_DEV_STORAGE_INFO[]  stuStorageInfos=(NET_ALGORITHM_DEV_STORAGE_INFO[])new NET_ALGORITHM_DEV_STORAGE_INFO().toArray(16);                            // 设备的分区信息
+        public NET_ALGORITHM_BUILD_INFO        stuBuildInfo;                                   // 算法构建信息
+        public NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    //智能分析总能力
+    public static class NET_TOTAL_CAP extends SdkStructure
+    {
+        public int             emClassType;                                // 业务大类(参考EM_SCENE_CLASS_TYPE)
+        public int[]           dwRuleTypes=new int[MAX_ANALYSE_RULE_COUNT];        // 规则类型, 详见dhnetsdk.h中"智能分析事件类型"
+        public int             nRuleNum;                                   // 规则数量
+        public int             nMaxStreamNum;                              // 最多支持同时分析的视频流数目
+        public byte[]          byReserved=new byte[1024];                           // 保留字节
+    } ;
+
+    //智能分析的总能力
+    public static class NET_ANALYSE_CAPS_TOTAL extends SdkStructure
+    {
+        public int                           dwSize;                                         // 结构体大小
+        public NET_TOTAL_CAP[]               stuTotalCaps=(NET_TOTAL_CAP[])new NET_TOTAL_CAP().toArray(MAX_ANALYSE_TOTALCAPS_NUM);        // 智能分析总能力
+        public int                           nTotalCapsNum;                                  // 智能分析总能力个数
+        public int                           nTotalDecodeCaps;                               // 总解码能力,即总解码资源个数
+        public int                           nTotalComputingCaps;                            // 总算力
+        public int                           nSingleTaskComputingCaps;                       // 单任务最大算力
+        public NET_ANALYSE_CAPS_TOTAL()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 算法版本信息
+    public static class NET_ALGORITHM_INFO extends SdkStructure
+    {
+        public int             emClassType;                        // 业务大类(参考EM_SCENE_CLASS_TYPE)
+        public byte[]          szVersion=new byte[NET_COMMON_STRING_32];     // 算法版本
+        public int             emAlgorithmVendor;                  // 算法厂商(参考EM_ALGORITHM_VENDOR)
+        public byte[]          szAlgorithmLibVersion=new byte[NET_COMMON_STRING_32];  // 算法库文件版本
+        public byte[]          byReserved=new byte[992];                   // 保留字节
+    } ;
+
+    //智能分析的算法版本信息
+    public static class NET_ANALYSE_CAPS_ALGORITHM extends SdkStructure
+    {
+        public int                           dwSize;                                         // 结构体大小
+        public NET_ALGORITHM_INFO[]          stuAlgorithmInfos=(NET_ALGORITHM_INFO[])new NET_ALGORITHM_INFO().toArray(MAX_ANALYSE_ALGORITHM_NUM);   // 算法版本信息
+        public int                           nAlgorithmNum;                                  // 算法个数
+
+        public NET_ANALYSE_CAPS_ALGORITHM()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 智能分析服务能力类型
+    public static class EM_ANALYSE_CAPS_TYPE extends SdkStructure
+    {
+        public static final int  EM_ANALYSE_CAPS_ALGORITHM = 1;         // 算法版本, 对应输出结构体 NET_ANALYSE_CAPS_ALGORITHM
+        public static final int  EM_ANALYSE_CAPS_TOTALCAPS = 2;          // 智能分析总能力, 对应输出结构体 NET_ANALYSE_CAPS_TOTAL
+        public static final int  EM_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE = 3;  // 算法独立升级能力, 对应输出结构体 NET_ANALYSE_CAPS_SUPPORT_ALGORITHM_UPGRADE
+    };
+
+    //CLIENT_SetAnalyseTaskCustomData 接口输入参数
+    public static class NET_IN_SET_ANALYSE_TASK_CUSTOM_DATA extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+        public int                            nTaskID;                                // 任务ID
+        public NET_TASK_CUSTOM_DATA            stuTaskCustomData;                      // 自定义数据
+
+        public NET_IN_SET_ANALYSE_TASK_CUSTOM_DATA()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+
+    //CLIENT_SetAnalyseTaskCustomData 接口输出参数
+    public static class NET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA extends SdkStructure
+    {
+        public int                           dwSize;                                 // 结构体大小
+
+
+        public NET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // 获取视频分析服务智能能力集, pstOutParam根据emCapsType的值取对应的结构体(参考EM_ANALYSE_CAPS_TYPE), pstOutParam 资源由用户申请和释放
+    public boolean  CLIENT_GetAnalyseCaps(LLong lLoginID, int emCapsType, Pointer pOutParam, int nWaitTime);
+
+    // 添加轮询检测任务 (入参NET_IN_ADD_POLLING_ANALYSE_TASK,出参NET_OUT_ADD_POLLING_ANALYSE_TASK)
+    public boolean  CLIENT_AddPollingAnalyseTask(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 更新轮询检测任务规则(入参NET_IN_UPDATE_POLLING_ANALYSE_TASK,出参NET_OUT_UPDATE_POLLING_ANALYSE_TASK)
+    public boolean  CLIENT_UpdatePollingAnalyseTask(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 获取剩余智能分析资源(入参NET_IN_REMAIN_ANAYLSE_RESOURCE,出参NET_OUT_REMAIN_ANAYLSE_RESOURCE)
+    public boolean  CLIENT_GetRemainAnalyseResource(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 设置任务的自定义数据(入参NET_IN_SET_ANALYSE_TASK_CUSTOM_DATA,出参NET_OUT_SET_ANALYSE_TASK_CUSTOM_DATA)
+    public boolean  CLIENT_SetAnalyseTaskCustomData(LLong lLoginID, Pointer pInParam, Pointer pOutParam,  int nWaitTime);
+
+    public static class NET_VIDEOABNORMALDETECTION_RULE_INFO extends SdkStructure {
+        /**
+         * 最短持续时间	单位:秒,0~65535
+         */
+        public int					    nMinDuration;
+        /**
+         * 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
+         */
+        public int                     nSensitivity;
+
+        /**
+         * 检测类型数
+         */
+        public int                     nDetectType;
+        public int                     nReserved;
+        /**
+         * 异常检测阈值,范围1~100
+         */
+        public int[]					nThreshold=new int[32];
+        /**
+         * 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化
+         * 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测
+         * 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变
+         */
+
+        public byte[]                  bDetectType=new byte[32];
+        /**
+         * 保留字节
+         */
+        public byte[]				    byReserved=new byte[4096];
+
+    }
+    //--------------------------------------------------------ERR200529144------------------------------------------------------------------------//
+    // 热度图灰度数据
+    public static class NET_CB_HEATMAP_GRAY_INFO extends SdkStructure
+    {
+        public int                    nWidth;                 // 图片宽度
+        public int                    nHeight;                // 图片高度
+        public NET_TIME                stuStartTime;           // 开始时间
+        public NET_TIME                stuEndTime;             // 结束时间
+        public int                    nMax;                   // 最大值
+        public int                    nMin;                   // 最小值
+        public int                    nAverage;               // 平均值
+        public int                    nLength;                // 灰度图数据长度
+        public Pointer                   pGrayInfo;              // 灰度图数据
+        public byte[]                    byReserved=new byte[512];        // 保留字节
+    } ;
+
+
+    // 热度图灰度数据回调函数, lAttachHandle 为 CLIENT_AttachHeatMapGrayInfo 返回的结果(pstGrayInfo参考NET_CB_HEATMAP_GRAY_INFO)
+    public interface fHeatMapGrayCallBack extends Callback{
+        public void invoke(LLong lAttachHandle, Pointer pstGrayInfo, Pointer dwUser);
+    }
+    // CLIENT_AttachHeatMapGrayInfo 接口输入参数
+    public static class NET_IN_GRAY_ATTACH_INFO extends SdkStructure
+    {
+        public int                   dwSize;                         // 结构体大小
+        public int                    nChannelID;                    // 通道号
+        public fHeatMapGrayCallBack    cbHeatMapGray;                  // 热度图灰度数据回调函数
+        public Pointer                  dwUser;                         // 用户信息
+
+        public NET_IN_GRAY_ATTACH_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+    // CLIENT_AttachHeatMapGrayInfo接口输出参数
+    public static class NET_OUT_GRAY_ATTACH_INFO extends SdkStructure
+    {
+        public int                   dwSize;                            // 结构体大小
+
+        public NET_OUT_GRAY_ATTACH_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    } ;
+
+
+    // 订阅热度图灰度数据接口,pInParam与pOutParam内存由用户申请释放(pInParam参考NET_IN_GRAY_ATTACH_INFO,pOutParam参考NET_OUT_GRAY_ATTACH_INFO)
+    public LLong  CLIENT_AttachHeatMapGrayInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 退订热度图灰度数据
+    public boolean  CLIENT_DetachHeatMapGrayInfo(LLong lAttachHandle);
+
+    // 事件类型EVENT_IVS_RETROGRADEDETECTION(人员逆行事件)对应的数据块描述信息
+    public static class DEV_EVENT_RETROGRADEDETECTION_INFO  extends SdkStructure
+    {
+        public int                 nChannelID;                                 // 通道号
+        public byte[]              szName=new byte[128];                       // 事件名称
+        public byte[]              bReserved1=new byte[4];                     // 字节对齐
+        public double              PTS;                                        // 时间戳(单位是毫秒)
+        public NET_TIME_EX         UTC;                                        // 事件发生的时间
+        public int                 nEventID;                                   // 事件ID
+        public DH_MSG_OBJECT       stuObject;                                  // 检测到的物体
+        public int                 nTrackLineNum;                              // 物体运动轨迹顶点数
+        public DH_POINT[]          TrackLine=(DH_POINT[])new DH_POINT().toArray(NET_MAX_TRACK_LINE_NUM);           // 物体运动轨迹
+        public int                 nDirectionPointNum;                         // 规则里规定的方向顶点数
+        public DH_POINT[]          stuDirections=(DH_POINT[])new DH_POINT().toArray(NET_MAX_DETECT_LINE_NUM);      // 规则里规定的方向
+        public int                 nDetectRegionNum;                           // 规则检测区域顶点数
+        public DH_POINT[]          DetectRegion=(DH_POINT[])new DH_POINT().toArray(NET_MAX_DETECT_REGION_NUM);     // 规则检测区域
+        public NET_EVENT_FILE_INFO stuFileInfo;                                // 事件对应文件信息
+        public byte                bEventAction;                               // 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+        public byte[]              byReserved=new byte[2];
+        public byte                byImageIndex;                               // 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+        public int                 dwSnapFlagMask;                             // 抓图标志(按位),具体见NET_RESERVED_COMMON
+        public int                 nSourceIndex;                               // 事件源设备上的index,-1表示数据无效
+        public byte[]              szSourceDevice=new byte[MAX_PATH];          // 事件源设备唯一标识,字段不存在或者为空表示本地设备
+        public int                 nOccurrenceCount;                           // 事件触发累计次数
+        public EVENT_INTELLI_COMM_INFO     stuIntelliCommInfo;                 // 智能事件公共信息
+        public Pointer             pstuImageInfo;                              // 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组
+        public int                 nImageInfoNum;                              // 图片信息个数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+        public byte[]              bReserved=new byte[604];                    // 保留字节,留待扩展.
+    } ;
+
+    public static final int  NET_MAX_PLATEENABLE_NUM		= 16;      // 最大使能过车车牌播报个数
+    public static final int  NET_MAX_BROADCAST_ELEMENT_NUM	= 64;      // 最大语音播报元素个数
+
+    // 智能交通语音播报配置 对应枚举 NET_EM_CFG_TRAFFIC_VOICE_BROADCAST
+    public static class NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO  extends SdkStructure
+    {
+        public int									dwSize;								         // 结构体大小
+        public int									nEnableCount;                                // 使能播报个数
+        public int[]			                    emEnable=new int[NET_MAX_PLATEENABLE_NUM];   // 使能过车车牌播报,见枚举 NET_EM_PLATEENABLE_TYPE
+        public byte[]								szNormalCar=new byte[MAX_PATH];              // 普通车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
+        public byte[]								szTrustCar=new byte[MAX_PATH];               // 信任车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
+        public byte[]								szSuspiciousCar=new byte[MAX_PATH];          // 嫌疑车辆过车播报内容,例如:播报语音文件"非注册车辆.wav"
+        public NET_TRAFFIC_VOICE_BROADCAST_ELEMENT[] stuElement=(NET_TRAFFIC_VOICE_BROADCAST_ELEMENT[])new  NET_TRAFFIC_VOICE_BROADCAST_ELEMENT().toArray(NET_MAX_BROADCAST_ELEMENT_NUM);	 // 播报元素
+        public int									nElementNum;						         // stuElement中有效数据个数
+
+        public NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO()
+        {
+            this.dwSize = this.size();
+        }// 此结构体大小
+    };
+
+
+    // 播报元素
+    public static class NET_TRAFFIC_VOICE_BROADCAST_ELEMENT  extends SdkStructure
+    {
+        public int	                    emType;		                // 类型(参考NET_EM_VOICE_BROADCAST_ELEMENT_TYPE)
+        public byte[]					byReserved1=new byte[4];	// 字节对齐
+        public byte[]					szPrefix=new byte[512];		// 前缀字符串
+        public byte[]					szPostfix=new byte[512];	// 后缀字符串
+        public byte[]					byReserved=new byte[1024];	// 预留
+    };
+
+
+    // 485串口协议设备配置信息
+    public static class NET_CFG_DHRS_INFO  extends SdkStructure
+    {
+        public int                             nDeviceNum;                     // 串口设备个数
+        public NET_CFG_DHRS_DEVICE_INFO[]      stuDHRSDeviceInfo=(NET_CFG_DHRS_DEVICE_INFO[])new NET_CFG_DHRS_DEVICE_INFO().toArray(32);          // 串口设备信息
+
+    };
+
+    public static class NET_CFG_DHRS_DEVICE_INFO extends SdkStructure
+    {
+        public int                            bEnable;                        // 串口设备是否启用
+        public int                            emType;                         // 串口设备类型(参考EM_DHRS_DEVICE_TYPE)
+        public NET_CFG_LATTICE_SCREEN_CONFIG  stuLatticeScreenConfig;         // 485串口点阵屏配置
+        public byte[]                         byReserved=new byte[4096];      //预留字节
+    } ;
+
+    // 485串口点阵屏配置
+    public static class NET_CFG_LATTICE_SCREEN_CONFIG extends SdkStructure
+    {
+        public int                             nAddress;                       // 配置对应设备的地址, 范围[1,31]
+        public int                             emRollSpeedLevel;               // 点阵屏滚动速度级别(参考EM_ROLL_SPEED_LEVEL)
+        public int                             nLogicScreenNum;                // 逻辑屏个数
+        public NET_LOGIC_SCREEN[]              stuLogicScreens=(NET_LOGIC_SCREEN[])new NET_LOGIC_SCREEN().toArray(8);             // 逻辑屏信息, 划分物理屏的某一区域为逻辑屏
+        public int                             nOutPutVoiceVolume;             // 语音播报音量大小, 范围:[0 - 100]
+        public int                             nOutPutVoiceSpeed;              // 语音播报速度, 范围:[0-100]
+        public byte[]                          byReserved=new byte[1024];
+    } ;
+
+    // 串口设备类型
+    public static class EM_DHRS_DEVICE_TYPE extends SdkStructure
+    {
+        public static final int  EM_DHRS_DEVICE_TYPE_UNKNOWN =0;                // 未知
+        public static final int  EM_DHRS_DEVICE_TYPE_STEADYLIGHT =1;            // 常亮灯
+        public static final int  EM_DHRS_DEVICE_TYPE_STROBELIGHT =2;            // 可以通过485控制的频闪灯
+        public static final int  EM_DHRS_DEVICE_TYPE_POWERMODULE =3;            // 电源模块
+        public static final int  EM_DHRS_DEVICE_TYPE_LATTICESCREEN =4;          // 点阵屏
+        public static final int  EM_DHRS_DEVICE_TYPE_INDICATORLIGHT =5;         // 指示灯
+        public static final int  EM_DHRS_DEVICE_TYPE_RAINBRUSH =6;              // 雨刷洗涤模块
+        public static final int  EM_DHRS_DEVICE_TYPE_FLASHLAMP =7;              // 爆闪灯
+        public static final int  EM_DHRS_DEVICE_TYPE_RFID =8;                   // 射频识别
+        public static final int  EM_DHRS_DEVICE_TYPE_COMMON =9;                 // 通用485
+    } ;
+
+    // 逻辑屏信息
+    public static class NET_LOGIC_SCREEN extends SdkStructure
+    {
+        public NET_RECT                         stuRegion;         // 逻辑屏区域, 实际点阵屏坐标
+        public int                              emDisplayMode;     // 显示动作(参考EM_DISPLAY_MODE)
+        public int                              emDisplayColor;    // 显示颜色(参考EM_DISPLAY_COLOR)
+        public byte[]                           byReserved = new byte[512];   // 预留字节
+    } ;
+
+    // 点阵屏滚动速度级别
+    public static class EM_ROLL_SPEED_LEVEL extends SdkStructure
+    {
+        public static final int  EM_ROLL_SPEED_LEVEL_UNKNOWN =0;                        // 未知
+        public static final int  EM_ROLL_SPEED_LEVEL_SLOW =1;                           // 慢
+        public static final int  EM_ROLL_SPEED_LEVEL_SLOWER =2;                         // 较慢
+        public static final int  EM_ROLL_SPEED_LEVEL_MEDIUM =3;                         // 中等
+        public static final int  EM_ROLL_SPEED_LEVEL_FASTER =4;                         // 较快
+        public static final int  EM_ROLL_SPEED_LEVEL_FAST =5;                           // 快
+    } ;
+
+    // 显示动作
+    public static class EM_DISPLAY_MODE extends SdkStructure
+    {
+        public static final int EM_DISPLAY_MODE_UNKNOWN =0;                            // 未知
+        public static final int EM_DISPLAY_MODE_ROLL =1;                               // 滚动
+        public static final int EM_DISPLAY_MODE_INTERCEPT =2;                          // 截取
+    } ;
+
+    // 显示颜色
+    public static class EM_DISPLAY_COLOR extends SdkStructure
+    {
+        public static final int  EM_DISPLAY_COLOR_UNKNOWN =0;                           // 未知
+        public static final int  EM_DISPLAY_COLOR_RED =1;                               // 红
+        public static final int  EM_DISPLAY_COLOR_GREEN =2;                             // 绿
+        public static final int  EM_DISPLAY_COLOR_YELLOW =3;                            // 黄
+    }
+
+    public static class NET_FACEANALYSIS_RULE_INFO extends SdkStructure {
+        public int                          dwSize;                             	                // 结构体大小
+        public int							nDetectRegionPoint;						                // 检测区顶点数
+        public POINTCOORDINATE[]		    stuDetectRegion = new POINTCOORDINATE[20];              // 检测区
+        public int                 		    nSensitivity;                                           // 灵敏度,范围[1,10],灵敏度越高越容易检测
+        public int							nLinkGroupNum;							                // 联动布控个数
+        public NET_CFG_LINKGROUP_INFO[]		stuLinkGroup = new NET_CFG_LINKGROUP_INFO[20];	        // 联动的布控组
+        public NET_CFG_STRANGERMODE_INFO	stuStrangerMode;						                // 陌生人布防模式
+        public boolean                		bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
+        public NET_CFG_SIZEFILTER_INFO      stuSizeFileter;                                          // 规则特定的尺寸过滤器
+        public boolean						bFeatureEnable;							                // 是否开启人脸属性识别, IPC增加
+        public int							nFaceFeatureNum;						                // 需要检测的人脸属性个数
+        public int[] 	                    emFaceFeatureType = new int[32];	                    // 需检测的人脸属性 NET_EM_FACEFEATURE_TYPE
+        public boolean						bFeatureFilter;							                // 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性
+        // true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准,影响用户体验)
+        public int							nMinQuality;							                // 人脸图片质量阈值,和bFeatureFilter一起使用 范围[1,100]
+
+        public NET_FACEANALYSIS_RULE_INFO(){
+            for(int i = 0; i < stuDetectRegion.length; i++ ){
+                stuDetectRegion[i] = new POINTCOORDINATE();
+            }
+            for(int i = 0; i < stuLinkGroup.length; i++){
+                stuLinkGroup[i] = new NET_CFG_LINKGROUP_INFO();
+            }
+            dwSize  =   this.size();
+        }
+
+    }
+
+    // 联动的布控组
+    public static class NET_CFG_LINKGROUP_INFO extends SdkStructure {
+        public boolean 					bEnable;							// 布控组是否启用
+        public byte[]					szGroupID = new byte[64];			// 布控组ID
+        public byte                		bySimilarity;                       // 相似度阈值 1-100
+        public byte[]					bReserved1 = new byte[3];			// 字节对齐
+        public byte[]					szColorName = new byte[32];			// 事件触发时绘制人脸框的颜色
+        public boolean 					bShowTitle;							// 事件触发时规则框上是否显示报警标题
+        public boolean 					bShowPlate;							// 事件触发时是否显示比对面板
+        public NET_ALARM_MSG_HANDLE 	stuEventHandler;					// 报警联动
+        public byte[]					bReserved = new byte[512];			// 保留字段
+    }
+
+    // 陌生人布防模式
+    public static class NET_CFG_STRANGERMODE_INFO extends SdkStructure {
+        public boolean 					bEnable;							// 模式是否启用
+        public byte[]					szColorHex = new byte[8];			// 事件触发时绘制人脸框的颜色
+        public boolean 					bShowTitle;							// 事件触发时规则框上是否显示报警标题
+        public boolean 					bShowPlate;							// 事件触发时是否显示比对面板
+        public NET_ALARM_MSG_HANDLE 	stuEventHandler;					// 报警联动
+        public byte[]					bReserved = new byte[512];			// 保留字段
+    }
+
+    // 人脸属性类型
+    public static class NET_EM_FACEFEATURE_TYPE
+    {
+        public final static int NET_EM_FACEFEATURE_UNKNOWN = 0;		// 未知
+        public final static int NET_EM_FACEFEATURE_SEX = 1;			// 性别
+        public final static int NET_EM_FACEFEATURE_AGE = 2;			// 年龄
+        public final static int NET_EM_FACEFEATURE_EMOTION = 3;		// 表情
+        public final static int NET_EM_FACEFEATURE_GLASSES = 4;		// 眼镜状态
+        public final static int NET_EM_FACEFEATURE_EYE = 5;			// 眼睛状态
+        public final static int NET_EM_FACEFEATURE_MOUTH = 6;		// 嘴巴状态
+        public final static int NET_EM_FACEFEATURE_MASK =  7;		// 口罩状态
+        public final static int NET_EM_FACEFEATURE_BEARD = 8;		// 胡子状态
+        public final static int NET_EM_FACEFEATURE_ATTRACTIVE = 9;	// 魅力值
+    }
+
+    // 事件类型EM_ANALYSE_EVENT_FEATURE_ABSTRACT(特征提取)对应的数据块描述信息
+    public static class DEV_EVENT_FEATURE_ABSTRACT_INFO extends SdkStructure
+    {
+        public int                 			nChannelID;                         		                // 通道号
+        public int							nAction;									                // 0:脉冲 1:开始 2:停止
+        public int                          emClassType;                           		                // 智能事件所属大类 EM_CLASS_TYPE
+        public int                          nFeatureNum;                                                // 特征值数量
+        public NET_FEATURE_VECTOR_INFO[]    stuFeatureVectorList = new NET_FEATURE_VECTOR_INFO[10];     // 特征值数组,同一个图片需要进行多个版本的特征向量提取,在一个事件中返回
+        public byte[]			    		byReserved = new byte[1024];			        		    // 预留字节
+
+        public DEV_EVENT_FEATURE_ABSTRACT_INFO(){
+            for(int i=0;i<stuFeatureVectorList.length;i++){
+                stuFeatureVectorList[i] = new NET_FEATURE_VECTOR_INFO();
+            }
+        }
+    }
+
+    // 特征值信息
+    public static class NET_FEATURE_VECTOR_INFO extends SdkStructure
+    {
+        public byte[]                          szFeatureVersion = new byte[32];   // 特征版本版本号
+        public int                             emFeatureErrCode;                  // 特征建模失败错误码 EM_FEATURE_ERROR_CODE
+        public NET_FEATURE_VECTOR              stuFeatureVector;                  // 特征值的偏移和大小信息
+        public NET_FACE_ATTRIBUTES             stuFaceAttribute;                  // 人脸属性 ,当提取人脸特征向量成功时上报
+        public byte[]			    		   byReserved = new byte[968];	       // 预留字节
+    }
+
+    // 特征建模失败错误码
+    public static class EM_FEATURE_ERROR_CODE
+    {
+        public final static int EM_FEATURE_ERROR_SUCCESS = 0;		                // 成功
+        public final static int EM_FEATURE_ERROR_UNKNOWN = 1;		                // 未知
+        public final static int EM_FEATURE_ERROR_IMAGE_FORMAT_ERROR = 2;		    // 图片格式问题
+        public final static int EM_FEATURE_ERROR_NOFACE_OR_NOTCLEAR =3;	            // 无人脸或不够清晰
+        public final static int EM_FEATURE_ERROR_MULT_FACES = 4;            		// 多个人脸
+        public final static int EM_FEATURE_ERROR_IMAGH_DECODE_FAILED = 5;	    	// 图片解码失败
+        public final static int EM_FEATURE_ERROR_NOT_SUGGEST_STORAGE = 6;	        // 不推荐入库
+        public final static int EM_FEATURE_ERROR_DATABASE_OPERATE_FAILED = 7;		// 数据库操作失败
+        public final static int EM_FEATURE_ERROR_GET_IMAGE_FAILED = 8;		        // 获取图片失败
+        public final static int EM_FEATURE_ERROR_SYSTEM_EXCEPTION = 9;	            // 系统异常(如Licence失效、建模分析器未启动导致的失败)
+    }
+
+    // 人脸属性
+    public static class NET_FACE_ATTRIBUTES  extends SdkStructure
+    {
+        public int[]                           nAngle = new int[3];                // 人脸抓拍角度,三个角度分别是:仰俯角,偏航角,翻滚角;默认值[999,999,999]表示无此数据
+        public int                             nFaceQuality;                       // 人脸抓拍质量分数,取值范围 0~10000
+        public int                             nFaceAlignScore;                    // 人脸对齐得分分数,取值范围 0~10000,-1为无效值
+        public byte[]			    		   byReserved = new byte[36];	        // 预留字节
+    }
+
+    // 事件类型EVENT_IVS_FEATURE_ABSTRACT(提取特征)对应的规则配置
+    public static class NET_FEATURE_ABSTRACT_RULE_INFO  extends SdkStructure
+    {
+        public int                     dwSize;                     // 结构体大小
+        public int                     nFeature;                   // 特征的数量
+        public NET_FEATURE_ABSTRACT_VERSION[]                szFeatureVersions = new NET_FEATURE_ABSTRACT_VERSION[10];  // 对图片进行特征向量提取时使用,需要对图片进行同一种特征向量多个版本进行提取,最大是10个版本
+        public int                     emAbstractType;            // 进行特征提取的类型 EM_FEATURE_ABSTRACT_TYPE
+        public NET_FEATURE_ABSTRACT_RULE_INFO(){
+            for(int i = 0;i<szFeatureVersions.length;i++){
+                szFeatureVersions[i] = new NET_FEATURE_ABSTRACT_VERSION();
+            }
+            this.dwSize = this.size();
+        }
+    }
+
+    public static class NET_FEATURE_ABSTRACT_VERSION extends SdkStructure
+    {
+        public byte[] szFeatureVersion = new byte[32];
+    }
+
+    // 进行特征提取的类型
+    public static class EM_FEATURE_ABSTRACT_TYPE
+    {
+        public final static int EM_FEATURE_ABSTRACT_UNKNOWN = -1;      // 未知
+        public final static int EM_FEATURE_ABSTRACT_FACE = 0;             // 人脸
+        public final static int EM_FEATURE_ABSTRACT_HUMAN_TRAIT = 1;       // 人体
+        public final static int EM_FEATURE_ABSTRACT_VEHICLE = 2;           // 机动车
+        public final static int EM_FEATURE_ABSTRACT_NON_MOTOR_VEHICLE = 3; // 非机动车
+    }
+
+    public static class ALARM_TRAFFIC_PARKING_TIMEOUT_INFO extends SdkStructure
+    {
+        public int                 	nChannelID;                         	// 通道号
+        public int					nAction;								// 0:脉冲 1:开始 2:停止
+        public NET_TIME_EX         	UTC;                                	// 事件发生的时间
+        public NET_TIME				stuInParkTime;							// 进场时间
+        public NET_TIME				stuOutParkTime;							// 出场时间
+        public int					nParkingTime;							// 停车时长,单位秒
+        public byte[]			    byReserved = new byte[1024];			// 预留字节
+        public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO	stuTrafficCar;			// 交通车辆的数据库记录
+    }
+
+    // 嫌疑车辆上报事件, 对应事件类型 DH_ALARM_TRAFFIC_SUSPICIOUSCAR
+    public static class ALARM_TRAFFIC_SUSPICIOUSCAR_INFO extends SdkStructure
+    {
+        public int                     dwSize;
+        public int                     nAction;                        // 事件动作, -1:未知,0:Start, 1:Stop, 2:Pulse
+        public DH_MSG_OBJECT           stuVehicle;                     // 车身信息
+        public NET_TRAFFIC_LIST_RECORD stuCarInfo;                     // 车辆的禁止名单信息
+        public EVENT_COMM_INFO         stCommInfo;                     // 公共信息
+        public ALARM_TRAFFIC_SUSPICIOUSCAR_INFO(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // 事件类型 DH_ALARM_PARKING_LOT_STATUS_DETECTION (室外停车位状态检测事件) 对应的数据块描述信息
+    public static class ALARM_PARKING_LOT_STATUS_DETECTION extends SdkStructure
+    {
+        public int                         nChannelID;                                 // 通道号
+        public int                         nAction;                                    // 1:开始 2:停止
+        public byte[]                      szName = new byte[128];                     // 事件名称
+        public int                         emClassType;                                // 智能事件所属大类 EM_CLASS_TYPE
+        public NET_TIME_EX                 UTC;                                        // 事件发生的时间
+        public double                      PTS;                                        // 时间戳(单位是毫秒)
+        public int                         nEventID;                                   // 事件ID
+        public int                         nRuleID;                                    // 智能事件规则编号,用于标示哪个规则触发的事件
+        public int                         nSequence;                                  // 帧序号
+        public int                         nParkingStatusNum;                          // 室外停车位个数
+        public NET_PARKING_STATUS[]        stuParkingStatus = new NET_PARKING_STATUS[100]; // 室外停车位状态
+        public byte[]                      byReserved = new byte[1020];                 // 预留字节
+        public ALARM_PARKING_LOT_STATUS_DETECTION(){
+            for(int i = 0;i<stuParkingStatus.length;i++){
+                stuParkingStatus[i] = new NET_PARKING_STATUS();
+            }
+        }
+    }
+
+    // 室外停车位状态
+    public static class NET_PARKING_STATUS extends SdkStructure
+    {
+        public byte[]                             szName = new byte[32];                                               // 车位名称
+        public int                                nID;                                                      // 车位ID,范围:[0,99]
+        public int                                nParkedNumber;                                            // 车位内已停车位数量,范围:[0,255]
+        public int                                emChangeStatus;                                           // 车位内已停车位数量相对上次上报的变化状态 EM_PARKING_NUMBER_CHANGE_STATUS
+        public byte[]                             reserved = new byte[252];                                            // 预留字节
+    }
+
+    // 车位内已停车位数量相对上次上报的变化状态
+    public static class EM_PARKING_NUMBER_CHANGE_STATUS
+    {
+        public final static int EM_PARKING_NUMBER_CHANGE_STATUS_UNKNOWN = -1;               // 未知
+        public final static int EM_PARKING_NUMBER_CHANGE_STATUS_NO_CHANGE = 0;              // 无变化
+        public final static int EM_PARKING_NUMBER_CHANGE_STATUS_INCREASE = 1;               // 数量增加
+        public final static int EM_PARKING_NUMBER_CHANGE_STATUS_DECREASE = 2;               // 数量减少
+    }
+
+    // 停车超时检测配置
+    public static class NET_CFG_PARKING_TIMEOUT_DETECT extends SdkStructure
+    {
+        public int            dwSize;                 // 结构体大小
+        public int            bEnable;                // 是否使能停车超时检测
+        public int            nParkingTime;           // 可停车时长, 单位为秒, 默认值为604800. 范围:3600-604800, 超过指定时长则判断为超时停车
+        public int			  nDetectInterval;		// 上报超时停车间隔, 单位为秒, 默认值为86400(24小时). 最小值为600, 最大值为86400
+        public NET_CFG_PARKING_TIMEOUT_DETECT(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RemoveParkingCarInfo 接口输入参数
+    public static class NET_IN_REMOVE_PARKING_CAR_INFO extends SdkStructure
+    {
+        public int                        dwSize;                                    // 结构体大小
+        public DEV_OCCUPIED_WARNING_INFO  stuParkingCarInfo;                         // 车位信息
+        public NET_IN_REMOVE_PARKING_CAR_INFO(){
+            this.dwSize = this.size();
+        }
+    }
+
+    // CLIENT_RemoveParkingCarInfo 接口输出参数
+    public static class NET_OUT_REMOVE_PARKING_CAR_INFO extends SdkStructure
+    {
+        public int                      dwSize;                                    // 结构体大小
+        public NET_OUT_REMOVE_PARKING_CAR_INFO(){
+            this.dwSize = this.size();
+        }
+    }
+
+  //对应CLIENT_StartSearchDevicesEx接口
+    public static class DEVICE_NET_INFO_EX2 extends SdkStructure
+    {
+    	public DEVICE_NET_INFO_EX  stuDevInfo;                             // 设备信息结构体
+    	public byte[]                szLocalIP=new byte[64];            // 搜索到设备的本地IP地址
+    	public byte[]                cReserved=new byte[2048];                        // 扩展字段
+    };
+
+    // 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放, 参考DEVICE_NET_INFO_EX2)
+    public interface fSearchDevicesCBEx extends Callback {
+        public void invoke(LLong lSearchHandle, Pointer pDevNetInfo, Pointer pUserData);
+    }
+
+    // 异步搜索设备(参考NET_IN_STARTSERACH_DEVICE,NET_OUT_STARTSERACH_DEVICE)
+    public LLong  CLIENT_StartSearchDevicesEx(Pointer pInBuf, Pointer pOutBuf);
+
+    // 同步跨网段搜索设备IP (pIpSearchInfo内存由用户申请释放)
+    // szLocalIp为本地IP,可不做输入, fSearchDevicesCB回调
+    // 接口调用1次只发送搜索信令1次
+    public boolean CLIENT_SearchDevicesByIPs(DEVICE_IP_SEARCH_INFO pIpSearchInfo, Callback cbSearchDevices, Pointer dwUserData, String szLocalIp, int dwWaitTime);
+
+
+    /**
+     *
+     * @param lLoginID
+     * @param pInParam
+     * @param pOutParam
+     * @param nWaitTime
+     * @return boolean
+     */
+    public boolean CLIENT_AsyncAddCustomDevice(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /***
+     *
+     * @param lLoginID
+     * @param nChannelID
+     * @param dwFocusCommand
+     * @param nFocus
+     * @param nZoom
+     * @param reserved
+     * @param waittime
+     * @return
+     * 镜头聚焦控制  dwFocusCommand = 0
+     * 为聚焦调节dwFocusCommand = 1
+     * 为连续聚焦调节dwFocusCommand = 2,为自动聚焦调节,调节焦点至最佳位置。nFocus和nZoom无效。
+     */
+    public boolean CLIENT_FocusControl(LLong lLoginID, int nChannelID, int dwFocusCommand, double nFocus, double nZoom, Pointer reserved , int waittime);
+
+    //事件类型 EVENT_IVS_TUMBLE_DETECTION(倒地报警事件)对应数据块描述信息
+    public static class DEV_EVENT_TUMBLE_DETECTION_INFO extends SdkStructure
+    {
+        public int                     nChannelID;                             // 通道号
+        public byte[]                  szName = new byte[NET_EVENT_NAME_LEN];  // 事件名称
+        public int					   nAction;								   // 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+        public double                  PTS;                                    // 时间戳(单位是毫秒)
+        public NET_TIME_EX             UTC;                                    // 事件发生的时间
+        public int                     nEventID;                               // 事件ID
+        public int					   UTCMS;								   // UTC时间对应的毫秒数
+
+        public int		               emClassType;							    // 智能事件所属大类 EM_CLASS_TYPE
+        public int					   nObjectID;								// 目标ID
+        public byte[]				   szObjectType = new byte[NET_COMMON_STRING_16];// 物体类型,支持以下:
+        //"Unknown", "Human", "Vehicle", "Fire", "Smoke", "Plate", "HumanFace",
+        // "Container", "Animal", "TrafficLight", "PastePaper", "HumanHead", "BulletHole", "Entity"
+        public NET_RECT				   stuBoundingBox;							// 物体包围盒
+        public byte[]                  szSerialUUID = new byte[22];     // 智能物体全局唯一物体标识
+        // 有效数据位21位,包含’\0’
+        // 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+        // 中间14位YYYYMMDDhhmmss:年月日时分秒
+        // 后5位%u%u%u%u%u:物体ID,如00001
+        public SCENE_IMAGE_INFO        stuSceneImage;                           // 全景广角图
+        public Pointer                 pstuImageInfo;					        // 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针    
+        public int					   nImageInfoNum;						    // 图片信息个数
+        public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND(); // 事件公共扩展字段结构体
+    	public int nDetectRegionNum;                                            //检测区个数
+    	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];           //检测区
+        public byte[]                  bReserved = new byte[834];               // 保留字节
+    	public DEV_EVENT_TUMBLE_DETECTION_INFO() {
+    		for (int i = 0; i < stuDetectRegion.length; i++) {
+    			stuDetectRegion[i] = new NET_POINT_EX();
+    		}		
+    	}
+    }
+
+    /**
+     * 设置二维码信息
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参,对应结构体{@link com.netsdk.lib.structure.NET_IN_SET_2DCODE}
+     * @param pOutParam 出参,对应结构体{@link com.netsdk.lib.structure.NET_OUT_SET_2DCODE}
+     * @param nWaitTime 超时时间
+     * @return
+     */
+    public boolean CLIENT_Set2DCode(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 订阅热度图数据,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参,对应结构体 {@link com.netsdk.lib.structure.NET_IN_ATTACH_VIDEOSTAT_HEATMAP}
+     * @Param pOutParam 出参,对应结构体{@link com.netsdk.lib.structure.NET_OUT_ATTACH_VIDEOSTAT_HEATMAP}
+     * 也可使用{@link com.netsdk.lib.structure.EmptyStructure}
+     * @param nWaitTime 超时时间
+     * @return
+     */
+    public  LLong CLIENT_AttachVideoStatHeatMap(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 获取热图数据,pInParam与pOutParam内存由用户申请释放
+     * @param lAttachHandle 热度图订阅句柄
+     * @param pInParam 入参,对应结构体 {@link com.netsdk.lib.structure.NET_IN_GET_VIDEOSTAT_HEATMAP}
+     * @param pOutParam 出参,对应结构体{@link com.netsdk.lib.structure.NET_OUT_GET_VIDEOSTAT_HEATMAP}
+     * @param nWaitTime 超时时间
+     * @return
+     */
+    public boolean CLIENT_GetVideoStatHeatMap(LLong lAttachHandle, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 取消订阅热度图数据
+     * @param lAttachHandle 订阅句柄
+     * @return
+     */
+    public boolean CLIENT_DetachVideoStatHeatMap(LLong lAttachHandle);
+    //
+
+    /**
+     *
+     * @param lLoginID
+     * @param pstInParam
+     *
+     * @param nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT
+     * @return
+     */
+    /**
+     * 计算两张人脸图片的相似度faceRecognitionServer.matchTwoFace,pstInParam与pstOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pstInParam 入参 {@link com.netsdk.lib.structure.NET_MATCH_TWO_FACE_IN}
+     * @param pstOutParam 出参{@link com.netsdk.lib.structure.NET_MATCH_TWO_FACE_OUT}
+     * @param nWaitTime 接口超时时间,默认超时时间为3000
+     * @return
+     */
+    public boolean CLIENT_MatchTwoFaceImage(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+
+
+    /**
+     * 设置相机参数, pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_SET_CAMERA_CFG}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_SET_CAMERA_CFG}
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_SetCameraCfg(LLong lLoginID, Pointer pInParam,Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 获取相机参数, pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_GET_CAMERA_CFG}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_GET_CAMERA_CFG}
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_GetCameraCfg(LLong lLoginID, Pointer pInParam,Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 设置通道参数, pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_SET_CHANNEL_CFG}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_SET_CHANNEL_CFG}
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_SetChannelCfg(LLong lLoginID, Pointer pInParam,Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 获取通道参数, pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_GET_CHANNEL_CFG}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_GET_CHANNEL_CFG}
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_GetChannelCfg(LLong lLoginID, Pointer pInParam,Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 订阅安全门报警统计信息
+     *  CLIENT_NET_API LLONG CALL_METHOD CLIENT_SecurityGateAttachAlarmStatistics(LLONG lLoginID, const NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS* pInParam, NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS* pOutParam, int nWaitTime);
+     *
+     */
+
+    public LLong CLIENT_SecurityGateAttachAlarmStatistics(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+/**
+ *  订阅X光机包裹数量统计信息
+    CLIENT_NET_API LLONG CALL_METHOD CLIENT_XRayAttachPackageStatistics(LLONG lLoginID, const NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS* pInParam, NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS* pOutParam, int nWaitTime);
+*/
+    public LLong CLIENT_XRayAttachPackageStatistics(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 取消订阅X光机包裹数量统计信息
+     * CLIENT_NET_API BOOL CALL_METHOD CLIENT_XRayDetachPackageStatistics(LLONG lAttachHandle);
+      */
+    public boolean CLIENT_XRayDetachPackageStatistics(LLong lAttachHandle);
+
+    /**
+     * 交通灯信号检测-获取相机信息, pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_GET_CAMERA_INFO}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_GET_CAMERA_INFO}
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_GetCameraInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+
+
+
+    /**
+     * 主动获取每个热成像点的像素温度
+     * @param lLoginID 登录句柄
+     * @param pstInParam 入参 {@link com.netsdk.lib.structure.NET_IN_GET_HEATMAPS_INFO}
+     * @param pstOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_GET_HEATMAPS_INFO}
+     * @param nWaitTime 接口超时时间,默认超时时间为 3000
+     * @return
+     */
+    public boolean CLIENT_GetHeatMapsDirectly(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+
+    /******************************************************************************
+    功能描述	:	透传扩展接口,按透传类型走对应透传方式接口,目前支持F6纯透传, 同时兼容CLIENT_TransmitInfoForWeb接口
+    参数定义	:
+        lLoginID:       登录接口返回的句柄
+        pInParam:       透传扩展接口输入参数
+        pOutParam       透传扩展接口输出参数
+        nWaittime       接口超时时间
+
+    返 回 值	:	BOOL  TRUE :成功; FALSE :失败
+    ******************************************************************************/
+    /**
+     *
+     * @param lLoginID
+     * @param pInParam NET_IN_TRANSMIT_INFO
+     * @param pOutParam NET_OUT_TRANSMIT_INFO
+     * @return
+     */
+    public boolean CLIENT_TransmitInfoForWebEx(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaittime);
+
+    // CLIENT_TransmitInfoForWebEx输入参数
+    public static class NET_IN_TRANSMIT_INFO extends SdkStructure
+    {
+    	public int						    dwSize;                         // 用户使用该结构体,dwSize需赋值为sizeof(NET_IN_TRANSMIT_INFO)
+    	public int		                    emType;                         // 透传类型,参考NET_TRANSMIT_INFO_TYPE
+    	public String						szInJsonBuffer;                 // Json请求数据,用户申请空间
+    	public int						    dwInJsonBufferSize;             // Json请求数据长度
+    	public Pointer				        szInBinBuffer;                  // 二进制请求数据,用户申请空间
+    	public int						    dwInBinBufferSize;              // 二进制请求数据长度
+    	public int	                        emEncryptType;					// 加密类型(参考EM_TRANSMIT_ENCRYPT_TYPE)
+
+   	 public NET_IN_TRANSMIT_INFO()
+	 {
+	     this.dwSize = this.size();
+	 }// 此结构体大小
+    }
+
+    // CLIENT_TransmitInfoForWebEx输出参数
+    public static class NET_OUT_TRANSMIT_INFO extends SdkStructure
+    {
+    	public int                   dwSize;                         // 用户使用该结构体时,dwSize需赋值为sizeof(NET_OUT_TRANSMIT_INFO)
+    	public Pointer               szOutBuffer;                    // 应答数据缓冲空间, 用户申请空间
+    	public int                   dwOutBufferSize;                // 应答数据缓冲空间长度
+    	public int                   dwOutJsonLen;                   // Json应答数据长度
+    	public int                   dwOutBinLen;                    // 二进制应答数据长度
+
+       public NET_OUT_TRANSMIT_INFO()
+  	 {
+  	     this.dwSize = this.size();
+  	 }// 此结构体大小
+    }
+
+
+    // 透传类型
+    public static class NET_TRANSMIT_INFO_TYPE
+    {
+    	public static final int  NET_TRANSMIT_INFO_TYPE_DEFAULT=0;                 // 默认类型,即CLIENT_TransmitInfoForWeb接口的兼容透传方式
+    	public static final int  NET_TRANSMIT_INFO_TYPE_F6=1;                      // F6纯透传
+    };
+
+    // 透传加密类型
+    public static class EM_TRANSMIT_ENCRYPT_TYPE
+    {
+    	public static final int 	EM_TRANSMIT_ENCRYPT_TYPE_UNKNOWN = -1;			// 未知
+    	public static final int 	EM_TRANSMIT_ENCRYPT_TYPE_NORMAL= 0;				// SDK内部自行确定是否加密,默认
+    	public static final int 	EM_TRANSMIT_ENCRYPT_TYPE_MULTISEC= 1;				// 设备支持加密的场景下,走multiSec加密
+    	public static final int     EM_TRANSMIT_ENCRYPT_TYPE_BINARYSEC= 2;			// 设备支持加密的场景下,走binarySec加密,二进制部分不加密
+    }
+
+
+    /**
+     * 批量下载文件,pstInParam与pstOutParam内存由用户申请释放
+     * 入参 NET_IN_DOWNLOAD_MULTI_FILE 出参 NET_OUT_DOWNLOAD_MULTI_FILE
+     */
+    public boolean CLIENT_DownLoadMultiFile(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int waittime);
+
+    //JNA Callback方法定义,断线回调
+    public interface fMultiFileDownLoadPosCB extends Callback {
+        public void invoke(LLong lDownLoadHandle, int dwID, int dwFileTotalSize, int dwDownLoadSize, int nError, Pointer dwUser, Pointer pReserved);
+    }
+
+    /**
+     * 订阅摄像头状态,pstInParam与pstOutParam内存由用户申请释放
+     * pstInParam->NET_IN_CAMERASTATE ; pstOutParam->NET_OUT_CAMERASTATE
+     */
+    public LLong CLIENT_AttachCameraState(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 停止订阅摄像头状态,lAttachHandle是CLIENT_AttachCameraState返回值
+     */
+    public boolean CLIENT_DetachCameraState(LLong lAttachHandle);
+
+    // CLIENT_AttachCameraState()回调函数原形, 每次1条,pBuf->NET_CB_CAMERASTATE dwSize == nBufLen
+     public interface fCameraStateCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pBuf, int nBufLen, Pointer dwUser);
+    }
+
+     /**
+      * 获取IPC设备的存储信息
+      * @param lLoginID 登录句柄
+      * @param pstInParam 入参 {@link com.netsdk.lib.structure.NET_IN_GET_DEVICE_AII_INFO}
+      * @param pstOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_GET_DEVICE_AII_INFO}
+      * @param nWaitTime
+      * @return
+      */
+     public boolean CLIENT_GetDeviceAllInfo(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    // 交通信号灯回调函数 lLoginID - 登录句柄 lAttchHandle - 订阅句柄
+    public interface fTrafficLightState extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pBuf, long dwUser);
+    }
+
+    /**
+     * 订阅交通信号灯状态 , pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pInParam 入参 {@link com.netsdk.lib.structure.NET_IN_ATTACH_TRAFFICLIGHT_INFO}
+     * @param pOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_ATTACH_TRAFFICLIGHT_INFO}
+     * @param nWaitTime
+     * @return
+     */
+    public LLong CLIENT_AttachTrafficLightState(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 退订交通信号灯状态
+     * @param lAttchHandle 订阅句柄
+     * @return
+     */
+    public boolean CLIENT_DetachTrafficLightState(LLong lAttchHandle);
+
+    /**
+     * 订阅雷达的报警点信息 , pInParam 和pOutParam 资源由用户申请和释放
+     * @param lLoginID 登录句柄
+     * @param pstInParam 入参 {@link com.netsdk.lib.structure.NET_IN_RADAR_ALARMPOINTINFO}
+     * @param pstOutParam 出参 {@link com.netsdk.lib.structure.NET_OUT_RADAR_ALARMPOINTINFO}
+     * @param nWaitTime
+     * @return
+     */
+    public LLong  CLIENT_AttachRadarAlarmPointInfo(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 取消订阅雷达的报警点信息
+     * @param lAttachHandle 订阅句柄
+     * @return
+     */
+    public boolean CLIENT_DetachRadarAlarmPointInfo(LLong lAttachHandle);
+
+    /**
+     * 雷达报警点信息回调函数
+     */
+    public interface fRadarAlarmPointInfoCallBack extends Callback {
+        /**
+         *
+         * @param lLoginId 登录句柄
+         * @param lAttachHandle 订阅句柄
+         * @param pBuf {@link com.netsdk.lib.structure.NET_RADAR_NOTIFY_ALARMPOINTINFO}
+         * @param dwBufLen pBuf中结构体的长度
+         * @param pReserved 保留数据
+         * @param dwUser 用户自定义数据
+         */
+    	 public void invoke (LLong lLoginId, LLong lAttachHandle, Pointer pBuf, int dwBufLen, Pointer pReserved, Pointer dwUser);
+    }
+
+    /**
+     * 查询系统状态(pstuStatus内存由用户申请释放)
+     * @param lLoginID
+     * @param pstInParam NET_SYSTEM_STATUS
+     * @param nWaitTime
+     * @return
+     */
+    public boolean CLIENT_QuerySystemStatus(LLong lLoginID, Pointer pstInParam, int nWaitTime);
+
+    /**
+     * 订阅云台元数据接口,pstuInPtzStatusProc与pstuOutPtzStatusProc内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pstInParam 入参 {@link com.netsdk.lib.structure.NET_IN_PTZ_STATUS_PROC}
+     * @param pstOutParam 出参{@link com.netsdk.lib.structure.NET_OUT_PTZ_STATUS_PROC}
+     * @param nWaitTime
+     * @return
+     */
+    public LLong CLIENT_AttachPTZStatusProc(LLong lLoginID,Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 停止订阅云台元数据接口,lAttachHandle是CLIENT_AttachPTZStatusProc返回值
+     * @param lAttachHandle 订阅句柄
+     * @return
+     */
+    public boolean CLIENT_DetachPTZStatusProc(LLong lAttachHandle);
+
+
+    /**
+     * 订阅云台元数据接口回调函数原型
+     * pBuf 现阶段主要为 NET_PTZ_LOCATION_INFO 类型 {@link NET_PTZ_LOCATION_INFO}
+     */
+    public interface fPTZStatusProcCallBack extends Callback {
+    	 public void invoke (LLong lLoginId, LLong lAttachHandle, Pointer pBuf, int dwBufLen, long dwUser);
+    }
+
+    /**
+     * 查询某月的各天是否存在录像文件,
+     *
+     * @param lLoginID
+     * @param nChannelId
+     * @param nRecordFileType EM_QUERY_RECORD_TYPE 的枚举值
+     *        nRecordFileType == EM_RECORD_TYPE_CARD,pchCardid输入卡号,限制字符长度 59 字节
+     *        nRecordFileType == EM_RECORD_TYPE_FIELD,pchCardid输入自定义字段,限制字符长度 256 字节
+     * @param tmMonth Pointer -> NET_TIME
+     * @param pchCardid Pointer -> byte[]
+     * @param pRecordStatus Poiter -> NET_RECORD_STATUS
+     * @param waittime
+     * @return boolean
+     */
+    public boolean CLIENT_QueryRecordStatus(LLong lLoginID, int nChannelId, int nRecordFileType, Pointer tmMonth, Pointer pchCardid, Pointer pRecordStatus, int waittime);
+   //设置SDK本地参数,在CLIENT_Init之前调用,szInBuffer内存由用户申请释放,里面存放被设置的信息,具体见NET_EM_SDK_LOCAL_CFG_TYPE类型对应结构体
+    boolean CLIENT_SetSDKLocalCfg(int emCfgType, Pointer szInBuffer);
+
+    /**
+     * 开启重定向服务扩展接口
+     * @param pInParam {@link NET_IN_START_REDIRECT_SERVICE}
+     * @param pOutParam NET_OUT_START_REDIRECT_SERVICE,空结构体,可使用{@link EmptyStructure}
+     * @return
+     */
+    LLong CLIENT_StartRedirectServiceEx(Pointer pInParam,Pointer pOutParam);
+    /**
+     * 停止重定向服务
+     * @param lServerHandle 服务句柄
+     * @return
+     */
+   boolean CLIENT_StopRedirectService(LLong lServerHandle);
+
+    /**
+    * 设置重定向服务器的IP和Port
+    * @param lDevHandle 重定向设备句柄
+    * @param ARSIP 重定向设备IP
+    * @param ARSPort 重定向设备端口
+    * @param nRetry 设备主动注册尝试次数
+    * @return
+    */
+    boolean CLIENT_SetAutoRegisterServerInfo(LLong lDevHandle, String ARSIP, short ARSPort, short nRetry);
+
+    /**
+    * 强制I帧,用于拉流优化
+    * @param lLoginID 登录句柄
+    * @param nChannelID 通道号
+    * @param nSubChannel 码流类型:0:主码流,1:子码流1
+    * @return
+    */
+    boolean CLIENT_MakeKeyFrame(LLong lLoginID, int nChannelID, int nSubChannel);
+
+    /**
+     * 关闭设备
+     */
+    boolean CLIENT_ShutDownDev(LLong lLoginID);
+
+    /**
+     * 设置通道录像状态(pRsBuffer内存由用户申请释放)
+     */
+    boolean CLIENT_SetupRecordState(LLong lLoginID, Pointer pRSBuffer, int nRSBufferlen);
+
+    /**
+     * 设置通道辅码流录像状态(pRsBuffer内存由用户申请释放)
+     */
+    boolean CLIENT_SetupExtraRecordState(LLong lLoginID, Pointer pRSBuffer, int nRSBufferlen, Pointer pReserved);
+
+    /**
+     * 增加远程录像备份任务, pInParam pOutParam 内存有用户申请释放
+     * @param lRestoreID restoreId
+     * @param pInParam -> NET_IN_ADD_REC_BAK_RST_REMOTE_TASK
+     * @param pOutParam -> NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK
+     * @param nWaitTime 超时时间
+     * @return 添加是否成功
+     */
+    boolean CLIENT_AddRecordBackupRestoreRemoteTask(LLong lRestoreID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 设置停车规则
+     */
+     boolean CLIENT_SetParkingRule(LLong lLoginID,NET_IN_SET_PARKINGRULE_INFO pstInParam,NET_OUT_SET_PARKINGRULE_INFO pstOutParam, int nWaitTime);
+
+  // 设置运行模式参数,在CLIENT_Init之后调用 pstuRunParams->NET_RUNMODE_PARAMS
+     boolean CLIENT_SetRunModeParams(Pointer pstuRunParams);
+
+  public boolean CLIENT_DownloadPieceFile(LLong lLoginID, Pointer pInParam, Pointer pOutParam,int nWaitTime);
+
+  // 清除当前时间段内人数统计信息, 重新从0开始计算
+  //CLIENT_ControlDevice接口的 DH_CTRL_CLEAR_SECTION_STAT命令参数
+  public static class NET_CTRL_CLEAR_SECTION_STAT_INFO extends SdkStructure
+  {
+      public int                     dwSize;
+      public int					   nChannel;		// 视频通道号
+      public NET_CTRL_CLEAR_SECTION_STAT_INFO(){
+          this.dwSize = this.size();
+      }
+  }
+
+//刻录设备回调函数原形,lAttachHandle是CLIENT_AttachBurnState返回值, 每次1条,pBuf->dwSize == nBufLen (pBuf->NET_CB_BACKUPTASK_STATE)
+  public interface fAttachBackupTaskStateCB  extends Callback {
+	 public void invoke (LLong lAttachHandle, Pointer pBuf, Pointer dwUser);
+  };
+
+
+//开始备份任务,pstInParam(NET_IN_START_BACKUP_TASK_INFO)与pstOutParam(NET_OUT_START_BACKUP_TASK_INFO)内存由用户申请释放
+  public boolean CLIENT_StartBackupTask(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+  
+//停止备份任务public boolean CLIENT_StopBackupTask(LLong lBackupSession);
+  
+//订阅备份状态,pstInParam(NET_IN_ATTACH_BACKUP_STATE)与pstOutParam(NET_OUT_ATTACH_BACKUP_STATE)内存由用户申请释放
+  public LLong CLIENT_AttachBackupTaskState(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+//取消订阅备份状态,lAttachHandle是CLIENT_AttachBackupTaskState返回值
+  public boolean CLIENT_DetachBackupTaskState(LLong lAttachHandle);
+
+
+   // 获取安检门人数统计信息
+  //CLIENT_NET_API BOOL CALL_METHOD CLIENT_GetPopulationStatistics(LLONG lLoginID, const NET_IN_GET_POPULATION_STATISTICS *pInParam, NET_OUT_GET_POPULATION_STATISTICS *pOutParam, int nWaitTime);
+    public boolean CLIENT_GetPopulationStatistics(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+  // 订阅安检门人数变化信息,pstInParam与pstOutParam内存由用户申请释放
+  //CLIENT_NET_API LLONG CALL_METHOD CLIENT_AttachPopulationStatistics(LLONG lLoginID, NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO* pstInParam, NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO* pstOutParam , int nWaitTime);
+    public LLong  CLIENT_AttachPopulationStatistics(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+  // 取消订阅安检门人数变化信息 lPopulationStatisticsHandle 为 CLIENT_AttachPopulationStatistics 返回的句柄
+  //CLIENT_NET_API BOOL CALL_METHOD CLIENT_DetachPopulationStatistics(LLONG lPopulationStatisticsHandle);
+    public boolean CLIENT_DetachPopulationStatistics(LLong lPopulationStatisticsHandle);
+    //创建车辆组
+   //   CLIENT_NET_API BOOL CALL_METHOD CLIENT_CreateGroupForVehicleRegisterDB(LLONG lLoginID, const NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB *pInParam, NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB *pOutParam, int nWaitTime);
+   public  boolean  CLIENT_CreateGroupForVehicleRegisterDB(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+    //删除车辆组
+   //  CLIENT_NET_API BOOL CALL_METHOD CLIENT_DeleteGroupFromVehicleRegisterDB(LLONG lLoginID, const NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB *pInParam, NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB *pOutParam, int nWaitTime);
+   public boolean  CLIENT_DeleteGroupFromVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    //向车牌库添加车辆信息
+   //  CLIENT_NET_API BOOL CALL_METHOD CLIENT_MultiAppendToVehicleRegisterDB(LLONG lLoginID, const NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB *pInParam, NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB *pOutParam, int nWaitTime);
+   public boolean  CLIENT_MultiAppendToVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    // 开包工作台上报开包检查信息
+    //  CLIENT_NET_API BOOL CALL_METHOD CLIENT_UploadUnpackingCheckInfo(LLONG lLoginID, const NET_IN_UPLOAD_UPPACKING_CHECK_INFO* pInParam, NET_OUT_UPLOAD_UPPACKING_CHECK_INFO* pOutParam, int nWaitTime);
+    public  boolean CLIENT_UploadUnpackingCheckInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 网络应用组件,公司内部接口
+     * 可用于获取前端设备的网络资源数据,如网络收发数据的速率等,pstuIn与pstuOut内存由用户申请释放,大小参照emType对应的结构体
+     * @param lLoginID 登录句柄
+     * @param emType 网络应用组件 操作类型 EM_RPC_NETAPP_TYPE
+     * @param pstuIn 对应操作入参
+     * @param pstuOut 对应操作出参
+     * @param nWaitTime 超时时间
+     * @return 添加是否成功
+     */
+    public boolean  CLIENT_RPC_NetApp(LLong lLoginID, int emType, Pointer pstuIn, Pointer pstuOut, int nWaitTime);
+
+    /**
+     * 雷达操作
+     * @param lLoginID 登录句柄
+     * @param emType 网络应用组件 操作类型 EM_RADAR_OPERATE_TYPE
+     * @param pInBuf 对应操作入参
+     * @param pOutBuf 对应操作出参
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_RadarOperate(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+
+
+
+    /**
+     * 设置信号机备份模式,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_SET_BACKUP_MODE
+     * @param pOutParam -> NET_OUT_SET_BACKUP_MODE
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_SetRtscBackupMode(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 设置信号机运行模式,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_SET_RUNNING_MODE
+     * @param pOutParam -> NET_OUT_SET_RUNNING_MODE
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_SetRtscRunningMode(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 获取信号机运行模式,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_GET_RUNNING_MODE
+     * @param pOutParam -> NET_OUT_GET_RUNNING_MODE
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_GetRtscRunningMode(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 获取信号机全局配置,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_GET_GLOBAL_PARAMETER
+     * @param pOutParam -> NET_OUT_GET_GLOBAL_PARAMETER
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_GetRtscGlobalParam(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 设置信号机全局配置,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_SET_GLOBAL_PARAMETER
+     * @param pOutParam -> NET_OUT_SET_GLOBAL_PARAMETER
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_SetRtscGlobalParam(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 获取信号机运行信息,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pInParam -> NET_IN_GET_RUNNING_INFO
+     * @param pOutParam -> NET_OUT_GET_RUNNING_INFO
+     * @param nWaitTime 超时时间
+     * @return 是否成功
+     */
+    public boolean  CLIENT_GetRtscRunningInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    // 手动选择球机要跟踪的轨迹目标
+   // CLIENT_NET_API BOOL CALL_METHOD CLIENT_RadarManualTrack(LLONG lLoginID, const NET_IN_RADAR_MANUAL_TRACK* pstInParam, NET_OUT_RADAR_MANUAL_TRACK* pstOutParam, int nWaitTime);
+
+    public boolean CLIENT_RadarManualTrack(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 西欧报警主机获取操作
+     * @param lLoginID
+     * @param emType NET_EM_GET_ALARMREGION_INFO 的枚举值
+     * @param nWaitTime
+     * @return boolean
+     */
+    public boolean CLIENT_GetAlarmRegionInfo(LLong lLoginID, int emType, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 标定球机和蓄水池污点位置
+     * @param lLoginID
+     * @param pstInParam -> NET_IN_SET_PTZ_WASH_POSISTION_INFO
+     * @param pstOutParam -> NET_OUT_SET_PTZ_WASH_POSISTION_INFO
+     * @param dwWaitTime
+     * @return boolean
+     */
+    public boolean CLIENT_PtzSetWashPosistion(LLong lLoginID, NET_IN_SET_PTZ_WASH_POSISTION_INFO pstInParam, NET_OUT_SET_PTZ_WASH_POSISTION_INFO pstOutParam, int dwWaitTime);
+
+    /**
+     * 获取标定后的冲洗信息
+     * @param lLoginID
+     * @param pstInParam -> NET_IN_GET_PTZ_WASH_INFO
+     * @param pstOutParam -> NET_OUT_GET_PTZ_WASH_INFO
+     * @param dwWaitTime
+     * @return boolean
+     */
+    public boolean CLIENT_PtzGetWashInfo(LLong lLoginID, NET_IN_GET_PTZ_WASH_INFO pstInParam, NET_OUT_GET_PTZ_WASH_INFO pstOutParam, int dwWaitTime);
+
+    /**
+     *按文件方式回放(lpRecordFile内存由用户申请释放)
+     * @param lLoginID
+     * @param lpRecordFile -> LPNET_RECORDFILE_INFO
+     * @param hWnd -> Pointer
+     * @param cbDownLoadPos -> fDownLoadPosCallBack
+     * @param dwUserData
+     * @return boolean
+     */
+    public LLong CLIENT_PlayBackByRecordFile(LLong lLoginID,NET_RECORDFILE_INFO lpRecordFile,Pointer hWnd,fDownLoadPosCallBack cbDownLoadPos,Pointer dwUserData);
+
+
+    // 开始查找录像文件
+    public LLong   CLIENT_FindFile(LLong lLoginID, int nChannelId, int nRecordFileType, Pointer cardid, NET_TIME time_start, NET_TIME time_end, boolean bTime, int waittime);
+
+
+    /**
+     * 订阅人群分布图实时统计信息
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_ATTACH_CROWDDISTRI_MAP_INFO  输入参数, 由用户申请资源
+     * @param pstOutParam -> NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO  输出参数, 由用户申请资源
+     * @param nWaitTime  等待超时时间
+     * @return LLong  订阅句柄
+     */
+    public LLong CLIENT_AttachCrowdDistriMap(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 订阅人群分布图实时统计信息回调函数原型,
+     * lAttachHandle为CLIENT_AttachCrowdDistriMap接口的返回值,
+     * pstResult 解析结构体为 NET_CB_CROWD_DISTRI_STREAM_INFO
+     */
+    public interface fCrowdDistriStream extends Callback {
+    	 public void invoke (LLong lAttachHandle, Pointer pstResult,Pointer dwUser);
+    }
+
+    /**
+     * 取消订阅人群分布图实时统计信息
+     * @param lAttachHandle  订阅句柄,为接口CLIENT_AttachCrowdDistriMap的返回值
+     * @return boolean
+     */
+    public boolean CLIENT_DetachCrowdDistriMap(LLong lAttachHandle);
+
+
+    /**
+     * 获取人群分布图全局和区域实时人数统计值
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO  接口输入参数
+     * @param pstOutParam -> NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_GetSummaryCrowdDistriMap(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 下发人员信息录入结果
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_PERSON_INFO_INPUT_RESULT  接口输入参数
+     * @param pstOutParam -> NET_OUT_PERSON_INFO_INPUT_RESULT 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_SetPersonInfoInputResult(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+
+    /**
+     * 根据查询条件返回录像备份任务的信息表,pInParam与pOutParam内存由用户申请释放
+     * @param lLoginID  登陆句柄
+     * @param pInParam -> NET_IN_FIND_REC_BAK_RST_TASK  接口输入参数
+     * @param pOutParam -> NET_OUT_FIND_REC_BAK_RST_TASK 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_FindRecordBackupRestoreTaskInfos(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+
+    /**
+     * 功能描述:异步纯透传订阅接口
+     * @param lLoginID  登录接口返回的句柄
+     * @param pInParam -> NET_IN_ATTACH_TRANSMIT_INFO  异步纯透传接口输入参数
+     * @param pOutParam -> NET_OUT_ATTACH_TRANSMIT_INFO 异步纯透传接口输出参数
+     * @param nWaittime  接口超时时间
+     * @return LLong 异步纯透传句柄
+     */
+    public LLong CLIENT_AttachTransmitInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * CLIENT_AttachTransmitInfo()回调函数原型,第一个参数lAttachHandle是CLIENT_AttachTransmitInfo返回值,
+     */
+    public interface AsyncTransmitInfoCallBack extends Callback {
+    	 public void invoke (LLong lAttachHandle, NET_CB_TRANSMIT_INFO pTransmitInfo,Pointer dwUser);
+    }
+
+    /**
+     * 功能描述:异步纯透传取消订阅接口
+     * @param lAttachHandle  异步纯透传句柄,即CLIENT_AttachTransmitInfo接口的返回值
+     * @param pInParam -> NET_IN_DETACH_TRANSMIT_INFO  异步纯透传取消订阅接口输入参数
+     * @param pOutParam -> NET_OUT_DETACH_TRANSMIT_INFO 异步纯透传取消订阅接口输出参数
+     * @param nWaittime  接口超时时间
+     * @return boolean TRUE :成功; FALSE :失败
+     */
+    public boolean CLIENT_DetachTransmitInfo(LLong lAttachHandle, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+
+
+
+    /**
+     * 雷达订阅RFID卡片信息
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_ATTACH_RADAR_RFIDCARD_INFO  接口输入参数
+     * @param pstOutParam -> NET_OUT_ATTACH_RADAR_RFIDCARD_INFO 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return LLong
+     */
+    public LLong CLIENT_AttachRadarRFIDCardInfo(LLong lLoginID, NET_IN_ATTACH_RADAR_RFIDCARD_INFO pstInParam, NET_OUT_ATTACH_RADAR_RFIDCARD_INFO pstOutParam, int nWaitTime);
+
+
+    /**
+     * 雷达取消订阅RFID卡片信息
+     * @param lAttachHandle  订阅句柄
+     * @return boolean
+     */
+    public boolean CLIENT_DetachRadarRFIDCardInfo(LLong lAttachHandle);
+
+
+    /**
+     * 查询RFID的工作模式
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_RADAR_GET_RFID_MODE  接口输入参数
+     * @param pstOutParam -> NET_OUT_RADAR_GET_RFID_MODE 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_GetRadarRFIDMode(LLong lLoginID, NET_IN_RADAR_GET_RFID_MODE pstInParam, NET_OUT_RADAR_GET_RFID_MODE pstOutParam, int nWaitTime);
+
+
+    /**
+     * 设置RFID的工作模式
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_RADAR_SET_RFID_MODE  接口输入参数
+     * @param pstOutParam -> NET_OUT_RADAR_SET_RFID_MODE 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_SetRadarRFIDMode(LLong lLoginID, NET_IN_RADAR_SET_RFID_MODE pstInParam, NET_OUT_RADAR_SET_RFID_MODE pstOutParam, int nWaitTime);
+
+    /**
+     *	按条件删除车牌库中的车牌
+     * @param lLoginID  登陆句柄
+     * @param pstInParam -> NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB  接口输入参数
+     * @param pstOutParam -> NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_DeleteByConditionFromVehicleRegisterDB(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 设置消费结果
+     * @param lLoginID  登陆句柄
+     * @param pInParam -> NET_IN_SET_CONSUME_RESULT  接口输入参数
+     * @param pOutParam -> NET_OUT_SET_CONSUME_RESULT 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_SetConsumeResult(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 远程休眠模式
+     * @param lLoginID  登录句柄
+     * @param pInParam -> NET_IN_REMOTE_SLEEP  接口输入参数
+     * @param pOutParam -> NET_OUT_REMOTE_SLEEP 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return boolean
+     */
+    public boolean CLIENT_RemoteSleep(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 自定义定时抓图订阅接口(目前智慧养殖猪温检测在用)
+     * @param lLoginID  登录句柄
+     * @param pInParam -> NET_IN_ATTACH_CUSTOM_SNAP_INFO  接口输入参数
+     * @param pOutParam -> NET_OUT_ATTACH_CUSTOM_SNAP_INFO 接口输出参数
+     * @param nWaitTime  等待超时时间
+     * @return LLong
+     */
+    public LLong CLIENT_AttachCustomSnapInfo(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 自定义定时抓图订阅回调函数原型, 
+     * @param lAttachHandle  为 CLIENT_AttachCustomSnapInfo 接口的返回值
+     * @param pstResult      参考结构体 NET_CB_CUSTOM_SNAP_INFO
+     */
+    public interface fAttachCustomSnapInfo extends Callback {
+        public void invoke(LLong lAttachHandle,Pointer pstResult,Pointer pBuf,int dwBufSize,Pointer dwUser);
+    }
+
+    /**
+     * 取消自定义定时抓图订阅接口(目前智慧养殖猪温检测在用)
+     * @param lAttachHandle 订阅句柄
+     * @return boolean
+     */
+    public boolean CLIENT_DetachCustomSnapInfo(LLong lAttachHandle);
+
+	/**
+     * 物模型属性订阅回调函数原型, lAttachHandle为CLIENT_AttachThingsInfo接口的返回值
+	 * @param lAttachHandle 订阅句柄
+     * @param pstResult 物模型属性订阅回调信息, 参考{@link NET_CB_THINGS_INFO}
+	 * @return void
+	 */
+	public interface fThingsCallBack extends Callback {
+		public void invoke(LLong lAttachHandle,Pointer pstResult,Pointer dwUserData);
+	}
+
+    /**
+     * 停止获取设备历史数据
+     * @param lFindHandle 查找句柄
+	 * @return TRUE表示成功  FALSE表示失败
+	 */
+	public boolean CLIENT_StopThingsHistoryData(LLong lFindHandle);
+
+    /**
+     * 获取设备历史数据结果接口
+     * @param lFindHandle 查找句柄
+     * @param pstInParam 接口输入参数,参考{@link NET_IN_THINGS_DOFIND_HISTORYDATA}
+     * @param pstOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_DOFIND_HISTORYDATA}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_DoFindThingsHistoryData(LLong lFindHandle,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 开始获取设备历史数据接口
+     * @param lLoginID 登录句柄
+     * @param pstInParam 接口输入参数,参考{@link NET_IN_THINGS_START_HISTORYDATA}
+     * @param pstOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_START_HISTORYDATA}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public LLong CLIENT_StartThingsHistoryData(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things物模型服务调用接口
+     * @param lLoginID 登录句柄
+     * @param emType 物模型服务类型,参考{@link EM_THINGS_SERVICE_TYPE}
+     * @param pInBuf 接口输入参数,参考emType类型,内存资源由用户申请和释放
+     * @param pOutBuf 接口输出参数,参考emType类型,内存资源由用户申请和释放
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_ThingsServiceOperate(LLong lLoginID, int emType, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+
+    /**
+     * 智慧用电Things获取设备连接状态信息接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_GET_NETSTATE}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_GET_NETSTATE}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_GetThingsNetState(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things获取设备列表接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_GET_DEVLIST}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_GET_DEVLIST}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_GetThingsDevList(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things获取设备能力集接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_GET_CAPS}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_GET_CAPS}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_GetThingsCaps(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things取消物模型属性订阅接口
+     * @param lAttachHandle 订阅句柄
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_DetachThingsInfo(LLong lAttachHandle);
+
+    /**
+     * 智慧用电Things物模型属性订阅接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_ATTACH}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_ATTACH}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return 订阅句柄
+	 */
+	public LLong CLIENT_AttachThingsInfo(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things配置设置接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_SET}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_SET}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_SetThingsConfig(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 智慧用电Things配置获取接口
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_THINGS_GET}
+     * @param pOutParam 接口输出参数, 参考{@link NET_OUT_THINGS_GET}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return TRUE表示成功  FALSE表示失败
+     */
+	public boolean CLIENT_GetThingsConfig(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 获取流量统计信息,pstInParam与pstOutParam内存由用户申请释放
+     * @param lLoginID 登录句柄
+     * @param pstInParam 接口输入参数,参考{@link NET_IN_TRAFFICSTARTFINDSTAT}
+     * @param pstOutParam 接口输出参数, 参考{@link NET_OUT_TRAFFICSTARTFINDSTAT}
+     * @return 查询句柄
+     */
+    public LLong CLIENT_StartFindFluxStat(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam);
+
+    /**
+     *@brief 继续查询流量统计,pstInParam与pstOutParam内存由用户申请释放
+     * @param lFindHandle 查询句柄
+     * @param pstInParam 接口输入参数,参考{@link NET_IN_TRAFFICDOFINDSTAT}
+     * @param pstOutParam 接口输出参数, 参考{@link NET_OUT_TRAFFICDOFINDSTAT}
+     * @return
+     */
+    public int CLIENT_DoFindFluxStat(LLong lFindHandle,Pointer pstInParam,Pointer pstOutParam);
+
+    /**
+     * 结束查询流量统计
+     */
+    public boolean CLIENT_StopFindFluxStat(LLong lFindHandle);
+
+    /**
+     * 获取智能订阅参数CustomInfo的格式化字符串能力
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_GET_CUSTOMINFO_CAPS}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_GET_CUSTOMINFO_CAPS}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetCustomInfoCaps(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    /**
+     * 获取温度值
+     * @param lLoginID 登录句柄
+     * @param pInParam 接口输入参数,参考{@link NET_IN_GET_TEMPERATUREEX}
+     * @param pstOutParam 接口输出参数, 参考{@link NET_OUT_GET_TEMPERATUREEX}
+     * @return 查询句柄
+     */
+    public boolean CLIENT_FaceBoard_GetTemperatureEx(LLong lLoginID, Pointer pInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 考试计划
+     * CLIENT_SetExamRecordingPlans 接口入参
+     * CLIENT_SetExamRecordingPlans 接口出参
+     * 添加考试录像计划
+     *param[in]		lLoginID:		登录句柄
+     *param[in]		pstuInParam:	接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SET_EXAM_RECORDING_PLANS}
+     *param[out]		pstuOutParam:	接口输出参数, 内存资源由用户申请和释放  {@link NET_OUT_SET_EXAM_RECORDING_PLANS}
+     *param[in]		nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetExamRecordingPlans(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    
+    /**
+     * 获取SMART扫描信息
+     * @param lLoginID 登录句柄
+     * @param pstuInParam 接口输入参数,参考{@link NET_IN_GET_DEV_STORAGE_SMART_VALUE}
+     * @param pstuOutParam 接口输出参数, 参考{@link NET_OUT_GET_DEV_STORAGE_SMART_VALUE}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return 
+     */
+    public boolean CLIENT_GetDevStorageSmartValue(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+    
+    /**
+     * 获取设备各网卡的上传与发送速率
+     * @param lLoginID 登录句柄
+     * @param pstuInParam 接口输入参数,参考{@link NET_IN_GET_DEVICE_ETH_BAND_INFO}
+     * @param pstuOutParam 接口输出参数, 参考{@link NET_OUT_GET_DEVICE_ETH_BAND_INFO}
+     * @param nWaitTime 接口超时时间, 单位毫秒
+     * @return 
+     */
+    public boolean CLIENT_GetDeviceEthBandInfo(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+
+    /**
+     *@ingroup       functions
+     *@brief         销毁业务sdk模块
+     *@param[in]     lSubBizHandle  业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_DestroySubBusinessModule(LLong lSubBizHandle);
+
+    /**
+     *@ingroup       functions
+     *@brief         创建业务sdk模块
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 NET_IN_CREAT_SUB_BUSINESS_MDL_INFO
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO
+     *@retval LLONG
+     *@return	业务sdk句柄,非0表示成功  0表示失败
+     */
+    public LLong CLIENT_CreateSubBusinessModule(Pointer pInParam,Pointer pOutParam);
+
+
+    /**
+     *@ingroup       functions
+     *@brief         启动子连接监听服务
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 NET_IN_START_SUBLINK_LISTEN_SERVER
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 NET_OUT_START_SUBLINK_LISTEN_SERVER
+     *@retval LLONG
+     *@return	子链接监听服务句柄, 非0表示成功  0表示失败
+     */
+    public LLong CLIENT_StartSubLinkListenServer(Pointer pInParam,Pointer pOutParam);
+
+    /**
+     *@ingroup       functions
+     *@brief         停止子连接监听服务
+     *@param[in]     lListenServer  监听服务句柄,由CLIENT_StartSubLinkListenServer接口返回
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_StopSubLinkListenServer(LLong lListenServer);
+
+    /**
+     *@ingroup       functions
+     *@brief         发送创建子连接所需的信息给设备, 由主业务模块调用
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 NET_IN_TRANSFER_SUBLINK_INFO
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 NET_OUT_TRANSFER_SUBLINK_INFO
+     *@param[in]     nWaitTime 接口超时时间, 单位毫秒
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_TransferSubLinkInfo(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     *@ingroup       functions
+     *@brief         设置私有透传通道参数
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 NET_IN_SET_TRANSMITTUNNEL_PARAM
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 NET_OUT_SET_TRANSMITTUNNEL_PARAM
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_SetTransmitTunnelParam(Pointer pInParam,Pointer pOutParam);
+
+    /**
+     *@ingroup       functions
+     *@brief         创建隧道
+     *@param[in]     lSubBizHandle    业务sdk句柄,由CLIENT_CreateSubBusinessModule接口返回
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 NET_IN_CREATE_TRANSMIT_TUNNEL
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 NET_OUT_CREATE_TRANSMIT_TUNNEL
+     *@retval LLONG
+     *@return	透传隧道业务句柄,非0表示成功  0表示失败
+     */
+    public LLong CLIENT_CreateTransmitTunnel(LLong lSubBizHandle,Pointer pInParam,Pointer pOutParam);
+
+    /**
+     *@ingroup       functions
+     *@brief         销毁隧道
+     *@param[in]     lTransmitHandle  透传隧道业务句柄,由CLIENT_CreateTransmitTunnel接口返回
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_DestroyTransmitTunnel(LLong lTransmitHandle);
+
+    /**
+     *@ingroup       callback
+     *@brief         子连接监听服务回调函数原型
+     *@param[out]    lListenServer 子链接监听服务句柄, 由CLIENT_StartSubLinkListenServer接口返回
+     *@param[out]    lSubBizHandle 分压业务sdk句柄, 由CLIENT_CreateSubBusinessModule接口返回
+     *@param[out]    pstSubLinkCallBack 子链接监听服务回调信息 NET_SUBLINK_SERVER_CALLBACK
+     *@retval void
+     */
+    public interface fSubLinkServiceCallBack extends Callback {
+        public void invoke(LLong lListenServer,LLong lSubBizHandle,Pointer pstSubLinkCallBack);
+    }
+
+
+    /**
+     *@ingroup       callback
+     *@brief         隧道业务连接断开回调
+     *@param[out]    lSubBizHandle 下载句柄, 由CLIENT_CreateSubBusinessModule接口返回
+     *@param[out]    lOperateHandle 业务句柄
+     *@param[out]    pstDisConnectInfo 断线回调数据 NET_TRANSMIT_DISCONNECT_CALLBACK
+     *@retval void
+     */
+    public interface fTransmitDisConnectCallBack extends Callback {
+        public void invoke(LLong lSubBizHandle,LLong lOperateHandle,Pointer pstDisConnectInfo);
+    }
+
+    /**
+     *@ingroup       functions
+     *@brief         获取/设置解码窗口输出OSD信息扩展接口(pInparam, pOutParam内存由用户申请释放)
+     *@param[in]     lLoginHandle    登录句柄
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SPLIT_GET_OSD_EX}
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SPLIT_GET_OSD_EX}
+     *@param[in]     nWaitTime 接口超时时间, 单位毫秒
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_GetSplitOSDEx(LLong lLoginHandle, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     *@ingroup       functions
+     *@brief         获取/设置解码窗口输出OSD信息扩展接口(pInparam, pOutParam内存由用户申请释放)
+     *@param[in]     lLoginHandle    登录句柄
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SPLIT_SET_OSD_EX}
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SPLIT_SET_OSD_EX}
+     *@param[in]     nWaitTime 接口超时时间, 单位毫秒
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_SetSplitOSDEx(LLong lLoginHandle, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     *@ingroup       functions
+     *@brief         销毁隧道
+     *@param[in]     lLoginHandle    登录句柄
+     *@param[in]     emType    入参类型枚举,{@link NET_SPLIT_OPERATE_TYPE}
+     *@param[in]     pInParam  接口输入参数, 内存资源由用户申请和释放,类型参考枚举注释{@link NET_SPLIT_OPERATE_TYPE}
+     *@param[out]    pOutParam 接口输出参数, 内存资源由用户申请和释放,类型参考枚举注释{@link NET_SPLIT_OPERATE_TYPE}
+     *@param[in]     nWaitTime 接口超时时间, 单位毫秒
+     *@retval BOOL
+     *@return	TRUE表示成功  FALSE表示失败
+     */
+    public boolean CLIENT_OperateSplit(LLong lLoginHandle, int emType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 根据中心公钥获取锁具随机公钥
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放  {@link NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetDynamicLockRandomPublicKey(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 设置通讯秘钥
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetDynamicLockCommunicationKey(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 设置开锁密钥
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link  NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetDynamicLockOpenKey(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 设置临时身份码
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放  {@link NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetDynamicLockTempUserID(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 设置开锁码
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetDynamicLockOpenCode(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 推送智能分析图片文件和规则信息,当CLIENT_AddAnalyseTask的数据源类型emDataSourceType为 EM_DATA_SOURCE_PUSH_PICFILE_BYRULE 时使用
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_PushAnalysePictureFileByRule(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    
+    /**
+     * 指定智能事件解析所用的结构体 用于解决java大结构体new对象慢导致的问题.该接口全局有效,建议在SDK初始化前调用
+     * @param pInParam 接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_SET_IVSEVENT_PARSE_INFO}
+     * @return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetIVSEventParseType(NET_IN_SET_IVSEVENT_PARSE_INFO pInParam);
+
+    /**
+     * 平台下发轮询配置
+     * param[in] lLoginID 登录句柄
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link NET_IN_SET_POLLING_CONFIG}
+     * param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_SET_POLLING_CONFIG}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetPollingConfig(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 按通道获取设备智能业务的运行状态
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放   {@link NET_IN_GET_CHANNEL_STATE}
+     *param[out] pstuOutParam 接口输出参数, 内存资源由用户申请和释放  {@link NET_OUT_GET_CHANNEL_STATE}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetChannelState(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+     * 获取隐私遮挡列表
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_GET_PRIVACY_MASKING}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_GET_PRIVACY_MASKING}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetPrivacyMasking(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /** 
+     * 设置隐私遮挡列表
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_SET_PRIVACY_MASKING}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_SET_PRIVACY_MASKING}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetPrivacyMasking(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+
+    /** 
+     * 使能或关闭所有隐私遮挡块
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_SET_PRIVACY_MASKING_ENABLE}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_SET_PRIVACY_MASKING_ENABLE}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetPrivacyMaskingEnable(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+    /** 
+     * 获取隐私遮挡总开关使能状态
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_GET_PRIVACY_MASKING_ENABLE}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_GET_PRIVACY_MASKING_ENABLE}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetPrivacyMaskingEnable(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+    /** 
+     * 跳转到隐私遮档块
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_GOTO_PRIVACY_MASKING}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_GOTO_PRIVACY_MASKING}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GotoPrivacyMasking(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+    /** 
+     * 删除隐私遮档块
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_DELETE_PRIVACY_MASKING}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_DELETE_PRIVACY_MASKING}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DeletePrivacyMasking(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+    /** 
+     * 清除遮挡
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数 ,{@link NET_IN_CLEAR_PRIVACY_MASKING}
+     * param[out]pstuOutParam 接口输出参数,,{@link NET_OUT_CLEAR_PRIVACY_MASKING}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_ClearPrivacyMasking(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 远程复位(消防)
+     * param[in] lLoginID 登录句柄
+     * param[in] emType 操作类型枚举,{@link EM_RADAR_OPERATE_TYPE}
+     * param[in] pInParam 接口输入参数 ,参考emType
+     * param[out]pOutParam 接口输出参数 ,参考emType
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_RadarOperate(LLong lLoginID, EM_RADAR_OPERATE_TYPE emType, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 订阅mini雷达的报警点信息
+     * param[in] lLoginID 登录句柄
+     * param[in] pInParam 接口输入参数 ,{@link NET_IN_MINI_RADAR_ALARMPOINTINFO}
+     * param[out]pOutParam 接口输出参数 ,{@link NET_OUT_MINI_RADAR_ALARMPOINTINFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_AttachMiniRadarAlarmPointInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 远程复位(消防)
+     * param[in] lLoginID 登录句柄
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachMiniRadarAlarmPointInfo(LLong lAttachHandle);
+
+    /**
+     * 远程复位(消防)
+     * param[in] lLoginID 登录句柄
+     * param[in] pInParam 接口输入参数 ,{@link NET_IN_SMOKE_REMOTE_REBOOT_INFO}
+     * param[out]pOutParam 接口输出参数 ,{@link NET_OUT_SMOKE_REMOTE_REBOOT_INFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SmokeRemoteReboot(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * mini雷达报警点信息
+     * 上报的mini雷达报警点信息
+     * mini雷达报警点信息回调函数指针
+     */
+    public interface fMiniRadarAlarmPointInfoCallBack extends Callback {
+        /**
+         *
+         * @param lLoginId 登录句柄
+         * @param lAttachHandle 订阅句柄
+         * @param pBuf {@link com.netsdk.lib.structure.NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO}
+         * @param dwBufLen pBuf中结构体的长度
+         * @param pReserved 保留数据
+         * @param dwUser 用户自定义数据
+         */
+        public void invoke(LLong lLoginId, LLong lAttachHandle, Pointer pBuf, int dwBufLen, Pointer pReserved, Pointer dwUser);
+    }
+
+    /**
+     * 获取业务库管理的舱位信息
+     *param[in] lLoginID 登录句柄
+     *param[in] pInParam 接口输入参数, 内存资源由用户申请和释放 {@link  NET_IN_GET_FINANCIAL_CABIN_INFO}
+     *param[out] pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link  NET_OUT_GET_FINANCIAL_CABIN_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetFinancialCabinInfo(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 获取金库门状态
+     *param[in]		lLoginID:		登录句柄
+     *param[in]		pstuInParam:	接口输入参数, 内存资源由用户申请和释放   {@link  NET_IN_GET_VAULTDOOR_STATE_INFO}
+     *param[out]		pstuOutParam:	接口输出参数, 内存资源由用户申请和释放 {@link  NET_OUT_GET_VAULTDOOR_STATE_INFO}
+     *param[in]		nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功FALSE表示失败
+     */
+    public boolean CLIENT_GetVaultDoorState(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 获取金融柜体设备状态
+     *param[in]		lLoginID:		登录句柄
+     *param[in]		pstuInParam:	接口输入参数, 内存资源由用户申请和释放  {@link  NET_IN_GET_CABINET_STATE_INFO}
+     *param[out]		pstuOutParam:	接口输出参数, 内存资源由用户申请和释放  {@link  NET_OUT_GET_CABINET_STATE_INFO}
+     *param[in]		nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功FALSE表示失败
+     */
+    public boolean CLIENT_GetFinancialCabinetState(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    
+    /**
+     * 获取当前电梯运行信息
+     *param[in]		lLoginID:		登录句柄
+     *param[in]		pstuInParam:	接口输入参数, 内存资源由用户申请和释放  {@link  NET_IN_GET_ELEVATOR_WORK_INFO}
+     *param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放  {@link  NET_OUT_GET_ELEVATOR_WORK_INFO}
+     *param[in]		nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功FALSE表示失败
+     */
+    public boolean CLIENT_GetElevatorWorkInfo(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 获取水质检测能力
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO}
+     *param[out]pstuOutParam 接口输出参数  {@link  NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_GetWaterDataStatServerCaps(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 水质检测实时数据获取
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO}
+     *param[out]pstuOutParam 接口输出参数  {@link  NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_GetWaterDataStatServerWaterData(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 开始水质检测报表数据查询
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[out]pstuOutParam 接口输出参数 {@link  NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_StartFindWaterDataStatServer(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 水质检测报表数据查询
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[out]pstuOutParam 接口输出参数  {@link  NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_DoFindWaterDataStatServer(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 停止水质检测报表数据查询
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[out]pstuOutParam 接口输出参数 {@link  NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_StopFindWaterDataStatServer(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 获取设备状态, DMSS专用接口, pInParam与pOutParam内存由用户申请释放
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS}
+     *param[out]pstuOutParam 接口输出参数 {@link  NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean  CLIENT_GetUnifiedStatus(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    
+    /**
+     * 主从联动组, 操作接口,pInParam与pOutParam内存由用户申请释放,大小参照emOperateType对应的结构体
+     * param[in] lLoginID 登录句柄
+     * param[in] emOperateType 接口输入参数 ,参考枚举 {@link  EM_MSGROUP_OPERATE_TYPE}
+     * param[in] pInParam 接口输入参数 ,参考枚举对应的入参
+     * param[out] pOutParam 接口输出参数 ,参考枚举对应的出参
+     * param[in] nWaitTime 接口超时时间,默认3000, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_OperateMasterSlaveGroup(LLong lLoginID,int emOperateType,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 获取token, pstuInParam与pstuOutParam内存由用户申请释放
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数   {@link  NET_IN_MAKE_TOKEN}
+     *param[out]pstuOutParam 接口输出参数   {@link  NET_OUT_MAKE_TOKEN}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_MakeToken(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 获取共享文件夹工作目录信息
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数  {@link  NET_IN_NAS_DIRECTORY_GET_INFO}
+     *param[out]  pstOutParam 接口输出参数  {@link  NET_OUT_NAS_DIRECTORY_GET_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetNASDirectoryInfo(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 根据文件路径获取外部导入文件信息
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数  {@link  NET_IN_GET_FILE_INFO_BY_PATH_INFO}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_GET_FILE_INFO_BY_PATH_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetFileManagerExFileInfoByPath(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    
+    /***************************工装合规接口Start***************************************************/    
+    /** 
+     * 创建工装合规组
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pInParam 接口输入参数 {@link  NET_IN_CREATE_WORKSUIT_COMPARE_GROUP}
+     *param[out]  pOutParam 接口输出参数 {@link  NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_CreateWorkSuitCompareGroup(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    /** 
+     * 删除工装合规组
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pInParam 接口输入参数 {@link  NET_IN_DELETE_WORKSUIT_COMPARE_GROUP}
+     *param[out]  pOutParam 接口输出参数 {@link  NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DeleteWorkSuitCompareGroup(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+        
+    /** 
+     * 查找工装合规组信息
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pInParam 接口输入参数 {@link  NET_IN_FIND_WORKSUIT_COMPARE_GROUP}
+     *param[out]  pOutParam 接口输出参数 {@link  NET_OUT_FIND_WORKSUIT_COMPARE_GROUP}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_FindWorkSuitCompareGroup(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    /** 
+     * 批量添加工装合规样本
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pInParam 接口输入参数 {@link  NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP}
+     *param[out]  pOutParam 接口输出参数 {@link  NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_MultiAppendToWorkSuitCompareGroup(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    /** 
+     * 通过全景图唯一标识符删除工装合规样本
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pInParam 接口输入参数 {@link  NET_IN_DELETE_WORKSUIT_BY_SOURCEUID}
+     *param[out]  pOutParam 接口输出参数 {@link  NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID}
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DeleteWorkSuitBySourceUID(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    /***************************工装合规接口End***************************************************/
+    /** 
+     * 区分报表查询, 单独实现一套全量查询数据接口
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数 {@link  NET_IN_START_FIND_DETAIL_CLUSTER}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_START_FIND_DETAIL_CLUSTER}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_StartFindDetailNumberStatCluster(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    /** 
+     * 分批查询全量记录
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数 {@link  NET_IN_DO_FIND_DETAIL_CLUSTER}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_DO_FIND_DETAIL_CLUSTER}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DoFindDetailNumberStatCluster(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    /** 
+     * 停止查询
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数{@link  NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_StopFindDetailNumberStatCluster(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    /** 
+     * 平台主动获取设备聚档状态
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数{@link  NET_IN_GET_CLUSTER_STATE_INFO}
+     *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_GET_CLUSTER_STATE_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetClusterState(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    
+    /** 
+     * 获取烟感数据
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数{@link  NET_IN_GET_SMOKE_DATA}
+     *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_GET_SMOKE_DATA}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetSmokeData(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * 修改车辆组
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数{@link  NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB}
+     *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean  CLIENT_ModifyGroupForVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+     /**
+       * 查找车辆组信息
+       *param[in]   lLoginID 登录句柄
+       *param[in]   pstInParam 接口输入参数{@link  NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB}
+       *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB}
+       *param[in]   nWaitTime 接口超时时间, 单位毫秒
+       *return TRUE表示成功 FALSE表示失败
+      */
+     public boolean CLIENT_FindGroupFormVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+      /**
+         * 修改车辆信息
+         *param[in]   lLoginID 登录句柄
+         *param[in]   pstInParam 接口输入参数{@link  NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB}
+         *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB}
+         *param[in]   nWaitTime 接口超时时间, 单位毫秒
+         *return TRUE表示成功 FALSE表示失败
+         */
+      public boolean CLIENT_ModifyVehicleForVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+        /**
+         * 删除车辆信息
+         *param[in]   lLoginID 登录句柄
+         *param[in]   pstInParam 接口输入参数{@link  NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB}
+         *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB}
+         *param[in]   nWaitTime 接口超时时间, 单位毫秒
+         *return TRUE表示成功 FALSE表示失败
+         */
+        public boolean CLIENT_DeleteVehicleFromVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+        /**
+         * 向指定注册库查询车辆
+         *param[in]   lLoginID 登录句柄
+         *param[in]   pstInParam 接口输入参数{@link  NET_IN_START_FIND_VEHICLE_REG_DB}
+         *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_START_FIND_VEHICLE_REG_DB}
+         *param[in]   nWaitTime 接口超时时间, 单位毫秒
+         *return TRUE表示成功 FALSE表示失败
+         */
+        public boolean CLIENT_StartFindVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+        /**
+         * 获取车辆查询结果信息
+         *param[in]   lLoginID 登录句柄
+         *param[in]   pstInParam 接口输入参数{@link  NET_IN_DO_FIND_VEHICLE_REG_DB}
+         *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_DO_FIND_VEHICLE_REG_DB}
+         *param[in]   nWaitTime 接口超时时间, 单位毫秒
+         *return TRUE表示成功 FALSE表示失败
+         */
+        public boolean CLIENT_DoFindVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+       /**
+        * 结束车辆查询
+        *param[in]   lLoginID 登录句柄
+        *param[in]   pstInParam 接口输入参数{@link  NET_IN_STOP_FIND_VEHICLE_REG_DB}
+        *param[out]  pstOutParam 接口输出参数{@link  NET_OUT_STOP_FIND_VEHICLE_REG_DB}
+        *param[in]   nWaitTime 接口超时时间, 单位毫秒
+        *return TRUE表示成功 FALSE表示失败
+        */
+       public boolean CLIENT_StopFindVehicleRegisterDB(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     *订阅陀螺仪数据接口回调函数原型, lAttachGyroHandle为CLIENT_AttachGyro接口的返回值
+     *param[out] lAttachGyroHandle 订阅句柄
+     *param[out] pstuGyroDataInfo 订阅的陀螺仪数据回调信息   {@link NET_NOTIFY_GYRO_DATA_INFO}
+     *param[out] dwUser 用户信息
+     *return void
+     */
+    public interface fNotifyGyroData extends Callback {
+        public void invoke(LLong lAttachGyroHandle,Pointer pstuGyroDataInfo,Pointer dwUser);
+    }
+
+    /**
+     * 订阅陀螺仪数据接口
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_ATTACH_GYRO}
+     *param[out] pstuOutParam 接口输出参数  {@link  NET_OUT_ATTACH_GYRO}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return 返回订阅句柄
+     */
+    public LLong CLIENT_AttachGyro(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 取消陀螺仪数据订阅接口
+     *param[in] lAttachHandle 订阅句柄
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachGyro(LLong lAttachHandle);
+        
+    
+   /** 
+    * 立体行为-视频统计信息回调函数原形,
+    * param[out] lAttachHandle 是 CLIENT_AttachVideoStatistics返回值
+    * param[out] emType 是枚举{@link NET_EM_VS_TYPE}的值
+    * param[out] pBuf  是对应结构体数据指针,参考枚举值描述
+    */
+    public interface fVideoStatisticsInfoCallBack extends Callback {
+     public void invoke(LLong lAttachHandle,int emType,Pointer pBuf,int dwBufLen,Pointer dwUser);
+    }
+    
+    /**
+     * 订阅客流统计服务实时数据
+     *param[in] lLoginID 登录句柄
+     *param[in] pstuInParam 接口输入参数  {@link  NET_IN_ATTACH_VIDEO_STATISTICS}
+     *param[out] pstuOutParam 接口输出参数  {@link  NET_OUT_ATTACH_VIDEO_STATISTICS}
+     *param[in] nWaitTime 接口超时时间, 单位毫秒
+     *return 返回订阅句柄
+     */
+    public LLong CLIENT_AttachVideoStatistics(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    
+    
+    /**
+     * 取消订阅客流统计服务实时数据
+     *param[in] lAttachHandle 订阅句柄
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachVideoStatistics(LLong lAttachHandle);
+			
+    /**
+     * 智能事件开始查询
+     *param[in]   lLoginID 登录句柄
+     *param[in]   pstInParam 接口输入参数 {@link  NET_IN_IVSEVENT_FIND_INFO}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_IVSEVENT_FIND_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return 查询句柄 非0表示成功,0表示失败
+     */
+    public LLong CLIENT_IVSEventFind(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 智能事件信息查询
+     *param[in]   lFindHandle 查询句柄
+     *param[in]   pstInParam 接口输入参数 {@link  NET_IN_IVSEVENT_NEXTFIND_INFO}
+     *param[out]  pstOutParam 接口输出参数 {@link  NET_OUT_IVSEVENT_NEXTFIND_INFO}
+     *param[in]   nWaitTime 接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_IVSEventNextFind(LLong lFindHandle,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * 智能事件结束查询
+     *param[in]   lFindHandle 查询句柄
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_IVSEventFindClose(LLong lFindHandle);
+    
+    /** 
+     * 按时间回放进度回调函数原形的扩展
+     * 参数recordfileinfoEx 指针对应结构体NET_RECORDFILE_INFOEX
+     */
+    public interface fTimeDownLoadPosCallBackEx extends Callback {
+     public void invoke(LLong lPlayHandle,int dwTotalSize,int dwDownLoadSize,int index,Pointer recordfileinfoEx,Pointer dwUser);
+    }
+    /** 
+     * VK信息回调(pBuffer内存由SDK内部申请释放),dwError值可以dhnetsdk.h中找到相应的解释,比如NET_NOERROR,NET_ERROR_VK_INFO_DECRYPT_FAILED等
+     * 参数pBuffer指针对应结构体NET_VKINFO
+     */
+    public interface fVKInfoCallBack extends Callback {
+     public void invoke(LLong lRealHandle,Pointer pBuffer,int dwError,Pointer dwUser,Pointer pReserved);
+    }
+    
+    /** 
+     * 分压业务连接断线回调
+     *param[out]    lSubBizHandle 分压业务sdk句柄, 由CLIENT_CreateSubBusinessModule接口返回
+     *param[out]    lOperateHandle 业务句柄
+     *param[out]    pstDisConnectInfo 断线回调数据  对应结构体NET_SUBBIZ_DISCONNECT_CALLBACK
+     *return void
+     */
+    public interface fSubBizDisConnectCallBack extends Callback {
+     public void invoke(LLong lSubBizHandle,LLong lOperateHandle,Pointer pstDisConnectInfo);
+    }
+
+
+    /**
+     * 订阅大图检测小图进度,配合CLIENT_FaceRecognitionDetectMultiFace使用, pstInParam与pstOutParam内存由用户申请释放
+     * param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_MULTIFACE_DETECT_STATE}
+     * param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_MULTIFACE_DETECT_STATE}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public LLong CLIENT_AttachDetectMultiFaceState(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 订阅大图检测小图进度回调函数原型,
+     * pstStates指针对应结构体NET_CB_MULTIFACE_DETECT_STATE
+     */
+    public interface fMultiFaceDetectState extends Callback {
+        public void invoke(LLong lAttachHandle, Pointer pstStates, Pointer dwUser);
+    }
+
+    /**
+     * 订阅大图检测小图进度回调函数原型
+     * pstStates指针对应结构体NET_CB_MULTIFACE_DETECT_STATE_EX
+     */
+    public interface fMultiFaceDetectStateEx extends Callback {
+        public void invoke(LLong lAttachHandle, Pointer pstStates, Pointer dwUser);
+    }
+
+    /**
+     * 开始目标检测/注册库的多通道查询
+     * param[in] lLoginID 登录句柄
+     * param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_STARTMULTIFIND_FACERECONGNITION_EX}
+     * param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_StartMultiFindFaceRecognitionEx(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 获取人脸查询结果信息
+     * param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_DOFIND_FACERECONGNITION_EX}
+     * param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_DOFIND_FACERECONGNITION_EX}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DoFindFaceRecognitionEx(Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * 向服务器提交多张大图,从中检测人脸图片, pstInParam与pstOutParam内存由用户申请释放
+     * param[in] pstuInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO}
+     * param[out]pstuOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_FaceRecognitionDetectMultiFace(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 取消订阅大图检测小图进度, lAttachHandle为CLIENT_AttachDetectMultiFaceState 返回的句柄
+     */
+    public boolean CLIENT_DetachDetectMultiFaceState(LLong lAttachHandle);
+
+    /**
+     * 获取安检机安全等级信息,pstInParam与pstOutParam内存由用户申请释放
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     */
+    public LLong CLIENT_GetXRayMultiLevelDetectCFG(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 设置安检机安全等级信息,pstInParam与pstOutParam内存由用户申请释放
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     */
+    public LLong CLIENT_SetXRayMultiLevelDetectCFG(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 动环遥测数据订阅
+     * param[in] lLoginID 登录句柄
+     * param[in] pstInParam 接口输入参数,{@link NET_IN_ATTACH_SCADA_DATA_INFO}
+     * param[out] pstOutParam 接口输出参数,{@link NET_OUT_ATTACH_SCADA_DATA_INFO}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     * return 返回订阅句柄
+     */
+    public LLong CLIENT_AttachSCADAData(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 动环遥测数据退订
+     * param[in] lSCADADataHandle 订阅句柄
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachSCADAData(LLong lSCADADataHandle);
+
+    /**
+     * 动环遥测数据订阅回调函数原型, lSCADADataHandle 为 CLIENT_AttachSCADAData 接口的返回值
+     * param[out] lSCADADataHandle 订阅句柄
+     * param[out] pstuSCADADataNotifyInfo 订阅的遥测数据,{@link NET_NOTIFY_SCADA_DATA_INFO}
+     * param[out] dwUser 用户信息
+     * return void
+     */
+    public interface fNotifySCADAData extends Callback {
+        public void invoke(LLong lSCADADataHandle, Pointer pstuSCADADataNotifyInfo, Pointer dwUser);
+    }
+    
+    /**
+     * 订阅统计通道数据,pInParam与pOutParam内存由用户申请释放
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_ATTACH_VIDEOSTAT_STREAM}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放,{@link NET_OUT_ATTACH_VIDEOSTAT_STREAM}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     */
+    public LLong CLIENT_AttachVideoStatStream(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    
+    
+	/**
+	 * 统计通道数据回调函数,参数pBuf 指针对应结构体NET_CB_VIDEOSTAT_STREAM
+	 */
+	public interface fVideoStatStreamCallBack extends Callback {
+		public void invoke(LLong lAttachHandle, Pointer pBuf, int nBufLen, Pointer dwUser);
+	}
+	
+    /**
+     * 取消订阅统计通道数据, lAttachHandle为CLIENT_AttachVideoStatStream 返回的句柄
+     */
+    public boolean CLIENT_DetachVideoStatStream(LLong lAttachHandle);
+    /**
+     * 获取电视墙预案,pInParam与pOutParam内存由用户申请释放
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link com.netsdk.lib.structure.optimized.NET_IN_WM_GET_COLLECTIONS_V1}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link com.netsdk.lib.structure.optimized.NET_OUT_WM_GET_COLLECTIONS_V1}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+     */
+    public boolean CLIENT_GetMonitorWallCollectionsV1(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+    
+	/**
+	 * 门禁设备开始捕获新卡
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+	 */
+	public boolean CLIENT_AccessControlCaptureNewCard(LLong lLoginID, Pointer pInParam, Pointer pOutParam,int nWaitTime);
+
+	/**
+	 * 门禁人证设备获取人脸
+     * param[in] pInParam 接口输入参数, 内存资源由用户申请和释放,{@link NET_IN_ACCESSCONTROL_CAPTURE_CMD}
+     * param[out]pOutParam 接口输出参数, 内存资源由用户申请和释放 {@link NET_OUT_ACCESSCONTROL_CAPTURE_CMD}
+     * param[in] nWaitTime 接口超时时间, 单位毫秒
+	 */
+	public boolean CLIENT_AccessControlCaptureCmd(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+    /**
+     * 订阅智能分析结果
+     * param[in] 	lLoginID 登录句柄
+     * param[in] 	pstInParam 接口输入参数,{@link NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC}
+     * param[out]	pstOutParam 接口输出参数,{@link NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC}
+     * param[in] 	nWaitTime 接口超时时间, 单位毫秒
+     * return 返回订阅句柄
+     */
+    public LLong CLIENT_AttachVideoAnalyseAnalyseProc(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * 取消订阅智能分析结果
+     * param[in] 	lAttachHandle 订阅句柄
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachVideoAnalyseAnalyseProc(LLong lAttachHandle);
+
+    /**
+     * 智能分析结果的回调函数
+     * param[out] lAttachHandle 订阅句柄
+     * param[out] pstuVideoAnalyseTrackProc 智能分析结果的信息,{@link NET_VIDEO_ANALYSE_ANALYSE_PROC}
+     * param[out] dwUser 用户信息
+     * return void
+     */
+    public interface fVideoAnalyseAnalyseProc extends Callback {
+        public void invoke(LLong lAttachHandle, Pointer pstuVideoAnalyseTrackProc, Pointer dwUser);
+    }
+
+
+    /**
+     * 开始升级设备程序--扩展支持G以上文件升级
+     */
+    public LLong CLIENT_StartUpgradeEx2(LLong lLoginID,int emType,Pointer pchFileName,fUpgradeCallBackEx cbUpgrade,Pointer dwUser);
+    
+    /** 
+    * 报警主机设置操作
+    * param[in] lLoginID 登录句柄
+    * param[in] emType 设置的操作类型,{@link NET_EM_SET_ALARMREGION_INFO}
+    * param[in] pstuInParam 枚举对应的入参
+    * param[out] pstuOutParam 枚举对应的出参
+    * param[in] nWaitTime 接口超时时间, 单位毫秒
+    * return void
+    */
+    public boolean CLIENT_SetAlarmRegionInfo(LLong lLoginID,int emType,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+    * 获取设备序列号
+    * param[in] lLoginID 登录句柄
+    * param[in] pstInParam 接口输入参数,{@link NET_IN_GET_DEVICESERIALNO_INFO}
+    * param[out] pstOutParam 接口输出参数,{@link NET_OUT_GET_DEVICESERIALNO_INFO}
+    * param[in] nWaitTime 接口超时时间, 单位毫秒
+    * return void
+    */
+    public boolean CLIENT_GetDeviceSerialNo(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    
+    /** 
+    * 获取设备类型
+    * param[in] lLoginID 登录句柄
+    * param[in] pstInParam 接口输入参数,{@link NET_IN_GET_DEVICETYPE_INFO}
+    * param[out] pstOutParam 接口输出参数,{@link NET_OUT_GET_DEVICETYPE_INFO}
+    * param[in] nWaitTime 接口超时时间, 单位毫秒
+    * return void
+    */
+    public boolean CLIENT_GetDeviceType(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+    
+    /** 
+     * RPC测试
+     *param[in]	lLoginID:		登录句柄
+     *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_TRANSMIT_CMD}
+     *param[out] pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_TRANSMIT_CMD}
+     *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_TransmitCmd(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+     * 手动测试
+     *param[in]	lLoginID:		登录句柄
+     *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_MANUAL_TEST}
+     *param[out]pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_MANUAL_TEST}
+     *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     *return TRUE表示成功 FALSE表示失败
+    */
+    public boolean CLIENT_ManualTest(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+    * 添加报警用户
+    *param[in]	lLoginID:		登录句柄
+    *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_ADD_ALARM_USER}
+    *param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_ADD_ALARM_USER}
+    *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+    *return TRUE表示成功 FALSE表示失败
+    */
+    public boolean CLIENT_AddAlarmUser(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /** 
+    * 修改报警用户
+    *param[in]	lLoginID:		登录句柄
+    *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_MODIFY_ALARM_USER}
+    *param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_MODIFY_ALARM_USER}
+    *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+    *return TRUE表示成功 FALSE表示失败
+    */
+    public boolean CLIENT_ModifyAlarmUser(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+
+    /** 
+    * 修改报警用户密码
+    *param[in]	lLoginID:		登录句柄
+    *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_MODIFY_ALARM_USER_PASSWORD}
+    *param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_MODIFY_ALARM_USER_PASSWORD}
+    *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+    *return TRUE表示成功 FALSE表示失败
+    */
+    public boolean CLIENT_ModifyAlarmUserPassword(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+    * 删除报警用户
+    *param[in]	lLoginID:		登录句柄
+    *param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_DELETE_ALARM_USER}
+    *param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_DELETE_ALARM_USER}
+    *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+    *return TRUE表示成功 FALSE表示失败
+    */
+    public boolean CLIENT_DeleteAlarmUser(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+    * 订阅无线对码信息接口,pstInParam与pstOutParam内存由用户申请释放
+    *param[in]	lLoginID:		登录句柄
+    *param[in]	pstInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_ATTACH_LOWRATEWPAN}
+    *param[out]	pstOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_ATTACH_LOWRATEWPAN}
+    *param[in]	nWaitTime:		接口超时时间, 单位毫秒
+    *return 返回订阅句柄
+    */
+    public LLong CLIENT_AttachLowRateWPAN(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+    * 订阅无线对码信息回调函数原形,lAttachHandle是CLIENT_AttachLowRateWPAN返回值
+    *param[out]	lLoginID        登录句柄
+    *param[out]	lAttachHandle	订阅句柄
+    *param[out]	lAttachHandle	对码信息, 参考{@link NET_CODEID_INFO}
+    *param[out]	emError	                对码错误类型, 参考{@link NET_CODEID_ERROR_TYPE}
+    *param[out]	dwUser	                用户数据
+    */
+    public interface fAttachLowRateWPANCB extends Callback {
+     public void invoke(LLong lLoginID,LLong lAttachHandle,Pointer stuBuf,int emError,Pointer dwUser);
+    }
+    
+    /**
+     * 取消订阅无线对码信息接口,lAttachHandle是CLIENT_AttachLowRateWPAN返回值
+     * param[in] 	lAttachHandle 订阅句柄
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachLowRateWPAN(LLong lAttachHandle);
+
+    /**
+     * 获取画面中心位置目标的距离,pInBuf与pOutBuf内存由用户申请释放
+     * param[out] pInBuf 接口输入参数,{@link NET_IN_GET_LASER_DISTANCE}
+     * param[out] pOutBuf 接口输出参数,{@link NET_OUT_GET_LASER_DISTANCE}
+     * param[out] nWaitTime 接口超时时间, 单位毫秒
+     * return void
+     */
+    public boolean CLIENT_GetLaserDistance(LLong lLoginID, Pointer pInBuf, Pointer pOutBuf, int nWaitTime);
+    
+    /** 
+     * 获取已添加的设备状态
+     * param[in]		lLoginID:			登录句柄
+     * param[in]		pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_GET_DEVICE_INFO_EX}
+     * param[out]	    pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_GET_DEVICE_INFO_EX}
+     * param[in]		nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetDeviceInfoEx(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+     * 获取目标检测令牌
+     * param[in]		lLoginID:	登录句柄
+     * param[in]		pInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_FACERSERVER_GETDETEVTTOKEN}
+     * param[out]	      pOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_FACERSERVER_GETDETEVTTOKEN}
+     * param[in]		nWaitTime:	接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_FaceRServerGetDetectToken(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 查询设备日志条数(pInParam, pOutParam内存由用户申请释放)
+     *      * param[in]		lLoginID:	登录句柄
+     *      * param[in]		pInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link NET_IN_GETCOUNT_LOG_PARAM}
+     *      * param[out]	      pOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link NET_OUT_GETCOUNT_LOG_PARAM}
+     *      * param[in]		nWaitTime:	接口超时时间, 单位毫秒
+     */
+    public boolean CLIENT_QueryDevLogCount(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int waittime);
+    
+    /** 
+     * 设置状态信息接口
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_SET_STATEMANAGER_INFO}
+     * param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_SET_STATEMANAGER_INFO}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetStateManager(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /** 
+     * 获取状态信息接口
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_GET_STATEMANAGER_INFO}
+     * param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_GET_STATEMANAGER_INFO}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetStateManager(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * 定位录像回放起始点
+     */
+    public boolean CLIENT_SeekPlayBack(LLong lPlayHandle,int offsettime,int offsetbyte);
+
+    /**
+     * 按时间定位回放起始点
+     */
+    public boolean CLIENT_SeekPlayBackByTime(LLong lPlayHandle, NET_TIME lpSeekTime);
+
+    /**
+     * 多通道预览回放(pParam内存由用户申请释放)
+     */
+    public LLong CLIENT_MultiPlayBack(LLong lLoginID,Pointer pParam);
+
+    /**
+     * 操作设备标定信息
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	emType:	        入参枚举,决定后续指针参数类型,参考{@link EM_CALIBRATEINFO_OPERATE_TYPE}
+     * param[in]	pstuInParam:	接口输入参数, 内存资源由用户申请和释放,参考{@link EM_CALIBRATEINFO_OPERATE_TYPE}
+     * param[out]	pstuOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{@link EM_CALIBRATEINFO_OPERATE_TYPE}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_OperateCalibrateInfo(LLong lLoginID, int emType, Pointer pStuInParam, Pointer pStuOutParam,
+                                               int nWaitTime);
+    /**
+     * 订阅云台可视域回调函数原型, pBuf -> {@link DH_OUT_PTZ_VIEW_RANGE_STATUS}
+     */
+    public interface fViewRangeStateCallBack extends Callback {
+        public void invoke(LLong lLoginID, LLong lAttachHandle, Pointer pBuf, int nBufLen, Pointer dwUser);
+    }
+
+    /**
+     * 订阅云台可视域,pstuInViewRange与pstuOutViewRange内存由用户申请释放
+     * {@link NET_IN_VIEW_RANGE_STATE},{@link NET_OUT_VIEW_RANGE_STATE}
+     */
+    public LLong CLIENT_AttachViewRangeState(LLong lLoginID, Pointer pstuInViewRange, Pointer pstuOutViewRange,
+                                             int nWaitTime);
+
+    /**
+     * 停止订阅云台可视域,lAttachHandle是CLIENT_AttachViewRangeState返回值
+     */
+    public boolean CLIENT_DetachViewRangeState(LLong lAttachHandle);
+    
+    /** 
+     * 开始查询日志(目前只支持门禁BSC系列,支持报警主机日志分类查询),pInParam与pOutParam内存由用户申请释放
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_START_QUERYLOG}
+     * param[out]	pOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_START_QUERYLOG}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return  返回查询句柄
+     */
+    public LLong CLIENT_StartQueryLog(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    /** 
+     * 获取日志(目前只支持门禁BSC系列),pInParam与pOutParam内存由用户申请释放
+     * param[in]	lLogID:		查询句柄,CLIENT_StartQueryLog的返回值
+     * param[in]	pInParam:	接口输入参数, 内存资源由用户申请和释放,参考{ @link NET_IN_QUERYNEXTLOG}
+     * param[out]	pOutParam:	接口输出参数, 内存资源由用户申请和释放,参考{ @link NET_OUT_QUERYNEXTLOG}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_QueryNextLog(LLong lLogID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    /** 
+     * 结束查询日志(目前只支持门禁BSC系列)
+     * param[in]	lLogID:		查询句柄,CLIENT_StartQueryLog的返回值
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_StopQueryLog(LLong lLogID);
+    
+    /** 
+     * 获取窗口位置(pInparam, pOutParam内存由用户申请释放)
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pInParam:	        接口输入参数, 内存资源由用户申请和释放,参考{ @link DH_IN_SPLIT_GET_RECT}
+     * param[out]	pOutParam:	        接口输出参数, 内存资源由用户申请和释放,参考{ @link DH_OUT_SPLIT_GET_RECT}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetSplitWindowRect(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    /** 
+     * 设置窗口位置(pInparam, pOutParam内存由用户申请释放)
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pInParam:	        接口输入参数, 内存资源由用户申请和释放,参考{ @link DH_IN_SPLIT_SET_RECT}
+     * param[out]	pOutParam:	        接口输出参数, 内存资源由用户申请和释放,参考{ @link DH_OUT_SPLIT_SET_RECT}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetSplitWindowRect(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+    /** 
+     * 设置窗口次序(pInparam, pOutParam内存由用户申请释放)
+     * param[in]	lLoginID:		登录句柄
+     * param[in]	pInParam:	        接口输入参数, 内存资源由用户申请和释放,参考{@link DH_IN_SPLIT_SET_TOP_WINDOW}
+     * param[out]	pOutParam:	        接口输出参数, 内存资源由用户申请和释放,参考{@link DH_OUT_SPLIT_SET_TOP_WINDOW}
+     * param[in]	nWaitTime:		接口超时时间, 单位毫秒
+     * return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetSplitTopWindow(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+    /**
+     * 获取网卡信息(lpInParam, lpOutParam内存由用户申请释放,大小参照emType对应的结构体)
+     */
+    public boolean CLIENT_QueryNetStat(LLong lLoginID,int emType,Pointer lpInParam,int nInParamLen,Pointer lpOutParam,int nOutParamLen,Pointer pError,int nWaitTime);
+
+    /**
+     * 订阅统计区域内的车辆数据或者排队长度信息,pstInParam与pstOutParam内存由用户申请释放
+     */
+    public LLong CLIENT_AttachVehiclesDistributionData(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam);
+
+    /**
+     * 取消订阅统计区域内的车辆数据或者排队长度信息,pstInParam与pstOutParam内存由用户申请释放
+     */
+    public boolean CLIENT_DetachVehiclesDistributionData(LLong lAttachHandle);
+
+    /**
+     * 接口 CLIENT_AttachVehiclesDistributionData 回调函数,pBuf是json和图片数据,nBufLen是pBuf相应长度,用于转发服务
+     */
+    public interface fNotifyVehiclesDistributionData extends Callback {
+        public int invoke(LLong lVehiclesHandle,Pointer pDiagnosisInfo,Pointer dwUser);
+    }
+
+    /**
+     * @param		pInParam:	参考{@link com.netsdk.lib.structure.NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO}
+     * @param		pOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO}
+     * @description  获取热成像当前冷(最低的温度)、热(最高的温度)点信息
+     */
+    public boolean CLIENT_RadiometryGetCurrentHotColdSpotInfo(LLong lLoginID,Pointer pInParam,Pointer pOutParam,int nWaitTime);
+
+
+    /**
+     * @param		pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_SET_ZONE_ARMODE_INFO}
+     * @param		pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_SET_ZONE_ARMODE_INFO}
+     * @description  设置单防区布撤防状态
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetZoneArmMode(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * @param		pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_GET_ZONE_ARMODE_INFO}
+     * @param		pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_GET_ZONE_ARMODE_INFO}
+     * @description  获取单防区布撤防状态
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetZoneArmMode(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * @description 智能分析结果的回调函数
+     * @description param[out] lAttachHandle 订阅句柄
+     * @description param[out] pstuVideoAnalyseTrackProc 智能分析结果的信息
+     * @description param[out] dwUser 用户信息
+     * @description return void
+     */
+    public interface fVehicleInOutAnalyseProc extends Callback {
+        /**
+         * @param lAttachHandle
+         * @param pstuVehicleInOutAnalyseProc: 参考{@link com.netsdk.lib.structure.NET_VEHICLE_INOUT_ANALYSE_PROC}
+         * @param dwUser
+         */
+        public void invoke(LLong lAttachHandle, Pointer pstuVehicleInOutAnalyseProc, Pointer dwUser);
+    }
+
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW}
+     * @description 订阅交通流量统计
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstInParam 接口输入参数
+     * @description param[out] pstOutParam 接口输出参数
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return 返回订阅句柄
+     */
+    public LLong CLIENT_AttachTrafficFlowStatRealFlow(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam,
+                                                      int nWaitTime);
+
+    /**
+     * @description 取消订阅交通流量统计
+     * @description param[in] lAttachHandle 订阅句柄
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachTrafficFlowStatRealFlow(LLong lAttachHandle);
+
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_SET_BIND_MODE_INFO}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_SET_BIND_MODE_INFO}
+     * @description 设置绑定模式
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetBindMode(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_GET_BIND_MODE_INFO}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_GET_BIND_MODE_INFO}
+     * @description 获取绑定模式
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetBindMode(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * @param		pstInParam:	参考{@link com.netsdk.lib.structure.NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC}
+     * @param		pstOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC}
+     * @description  订阅外部轨迹
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstInParam 接口输入参数
+     * @description param[out]pstOutParam 接口输出参数
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return 订阅句柄
+     */
+    public LLong CLIENT_AttachVideoAnalyseTrackProc(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * @param		pstuVideoAnalyseTrackProc:	参考{@link com.netsdk.lib.structure.NET_VIDEO_ANALYSE_TRACK_PROC}
+     * @description  外部轨迹的回调函数
+     */
+    public interface fVideoAnalyseTrackProc extends Callback {
+        public void invoke(LLong lAttachHandle,Pointer pstuVideoAnalyseTrackProc,Pointer dwUser);
+    }
+
+    /**
+     * @description  取消订阅外部轨迹
+     * @description param[in] lAttachHandle 订阅句柄
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachVideoAnalyseTrackProc(LLong lAttachHandle);
+
+    /**
+     * @param        pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_GET_GPS_STATUS_INFO}
+     * @param        pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_GET_GPS_STATUS_INFO}
+     * @description 获取GPS定位信息
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetGpsStatus(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_PTZ_SET_ZOOM_VALUE}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_PTZ_SET_ZOOM_VALUE}
+     * @description 设置云台变倍
+     * @description param[in] lLoginID: 登录句柄
+     * @description param[in] pstuInParam: 接口输入参数, 内存资源由用户申请和释放
+     * @description param[out] pstuOutParam: 接口输出参数, 内存资源由用户申请和释放
+     * @description param[in] nWaitTime: 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_PTZSetZoomValue(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam, int nWaitTime);
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_SET_VTO_MANAGER_RELATION}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_SET_VTO_MANAGER_RELATION}
+     * @description 设置组织节点表
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_SetVTOManagerRelation(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam,
+                                                int nWaitTime);
+
+    /**
+     * @param pstuInParam:  参考{@link com.netsdk.lib.structure.NET_IN_GET_VTO_MANAGER_RELATION}
+     * @param pstuOutParam: 参考{@link com.netsdk.lib.structure.NET_OUT_GET_VTO_MANAGER_RELATION}
+     * @description 获取组织树节点
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetVTOManagerRelation(LLong lLoginID, Pointer pstuInParam, Pointer pstuOutParam,
+                                                int nWaitTime);
+
+
+    /**
+     * @param        pstInParam:	参考{@link com.netsdk.lib.structure.NET_IN_ADD_SOFT_TOUR_POINT_INFO}
+     * @param        pstOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_ADD_SOFT_TOUR_POINT_INFO}
+     * @description 增加软巡航预置点
+     * @description param[in]   lLoginID 登录句柄
+     * @description param[in]   pstInParam 接口输入参数
+     * @description param[out]  pstOutParam 接口输出参数
+     * @description param[in]   nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_AddSoftTourPoint(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * @param        pstInParam:	参考{@link com.netsdk.lib.structure.NET_IN_REMOVE_SOFT_TOUR_POINT_INFO}
+     * @param        pstOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO}
+     * @description 清除软巡航预置点
+     * @description param[in]   lLoginID 登录句柄
+     * @description param[in]   pstInParam 接口输入参数
+     * @description param[out]  pstOutParam 接口输出参数
+     * @description param[in]   nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_RemoveTourPoint(LLong lLoginID, Pointer pstInParam, Pointer pstOutParam, int nWaitTime);
+
+    /**
+     * @param		pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_INSERT_MULTI_TALK_DEV}
+     * @param		pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_INSERT_MULTI_TALK_DEV}
+     * @description  下发设备信息
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_InsertMultiTalkDev(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * @param		pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_UPDATE_MULTI_TALK_DEV}
+     * @param		pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_UPDATE_MULTI_TALK_DEV}
+     * @description  批量更新设备信息接口
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstuInParam 接口入参
+     * @description param[out] pstuOutParam 接口出参
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_UpdateMultiTalkDev(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+
+    /**
+     * @param		pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_DO_FIND_TALK_DEV}
+     * @param		pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_DO_FIND_TALK_DEV}
+     * @description  执行信息查询, lFindID为CLIENT_StartFindTalkDev接口返回的查找ID
+     * @description param[in] lFindID 查询句柄
+     * @description param[in] pstuInParam 接口输入参数
+     * @description param[out]pstuOutParam 接口输出参数
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DoFindTalkDev(LLong lFindID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+    
+    /** 
+     * 录像下载--扩展Ex3接口,将所有参数整合在一个结构体,方便后续扩展
+     * @param   lLoginID 登录句柄
+     * @param	pstuInParam:	参考{@link com.netsdk.lib.structure.NET_IN_DOWNLOAD}
+     * @param	pstuOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_DOWNLOAD}
+     * @param   dwWaitTime 接口超时时间, 单位毫秒
+     * @return 下载句柄
+     */
+    public LLong CLIENT_DownloadByRecordFileEx3(LLong lLoginID,Pointer pstuInParam,Pointer pstuOutParam,int nWaitTime);
+ 
+ /**
+     * @param		pstInParam:	参考{@link com.netsdk.lib.structure.NET_IN_ATTACH_HYGROTHERMOGRAPH}
+     * @param		pstOutParam:	参考{@link com.netsdk.lib.structure.NET_OUT_ATTACH_HYGROTHERMOGRAPH}
+     * @description  订阅温湿度实时检测数据
+     * @description param[in] lLoginID 登录句柄
+     * @description param[in] pstInParam 接口输入参数
+     * @description param[out]pstOutParam 接口输出参数
+     * @description param[in] nWaitTime 接口超时时间, 单位毫秒
+     * @description return 返回订阅句柄
+     */
+  public LLong CLIENT_AttachHygrothermograph(LLong lLoginID,Pointer pstInParam,Pointer pstOutParam,int nWaitTime);
+
+    /**
+     * @param		pstuHygrothermographInfo:	参考{@link com.netsdk.lib.structure.NET_HYGROTHERMOGRAPH_INFO}
+     * @description  订阅温湿度实时检测数据回调函数原型, lHygrothermographHandle为CLIENT_AttachHygrothermograph接口的返回值
+     * @description param[out] lHygrothermographHandle 订阅句柄
+     * @description param[out] pstuHygrothermographInfo 订阅温湿度实时检测数据回调信息
+     * @description param[out] dwUser 用户信息
+     * @description return void
+     */
+    public interface fNotifyHygrothermograph extends Callback {
+        public void invoke(LLong lHygrothermographHandle,Pointer pstuHygrothermographInfo,Pointer dwUser);
+    }
+
+    /**
+     * @description  退订温湿度实时检测数据
+     * @description param[in] lHygrothermographHandle 订阅句柄
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_DetachHygrothermograph(LLong lHygrothermographHandle);
+
+    /**
+     * @description  查询录像下载进度
+     * @description param[in] lFileHandle  下载句柄
+     * @description param[out] nTotalSize  总文件大小
+     * @description param[out] nDownLoadSize  已下载文件大小
+     * @description return TRUE表示成功 FALSE表示失败
+     */
+    public boolean CLIENT_GetDownloadPos(LLong lFileHandle,Pointer nTotalSize,Pointer nDownLoadSize);
+	
+	/**
+     * 获取设备点位信息
+     * @param lLoginID 登录返回ID
+     * @param pInParam NET_IN_SCADA_GET_ATTRIBUTE_INFO
+     * @param pOutParam NET_OUT_SCADA_GET_ATTRIBUTE_INFO
+     * @param nWaitTime 超时时间
+     * @return
+     */
+    public boolean  CLIENT_SCADAGetAttributeInfo(LLong lLoginID, Pointer pInParam, Pointer pOutParam, int nWaitTime);
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ToolKits.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ToolKits.java
new file mode 100644
index 0000000..f9e8ed8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/ToolKits.java
@@ -0,0 +1,591 @@
+package com.netsdk.lib;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.imageio.ImageIO;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.filechooser.FileFilter;
+
+import com.netsdk.common.ErrorCode;
+import com.netsdk.common.PaintPanel;
+import com.netsdk.demo.module.LoginModule;
+import com.netsdk.lib.NetSDKLib.LLong;
+
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+import com.sun.jna.ptr.IntByReference;
+
+public class ToolKits {
+	static NetSDKLib netsdkapi = NetSDKLib.NETSDK_INSTANCE;
+	static NetSDKLib configapi = NetSDKLib.CONFIG_INSTANCE;
+	
+  	/***************************************************************************************************
+  	 *                          				工具方法       	 										   *
+  	 ***************************************************************************************************/
+	public static void GetPointerData(Pointer pNativeData, Structure pJavaStu)
+	{
+		GetPointerDataToStruct(pNativeData, 0, pJavaStu);
+	}
+
+	public static void GetPointerDataToStruct(Pointer pNativeData, long OffsetOfpNativeData, Structure pJavaStu) {
+		pJavaStu.write();
+		Pointer pJavaMem = pJavaStu.getPointer();
+		pJavaMem.write(0, pNativeData.getByteArray(OffsetOfpNativeData, pJavaStu.size()), 0,
+				pJavaStu.size());
+		pJavaStu.read();
+	}
+	
+	public static void GetPointerDataToStructArr(Pointer pNativeData, Structure []pJavaStuArr) {
+		long offset = 0;
+		for (int i=0; i<pJavaStuArr.length; ++i)
+		{
+			GetPointerDataToStruct(pNativeData, offset, pJavaStuArr[i]);
+			offset += pJavaStuArr[i].size();
+		}
+	}
+	
+	/**
+	 * 将结构体数组拷贝到内存
+	 * @param pNativeData 
+	 * @param pJavaStuArr
+	 */
+	public static void SetStructArrToPointerData(Structure []pJavaStuArr, Pointer pNativeData) {
+		long offset = 0;
+		for (int i = 0; i < pJavaStuArr.length; ++i) {
+			SetStructDataToPointer(pJavaStuArr[i], pNativeData, offset);
+			offset += pJavaStuArr[i].size();
+		}
+	}
+	
+	public static void SetStructDataToPointer(Structure pJavaStu, Pointer pNativeData, long OffsetOfpNativeData){
+		pJavaStu.write();
+		Pointer pJavaMem = pJavaStu.getPointer();
+		pNativeData.write(OffsetOfpNativeData, pJavaMem.getByteArray(0, pJavaStu.size()), 0, pJavaStu.size());
+	}
+	
+	public static void savePicture(byte[] pBuf, String sDstFile) throws IOException
+	{
+		FileOutputStream fos=null;
+        try
+        {
+          	fos = new FileOutputStream(sDstFile);
+        	fos.write(pBuf);	
+        } catch (Exception e){
+        	e.printStackTrace();
+        }finally{
+        	fos.close();	
+        }
+	}
+	
+	public static void savePicture(byte[] pBuf, int dwBufOffset, int dwBufSize, String sDstFile) throws IOException
+	{
+		FileOutputStream fos=null;
+        try
+        {       	
+        	fos = new FileOutputStream(sDstFile);
+        	fos.write(pBuf, dwBufOffset, dwBufSize);
+        } catch (Exception e){
+        	e.printStackTrace();
+        }finally{
+        	fos.close();	
+        }
+	}
+	
+	public static void savePicture(Pointer pBuf, int dwBufSize, String sDstFile) throws IOException
+	{
+		FileOutputStream fos=null;
+        try
+        {
+          	fos = new FileOutputStream(sDstFile);
+        	fos.write(pBuf.getByteArray(0, dwBufSize), 0, dwBufSize);
+        } catch (Exception e){
+        	e.printStackTrace();
+        }finally{
+        	fos.close();	
+        }
+	}
+	
+	public static void savePicture(Pointer pBuf, int dwBufOffset, int dwBufSize, String sDstFile) throws IOException
+	{
+		FileOutputStream fos=null;
+        try
+        {
+        	fos = new FileOutputStream(sDstFile);
+        	fos.write(pBuf.getByteArray(dwBufOffset, dwBufSize), 0, dwBufSize);
+        } catch (Exception e){
+        	e.printStackTrace();
+        }finally{
+        	fos.close();	
+        }
+	}
+	
+	// 将Pointer值转为byte[]
+	public static String GetPointerDataToByteArr(Pointer pointer) {	
+		String str = "";
+		if(pointer == null) {
+			return str;
+		}
+
+		int length = 0;
+		byte[] bufferPlace = new byte[1];
+
+		for(int i = 0; i < 2048; i++) {		
+			pointer.read(i, bufferPlace, 0, 1);		
+			if(bufferPlace[0] == '\0') {
+				length = i;
+				break;
+			}
+		}
+				
+		if(length > 0) {
+			byte[] buffer = new byte[length];
+			pointer.read(0, buffer, 0, length);
+			try {
+				str = new String(buffer, "GBK").trim();
+			} catch (UnsupportedEncodingException e) {
+				return str;
+			}
+		} 
+
+		return str;
+	}
+	
+	// 获取当前时间
+	public static String getDate() {
+		SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+	    String date = simpleDate.format(new Date()).replace(" ", "_").replace(":", "-");
+	    
+	    return date;
+	}
+
+	// 获取当前时间
+	public static String getDate(Date curDate) {
+		SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		String date = simpleDate.format(curDate).replace(" ", "_").replace(":", "-");
+
+		return date;
+	}
+	
+	// 获取当前时间
+	public static String getDay() {
+			SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
+		    String date = simpleDate.format(new Date());
+		    return date;
+	}
+
+	
+	// 限制JTextField 长度,以及内容
+	public static void limitTextFieldLength(final JTextField jTextField, final int size) {
+		jTextField.addKeyListener(new KeyListener() {
+			
+			@Override
+			public void keyTyped(KeyEvent e) {			
+				String number = "0123456789" + (char)8;	
+				if(number.indexOf(e.getKeyChar()) < 0 || jTextField.getText().trim().length() >= size) {
+					e.consume();
+					return;
+				}		
+			}
+			
+			@Override
+			public void keyReleased(KeyEvent e) {		
+			}
+			
+			@Override
+			public void keyPressed(KeyEvent e) {	
+			}
+		});
+	}
+	
+    // 获取当前窗口
+	public static JFrame getFrame(ActionEvent e) {
+		JButton btn = (JButton)e.getSource();
+		JFrame frame = (JFrame)btn.getRootPane().getParent();
+		
+		return frame;
+	}
+	
+	// 获取操作平台信息
+	public static String getLoadLibrary(String library) {
+		String path = "";
+		String os = System.getProperty("os.name");
+		if(os.toLowerCase().startsWith("win")) {
+			path = "./libs/";
+		} else if(os.toLowerCase().startsWith("linux")) {
+			path = "";
+		}
+
+		return (path + library);
+	}
+		
+	public static String getOsName() {
+		String osName = "";
+		String os = System.getProperty("os.name");
+		if(os.toLowerCase().startsWith("win")) {
+			osName = "win";
+		} else if(os.toLowerCase().startsWith("linux")) {
+			osName = "linux";
+		}
+		
+		return osName;
+	}
+	
+	/**
+	 * 读取图片大小
+	 * @param filePath  图片路径
+	 * @return
+	 */
+	public static long GetFileSize(String filePath) {
+		File f = new File(filePath);
+		if (f.exists() && f.isFile()) {
+			return f.length();
+		}
+		else
+		{
+			return 0;
+		}
+	}
+	
+	/**
+	 * 读取图片数据
+	 * @param file 图片路径
+	 * @param memory 图片数据缓存  
+	 * @return
+	 * @throws IOException 
+	 */
+	public static boolean ReadAllFileToMemory(String file, Memory memory) throws IOException {
+		if (memory != Memory.NULL)
+		{
+			long fileLen = GetFileSize(file);
+			if (fileLen <= 0)
+			{
+				return false;
+			}
+			FileInputStream in =null;
+			try {
+				File infile = new File(file);
+				if (infile.canRead())
+				{
+					in = new FileInputStream(infile);
+					int buffLen = 1024; 
+					byte[] buffer = new byte[buffLen];
+					long currFileLen = 0;
+					int readLen = 0;
+					while (currFileLen < fileLen)
+					{
+						readLen = in.read(buffer);
+						memory.write(currFileLen, buffer, 0, readLen);
+						currFileLen += readLen;
+					}										
+					return true;
+				}
+		        else
+		        {
+		        	System.err.println("Failed to open file %s for read!!!\n");
+		            return false;
+		        }
+			}catch (Exception e)
+			{
+				System.err.println("Failed to open file %s for read!!!\n");
+				e.printStackTrace();
+			}finally{
+				if(in!=null){
+					in.close();
+				}				
+			}
+		}
+		
+		return false;
+	}
+	
+	static class JPGFilter extends FileFilter {
+		public boolean accept(File f) {
+			if(f.getName().toLowerCase().endsWith(".JPG")
+					|| f.getName().toLowerCase().endsWith(".jpg") 
+					|| f.isDirectory()) {
+				return true;
+			}
+			return false;
+		}
+
+		@Override
+		public String getDescription() {
+			return "*.jpg; *.JPG";
+		}
+	}
+	
+	/*
+	 * 用选择器选择图片, 获取图片路径,并在界面显示
+	 */
+	public static String openPictureFile(PaintPanel paintPanel) {	
+    	try {
+            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+    	
+		String picPath = "";
+		
+		// 读取图片
+		JFileChooser jfc = new JFileChooser("d:/");
+		jfc.setMultiSelectionEnabled(false);    // 不可以拖选多个文件
+		jfc.setAcceptAllFileFilterUsed(false);  // 关闭显示所有
+
+		//添加过滤器
+		JPGFilter filter = new JPGFilter();
+		jfc.addChoosableFileFilter(filter);
+		jfc.setFileFilter(filter);
+		
+        if( jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
+        	picPath = jfc.getSelectedFile().getAbsolutePath();
+        	
+        	/*
+        	 * 读取本地图片, 并在面板上显示
+        	 */
+        	BufferedImage bufferedImage = null;
+			if(picPath == null || picPath.equals("")) {
+				return "";
+			}
+			
+			File file = new File(picPath);
+			if(!file.exists()) {
+				return "";
+			}
+			
+			try {
+				bufferedImage = ImageIO.read(file);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			
+			if(bufferedImage == null) {
+				paintPanel.setOpaque(true);
+				paintPanel.repaint();
+				
+				System.err.println("打开图片失败,请重新选择!");
+				return "";
+			} else {
+				paintPanel.setOpaque(false);
+				paintPanel.setImage(bufferedImage);
+				paintPanel.repaint();
+			}
+		}
+        
+    	try {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+        } catch (Exception e) {
+        	e.printStackTrace();
+        } 
+        return picPath;
+	}
+	
+	/*
+	 * 传入图片路径, 打开图片, 并在面板显示
+	 */
+	public static File openPictureFile(String picPath, PaintPanel paintPanel) {		
+    	/*
+    	 * 读取本地图片, 并在面板上显示
+    	 */
+    	BufferedImage bufferedImage = null;
+		if(picPath == null || picPath.equals("")) {
+			return null;
+		}
+		
+		File file = new File(picPath);
+		if(!file.exists()) {
+			return null;
+		}
+		
+		try {
+			bufferedImage = ImageIO.read(file);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+		if(bufferedImage == null) {
+			paintPanel.setOpaque(true);
+			paintPanel.repaint();
+			
+			System.err.println("打开图片失败,请重新选择!");
+			return null;
+		} else {
+			paintPanel.setOpaque(false);
+			paintPanel.setImage(bufferedImage);
+			paintPanel.repaint();
+		}
+		
+        return file;
+	}
+	
+	/**
+	 * 读取图片
+	 * @return 图片缓存
+	 * @throws IOException 
+	 */
+	public static Memory readPictureFile(String picPath) throws IOException {
+		int nPicBufLen = 0;
+		Memory memory = null;
+			
+	    /*
+	     * 读取本地图片大小
+	     */
+		nPicBufLen = (int)ToolKits.GetFileSize(picPath);   
+		
+		// 读取文件大小失败
+		if (nPicBufLen <= 0) {
+			System.err.println("读取图片大小失败,请重新选择!");
+            return null;
+		}
+
+		/*
+		 * 读取图片缓存
+		 */
+		memory = new Memory(nPicBufLen);   // 申请缓存
+		memory.clear();
+		
+		if (!ToolKits.ReadAllFileToMemory(picPath,  memory)) {
+			System.err.println("读取图片数据,请重新选择!");
+            return null;
+		}
+	
+        return memory;
+	}
+	
+	/**
+	 * 登录设备设备错误状态, 用于界面显示
+	 */
+	public static String getErrorCodeShow() {
+		return ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError());
+	}
+	
+	/**
+	 * 获取接口错误码和错误信息,用于打印
+	 * @return
+	 */
+	public static String getErrorCodePrint() {
+		return "\n{error code: (0x80000000|" + (LoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff) +").参考  NetSDKLib.java }" 
+				+ " - {error info:" + ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError()) + "}\n";
+	}
+	
+	/**
+	 * 获取单个配置
+	 * @param hLoginHandle 登陆句柄
+	 * @param nChn 通道号,-1 表示全通道
+	 * @param strCmd 配置名称
+	 * @param cmdObject 配置对应的结构体对象
+	 * @return 成功返回 true 
+	 */
+	public static boolean GetDevConfig(LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) {
+		boolean result = false;
+		IntByReference error = new IntByReference(0);
+		int nBufferLen = 2*1024*1024;
+	    byte[] strBuffer = new byte[nBufferLen];
+	   
+	    if(netsdkapi.CLIENT_GetNewDevConfig( hLoginHandle, strCmd , nChn, strBuffer, nBufferLen,error,3000,null)) {  
+	    	cmdObject.write();
+			if (configapi.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(),
+					cmdObject.size(), null)) {
+				cmdObject.read();
+	     		result = true;
+	     	} else {
+	     		System.err.println("Parse " + strCmd + " Config Failed!" + ToolKits.getErrorCodePrint());
+	     		result = false;
+		 	}
+	    } else {
+			 System.err.printf("Get %s Config Failed!Last Error = %s\n" , strCmd , getErrorCodePrint());
+			 result = false;
+		}
+			
+	    return result;
+	}
+	
+	/**
+	 * 设置单个配置
+	 * @param hLoginHandle 登陆句柄
+	 * @param nChn 通道号,-1 表示全通道
+	 * @param strCmd 配置名称
+	 * @param cmdObject 配置对应的结构体对象
+	 * @return 成功返回 true
+	 */
+	public static boolean SetDevConfig(LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) {
+        boolean result = false;
+    	int nBufferLen = 2*1024*1024;
+        byte szBuffer[] = new byte[nBufferLen];
+        for(int i=0; i<nBufferLen; i++)szBuffer[i]=0;
+    	IntByReference error = new IntByReference(0);
+    	IntByReference restart = new IntByReference(0); 
+
+		cmdObject.write();
+		if (configapi.CLIENT_PacketData(strCmd, cmdObject.getPointer(), cmdObject.size(),
+				szBuffer, nBufferLen)) {	
+			cmdObject.read();
+        	if( netsdkapi.CLIENT_SetNewDevConfig(hLoginHandle, strCmd , nChn , szBuffer, nBufferLen, error, restart, 3000)) {
+        		result = true;
+        	} else {
+        		 System.err.printf("Set %s Config Failed! Last Error = %s\n" , strCmd , getErrorCodePrint());
+	        	 result = false;
+        	}
+        } else {
+        	System.err.println("Packet " + strCmd + " Config Failed!" + getErrorCodePrint());
+         	result = false;
+        }
+        
+        return result;
+    }
+	
+    // Win下,将GBK String类型的转为Pointer
+    public static Pointer GetGBKStringToPointer(String src) {	
+    	Pointer pointer = null;
+    	try {
+			byte[] b = src.getBytes("GBK");
+			pointer = new Memory(b.length+1);
+			pointer.clear(b.length+1);
+			
+			pointer.write(0, b, 0, b.length);
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+    	return pointer;
+    }
+    
+    /**
+     * 字符串拷贝,用于先获取,再设置(src → dst)
+     * @param src 
+     * @param dst
+     */
+	public static void StringToByteArray(String src, byte[] dst) {
+		for(int i = 0; i < dst.length; i++) {
+			dst[i] = 0;
+		}
+		
+		System.arraycopy(src.getBytes(), 0, dst, 0, src.getBytes().length);
+	}
+	
+	/**
+	 * 数组拷贝, 用于先获取,再设置(src → dst)
+	 * @param b
+	 * @param dst
+	 */
+	public static void ByteArrayToByteArray(byte[] src, byte[] dst) {
+		for(int i = 0; i < dst.length; i++) {
+			dst[i] = 0;
+		}
+		
+		System.arraycopy(src, 0, dst, 0, src.length);
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/Utils.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/Utils.java
new file mode 100644
index 0000000..4d3c226
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/Utils.java
@@ -0,0 +1,210 @@
+package com.netsdk.lib;
+
+import com.sun.jna.IntegerType;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+import com.sun.jna.Structure;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Utils {
+    public Utils() {
+
+    }
+
+    /**
+     * 获取系统对应的编码
+     *
+     */
+    public static String getPlatformEncode() {
+        String encode = "";
+        String osPrefix = getOsPrefix();
+        if (osPrefix.toLowerCase().startsWith("win32")) {
+            encode = "GBK";
+        } else if (osPrefix.toLowerCase().startsWith("linux")) {
+            encode = "UTF-8";
+        }else if(osPrefix.toLowerCase().startsWith("mac")){
+            encode="UTF-8";
+        }
+        if(encode.isEmpty()){
+            encode="UTF-8";
+        }
+        return encode;
+    }
+
+    // 获取操作平台信息
+    public static String getOsPrefix() {
+        String arch = System.getProperty("os.arch").toLowerCase();
+        final String name = System.getProperty("os.name");
+        String osPrefix;
+        switch (Platform.getOSType()) {
+            case Platform.WINDOWS: {
+                if ("i386".equals(arch))
+                    arch = "x86";
+                osPrefix = "win32-" + arch;
+            }
+            break;
+            case Platform.LINUX: {
+                if ("x86".equals(arch)) {
+                    arch = "i386";
+                } else if ("x86_64".equals(arch)) {
+                    arch = "amd64";
+                }
+                osPrefix = "linux-" + arch;
+            }
+            break;
+            case Platform.MAC: {
+                //mac系统的os.arch都是ppc(老版本的mac是powerpc,已经基本不用)看不出系统位数,使用下面的参数表示
+                arch = System.getProperty("sun.arch.data.model");
+                osPrefix = "mac-" + arch;
+            }
+            break;
+            default: {
+                osPrefix = name.toLowerCase();
+                if ("x86".equals(arch)) {
+                    arch = "i386";
+                }
+                if ("x86_64".equals(arch)) {
+                    arch = "amd64";
+                }
+                int space = osPrefix.indexOf(" ");
+                if (space != -1) {
+                    osPrefix = osPrefix.substring(0, space);
+                }
+                osPrefix += "-" + arch;
+            }
+            break;
+
+        }
+
+        return osPrefix;
+    }
+
+    public static String getOsName() {
+        String osName = "";
+        String osPrefix = getOsPrefix();
+        if (osPrefix.toLowerCase().startsWith("win32-x86")
+                || osPrefix.toLowerCase().startsWith("win32-amd64")) {
+            osName = "win";
+        } else if (osPrefix.toLowerCase().startsWith("linux-i386")
+                || osPrefix.toLowerCase().startsWith("linux-amd64")) {
+            osName = "linux";
+        } else if (osPrefix.toLowerCase().startsWith("mac-64")
+                || osPrefix.toLowerCase().startsWith("mac-32")) {
+            osName = "mac";
+        }
+
+        return osName;
+    }
+
+    // 获取加载库
+    public static String getLoadLibrary(String library) {
+        if (isChecking()) {
+            return null;
+        }
+
+        String loadLibrary = "";
+        String osPrefix = getOsPrefix();
+        if (osPrefix.toLowerCase().startsWith("win32-x86")) {
+            loadLibrary = "./libs/win32/";
+        } else if (osPrefix.toLowerCase().startsWith("win32-amd64")) {
+            loadLibrary = "./libs/win64/";
+        } else if (osPrefix.toLowerCase().startsWith("linux-i386")) {
+            loadLibrary = "";
+        } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) {
+            loadLibrary = "";
+        } else if (osPrefix.toLowerCase().startsWith("mac-64")) {
+            loadLibrary = "";
+        }
+//		else if(osPrefix.toLowerCase().startsWith("mac-32")) {
+//			loadLibrary = "";
+//		}  32位mac版本基本没人用了,暂时不用
+
+        System.out.printf("加载库[%s]\n", loadLibrary + library);
+        return loadLibrary + library;
+    }
+
+    private static boolean checking = false;
+
+    public static void setChecking() {
+        checking = true;
+    }
+
+    public static void clearChecking() {
+        checking = false;
+    }
+
+    public static boolean isChecking() {
+        return checking;
+    }
+
+    public static class LLong extends IntegerType {
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * Size of a native long, in bytes.
+         */
+        public static int size;
+
+        static {
+            size = Native.LONG_SIZE;
+            if (Utils.getOsPrefix().toLowerCase().equals("linux-amd64")
+                    || Utils.getOsPrefix().toLowerCase().equals("win32-amd64")
+                    || Utils.getOsPrefix().toLowerCase().equals("mac-64")) {
+                size = 8;
+            } else if (Utils.getOsPrefix().toLowerCase().equals("linux-i386")
+                    || Utils.getOsPrefix().toLowerCase().equals("win32-x86")) {
+                size = 4;
+            }
+        }
+
+        /**
+         * Create a zero-valued LLong.
+         */
+        public LLong() {
+            this(0);
+        }
+
+        /**
+         * Create a LLong with the given value.
+         */
+        public LLong(long value) {
+            super(size, value);
+        }
+    }
+
+    public static class SdkStructure extends Structure {
+        @Override
+        protected List<String> getFieldOrder() {
+            List<String> fieldOrderList = new ArrayList<String>();
+            for (Class<?> cls = getClass();
+                 !cls.equals(NetSDKLib.SdkStructure.class);
+                 cls = cls.getSuperclass()) {
+                Field[] fields = cls.getDeclaredFields();
+                int modifiers;
+                for (Field field : fields) {
+                    modifiers = field.getModifiers();
+                    if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
+                        continue;
+                    }
+                    fieldOrderList.add(field.getName());
+                }
+            }
+            //            System.out.println(fieldOrderList);
+
+            return fieldOrderList;
+        }
+    }
+
+    // 获取当前时间
+    public static String getDate() {
+        SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return simpleDate.format(new java.util.Date())
+                .replace(" ", "_").replace(":", "-");
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fRedirectServerCallBackEx.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fRedirectServerCallBackEx.java
new file mode 100644
index 0000000..4e70d2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fRedirectServerCallBackEx.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.callback;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.ToolKits;
+import com.netsdk.lib.structure.NET_CB_REDIRECT_SERVER_CALLBACK_INFO;
+import com.netsdk.lib.structure.NET_IN_START_REDIRECT_SERVICE;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 重定向服务器回调函数原形扩展
+ * @date 2021/3/13
+ */
+public interface fRedirectServerCallBackEx extends Callback {
+  /**
+   * @param lDevHandle 设备句柄
+   * @param pInParam 设备信息,对应结构体{@link NET_CB_REDIRECT_SERVER_CALLBACK_INFO}
+   * @param dwUserData 自定义数据,该自定义数据为{@link
+   *     NET_IN_START_REDIRECT_SERVICE#dwUserData}传入的数据,注意保证dwUser不会被jvm回收,
+   *     否则回调中接收到的dwUser可能乱码,甚至导致程序崩溃
+   * @return
+   */
+  default int callback(NetSDKLib.LLong lDevHandle, Pointer pInParam, Pointer dwUserData) {
+    NET_CB_REDIRECT_SERVER_CALLBACK_INFO info = new NET_CB_REDIRECT_SERVER_CALLBACK_INFO();
+    ToolKits.GetPointerDataToStruct(pInParam, 0, info);
+    dealWithData(lDevHandle.longValue(), info, dwUserData);
+    return 0;
+  }
+
+  /**
+   * 数据处理
+   *
+   * @param devHandler 设备句柄
+   * @param info 主动注册重定向设备信息
+   * @param userData 用户数据
+   */
+  void dealWithData(long devHandler, NET_CB_REDIRECT_SERVER_CALLBACK_INFO info, Pointer userData);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fVideoStatHeatMapCallBack.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fVideoStatHeatMapCallBack.java
new file mode 100644
index 0000000..fff67bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/fVideoStatHeatMapCallBack.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.callback;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 热度图数据回调
+ * @date 2020/9/21
+ */
+public interface fVideoStatHeatMapCallBack extends Callback {
+  /**
+   * @param lAttachHandle 订阅句柄
+   * @param pBuf 回调上来的数据,对应结构体{@link com.netsdk.lib.structure.NET_CB_VIDEOSTAT_HEATMAP}
+   * @param pBinData 回调上来的二进制数据
+   * @param dwBinDataLen 二进制数据长度
+   * @param dwUser 用户数据
+   */
+  void invoke(
+      NetSDKLib.LLong lAttachHandle,
+      Pointer pBuf,
+      Pointer pBinData,
+      int dwBinDataLen,
+      Pointer dwUser);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java
new file mode 100644
index 0000000..edf4b61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fNotifyPopulationStatisticsInfo.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.callback.securityCheck;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5
+// 接口 CLIENT_AttachPopulationStatistics 回调函数
+// pstuPopulationStatisticsInfos 人数变化信息
+ */
+public interface fNotifyPopulationStatisticsInfo extends Callback {
+
+    void invoke(
+            NetSDKLib.LLong lPopulationStatisticsHandle,
+            Pointer pstuPopulationStatisticsInfos,
+            Pointer dwUser);
+    //typedef int (CALLBACK *fNotifyPopulationStatisticsInfo)(LLONG lPopulationStatisticsHandle, NET_POPULATION_STATISTICS_INFO* pstuPopulationStatisticsInfos, LDWORD dwUser);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java
new file mode 100644
index 0000000..81ac99b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fSecurityGateAttachAlarmStatistics.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.callback.securityCheck;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 安全门报警订阅回调函数
+ * @date 2021/6/29
+ */
+public interface fSecurityGateAttachAlarmStatistics extends Callback{
+
+    /**
+     * @param lAttachHandle 订阅句柄
+     * @param pInfo 安全门报警统计信息,对应结构体{@link com.netsdk.lib.structure.NET_SECURITYGATE_ALARM_STATISTICS_INFO}
+     * @param dwUser 用户数据
+     */
+    void invoke(
+            NetSDKLib.LLong lAttachHandle,
+            Pointer pInfo,
+            Pointer dwUser);
+
+   // (LLONG lAttachHandle, NET_SECURITYGATE_ALARM_STATISTICS_INFO* pInfo, LDWORD dwUser);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java
new file mode 100644
index 0000000..8fed86e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/callback/securityCheck/fXRayAttachPackageStatistics.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.callback.securityCheck;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  包裹信息回调函数
+ * @date 2021/7/1
+ */
+public interface fXRayAttachPackageStatistics extends Callback {
+    /**
+     * @param lAttachHandle 订阅句柄
+     * @param pInfo 包裹信息回调函数,对应结构体{@link com.netsdk.lib.structure.NET_IN_XRAY_PACKAGE_STATISTICS_INFO}
+     * @param dwUser 用户数据
+     */
+    void invoke(
+            NetSDKLib.LLong lAttachHandle,
+            Pointer pInfo,
+            Pointer dwUser);
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDKStructureFieldLenth.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDKStructureFieldLenth.java
new file mode 100644
index 0000000..053a4c0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDKStructureFieldLenth.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.constant;
+
+/**
+ * 一些结构体成员变量的数组长度
+ *
+ * @author 47081 47040
+ * @version 1.0
+ * @since 2020/8/24
+ */
+public class SDKStructureFieldLenth {
+  /** 通用名字字符串长度 */
+  public static final int NET_MAX_NAME_LEN = 16;
+  /** 视频分析设备支持的检测物体类型列表个数上限 */
+  public static final int MAX_OBJECT_LIST_SIZE = 16;
+  /** 一周的天数 */
+  public static final int WEEK_DAY_NUM = 7;
+  /** 录像时间段扩展个数 */
+  public static final int MAX_REC_TSECT_EX = 10;
+  /** 通用字符串长度512 */
+  public static final int SDK_COMMON_STRING_512 = 512;
+  /** 电视墙最大预案数 */
+  public static final int NET_MAX_COLLECTION_NUM = 64;
+  /** 景物点信息最大个数 */
+  public static final int MAX_SCENICSPOT_POINTS_NUM = 256;
+  /** 协议名称长度 */
+  public static final int MAX_PROTOCOL_NAME_LEN = 32;
+  /** 通用字符串长度32 */
+  public static final int CFG_COMMON_STRING_32 = 32;
+  /** 隐私遮挡类型数量 */
+  public static final int MAX_MASKTYPE_COUNT = 8;
+  /** 马赛克遮挡类型数量 */
+  public static final int MAX_MOSAICTYPE_COUNT = 8;
+  /** 最大下位矩阵输出通道数 */
+  public static final int CFG_MAX_LOWER_MATRIX_OUTPUT = 32;
+  /** 最大通道数256 */
+  public static final int CFG_MAX_VIDEO_CHANNEL_NUM = 256;
+  /** 最大多画面预览窗口数 8 */
+  public static final int CFG_MAX_PREVIEW_MODE_SPLIT_TYPE_NUM = 8;
+  /** 规则检测区域最大顶点数 */
+  public static final int SDK_MAX_DETECT_REGION_NUM = 20;
+  /** 检测到目标的最大个数 */
+  public static final int HDBJ_MAX_OBJECTS_NUM = 200;
+  /** 规则检测区域最大顶点数 */
+  public static final int DH_MAX_DETECT_REGION_NUM = 20;
+  /** 最大事件名称长度 */
+  public static final int MAX_EVENT_NAME_LEN = 128;
+  /** 最大标定点个数 */
+  public static final int MAX_CALIBRATE_POINT_NUM = 64;
+  /** 最大的地址长度 */
+  public static final int MAX_ADDRESS_LEN = 256;
+  /** 最大密码长度 */
+  public static final int MAX_PASSWORD_LEN = 64;
+  /** 最大的SIP服务器ID长度 */
+  public static final int MAX_SIP_SVR_ID_LEN = 24;
+  /** 最大的SIP域长度 */
+  public static final int MAX_SIP_DOMAIN_LEN = 128;
+  /** 最大的SIP服务器IP长度 */
+  public static final int MAX_SIP_SVR_IP_LEN = 128;
+  /** 最大的设备编号长度 */
+  public static final int MAX_SIP_SERVER_DEVICE_ID_LEN = 24;
+  /** 最大的注册密码长度 */
+  public static final int MAX_REG_PASSWORD_LEN = 24;
+  /** 最大的行政区划代码长度 */
+  public static final int MAX_CIVIL_CODE_LEN = 24;
+  /** 最大的接入模块识别码长度 */
+  public static final int MAX_INTERVIDEO_ID_LEN = 24;
+  /** 最大的通道编号长度 */
+  public static final int MAX_CHANNEL_ID_LEN = 24;
+  /** 最大的SIP服务器信息个数 */
+  public static final int MAX_SIP_SERVER_NUM = 5;
+  /** 动态检测区域的行数 */
+  public static final int MAX_MOTION_ROW = 32;
+  /** 动态检测区域的列数 */
+  public static final int MAX_MOTION_COL = 32;
+  /** 动检支持的视频窗口值 */
+  public static final int MAX_MOTION_WINDOW = 10;
+  /** 每个云台的最大配置数 */
+  public static final int MAX_CONFIG_NUM=32;
+  /** 最大语音编码类型个数 */
+  public static final int CFG_MAX_AUDIO_ENCODE_TYPE = 64;
+  /** 视频分辨率个数 */
+  public static final int CFG_MAX_CAPTURE_SIZE_NUM = 64;
+  /** 视频编码格式最多种类个数 */
+  public static final int CFG_MAX_COMPRESSION_TYPES_NUM  = 16;
+  /** 路径最大长度 */
+  public static final int MAX_PATH = 260;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDK_ALARM_Ex_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDK_ALARM_Ex_TYPE.java
new file mode 100644
index 0000000..e6e5403
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/constant/SDK_ALARM_Ex_TYPE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.constant;
+
+import com.netsdk.lib.structure.ALARM_SOLARCELL_SYSTEM_INFO;
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.NativeLong;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ * <p>
+ * \else
+ * 扩展报警类型,对应{@link NetSDKLib#CLIENT_StartListenEx(NetSDKLib.LLong)}
+ * \endif
+ * @date 2020/8/11
+ */
+public class SDK_ALARM_Ex_TYPE {
+    /**
+     * 太阳能系统信息上报(对应结构体 {@link ALARM_SOLARCELL_SYSTEM_INFO}),枚举值对应的回调接口{@link com.netsdk.lib.NetSDKLib.fMessCallBack#invoke(int, NetSDKLib.LLong, Pointer, int, String, NativeLong, Pointer)}
+     * 对应的接口{@link NetSDKLib#CLIENT_StartListenEx(NetSDKLib.LLong)}
+     */
+    public static final int SDK_ALARM_SOLARCELL_SYSTEM_INFO = 0x345F;
+
+    /**
+     * 硬盘满报警,数据为1个字节,1为有硬盘满报警,0为无报警。
+     * 对应的回调接口{@link NetSDKLib.fMessCallBack#invoke(int, NetSDKLib.LLong, Pointer, int, String, NativeLong, Pointer)}
+     * 对应的接口{@link NetSDKLib#CLIENT_StartListenEx(NetSDKLib.LLong)}
+     */
+    public static final int SDK_DISKFULL_ALARM_EX = 0x2106;
+    /**
+     * 坏硬盘报警,数据为32个字节,每个字节表示一个硬盘的故障报警状态,1为有报警,0为无报警。
+     * 对应的回调接口{@link NetSDKLib.fMessCallBack#invoke(int, NetSDKLib.LLong, Pointer, int, String, NativeLong, Pointer)}
+     * 对应的接口{@link NetSDKLib#CLIENT_StartListenEx(NetSDKLib.LLong)}
+     */
+    public static final int SDK_DISKERROR_ALARM_EX = 0x2107;
+    /**
+     * 无硬盘报警,对应结构体{@link com.netsdk.lib.structure.ALARM_NO_DISK_INFO}
+     * 对应的回调接口{@link NetSDKLib.fMessCallBack#invoke(int, NetSDKLib.LLong, Pointer, int, String, NativeLong, Pointer)}
+     * 对应的接口{@link NetSDKLib#CLIENT_StartListenEx(NetSDKLib.LLong)}
+     */
+    public static final int SDK_ALARM_NO_DISK = 0x2183;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CAPTURE_SIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CAPTURE_SIZE.java
new file mode 100644
index 0000000..64b8cf3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CAPTURE_SIZE.java
@@ -0,0 +1,258 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  分辨率枚举,供DH_DSP_ENCODECAP使用 
+* @date 2022/08/31 14:44:17
+*/
+public enum CAPTURE_SIZE {
+/**
+704*576(PAL)  704*480(NTSC),兼容WWxHH,下同
+*/
+CAPTURE_SIZE_D1(0,"704*576(PAL)  704*480(NTSC),兼容WWxHH,下同"),
+/**
+352*576(PAL)  352*480(NTSC)
+*/
+CAPTURE_SIZE_HD1(1,"352*576(PAL)  352*480(NTSC)"),
+/**
+704*288(PAL)  704*240(NTSC)
+*/
+CAPTURE_SIZE_BCIF(2,"704*288(PAL)  704*240(NTSC)"),
+/**
+352*288(PAL)  352*240(NTSC)
+*/
+CAPTURE_SIZE_CIF(3,"352*288(PAL)  352*240(NTSC)"),
+/**
+176*144(PAL)  176*120(NTSC)
+*/
+CAPTURE_SIZE_QCIF(4,"176*144(PAL)  176*120(NTSC)"),
+/**
+640*480
+*/
+CAPTURE_SIZE_VGA(5,"640*480"),
+/**
+320*240
+*/
+CAPTURE_SIZE_QVGA(6,"320*240"),
+/**
+480*480
+*/
+CAPTURE_SIZE_SVCD(7,"480*480"),
+/**
+160*128
+*/
+CAPTURE_SIZE_QQVGA(8,"160*128"),
+/**
+800*592
+*/
+CAPTURE_SIZE_SVGA(9,"800*592"),
+/**
+1024*768
+*/
+CAPTURE_SIZE_XVGA(10,"1024*768"),
+/**
+1280*800
+*/
+CAPTURE_SIZE_WXGA(11,"1280*800"),
+/**
+1280*1024
+*/
+CAPTURE_SIZE_SXGA(12,"1280*1024"),
+/**
+1600*1024
+*/
+CAPTURE_SIZE_WSXGA(13,"1600*1024"),
+/**
+1600*1200
+*/
+CAPTURE_SIZE_UXGA(14,"1600*1200"),
+/**
+1920*1200
+*/
+CAPTURE_SIZE_WUXGA(15,"1920*1200"),
+/**
+240*192,ND1
+*/
+CAPTURE_SIZE_LTF(16,"240*192,ND1"),
+/**
+1280*720
+*/
+CAPTURE_SIZE_720(17,"1280*720"),
+/**
+1920*1080
+*/
+CAPTURE_SIZE_1080(18,"1920*1080"),
+/**
+1280*960
+*/
+CAPTURE_SIZE_1_3M(19,"1280*960"),
+/**
+1872*1408,2_5M
+*/
+CAPTURE_SIZE_2M(20,"1872*1408,2_5M"),
+/**
+3744*1408
+*/
+CAPTURE_SIZE_5M(21,"3744*1408"),
+/**
+2048*1536
+*/
+CAPTURE_SIZE_3M(22,"2048*1536"),
+/**
+2432*2050
+*/
+CAPTURE_SIZE_5_0M(23,"2432*2050"),
+/**
+1216*1024
+*/
+CPTRUTE_SIZE_1_2M(24,"1216*1024"),
+/**
+1408*1024
+*/
+CPTRUTE_SIZE_1408_1024(25,"1408*1024"),
+/**
+3296*2472
+*/
+CPTRUTE_SIZE_8M(26,"3296*2472"),
+/**
+2560*1920(5_1M)
+*/
+CPTRUTE_SIZE_2560_1920(27,"2560*1920(5_1M)"),
+/**
+960*576(PAL) 960*480(NTSC)
+*/
+CAPTURE_SIZE_960H(28,"960*576(PAL) 960*480(NTSC)"),
+/**
+960*720
+*/
+CAPTURE_SIZE_960_720(29,"960*720"),
+/**
+640*360
+*/
+CAPTURE_SIZE_NHD(30,"640*360"),
+/**
+320*180
+*/
+CAPTURE_SIZE_QNHD(31,"320*180"),
+/**
+160*90
+*/
+CAPTURE_SIZE_QQNHD(32,"160*90"),
+/**
+960*540
+*/
+CAPTURE_SIZE_960_540(33,"960*540"),
+/**
+640*352
+*/
+CAPTURE_SIZE_640_352(34,"640*352"),
+/**
+640*400
+*/
+CAPTURE_SIZE_640_400(35,"640*400"),
+/**
+320*192
+*/
+CAPTURE_SIZE_320_192(36,"320*192"),
+/**
+320*176
+*/
+CAPTURE_SIZE_320_176(37,"320*176"),
+/**
+800*600
+*/
+CAPTURE_SIZE_SVGA1(38,"800*600"),
+/**
+2560*1440
+*/
+CAPTURE_SIZE_2560_1440(39,"2560*1440"),
+/**
+2304*1296
+*/
+CAPTURE_SIZE_2304_1296(40,"2304*1296"),
+/**
+2592*1520
+*/
+CAPTURE_SIZE_2592_1520(41,"2592*1520"),
+/**
+4000*3000
+*/
+CAPTURE_SIZE_4000_3000(42,"4000*3000"),
+/**
+2880*2880
+*/
+CAPTURE_SIZE_2880_2880(43,"2880*2880"),
+/**
+2880*2160
+*/
+CAPTURE_SIZE_2880_2160(44,"2880*2160"),
+/**
+2688*1520
+*/
+CAPTURE_SIZE_2688_1520(45,"2688*1520"),
+/**
+2592*1944
+*/
+CAPTURE_SIZE_2592_1944(46,"2592*1944"),
+/**
+3072*1728
+*/
+CAPTURE_SIZE_3072_1728(47,"3072*1728"),
+/**
+3072*2048
+*/
+CAPTURE_SIZE_3072_2048(48,"3072*2048"),
+/**
+3840*2160
+*/
+CAPTURE_SIZE_3840_2160(49,"3840*2160"),
+/**
+
+*/
+CAPTURE_SIZE_NR(25,"");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+CAPTURE_SIZE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (CAPTURE_SIZE enumType : CAPTURE_SIZE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (CAPTURE_SIZE enumType : CAPTURE_SIZE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static CAPTURE_SIZE getEnum(int value) {
+        for (CAPTURE_SIZE e : CAPTURE_SIZE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return CAPTURE_SIZE.CAPTURE_SIZE_D1;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java
new file mode 100644
index 0000000..58d184e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_ACCESS_PROPERTY_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁单双向配置类型
+ * @date 2021/2/7
+ */
+public enum CFG_ACCESS_PROPERTY_TYPE {
+  /** 未知 */
+  CFG_ACCESS_PROPERTY_UNKNOWN(0, "未知"),
+  /** 双向门禁 */
+  CFG_ACCESS_PROPERTY_BIDIRECT(1, "双向门禁"),
+  /** 单向门禁 */
+  CFG_ACCESS_PROPERTY_UNIDIRECT(2, "单向门禁");
+  /** 枚举值 */
+  private int type;
+  /** 枚举对应的类型描述 */
+  private String desc;
+
+  CFG_ACCESS_PROPERTY_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_DEFOG_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_DEFOG_MODE.java
new file mode 100644
index 0000000..a0d0fdc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_DEFOG_MODE.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  透雾模式枚举 
+* @origin autoTool
+* @date 2023/11/30 15:50:58
+*/
+public enum CFG_DEFOG_MODE {
+	/**
+     * 未知方式
+     */
+	EM_DEFOG_MODE_UNKNOW(0,"未知方式"),
+	/**
+     * 关闭
+     */
+	EM_DEFOG_MODE_OFF(1,"关闭"),
+	/**
+     * 自动
+     */
+	EM_DEFOG_MODE_AUTO(2,"自动"),
+	/**
+     * 手动
+     */
+	EM_DEFOG_MODE_MANA(3,"手动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+CFG_DEFOG_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (CFG_DEFOG_MODE enumType : CFG_DEFOG_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (CFG_DEFOG_MODE enumType : CFG_DEFOG_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static CFG_DEFOG_MODE getEnum(int value) {
+        for (CFG_DEFOG_MODE e : CFG_DEFOG_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return CFG_DEFOG_MODE.EM_DEFOG_MODE_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java
new file mode 100644
index 0000000..19d339a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_ASG_VOICE_DIRECTION.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 闸机进出语音方向
+ * @date 2021/2/7
+ */
+public enum CFG_EM_ASG_VOICE_DIRECTION {
+  CFG_EM_ASG_VOICE_DIRECTION_UNKNOWN(0, "未知"),
+  CFG_EM_ASG_VOICE_DIRECTION_ENTER(1, "进入"),
+  CFG_EM_ASG_VOICE_DIRECTION_LEAVE(2, "离开");
+  private int direction;
+  private String desc;
+
+  CFG_EM_ASG_VOICE_DIRECTION(int direction, String desc) {
+    this.direction = direction;
+    this.desc = desc;
+  }
+
+  public static CFG_EM_ASG_VOICE_DIRECTION getVoiceDirection(int direction) {
+    for (CFG_EM_ASG_VOICE_DIRECTION voiceDirection : CFG_EM_ASG_VOICE_DIRECTION.values()) {
+      if (voiceDirection.direction == direction) {
+        return voiceDirection;
+      }
+    }
+    return CFG_EM_ASG_VOICE_DIRECTION_UNKNOWN;
+  }
+
+  public int getDirection() {
+    return direction;
+  }
+
+  public void setDirection(int direction) {
+    this.direction = direction;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java
new file mode 100644
index 0000000..1e2c0cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_BODY_TRAIT.java
@@ -0,0 +1,113 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 人体检测及人体识别支持的身体特征
+ * @date 2021/01/11
+ */
+public enum CFG_EM_BODY_TRAIT {
+	// 未知
+	CFG_EM_BODY_TRAIT_UNKNOWN(0, "未知"),
+
+	// 性别
+	CFG_EM_BODY_TRAIT_SEX(1, "性别"),
+
+	// 年龄组
+	CFG_EM_BODY_TRAIT_AGEGROUP(2, "年龄组"),
+
+	// 上衣
+	CFG_EM_BODY_TRAIT_COATTYPE(3, "上衣"),
+
+	// 裤子
+	CFG_EM_BODY_TRAIT_TROUSERSTYPE(4, "裤子"),
+
+	// 人体角度
+	CFG_EM_BODY_TRAIT_ANGLE(5, "人体角度"),
+
+	// 上衣模式
+	CFG_EM_BODY_TRAIT_UPPERPATTERN(6, "上衣模式"),
+
+	// 裤子颜色
+	CFG_EM_BODY_TRAIT_TROUSERSCOLOR(7, "裤子颜色"),
+
+	// 打伞
+	CFG_EM_BODY_TRAIT_UMBRELLA(8, "打伞"),
+
+	// 雨伞颜色
+	CFG_EM_BODY_TRAIT_UMBRELLACOLOR(9, "雨伞颜色"),
+
+	// 胸前报东西
+	CFG_EM_BODY_TRAIT_HOLD(10, "胸前报东西"),
+
+	// 裤子模式
+	CFG_EM_BODY_TRAIT_TROUSERSPATTERN(11, "裤子模式"),
+
+	// 帽子款式
+	CFG_EM_BODY_TRAIT_HATTYPE(12, "帽子款式"),
+
+	// 帽子颜色
+	CFG_EM_BODY_TRAIT_HATCOLOR(13, "帽子颜色"),
+
+	// 上衣款式
+	CFG_EM_BODY_TRAIT_UPPERTYPE(14, "上衣款式"),
+
+	// 上衣颜色
+	CFG_EM_BODY_TRAIT_COATCOLOR(15, "上衣颜色"),
+
+	// 发型
+	CFG_EM_BODY_TRAIT_HAIRSTYLE(16, "发型"),
+
+	// 头发颜色
+	CFG_EM_BODY_TRAIT_HAIRCOLOR(17, "头发颜色"),
+	
+	// 鞋子款式
+	CFG_EM_BODY_TRAIT_SHOESTYPE(18, "鞋子款式"),
+	
+	// 鞋子颜色
+	CFG_EM_BODY_TRAIT_SHOESCOLOR(19, "鞋子颜色"),
+	// 箱包款式
+	CFG_EM_BODY_TRAIT_BAG(20, "箱包款式"),
+	
+	// 箱包颜色
+	CFG_EM_BODY_TRAIT_BAGCOLOR(21, "箱包颜色"),
+	
+	// 口罩
+	CFG_EM_BODY_TRAIT_MASK(22, "口罩"),
+
+	// 口罩颜色
+	CFG_EM_BODY_TRAIT_MASKCOLOR(23, "口罩颜色");
+
+	private int value;
+	private String note;
+
+	private CFG_EM_BODY_TRAIT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_BODY_TRAIT enumType : CFG_EM_BODY_TRAIT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_BODY_TRAIT enumType : CFG_EM_BODY_TRAIT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java
new file mode 100644
index 0000000..05a50a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACEDETECT_TYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能类型
+ * @date 2021/01/11
+ */
+public enum CFG_EM_FACEDETECT_TYPE {
+	// 未知
+	CFG_EM_FACEDETECT_TYPE_UNKNOWN(0, "未知"),
+
+	// 可见光
+	CFG_EM_FACEDETECT_TYPE_VISUAL(1, "可见光"),
+
+	// 红外
+	CFG_EM_FACEDETECT_TYPE_THERMAL(2, "红外"),
+
+	// 按时间段切换
+	CFG_EM_FACEDETECT_TYPE_SWITCHBYTIME(3, "按时间段切换");
+
+	private int value;
+	private String note;
+
+	private CFG_EM_FACEDETECT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_FACEDETECT_TYPE enumType : CFG_EM_FACEDETECT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_FACEDETECT_TYPE enumType : CFG_EM_FACEDETECT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java
new file mode 100644
index 0000000..4dff190
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_SNAP_POLICY.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 人体检测及人体识别支持的脸部抓拍策略
+ * @date 2021/01/11
+ */
+public enum CFG_EM_FACE_SNAP_POLICY {
+	// 未知
+	CFG_EM_FACE_SNAP_POLICY_UNKNOWN(0, "未知"),
+
+	// 实时抓拍模式(当前的通用模式,实时性优先)
+	CFG_EM_FACE_SNAP_POLICY_REALTIME(1, "实时抓拍模式"),
+
+	// 优选抓拍模式,在设定的延时区间(OptimalTime)内挑选评分最高的抓图,准确性优先但延时较大
+	CFG_EM_FACE_SNAP_POLICY_OPTIMAL(2, "优选抓拍模式"),
+
+	// 质量抓拍模式,在Optimal的基础上,如果图片质量好于阈值提前结束优选,提高实时性
+	CFG_EM_FACE_SNAP_POLICY_QUALITY(3, "质量抓拍模式"),
+
+	// 识别优先抓拍模式,在优选时间内,以一定间隔帧数多次进行比对;一旦比对成功则立即结束优选,以提高对比成功率,取代质量优先模式
+	CFG_EM_FACE_SNAP_POLICY_RECOGNITION(4, "识别优先抓拍模式"),
+
+	// 快速优选,从检测到人脸/人体开始,抓拍一定帧数内的质量最好的人脸或人体,
+	CFG_EM_FACE_SNAP_POLICY_QUICK(5, "快速优选"),
+
+	// 全程优选,抓拍全程质量最好的人脸人体,
+	CFG_EM_FACE_SNAP_POLICY_FULLTRACK(6, "全程优选"),
+
+	// 间隔抓拍,
+	CFG_EM_FACE_SNAP_POLICY_INTERVAL(7, "间隔抓拍"),
+
+	// 单人模式,常用于门禁,
+	CFG_EM_FACE_SNAP_POLICY_SINGLE(8, "单人模式"),
+
+	// 高精度模式,增强目标识别,,增强目标识别,
+	CFG_EM_FACE_SNAP_POLICY_PRECISION(9, "高精度模式");
+
+	private int value;
+	private String note;
+
+	private CFG_EM_FACE_SNAP_POLICY(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_FACE_SNAP_POLICY enumType : CFG_EM_FACE_SNAP_POLICY.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_FACE_SNAP_POLICY enumType : CFG_EM_FACE_SNAP_POLICY.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java
new file mode 100644
index 0000000..c6fad65
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_FACE_TRAIT.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 人体检测及人体识别支持的脸部特征
+ * @date 2021/01/11
+ */
+public enum CFG_EM_FACE_TRAIT {
+	// 未知
+	CFG_EM_FACE_TRAIT_UNKNOWN(0, "未知"),
+
+	// 性别
+	CFG_EM_FACE_TRAIT_SEX(1, "性别"),
+
+	// 年龄
+	CFG_EM_FACE_TRAIT_AGE(2, "年龄"),
+
+	// 眼镜
+	CFG_EM_FACE_TRAIT_GLASSES(3, "眼镜"),
+
+    // 胡子
+	CFG_EM_FACE_TRAIT_BEARD(4, "胡子"),
+
+    // 口罩
+	CFG_EM_FACE_TRAIT_MASK(5, "口罩"),
+
+    // 表情
+	CFG_EM_FACE_TRAIT_EMOTION(6, "表情");
+
+	private int value;
+	private String note;
+
+	private CFG_EM_FACE_TRAIT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_FACE_TRAIT enumType : CFG_EM_FACE_TRAIT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_FACE_TRAIT enumType : CFG_EM_FACE_TRAIT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java
new file mode 100644
index 0000000..23886f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_INSTANCE_SUBCLASS_TYPE.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能分析实例类型
+ * @date 2021/01/11
+ */
+public enum CFG_EM_INSTANCE_SUBCLASS_TYPE {
+
+	// 本地实例
+	CFG_EM_INSTANCE_SUBCLASS_TYPE_LOCAL(0, "本地实例"),
+
+	// 远程实例
+	CFG_EM_INSTANCE_SUBCLASS_TYPE_REMOTE(1, "远程实例");
+
+	private int value;
+	private String note;
+
+	private CFG_EM_INSTANCE_SUBCLASS_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_INSTANCE_SUBCLASS_TYPE enumType : CFG_EM_INSTANCE_SUBCLASS_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_INSTANCE_SUBCLASS_TYPE enumType : CFG_EM_INSTANCE_SUBCLASS_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java
new file mode 100644
index 0000000..0ba3d4e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_PREVIEW_MODE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47040
+ * @since Created at 2021/5/25 22:29
+ */
+public enum CFG_EM_PREVIEW_MODE {
+    /**
+     * 未知
+     */
+    CFG_EM_PREVIEW_MODE_UNKNOWN(0, "未知"),
+    /**
+     * 快照方式
+     */
+    CFG_EM_PREVIEW_MODE_SNAPSHOT(1, "快照方式"),
+    /**
+     * 分割编码方式
+     */
+    CFG_EM_PREVIEW_MODE_SPLITENCODE(2, "分割编码方式"),
+    /**
+     * 分割快照方式
+     */
+    CFG_EM_PREVIEW_MODE_SPLITSNAP(3, "分割快照方式");
+
+    private final int value;
+    private final String note;
+
+    CFG_EM_PREVIEW_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (CFG_EM_PREVIEW_MODE enumType : CFG_EM_PREVIEW_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (CFG_EM_PREVIEW_MODE enumType : CFG_EM_PREVIEW_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static CFG_EM_PREVIEW_MODE getEnum(int value) {
+        for (CFG_EM_PREVIEW_MODE e : CFG_EM_PREVIEW_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return CFG_EM_PREVIEW_MODE.CFG_EM_PREVIEW_MODE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java
new file mode 100644
index 0000000..81ecf86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_STREAM_TYPES.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 码流类型
+ * @date 2022/07/20 14:11:30
+ */
+public enum CFG_EM_STREAM_TYPES {
+	/**
+	 * 其它
+	 */
+	CFG_EM_STREAMTYPE_ERR(0, "其它"),
+	/**
+	 * Main -主码流
+	 */
+	CFG_EM_STREAMTYPE_MAIN(1, "Main -主码流"),
+	/**
+	 * Extra1 -辅码流1
+	 */
+	CFG_EM_STREAMTYPE_EXTRA_1(2, "Extra1 -辅码流1"),
+	/**
+	 * Extra2 -辅码流2
+	 */
+	CFG_EM_STREAMTYPE_EXTRA_2(3, "Extra2 -辅码流2"),
+	/**
+	 * Extra3 -辅码流3
+	 */
+	CFG_EM_STREAMTYPE_EXTRA_3(4, "Extra3 -辅码流3"),
+	/**
+	 * Snapshot -抓图码流
+	 */
+	CFG_EM_STREAMTYPE_SNAPSHOT(5, "Snapshot -抓图码流"),
+	/**
+	 * Talkback -对讲码流
+	 */
+	CFG_EM_STREAMTYPE_TALKBACK(6, "Talkback -对讲码流");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	CFG_EM_STREAM_TYPES(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (CFG_EM_STREAM_TYPES enumType : CFG_EM_STREAM_TYPES.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (CFG_EM_STREAM_TYPES enumType : CFG_EM_STREAM_TYPES.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_VOICE_ID.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_VOICE_ID.java
new file mode 100644
index 0000000..6a58c1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_EM_VOICE_ID.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 语音ID
+ * @date 2021/2/7
+ */
+public enum CFG_EM_VOICE_ID {
+  /** 未知 */
+  CFG_EM_VOICE_ID_UNKNOWN(-1, "未知"),
+  /** 验证成功(默认) */
+  CFG_EM_VOICE_ID_VERIFY_SUCCESS(0, "验证成功(默认)"),
+  /** 开门成功 */
+  CFG_EM_VOICE_ID_OPENDOOR_SUCCESS(1, "开门成功"),
+  /** 开锁成功 */
+  CFG_EM_VOICE_ID_UNLOCK_SUCCESS(2, "开锁成功"),
+  /** 刷卡成功 */
+  CFG_EM_VOICE_ID_SWIPECARD_SUCCESS(3, "刷卡成功"),
+  /** 欢迎光临 */
+  CFG_EM_VOICE_ID_WELCOME(4, "欢迎光临"),
+  /** 欢迎再次光临 */
+  CFG_EM_VOICE_ID_WELCOME_BACK(5, "欢迎再次光临"),
+  /** 谢谢 */
+  CFG_EM_VOICE_ID_THANKS(6, "谢谢"),
+  /** 自定义 */
+  CFG_EM_VOICE_ID_CUSTOMIZED_VOICE(7, "自定义"),
+  /** 无声音 */
+  CFG_EM_VOICE_ID_NO_VOICE(8, "无声音"),
+  /** 欢迎回家 */
+  CFG_EM_VOICE_ID_WELCOME_HOME(9, "欢迎回家"),
+  /** 一路顺风 */
+  CFG_EM_VOICE_ID_GOOD_JOURNEY(10, "一路顺风"),
+  /** 欢迎下次光临 */
+  CFG_EM_VOICE_ID_WELCOME_BACK_NEXT(11, "欢迎下次光临"),
+  /** 谢谢惠顾 */
+  CFG_EM_VOICE_ID_THANKS_FOR_PATRONAGE(12, "谢谢惠顾");
+  private int id;
+  private String desc;
+
+  CFG_EM_VOICE_ID(int id, String desc) {
+    this.id = id;
+    this.desc = desc;
+  }
+
+  public static CFG_EM_VOICE_ID getVoiceID(int id) {
+    for (CFG_EM_VOICE_ID voiceID : CFG_EM_VOICE_ID.values()) {
+      if (voiceID.id == id) {
+        return voiceID;
+      }
+    }
+    return CFG_EM_VOICE_ID_UNKNOWN;
+  }
+
+  public int getId() {
+    return id;
+  }
+
+  public void setId(int id) {
+    this.id = id;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_LIGHT_INTENSITY_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_LIGHT_INTENSITY_MODE.java
new file mode 100644
index 0000000..38429c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_LIGHT_INTENSITY_MODE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  大气光模式枚举 
+* @origin autoTool
+* @date 2023/11/30 15:50:59
+*/
+public enum CFG_LIGHT_INTENSITY_MODE {
+	/**
+     * 未知方式
+     */
+	EM_LIGHT_INTENSITY_MODE_UNKNOW(0,"未知方式"),
+	/**
+     * 自动
+     */
+	EM_LIGHT_INTENSITY_MODE_AUTO(1,"自动"),
+	/**
+     * 手动
+     */
+	EM_LIGHT_INTENSITY_MODE_MANUL(2,"手动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+CFG_LIGHT_INTENSITY_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (CFG_LIGHT_INTENSITY_MODE enumType : CFG_LIGHT_INTENSITY_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (CFG_LIGHT_INTENSITY_MODE enumType : CFG_LIGHT_INTENSITY_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static CFG_LIGHT_INTENSITY_MODE getEnum(int value) {
+        for (CFG_LIGHT_INTENSITY_MODE e : CFG_LIGHT_INTENSITY_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return CFG_LIGHT_INTENSITY_MODE.EM_LIGHT_INTENSITY_MODE_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java
new file mode 100644
index 0000000..ea11e54
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_PTZ_FUNC_TYPE.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @创建人 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public enum CFG_PTZ_FUNC_TYPE {
+    /**
+     * 巡航
+     */
+    FUNC_TYPE_TOUR (0,"巡航") ,
+    /**
+     * 自动巡迹
+     */
+    FUNC_TYPE_PATTERN (1,"自动巡迹") ,
+    /**
+     * 预置点
+     */
+    FUNC_TYPE_PRE(2,"预置点")	   ,
+
+    FUNC_TYPE_SCAN(3,"自动线扫"),
+
+    FUNC_TYPE_MAX(4,"最大值");
+
+   private int id;
+    private String desc;
+
+    CFG_PTZ_FUNC_TYPE(int id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+    public int getId() {
+        return id;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static String getDescById(int id) {
+        for (CFG_PTZ_FUNC_TYPE enumType : CFG_PTZ_FUNC_TYPE.values()) {
+            if (id == enumType.getId()) {
+                return enumType.desc;
+            }
+        }
+        return null;
+    }
+
+    public static int getIdByValue(String desc) {
+        for (CFG_PTZ_FUNC_TYPE enumType : CFG_PTZ_FUNC_TYPE.values()) {
+            if (desc.equals(enumType.getDesc())) {
+                return enumType.getId();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java
new file mode 100644
index 0000000..99234c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/CFG_VIDEO_COMPRESSION.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47040
+ * @since Created at 2021/5/26 20:44
+ */
+public enum CFG_VIDEO_COMPRESSION {
+
+    VIDEO_FORMAT_MPEG4(0, "MPEG4"),
+    VIDEO_FORMAT_MS_MPEG4(1, "MS-MPEG4"),
+    VIDEO_FORMAT_MPEG2(2, "MPEG2"),
+    VIDEO_FORMAT_MPEG1(3, "MPEG1"),
+    VIDEO_FORMAT_H263(4, "H.263"),
+    VIDEO_FORMAT_MJPG(5, "MJPG"),
+    VIDEO_FORMAT_FCC_MPEG4(6, "FCC-MPEG4"),
+    VIDEO_FORMAT_H264(7, "H.264"),
+    VIDEO_FORMAT_H265(8, "H.265"),
+    VIDEO_FORMAT_SVAC(9, "SVAC");
+
+    private final int value;
+    private final String note;
+
+    CFG_VIDEO_COMPRESSION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (CFG_VIDEO_COMPRESSION enumType : CFG_VIDEO_COMPRESSION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (CFG_VIDEO_COMPRESSION enumType : CFG_VIDEO_COMPRESSION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static CFG_VIDEO_COMPRESSION getEnum(int value) {
+        for (CFG_VIDEO_COMPRESSION e : CFG_VIDEO_COMPRESSION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return CFG_VIDEO_COMPRESSION.VIDEO_FORMAT_H264;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java
new file mode 100644
index 0000000..0e47cce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/DH_LOG_QUERY_TYPE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 日志查询类型
+ *
+ * @author 47081
+ */
+public enum DH_LOG_QUERY_TYPE {
+    /**
+     * 所有日志
+     */
+    DHLOG_ALL,
+    /**
+     * 系统日志
+     */
+    DHLOG_SYSTEM,
+    /**
+     * 配置日志
+     */
+    DHLOG_CONFIG,
+    /**
+     * 存储相关
+     */
+    DHLOG_STORAGE,
+    /**
+     * 报警日志
+     */
+    DHLOG_ALARM,
+    /**
+     * 录象相关
+     */
+    DHLOG_RECORD,
+    /**
+     * 帐号相关
+     */
+    DHLOG_ACCOUNT,
+    /**
+     * 清除日志
+     */
+    DHLOG_CLEAR,
+    /**
+     * 回放相关
+     */
+    DHLOG_PLAYBACK,
+    /**
+     * 前端管理运行相关
+     */
+    DHLOG_MANAGER
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EMDeviceType.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EMDeviceType.java
new file mode 100644
index 0000000..9a75d87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EMDeviceType.java
@@ -0,0 +1,295 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 设备类型
+ * @date 2020/9/12
+ */
+public enum EMDeviceType {
+    /**
+     * none
+     */
+    NET_PRODUCT_NONE(0, "未知"),
+    /**
+     * 非实时MACE
+     */
+    NET_DVR_NONREALTIME_MACE(1, "非实时MACE"),
+    /**
+     * 非实时
+     */
+    NET_DVR_NONREALTIME(2, "非实时"),
+    /**
+     * 网络视频服务器
+     */
+    NET_NVS_MPEG1(3, "网络视频服务器"),
+    /**
+     * MPEG1二路录像机
+     */
+    NET_DVR_MPEG1_2(4, "MPEG1二路录像机"),
+    /**
+     * MPEG1八路录像机
+     */
+    NET_DVR_MPEG1_8(5, "MPEG1八路录像机"),
+    /**
+     * MPEG4八路录像机
+     */
+    NET_DVR_MPEG4_8(6, "MPEG4八路录像机"),
+    /**
+     * MPEG4十六路录像机
+     */
+    NET_DVR_MPEG4_16(7, "MPEG4十六路录像机"),
+    /**
+     * LB系列录像机
+     */
+    NET_DVR_MPEG4_SX2(8, "LB系列录像机"),
+    /**
+     * GB系列录像机
+     */
+    NET_DVR_MEPG4_ST2(9, "GB系列录像机"),
+    /**
+     * HB系列录像机
+     */
+    NET_DVR_MEPG4_SH2(10, "HB系列录像机"),
+    /**
+     * GBE系列录像机
+     */
+    NET_DVR_MPEG4_GBE(11, "GBE系列录像机"),
+    /**
+     * II代网络视频服务器
+     */
+    NET_DVR_MPEG4_NVSII(12, "II代网络视频服务器"),
+    /**
+     * 新标准配置协议
+     */
+    NET_DVR_STD_NEW(13, "新标准配置协议"),
+    /**
+     * DDNS服务器
+     */
+    NET_DVR_DDNS(14, "DDNS服务器"),
+    /**
+     * ATM机
+     */
+    NET_DVR_ATM(15, "ATM机"),
+    /**
+     * 二代非实时NB系列机器
+     */
+    NET_NB_SERIAL(16, "二代非实时NB系列机器"),
+    /**
+     * LN系列产品
+     */
+    NET_LN_SERIAL(17, "LN系列产品"),
+    /**
+     * BAV系列产品
+     */
+    NET_BAV_SERIAL(18, "BAV系列产品"),
+    /**
+     * SDIP系列产品
+     */
+    NET_SDIP_SERIAL(19, "SDIP系列产品"),
+    /**
+     * IPC系列产品
+     */
+    NET_IPC_SERIAL(20, "IPC系列产品"),
+    /**
+     * NVS B系列
+     */
+    NET_NVS_B(21, "NVS B系列"),
+    /**
+     * NVS H系列
+     */
+    NET_NVS_C(22, "NVS H系列"),
+    /**
+     * NVS S系列
+     */
+    NET_NVS_S(23, "NVS S系列"),
+    /**
+     * NVS E系列
+     */
+    NET_NVS_E(24, "NVS E系列"),
+    /**
+     * 从QueryDevState中查询设备类型,以字符串格式
+     */
+    NET_DVR_NEW_PROTOCOL(25, "从QueryDevState中查询设备类型,以字符串格式"),
+    /**
+     * 解码器
+     */
+    NET_NVD_SERIAL(26, "解码器"),
+    /**
+     * N5
+     */
+    NET_DVR_N5(27, "N5"),
+    /**
+     * 混合DVR
+     */
+    NET_DVR_MIX_DVR(28, "混合DVR"),
+    /**
+     * SVR系列
+     */
+    NET_SVR_SERIAL(29, "SVR系列"),
+    /**
+     * SVR-BS
+     */
+    NET_SVR_BS(30, "SVR-BS"),
+    /**
+     * NVR系列
+     */
+    NET_NVR_SERIAL(31, "NVR系列"),
+    /**
+     * N51
+     */
+    NET_DVR_N51(32, "N51"),
+    /**
+     * ITSE 智能分析盒
+     */
+    NET_ITSE_SERIAL(33, "ITSE 智能分析盒"),
+    /**
+     * 智能交通像机设备
+     */
+    NET_ITC_SERIAL(34, "智能交通像机设备"),
+    /**
+     * 雷达测速仪HWS
+     */
+    NET_HWS_SERIAL(35, "雷达测速仪HWS"),
+    /**
+     * 便携式音视频录像机
+     */
+    NET_PVR_SERIAL(36, "便携式音视频录像机"),
+    /**
+     * IVS(智能视频服务器系列)
+     */
+    NET_IVS_SERIAL(37, "IVS(智能视频服务器系列)"),
+    /**
+     * 通用智能视频侦测服务器
+     */
+    NET_IVS_B(38, "通用智能视频侦测服务器"),
+    /**
+     * 目标识别服务器
+     */
+    NET_IVS_F(39, "目标识别服务器"),
+    /**
+     * 视频质量诊断服务器
+     */
+    NET_IVS_V(40, "视频质量诊断服务器"),
+    /**
+     * 矩阵
+     */
+    NET_MATRIX_SERIAL(41, "矩阵"),
+    /**
+     * N52
+     */
+    NET_DVR_N52(42, "N52"),
+    /**
+     * N56
+     */
+    NET_DVR_N56(43, "N56"),
+    /**
+     * ESS
+     */
+    NET_ESS_SERIAL(44, "ESS"),
+    /**
+     * 人数统计服务器
+     */
+    NET_IVS_PC(45, "人数统计服务器"),
+    /**
+     * pc-nvr
+     */
+    NET_PC_NVR(46, "pc-nvr"),
+    /**
+     * 大屏控制器
+     */
+    NET_DSCON(47, "大屏控制器"),
+    /**
+     * 网络视频存储服务器
+     */
+    NET_EVS(48, "网络视频存储服务器"),
+    /**
+     * 嵌入式智能分析视频系统
+     */
+    NET_EIVS(49, "嵌入式智能分析视频系统"),
+    /**
+     * DVR-N6
+     */
+    NET_DVR_N6(50, "DVR-N6"),
+    /**
+     * 万能解码器
+     */
+    NET_UDS(51, "万能解码器"),
+    /**
+     * 银行报警主机
+     */
+    NET_AF6016(52, "银行报警主机"),
+    /**
+     * 视频网络报警主机
+     */
+    NET_AS5008(53, "视频网络报警主机"),
+    /**
+     * 网络报警主机
+     */
+    NET_AH2008(54, "网络报警主机"),
+    /**
+     * 报警主机系列
+     */
+    NET_A_SERIAL(55, "报警主机系列"),
+    /**
+     * 门禁系列产品
+     */
+    NET_BSC_SERIAL(56, "门禁系列产品"),
+    /**
+     * NVS系列产品
+     */
+    NET_NVS_SERIAL(57, "NVS系列产品"),
+    /**
+     * VTO系列产品
+     */
+    NET_VTO_SERIAL(58, "VTO系列产品"),
+    /**
+     * VTNC系列产品
+     */
+    NET_VTNC_SERIAL(59, "VTNC系列产品"),
+    /**
+     * TPC系列产品(热成像设备)
+     */
+    NET_TPC_SERIAL(60, "TPC系列产品(热成像设备)"),
+    /**
+     * 无线中继设备
+     */
+    NET_ASM_SERIAL(61, "无线中继设备"),
+    /**
+     * 管理机
+     */
+    NET_VTS_SERIAL(62, "管理机");
+
+    private EMDeviceType(int type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    private int type;
+    private String desc;
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public static EMDeviceType getEMDeviceType(int type) {
+        for (EMDeviceType deviceType : EMDeviceType.values()) {
+            if (deviceType.getType() == type) {
+                return deviceType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java
new file mode 100644
index 0000000..8755bd0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABNORMAL_OBJECT_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 目标类型
+ * @date 2022/12/19 11:30:59
+ */
+public enum EM_ABNORMAL_OBJECT_TYPE {
+	/**
+	 * 未知
+	 */
+	ABNORMAL_OBJECT_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 猪
+	 */
+	ABNORMAL_OBJECT_TYPE_PIG(1, "猪");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ABNORMAL_OBJECT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ABNORMAL_OBJECT_TYPE enumType : EM_ABNORMAL_OBJECT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ABNORMAL_OBJECT_TYPE enumType : EM_ABNORMAL_OBJECT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABSTRACT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABSTRACT_STATE.java
new file mode 100644
index 0000000..563d539
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ABSTRACT_STATE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 计算特征向量结果
+ * @origin autoTool
+ * @date 2023/06/28 14:07:32
+ */
+public enum EM_ABSTRACT_STATE {
+	/**
+     * 未知
+     */
+	EM_ABSTRACT_UNKNOWN(0,"未知"),
+	/**
+     * 重建成功
+     */
+	EM_ABSTRACT_SUCCESS(1,"重建成功"),
+	/**
+     * 重建失败
+     */
+	EM_ABSTRACT_FALSE(2,"重建失败"),
+	/**
+     * 重建过程中(仅针对GroupID)
+     */
+	EM_ABSTRACT_PROCESS(3,"重建过程中(仅针对GroupID)");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ABSTRACT_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ABSTRACT_STATE enumType : EM_ABSTRACT_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ABSTRACT_STATE enumType : EM_ABSTRACT_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_ABSTRACT_STATE getEnum(int value) {
+		for (EM_ABSTRACT_STATE e : EM_ABSTRACT_STATE.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_ABSTRACT_STATE.EM_ABSTRACT_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java
new file mode 100644
index 0000000..be56e92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_ALARM_TYPE.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  报警类型 
+* @date 2022/08/31 14:44:15
+*/
+public enum EM_ACCESSORY_ALARM_TYPE {
+/**
+未知
+*/
+EM_ACCESSORY_ALARM_UNKNOWN(-1,"未知"),
+/**
+入侵
+*/
+EM_ACCESSORY_ALARM_INTRUSION(0,"入侵"),
+/**
+火警
+*/
+EM_ACCESSORY_ALARM_FIRE(1,"火警"),
+/**
+医疗
+*/
+EM_ACCESSORY_ALARM_MEDICAL(2,"医疗"),
+/**
+紧急
+*/
+EM_ACCESSORY_ALARM_PANIC(3,"紧急"),
+/**
+燃气
+*/
+EM_ACCESSORY_ALARM_GAS(4,"燃气"),
+/**
+双按钮紧急按钮报警类型
+*/
+EM_ACCESSORY_ALARM_HOLDUP(5,"双按钮紧急按钮报警类型");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ACCESSORY_ALARM_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ACCESSORY_ALARM_TYPE enumType : EM_ACCESSORY_ALARM_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ACCESSORY_ALARM_TYPE enumType : EM_ACCESSORY_ALARM_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_ACCESSORY_ALARM_TYPE getEnum(int value) {
+        for (EM_ACCESSORY_ALARM_TYPE e : EM_ACCESSORY_ALARM_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ACCESSORY_ALARM_TYPE.EM_ACCESSORY_ALARM_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java
new file mode 100644
index 0000000..2b97439
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_INPUT_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  输入类型 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_ACCESSORY_INPUT_TYPE {
+/**
+未知
+*/
+EM_ACCESSORY_INPUT_UNKNOWN(-1,"未知"),
+/**
+防拆
+*/
+EM_ACCESSORY_INPUT_TAMPER(0,"防拆"),
+/**
+报警输入
+*/
+EM_ACCESSORY_INPUT_SENSOR(1,"报警输入");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ACCESSORY_INPUT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ACCESSORY_INPUT_TYPE enumType : EM_ACCESSORY_INPUT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ACCESSORY_INPUT_TYPE enumType : EM_ACCESSORY_INPUT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_ACCESSORY_INPUT_TYPE getEnum(int value) {
+        for (EM_ACCESSORY_INPUT_TYPE e : EM_ACCESSORY_INPUT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ACCESSORY_INPUT_TYPE.EM_ACCESSORY_INPUT_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java
new file mode 100644
index 0000000..873026c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_SENSITIVITY.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  灵敏度 
+* @date 2022/08/31 14:44:15
+*/
+public enum EM_ACCESSORY_SENSITIVITY {
+/**
+未知
+*/
+EM_ACCESSORY_SENSITIVITY_UNKNOWN(0,"未知"),
+/**
+低灵敏度
+*/
+EM_ACCESSORY_SENSITIVITY_LOW(1,"低灵敏度"),
+/**
+中灵敏度
+*/
+EM_ACCESSORY_SENSITIVITY_MEDIUM(2,"中灵敏度"),
+/**
+高灵敏度
+*/
+EM_ACCESSORY_SENSITIVITY_HIGH(3,"高灵敏度");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ACCESSORY_SENSITIVITY(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ACCESSORY_SENSITIVITY enumType : EM_ACCESSORY_SENSITIVITY.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ACCESSORY_SENSITIVITY enumType : EM_ACCESSORY_SENSITIVITY.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ACCESSORY_SENSITIVITY getEnum(int value) {
+        for (EM_ACCESSORY_SENSITIVITY e : EM_ACCESSORY_SENSITIVITY.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ACCESSORY_SENSITIVITY.EM_ACCESSORY_SENSITIVITY_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java
new file mode 100644
index 0000000..b0a99e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESSORY_VOLUME.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  设备布撤防时音量 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_ACCESSORY_VOLUME {
+/**
+未知
+*/
+EM_ACCESSORY_VOLUME_UNKNOWN(0,"未知"),
+/**
+低音量
+*/
+EM_ACCESSORY_VOLUME_LOW(1,"低音量"),
+/**
+中音量
+*/
+EM_ACCESSORY_VOLUME_MEDIUM(2,"中音量"),
+/**
+高音量
+*/
+EM_ACCESSORY_VOLUME_HIGH(3,"高音量");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ACCESSORY_VOLUME(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ACCESSORY_VOLUME enumType : EM_ACCESSORY_VOLUME.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ACCESSORY_VOLUME enumType : EM_ACCESSORY_VOLUME.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ACCESSORY_VOLUME getEnum(int value) {
+        for (EM_ACCESSORY_VOLUME e : EM_ACCESSORY_VOLUME.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ACCESSORY_VOLUME.EM_ACCESSORY_VOLUME_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java
new file mode 100644
index 0000000..1c41349
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACCESS_SENSOR_TYPE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 门磁类型
+ * @date 2021/01/11
+ */
+public enum EM_ACCESS_SENSOR_TYPE {
+	// 未知
+	EM_ACCESS_SENSOR_TYPE_UNKNOWN(-1, "未知"),
+
+	// 常开
+	EM_ACCESS_SENSOR_TYPE_NO(0, "常开"),
+
+	// 常闭
+	EM_ACCESS_SENSOR_TYPE_NC(1, "常闭");
+
+	private int value;
+	private String note;
+
+	private EM_ACCESS_SENSOR_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ACCESS_SENSOR_TYPE enumType : EM_ACCESS_SENSOR_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ACCESS_SENSOR_TYPE enumType : EM_ACCESS_SENSOR_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACROSS_PARKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACROSS_PARKING.java
new file mode 100644
index 0000000..f1de3bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACROSS_PARKING.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 是否跨位
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:40
+ */
+public enum EM_ACROSS_PARKING {
+    /**
+     * 未知
+     */
+    EM_ACROSS_PARKING_UNKNOWN(0, "未知"),
+    /**
+     * 未跨位
+     */
+    EM_ACROSS_PARKING_NO(1, "未跨位"),
+    /**
+     * 跨位
+     */
+    EM_ACROSS_PARKING_YES(2, "跨位");
+
+    private int value;
+    private String note;
+
+    EM_ACROSS_PARKING(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_ACROSS_PARKING enumType : EM_ACROSS_PARKING.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_ACROSS_PARKING enumType : EM_ACROSS_PARKING.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_ACROSS_PARKING getEnum(int value) {
+        for (EM_ACROSS_PARKING e : EM_ACROSS_PARKING.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ACROSS_PARKING.EM_ACROSS_PARKING_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACTION.java
new file mode 100644
index 0000000..d6bbd63
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ACTION.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 物体动作支持类型
+ * @date 2022/06/16 11:14:19
+ */
+public enum EM_ACTION {
+	/**
+	 * 未知类型
+	 */
+	EM_ACTION_UNKNOWN(0, "未知类型"),
+	/**
+	 * 第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体
+	 */
+	EM_ACTION_APPEAR(1, "第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体"),
+	/**
+	 * 正在运动,物体被正常跟踪
+	 */
+	EM_ACTION_MOVE(2, "正在运动,物体被正常跟踪"),
+	/**
+	 * 物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中
+	 */
+	EM_ACTION_STAY(3, "物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中"),
+	/**
+	 * 物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用
+	 */
+	EM_ACTION_REMOVE(4, "物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用"),
+	/**
+	 * 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现
+	 */
+	EM_ACTION_DISAPPEAR(5, "运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现"),
+	/**
+	 * 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离
+	 */
+	EM_ACTION_SPLIT(6, "从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离"),
+	/**
+	 * 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体
+	 */
+	EM_ACTION_MERGE(7, "合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体"),
+	/**
+	 * 如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID。
+	 */
+	EM_ACTION_RENAME(8, "如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID。");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ACTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ACTION enumType : EM_ACTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ACTION enumType : EM_ACTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java
new file mode 100644
index 0000000..0d357f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AC_UNLOCK_MODE.java
@@ -0,0 +1,239 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  开锁模式 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public enum EM_AC_UNLOCK_MODE {
+/**
+未知
+*/
+EM_AC_UNLOCK_MODE_UNKNOWN(0,"未知"),
+/**
+只允许密码开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_ONLY(1,"只允许密码开锁"),
+/**
+只允许刷卡开锁
+*/
+EM_AC_UNLOCK_MODE_CARD(2,"只允许刷卡开锁"),
+/**
+密码或刷卡开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_OR_CARD(3,"密码或刷卡开锁"),
+/**
+先刷卡后密码开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_FIRST(4,"先刷卡后密码开锁"),
+/**
+先密码后刷卡开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_FIRST(5,"先密码后刷卡开锁"),
+/**
+分时段开门
+*/
+EM_AC_UNLOCK_MODE_SECTION(6,"分时段开门"),
+/**
+仅信息开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINTONLY(7,"仅信息开锁"),
+/**
+密码或刷卡或信息开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_OR_CARD_OR_FINGERPRINT(8,"密码或刷卡或信息开锁"),
+/**
+密码+刷卡+信息组合开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_AND_CARD_AND_FINGERPINT(9,"密码+刷卡+信息组合开锁"),
+/**
+密码+信息组合开锁
+*/
+EM_AC_UNLOCK_MODE_PWD_AND_FINGERPRINT(10,"密码+信息组合开锁"),
+/**
+刷卡+信息开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FINGERPRINT(11,"刷卡+信息开锁"),
+/**
+多人开锁
+*/
+EM_AC_UNLOCK_MODE_MULTI_PERSON(12,"多人开锁"),
+/**
+人证对比
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD(13,"人证对比"),
+/**
+证件+ 人证比对
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD_AND_IDCARD(14,"证件+ 人证比对"),
+/**
+人证比对或刷卡或信息
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD_OR_CARD_OR_FINGER(15,"人证比对或刷卡或信息"),
+/**
+(证件+认证比对)或刷卡或信息
+*/
+EM_AC_UNLOCK_MODE_FACEIPCARDANDIDCARD_OR_CARD_OR_FINGER(16,"(证件+认证比对)或刷卡或信息"),
+/**
+UserID+密码
+*/
+EM_AC_UNLOCK_MODE_USERID_AND_PWD(17,"UserID+密码"),
+/**
+只允许目标开锁
+*/
+EM_AC_UNLOCK_MODE_FACE_ONLY(18,"只允许目标开锁"),
+/**
+目标+密码开锁
+*/
+EM_AC_UNLOCK_MODE_FACE_AND_PWD(19,"目标+密码开锁"),
+/**
+信息+密码开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_AND_PWD(20,"信息+密码开锁"),
+/**
+信息+目标开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_AND_FACE(21,"信息+目标开锁"),
+/**
+刷卡+目标开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FACE(22,"刷卡+目标开锁"),
+/**
+目标或密码开锁
+*/
+EM_AC_UNLOCK_MODE_FACE_OR_PWD(23,"目标或密码开锁"),
+/**
+信息或密码开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_OR_PWD(24,"信息或密码开锁"),
+/**
+信息或目标开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_OR_FACE(25,"信息或目标开锁"),
+/**
+刷卡或目标开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_OR_FACE(26,"刷卡或目标开锁"),
+/**
+刷卡或信息开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_OR_FINGERPRINT(27,"刷卡或信息开锁"),
+/**
+信息+目标+密码开锁
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_AND_FACE_AND_PWD(28,"信息+目标+密码开锁"),
+/**
+刷卡+目标+密码开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FACE_AND_PWD(29,"刷卡+目标+密码开锁"),
+/**
+刷卡+信息+密码开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FINGERPRINT_AND_PWD(30,"刷卡+信息+密码开锁"),
+/**
+卡+信息+目标组合开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FINGERPRINT_AND_FACE(31,"卡+信息+目标组合开锁"),
+/**
+信息或目标或密码
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT_OR_FACE_OR_PWD(32,"信息或目标或密码"),
+/**
+卡或目标或密码开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_OR_FACE_OR_PWD(33,"卡或目标或密码开锁"),
+/**
+卡或信息或目标开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_OR_FINGERPRINT_OR_FACE(34,"卡或信息或目标开锁"),
+/**
+卡+信息+目标+密码组合开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD(35,"卡+信息+目标+密码组合开锁"),
+/**
+卡或信息或目标或密码开锁
+*/
+EM_AC_UNLOCK_MODE_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD(36,"卡或信息或目标或密码开锁"),
+/**
+(证件+人证比对)或 刷卡 或 目标
+*/
+EM_AC_UNLOCK_MODE_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE(37,"(证件+人证比对)或 刷卡 或 目标"),
+/**
+人证比对 或 刷卡(二维码) 或 目标
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD_OR_CARD_OR_FACE(38,"人证比对 或 刷卡(二维码) 或 目标"),
+/**
+(卡+密码)或(信息+密码)默认为2
+*/
+EM_AC_UNLOCK_MODE_CARDANDPWD_OR_FINGERPRINTANDPWD(39,"(卡+密码)或(信息+密码)默认为2"),
+/**
+人证(照片)或目标
+*/
+EM_AC_UNLOCK_MODE_PHOTO_OR_FACE(40,"人证(照片)或目标"),
+/**
+人证(信息)
+*/
+EM_AC_UNLOCK_MODE_FINGERPRINT(41,"人证(信息)"),
+/**
+人证(照片+信息)
+*/
+EM_AC_UNLOCK_MODE_PHOTO_AND_FINGERPRINT(42,"人证(照片+信息)"),
+/**
+人证或刷卡或信息或目标或密码
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_PASSWORD(43,"人证或刷卡或信息或目标或密码"),
+/**
+多用户类型
+*/
+EM_AC_UNLOCK_MODE_MULTI_USER_TYPE(44,"多用户类型"),
+/**
+人证或健康码
+*/
+EM_AC_UNLOCK_MODE_FACEIDCARD_OR_HEALTHCODE(45,"人证或健康码");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_AC_UNLOCK_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_AC_UNLOCK_MODE enumType : EM_AC_UNLOCK_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_AC_UNLOCK_MODE enumType : EM_AC_UNLOCK_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_AC_UNLOCK_MODE getEnum(int value) {
+        for (EM_AC_UNLOCK_MODE e : EM_AC_UNLOCK_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_AC_UNLOCK_MODE.EM_AC_UNLOCK_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java
new file mode 100644
index 0000000..48a40fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AGE_GROUP_TYPE.java
@@ -0,0 +1,8 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_AGE_GROUP_TYPE {
+    EM_AGE_GROUP_UNKNOWN,							// 未知
+    EM_AGE_GROUP_OLD,								// 老人
+    EM_AGE_GROUP_ADULT,								// 成年人
+    EM_AGE_GROUP_CHILD,								// 小孩
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AIRBORNE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AIRBORNE_TYPE.java
new file mode 100644
index 0000000..11efbcd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AIRBORNE_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  挂空悬浮物具体类型 
+* @date 2022/06/28 19:44:54
+*/
+public enum EM_AIRBORNE_TYPE {
+/**
+未知
+*/
+EM_AIRBORNE_TYPE_UNKNOWN(0,"未知"),
+/**
+塑料袋
+*/
+EM_AIRBORNE_TYPE_PLASTICBAG(1,"塑料袋"),
+/**
+织物
+*/
+EM_AIRBORNE_TYPE_TEXTILE(2,"织物"),
+/**
+风筝
+*/
+EM_AIRBORNE_TYPE_KITE(3,"风筝");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_AIRBORNE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_AIRBORNE_TYPE enumType : EM_AIRBORNE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_AIRBORNE_TYPE enumType : EM_AIRBORNE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_AIRBORNE_TYPE getEnum(int value) {
+        for (EM_AIRBORNE_TYPE e : EM_AIRBORNE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_AIRBORNE_TYPE.EM_AIRBORNE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARMOUT_POLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARMOUT_POLE.java
new file mode 100644
index 0000000..23ed5b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARMOUT_POLE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 输出有效模式
+ * @date 2021/2/22
+ */
+public enum EM_ALARMOUT_POLE {
+  /** 未知 */
+  EM_ALARMOUT_POLE_UNKNOWN,
+  /** 低电平有效 */
+  EM_ALARMOUT_POLE_LOW,
+  /** 高电平有效 */
+  EM_ALARMOUT_POLE_HIGH;
+
+  public static EM_ALARMOUT_POLE getAlarmOutPole(int pole) {
+    for (EM_ALARMOUT_POLE alarmOutPole : EM_ALARMOUT_POLE.values()) {
+      if (alarmOutPole.ordinal() == pole) {
+        return alarmOutPole;
+      }
+    }
+    return EM_ALARMOUT_POLE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java
new file mode 100644
index 0000000..d9b88d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_FUNCTION.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 功能
+ * @date 2023/03/16 09:04:49
+ */
+public enum EM_ALARM_ONECLICKARMING_FUNCTION {
+	/**
+	 * 未知
+	 */
+	EM_ALARM_ONECLICKARMING_FUNCTION_UNKNOWN(0, "未知"),
+	/**
+	 * 开关
+	 */
+	EM_ALARM_ONECLICKARMING_FUNCTION_ONOFF(1, "开关"),
+	/**
+	 * 只开
+	 */
+	EM_ALARM_ONECLICKARMING_FUNCTION_ONONLY(2, "只开"),
+	/**
+	 * 只关
+	 */
+	EM_ALARM_ONECLICKARMING_FUNCTION_OFFONLY(3, "只关");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ALARM_ONECLICKARMING_FUNCTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ALARM_ONECLICKARMING_FUNCTION enumType : EM_ALARM_ONECLICKARMING_FUNCTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ALARM_ONECLICKARMING_FUNCTION enumType : EM_ALARM_ONECLICKARMING_FUNCTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java
new file mode 100644
index 0000000..4b01488
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_ONECLICKARMING_TRIGGEROPTION.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 触发类型
+ * @date 2023/03/16 09:04:49
+ */
+public enum EM_ALARM_ONECLICKARMING_TRIGGEROPTION {
+	/**
+	 * 未知
+	 */
+	EM_ALARM_ONECLICKARMING_TRIGGEROPTION_UNKNOWN(0, "未知"),
+	/**
+	 * 脉冲
+	 */
+	EM_ALARM_ONECLICKARMING_TRIGGEROPTION_IMPULSE(1, "脉冲"),
+	/**
+	 * 双稳定
+	 */
+	EM_ALARM_ONECLICKARMING_TRIGGEROPTION_BISTABLE(2, "双稳定");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ALARM_ONECLICKARMING_TRIGGEROPTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ALARM_ONECLICKARMING_TRIGGEROPTION enumType : EM_ALARM_ONECLICKARMING_TRIGGEROPTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ALARM_ONECLICKARMING_TRIGGEROPTION enumType : EM_ALARM_ONECLICKARMING_TRIGGEROPTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java
new file mode 100644
index 0000000..e81a7c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USERAUTHORITY.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 用户的权限列表
+ * @date 2023/03/16 09:04:48
+ */
+public enum EM_ALARM_USERAUTHORITY {
+	/**
+	 * 未知
+	 */
+	EM_ALARM_USERAUTHORITY_UNKNOWN(0, "未知"),
+	/**
+	 * 布防
+	 */
+	EM_ALARM_USERAUTHORITY_ARMING(1, "布防"),
+	/**
+	 * 强制布防
+	 */
+	EM_ALARM_USERAUTHORITY_FORCEARMING(2, "强制布防"),
+	/**
+	 * 撤防
+	 */
+	EM_ALARM_USERAUTHORITY_DISARM(3, "撤防"),
+	/**
+	 * 旁路
+	 */
+	EM_ALARM_USERAUTHORITY_BYPASS(4, "旁路"),
+	/**
+	 * 永久旁路
+	 */
+	EM_ALARM_USERAUTHORITY_PERMANENTBYPASS(5, "永久旁路"),
+	/**
+	 * 消警
+	 */
+	EM_ALARM_USERAUTHORITY_ALARMCONFIRM(6, "消警"),
+	/**
+	 * 查询日志
+	 */
+	EM_ALARM_USERAUTHORITY_QUERYLOG(7, "查询日志"),
+	/**
+	 * 调试模式
+	 */
+	EM_ALARM_USERAUTHORITY_DEBUGMODE(8, "调试模式"),
+	/**
+	 * 更改基本程序,如:升级程序
+	 */
+	EM_ALARM_USERAUTHORITY_UPGRADE(9, "更改基本程序,如:升级程序"),
+	/**
+	 * 添加/更改配置参数
+	 */
+	EM_ALARM_USERAUTHORITY_SYSTEMCONFIG(10, "添加/更改配置参数"),
+	/**
+	 * 用户管理
+	 */
+	EM_ALARM_USERAUTHORITY_USERMANAGEMENT(11, "用户管理");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ALARM_USERAUTHORITY(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ALARM_USERAUTHORITY enumType : EM_ALARM_USERAUTHORITY.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ALARM_USERAUTHORITY enumType : EM_ALARM_USERAUTHORITY.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USER_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USER_GROUP.java
new file mode 100644
index 0000000..4a564a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALARM_USER_GROUP.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 用户所在组
+ * @date 2023/03/16 09:04:49
+ */
+public enum EM_ALARM_USER_GROUP {
+	/**
+	 * 未知
+	 */
+	EM_ALARM_USER_GROUP_UNKNOWN(0, "未知"),
+	/**
+	 * 管理员
+	 */
+	EM_ALARM_USER_GROUP_ADMIN(1, "管理员"),
+	/**
+	 * 安装员
+	 */
+	EM_ALARM_USER_GROUP_INSTALLER(2, "安装员"),
+	/**
+	 * 制造商
+	 */
+	EM_ALARM_USER_GROUP_MANUFACTURER(3, "制造商"),
+	/**
+	 * 操作员
+	 */
+	EM_ALARM_USER_GROUP_OPERATOR(4, "操作员");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ALARM_USER_GROUP(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ALARM_USER_GROUP enumType : EM_ALARM_USER_GROUP.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ALARM_USER_GROUP enumType : EM_ALARM_USER_GROUP.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java
new file mode 100644
index 0000000..7a4035b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_PARTITION_TYPE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 分区类型
+ * @date 2021/2/20
+ */
+public enum EM_ALGORITHM_PARTITION_TYPE {
+  /** 未知 */
+  EM_ALGORITHM_PARTITION_UNKNOWN,
+  /** ext4分区 */
+  EM_ALGORITHM_PARTITION_EXT4,
+  /** suqshfs分区 */
+  EM_ALGORITHM_PARTITION_SUQSHFS,
+  /** ubifs分区 */
+  EM_ALGORITHM_PARTITION_UBIFS;
+
+  public static EM_ALGORITHM_PARTITION_TYPE getAlgorithmPartitionType(int type) {
+    for (EM_ALGORITHM_PARTITION_TYPE partitionType : EM_ALGORITHM_PARTITION_TYPE.values()) {
+      if (partitionType.ordinal() == type) {
+        return partitionType;
+      }
+    }
+    return EM_ALGORITHM_PARTITION_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_TYPE.java
new file mode 100644
index 0000000..d8c2d9f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALGORITHM_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 加密算法类型
+ * @date 2022/11/03 09:43:17
+ */
+public enum EM_ALGORITHM_TYPE {
+	/**
+	 * 未知加密算法
+	 */
+	EM_ALGORITHM_TYPE_UNKNOWN(0, "未知加密算法"),
+	/**
+	 * AES256-OFB加密算法
+	 */
+	EM_ALGORITHM_TYPE_AES256_OFB(1, "AES256-OFB加密算法"),
+	/**
+	 * SM加密算法
+	 */
+	EM_ALGORITHM_TYPE_SM4_OFB(2, "SM加密算法");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ALGORITHM_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ALGORITHM_TYPE enumType : EM_ALGORITHM_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ALGORITHM_TYPE enumType : EM_ALGORITHM_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java
new file mode 100644
index 0000000..4cf3958
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ALLOW_PERMIT_FLAG.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 电子通行证状态(添加)
+* @date 2022/03/08 11:25:17
+*/
+public enum EM_ALLOW_PERMIT_FLAG {
+/**
+未知
+*/
+EM_ALLOW_PERMIT_FLAG_UNKNOWN(0,"未知"),
+/**
+没有电子通行证
+*/
+EM_ALLOW_PERMIT_FLAG_NO(1,"没有电子通行证"),
+/**
+电子通行证有效
+*/
+EM_ALLOW_PERMIT_FLAG_EFFECTIVE(2,"电子通行证有效"),
+/**
+电子通行证无效
+*/
+EM_ALLOW_PERMIT_FLAG_INVALID(3,"电子通行证无效");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ALLOW_PERMIT_FLAG(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ALLOW_PERMIT_FLAG enumType : EM_ALLOW_PERMIT_FLAG.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ALLOW_PERMIT_FLAG enumType : EM_ALLOW_PERMIT_FLAG.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ALLOW_PERMIT_FLAG getEnum(int value) {
+        for (EM_ALLOW_PERMIT_FLAG e : EM_ALLOW_PERMIT_FLAG.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ALLOW_PERMIT_FLAG.EM_ALLOW_PERMIT_FLAG_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java
new file mode 100644
index 0000000..9fe877c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_ERROR.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  智能分析任务错误码 
+* @date 2022/12/01 20:05:32
+*/
+public enum EM_ANALYSE_TASK_ERROR {
+/**
+未知
+*/
+EM_ANALYSE_TASK_ERROR_UNKNOWN(1,"未知"),
+/**
+解码能力不足
+*/
+EM_ANALYSE_TASK_ERROR_INSUFFICIENT_DECODING_CAPABILITY(2,"解码能力不足"),
+/**
+智能能力不足
+*/
+EM_ANALYSE_TASK_ERROR_INSUFFICIENT_INTELLIGENCE_CAPABILITY(3,"智能能力不足"),
+/**
+码流格式不支持
+*/
+EM_ANALYSE_TASK_ERROR_BITSTREAM_FORMAT_NOT_SUPPORTED(4,"码流格式不支持"),
+/**
+分析器离线
+*/
+EM_ANALYSE_TASK_ERROR_ANALYZER_OFF_LINE(5,"分析器离线"),
+/**
+分析器上线
+*/
+EM_ANALYSE_TASK_ERROR_ANALYZER_ON_LINE(6,"分析器上线");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ANALYSE_TASK_ERROR(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ANALYSE_TASK_ERROR enumType : EM_ANALYSE_TASK_ERROR.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ANALYSE_TASK_ERROR enumType : EM_ANALYSE_TASK_ERROR.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return 0;
+    }
+
+public static EM_ANALYSE_TASK_ERROR getEnum(int value) {
+        for (EM_ANALYSE_TASK_ERROR e : EM_ANALYSE_TASK_ERROR.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ANALYSE_TASK_ERROR.EM_ANALYSE_TASK_ERROR_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java
new file mode 100644
index 0000000..e6403cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANALYSE_TASK_START_RULE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  智能任务启动规则 
+* @date 2022/06/28 16:19:15
+*/
+public enum EM_ANALYSE_TASK_START_RULE {
+/**
+立刻启动
+*/
+EM_ANALYSE_TASK_START_NOW(0,"立刻启动"),
+/**
+稍候手动启动
+*/
+EM_ANALYSE_TASK_START_LATER(1,"稍候手动启动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ANALYSE_TASK_START_RULE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ANALYSE_TASK_START_RULE enumType : EM_ANALYSE_TASK_START_RULE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ANALYSE_TASK_START_RULE enumType : EM_ANALYSE_TASK_START_RULE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ANALYSE_TASK_START_RULE getEnum(int value) {
+        for (EM_ANALYSE_TASK_START_RULE e : EM_ANALYSE_TASK_START_RULE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ANALYSE_TASK_START_RULE.EM_ANALYSE_TASK_START_NOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANGLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANGLE_TYPE.java
new file mode 100644
index 0000000..cc0c3de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANGLE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 角度
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_ANGLE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_ANGLE_UNKNOWN = 0;
+    /**
+     *  正面
+     */
+    public static final int					EM_ANGLE_FRONT = 1;
+    /**
+     *  侧面
+     */
+    public static final int					EM_ANGLE_SIDE = 2;
+    /**
+     *  背面
+     */
+    public static final int					EM_ANGLE_BACK = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java
new file mode 100644
index 0000000..b4261c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ANTI_MISPRESS_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  防误按模式 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_ANTI_MISPRESS_TYPE {
+/**
+未知
+*/
+EM_ANTI_MISPRESS_UNKNOWN(0,"未知"),
+/**
+按下0.1s生效
+*/
+EM_ANTI_MISPRESS_OFF(1,"按下0.1s生效"),
+/**
+长按3s有效
+*/
+EM_ANTI_MISPRESS_LONG(2,"长按3s有效"),
+/**
+间断1s内连续按2次
+*/
+EM_ANTI_MISPRESS_DOUBLE(3,"间断1s内连续按2次");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ANTI_MISPRESS_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ANTI_MISPRESS_TYPE enumType : EM_ANTI_MISPRESS_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ANTI_MISPRESS_TYPE enumType : EM_ANTI_MISPRESS_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ANTI_MISPRESS_TYPE getEnum(int value) {
+        for (EM_ANTI_MISPRESS_TYPE e : EM_ANTI_MISPRESS_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ANTI_MISPRESS_TYPE.EM_ANTI_MISPRESS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java
new file mode 100644
index 0000000..e326522
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAALARM_TRIGGER_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  区域报警触发类型 
+* @date 2022/07/19 19:31:27
+*/
+public enum EM_AREAALARM_TRIGGER_TYPE {
+/**
+未知
+*/
+EM_AREAALARM_TRIGGER_TYPE_UNKNOWN(0,"未知"),
+/**
+通道打开
+*/
+EM_AREAALARM_TRIGGER_TYPE_ALARM(1,"通道打开"),
+/**
+通道防拆
+*/
+EM_AREAALARM_TRIGGER_TYPE_TAMPER(2,"通道防拆"),
+/**
+通道遮挡
+*/
+EM_AREAALARM_TRIGGER_TYPE_MASK(3,"通道遮挡"),
+/**
+通道防短
+*/
+EM_AREAALARM_TRIGGER_TYPE_SHORT(4,"通道防短");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_AREAALARM_TRIGGER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_AREAALARM_TRIGGER_TYPE enumType : EM_AREAALARM_TRIGGER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_AREAALARM_TRIGGER_TYPE enumType : EM_AREAALARM_TRIGGER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_AREAALARM_TRIGGER_TYPE getEnum(int value) {
+        for (EM_AREAALARM_TRIGGER_TYPE e : EM_AREAALARM_TRIGGER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_AREAALARM_TRIGGER_TYPE.EM_AREAALARM_TRIGGER_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java
new file mode 100644
index 0000000..b8affad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_TRIGGERMODE.java
@@ -0,0 +1,101 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @description 区域防区操作方式
+ * @date 2022/07/19 10:09:08
+ */
+public enum EM_AREAARM_TRIGGERMODE {
+	/**
+	 * 未知
+	 */
+	EM_AREAARM_TRIGGERMODE_UNKNOWN(0, "未知"),
+	/**
+	 * 键盘
+	 */
+	EM_AREAARM_TRIGGERMODE_KEYPAD(1, "键盘"),
+	/**
+	 * 遥控器
+	 */
+	EM_AREAARM_TRIGGERMODE_REMOTECONTROL(2, "遥控器"),
+	/**
+	 * 用户操作
+	 */
+	EM_AREAARM_TRIGGERMODE_USER(3, "用户操作"),
+	/**
+	 * 本地
+	 */
+	EM_AREAARM_TRIGGERMODE_LOCAL(4, "本地"),
+	/**
+	 * 定时器
+	 */
+	EM_AREAARM_TRIGGERMODE_TIMER(5, "定时器"),
+	/**
+	 * Key类型防区
+	 */
+	EM_AREAARM_TRIGGERMODE_KEY(6, "Key类型防区"),
+	/**
+	 * 远程操作(电话反控、短信反控、手机App、平台客户端等)
+	 */
+	EM_AREAARM_TRIGGERMODE_REMOTE(7, "远程操作(电话反控、短信反控、手机App、平台客户端等)"),
+	/**
+	 * DSS平台客户端
+	 */
+	EM_AREAARM_TRIGGERMODE_DSS(8, "DSS平台客户端"),
+	/**
+	 * DSSPro平台客户端
+	 */
+	EM_AREAARM_TRIGGERMODE_DSSPRO(9, "DSSPro平台客户端"),
+	/**
+	 * 手机客户端
+	 */
+	EM_AREAARM_TRIGGERMODE_DMSS(10, "手机客户端"),
+	/**
+	 * Smart pss、ICC平台
+	 */
+	EM_AREAARM_TRIGGERMODE_PLATFORM(11, "Smart pss、ICC平台");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_AREAARM_TRIGGERMODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_AREAARM_TRIGGERMODE enumType : EM_AREAARM_TRIGGERMODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_AREAARM_TRIGGERMODE enumType : EM_AREAARM_TRIGGERMODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_AREAARM_TRIGGERMODE getEnum(int value) {
+		for (EM_AREAARM_TRIGGERMODE e : EM_AREAARM_TRIGGERMODE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_AREAARM_TRIGGERMODE.EM_AREAARM_TRIGGERMODE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_USER.java
new file mode 100644
index 0000000..84e85e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AREAARM_USER.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @description 区域防区操作用户
+ * @date 2022/07/19 10:09:08
+ */
+public enum EM_AREAARM_USER {
+	/**
+	 * 未知
+	 */
+	EM_AREAARM_USER_UNKNOWN(0, "未知"),
+	/**
+	 *
+	 */
+	EM_AREAARM_USER_SUPERVISOR(1, ""),
+	/**
+	 * 管理用户
+	 */
+	EM_AREAARM_USER_MANAGER(2, "管理用户"),
+	/**
+	 * 主用户
+	 */
+	EM_AREAARM_USER_MASTER(3, "主用户"),
+	/**
+	 * 普通用户
+	 */
+	EM_AREAARM_USER_USER(4, "普通用户"),
+	/**
+	 * 临时用户
+	 */
+	EM_AREAARM_USER_TEMPORARY(5, "临时用户"),
+	/**
+	 * 胁迫用户
+	 */
+	EM_AREAARM_USER_DURESS(6, "胁迫用户"),
+	/**
+	 * 巡逻用户
+	 */
+	EM_AREAARM_USER_PATROL(7, "巡逻用户");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_AREAARM_USER(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_AREAARM_USER enumType : EM_AREAARM_USER.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_AREAARM_USER enumType : EM_AREAARM_USER.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_AREAARM_USER getEnum(int value) {
+		for (EM_AREAARM_USER e : EM_AREAARM_USER.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_AREAARM_USER.EM_AREAARM_USER_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARMING_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARMING_TYPE.java
new file mode 100644
index 0000000..8e3c43d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARMING_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  布防模式 
+* @date 2022/08/31 14:44:17
+*/
+public enum EM_ARMING_TYPE {
+/**
+未知
+*/
+EM_ARMING_UNKNOWN(-1,"未知"),
+/**
+在家布防
+*/
+EM_ARMING_ATHOME(0,"在家布防"),
+/**
+外出布防
+*/
+EM_ARMING_OUT(1,"外出布防");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ARMING_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ARMING_TYPE enumType : EM_ARMING_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ARMING_TYPE enumType : EM_ARMING_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_ARMING_TYPE getEnum(int value) {
+        for (EM_ARMING_TYPE e : EM_ARMING_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ARMING_TYPE.EM_ARMING_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_STATE.java
new file mode 100644
index 0000000..8032b5f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_STATE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 布撤防状态
+ * @date 2021/11/08
+ */
+public enum EM_ARM_STATE {
+
+	// 未知
+	EM_ARM_STATE_UNKNOWN(0, "未知"),
+
+	// Total布防
+	EM_ARM_STATE_TOTAL_ARMING(1, "Total布防"),
+
+	// partial1布防
+	EM_ARM_STATE_PARTIAL1_ARMING(2, "partial1布防"),
+
+	// partial2布防
+	EM_ARM_STATE_PARTIAL2_ARMING(3, "partial2布防"),
+
+	// partial1+2布防
+	EM_ARM_STATE_PARTIAL1_PARTIAL2_ARMING(4, "partial1+2布防"),
+
+	// 强制布防
+	EM_ARM_STATE_FORCEARMING(5, "强制布防"),
+
+	// 撤防
+	EM_ARM_STATE_DISARMING(6, "撤防");
+
+	private int value;
+	private String note;
+
+	private EM_ARM_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ARM_STATE enumType : EM_ARM_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ARM_STATE enumType : EM_ARM_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_TYPE.java
new file mode 100644
index 0000000..43be98f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ARM_TYPE.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @description 布撤防类型
+ * @date 2022/07/19 10:54:34
+ */
+public enum EM_ARM_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_ARM_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * Total布防
+	 */
+	EM_ARM_TYPE_TOTAL_ARMING(1, "Total布防"),
+	/**
+	 * partial1布防
+	 */
+	EM_ARM_TYPE_PARTIAL1_ARMING(2, "partial1布防"),
+	/**
+	 * partial2布防
+	 */
+	EM_ARM_TYPE_PARTIAL2_ARMING(3, "partial2布防"),
+	/**
+	 * partial1+2布防
+	 */
+	EM_ARM_TYPE_PARTIAL_ARMING(4, "partial1+2布防"),
+	/**
+	 * 强制布防
+	 */
+	EM_ARM_TYPE_DENFENCE_ARMING(5, "强制布防"),
+	/**
+	 * 撤防
+	 */
+	EM_ARM_TYPE_DISARMING(6, "撤防");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ARM_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ARM_TYPE enumType : EM_ARM_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ARM_TYPE enumType : EM_ARM_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_ARM_TYPE getEnum(int value) {
+		for (EM_ARM_TYPE e : EM_ARM_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_ARM_TYPE.EM_ARM_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASG_WORK_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASG_WORK_MODE.java
new file mode 100644
index 0000000..b5fc3bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASG_WORK_MODE.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 工作模式
+ * @date 2021/2/7
+ */
+public enum EM_ASG_WORK_MODE {
+  /** 未知 */
+  EM_ASG_WORK_MODE_UNKNOWN(-1, "未知"),
+  /** 常闭模式 */
+  EM_ASG_WORK_MODE_CLOSE(0, "常闭模式"),
+  EM_ASG_WORK_MODE_OPEN(1, "常开模式");
+
+  private int mode;
+  private String desc;
+
+  EM_ASG_WORK_MODE(int mode, String desc) {
+    this.mode = mode;
+    this.desc = desc;
+  }
+
+  public static EM_ASG_WORK_MODE getAsgWorkMode(int mode) {
+    for (EM_ASG_WORK_MODE workMode : EM_ASG_WORK_MODE.values()) {
+      if (workMode.mode == mode) {
+        return workMode;
+      }
+    }
+    return EM_ASG_WORK_MODE_UNKNOWN;
+  }
+
+  public int getMode() {
+    return mode;
+  }
+
+  public void setMode(int mode) {
+    this.mode = mode;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java
new file mode 100644
index 0000000..294e078
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ASSOCIATED_RECORD_SOURCE.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否与其他目标关联
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_ASSOCIATED_RECORD_SOURCE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_UNKNOWN = -1;
+    /**
+     *  未关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_NONE = 0;
+    /**
+     *  与人体有关联成功
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_HUMAN = 1;
+    /**
+     *  与机动车过车有关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_PASSING = 2;
+    /**
+     *  与机动车违章有关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_MOTOR_VEHICLE_VIOLATION = 3;
+    /**
+     *  与结构化机动车有关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_STRUCTURED_MOTOR_VEHICLE = 4;
+    /**
+     *  与人脸有关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_FACE = 5;
+    /**
+     *  与非机动车有关联
+     */
+    public static final int					EM_ASSOCIATED_RECORD_SOURCE_NON_MOTOR_VEHICLE = 6;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ATTACH_TOPICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ATTACH_TOPICS.java
new file mode 100644
index 0000000..d7916cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ATTACH_TOPICS.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 订阅类型
+ * @date 2022/04/20 10:16:56
+ */
+public enum EM_ATTACH_TOPICS {
+    /**
+     * 表示订阅所有属性和事件
+     */
+    EM_ATTACH_TOPICS_ALL(0, " *  表示订阅所有属性和事件"),
+    /**
+     * Props  表示订阅设备属性上报
+     */
+    EM_ATTACH_TOPICS_PROPS(1, " Props  表示订阅设备属性上报"),
+    /**
+     * Events  标识订阅设备事件上报
+     */
+    EM_ATTACH_TOPICS_EVENTS(2, " Events  标识订阅设备事件上报");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_ATTACH_TOPICS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_ATTACH_TOPICS enumType : EM_ATTACH_TOPICS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_ATTACH_TOPICS enumType : EM_ATTACH_TOPICS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_ATTACH_TOPICS getEnum(int value) {
+        for (EM_ATTACH_TOPICS e : EM_ATTACH_TOPICS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ATTACH_TOPICS.EM_ATTACH_TOPICS_ALL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java
new file mode 100644
index 0000000..17d0f00
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_SOURCE_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 音频解码能力数据流源类型
+ * @date 2021/01/06
+ */
+public enum EM_AUDIO_DATA_SOURCE_TYPE {
+	// 未知数据类型
+	EM_AUDIO_DATA_SOURCE_TYPE_UNKNOWN(-1, "未知数据类型"),
+
+	// 对讲数据
+	EM_AUDIO_DATA_SOURCE_TYPE_TALK(0, "对讲数据"),
+
+	// 普通音频数据,如伴音
+	EM_AUDIO_DATA_SOURCE_TYPE_NORMAL(1, "普通音频数据,如伴音"),
+
+	// 报警音频数据流
+	EM_AUDIO_DATA_SOURCE_TYPE_ALARM(2, "报警音频数据流");
+
+	private int value;
+	private String note;
+
+	private EM_AUDIO_DATA_SOURCE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_AUDIO_DATA_SOURCE_TYPE enumType : EM_AUDIO_DATA_SOURCE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_AUDIO_DATA_SOURCE_TYPE enumType : EM_AUDIO_DATA_SOURCE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java
new file mode 100644
index 0000000..084dc94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_DATA_TYPE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 音频数据类型
+ * @date 2021/2/22
+ */
+public enum EM_AUDIO_DATA_TYPE {
+  /** 默认 */
+  EM_AUDIO_DATA_TYPE_DEFAULT,
+  /** 音频强制转换为AAC */
+  EM_AUDIO_DATA_TYPE_AAC,
+  /** 音频强制转换为G711A */
+  EM_AUDIO_DATA_TYPE_G711A,
+  /** 音频强制转换为G711U */
+  EM_AUDIO_DATA_TYPE_G711U,
+  /** 音频强制转换为MP2 */
+  EM_AUDIO_DATA_TYPE_MP2;
+
+  public static EM_AUDIO_DATA_TYPE getAudioDataType(int type) {
+    for (EM_AUDIO_DATA_TYPE audioType : EM_AUDIO_DATA_TYPE.values()) {
+      if (audioType.ordinal() == type) {
+        return audioType;
+      }
+    }
+    return EM_AUDIO_DATA_TYPE_DEFAULT;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java
new file mode 100644
index 0000000..1128c8c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUDIO_SOURCE_FLAG.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 音频数据来源
+ * @date 2021/12/29
+ */
+public enum EM_AUDIO_SOURCE_FLAG {
+	// 未知状态
+	EM_AUDIO_SOURCE_FLAG_UNKNOWN(-1, "未知状态"),
+
+	// 本地录音数据,可以发送给设备
+	EM_AUDIO_SOURCE_FLAG_LOCAL(0, "本地录音数据,可以发送给设备"),
+
+	// 远程音频数据,即从设备接收到音频数据
+	EM_AUDIO_SOURCE_FLAG_REMOTE(1, "远程音频数据,即从设备接收到音频数据");
+
+	private int value;
+	private String note;
+
+	private EM_AUDIO_SOURCE_FLAG(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_AUDIO_SOURCE_FLAG enumType : EM_AUDIO_SOURCE_FLAG.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_AUDIO_SOURCE_FLAG enumType : EM_AUDIO_SOURCE_FLAG.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java
new file mode 100644
index 0000000..16979f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_AUTO_PROTECT_WEEK.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 自动维护星期
+ * @date 2021/08/24
+ */
+public enum EM_AUTO_PROTECT_WEEK {
+	// 未知
+	EM_AUTO_PROTECT_UNKNOWN(0, "未知"),
+	// 星期一
+	EM_AUTO_PROTECT_MONDAY(1, "星期一"),
+	// 星期二
+	EM_AUTO_PROTECT_TUESDAY(2, "星期二"),
+	// 星期三
+	EM_AUTO_PROTECT_WEDNESDAY(3, "星期三"),
+	// 星期四
+	EM_AUTO_PROTECT_THURSDAY(4, "星期四"),
+	// 星期五
+	EM_AUTO_PROTECT_FIRDAY(5, "星期五"),
+	// 星期六
+	EM_AUTO_PROTECT_SATURDAY(6, "星期六"),
+	// 星期天
+	EM_AUTO_PROTECT_SUNDAY(7, "星期天"),
+	// 每天
+	EM_AUTO_PROTECT_EVERYDAY(8, "每天");
+
+	private int value;
+	private String note;
+
+	private EM_AUTO_PROTECT_WEEK(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_AUTO_PROTECT_WEEK enumType : EM_AUTO_PROTECT_WEEK.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_AUTO_PROTECT_WEEK enumType : EM_AUTO_PROTECT_WEEK.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKLIGHT_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKLIGHT_MODE.java
new file mode 100644
index 0000000..ff559e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKLIGHT_MODE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  背光补偿模式,当背光模式为Backlight时有效 
+* @origin autoTool
+* @date 2023/11/30 16:22:26
+*/
+public enum EM_BACKLIGHT_MODE {
+	/**
+     * 未知模式
+     */
+	EM_BACKLIGHT_UNKONW(0,"未知模式"),
+	/**
+     * 默认模式
+     */
+	EM_BACKLIGHT_DEFAULT(1,"默认模式"),
+	/**
+     * 自定义区域模式
+     */
+	EM_BACKLIGHT_REGION(2,"自定义区域模式");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_BACKLIGHT_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_BACKLIGHT_MODE enumType : EM_BACKLIGHT_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_BACKLIGHT_MODE enumType : EM_BACKLIGHT_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_BACKLIGHT_MODE getEnum(int value) {
+        for (EM_BACKLIGHT_MODE e : EM_BACKLIGHT_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_BACKLIGHT_MODE.EM_BACKLIGHT_UNKONW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java
new file mode 100644
index 0000000..2598d16
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_ERROR_CODE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 备份模式设置错误码
+ * @date 2021/09/28
+ */
+public enum EM_BACKUP_ERROR_CODE {
+	// 未知
+	EM_BACKUP_ERROR_CODE_UNKNOWN(-1, "未知"),
+	// 备份模式设置成功
+	EM_BACKUP_ERROR_CODE_SUCCESS(0, "备份模式设置成功"),
+	// 周期方案表有误
+	EM_BACKUP_ERROR_CODE_CYCLE_PLAN(1, "周期方案表有误"),
+	// 绿信比表有误
+	EM_BACKUP_ERROR_CODE_GREEN_LETTER(2, "绿信比表有误"),
+	// 时基方案表有误
+	EM_BACKUP_ERROR_CODE_TIME_BASE_PLAN(3, "时基方案表有误"),
+	// 日计划表有误
+	EM_BACKUP_ERROR_CODE_DAY_PLAN(4, "日计划表有误"),
+	// 动作方案表有误
+	EM_BACKUP_ERROR_CODE_ACTION_PLAN(5, "动作方案表有误"),
+	// 相序表有误
+	EM_BACKUP_ERROR_CODE_PHASE_SEQUENCE(6, "相序表有误"),
+	// 通道表有误
+	EM_BACKUP_ERROR_CODE_CHANNEL_TABLE(7, "通道表有误"),
+	// 跟随相位表有误
+	EM_BACKUP_ERROR_CODE_FOLLOW_PHASE_TABLE(8, "跟随相位表有误"),
+	// 相位冲突
+	EM_BACKUP_ERROR_CODE_PHASE_CONFLCT(9, "相位冲突"),
+	// 下发方案超时
+	EM_BACKUP_ERROR_CODE_DELIVERY_PLAN(10, "下发方案超时"),
+	// 车道表设置有误
+	EM_BACKUP_ERROR_CODE_LANE_TABLE_SETTING(11, "车道表设置有误"),
+    // 用于信号灯,提示信号灯不支持短连接路口
+	EM_BACKUP_ERROR_CODE_NOT_SUPPORT_SHORT_JUNCTIONS(12, "用于信号灯,提示信号灯不支持短连接路口"),
+    // 通道配置有误 用于信号灯 无掉头箭头灯、直行非机动车灯、左转非机动车灯、公交信号灯--可变车道
+	EM_BACKUP_ERROR_CODE_CHANNEL_CONFIGURATION(13, "通道配置有误"),
+    // 可变车道方案表有误
+	EM_BACKUP_ERROR_CODE_VARIABLEE_LANE_TABLE(14, "可变车道方案表有误	"),
+    // 周计划方案表有误
+	EM_BACKUP_ERROR_CODE_WEEKLY_PLAN(15, "周计划方案表有误");
+
+	private int value;
+	private String note;
+
+	private EM_BACKUP_ERROR_CODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BACKUP_ERROR_CODE enumType : EM_BACKUP_ERROR_CODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BACKUP_ERROR_CODE enumType : EM_BACKUP_ERROR_CODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_FORMAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_FORMAT.java
new file mode 100644
index 0000000..cddbd6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_FORMAT.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.enumeration;
+/**
+ * 
+ * @author 119178
+ *
+ */
+public enum EM_BACKUP_FORMAT {
+	EM_BACKUP_FORMAT_ASF(0,"asf"),				// "asf"
+	EM_BACKUP_FORMAT_DAV(1,"dav"),				// "dav"
+	EM_BACKUP_FORMAT_MP4(2,"mp4");				// "mp4"
+	
+	
+	private int value;
+	private String note;
+
+	private EM_BACKUP_FORMAT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java
new file mode 100644
index 0000000..4097a3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_MODE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BACKUP_SOURCE_MODE {
+	EM_SOURCE_MODE_SINGLE(0,"Single"),				// "Single",/*单个备份模式*/
+	EM_SOURCE_MODE_COMBIN(1,"Combin");				// "Combin",/*合并备份模式*/
+	
+	private int value;
+	private String note;
+
+	private EM_BACKUP_SOURCE_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java
new file mode 100644
index 0000000..22d07fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_SOURCE_TYPE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BACKUP_SOURCE_TYPE {
+	EM_SOURCE_TYPE_REALTIME(0,"RealTime"),			// "RealTime", /*实时源*/,源类型有效
+	EM_SOURCE_TYPE_LOCAL(1,"Local"),				// "Local", /*本地源*/
+	EM_SOURCE_TYPE_NETWORK(2,"Network");			// "Network", /*网络源*/
+	private int value;
+	private String note;
+
+	private EM_BACKUP_SOURCE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java
new file mode 100644
index 0000000..dec1b8a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_MODE.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BACKUP_TARGET_MODE {
+	EM_TARGET_MODE_SYNC(0,"Sync"),				// "Sync", /*同步备份*/
+	EM_TARGET_MODE_TURN(1,"Turn"),				// "Turn", /*轮训备份*/
+	EM_TARGET_MODE_CYCLE(2,"Cycle");				// "Cycle", /*循环备份*/
+	
+	private int value;
+	private String note;
+
+	private EM_BACKUP_TARGET_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java
new file mode 100644
index 0000000..ee4bef5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BACKUP_TARGET_TYPE.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BACKUP_TARGET_TYPE {
+	EM_TARGET_TYPE_LOCAL(0,"Local"),				// "Local", /*本地源*/
+	EM_TARGET_TYPE_NETWORK(1,"Network");			// "Network", /*网络源*/
+	private int value;
+	private String note;
+
+	private EM_BACKUP_TARGET_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BAG_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BAG_TYPE.java
new file mode 100644
index 0000000..df295b7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BAG_TYPE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 包类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_BAG_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_BAG_UNKNOWN = 0;
+    /**
+     *  手提包
+     */
+    public static final int					EM_BAG_HANDBAG = 1;
+    /**
+     *  肩包
+     */
+    public static final int					EM_BAG_SHOULDERBAG = 2;
+    /**
+     *  背包
+     */
+    public static final int					EM_BAG_KNAPSACK = 3;
+    /**
+     *  拉杆箱
+     */
+    public static final int					EM_BAG_DRAWBARBOX = 4;
+    /**
+     *  腰包
+     */
+    public static final int					EM_BAG_WAISTPACK = 5;
+    /**
+     *  无包
+     */
+    public static final int					EM_BAG_NONE = 6;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java
new file mode 100644
index 0000000..85eb482
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_EXIST_STATE.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BATTERY_EXIST_STATE {
+
+    EM_BATTERY_EXIST_STATE_UNKNOWN(0, "电池在位未知"),
+    EM_BATTERY_EXIST_STATE_EXIST(1, "电池在位"),                      // 电池在位
+    EM_BATTERY_EXIST_STATE_MISSING(2, "电池丢失");                     // 电池丢失
+
+    private int value;
+    private String note;
+
+    private EM_BATTERY_EXIST_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_BATTERY_EXIST_STATE enumType : EM_BATTERY_EXIST_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_BATTERY_EXIST_STATE enumType : EM_BATTERY_EXIST_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_STATE.java
new file mode 100644
index 0000000..77d9d61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_STATE.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_BATTERY_STATE {
+    EM_BATTERY_STATE_UNKNOWN(0, "电量未知"),
+    EM_BATTERY_STATE_NORMAL(1, "电量正常"),                      // 电量正常
+    EM_BATTERY_STATE_LOW(2, "电量低");                     // 电量低
+
+    private int value;
+    private String note;
+
+    private EM_BATTERY_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_BATTERY_STATE enumType : EM_BATTERY_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_BATTERY_STATE enumType : EM_BATTERY_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java
new file mode 100644
index 0000000..52a8248
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BATTERY_TEMPER_STATE.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 电池温度状态
+ * @date 2022/03/31
+ */
+public enum EM_BATTERY_TEMPER_STATE {
+	// 未知
+	EM_BATTERY_TEMPER_STATE_UNKNOWN(0, "未知"),
+
+	// 低温
+	EM_BATTERY_TEMPER_STATE_LOW_TEMPER(1, "低温"),
+
+	// 常温
+	EM_BATTERY_TEMPER_STATE_NORMAL_TEMPER(2, "常温"),
+
+	// 高温
+	EM_BATTERY_TEMPER_STATE_HIGH_TEMPER(3, "高温"),
+
+	// 超温
+	EM_BATTERY_TEMPER_STATE_OVER_TEMPER(4, "超温"),
+
+	// 异常
+	EM_BATTERY_TEMPER_STATE_ABNORMAL_TEMPER(5, "异常");
+
+	private int value;
+	private String note;
+
+	private EM_BATTERY_TEMPER_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BATTERY_TEMPER_STATE enumType : EM_BATTERY_TEMPER_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BATTERY_TEMPER_STATE enumType : EM_BATTERY_TEMPER_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java
new file mode 100644
index 0000000..2ef1c31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BEARD_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 胡子状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_BEARD_STATE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_BEARD_STATE_UNKNOWN = 0;
+    /**
+     *  未识别
+     */
+    public static final int					EM_BEARD_STATE_NODISTI = 1;
+    /**
+     *  没胡子
+     */
+    public static final int					EM_BEARD_STATE_NOBEARD = 2;
+    /**
+     *  有胡子
+     */
+    public static final int					EM_BEARD_STATE_HAVEBEARD = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BIND_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BIND_MODE.java
new file mode 100644
index 0000000..6ff368c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BIND_MODE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 绑定模式
+ * @origin autoTool
+ * @date 2023/09/15 10:59:48
+ */
+public enum EM_BIND_MODE {
+	/**
+     * / 未知
+     */
+	EM_BIND_MODE_UNKNOWN(0,"/ 未知"),
+	/**
+     * / 自动
+     */
+	EM_BIND_MODE_AUTOMATIC(1,"/ 自动"),
+	/**
+     * / 半自动
+     */
+	EM_BIND_MODE_SEMIAUTOMATIC(2,"/ 半自动"),
+	/**
+     * / 手动
+     */
+	EM_BIND_MODE_MANUAL(3,"/ 手动");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_BIND_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BIND_MODE enumType : EM_BIND_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BIND_MODE enumType : EM_BIND_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_BIND_MODE getEnum(int value) {
+		for (EM_BIND_MODE e : EM_BIND_MODE.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_BIND_MODE.EM_BIND_MODE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BOAT_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BOAT_DIRECTION.java
new file mode 100644
index 0000000..7b53063
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BOAT_DIRECTION.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 船只行驶方向
+ * @date 2022/06/16 11:14:19
+ */
+public enum EM_BOAT_DIRECTION {
+	/**
+	 * 未知
+	 */
+	EM_BOAT_DIRECTION_UNKNOWN(0, "未知"),
+	/**
+	 * 逆向
+	 */
+	EM_BOAT_DIRECTION_OPPOSITE(1, "逆向"),
+	/**
+	 * 正向
+	 */
+	EM_BOAT_DIRECTION_POSITIVE(2, "正向");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_BOAT_DIRECTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BOAT_DIRECTION enumType : EM_BOAT_DIRECTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BOAT_DIRECTION enumType : EM_BOAT_DIRECTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java
new file mode 100644
index 0000000..eba10ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BREED_DETECT_CATEGORY_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 智慧养殖检测目标子类型
+* @date 2022/04/15 15:29:30
+*/
+public enum EM_BREED_DETECT_CATEGORY_TYPE {
+/**
+未知
+*/
+EM_BREED_DETECT_CATEGORY_UNKNOWN(0,"未知"),
+/**
+猪
+*/
+EM_BREED_DETECT_CATEGORY_PIG(1,"猪");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_BREED_DETECT_CATEGORY_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_BREED_DETECT_CATEGORY_TYPE enumType : EM_BREED_DETECT_CATEGORY_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_BREED_DETECT_CATEGORY_TYPE enumType : EM_BREED_DETECT_CATEGORY_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_BREED_DETECT_CATEGORY_TYPE getEnum(int value) {
+        for (EM_BREED_DETECT_CATEGORY_TYPE e : EM_BREED_DETECT_CATEGORY_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_BREED_DETECT_CATEGORY_TYPE.EM_BREED_DETECT_CATEGORY_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java
new file mode 100644
index 0000000..47ba760
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BROADCAST_TEXT_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 播报文本类型
+ * @date 2022/11/28 16:20:42
+ */
+public enum EM_BROADCAST_TEXT_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_BROADCAST_TEXT_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 普通
+	 */
+	EM_BROADCAST_TEXT_TYPE_ORDINARY(0, "普通"),
+	/**
+	 * 车牌号
+	 */
+	EM_BROADCAST_TEXT_TYPE_PLATE_NUMBER(1, "车牌号"),
+	/**
+	 * 时间
+	 */
+	EM_BROADCAST_TEXT_TYPE_TIME(2, "时间"),
+	/**
+	 * 数字字符串
+	 */
+	EM_BROADCAST_TEXT_TYPE_NUMBER_STRING(3, "数字字符串");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_BROADCAST_TEXT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BROADCAST_TEXT_TYPE enumType : EM_BROADCAST_TEXT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BROADCAST_TEXT_TYPE enumType : EM_BROADCAST_TEXT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java
new file mode 100644
index 0000000..3759c52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BUTTON_ALARM_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  按钮报警类型 
+* @date 2022/08/31 14:44:18
+*/
+public enum EM_BUTTON_ALARM_TYPE {
+/**
+未知
+*/
+EM_BUTTON_ALARM_UNKNOWN(-1,"未知"),
+/**
+火警
+*/
+EM_BUTTON_ALARM_FIRE(0,"火警"),
+/**
+紧急报警
+*/
+EM_BUTTON_ALARM_EMERGENCY(1,"紧急报警"),
+/**
+医疗报警
+*/
+EM_BUTTON_ALARM_MEDICAL(2,"医疗报警");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_BUTTON_ALARM_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_BUTTON_ALARM_TYPE enumType : EM_BUTTON_ALARM_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_BUTTON_ALARM_TYPE enumType : EM_BUTTON_ALARM_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_BUTTON_ALARM_TYPE getEnum(int value) {
+        for (EM_BUTTON_ALARM_TYPE e : EM_BUTTON_ALARM_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_BUTTON_ALARM_TYPE.EM_BUTTON_ALARM_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java
new file mode 100644
index 0000000..0f041cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_BYPASSMODE_TYPE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 旁路模式类型
+ * @date 2023/03/15 16:33:42
+ */
+public enum EM_BYPASSMODE_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_BYPASSMODE_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 不使用
+	 */
+	EM_BYPASSMODE_TYPE_OFF(1, "不使用"),
+	/**
+	 * 正常
+	 */
+	EM_BYPASSMODE_TYPE_ACTIVE(2, "正常"),
+	/**
+	 * 旁路
+	 */
+	EM_BYPASSMODE_TYPE_BYPASSED(3, "旁路"),
+	/**
+	 * 隔离
+	 */
+	EM_BYPASSMODE_TYPE_ISOLATED(4, "隔离"),
+	/**
+	 * 测试
+	 */
+	EM_BYPASSMODE_TYPE_TEST(5, "测试");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_BYPASSMODE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_BYPASSMODE_TYPE enumType : EM_BYPASSMODE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_BYPASSMODE_TYPE enumType : EM_BYPASSMODE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java
new file mode 100644
index 0000000..0a3ea19
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEAREA_TYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 标定区域类型
+ * @date 2021/01/11
+ */
+public enum EM_CALIBRATEAREA_TYPE {
+	// 错误
+	EM_CALIBRATEAREA_TYPE_ERR(0, "err"),
+
+	//地面,需要N条竖直线段+M条水平线段((N=3,M=1);(N=2,M=2);今后扩展)
+	EM_CALIBRATEAREA_TYPE_GROUD(1, "Groud"),
+
+	//水平面,需要水平面上一点到地面点的投影垂直线段
+	EM_CALIBRATEAREA_TYPE_HORIZONTAL(2, "Horizontal"),
+
+	//垂直面,需要垂直面与地面的交线
+	EM_CALIBRATEAREA_TYPE_VERTICAL(3, "Vertical"),
+
+	//任意平面,N条竖直线段,及每条长度(N=3,及今后扩展)
+	EM_CALIBRATEAREA_TYPE_ANY(4, "Any");
+
+	private int value;
+	private String note;
+
+	private EM_CALIBRATEAREA_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CALIBRATEAREA_TYPE enumType : EM_CALIBRATEAREA_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CALIBRATEAREA_TYPE enumType : EM_CALIBRATEAREA_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEINFO_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEINFO_OPERATE_TYPE.java
new file mode 100644
index 0000000..55599ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALIBRATEINFO_OPERATE_TYPE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 设备标定信息操作类型
+ * @date 2023/05/24 10:24:56
+ */
+public enum EM_CALIBRATEINFO_OPERATE_TYPE {
+	/**
+     * 获取指定点标定信息,	pStuInParam = NET_IN_GET_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_GET_CALIBRATEINFO_INFO
+     */
+	EM_CALIBRATEINFO_OPERATE_GET(0,"获取指定点标定信息,	pStuInParam = NET_IN_GET_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_GET_CALIBRATEINFO_INFO"),
+	/**
+     * 设置指定点标定信息,	pStuInParam = NET_IN_SET_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_SET_CALIBRATEINFO_INFO
+     */
+	EM_CALIBRATEINFO_OPERATE_SET(1,"设置指定点标定信息,	pStuInParam = NET_IN_SET_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_SET_CALIBRATEINFO_INFO"),
+	/**
+     * 删除指定点标定信息,	pStuInParam = NET_IN_DELETE_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_DELETE_CALIBRATEINFO_INFO
+     */
+	EM_CALIBRATEINFO_OPERATE_DELETE(2,"删除指定点标定信息,	pStuInParam = NET_IN_DELETE_CALIBRATEINFO_INFO,	  pStuOutParam = NET_OUT_DELETE_CALIBRATEINFO_INFO"),
+	/**
+     * 获取所有标定信息,	pStuInParam = NET_IN_GETALL_CALIBRATEINFO_INFO,   pStuOutParam = NET_OUT_GETALL_CALIBRATEINFO_INFO
+     */
+	EM_CALIBRATEINFO_OPERATE_GETALL(3,"获取所有标定信息,	pStuInParam = NET_IN_GETALL_CALIBRATEINFO_INFO,   pStuOutParam = NET_OUT_GETALL_CALIBRATEINFO_INFO");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CALIBRATEINFO_OPERATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CALIBRATEINFO_OPERATE_TYPE enumType : EM_CALIBRATEINFO_OPERATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CALIBRATEINFO_OPERATE_TYPE enumType : EM_CALIBRATEINFO_OPERATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_CALIBRATEINFO_OPERATE_TYPE getEnum(int value) {
+		for (EM_CALIBRATEINFO_OPERATE_TYPE e : EM_CALIBRATEINFO_OPERATE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_CALIBRATEINFO_OPERATE_TYPE.EM_CALIBRATEINFO_OPERATE_GET;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_ACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_ACTION.java
new file mode 100644
index 0000000..b8eb4c6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_ACTION.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  呼叫电梯方式 
+* @date 2022/10/19 14:01:07
+*/
+public enum EM_CALLLIFT_ACTION {
+/**
+未知
+*/
+EM_CALLLIFT_ACTION_UNKNOWN(-1,"未知"),
+/**
+用户通过对讲分机打开单元门锁,同时呼叫电梯到单元门处
+*/
+EM_CALLLIFT_ACTION_USER_UNLOCK_CALL(0,"用户通过对讲分机打开单元门锁,同时呼叫电梯到单元门处"),
+/**
+用户呼叫电梯到用户所在楼层
+*/
+EM_CALLLIFT_ACTION_USER_DIRECT_CALL(1,"用户呼叫电梯到用户所在楼层"),
+/**
+用户呼叫电梯经由某层到某层
+*/
+EM_CALLLIFT_ACTION_USER_REDIRECT_CALL(2,"用户呼叫电梯经由某层到某层"),
+/**
+单元门开锁,同时呼叫电梯到单元门处
+*/
+EM_CALLLIFT_ACTION_DIRECT_UNLOCK_CALL(3,"单元门开锁,同时呼叫电梯到单元门处");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CALLLIFT_ACTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CALLLIFT_ACTION enumType : EM_CALLLIFT_ACTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CALLLIFT_ACTION enumType : EM_CALLLIFT_ACTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_CALLLIFT_ACTION getEnum(int value) {
+        for (EM_CALLLIFT_ACTION e : EM_CALLLIFT_ACTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CALLLIFT_ACTION.EM_CALLLIFT_ACTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_CMD.java
new file mode 100644
index 0000000..b19ad16
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALLLIFT_CMD.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  呼叫电梯命令 
+* @date 2022/10/19 14:01:07
+*/
+public enum EM_CALLLIFT_CMD {
+/**
+未知
+*/
+EM_CALLLIFT_CMD_UNKNOWN(-1,"未知"),
+/**
+呼叫电梯到某个楼层,并开放其它任何楼层数
+*/
+EM_CALLLIFT_CMD_ANY_FLOOR(0,"呼叫电梯到某个楼层,并开放其它任何楼层数"),
+/**
+呼叫电梯到某个楼层,用户进去后只能按目标楼层
+*/
+EM_CALLLIFT_CMD_DEST_FLOOR(1,"呼叫电梯到某个楼层,用户进去后只能按目标楼层"),
+/**
+呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯上行
+*/
+EM_CALLLIFT_CMD_CARD_UP(2,"呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯上行"),
+/**
+呼叫电梯到某个楼层,用户进去不用按钮,电梯会自动运行到目标楼层
+*/
+EM_CALLLIFT_CMD_AUTO_FLOOR(3,"呼叫电梯到某个楼层,用户进去不用按钮,电梯会自动运行到目标楼层"),
+/**
+呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯下行
+*/
+EM_CALLLIFT_CMD_CARD_DOWN(4,"呼叫电梯到某个楼层后,还需要刷卡,电梯才能运行, 默认电梯下行");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CALLLIFT_CMD(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CALLLIFT_CMD enumType : EM_CALLLIFT_CMD.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CALLLIFT_CMD enumType : EM_CALLLIFT_CMD.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_CALLLIFT_CMD getEnum(int value) {
+        for (EM_CALLLIFT_CMD e : EM_CALLLIFT_CMD.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CALLLIFT_CMD.EM_CALLLIFT_CMD_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java
new file mode 100644
index 0000000..6daf607
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CALL_ACTION_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 打电话的动作类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CALL_ACTION_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CALL_ACTION_TYPE_UNKNOWN = 0;
+    /**
+     *  贴耳
+     */
+    public static final int					EM_CALL_ACTION_TYPE_CALL_BY_EAR = 1;
+    /**
+     *  手持 
+     */
+    public static final int					EM_CALL_ACTION_TYPE_CALL_HAND_HOLD = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java
new file mode 100644
index 0000000..d49a8f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_CONNECT_STATE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 相机连接状态
+ * @date 2020/11/09
+ */
+public enum EM_CAMERA_CONNECT_STATE {
+	// 未知
+	EM_CAMERA_CONNECT_STATE_UNKNOWN(-1, "未知"),
+	// 北向南
+	EM_CAMERA_CONNECT_STATE_UNCONNECT(0, "未连接"),
+	// 东北向西南
+	EM_CAMERA_CONNECT_STATE_CONNECTED(1, "已连接");
+
+	private int value;
+	private String note;
+
+	private EM_CAMERA_CONNECT_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CAMERA_CONNECT_STATE enumType : EM_CAMERA_CONNECT_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CAMERA_CONNECT_STATE enumType : EM_CAMERA_CONNECT_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_STATUS.java
new file mode 100644
index 0000000..0428181
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAMERA_STATUS.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 相机状态
+ * @date 2021/08/25
+ */
+public enum EM_CAMERA_STATUS {
+	// 未知
+	EM_CAMERA_UNKNOWN(0, "未知"),
+	// 红灯
+	EM_CAMERA_RED(1, "红灯"),
+	// 黄灯
+	EM_CAMERA_YELLOW(2, "黄灯"),
+	// 绿灯
+	EM_CAMERA_GREEN(3, "绿灯"),
+	// 红闪
+	EM_CAMERA_RED_FLASH(4, "红闪"),
+	// 黄闪
+	EM_CAMERA_YELLOW_FLASH(5, "黄闪"),
+	// 绿闪
+	EM_CAMERA_GREEN_FLASH(6, "绿闪"),
+	// 灭灯
+	EM_CAMERA_LIGHT_OFF(7, "灭灯");
+
+	private int value;
+	private String note;
+
+	private EM_CAMERA_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CAMERA_STATUS enumType : EM_CAMERA_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CAMERA_STATUS enumType : EM_CAMERA_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAN_START_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAN_START_STREAM.java
new file mode 100644
index 0000000..a0a7a66
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAN_START_STREAM.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 拉流使能
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 15:53
+ */
+public enum EM_CAN_START_STREAM {
+
+    /**
+     * 未知
+     */
+    EM_CAN_START_STREAM_UNKNOWN(-1, "未知"),
+
+    /**
+     * 不拉流
+     */
+    EM_CAN_START_STREAM_OFF(0, "不拉流"),
+
+    /**
+     * 拉流
+     */
+    EM_CAN_START_STREAM_ON(1, "拉流");
+
+    private int value;
+    private String note;
+
+    EM_CAN_START_STREAM(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CAN_START_STREAM enumType : EM_CAN_START_STREAM.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CAN_START_STREAM enumType : EM_CAN_START_STREAM.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CAN_START_STREAM getEnum(int value) {
+        for (EM_CAN_START_STREAM e : EM_CAN_START_STREAM.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CAN_START_STREAM.EM_CAN_START_STREAM_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java
new file mode 100644
index 0000000..c9efeab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAPTURE_PROCESS_END_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_CAPTURE_PROCESS_END_TYPE {
+
+    /**
+     * 未知
+     */
+    EM_CAPTURE_PROCESS_END_TYPE_UNKNOWN(-1,"未知"),
+    /**
+     * 异常
+     */
+    EM_CAPTURE_PROCESS_END_TYPE_ABNORMAL(0,"异常"),
+    /**
+     * 正常
+     */
+    EM_CAPTURE_PROCESS_END_TYPE_NORMAL(1,"正常");
+
+    private int value;
+    private String note;
+
+    private EM_CAPTURE_PROCESS_END_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CAPTURE_PROCESS_END_TYPE enumType : EM_CAPTURE_PROCESS_END_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CAPTURE_PROCESS_END_TYPE enumType : EM_CAPTURE_PROCESS_END_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote()) ) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAP_TYPE.java
new file mode 100644
index 0000000..932c5f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAP_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 帽子类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CAP_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CAP_UNKNOWN = 0;
+    /**
+     *  普通帽子
+     */
+    public static final int					EM_CAP_ORDINARY = 1;
+    /**
+     *  头盔
+     */
+    public static final int					EM_CAP_HELMET = 2;
+    /**
+     *  安全帽
+     */
+    public static final int					EM_CAP_SAFE = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CARD_PROVINCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CARD_PROVINCE.java
new file mode 100644
index 0000000..32ea59f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CARD_PROVINCE.java
@@ -0,0 +1,154 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 卡号省份
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CARD_PROVINCE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  解析出错,未知省份
+     */
+    public static final int					EM_CARD_UNKNOWN = 10;
+    /**
+     *  北京
+     */
+    public static final int					EM_CARD_BEIJING = 11;
+    /**
+     *  天津
+     */
+    public static final int					EM_CARD_TIANJIN = 12;
+    /**
+     *  河北
+     */
+    public static final int					EM_CARD_HEBEI = 13;
+    /**
+     *  山西
+     */
+    public static final int					EM_CARD_SHANXI_TAIYUAN = 14;
+    /**
+     *  内蒙古
+     */
+    public static final int					EM_CARD_NEIMENGGU = 15;
+    /**
+     *  辽宁
+     */
+    public static final int					EM_CARD_LIAONING = 21;
+    /**
+     *  吉林
+     */
+    public static final int					EM_CARD_JILIN = 22;
+    /**
+     *  黑龙江
+     */
+    public static final int					EM_CARD_HEILONGJIANG = 23;
+    /**
+     *  上海
+     */
+    public static final int					EM_CARD_SHANGHAI = 31;
+    /**
+     *  江苏
+     */
+    public static final int					EM_CARD_JIANGSU = 32;
+    /**
+     *  浙江
+     */
+    public static final int					EM_CARD_ZHEJIANG = 33;
+    /**
+     *  安徽
+     */
+    public static final int					EM_CARD_ANHUI = 34;
+    /**
+     *  福建
+     */
+    public static final int					EM_CARD_FUJIAN = 35;
+    /**
+     *  江西
+     */
+    public static final int					EM_CARD_JIANGXI = 36;
+    /**
+     *  山东
+     */
+    public static final int					EM_CARD_SHANDONG = 37;
+    /**
+     *  河南
+     */
+    public static final int					EM_CARD_HENAN = 41;
+    /**
+     *  湖北
+     */
+    public static final int					EM_CARD_HUBEI = 42;
+    /**
+     *  湖南
+     */
+    public static final int					EM_CARD_HUNAN = 43;
+    /**
+     *  广东
+     */
+    public static final int					EM_CARD_GUANGDONG = 44;
+    /**
+     *  广西
+     */
+    public static final int					EM_CARD_GUANGXI = 45;
+    /**
+     *  海南
+     */
+    public static final int					EM_CARD_HAINAN = 46;
+    /**
+     *  重庆
+     */
+    public static final int					EM_CARD_CHONGQING = 50;
+    /**
+     *  四川
+     */
+    public static final int					EM_CARD_SICHUAN = 51;
+    /**
+     *  贵州
+     */
+    public static final int					EM_CARD_GUIZHOU = 52;
+    /**
+     *  云南
+     */
+    public static final int					EM_CARD_YUNNAN = 53;
+    /**
+     *  西藏
+     */
+    public static final int					EM_CARD_XIZANG = 54;
+    /**
+     *  陕西
+     */
+    public static final int					EM_CARD_SHANXI_XIAN = 61;
+    /**
+     *  甘肃
+     */
+    public static final int					EM_CARD_GANSU = 62;
+    /**
+     *  青海
+     */
+    public static final int					EM_CARD_QINGHAI = 63;
+    /**
+     *  宁夏
+     */
+    public static final int					EM_CARD_NINGXIA = 64;
+    /**
+     *  新疆
+     */
+    public static final int					EM_CARD_XINJIANG = 65;
+    /**
+     *  香港
+     */
+    public static final int					EM_CARD_XIANGGANG = 71;
+    /**
+     *  澳门
+     */
+    public static final int					EM_CARD_AOMEN = 82;
+    /**
+     *  台湾
+     */
+    public static final int					EM_CARD_TAIWAN = 83;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java
new file mode 100644
index 0000000..8c8d731
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_COLOR_TYPE.java
@@ -0,0 +1,166 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车身颜色
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CAR_COLOR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  白色
+     */
+    public static final int					EM_CAR_COLOR_WHITE = 0;
+    /**
+     *  黑色
+     */
+    public static final int					EM_CAR_COLOR_BLACK = 1;
+    /**
+     *  红色
+     */
+    public static final int					EM_CAR_COLOR_RED = 2;
+    /**
+     *  黄色
+     */
+    public static final int					EM_CAR_COLOR_YELLOW = 3;
+    /**
+     *  灰色
+     */
+    public static final int					EM_CAR_COLOR_GRAY = 4;
+    /**
+     *  蓝色
+     */
+    public static final int					EM_CAR_COLOR_BLUE = 5;
+    /**
+     *  绿色
+     */
+    public static final int					EM_CAR_COLOR_GREEN = 6;
+    /**
+     *  粉色
+     */
+    public static final int					EM_CAR_COLOR_PINK = 7;
+    /**
+     *  紫色
+     */
+    public static final int					EM_CAR_COLOR_PURPLE = 8;
+    /**
+     *  暗紫色
+     */
+    public static final int					EM_CAR_COLOR_DARK_PURPLE = 9;
+    /**
+     *  棕色
+     */
+    public static final int					EM_CAR_COLOR_BROWN = 10;
+    /**
+     *  粟色
+     */
+    public static final int					EM_CAR_COLOR_MAROON = 11;
+    /**
+     *  银灰色
+     */
+    public static final int					EM_CAR_COLOR_SILVER_GRAY = 12;
+    /**
+     *  暗灰色
+     */
+    public static final int					EM_CAR_COLOR_DARK_GRAY = 13;
+    /**
+     *  白烟色
+     */
+    public static final int					EM_CAR_COLOR_WHITE_SMOKE = 14;
+    /**
+     *  深橙色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_ORANGE = 15;
+    /**
+     *  浅玫瑰色
+     */
+    public static final int					EM_CAR_COLOR_LIGHT_ROSE = 16;
+    /**
+     *  番茄红色
+     */
+    public static final int					EM_CAR_COLOR_TOMATO_RED = 17;
+    /**
+     *  橄榄色
+     */
+    public static final int					EM_CAR_COLOR_OLIVE = 18;
+    /**
+     *  金色
+     */
+    public static final int					EM_CAR_COLOR_GOLDEN = 19;
+    /**
+     *  暗橄榄色
+     */
+    public static final int					EM_CAR_COLOR_DARK_OLIVE = 20;
+    /**
+     *  黄绿色
+     */
+    public static final int					EM_CAR_COLOR_YELLOW_GREEN = 21;
+    /**
+     *  绿黄色
+     */
+    public static final int					EM_CAR_COLOR_GREEN_YELLOW = 22;
+    /**
+     *  森林绿
+     */
+    public static final int					EM_CAR_COLOR_FOREST_GREEN = 23;
+    /**
+     *  海洋绿
+     */
+    public static final int					EM_CAR_COLOR_OCEAN_BLUE = 24;
+    /**
+     *  深天蓝	
+     */
+    public static final int					EM_CAR_COLOR_DEEP_SKYBLUE = 25;
+    /**
+     *  青色
+     */
+    public static final int					EM_CAR_COLOR_CYAN = 26;
+    /**
+     *  深蓝色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_BLUE = 27;
+    /**
+     *  深红色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_RED = 28;
+    /**
+     *  深绿色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_GREEN = 29;
+    /**
+     *  深黄色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_YELLOW = 30;
+    /**
+     *  深粉色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_PINK = 31;
+    /**
+     *  深紫色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_PURPLE = 32;
+    /**
+     *  深棕色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_BROWN = 33;
+    /**
+     *  深青色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_CYAN = 34;
+    /**
+     *  橙色
+     */
+    public static final int					EM_CAR_COLOR_ORANGE = 35;
+    /**
+     *  深金色
+     */
+    public static final int					EM_CAR_COLOR_DEEP_GOLDEN = 36;
+    /**
+     *  未识别、其他
+     */
+    public static final int					EM_CAR_COLOR_OTHER = 255;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..d348846
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_DRIVING_DIRECTION.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 规则区内车辆行驶方向
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CAR_DRIVING_DIRECTION extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CAR_DRIVING_DIRECTION_UNKNOWN = 0;
+    /**
+     *  驶入区域
+     */
+    public static final int					EM_CAR_DRIVING_DIRECTION_DRIVE_IN_AREA = 1;
+    /**
+     *  驶出区域
+     */
+    public static final int					EM_CAR_DRIVING_DIRECTION_EXIT_AREA = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_TYPE.java
new file mode 100644
index 0000000..aca92d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CAR_TYPE.java
@@ -0,0 +1,938 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车辆类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CAR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 其他车辆
+     */
+    public static final int					EM_CAR_0 = 0;
+    /**
+     * 大型普通客车
+     */
+    public static final int					EM_CAR_1 = 1;
+    /**
+     * 大型双层客车
+     */
+    public static final int					EM_CAR_2 = 2;
+    /**
+     * 大型卧铺客车
+     */
+    public static final int					EM_CAR_3 = 3;
+    /**
+     * 大型铰接客车
+     */
+    public static final int					EM_CAR_4 = 4;
+    /**
+     * 大型越野客车
+     */
+    public static final int					EM_CAR_5 = 5;
+    /**
+     * 大型轿车
+     */
+    public static final int					EM_CAR_6 = 6;
+    /**
+     * 大型专用客车
+     */
+    public static final int					EM_CAR_7 = 7;
+    /**
+     * 大型专用校车
+     */
+    public static final int					EM_CAR_8 = 8;
+    /**
+     * 中型普通客车
+     */
+    public static final int					EM_CAR_9 = 9;
+    /**
+     * 中型双层客车 
+     */
+    public static final int					EM_CAR_10 = 10;
+    /**
+     * 中型卧铺客车
+     */
+    public static final int					EM_CAR_11 = 11;
+    /**
+     * 中型铰接客车
+     */
+    public static final int					EM_CAR_12 = 12;
+    /**
+     * 中型越野客车
+     */
+    public static final int					EM_CAR_13 = 13;
+    /**
+     * 中型轿车 
+     */
+    public static final int					EM_CAR_14 = 14;
+    /**
+     * 中型专用客车 
+     */
+    public static final int					EM_CAR_15 = 15;
+    /**
+     * 中型专用校车 
+     */
+    public static final int					EM_CAR_16 = 16;
+    /**
+     * 小型普通客车 
+     */
+    public static final int					EM_CAR_17 = 17;
+    /**
+     * 小型越野客车 
+     */
+    public static final int					EM_CAR_18 = 18;
+    /**
+     * 小型轿车 
+     */
+    public static final int					EM_CAR_19 = 19;
+    /**
+     * 小型专用客车 
+     */
+    public static final int					EM_CAR_20 = 20;
+    /**
+     * 小型专用校车 
+     */
+    public static final int					EM_CAR_21 = 21;
+    /**
+     * 小型面包车 
+     */
+    public static final int					EM_CAR_22 = 22;
+    /**
+     * 微型普通客车 
+     */
+    public static final int					EM_CAR_23 = 23;
+    /**
+     * 微型越野客车 
+     */
+    public static final int					EM_CAR_24 = 24;
+    /**
+     * 微型轿车
+     */
+    public static final int					EM_CAR_25 = 25;
+    /**
+     * 微型面包车
+     */
+    public static final int					EM_CAR_26 = 26;
+    /**
+     * 重型半挂牵引车
+     */
+    public static final int					EM_CAR_27 = 27;
+    /**
+     * 重型全挂牵引车
+     */
+    public static final int					EM_CAR_28 = 28;
+    /**
+     * 中型半挂牵引车
+     */
+    public static final int					EM_CAR_29 = 29;
+    /**
+     * 中型全挂牵引车
+     */
+    public static final int					EM_CAR_30 = 30;
+    /**
+     * 轻型半挂牵引车
+     */
+    public static final int					EM_CAR_31 = 31;
+    /**
+     * 轻型全挂牵引车 
+     */
+    public static final int					EM_CAR_32 = 32;
+    /**
+     * 大型非载货专项作业车
+     */
+    public static final int					EM_CAR_33 = 33;
+    /**
+     * 大型载货专项作业车 
+     */
+    public static final int					EM_CAR_34 = 34;
+    /**
+     * 中型非载货专项作业车
+     */
+    public static final int					EM_CAR_35 = 35;
+    /**
+     * 中型载货专项作业车 
+     */
+    public static final int					EM_CAR_36 = 36;
+    /**
+     * 小型非载货专项作业车
+     */
+    public static final int					EM_CAR_37 = 37;
+    /**
+     * 小型载货专项作业车 
+     */
+    public static final int					EM_CAR_38 = 38;
+    /**
+     * 微型非载货专项作业车
+     */
+    public static final int					EM_CAR_39 = 39;
+    /**
+     * 微型载货专项作业车 
+     */
+    public static final int					EM_CAR_40 = 40;
+    /**
+     * 重型非载货专项作业车
+     */
+    public static final int					EM_CAR_41 = 41;
+    /**
+     * 重型载货专项作业车 
+     */
+    public static final int					EM_CAR_42 = 42;
+    /**
+     * 轻型非载货专项作业车
+     */
+    public static final int					EM_CAR_43 = 43;
+    /**
+     * 轻型载货专项作业车 
+     */
+    public static final int					EM_CAR_44 = 44;
+    /**
+     * 普通正三轮摩托车 
+     */
+    public static final int					EM_CAR_45 = 45;
+    /**
+     * 轻便正三轮摩托车 
+     */
+    public static final int					EM_CAR_46 = 46;
+    /**
+     * 正三轮载客摩托车 
+     */
+    public static final int					EM_CAR_47 = 47;
+    /**
+     * 正三轮载货摩托车 
+     */
+    public static final int					EM_CAR_48 = 48;
+    /**
+     * 侧三轮摩托车 
+     */
+    public static final int					EM_CAR_49 = 49;
+    /**
+     * 普通二轮摩托车 
+     */
+    public static final int					EM_CAR_50 = 50;
+    /**
+     * 轻便二轮摩托车 
+     */
+    public static final int					EM_CAR_51 = 51;
+    /**
+     * 无轨电车 
+     */
+    public static final int					EM_CAR_52 = 52;
+    /**
+     * 有轨电车 
+     */
+    public static final int					EM_CAR_53 = 53;
+    /**
+     * 三轮汽车 
+     */
+    public static final int					EM_CAR_54 = 54;
+    /**
+     * 轮式装载机械 
+     */
+    public static final int					EM_CAR_55 = 55;
+    /**
+     * 轮式挖掘机械 
+     */
+    public static final int					EM_CAR_56 = 56;
+    /**
+     * 轮式平地机械 
+     */
+    public static final int					EM_CAR_57 = 57;
+    /**
+     * 重型普通货车 
+     */
+    public static final int					EM_CAR_58 = 58;
+    /**
+     * 重型厢式货车 
+     */
+    public static final int					EM_CAR_59 = 59;
+    /**
+     * 重型封闭货车 
+     */
+    public static final int					EM_CAR_60 = 60;
+    /**
+     * 重型罐式货车 
+     */
+    public static final int					EM_CAR_61 = 61;
+    /**
+     * 重型平板货车 
+     */
+    public static final int					EM_CAR_62 = 62;
+    /**
+     * 重型集装箱车 
+     */
+    public static final int					EM_CAR_63 = 63;
+    /**
+     * 重型自卸货车 
+     */
+    public static final int					EM_CAR_64 = 64;
+    /**
+     * 重型特殊结构货车 
+     */
+    public static final int					EM_CAR_65 = 65;
+    /**
+     * 重型仓栅式货车 
+     */
+    public static final int					EM_CAR_66 = 66;
+    /**
+     * 重型车辆运输车 
+     */
+    public static final int					EM_CAR_67 = 67;
+    /**
+     * 重型厢式自卸货车 
+     */
+    public static final int					EM_CAR_68 = 68;
+    /**
+     * 重型罐式自卸货车 
+     */
+    public static final int					EM_CAR_69 = 69;
+    /**
+     * 重型平板自卸货车 
+     */
+    public static final int					EM_CAR_70 = 70;
+    /**
+     * 重型集装箱自卸货车 
+     */
+    public static final int					EM_CAR_71 = 71;
+    /**
+     * 重型特殊结构自卸货车
+     */
+    public static final int					EM_CAR_72 = 72;
+    /**
+     * 重型仓栅式自卸货车 
+     */
+    public static final int					EM_CAR_73 = 73;
+    /**
+     * 中型普通货车 
+     */
+    public static final int					EM_CAR_74 = 74;
+    /**
+     * 中型厢式货车 
+     */
+    public static final int					EM_CAR_75 = 75;
+    /**
+     * 中型封闭货车 
+     */
+    public static final int					EM_CAR_76 = 76;
+    /**
+     * 中型罐式货车 
+     */
+    public static final int					EM_CAR_77 = 77;
+    /**
+     * 中型平板货车 
+     */
+    public static final int					EM_CAR_78 = 78;
+    /**
+     * 中型集装箱车 
+     */
+    public static final int					EM_CAR_79 = 79;
+    /**
+     * 中型自卸货车 
+     */
+    public static final int					EM_CAR_80 = 80;
+    /**
+     * 中型特殊结构货车 
+     */
+    public static final int					EM_CAR_81 = 81;
+    /**
+     * 中型仓栅式货车 
+     */
+    public static final int					EM_CAR_82 = 82;
+    /**
+     * 中型车辆运输车 
+     */
+    public static final int					EM_CAR_83 = 83;
+    /**
+     * 中型厢式自卸货车 
+     */
+    public static final int					EM_CAR_84 = 84;
+    /**
+     * 中型罐式自卸货车 
+     */
+    public static final int					EM_CAR_85 = 85;
+    /**
+     * 中型平板自卸货车 
+     */
+    public static final int					EM_CAR_86 = 86;
+    /**
+     * 中型集装箱自卸货车 
+     */
+    public static final int					EM_CAR_87 = 87;
+    /**
+     * 中型特殊结构自卸货车
+     */
+    public static final int					EM_CAR_88 = 88;
+    /**
+     * 中型仓栅式自卸货车 
+     */
+    public static final int					EM_CAR_89 = 89;
+    /**
+     * 轻型普通货车 
+     */
+    public static final int					EM_CAR_90 = 90;
+    /**
+     * 轻型厢式货车 
+     */
+    public static final int					EM_CAR_91 = 91;
+    /**
+     * 轻型封闭货车 
+     */
+    public static final int					EM_CAR_92 = 92;
+    /**
+     * 轻型罐式货车 
+     */
+    public static final int					EM_CAR_93 = 93;
+    /**
+     * 轻型平板货车 
+     */
+    public static final int					EM_CAR_94 = 94;
+    /**
+     * 轻型自卸货车 
+     */
+    public static final int					EM_CAR_95 = 95;
+    /**
+     * 轻型特殊结构货车 
+     */
+    public static final int					EM_CAR_96 = 96;
+    /**
+     * 轻型仓栅式货车 
+     */
+    public static final int					EM_CAR_97 = 97;
+    /**
+     * 轻型车辆运输车 
+     */
+    public static final int					EM_CAR_98 = 98;
+    /**
+     * 轻型厢式自卸货车 
+     */
+    public static final int					EM_CAR_99 = 99;
+    /**
+     * 轻型罐式自卸货车 
+     */
+    public static final int					EM_CAR_100 = 100;
+    /**
+     * 轻型平板自卸货车 
+     */
+    public static final int					EM_CAR_101 = 101;
+    /**
+     * 轻型特殊结构自卸货车 
+     */
+    public static final int					EM_CAR_102 = 102;
+    /**
+     * 轻型仓栅式自卸货车 
+     */
+    public static final int					EM_CAR_103 = 103;
+    /**
+     * 微型普通货车 
+     */
+    public static final int					EM_CAR_104 = 104;
+    /**
+     * 微型厢式货车 
+     */
+    public static final int					EM_CAR_105 = 105;
+    /**
+     * 微型封闭货车 
+     */
+    public static final int					EM_CAR_106 = 106;
+    /**
+     * 微型罐式货车 
+     */
+    public static final int					EM_CAR_107 = 107;
+    /**
+     * 微型自卸货车 
+     */
+    public static final int					EM_CAR_108 = 108;
+    /**
+     * 微型特殊结构货车 
+     */
+    public static final int					EM_CAR_109 = 109;
+    /**
+     * 微型仓栅式货车 
+     */
+    public static final int					EM_CAR_110 = 110;
+    /**
+     * 微型车辆运输车 
+     */
+    public static final int					EM_CAR_111 = 111;
+    /**
+     * 微型厢式自卸货车 
+     */
+    public static final int					EM_CAR_112 = 112;
+    /**
+     * 微型罐式自卸货车 
+     */
+    public static final int					EM_CAR_113 = 113;
+    /**
+     * 微型特殊结构自卸货车 
+     */
+    public static final int					EM_CAR_114 = 114;
+    /**
+     * 微型仓栅式自卸货车 
+     */
+    public static final int					EM_CAR_115 = 115;
+    /**
+     * 普通低速货车 
+     */
+    public static final int					EM_CAR_116 = 116;
+    /**
+     * 厢式低速货车 
+     */
+    public static final int					EM_CAR_117 = 117;
+    /**
+     * 罐式低速货车 
+     */
+    public static final int					EM_CAR_118 = 118;
+    /**
+     * 自卸低速货车 
+     */
+    public static final int					EM_CAR_119 = 119;
+    /**
+     * 仓栅式低速货车 
+     */
+    public static final int					EM_CAR_120 = 120;
+    /**
+     * 厢式自卸低速货车 
+     */
+    public static final int					EM_CAR_121 = 121;
+    /**
+     * 罐式自卸低速货车 
+     */
+    public static final int					EM_CAR_122 = 122;
+    /**
+     * 重型普通全挂车 
+     */
+    public static final int					EM_CAR_123 = 123;
+    /**
+     * 重型厢式全挂车 
+     */
+    public static final int					EM_CAR_124 = 124;
+    /**
+     * 重型罐式全挂车 
+     */
+    public static final int					EM_CAR_125 = 125;
+    /**
+     * 重型平板全挂车 
+     */
+    public static final int					EM_CAR_126 = 126;
+    /**
+     * 重型集装箱全挂车 
+     */
+    public static final int					EM_CAR_127 = 127;
+    /**
+     * 重型自卸全挂车 
+     */
+    public static final int					EM_CAR_128 = 128;
+    /**
+     * 重型仓栅式全挂车 
+     */
+    public static final int					EM_CAR_129 = 129;
+    /**
+     * 重型旅居全挂车 
+     */
+    public static final int					EM_CAR_130 = 130;
+    /**
+     * 重型专项作业全挂车 
+     */
+    public static final int					EM_CAR_131 = 131;
+    /**
+     * 重型厢式自卸全挂车 
+     */
+    public static final int					EM_CAR_132 = 132;
+    /**
+     * 重型罐式自卸全挂车 
+     */
+    public static final int					EM_CAR_133 = 133;
+    /**
+     * 重型平板自卸全挂车 
+     */
+    public static final int					EM_CAR_134 = 134;
+    /**
+     * 重型集装箱自卸全挂车 
+     */
+    public static final int					EM_CAR_135 = 135;
+    /**
+     * 重型仓栅式自卸全挂车 
+     */
+    public static final int					EM_CAR_136 = 136;
+    /**
+     * 重型专项作业自卸全挂车 
+     */
+    public static final int					EM_CAR_137 = 137;
+    /**
+     * 中型普通全挂车 
+     */
+    public static final int					EM_CAR_138 = 138;
+    /**
+     * 中型厢式全挂车 
+     */
+    public static final int					EM_CAR_139 = 139;
+    /**
+     * 中型罐式全挂车 
+     */
+    public static final int					EM_CAR_140 = 140;
+    /**
+     * 中型平板全挂车 
+     */
+    public static final int					EM_CAR_141 = 141;
+    /**
+     * 中型集装箱全挂车 
+     */
+    public static final int					EM_CAR_142 = 142;
+    /**
+     * 中型自卸全挂车 
+     */
+    public static final int					EM_CAR_143 = 143;
+    /**
+     * 中型仓栅式全挂车 
+     */
+    public static final int					EM_CAR_144 = 144;
+    /**
+     * 中型旅居全挂车 
+     */
+    public static final int					EM_CAR_145 = 145;
+    /**
+     * 中型专项作业全挂车 
+     */
+    public static final int					EM_CAR_146 = 146;
+    /**
+     * 中型厢式自卸全挂车 
+     */
+    public static final int					EM_CAR_147 = 147;
+    /**
+     * 中型罐式自卸全挂车 
+     */
+    public static final int					EM_CAR_148 = 148;
+    /**
+     * 中型平板自卸全挂车 
+     */
+    public static final int					EM_CAR_149 = 149;
+    /**
+     * 中型集装箱自卸全挂车 
+     */
+    public static final int					EM_CAR_150 = 150;
+    /**
+     * 中型仓栅式自卸全挂车 
+     */
+    public static final int					EM_CAR_151 = 151;
+    /**
+     * 中型专项作业自卸全挂车 
+     */
+    public static final int					EM_CAR_152 = 152;
+    /**
+     * 轻型普通全挂车 
+     */
+    public static final int					EM_CAR_153 = 153;
+    /**
+     * 轻型厢式全挂车 
+     */
+    public static final int					EM_CAR_154 = 154;
+    /**
+     * 轻型罐式全挂车 
+     */
+    public static final int					EM_CAR_155 = 155;
+    /**
+     * 轻型平板全挂车 
+     */
+    public static final int					EM_CAR_156 = 156;
+    /**
+     * 轻型自卸全挂车 
+     */
+    public static final int					EM_CAR_157 = 157;
+    /**
+     * 轻型仓栅式全挂车 
+     */
+    public static final int					EM_CAR_158 = 158;
+    /**
+     * 轻型旅居全挂车 
+     */
+    public static final int					EM_CAR_159 = 159;
+    /**
+     * 轻型专项作业全挂车 
+     */
+    public static final int					EM_CAR_160 = 160;
+    /**
+     * 轻型厢式自卸全挂车 
+     */
+    public static final int					EM_CAR_161 = 161;
+    /**
+     * 轻型罐式自卸全挂车 
+     */
+    public static final int					EM_CAR_162 = 162;
+    /**
+     * 轻型平板自卸全挂车 
+     */
+    public static final int					EM_CAR_163 = 163;
+    /**
+     * 轻型集装箱自卸全挂车 
+     */
+    public static final int					EM_CAR_164 = 164;
+    /**
+     * 轻型仓栅式自卸全挂车 
+     */
+    public static final int					EM_CAR_165 = 165;
+    /**
+     * 轻型专项作业自卸全挂车 
+     */
+    public static final int					EM_CAR_166 = 166;
+    /**
+     * 重型普通半挂车 
+     */
+    public static final int					EM_CAR_167 = 167;
+    /**
+     * 重型厢式半挂车 
+     */
+    public static final int					EM_CAR_168 = 168;
+    /**
+     * 重型罐式半挂车 
+     */
+    public static final int					EM_CAR_169 = 169;
+    /**
+     * 重型平板半挂车 
+     */
+    public static final int					EM_CAR_170 = 170;
+    /**
+     * 重型集装箱半挂车 
+     */
+    public static final int					EM_CAR_171 = 171;
+    /**
+     * 重型自卸半挂车 
+     */
+    public static final int					EM_CAR_172 = 172;
+    /**
+     * 重型特殊结构半挂车 
+     */
+    public static final int					EM_CAR_173 = 173;
+    /**
+     * 重型仓栅式半挂车 
+     */
+    public static final int					EM_CAR_174 = 174;
+    /**
+     * 重型旅居半挂车 
+     */
+    public static final int					EM_CAR_175 = 175;
+    /**
+     * 重型专项作业半挂车 
+     */
+    public static final int					EM_CAR_176 = 176;
+    /**
+     * 重型低平板半挂车 
+     */
+    public static final int					EM_CAR_177 = 177;
+    /**
+     * 重型车辆运输半挂车 
+     */
+    public static final int					EM_CAR_178 = 178;
+    /**
+     * 重型罐式自卸半挂车 
+     */
+    public static final int					EM_CAR_179 = 179;
+    /**
+     * 重型平板自卸半挂车 
+     */
+    public static final int					EM_CAR_180 = 180;
+    /**
+     * 重型集装箱自卸半挂车 
+     */
+    public static final int					EM_CAR_181 = 181;
+    /**
+     * 重型特殊结构自卸半挂车 
+     */
+    public static final int					EM_CAR_182 = 182;
+    /**
+     * 重型仓栅式自卸半挂车 
+     */
+    public static final int					EM_CAR_183 = 183;
+    /**
+     * 重型专项作业自卸半挂车 
+     */
+    public static final int					EM_CAR_184 = 184;
+    /**
+     * 重型低平板自卸半挂车 
+     */
+    public static final int					EM_CAR_185 = 185;
+    /**
+     * 重型中置轴旅居挂车 
+     */
+    public static final int					EM_CAR_186 = 186;
+    /**
+     * 重型中置轴车辆运输车 
+     */
+    public static final int					EM_CAR_187 = 187;
+    /**
+     * 重型中置轴普通挂车 
+     */
+    public static final int					EM_CAR_188 = 188;
+    /**
+     * 中型普通半挂车 
+     */
+    public static final int					EM_CAR_189 = 189;
+    /**
+     * 中型厢式半挂车 
+     */
+    public static final int					EM_CAR_190 = 190;
+    /**
+     * 中型罐式半挂车 
+     */
+    public static final int					EM_CAR_191 = 191;
+    /**
+     * 中型平板半挂车 
+     */
+    public static final int					EM_CAR_192 = 192;
+    /**
+     * 中型集装箱半挂车 
+     */
+    public static final int					EM_CAR_193 = 193;
+    /**
+     * 中型自卸半挂车 
+     */
+    public static final int					EM_CAR_194 = 194;
+    /**
+     * 中型特殊结构半挂车 
+     */
+    public static final int					EM_CAR_195 = 195;
+    /**
+     * 中型仓栅式半挂车 
+     */
+    public static final int					EM_CAR_196 = 196;
+    /**
+     * 中型旅居半挂车 
+     */
+    public static final int					EM_CAR_197 = 197;
+    /**
+     * 中型专项作业半挂车 
+     */
+    public static final int					EM_CAR_198 = 198;
+    /**
+     * 中型低平板半挂车 
+     */
+    public static final int					EM_CAR_199 = 199;
+    /**
+     * 中型车辆运输半挂车 
+     */
+    public static final int					EM_CAR_200 = 200;
+    /**
+     * 中型罐式自卸半挂车 
+     */
+    public static final int					EM_CAR_201 = 201;
+    /**
+     * 中型平板自卸半挂车 
+     */
+    public static final int					EM_CAR_202 = 202;
+    /**
+     * 中型集装箱自卸半挂车 
+     */
+    public static final int					EM_CAR_203 = 203;
+    /**
+     * 中型特殊结构自卸挂车 
+     */
+    public static final int					EM_CAR_204 = 204;
+    /**
+     * 中型仓栅式自卸半挂车 
+     */
+    public static final int					EM_CAR_205 = 205;
+    /**
+     * 中型专项作业自卸半挂车 
+     */
+    public static final int					EM_CAR_206 = 206;
+    /**
+     * 中型低平板自卸半挂车 
+     */
+    public static final int					EM_CAR_207 = 207;
+    /**
+     * 中型中置轴旅居挂车 
+     */
+    public static final int					EM_CAR_208 = 208;
+    /**
+     * 中型中置轴车辆运输车
+     */
+    public static final int					EM_CAR_209 = 209;
+    /**
+     * 中型中置轴普通挂车 
+     */
+    public static final int					EM_CAR_210 = 210;
+    /**
+     * 轻型普通半挂车 
+     */
+    public static final int					EM_CAR_211 = 211;
+    /**
+     * 轻型厢式半挂车 
+     */
+    public static final int					EM_CAR_212 = 212;
+    /**
+     * 轻型罐式半挂车 
+     */
+    public static final int					EM_CAR_213 = 213;
+    /**
+     * 轻型平板半挂车 
+     */
+    public static final int					EM_CAR_214 = 214;
+    /**
+     * 轻型自卸半挂车 
+     */
+    public static final int					EM_CAR_215 = 215;
+    /**
+     * 轻型仓栅式半挂车 
+     */
+    public static final int					EM_CAR_216 = 216;
+    /**
+     * 轻型旅居半挂车 
+     */
+    public static final int					EM_CAR_217 = 217;
+    /**
+     * 轻型专项作业半挂车 
+     */
+    public static final int					EM_CAR_218 = 218;
+    /**
+     * 轻型低平板半挂车 
+     */
+    public static final int					EM_CAR_219 = 219;
+    /**
+     * 轻型车辆运输半挂车 
+     */
+    public static final int					EM_CAR_220 = 220;
+    /**
+     * 轻型罐式自卸半挂车 
+     */
+    public static final int					EM_CAR_221 = 221;
+    /**
+     * 轻型平板自卸半挂车 
+     */
+    public static final int					EM_CAR_222 = 222;
+    /**
+     * 轻型集装箱自卸半挂车 
+     */
+    public static final int					EM_CAR_223 = 223;
+    /**
+     * 轻型特殊结构自卸挂车 
+     */
+    public static final int					EM_CAR_224 = 224;
+    /**
+     * 轻型仓栅式自卸半挂车 
+     */
+    public static final int					EM_CAR_225 = 225;
+    /**
+     * 轻型专项作业自卸半挂车 
+     */
+    public static final int					EM_CAR_226 = 226;
+    /**
+     * 轻型低平板自卸半挂车 
+     */
+    public static final int					EM_CAR_227 = 227;
+    /**
+     * 轻型中置轴旅居挂车 
+     */
+    public static final int					EM_CAR_228 = 228;
+    /**
+     * 轻型中置轴车辆运输车 
+     */
+    public static final int					EM_CAR_229 = 229;
+    /**
+     * 轻型中置轴普通挂车
+     */
+    public static final int					EM_CAR_230 = 230;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java
new file mode 100644
index 0000000..c87b1e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CATEGORY_NONMOTOR_TYPE.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 非机动车子类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CATEGORY_NONMOTOR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_UNKNOWN = 0;
+    /**
+     *  "Tricycle" 三轮车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_TRICYCLE = 1;
+    /**
+     *  "Motorcycle" 摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_MOTORCYCLE = 2;
+    /**
+     *  "Non-Motor" 非机动车 
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_NON_MOTOR = 3;
+    /**
+     *  "Bicycle" 自行车     
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_BICYCLE = 4;
+    /**
+     *  "DualTriWheelMotorcycle"两、三轮摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_DUALTRIWHEELMOTORCYCLE = 5;
+    /**
+     *  "LightMotorcycle" 轻便摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_LIGHTMOTORCYCLE = 6;
+    /**
+     *  "EmbassyMotorcycle "使馆摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_EMBASSYMOTORCYCLE = 7;
+    /**
+     *  "MarginalMotorcycle " 领馆摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_MARGINALMOTORCYCLE = 8;
+    /**
+     *  "AreaoutMotorcycle " 境外摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_AREAOUTMOTORCYCLE = 9;
+    /**
+     *  "ForeignMotorcycle " 外籍摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_FOREIGNMOTORCYCLE = 10;
+    /**
+     *  "TrialMotorcycle " 试验摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_TRIALMOTORCYCLE = 11;
+    /**
+     *  "CoachMotorcycle " 教练摩托车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_COACHMOTORCYCLE = 12;
+    /**
+     *  "Passerby" 行人
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_PASSERBY = 13;
+    /**
+     *  "VanTricycle" 厢式三轮车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_VANTRICYCLE = 14;
+    /**
+     *  "MannedConvertibleTricycle" 载人敞篷三轮车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_MANNEDCONVERTIBLETRICYCLE = 15;
+    /**
+     *  "NoMannedConvertibleTricycle" 不载人敞篷三轮车
+     */
+    public static final int					EM_CATEGORY_NONMOTOR_TYPE_NOMANNEDCONVERTIBLETRICYCLE = 16;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CB_STATES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CB_STATES.java
new file mode 100644
index 0000000..dbcded7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CB_STATES.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_CB_STATES {
+	EM_CB_STATES_UNKNOWN(0,"Unknown"),			// "Unknown"
+	EM_CB_STATES_CREATED(1,"Created"),			// "Created"
+	EM_CB_STATES_READY(2,"Ready"),				// "Ready"
+	EM_CB_STATES_RUNNING(3,"Running"),			// "Running"
+	EM_CB_STATES_FINISHED(4,"Finished"),			// "Finished"
+	EM_CB_STATES_ERROR(5,"Error"),				// "Error"
+	EM_CB_STATES_ABORTED(6,"Aborted"),			// "Aborted"
+	EM_CB_STATES_PAUSE(7,"Pause");				// "Pause"
+	
+	
+	private int value;
+	private String note;
+
+	private EM_CB_STATES(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java
new file mode 100644
index 0000000..dd574f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_3GFLUXTACTIC.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 流量使用策略
+ * @date 2023/03/16 14:28:39
+ */
+public enum EM_CFG_3GFLUXTACTIC {
+	/**
+	 * 未知类型
+	 */
+	EM_3GFLUXTACTIC_UNKNOWN(-1, "未知类型"),
+	/**
+	 * 按月包流量
+	 */
+	EM_3GFLUXTACTIC_BYFLUX(0, "按月包流量"),
+	/**
+	 * 按月包时长
+	 */
+	EM_3GFLUXTACTIC_BYTIME(1, "按月包时长");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_3GFLUXTACTIC(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_3GFLUXTACTIC enumType : EM_CFG_3GFLUXTACTIC.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_3GFLUXTACTIC enumType : EM_CFG_3GFLUXTACTIC.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_APN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_APN.java
new file mode 100644
index 0000000..d053a1e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_APN.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 接入的网络名称
+ * @date 2023/03/16 14:23:46
+ */
+public enum EM_CFG_APN {
+	/**
+	 * 中国电信
+	 */
+	EM_CFG_APN_CTNET(0, "中国电信"),
+	/**
+	 * 中国移动
+	 */
+	EM_CFG_APN_CMNET(1, "中国移动"),
+	/**
+	 * 中国联通
+	 */
+	EM_CFG_APN_UNINET(2, "中国联通");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_APN(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_APN enumType : EM_CFG_APN.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_APN enumType : EM_CFG_APN.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_AUTHMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_AUTHMODE.java
new file mode 100644
index 0000000..dfd6bb2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_AUTHMODE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 鉴权模式
+ * @date 2023/03/16 14:23:46
+ */
+public enum EM_CFG_AUTHMODE {
+	/**
+	 * 不需要鉴权
+	 */
+	EM_AUTHMODE_NO(0, "不需要鉴权"),
+	/**
+	 * PAP鉴权
+	 */
+	EM_AUTHMODE_PAP(1, "PAP鉴权"),
+	/**
+	 * CHAP鉴权
+	 */
+	EM_AUTHMODE_CHAP(2, "CHAP鉴权");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_AUTHMODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_AUTHMODE enumType : EM_CFG_AUTHMODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_AUTHMODE enumType : EM_CFG_AUTHMODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CAP_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CAP_CMD.java
new file mode 100644
index 0000000..c39c08d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CAP_CMD.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 命令类型,对应QueryNewSystemInfo接口
+ */
+public enum EM_CFG_CAP_CMD {
+    /**
+     * 获取设备状态信息 (对应 CFG_CAP_TRAFFIC_DEVICE_STATUS)
+     */
+    CFG_CAP_CMD_DEVICE_STATE("trafficSnap.getDeviceStatus"),
+    /**
+     * 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
+     */
+    CFG_CAP_CMD_RECORDFINDER("RecordFinder.getCaps"),
+    /**
+     *获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
+     */
+    CFG_CMD_VIDEODIAGNOSIS_GETSTATE("videoDiagnosisServer.getState"),
+    /**
+     * 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO)
+     */
+    CFG_CAP_CMD_PTZ_ENABLE("ptz.factory.instance");
+    /**
+     * 获取门禁能力集,对应结构体CFG_CAP_ACCESSCONTROL
+     */
+    public static final String CFG_CAP_CMD_ACCESSCONTROLMANAGER="accessControlManager.getCaps";
+    private String cmd;
+    EM_CFG_CAP_CMD(String cmd){
+        this.cmd=cmd;
+    }
+
+    public String getCmd() {
+        return cmd;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java
new file mode 100644
index 0000000..f37d7ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CHEF_CLOTHES_COLORS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 检测符合要求的厨师服颜色不报警
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:18
+ */
+public class EM_CFG_CHEF_CLOTHES_COLORS extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CFG_CHEF_CLOTHES_COLORS_UNKNOWN = 0;
+    /**
+     *  黑色
+     */
+    public static final int					EM_CFG_CHEF_CLOTHES_COLORS_BLACK = 1;
+    /**
+     *  白色		
+     */
+    public static final int					EM_CFG_CHEF_CLOTHES_COLORS_WHITE = 2;
+    /**
+     *  红色
+     */
+    public static final int					EM_CFG_CHEF_CLOTHES_COLORS_RED = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java
new file mode 100644
index 0000000..a07c7fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_CROSSREGION_ALARMTYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 报警类型
+ * @since : Created in 2021/11/26 10:13
+ */
+
+public enum EM_CFG_CROSSREGION_ALARMTYPE {
+    /**
+     * 未知
+     */
+    EM_CFG_CROSSREGION_ALARMTYPE_UNKNOWN(0,"未知"),
+    /**
+     * 报警
+     */
+    EM_CFG_CROSSREGION_ALARMTYPE_ALARM(1,"报警"),
+    /**
+     * 预警
+     */
+    EM_CFG_CROSSREGION_ALARMTYPE_WARNING(2,"预警"),
+    /**
+     * 屏蔽
+     */
+    EM_CFG_CROSSREGION_ALARMTYPE_SHIELD(3,"屏蔽");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_CFG_CROSSREGION_ALARMTYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CFG_CROSSREGION_ALARMTYPE enumType : EM_CFG_CROSSREGION_ALARMTYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CFG_CROSSREGION_ALARMTYPE enumType : EM_CFG_CROSSREGION_ALARMTYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CFG_CROSSREGION_ALARMTYPE getEnum(int value) {
+        for (EM_CFG_CROSSREGION_ALARMTYPE e : EM_CFG_CROSSREGION_ALARMTYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CFG_CROSSREGION_ALARMTYPE.EM_CFG_CROSSREGION_ALARMTYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java
new file mode 100644
index 0000000..a83fda6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXACTION.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 流量报警策略
+ * @date 2023/03/16 14:23:46
+ */
+public enum EM_CFG_DAY3GFLUXACTION {
+	/**
+	 * 无动作
+	 */
+	EM_CFG_DAY3GFLUXACTION_NOTHING(0, "无动作"),
+	/**
+	 * 3G下线
+	 */
+	EM_CFG_DAY3GFLUXACTION_3GNETDOWN(1, "3G下线");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_DAY3GFLUXACTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_DAY3GFLUXACTION enumType : EM_CFG_DAY3GFLUXACTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_DAY3GFLUXACTION enumType : EM_CFG_DAY3GFLUXACTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java
new file mode 100644
index 0000000..5e35a32
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DAY3GFLUXTACTIC.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 每日流量控制策略
+ * @date 2023/03/16 14:23:46
+ */
+public enum EM_CFG_DAY3GFLUXTACTIC {
+	/**
+	 * 按流量
+	 */
+	EM_CFG_DAY3GFLUXTACTIC_BYFLUX(0, "按流量"),
+	/**
+	 * 按时间
+	 */
+	EM_CFG_DAY3GFLUXTACTIC_BYTIME(1, "按时间");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_DAY3GFLUXTACTIC(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_DAY3GFLUXTACTIC enumType : EM_CFG_DAY3GFLUXTACTIC.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_DAY3GFLUXTACTIC enumType : EM_CFG_DAY3GFLUXTACTIC.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DEFENCEAREATYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DEFENCEAREATYPE.java
new file mode 100644
index 0000000..31b7953
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_DEFENCEAREATYPE.java
@@ -0,0 +1,108 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 防区类型
+ * @date 2023/04/18 10:57:31
+ */
+public enum EM_CFG_DEFENCEAREATYPE {
+	/**
+	 * 未知类型
+	 */
+	EM_CFG_DefenceAreaType_Unknown(0, "未知类型"),
+	/**
+	 * 即时防区
+	 */
+	EM_CFG_DefenceAreaType_InTime(1, "即时防区"),
+	/**
+	 * 延时防区
+	 */
+	EM_CFG_DefenceAreaType_Delay(2, "延时防区"),
+	/**
+	 * 24小时防区
+	 */
+	EM_CFG_DefenceAreaType_FullDay(3, "24小时防区"),
+	/**
+	 * 跟随防区
+	 */
+	EM_CFG_DefenceAreaType_Follow(4, "跟随防区"),
+	/**
+	 * 医疗紧急防区
+	 */
+	EM_CFG_DefenceAreaType_Medical(5, "医疗紧急防区"),
+	/**
+	 * 恐慌防区
+	 */
+	EM_CFG_DefenceAreaType_Panic(6, "恐慌防区"),
+	/**
+	 * 火警防区
+	 */
+	EM_CFG_DefenceAreaType_Fire(7, "火警防区"),
+	/**
+	 * 24小时有声防区
+	 */
+	EM_CFG_DefenceAreaType_FullDaySound(8, "24小时有声防区"),
+	/**
+	 * 24小时无声防区
+	 */
+	EM_CFG_DefenceAreaType_FullDaySlient(9, "24小时无声防区"),
+	/**
+	 * 出入防区1
+	 */
+	EM_CFG_DefenceAreaType_Entrance1(10, "出入防区1"),
+	/**
+	 * 出入防区2
+	 */
+	EM_CFG_DefenceAreaType_Entrance2(11, "出入防区2"),
+	/**
+	 * 内部防区
+	 */
+	EM_CFG_DefenceAreaType_InSide(12, "内部防区"),
+	/**
+	 * 外部防区
+	 */
+	EM_CFG_DefenceAreaType_OutSide(13, "外部防区"),
+	/**
+	 * 人员检测防区
+	 */
+	EM_CFG_DefenceAreaType_PeopleDetect(14, "人员检测防区"),
+	/**
+	 * 匪警防区
+	 */
+	EM_CFG_DefenceAreaType_Robbery(15, "匪警防区");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_DEFENCEAREATYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_DEFENCEAREATYPE enumType : EM_CFG_DEFENCEAREATYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_DEFENCEAREATYPE enumType : EM_CFG_DEFENCEAREATYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java
new file mode 100644
index 0000000..8aa4bd2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_AUTH_TYPE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description EAP身份验证方法
+ * @date 2023/03/16 11:15:26
+ */
+public enum EM_CFG_EAP_AUTH_TYPE {
+	/**
+	 * UnKnown
+	 */
+	EM_CFG_EAP_AUTH_TYPE_UNKNOWN(0, "UnKnown"),
+	/**
+	 * NONE
+	 */
+	EM_CFG_EAP_AUTH_TYPE_NONE(1, "NONE"),
+	/**
+	 * PAP
+	 */
+	EM_CFG_EAP_AUTH_TYPE_PAP(2, "PAP"),
+	/**
+	 * MSCHAP
+	 */
+	EM_CFG_EAP_AUTH_TYPE_MSCHAP(3, "MSCHAP"),
+	/**
+	 * MSCHAPV2
+	 */
+	EM_CFG_EAP_AUTH_TYPE_MSCHAPV2(4, "MSCHAPV2"),
+	/**
+	 * GTC
+	 */
+	EM_CFG_EAP_AUTH_TYPE_GTC(5, "GTC");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_EAP_AUTH_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_EAP_AUTH_TYPE enumType : EM_CFG_EAP_AUTH_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_EAP_AUTH_TYPE enumType : EM_CFG_EAP_AUTH_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_METHOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_METHOD.java
new file mode 100644
index 0000000..adef2da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_EAP_METHOD.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description EAP方法
+ * @date 2023/03/16 11:15:26
+ */
+public enum EM_CFG_EAP_METHOD {
+	/**
+	 * UnKnown
+	 */
+	EM_CFG_EAP_METHOD_UNKNOWN(0, "UnKnown"),
+	/**
+	 * PEAP
+	 */
+	EM_CFG_EAP_METHOD_PEAP(1, "PEAP"),
+	/**
+	 * TLS
+	 */
+	EM_CFG_EAP_METHOD_TLS(2, "TLS"),
+	/**
+	 * TTLS
+	 */
+	EM_CFG_EAP_METHOD_TTLS(3, "TTLS");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_EAP_METHOD(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_EAP_METHOD enumType : EM_CFG_EAP_METHOD.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_EAP_METHOD enumType : EM_CFG_EAP_METHOD.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_LIGHT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_LIGHT_TYPE.java
new file mode 100644
index 0000000..f951f35
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_LIGHT_TYPE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯光类型
+ * @date 2023/05/23 09:40:10
+ */
+public enum EM_CFG_LC_LIGHT_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_CFG_LC_LIGHT_TYPEUNKNOWN(0, "未知"),
+	/**
+	 * 红外灯
+	 */
+	EM_CFG_LC_LIGHT_TYPE_INFRAREDLIGHT(1, "红外灯"),
+	/**
+	 * 白光灯
+	 */
+	EM_CFG_LC_LIGHT_TYPE_WIHTELIGHT(2, "白光灯"),
+	/**
+	 * 激光灯
+	 */
+	EM_CFG_LC_LIGHT_TYPE_LASERLIGHT(3, "激光灯"),
+	/**
+	 * 智能混光灯(根据智能ID切换红外和白光灯)
+	 */
+	EM_CFG_LC_LIGHT_TYPE_AIMIXLIGHT(4, "智能混光灯(根据智能ID切换红外和白光灯)"),
+	/**
+	 * 指示灯
+	 */
+	EM_CFG_LC_LIGHT_TYPE_PILOTLIGHT(5, "指示灯");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_LC_LIGHT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_LC_LIGHT_TYPE enumType : EM_CFG_LC_LIGHT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_LC_LIGHT_TYPE enumType : EM_CFG_LC_LIGHT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_MODE.java
new file mode 100644
index 0000000..7c8c22e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_LC_MODE.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯光模式
+ * @date 2023/05/23 09:40:10
+ */
+public enum EM_CFG_LC_MODE {
+	/**
+	 * 未知
+	 */
+	EM_CFG_LC_MODE_UNKNOWN(0, "未知"),
+	/**
+	 * 手动
+	 */
+	EM_CFG_LC_MODE_MANUAL(1, "手动"),
+	/**
+	 * 倍率优先
+	 */
+	EM_CFG_LC_MODE_ZOOMPRIO(2, "倍率优先"),
+	/**
+	 * 定时(废弃)
+	 */
+	EM_CFG_LC_MODE_TIMING(3, "定时(废弃)"),
+	/**
+	 * 自动
+	 */
+	EM_CFG_LC_MODE_AUTO(4, "自动"),
+	/**
+	 * 关闭灯光
+	 */
+	EM_CFG_LC_MODE_OFF(5, "关闭灯光"),
+	/**
+	 * 支持多种灯光(废弃)
+	 */
+	EM_CFG_LC_MODE_EXCLUSIVEMANUAL(6, "支持多种灯光(废弃)"),
+	/**
+	 * 智能灯光(废弃)
+	 */
+	EM_CFG_LC_MODE_SMARTLIGHT(7, "智能灯光(废弃)"),
+	/**
+	 * 事件联动(废弃)
+	 */
+	EM_CFG_LC_MODE_LINKING(8, "事件联动(废弃)"),
+	/**
+	 * 光敏
+	 */
+	EM_CFG_LC_MODE_DUSKTODAWN(9, "光敏"),
+	/**
+	 * 强制打开灯光
+	 */
+	EM_CFG_LC_MODE_FORCEON(10, "强制打开灯光");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_LC_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_LC_MODE enumType : EM_CFG_LC_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_LC_MODE enumType : EM_CFG_LC_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java
new file mode 100644
index 0000000..2638429
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_CLOUDPROTOCOL_TYPE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 云存储协议类型
+ * @date 2022/09/08 19:33:10
+ */
+public enum EM_CFG_NAS_CLOUDPROTOCOL_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_CFG_NAS_CLOUDPROTOCOL_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * BaiduCloud
+	 */
+	EM_CFG_NAS_CLOUDPROTOCOL_TYPE_BAIDU_CLOUD(1, " BaiduCloud "),
+	/**
+	 * GoogleDrive
+	 */
+	EM_CFG_NAS_CLOUDPROTOCOL_TYPE_GOOGLE_DRIVE(2, " GoogleDrive "),
+	/**
+	 * Dropbox
+	 */
+	EM_CFG_NAS_CLOUDPROTOCOL_TYPE_DROPBOX(3, " Dropbox ");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_NAS_CLOUDPROTOCOL_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_NAS_CLOUDPROTOCOL_TYPE enumType : EM_CFG_NAS_CLOUDPROTOCOL_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_NAS_CLOUDPROTOCOL_TYPE enumType : EM_CFG_NAS_CLOUDPROTOCOL_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java
new file mode 100644
index 0000000..66484ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_CACHE_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  缓存类型枚举 
+* @date 2022/09/22 17:24:07
+*/
+public enum EM_CFG_NAS_DIRECTORY_CACHE_TYPE {
+/**
+未知枚举
+*/
+EM_CFG_NAS_DIRECTORY_CACHE_TYPE_UNKNOWN(0,"未知枚举"),
+/**
+直存
+*/
+EM_CFG_NAS_DIRECTORY_CACHE_TYPE_DIRECT(1,"直存"),
+/**
+回存
+*/
+EM_CFG_NAS_DIRECTORY_CACHE_TYPE_INDIRECT(2,"回存");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CFG_NAS_DIRECTORY_CACHE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CFG_NAS_DIRECTORY_CACHE_TYPE enumType : EM_CFG_NAS_DIRECTORY_CACHE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CFG_NAS_DIRECTORY_CACHE_TYPE enumType : EM_CFG_NAS_DIRECTORY_CACHE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_CFG_NAS_DIRECTORY_CACHE_TYPE getEnum(int value) {
+        for (EM_CFG_NAS_DIRECTORY_CACHE_TYPE e : EM_CFG_NAS_DIRECTORY_CACHE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CFG_NAS_DIRECTORY_CACHE_TYPE.EM_CFG_NAS_DIRECTORY_CACHE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java
new file mode 100644
index 0000000..8205023
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_NAS_DIRECTORY_PROTOCAL.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  共享类型枚举 
+* @date 2022/09/22 17:24:07
+*/
+public enum EM_CFG_NAS_DIRECTORY_PROTOCAL {
+/**
+未知枚举
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_UNKNOWN(0,"未知枚举"),
+/**
+NFS
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_NFS(1,"NFS"),
+/**
+FTP
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_FTP(2,"FTP"),
+/**
+SAMBA
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_SAMBA(3,"SAMBA"),
+/**
+ISCSI
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_ISCSI(4,"ISCSI"),
+/**
+表示裸的LV, 没有做共享文件夹
+*/
+EM_CFG_NAS_DIRECTORY_PROTOCAL_NONE(5,"表示裸的LV, 没有做共享文件夹");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CFG_NAS_DIRECTORY_PROTOCAL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CFG_NAS_DIRECTORY_PROTOCAL enumType : EM_CFG_NAS_DIRECTORY_PROTOCAL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CFG_NAS_DIRECTORY_PROTOCAL enumType : EM_CFG_NAS_DIRECTORY_PROTOCAL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_CFG_NAS_DIRECTORY_PROTOCAL getEnum(int value) {
+        for (EM_CFG_NAS_DIRECTORY_PROTOCAL e : EM_CFG_NAS_DIRECTORY_PROTOCAL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CFG_NAS_DIRECTORY_PROTOCAL.EM_CFG_NAS_DIRECTORY_PROTOCAL_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java
new file mode 100644
index 0000000..dfed64e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_OBJECT_FILTER_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 物体过滤类型
+ * @date 2021/07/06
+ */
+public enum EM_CFG_OBJECT_FILTER_TYPE {
+
+	// 未知
+	EM_CFG_OBJECT_FILTER_TYPE_UNKNOWN(0, "未知"),
+
+	// 人
+	EM_CFG_OBJECT_FILTER_TYPE_HUMAN(1, "人"),
+
+	// 车
+	EM_CFG_OBJECT_FILTER_TYPE_VEHICLE(2, "车");
+
+	private int value;
+	private String note;
+
+	private EM_CFG_OBJECT_FILTER_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_OBJECT_FILTER_TYPE enumType : EM_CFG_OBJECT_FILTER_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_OBJECT_FILTER_TYPE enumType : EM_CFG_OBJECT_FILTER_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_RULE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_RULE_TYPE.java
new file mode 100644
index 0000000..1b41620
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_RULE_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 规则类型
+ * @date 2022/12/19 09:10:21
+ */
+public enum EM_CFG_RULE_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_CFG_RULE_UNKNOWN(0, "未知"),
+	/**
+	 * 人数统计
+	 */
+	EM_CFG_RULE_NUMBER_STAT(1, "人数统计"),
+	/**
+	 * 区域内人数统计
+	 */
+	EM_CFG_RULE_MAN_NUM_DETECTION(2, "区域内人数统计");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_RULE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_RULE_TYPE enumType : EM_CFG_RULE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_RULE_TYPE enumType : EM_CFG_RULE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java
new file mode 100644
index 0000000..d7afcba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_AUTHENTICATION.java
@@ -0,0 +1,97 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 无线设备认证方式
+ * @date 2023/03/16 11:15:26
+ */
+public enum EM_CFG_WIRELESS_AUTHENTICATION {
+	/**
+	 * UnKnown
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_UNKNOWN(0, "UnKnown"),
+	/**
+	 * OPEN
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_OPEN(1, "OPEN"),
+	/**
+	 * SHARED
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_SHARED(2, "SHARED"),
+	/**
+	 * WPA
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA(3, "WPA"),
+	/**
+	 * WPA-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK(4, "WPA-PSK"),
+	/**
+	 * WPA2
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA2(5, "WPA2"),
+	/**
+	 * WPA2-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA2PSK(6, "WPA2-PSK"),
+	/**
+	 * WPA-NONE
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPANONE(7, "WPA-NONE"),
+	/**
+	 * WPA-PSK|WPA2-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK_WPA2PSK(8, "WPA-PSK|WPA2-PSK"),
+	/**
+	 * WPA|WPA2
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPA2(9, "WPA|WPA2"),
+	/**
+	 * WPA | WPA-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK(10, "WPA | WPA-PSK"),
+	/**
+	 * WPA2|WPA2-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA2_WPA2PSK(11, "WPA2|WPA2-PSK"),
+	/**
+	 * WPA|WPA-PSK|WPA2|WPA2-PSK
+	 */
+	EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK_WPA2_WPA2PSK(12, "WPA|WPA-PSK|WPA2|WPA2-PSK");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_WIRELESS_AUTHENTICATION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_WIRELESS_AUTHENTICATION enumType : EM_CFG_WIRELESS_AUTHENTICATION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_WIRELESS_AUTHENTICATION enumType : EM_CFG_WIRELESS_AUTHENTICATION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java
new file mode 100644
index 0000000..8c412c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WIRELESS_DATA_ENCRYPT.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 无线数据加密方式
+ * @date 2023/03/16 11:15:26
+ */
+public enum EM_CFG_WIRELESS_DATA_ENCRYPT {
+	/**
+	 * UnKnown
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_UNKNOWN(0, "UnKnown"),
+	/**
+	 * NONE
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_NONE(1, "NONE"),
+	/**
+	 * WEP
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_WEP(2, "WEP"),
+	/**
+	 * TKIP
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP(3, "TKIP"),
+	/**
+	 * AES(CCMP)
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_AES(4, "AES(CCMP)"),
+	/**
+	 * TKIP+AES
+	 */
+	EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP_AES(5, "TKIP+AES");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_WIRELESS_DATA_ENCRYPT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_WIRELESS_DATA_ENCRYPT enumType : EM_CFG_WIRELESS_DATA_ENCRYPT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_WIRELESS_DATA_ENCRYPT enumType : EM_CFG_WIRELESS_DATA_ENCRYPT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WORKMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WORKMODE.java
new file mode 100644
index 0000000..1ffd580
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CFG_WORKMODE.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 工作模式选择
+ * @date 2023/03/16 14:23:46
+ */
+public enum EM_CFG_WORKMODE {
+	/**
+	
+	*/
+	EM_WORKMODE_UNKNOWN(-1, ""),
+	/**
+	 * CDMA1x
+	 */
+	EM_WORKMODE_CDMA1X(0, " CDMA1x "),
+	/**
+	 * EVDO
+	 */
+	EM_WORKMODE_EVDO(1, " EVDO "),
+	/**
+	 * TD-SCDMA
+	 */
+	EM_WORKMODE_TDSCDMA(2, " TD-SCDMA "),
+	/**
+	 * WCDMA
+	 */
+	EM_WORKMODE_WCDMA(3, " WCDMA "),
+	/**
+	 * EDGE
+	 */
+	EM_WORKMODE_EDGE(4, " EDGE "),
+	/**
+	 * TDD-LTE
+	 */
+	EM_WORKMODE_TDDLTE(5, " TDD-LTE "),
+	/**
+	 * FDD-LTE
+	 */
+	EM_WORKMODE_FDDLTE(6, " FDD-LTE "),
+	/**
+	 * TD-LTE
+	 */
+	EM_WORKMODE_TDLTE(7, " TD-LTE "),
+	/**
+	 * Auto
+	 */
+	EM_WORKMODE_AUTO(8, " Auto ");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CFG_WORKMODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CFG_WORKMODE enumType : EM_CFG_WORKMODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CFG_WORKMODE enumType : EM_CFG_WORKMODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java
new file mode 100644
index 0000000..870b049
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNELS_STATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  通道类型 
+* @date 2022/10/09 11:22:21
+*/
+public enum EM_CHANNELS_STATE_TYPE {
+/**
+未知
+*/
+EM_CHANNELS_STATE_TYPE_UNKNOWN(0,"未知"),
+/**
+所有通道
+*/
+EM_CHANNELS_STATE_TYPE_ALL(1,"所有通道"),
+/**
+报警输入通道
+*/
+EM_CHANNELS_STATE_TYPE_ALARMIN(2,"报警输入通道"),
+/**
+报警输出通道
+*/
+EM_CHANNELS_STATE_TYPE_ALARMOUT(3,"报警输出通道"),
+/**
+警号通道
+*/
+EM_CHANNELS_STATE_TYPE_SIREN(4,"警号通道");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CHANNELS_STATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CHANNELS_STATE_TYPE enumType : EM_CHANNELS_STATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CHANNELS_STATE_TYPE enumType : EM_CHANNELS_STATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_CHANNELS_STATE_TYPE getEnum(int value) {
+        for (EM_CHANNELS_STATE_TYPE e : EM_CHANNELS_STATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CHANNELS_STATE_TYPE.EM_CHANNELS_STATE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_PROTOCOL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_PROTOCOL_TYPE.java
new file mode 100644
index 0000000..1b88340
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_PROTOCOL_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 跟设备对接时的拉流协议类型
+ * @date 2023/04/20 08:58:40
+ */
+public enum EM_CHANNEL_PROTOCOL_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_CHANNEL_PROTOCOL_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * Onvif接入
+	 */
+	EM_CHANNEL_PROTOCOL_TYPE_ONVIF(1, "Onvif接入"),
+	/**
+	 * 国标协议接入
+	 */
+	EM_CHANNEL_PROTOCOL_TYPE_GB28181(2, "国标协议接入"),
+	/**
+	 * Rtsp协议接入
+	 */
+	EM_CHANNEL_PROTOCOL_TYPE_RTSP(3, "Rtsp协议接入"),
+	/**
+	 * GB35114协议接入
+	 */
+	EM_CHANNEL_PROTOCOL_TYPE_GB35114(4, "GB35114协议接入");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CHANNEL_PROTOCOL_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CHANNEL_PROTOCOL_TYPE enumType : EM_CHANNEL_PROTOCOL_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CHANNEL_PROTOCOL_TYPE enumType : EM_CHANNEL_PROTOCOL_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_WIDTH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_WIDTH.java
new file mode 100644
index 0000000..6b00e55
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CHANNEL_WIDTH.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 通道宽度
+ * @date 2021/2/7
+ */
+public enum EM_CHANNEL_WIDTH {
+  /** 未知 */
+  EM_CHANNEL_WIDTH_UNKNOWN(-1, "未知"),
+  /** 600mm */
+  EM_CHANNEL_WIDTH_600(0, "600mm"),
+  /** 700mm */
+  EM_CHANNEL_WIDTH_700(1, "700mm"),
+  /** 800mm */
+  EM_CHANNEL_WIDTH_800(2, "800mm"),
+  /** 900mm */
+  EM_CHANNEL_WIDTH_900(3, "900mm"),
+  /** 1000mm */
+  EM_CHANNEL_WIDTH_1000(4, "1000mm"),
+  /** 1100mm */
+  EM_CHANNEL_WIDTH_1100(5, "1100mm"),
+  /** 1200mm */
+  EM_CHANNEL_WIDTH_1200(6, "1200mm");
+  private int emWidth;
+  private String desc;
+
+  EM_CHANNEL_WIDTH(int emWidth, String desc) {
+    this.emWidth = emWidth;
+    this.desc = desc;
+  }
+
+  public int getEmWidth() {
+    return emWidth;
+  }
+
+  public void setEmWidth(int emWidth) {
+    this.emWidth = emWidth;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+  public static EM_CHANNEL_WIDTH getChannelWidth(int emWidth){
+    for (EM_CHANNEL_WIDTH channelWidth :EM_CHANNEL_WIDTH.values() ) {
+        if(channelWidth.emWidth==emWidth){
+          return channelWidth;
+        }
+    }
+    return EM_CHANNEL_WIDTH_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java
new file mode 100644
index 0000000..0096520
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITIZENIDCARD_SEX_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_CITIZENIDCARD_SEX_TYPE {
+    /**
+     * 未知
+     */
+    EM_CITIZENIDCARD_SEX_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 男
+     */
+    EM_CITIZENIDCARD_SEX_TYPE_MALE(1, "男"),
+    /**
+     * 女
+     */
+    EM_CITIZENIDCARD_SEX_TYPE_FEMALE(2, "女"),
+    /**
+     * 未说明
+     */
+    EM_CITIZENIDCARD_SEX_TYPE_UNTOLD(3, "未说明");
+
+    private int value;
+    private String note;
+
+    private EM_CITIZENIDCARD_SEX_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CITIZENIDCARD_SEX_TYPE enumType : EM_CITIZENIDCARD_SEX_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CITIZENIDCARD_SEX_TYPE enumType : EM_CITIZENIDCARD_SEX_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java
new file mode 100644
index 0000000..6d999a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CITYMOTOR_STATUS.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车辆状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:00
+ */
+public class EM_CITYMOTOR_STATUS extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CITYMOTOR_STATUS_UNKNOWN = 0;
+    /**
+     *  驶入
+     */
+    public static final int					EM_CITYMOTOR_STATUS_DRIVE_IN = 1;
+    /**
+     *  驶离
+     */
+    public static final int					EM_CITYMOTOR_STATUS_DRIVE_OUT = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLASS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLASS_TYPE.java
new file mode 100644
index 0000000..d191eba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLASS_TYPE.java
@@ -0,0 +1,387 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 大类业务方案
+ * @since : Created in 2021/11/05 16:06
+ */
+
+public enum EM_CLASS_TYPE {
+    /**
+     * 未知业务
+     */
+    EM_CLASS_UNKNOWN(0,"未知业务"),
+    /**
+     * 视频浓缩
+     */
+    EM_CLASS_VIDEO_SYNOPSIS(1,"视频浓缩"),
+    /**
+     * 卡口
+     */
+    EM_CLASS_TRAFFIV_GATE(2,"卡口"),
+    /**
+     * 电警
+     */
+    EM_CLASS_ELECTRONIC_POLICE(3,"电警"),
+    /**
+     * 单球违停
+     */
+    EM_CLASS_SINGLE_PTZ_PARKING(4,"单球违停"),
+    /**
+     * 主从违停
+     */
+    EM_CLASS_PTZ_PARKINBG(5,"主从违停"),
+    /**
+     * 交通事件 Traffic 
+     */
+    EM_CLASS_TRAFFIC(6,"交通事件 Traffic "),
+    /**
+     * 通用行为分析 Normal 
+     */
+    EM_CLASS_NORMAL(7,"通用行为分析 Normal "),
+    /**
+     * 
+     */
+    EM_CLASS_PS(8,""),
+    /**
+     * 金融行为分析 ATM 
+     */
+    EM_CLASS_ATM(9,"金融行为分析 ATM "),
+    /**
+     * 地铁行为分析
+     */
+    EM_CLASS_METRO(10,"地铁行为分析"),
+    /**
+     * 目标检测 FaceDetection 
+     */
+    EM_CLASS_FACE_DETECTION(11,"目标检测 FaceDetection "),
+    /**
+     * 目标识别 FaceRecognition 
+     */
+    EM_CLASS_FACE_RECOGNITION(12,"目标识别 FaceRecognition "),
+    /**
+     * 人数统计 NumberStat 
+     */
+    EM_CLASS_NUMBER_STAT(13,"人数统计 NumberStat "),
+    /**
+     * 热度图 HeatMap 
+     */
+    EM_CLASS_HEAT_MAP(14,"热度图 HeatMap "),
+    /**
+     * 视频诊断 VideoDiagnosis 
+     */
+    EM_CLASS_VIDEO_DIAGNOSIS(15,"视频诊断 VideoDiagnosis "),
+    /**
+     * 视频增强
+     */
+    EM_CLASS_VIDEO_ENHANCE(16,"视频增强"),
+    /**
+     * 烟火检测
+     */
+    EM_CLASS_SMOKEFIRE_DETECT(17,"烟火检测"),
+    /**
+     * 车辆特征识别 VehicleAnalyse 
+     */
+    EM_CLASS_VEHICLE_ANALYSE(18,"车辆特征识别 VehicleAnalyse "),
+    /**
+     * 人员特征识别
+     */
+    EM_CLASS_PERSON_FEATURE(19,"人员特征识别"),
+    /**
+     * 多预置点目标检测 SDFaceDetect 
+     */
+    EM_CLASS_SDFACEDETECTION(20,"多预置点目标检测 SDFaceDetect "),
+    /**
+     * 球机热度图计划 HeatMapPlan 
+     */
+    EM_CLASS_HEAT_MAP_PLAN(21,"球机热度图计划 HeatMapPlan "),
+    /**
+     * 球机客流量统计计划  NumberStatPlan 
+     */
+    EM_CLASS_NUMBERSTAT_PLAN(22,"球机客流量统计计划  NumberStatPlan "),
+    /**
+     * 金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
+     */
+    EM_CLASS_ATMFD(23,"金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化"),
+    /**
+     * 高速交通事件检测 Highway 
+     */
+    EM_CLASS_HIGHWAY(24,"高速交通事件检测 Highway "),
+    /**
+     * 城市交通事件检测  City 
+     */
+    EM_CLASS_CITY(25,"城市交通事件检测  City "),
+    /**
+     * 民用简易跟踪 LeTrack 
+     */
+    EM_CLASS_LETRACK(26,"民用简易跟踪 LeTrack "),
+    /**
+     * 打靶相机 SCR 
+     */
+    EM_CLASS_SCR(27,"打靶相机 SCR "),
+    /**
+     * 立体视觉(双目) StereoVision 
+     */
+    EM_CLASS_STEREO_VISION(28,"立体视觉(双目) StereoVision "),
+    /**
+     * 人体检测 HumanDetect 
+     */
+    EM_CLASS_HUMANDETECT(29,"人体检测 HumanDetect "),
+    /**
+     * 人脸分析  FaceAnalysis 
+     */
+    EM_CLASS_FACE_ANALYSIS(30,"人脸分析  FaceAnalysis "),
+    /**
+     * X光检测  XRayDetection 
+     */
+    EM_CALSS_XRAY_DETECTION(31,"X光检测  XRayDetection "),
+    /**
+     * 双目相机客流量统计  StereoNumber 
+     */
+    EM_CLASS_STEREO_NUMBER(32,"双目相机客流量统计  StereoNumber "),
+    /**
+     * 人群分布图
+     */
+    EM_CLASS_CROWDDISTRIMAP(33,"人群分布图"),
+    /**
+     * 目标检测
+     */
+    EM_CLASS_OBJECTDETECT(34,"目标检测"),
+    /**
+     * IVSS目标检测  FaceAttribute 
+     */
+    EM_CLASS_FACEATTRIBUTE(35,"IVSS目标检测  FaceAttribute "),
+    /**
+     * IVSS目标识别  FaceCompare 
+     */
+    EM_CLASS_FACECOMPARE(36,"IVSS目标识别  FaceCompare "),
+    /**
+     * 立体行为分析  StereoBehavior 
+     */
+    EM_CALSS_STEREO_BEHAVIOR(37,"立体行为分析  StereoBehavior "),
+    /**
+     * 智慧城管  IntelliCityMgr 
+     */
+    EM_CALSS_INTELLICITYMANAGER(38,"智慧城管  IntelliCityMgr "),
+    /**
+     * 防护舱(ATM舱内) ProtectiveCabin 
+     */
+    EM_CALSS_PROTECTIVECABIN(39,"防护舱(ATM舱内) ProtectiveCabin "),
+    /**
+     * 飞机行为检测  AirplaneDetect 
+     */
+    EM_CALSS_AIRPLANEDETECT(40,"飞机行为检测  AirplaneDetect "),
+    /**
+     * 人群态势(人群分布图服务) CrowdPosture 
+     */
+    EM_CALSS_CROWDPOSTURE(41,"人群态势(人群分布图服务) CrowdPosture "),
+    /**
+     * 打电话检测  PhoneCallDetect 
+     */
+    EM_CLASS_PHONECALLDETECT(42,"打电话检测  PhoneCallDetect "),
+    /**
+     * 烟雾检测  SmokeDetection 
+     */
+    EM_CLASS_SMOKEDETECTION(43,"烟雾检测  SmokeDetection "),
+    /**
+     * 船只检测  BoatDetection 
+     */
+    EM_CLASS_BOATDETECTION(44,"船只检测  BoatDetection "),
+    /**
+     * 吸烟检测  SmokingDetect 
+     */
+    EM_CLASS_SMOKINGDETECT(45,"吸烟检测  SmokingDetect "),
+    /**
+     * 水利监测  WaterMonitor 
+     */
+    EM_CLASS_WATERMONITOR(46,"水利监测  WaterMonitor "),
+    /**
+     * 生成图规则  GenerateGraphDetection 
+     */
+    EM_CLASS_GENERATEGRAPHDETECTION(47,"生成图规则  GenerateGraphDetection "),
+    /**
+     * 交通停车  TrafficPark 
+     */
+    EM_CLASS_TRAFFIC_PARK(48,"交通停车  TrafficPark "),
+    /**
+     * 作业检测  OperateMonitor 
+     */
+    EM_CLASS_OPERATEMONITOR(49,"作业检测  OperateMonitor "),
+    /**
+     * 智慧零售大类  IntelliRetail 
+     */
+    EM_CLASS_INTELLI_RETAIL(50,"智慧零售大类  IntelliRetail "),
+    /**
+     * 教育智慧课堂 ClassroomAnalyse 
+     */
+    EM_CLASS_CLASSROOM_ANALYSE(51,"教育智慧课堂 ClassroomAnalyse "),
+    /**
+     * 特征向量提取大类  FeatureAbstract 
+     */
+    EM_CLASS_FEATURE_ABSTRACT(52,"特征向量提取大类  FeatureAbstract "),
+    /**
+     * 人体检测大类  FaceBodyDetect 
+     */
+    EM_CLASS_FACEBODY_DETECT(53,"人体检测大类  FaceBodyDetect "),
+    /**
+     * 人体识别大类  FaceBodyAnalyse 
+     */
+    EM_CLASS_FACEBODY_ANALYSE(54,"人体识别大类  FaceBodyAnalyse "),
+    /**
+     * 车辆密度  VehiclesDistri 
+     */
+    EM_CLASS_VEHICLES_DISTRI(55,"车辆密度  VehiclesDistri "),
+    /**
+     * 智慧养殖检测  IntelliBreed 
+     */
+    EM_CLASS_INTELLI_BREED(56,"智慧养殖检测  IntelliBreed "),
+    /**
+     *
+     */
+    EM_CLASS_INTELLI_PS(57,""),
+    /**
+     * 电力检测  ElectricDetect 
+     */
+    EM_CLASS_ELECTRIC_DETECT(58,"电力检测  ElectricDetect "),
+    /**
+     * 雷达检测  RadarDetect 
+     */
+    EM_CLASS_RADAR_DETECT(59,"雷达检测  RadarDetect "),
+    /**
+     * 车位检测大类  ParkingSpace 
+     */
+    EM_CLASS_PARKINGSPACE(60,"车位检测大类  ParkingSpace "),
+    /**
+     * 智慧金融  IntelliFinance 
+     */
+    EM_CLASS_INTELLI_FINANCE(61,"智慧金融  IntelliFinance "),
+    /**
+     * 人群异常检测  CrowdAbnormal 
+     */
+    EM_CLASS_CROWD_ABNORMAL(62,"人群异常检测  CrowdAbnormal "),
+    /**
+     * 人体温智能检测  AnatomyTempDetect 
+     */
+    EM_CLASS_ANATOMY_TEMP_DETECT(63,"人体温智能检测  AnatomyTempDetect "),
+    /**
+     * 天气监控  WeatherMonitor 
+     */
+    EM_CLASS_WEATHER_MONITOR(64,"天气监控  WeatherMonitor "),
+    /**
+     * 电梯门禁  ElevatorAccessControl 
+     */
+    EM_CLASS_ELEVATOR_ACCESS_CONTROL(65,"电梯门禁  ElevatorAccessControl "),
+    /**
+     * 违章建筑	 BreakRuleBuilding 
+     */
+    EM_CLASS_BREAK_RULE_BUILDING(66,"违章建筑	 BreakRuleBuilding "),
+    /**
+     * 异物检测  ForeignDetection 
+     */
+    EM_CLASS_FOREIGN_DETECT(67,"异物检测  ForeignDetection "),
+    /**
+     * 全景交通  PanoramaTraffic 
+     */
+    EM_CLASS_PANORAMA_TRAFFIC(68,"全景交通  PanoramaTraffic "),
+    /**
+     * 传送带阻塞  ConveyorBlock 
+     */
+    EM_CLASS_CONVEY_OR_BLOCK(69,"传送带阻塞  ConveyorBlock "),
+    /**
+     * 厨房有害动物检测  KitchenAnimal 
+     */
+    EM_CLASS_KITCHEN_ANIMAL(70,"厨房有害动物检测  KitchenAnimal "),
+    /**
+     * 万物检测  AllSeeingEye 
+     */
+    EM_CLASS_ALLSEEINGEYE(71,"万物检测  AllSeeingEye "),
+    /**
+     * 智慧消防  IntelliFireControl 
+     */
+    EM_CLASS_INTELLI_FIRE_CONTROL(72,"智慧消防  IntelliFireControl "),
+    /**
+     * 传送带检测  ConveyerBelt 
+     */
+    EM_CLASS_CONVERYER_BELT(73,"传送带检测  ConveyerBelt "),
+    /**
+     * 智慧物流  IntelliLogistics 
+     */
+    EM_CLASS_INTELLI_LOGISTICS(74,"智慧物流  IntelliLogistics "),
+    /**
+     * 烟火检测 SmokeFire 
+     */
+    EM_CLASS_SMOKE_FIRE(75,"烟火检测 SmokeFire "),
+    /**
+     * 物品监控 ObjectMonitor 
+     */
+    EM_CLASS_OBJECT_MONITOR(76,"物品监控 ObjectMonitor "),
+    /**
+     * 智能停车 IntelliParking 
+     */
+    EM_CLASS_INTELLI_PARKING(77,"智能停车 IntelliParking "),
+    /**
+     * 智慧消防 FireControl
+     */
+    EM_CLASS_FIRE_CONTROL(78,"智慧消防 FireControl "),
+    /**
+     * 动物检测  AnimalDetection
+     */
+    EM_CLASS_ANIMAL_DETECTION(79,"动物检测  AnimalDetection "),
+    /**
+     * 火警监控  FireControlMonitor
+     */
+    EM_CLASS_FIRE_CONTROL_MONITOR(80,"火警监控  FireControlMonitor "),   
+    /**
+     * 鱼群监测 FishMonitor
+     */
+    EM_CLASS_FISH_MONITOR(81,"鱼群监测 FishMonitor "),    
+    /**
+     * 工程车检测 ShopTruckDetect
+     */
+    EM_CLASS_SHOPTRUCK_DETECT(82,"工程车检测 ShopTruckDetect ");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_CLASS_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CLASS_TYPE enumType : EM_CLASS_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CLASS_TYPE enumType : EM_CLASS_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CLASS_TYPE getEnum(int value) {
+        for (EM_CLASS_TYPE e : EM_CLASS_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CLASS_TYPE.EM_CLASS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_COLOR.java
new file mode 100644
index 0000000..63f49fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_COLOR.java
@@ -0,0 +1,138 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 衣服颜色
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_CLOTHES_COLOR extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CLOTHES_COLOR_UNKNOWN = 0;
+    /**
+     *  白色
+     */
+    public static final int					EM_CLOTHES_COLOR_WHITE = 1;
+    /**
+     *  橙色
+     */
+    public static final int					EM_CLOTHES_COLOR_ORANGE = 2;
+    /**
+     *  粉色
+     */
+    public static final int					EM_CLOTHES_COLOR_PINK = 3;
+    /**
+     *  黑色
+     */
+    public static final int					EM_CLOTHES_COLOR_BLACK = 4;
+    /**
+     *  红色
+     */
+    public static final int					EM_CLOTHES_COLOR_RED = 5;
+    /**
+     *  黄色
+     */
+    public static final int					EM_CLOTHES_COLOR_YELLOW = 6;
+    /**
+     *  灰色
+     */
+    public static final int					EM_CLOTHES_COLOR_GRAY = 7;
+    /**
+     *  蓝色
+     */
+    public static final int					EM_CLOTHES_COLOR_BLUE = 8;
+    /**
+     *  绿色 
+     */
+    public static final int					EM_CLOTHES_COLOR_GREEN = 9;
+    /**
+     *  紫色
+     */
+    public static final int					EM_CLOTHES_COLOR_PURPLE = 10;
+    /**
+     *  棕色
+     */
+    public static final int					EM_CLOTHES_COLOR_BROWN = 11;
+    /**
+     *  深橙色
+     */
+    public static final int					EM_CLOTHES_COLOR_DARKORANGE = 12;
+    /**
+     *  其他颜色(该选项设备协议已不支持, 此处为了兼容保留)
+     */
+    public static final int					EM_CLOTHES_COLOR_OTHER = 13;
+    /**
+     *  银色
+     */
+    public static final int					EM_CLOTHES_COLOR_SILVER = 14;
+    /**
+     *  暗紫罗兰色
+     */
+    public static final int					EM_CLOTHES_COLOR_DARKVIOLET = 15;
+    /**
+     *  栗色
+     */
+    public static final int					EM_CLOTHES_COLOR_MARRON = 16;
+    /**
+     *  暗灰色
+     */
+    public static final int					EM_CLOTHES_COLOR_DIMGRAY = 17;
+    /**
+     *  白烟色
+     */
+    public static final int					EM_CLOTHES_COLOR_WHITESMOKE = 18;
+    /**
+     *  浅玫瑰色
+     */
+    public static final int					EM_CLOTHES_COLOR_MISTYROSE = 19;
+    /**
+     *  番茄红色
+     */
+    public static final int					EM_CLOTHES_COLOR_TOMATO = 20;
+    /**
+     *  橄榄色
+     */
+    public static final int					EM_CLOTHES_COLOR_OLIVE = 21;
+    /**
+     *  金色
+     */
+    public static final int					EM_CLOTHES_COLOR_GLOD = 22;
+    /**
+     *  暗橄榄绿色
+     */
+    public static final int					EM_CLOTHES_COLOR_DARKOLIVEGREEN = 23;
+    /**
+     *  黄绿色
+     */
+    public static final int					EM_CLOTHES_COLOR_CHARTREUSE = 24;
+    /**
+     *  绿黄色
+     */
+    public static final int					EM_CLOTHES_COLOR_GREENYELLOW = 25;
+    /**
+     *  森林绿色
+     */
+    public static final int					EM_CLOTHES_COLOR_FORESTGREEN = 26;
+    /**
+     *  海洋绿色
+     */
+    public static final int					EM_CLOTHES_COLOR_SEAGREEN = 27;
+    /**
+     *  深天蓝色
+     */
+    public static final int					EM_CLOTHES_COLOR_DEEPSKYBLUE = 28;
+    /**
+     *  青色
+     */
+    public static final int					EM_CLOTHES_COLOR_CYAN = 29;
+    /**
+     *  浅绿色
+     */
+    public static final int					EM_CLOTHES_COLOR_LIGHTGREEN = 30;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java
new file mode 100644
index 0000000..281a200
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_LEGAL_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 工作服合法状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_CLOTHES_LEGAL_STATE {
+    /**
+     * 未知
+     */
+    EM_CLOTHES_LEGAL_STATE_UNKNOWN(0,"未知"),
+    /**
+     * 不合法
+     */
+    EM_CLOTHES_LEGAL_STATE_WRONGFUL(1,"不合法"),
+    /**
+     * 合法
+     */
+    EM_CLOTHES_LEGAL_STATE_LEGAL(2,"合法");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_CLOTHES_LEGAL_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CLOTHES_LEGAL_STATE enumType : EM_CLOTHES_LEGAL_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CLOTHES_LEGAL_STATE enumType : EM_CLOTHES_LEGAL_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CLOTHES_LEGAL_STATE getEnum(int value) {
+        for (EM_CLOTHES_LEGAL_STATE e : EM_CLOTHES_LEGAL_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CLOTHES_LEGAL_STATE.EM_CLOTHES_LEGAL_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_PATTERN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_PATTERN.java
new file mode 100644
index 0000000..1ee3122
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_PATTERN.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 衣服图案
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_CLOTHES_PATTERN extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_CLOTHES_PATTERN_UNKNOWN = 0;
+    /**
+     *  纯色
+     */
+    public static final int					EM_CLOTHES_PATTERN_PURE = 1;
+    /**
+     *  条纹
+     */
+    public static final int					EM_CLOTHES_PATTERN_STRIPE = 2;
+    /**
+     *  图案
+     */
+    public static final int					EM_CLOTHES_PATTERN_PATTERN = 3;
+    /**
+     *  缝隙
+     */
+    public static final int					EM_CLOTHES_PATTERN_GAP = 4;
+    /**
+     *  格子
+     */
+    public static final int					EM_CLOTHES_PATTERN_LATTICE = 5;
+    /**
+     *  拼接
+     */
+    public static final int					EM_CLOTHES_PATTERN_SPLITJOIN = 6;
+    /**
+     *  碎花
+     */
+    public static final int					EM_CLOTHES_PATTERN_FLORAL = 7;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_TYPE.java
new file mode 100644
index 0000000..6a1cb2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CLOTHES_TYPE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * EM_CLOTHES_TYPE
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_CLOTHES_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 未知
+     */
+    public static final int					EM_CLOTHES_TYPE_UNKNOWN = 0;
+    /**
+     * 长袖
+     */
+    public static final int					EM_CLOTHES_TYPE_LONG_SLEEVE = 1;
+    /**
+     * 短袖
+     */
+    public static final int					EM_CLOTHES_TYPE_SHORT_SLEEVE = 2;
+    /**
+     * 长裤
+     */
+    public static final int					EM_CLOTHES_TYPE_TROUSERS = 3;
+    /**
+     * 短裤
+     */
+    public static final int					EM_CLOTHES_TYPE_SHORTS = 4;
+    /**
+     * 裙子
+     */
+    public static final int					EM_CLOTHES_TYPE_SKIRT = 5;
+    /**
+     * 背心
+     */
+    public static final int					EM_CLOTHES_TYPE_WAISTCOAT = 6;
+    /**
+     * 超短裤
+     */
+    public static final int					EM_CLOTHES_TYPE_MINIPANTS = 7;
+    /**
+     * 超短裙
+     */
+    public static final int					EM_CLOTHES_TYPE_MINISKIRT = 8;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COAT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COAT_TYPE.java
new file mode 100644
index 0000000..9bc5205
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COAT_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 上衣类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_COAT_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_COAT_TYPE_UNKNOWN = 0;
+    /**
+     *  长袖
+     */
+    public static final int					EM_COAT_TYPE_LONG_SLEEVE = 1;
+    /**
+     *  短袖
+     */
+    public static final int					EM_COAT_TYPE_COTTA = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java
new file mode 100644
index 0000000..bdebdeb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CODEID_SENSE_METHOD_TYPE.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 传感器方式
+ * @date 2023/03/16 14:52:52
+ */
+public enum EM_CODEID_SENSE_METHOD_TYPE {
+	/**
+	 * 未知的
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_UNKOWN(0, "未知的"),
+	/**
+	 * 门磁
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_DOOR_MAGNETISM(1, "门磁"),
+	/**
+	 * 燃气传感
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_GAS_SENSOR(2, "燃气传感"),
+	/**
+	 * 幕帘传感器
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_CURTAIN_SENSOR(3, "幕帘传感器"),
+	/**
+	 * 移动传感器
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_MOBILE_SENSOR(4, "移动传感器"),
+	/**
+	 * 被动红外传感器
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_PASSIVEINFRA(5, "被动红外传感器"),
+	/**
+	 * 紧急按钮
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_URGENCY_BUTTON(6, "紧急按钮"),
+	/**
+	 * 烟雾传感器
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_SMOKING_SENSOR(7, "烟雾传感器"),
+	/**
+	 * 双鉴传感器(红外+微波)
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_DOUBLEMETHOD(8, "双鉴传感器(红外+微波)"),
+	/**
+	 * 水浸传感器
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_WATER_SENSOR(9, "水浸传感器"),
+	/**
+	 * 三技术
+	 */
+	EM_CODEID_SENSE_METHOD_TYPE_THREEMETHOD(10, "三技术");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CODEID_SENSE_METHOD_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CODEID_SENSE_METHOD_TYPE enumType : EM_CODEID_SENSE_METHOD_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CODEID_SENSE_METHOD_TYPE enumType : EM_CODEID_SENSE_METHOD_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java
new file mode 100644
index 0000000..b99395d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLECTIVITY_STATE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 诊断结果状态
+ * @date 2021/2/22
+ */
+public enum EM_COLLECTIVITY_STATE {
+  /** 成功 */
+  EM_COLLECTIVITY_STATE_SUCCESSED,
+  /** 失败 */
+  EM_COLLECTIVITY_STATE_FAILED;
+
+  /**
+   * 默认返回failed
+   * @param state
+   * @return
+   */
+  public EM_COLLECTIVITY_STATE getCollectivityState(int state) {
+    for (EM_COLLECTIVITY_STATE collectivityState : EM_COLLECTIVITY_STATE.values()) {
+      if (collectivityState.ordinal() == state) {
+        return collectivityState;
+      }
+    }
+    return EM_COLLECTIVITY_STATE_FAILED;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLISION_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLISION_MODE.java
new file mode 100644
index 0000000..b37658d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COLLISION_MODE.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 闸机防冲撞模式
+ * @date 2021/2/7
+ */
+public enum EM_COLLISION_MODE {
+  /** 未知 */
+  EM_COLLISION_MODE_UNKNOWN(-1, "未知"),
+  /** 2s松开离合 */
+  EM_COLLISION_MODE_2S(0, "2s松开离合"),
+  /** 5s松开离合 */
+  EM_COLLISION_MODE_5S(1, "5s松开离合"),
+  /** 人员离开松开离合 */
+  EM_COLLISION_MODE_LEAVING(2, "人员离开松开离合");
+  private int mode;
+  private String desc;
+
+  EM_COLLISION_MODE(int mode, String desc) {
+    this.mode = mode;
+    this.desc = desc;
+  }
+
+  public int getMode() {
+    return mode;
+  }
+
+  public void setMode(int mode) {
+    this.mode = mode;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java
new file mode 100644
index 0000000..a31bcec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMMON_SEAT_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 默认检测最大座驾个数
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_COMMON_SEAT_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未识别
+     */
+    public static final int					COMMON_SEAT_TYPE_UNKNOWN = 0;
+    /**
+     *  主驾驶
+     */
+    public static final int					COMMON_SEAT_TYPE_MAIN = 1;
+    /**
+     *  副驾驶
+     */
+    public static final int					COMMON_SEAT_TYPE_SLAVE = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java
new file mode 100644
index 0000000..f64bc0e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMM_ATTACHMENT_TYPE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车辆物件类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_COMM_ATTACHMENT_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知类型       
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_UNKNOWN = 0;
+    /**
+     *  摆件       
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_FURNITURE = 1;
+    /**
+     *  挂件       
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_PENDANT = 2;
+    /**
+     *  纸巾盒       
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_TISSUEBOX = 3;
+    /**
+     *  危险品  
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_DANGER = 4;
+    /**
+     *  香水
+     */
+    public static final int					COMM_ATTACHMENT_TYPE_PERFUMEBOX = 5;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPARE_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPARE_RESULT.java
new file mode 100644
index 0000000..5e9ac0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPARE_RESULT.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 比对结果
+ * @date 2021/08/15
+ */
+public enum EM_COMPARE_RESULT {
+	// 未知
+	EM_COMPARE_RESULT_UNKNOWN(-1, "未知"),
+	// 成功
+	EM_COMPARE_RESULT_SUCCESS(0, "成功"),
+	// 其他错误
+	EM_COMPARE_RESULT_OTHERERROR(1, "其他错误"),
+    // 不在人脸库中
+	EM_COMPARE_RESULT_NOTINDATABASE(2, "不在人脸库中"),
+    // 超过单日进门次数限制
+	EM_COMPARE_RESULT_EXCEED_SINGLE_DAY_ENTER_TIMES(3, "超过单日进门次数限制"),
+    // 无进门记录,离开失败
+	EM_COMPARE_RESULT_NO_ENTER_RECORD_LEAVE_FAIL(4, "无进门记录,离开失败"),
+    // 区域人员已满
+	EM_COMPARE_RESULT_AREA_FULL(5, "区域人员已满"),
+	// 防反潜验证失败(没有正常出门记录再次进门)
+	EM_COMPARE_RESULT_REPEATENTER_CHECK_FAIL(6, "防反潜验证失败(没有正常出门记录再次进门)");
+
+	private int value;
+	private String note;
+
+	private EM_COMPARE_RESULT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_COMPARE_RESULT enumType : EM_COMPARE_RESULT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_COMPARE_RESULT enumType : EM_COMPARE_RESULT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANCE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANCE_STATE.java
new file mode 100644
index 0000000..c5edfd8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANCE_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 合规检测状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_COMPLIANCE_STATE {
+    /**
+     * 合规
+     */
+    EM_COMPLIANCE_STATE_COMPLIANT(0,"合规"),
+    /**
+     * 不合规
+     */
+    EM_COMPLIANCE_STATE_NONCOMPLIANT(1,"不合规"),
+    /**
+     * 未知
+     */
+    EM_COMPLIANCE_STATE_UNKNOWN(2,"未知");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_COMPLIANCE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COMPLIANCE_STATE enumType : EM_COMPLIANCE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COMPLIANCE_STATE enumType : EM_COMPLIANCE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COMPLIANCE_STATE getEnum(int value) {
+        for (EM_COMPLIANCE_STATE e : EM_COMPLIANCE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COMPLIANCE_STATE.EM_COMPLIANCE_STATE_COMPLIANT;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java
new file mode 100644
index 0000000..1e86011
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPLIANTDETAIL_TYPE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 判断是否合规的属性列表信息
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_COMPLIANTDETAIL_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_COMPLIANTDETAIL_UNKNOWN = 0;
+    /**
+     *  面具
+     */
+    public static final int					EM_COMPLIANTDETAIL_MASK = 1;
+    /**
+     *  头盔
+     */
+    public static final int					EM_COMPLIANTDETAIL_HELMET = 2;
+    /**
+     *  反光背心
+     */
+    public static final int					EM_COMPLIANTDETAIL_VEST = 3;
+    /**
+     *  反光眼镜
+     */
+    public static final int					EM_COMPLIANTDETAIL_GLASSESS = 4;
+    /**
+     *  上装颜色
+     */
+    public static final int					EM_COMPLIANTDETAIL_COATCOLOR = 5;
+    /**
+     *  下装颜色	
+     */
+    public static final int					EM_COMPLIANTDETAIL_TROUSESCOLOR = 6;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java
new file mode 100644
index 0000000..1750a94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COMPOSIT_CHANNEL_BIND_MODE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 默认组合通道绑定模式
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 15:32
+ */
+public enum EM_COMPOSIT_CHANNEL_BIND_MODE {
+    /**
+     * 未知
+     */
+    EM_COMPOSIT_CHANNEL_BIND_MODE_UNKNOWN(0, "未知"),
+    /**
+     * 自动
+     */
+    EM_COMPOSIT_CHANNEL_BIND_MODE_AUTOMATIC(1, "自动"),
+    /**
+     * 半自动
+     */
+    EM_COMPOSIT_CHANNEL_BIND_MODE_SEMIAUTOMATIC(2, "半自动"),
+    /**
+     * 手动
+     */
+    EM_COMPOSIT_CHANNEL_BIND_MODE_MANUAL(3, "手动");
+
+    private int value;
+    private String note;
+
+    EM_COMPOSIT_CHANNEL_BIND_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COMPOSIT_CHANNEL_BIND_MODE enumType : EM_COMPOSIT_CHANNEL_BIND_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COMPOSIT_CHANNEL_BIND_MODE enumType : EM_COMPOSIT_CHANNEL_BIND_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COMPOSIT_CHANNEL_BIND_MODE getEnum(int value) {
+        for (EM_COMPOSIT_CHANNEL_BIND_MODE e : EM_COMPOSIT_CHANNEL_BIND_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COMPOSIT_CHANNEL_BIND_MODE.EM_COMPOSIT_CHANNEL_BIND_MODE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java
new file mode 100644
index 0000000..7dc3e26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_EVENT_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 消费记录类型
+* @date 2022/03/07 11:45:31
+*/
+public enum EM_CONSUMPTION_EVENT_TYPE {
+/**
+未知
+*/
+EM_CONSUMPTION_EVENT_TYPE_UNKNOWN(-1,"未知"),
+/**
+定额消费事件
+*/
+EM_CONSUMPTION_EVENT_TYPE_QUOTA(0,"定额消费事件"),
+/**
+非定额消费事件
+*/
+EM_CONSUMPTION_EVENT_TYPE_NONQUOTA(1,"非定额消费事件"),
+/**
+充值事件
+*/
+EM_CONSUMPTION_EVENT_TYPE_DEPOSIT(2,"充值事件"),
+/**
+末次返还事件
+*/
+EM_CONSUMPTION_EVENT_TYPE_RESTORE(3,"末次返还事件");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CONSUMPTION_EVENT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CONSUMPTION_EVENT_TYPE enumType : EM_CONSUMPTION_EVENT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CONSUMPTION_EVENT_TYPE enumType : EM_CONSUMPTION_EVENT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_CONSUMPTION_EVENT_TYPE getEnum(int value) {
+        for (EM_CONSUMPTION_EVENT_TYPE e : EM_CONSUMPTION_EVENT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CONSUMPTION_EVENT_TYPE.EM_CONSUMPTION_EVENT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java
new file mode 100644
index 0000000..05f8fc2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_RECORD_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 消费记录类型
+* @date 2022/03/08 17:16:39
+*/
+public enum EM_CONSUMPTION_RECORD_TYPE {
+/**
+未知
+*/
+EM_CONSUMPTION_RECORD_TYPE_UNKNOWN(-1,"未知"),
+/**
+定额消费记录
+*/
+EM_CONSUMPTION_RECORD_TYPE_QUOTA(0,"定额消费记录"),
+/**
+非定额消费记录
+*/
+EM_CONSUMPTION_RECORD_TYPE_NONQUOTA(1,"非定额消费记录"),
+/**
+充值记录
+*/
+EM_CONSUMPTION_RECORD_TYPE_DEPOSIT(2,"充值记录");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CONSUMPTION_RECORD_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CONSUMPTION_RECORD_TYPE enumType : EM_CONSUMPTION_RECORD_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CONSUMPTION_RECORD_TYPE enumType : EM_CONSUMPTION_RECORD_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_CONSUMPTION_RECORD_TYPE getEnum(int value) {
+        for (EM_CONSUMPTION_RECORD_TYPE e : EM_CONSUMPTION_RECORD_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CONSUMPTION_RECORD_TYPE.EM_CONSUMPTION_RECORD_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java
new file mode 100644
index 0000000..e17166c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONSUMPTION_STATUS.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 消费结果
+* @date 2022/03/07 11:45:30
+*/
+public enum EM_CONSUMPTION_STATUS {
+/**
+未知
+*/
+EM_CONSUMPTION_STATUS_UNKNOWN(-1,"未知"),
+/**
+失败
+*/
+EM_CONSUMPTION_STATUS_FAIL(0,"失败"),
+/**
+成功
+*/
+EM_CONSUMPTION_STATUS_SUCC(1,"成功");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CONSUMPTION_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CONSUMPTION_STATUS enumType : EM_CONSUMPTION_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CONSUMPTION_STATUS enumType : EM_CONSUMPTION_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_CONSUMPTION_STATUS getEnum(int value) {
+        for (EM_CONSUMPTION_STATUS e : EM_CONSUMPTION_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CONSUMPTION_STATUS.EM_CONSUMPTION_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONTROL_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONTROL_MODE.java
new file mode 100644
index 0000000..e8577a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CONTROL_MODE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 控制模式
+ * @date 2021/09/01
+ */
+public enum EM_CONTROL_MODE {
+	// 未知
+	EM_CONTROL_UNKNOWN(0, "未知"),
+	// 黄闪控制
+	EM_CONTROL_YELLOW_FLASH(1, "黄闪控制"),
+	// 多时段控制
+	EM_CONTROL_MULITI_TIME(2, "多时段控制"),
+	// 手动控制
+	EM_CONTROL_MANUAL(3, "手动控制"),
+	// 感应控制
+	EM_CONTROL_INDUCTION(4, "感应控制"),
+	// 无电缆协调控制
+	EM_CONTROL_WIRELESS_COORDINATION(5, "无电缆协调控制"),
+	// 单点协调控制
+	EM_CONTROL_SINGLE_OPTIMIZATION(6, "单点协调控制"),
+	//公交信号优先
+	EM_CONTROL_BUS_SINGAL(7, "公交信号优先"),
+	// 紧急信号优先
+	EM_CONTROL_EMERGENCY_SINGAL(8, "紧急信号优先"),
+	// 其他
+	EM_CONTROL_OTHER(9, "其他");
+
+	private int value;
+	private String note;
+
+	private EM_CONTROL_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CONTROL_MODE enumType : EM_CONTROL_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CONTROL_MODE enumType : EM_CONTROL_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COORDINATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COORDINATE_TYPE.java
new file mode 100644
index 0000000..b14451d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COORDINATE_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 坐标系类型
+ * @date 2022/11/21 17:53:12
+ */
+public enum EM_COORDINATE_TYPE {
+    /**
+     * 未知
+     */
+    EM_COORDINATE_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 绝对坐标
+     */
+    EM_COORDINATE_TYPE_ABSOLUTE(1, "绝对坐标"),
+    /**
+     * 8192坐标
+     */
+    EM_COORDINATE_TYPE_8192(2, "8192坐标");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_COORDINATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COORDINATE_TYPE enumType : EM_COORDINATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COORDINATE_TYPE enumType : EM_COORDINATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COORDINATE_TYPE getEnum(int value) {
+        for (EM_COORDINATE_TYPE e : EM_COORDINATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COORDINATE_TYPE.EM_COORDINATE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java
new file mode 100644
index 0000000..1b72bf2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COUNTDOWN_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 倒计时方式
+ * @date 2021/08/24
+ */
+public enum EM_COUNTDOWN_TYPE {
+	// 未知
+	EM_COUNTDOWN_TYPE_UNKNOWN(0, "未知"),
+	// 学习式
+	EM_COUNTDOWN_TYPE_LEARNING(1, "学习式"),
+	// 脉冲式
+	EM_COUNTDOWN_TYPE_PLUSE(2, "脉冲式"),
+	// 全程485式
+	EM_COUNTDOWN_TYPE_FULL485(3, "全程485式"),
+	// 半程485式
+	EM_COUNTDOWN_TYPE_HALFWAY485(4, "半程485式");
+
+	private int value;
+	private String note;
+
+	private EM_COUNTDOWN_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_COUNTDOWN_TYPE enumType : EM_COUNTDOWN_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_COUNTDOWN_TYPE enumType : EM_COUNTDOWN_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java
new file mode 100644
index 0000000..8c5fccb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSECOMPOSITE_OPERATE_TYPE.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.structure.*;
+
+/**
+ * 录播主机组合通道操作
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:49
+ */
+public enum EM_COURSECOMPOSITE_OPERATE_TYPE {
+    /**
+     * 控制组合通道与逻辑通道,对应结构体
+     * pInParam = {@link NET_IN_COURSECOMPOSITE_LOCK_CONTROL}
+     * pOutParam = {@link NET_OUT_COURSECOMPOSITE_LOCK_CONTROL}
+     */
+    EM_COURSECOMPOSITE_TYPE_LOCK_CONTROL(0, "控制组合通道与逻辑通道"),
+    /**
+     * 获取组合通道与逻辑通道的锁定信息,对应结构体
+     * pInParam = {@link NET_IN_COURSECOMPOSITE_GET_LOCKINFO}
+     * pOutParam = {@link NET_OUT_COURSECOMPOSITE_GET_LOCKINFO}
+     */
+    EM_COURSECOMPOSITE_TYPE_GET_LOCKINFO(1, "获取组合通道与逻辑通道的锁定信息"),
+    /**
+     * 获取组合通道信息,对应结构体
+     * pInParam = {@link NET_IN_COURSECOMPOSITE_GET_INFO}
+     * pOutParam = {@link NET_OUT_COURSECOMPOSITE_GET_INFO}
+     */
+    EM_COURSECOMPOSITE_TYPE_GET_INFO(2, "获取组合通道信息"),
+    /**
+     * 设置组合通道信息,对应结构体
+     * pInParam = {@link NET_IN_COURSECOMPOSITE_SET_INFO}
+     * pOutParam = {@link NET_OUT_COURSECOMPOSITE_SET_INFO}
+     */
+    EM_COURSECOMPOSITE_TYPE_SET_INFO(3, "设置组合通道信息"),
+    /**
+     * 将组合通道信息更新到time时的信息,对应结构体
+     * pInParam = {@link NET_IN_COURSECOMPOSITE_UPDATE_INFO}
+     * pOutParam = {@link NET_OUT_COURSECOMPOSITE_UPDATE_INFO}
+     */
+    EM_COURSECOMPOSITE_TYPE_UPDATE_INFO(4, "将组合通道信息更新到time时的信息");
+
+    private int value;
+    private String note;
+
+    EM_COURSECOMPOSITE_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSECOMPOSITE_OPERATE_TYPE enumType : EM_COURSECOMPOSITE_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSECOMPOSITE_OPERATE_TYPE enumType : EM_COURSECOMPOSITE_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COURSECOMPOSITE_OPERATE_TYPE getEnum(int value) {
+        for (EM_COURSECOMPOSITE_OPERATE_TYPE e : EM_COURSECOMPOSITE_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COURSECOMPOSITE_OPERATE_TYPE.EM_COURSECOMPOSITE_TYPE_LOCK_CONTROL;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java
new file mode 100644
index 0000000..187c38e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSERECORD_OPERATE_TYPE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.structure.*;
+
+/**
+ * 录播主机录像信息操作
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:17
+ */
+public enum EM_COURSERECORD_OPERATE_TYPE {
+    /**
+     * 获取教室录像信息,对应结构体
+     * pInParam = {@link NET_IN_COURSERECORD_GETINFO}
+     * pOutParam = {@link NET_OUT_COURSERECORD_GETINFO}
+     */
+    EM_COURSERECORDE_TYPE_GET_INFO(0, "获取教室录像信息"),
+    /**
+     * 设置教室录像信息,对应结构体
+     * pInParam = {@link NET_IN_COURSERECORD_SETINFO}
+     * pOutParam = {@link NET_OUT_COURSERECORD_SETINFO}
+     */
+    EM_COURSERECORDE_TYPE_SET_INFO(1, "设置教室录像信息"),
+    /**
+     * 将录像信息更新到time时的信息,对应结构体
+     * pInParam = {@link NET_IN_COURSERECORD_UPDATE_INFO}
+     * pOutParam = {@link NET_OUT_COURSERECORD_UPDATE_INFO}
+     */
+    EM_COURSERECORDE_TYPE_UPDATE_INFO(2, "将录像信息更新到time时的信息"),
+    /**
+     * 获取当前课程教室已录制时间,对应结构体
+     * pInParam = {@link NET_IN_COURSERECORD_GET_TIME}
+     * pOutParam = {@link NET_OUT_COURSERECORD_GET_TIME}
+     */
+    EM_COURSERECORDE_TYPE_GET_TIME(3, "获取当前课程教室已录制时间");
+
+    private int value;
+    private String note;
+
+    EM_COURSERECORD_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSERECORD_OPERATE_TYPE enumType : EM_COURSERECORD_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSERECORD_OPERATE_TYPE enumType : EM_COURSERECORD_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COURSERECORD_OPERATE_TYPE getEnum(int value) {
+        for (EM_COURSERECORD_OPERATE_TYPE e : EM_COURSERECORD_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COURSERECORD_OPERATE_TYPE.EM_COURSERECORDE_TYPE_GET_INFO;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java
new file mode 100644
index 0000000..66f3b30
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_LOCK_TYPE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 课程录像锁定类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:27
+ */
+public enum EM_COURSE_LOCK_TYPE {
+    /**
+     * 未知
+     */
+    EM_COURSE_LOCK_TYPE_UNKNOWN(-1, "未知"),
+    /**
+     * 全部类型
+     */
+    EM_COURSE_LOCK_TYPE_ALL(0, "全部类型"),
+    /**
+     * 非锁定类型
+     */
+    EM_COURSE_LOCK_TYPE_NON_LOCKING(1, "非锁定类型"),
+    /**
+     * 锁定类型
+     */
+    EM_COURSE_LOCK_TYPE_LOCK(2, "锁定类型");
+
+    private int value;
+    private String note;
+
+    EM_COURSE_LOCK_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSE_LOCK_TYPE enumType : EM_COURSE_LOCK_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSE_LOCK_TYPE enumType : EM_COURSE_LOCK_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COURSE_LOCK_TYPE getEnum(int value) {
+        for (EM_COURSE_LOCK_TYPE e : EM_COURSE_LOCK_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COURSE_LOCK_TYPE.EM_COURSE_LOCK_TYPE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java
new file mode 100644
index 0000000..c866682
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_COMPRESSION_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 课程录像压缩类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:55
+ */
+public enum EM_COURSE_RECORD_COMPRESSION_TYPE {
+    /**
+     * 未知
+     */
+    EM_COURSE_RECORD_COMPRESSION_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * H.264 默认值
+     */
+    EM_COURSE_RECORD_COMPRESSION_TYPE_H264(1, "H.264 默认值"),
+    /**
+     * H.265
+     */
+    EM_COURSE_RECORD_COMPRESSION_TYPE_H265(2, "H.265");
+
+    private int value;
+    private String note;
+
+    EM_COURSE_RECORD_COMPRESSION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSE_RECORD_COMPRESSION_TYPE enumType : EM_COURSE_RECORD_COMPRESSION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSE_RECORD_COMPRESSION_TYPE enumType : EM_COURSE_RECORD_COMPRESSION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COURSE_RECORD_COMPRESSION_TYPE getEnum(int value) {
+        for (EM_COURSE_RECORD_COMPRESSION_TYPE e : EM_COURSE_RECORD_COMPRESSION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COURSE_RECORD_COMPRESSION_TYPE.EM_COURSE_RECORD_COMPRESSION_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java
new file mode 100644
index 0000000..38fb742
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_RECORD_TYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 课程录像类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:31
+ */
+public enum EM_COURSE_RECORD_TYPE {
+    /**
+     * 未知
+     */
+    EM_COURSE_RECORD_TYPE_UNKNOWN(-1, "未知"),
+
+    /**
+     * 全部录像类型
+     */
+    EM_COURSE_RECORD_TYPE_ALL(0, "全部录像类型"),
+
+    /**
+     * 导播录像类型
+     */
+    EM_COURSE_RECORD_TYPE_GUIDED_BROADCAST(1, "导播录像类型"),
+
+    /**
+     * 互动录像类型
+     */
+    EM_COURSE_RECORD_TYPE_GUIDED_INTERACTION(2, "互动录像类型");
+
+    private int value;
+    private String note;
+
+    EM_COURSE_RECORD_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSE_RECORD_TYPE enumType : EM_COURSE_RECORD_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSE_RECORD_TYPE enumType : EM_COURSE_RECORD_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_COURSE_RECORD_TYPE getEnum(int value) {
+        for (EM_COURSE_RECORD_TYPE e : EM_COURSE_RECORD_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COURSE_RECORD_TYPE.EM_COURSE_RECORD_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_STATE.java
new file mode 100644
index 0000000..f394716
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COURSE_STATE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 课程状态
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 16:00
+ */
+public enum EM_COURSE_STATE {
+    /**
+     * 未知
+     */
+    EM_COURSE_STATE_UNKNOWN(0, "未知"),
+    /**
+     * 未录制
+     */
+    EM_COURSE_STATE_NOT_RECORD(1, "未录制"),
+    /**
+     * 录制中
+     */
+    EM_COURSE_STATE_IN_RECORDING(2, "录制中"),
+    /**
+     * 已录制
+     */
+    EM_COURSE_STATE_ALREADY_RECORDED(3, "已录制");
+
+    private int value;
+    private String note;
+
+    EM_COURSE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_COURSE_STATE enumType : EM_COURSE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_COURSE_STATE enumType : EM_COURSE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COVER_PLATE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COVER_PLATE_STATE.java
new file mode 100644
index 0000000..04c724a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_COVER_PLATE_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  盖板状态 
+* @date 2022/06/28 19:44:56
+*/
+public enum EM_COVER_PLATE_STATE {
+/**
+未知
+*/
+EM_COVER_PLATE_STATE_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_COVER_PLATE_STATE_NORMAL(1,"正常"),
+/**
+破裂
+*/
+EM_COVER_PLATE_STATE_BROKEN(2,"破裂");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_COVER_PLATE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_COVER_PLATE_STATE enumType : EM_COVER_PLATE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_COVER_PLATE_STATE enumType : EM_COVER_PLATE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_COVER_PLATE_STATE getEnum(int value) {
+        for (EM_COVER_PLATE_STATE e : EM_COVER_PLATE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_COVER_PLATE_STATE.EM_COVER_PLATE_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.java
new file mode 100644
index 0000000..409ceba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 触发模式
+ * @origin autoTool
+ * @date 2023/06/19 14:48:39
+ */
+public enum EM_CROWD_LEVEL_DETECTION_TRIGGERMODE {
+	/**
+     * 未知
+     */
+	EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_UNKNOWN(0,"未知"),
+	/**
+     * 自适应模式
+     */
+	EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_ADAPTIVE(1,"自适应模式"),
+	/**
+     * 自定义模式
+     */
+	EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_CUSTOM(2,"自定义模式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CROWD_LEVEL_DETECTION_TRIGGERMODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CROWD_LEVEL_DETECTION_TRIGGERMODE enumType : EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CROWD_LEVEL_DETECTION_TRIGGERMODE enumType : EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_CROWD_LEVEL_DETECTION_TRIGGERMODE getEnum(int value) {
+		for (EM_CROWD_LEVEL_DETECTION_TRIGGERMODE e : EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_CROWD_LEVEL_DETECTION_TRIGGERMODE.EM_CROWD_LEVEL_DETECTION_TRIGGERMODE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_ENABLE.java
new file mode 100644
index 0000000..e90f2a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_ENABLE.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 报警使能控制方式枚举类型
+ * @origin autoTool
+ * @date 2023/11/01 20:42:35
+ */
+public enum EM_CTRL_ENABLE {
+    /**
+     * 不控制使能
+     */
+    EM_CTRL_NORMAL(0, "不控制使能"),
+    /**
+     * 总是使能
+     */
+    EM_CTRL_ALWAYS_EN(1, "总是使能"),
+    /**
+     * 旁路
+     */
+    EM_CTRL_ONCE_DIS(2, "旁路"),
+    /**
+     * 移除
+     */
+    EM_CTRL_ALWAYS_DIS(3, "移除"),
+    /**
+     * 枚举类型总数
+     */
+    EM_CTRL_NU(4, "枚举类型总数");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_CTRL_ENABLE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CTRL_ENABLE enumType : EM_CTRL_ENABLE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CTRL_ENABLE enumType : EM_CTRL_ENABLE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CTRL_ENABLE getEnum(int value) {
+        for (EM_CTRL_ENABLE e : EM_CTRL_ENABLE.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_CTRL_ENABLE.EM_CTRL_NORMAL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_SCHEME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_SCHEME.java
new file mode 100644
index 0000000..05b3b57
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CTRL_SCHEME.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 红绿灯方案/可变车道方案
+ * @date 2021/09/28
+ */
+public enum EM_CTRL_SCHEME {
+	// 未知
+	EM_CTRL_SCHEME_UNKNOWN(0, "未知"),
+	// 进入备份模式(红绿灯)
+	EM_CTRL_SCHEME_REDYELLOW_BACKUP(150, "进入备份模式(红绿灯)"),
+	// 正常退出备份模式(红绿灯)
+	EM_CTRL_SCHEME_REDYELLOW_BACKUP_NORMAL_QUIT(151, "正常退出备份模式(红绿灯)"),
+	// 异常退出备份模式(红绿灯)
+	EM_CTRL_SCHEME_REDYELLOW_BACKUP_ABNORMAL_QUIT(152, "异常退出备份模式(红绿灯)"),
+	// 异常退出备份模式(可变车道)
+	EM_CTRL_SCHEME_VARLANE_BACKUP(153, "异常退出备份模式(可变车道)"),
+	// 正常退出备份模式(可变车道)
+	EM_CTRL_SCHEME_VARLANE_BACKUP_NORMAL_QUIT(154, "正常退出备份模式(可变车道)"),
+	// 异常退出备份模式(可变车道)
+	EM_CTRL_SCHEME_VARLANE_BACKUP_ABNORMAL_QUIT(155, "异常退出备份模式(可变车道)");
+
+	private int value;
+	private String note;
+
+	private EM_CTRL_SCHEME(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CTRL_SCHEME enumType : EM_CTRL_SCHEME.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CTRL_SCHEME enumType : EM_CTRL_SCHEME.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java
new file mode 100644
index 0000000..48f47ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_OPERATE_MODE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 当前运行模式
+ * @date 2021/08/24
+ */
+public enum EM_CURRENT_OPERATE_MODE {
+	// 未知
+	EM_CURRENT_OPERATE_UNKNOWN(0, "未知"),
+	// 多时段控制
+	EM_CURRENT_OPERATE_MULPERIOD(1, "多时段控制"),
+	// 手动控制
+	EM_CURRENT_OPERATE_MANUAL_CONTROL(2, "手动控制"),
+	// 关灯控制
+	EM_CURRENT_OPERATE_TURNOFFLIGHT_CONTROL(3, "关灯控制"),
+	// 全红控制
+	EM_CURRENT_OPERATE_ALLRED_CONTROL(4, "全红控制"),
+	// 自适应滤波控制
+	EM_CURRENT_OPERATE_ADAPTFILTER_CONTROL(5, "自适应滤波控制"),
+	// 感应控制
+	EM_CURRENT_OPERATE_INDUCTION_CONTROL(6, "感应控制"),				
+	// 黄闪控制
+	EM_CURRENT_OPERATE_YELLOWFLASH_CONTROL(7, "黄闪控制"),
+	// 单点自适应模式
+	EM_CURRENT_OPERATE_SINGAL_ADAPTINVE(8, "单点自适应模式"),
+	// 平台临时方案模式
+	EM_CURRENT_OPERATE_TMPPLATFORM_PLAN(9, "平台临时方案模式"),
+	// 临时手控模式
+	EM_CURRENT_OPERATE_TEMP_HAND(10, "临时手控模式"),
+	// 实时控制模式
+	EM_CURRENT_OPERATE_REALTIME_CONTROL(11, "实时控制模式"),
+	// 灭灯模式
+	EM_CURRENT_OPERATE_LIGHT_OFF(12, "灭灯模式"),		
+	// 红闪模式
+	EM_CURRENT_OPERATE_RED_FLASH(13, "红闪模式"),		
+	// 绿闪模式
+	EM_CURRENT_OPERATE_GREEN_FLASH(14, "绿闪模式"),		
+	// 行人优先控制模式
+	EM_CURRENT_OPERATE_PEDESTRAIN_PRIORITY(15, "行人优先控制模式"),
+	// 拥堵溢出控制模式
+	EM_CURRENT_OPERATE_CONFGOVERFLOW_CONTROL(16, "拥堵溢出控制模式"),
+	// 夜间请求模式
+	EM_CURRENT_OPERATE_NIGHT_REQUEST(17, "夜间请求模式");
+
+		private int value;
+		private String note;
+
+		private EM_CURRENT_OPERATE_MODE(int givenValue, String note) {
+			this.value = givenValue;
+			this.note = note;
+		}
+
+		public String getNote() {
+			return note;
+		}
+
+		public int getValue() {
+			return value;
+		}
+
+		public static String getNoteByValue(int givenValue) {
+			for (EM_CURRENT_OPERATE_MODE enumType : EM_CURRENT_OPERATE_MODE.values()) {
+				if (givenValue == enumType.getValue()) {
+					return enumType.getNote();
+				}
+			}
+			return null;
+		}
+
+		public static int getValueByNote(String givenNote) {
+			for (EM_CURRENT_OPERATE_MODE enumType : EM_CURRENT_OPERATE_MODE.values()) {
+				if (givenNote.equals(enumType.getNote())) {
+					return enumType.getValue();
+				}
+			}
+			return -1;
+		}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java
new file mode 100644
index 0000000..ebe64c2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CURRENT_STATE_TYPE.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_CURRENT_STATE_TYPE {
+    EM_CURRENT_STATE_UNKNOWN(0, "电流状态未知"),
+    EM_CURRENT_STATE_OVER_CURRENT(1, "电流过载"),                      // 电流过载
+    EM_CURRENT_STATE_NORMAL(2, "电流正常"),                            // 电流正常
+    EM_CURRENT_STATE_UNDER_CURRENT(3, "电源欠流");                     // 电源欠流
+
+    private int value;
+    private String note;
+
+    private EM_CURRENT_STATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CURRENT_STATE_TYPE enumType : EM_CURRENT_STATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CURRENT_STATE_TYPE enumType : EM_CURRENT_STATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java
new file mode 100644
index 0000000..6209d56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.java
@@ -0,0 +1,89 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 开门方式
+ * @date 2022/06/02 10:15:21
+ */
+public enum EM_CUSTOMER_DEV_SETTING_DOOR_METHOD {
+	/**
+	 * 未知
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_UNKNOWN(-1, "未知"),
+	/**
+	 * CTID 码开门
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID(0, "CTID 码开门"),
+	/**
+	 * CTID 码 + 人脸组合开门
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID_AND_FACE(1, "CTID 码 + 人脸组合开门"),
+	/**
+	 * CTID 码或人脸开门
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CTID_OR_FACE(2, "CTID 码或人脸开门"),
+	/**
+	 * 腕带码或人脸开门
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE(3, "腕带码或人脸开门"),
+	/**
+	 * 腕带码或人脸或证件开门
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE_OR_IDCARD(4, "腕带码或人脸或证件开门"),
+	/**
+	 * 码1或码2开门 (码1、码2的含义由平台和设备双方约定)
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_CODE1_OR_CODE2(5, "码1或码2开门 (码1、码2的含义由平台和设备双方约定)"),
+	/**
+	 * 人脸或腕带码或码2
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_WRISTBAND_OR_FACE_OR_CODE2(6, "人脸或腕带码或码2"),
+	/**
+	 * 人脸+(码1或码2)
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_AND_CODE1_OR_CODE2(7, "人脸+(码1或码2)"),
+	/**
+	 * (人脸或证件)+(码1或者码2)
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_OR_IDCARD_AND_CODE1_OR_CODE2(8, "(人脸或证件)+(码1或者码2)"),
+	/**
+	 * 人脸或码1或码2或者腕带码
+	 */
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD_FACE_OR_IDCARD_OR_CODE1_OR_CODE2(9, "人脸或码1或码2或者腕带码");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_CUSTOMER_DEV_SETTING_DOOR_METHOD(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_CUSTOMER_DEV_SETTING_DOOR_METHOD enumType : EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_CUSTOMER_DEV_SETTING_DOOR_METHOD enumType : EM_CUSTOMER_DEV_SETTING_DOOR_METHOD.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java
new file mode 100644
index 0000000..1d75a8a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_DEV_PROTOCOL_TYPE.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/8/13 9:54
+ */
+public enum EM_CUSTOM_DEV_PROTOCOL_TYPE {
+
+    /**
+     * Private
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_PRIVATE(0, "Private"),
+    /**
+     * Dahua2
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA2(1, "Dahua2"),
+    /**
+     * Dahua3
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA3(2, "Dahua3"),
+    /**
+     * 以URL形式添加的设备
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_GENERAL(3, "以URL形式添加的设备"),
+    /**
+     * Onvif接入
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_ONVIF(4, "Onvif接入"),
+    /**
+     * Onvif加密形式接入
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_ONVIFS(5, "Onvif加密形式接入"),
+    /**
+     * 国标28181接入
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_GB28181(6, "国标28181接入"),
+    /**
+     * Ehome协议
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_EHOME(7, "Ehome协议"),
+    /**
+     * 主动注册
+     */
+    EM_CUSTOM_DEV_PROTOCOL_TYPE_DAHUA_REG(8, "主动注册");
+
+    private int value;
+    private String note;
+
+    private EM_CUSTOM_DEV_PROTOCOL_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CUSTOM_DEV_PROTOCOL_TYPE enumType : EM_CUSTOM_DEV_PROTOCOL_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CUSTOM_DEV_PROTOCOL_TYPE enumType : EM_CUSTOM_DEV_PROTOCOL_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote()) ) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java
new file mode 100644
index 0000000..8f932df
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_EDUCATION_VOICE_TYPE.java
@@ -0,0 +1,194 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 语音类型
+ * @date 2023/01/03 11:10:33
+ */
+public enum EM_CUSTOM_EDUCATION_VOICE_TYPE {
+  /**
+   * 未知
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_UNKNOWN(0, "未知"),
+  /**
+   * 超时出校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL_TIMEOUT(1, "超时出校"),
+  /**
+   * 超时进校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_TIMEOUT(2, "超时进校"),
+  /**
+   * 出校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_LEAVE_SCHOOL(3, "出校"),
+  /**
+   * 此卡未绑定
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_CARD_NOT_BIND(4, "此卡未绑定"),
+  /**
+   * 寄宿生
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_BOARDER(5, "寄宿生"),
+  /**
+   * 家长卡已挂失
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_PARENT_CARD_REPORT_LOST(6, "家长卡已挂失"),
+  /**
+   * 进校已过期
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_OVERDUE(7, "进校已过期"),
+  /**
+   * 您有包裹待领取
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_PACKAGE_TO_PICKUP(8, "您有包裹待领取"),
+  /**
+   * 请假
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE(9, "请假"),
+  /**
+   * 请假返校超时
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_RETURN_SCHOOL_TIMEOUT_WHEN_ASKFORLEAVE(10, "请假返校超时"),
+  /**
+   * 请假进出校时间未到
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_INANDOUT_SCHOOL_TIMENOTUP_WHEN_ASKFORLEAVE(11, "请假进出校时间未到"),
+  /**
+   * 请假拒绝出校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_LEAVE_SCHOOL_WHEN_ASKFORLEAVE(12, "请假拒绝出校"),
+  /**
+   * 请假拒绝进校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_REFUSE_ENTER_SCHOOL_WHEN_ASKFORLEAVE(13, "请假拒绝进校"),
+  /**
+   * 请假审核中
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_IN_REVIEW(14, "请假审核中"),
+  /**
+   * 请假已过期
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_EXPIRED(15, "请假已过期"),
+  /**
+   * 请假已批准
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ASKFORLEAVE_APPROVED(16, "请假已批准"),
+  /**
+   * 请假已失效禁止重复出校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_FORBID_LEAVE_SCHOOL_WITH_LEAVE_INVALID(17, "请假已失效禁止重复出校"),
+  /**
+   * 时间未到
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_TIME_ISNOT_UP(18, "时间未到"),
+  /**
+   * 未预约
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_NOT_APPOINT(19, "未预约"),
+  /**
+   * 未在允许时段内禁止通行
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_NO_PASSAGE_IN_NONPERMIT_TIMESECTION(20, "未在允许时段内禁止通行"),
+  /**
+   * 无效卡
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_INVALID_CARD(21, "无效卡"),
+  /**
+   * 已预约
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ALREADY_APPOINTED(22, "已预约"),
+  /**
+   * 允许返校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_BACK_SCHOOL(23, "允许返校"),
+  /**
+   * 再见
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_GOODBYE(24, "再见"),
+  /**
+   * 正常进校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ENTER_SCHOOL_NORMALLY(25, "正常进校"),
+  /**
+   * 重复出校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_LEAVE_SCHOOLL(26, "重复出校"),
+  /**
+   * 重复进校
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_REPEAT_ENTER_SCHOOLL(27, "重复进校"),
+  /**
+   * 走读生
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_DAY_STUDENT(28, "走读生"),
+  /**
+   * 欢迎光临
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_WELCOME(29, "欢迎光临"),
+  /**
+   * 教职工
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_FACULTY(30, "教职工"),
+  /**
+   * 老师
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_TEACHER(31, "老师"),
+  /**
+   * 老师好
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_HELLO_TEACHER(32, "老师好"),
+  /**
+   * 允许访问
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_ALLOW_ACCESS(33, "允许访问"),
+  /**
+   * tts文字语音输出
+   */
+  EM_CUSTOM_EDUCATION_VOICE_TYPE_TTS_TEXT_VOICE_OUTPUT(50, "tts文字语音输出");
+
+  private int value;
+
+  private String note;
+
+  public String getNote() {
+    return note;
+  }
+
+  public int getValue() {
+    return value;
+  }
+
+  EM_CUSTOM_EDUCATION_VOICE_TYPE(int givenValue, String note) {
+    this.value = givenValue;
+    this.note = note;
+  }
+
+  public static String getNoteByValue(int givenValue) {
+    for (EM_CUSTOM_EDUCATION_VOICE_TYPE enumType : EM_CUSTOM_EDUCATION_VOICE_TYPE.values()) {
+      if (givenValue == enumType.getValue()) {
+        return enumType.getNote();
+      }
+    }
+    return null;
+  }
+
+  public static int getValueByNote(String givenNote) {
+    for (EM_CUSTOM_EDUCATION_VOICE_TYPE enumType : EM_CUSTOM_EDUCATION_VOICE_TYPE.values()) {
+      if (givenNote.equals(enumType.getNote())) {
+        return enumType.getValue();
+      }
+    }
+    return -1;
+  }
+
+  public static EM_CUSTOM_EDUCATION_VOICE_TYPE getEnum(int value) {
+    for (EM_CUSTOM_EDUCATION_VOICE_TYPE e : EM_CUSTOM_EDUCATION_VOICE_TYPE.values()) {
+      if (e.getValue() == value)
+        return e;
+    }
+    return EM_CUSTOM_EDUCATION_VOICE_TYPE.EM_CUSTOM_EDUCATION_VOICE_TYPE_UNKNOWN;
+  }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java
new file mode 100644
index 0000000..321ab5c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_MEDICAL_VOICE_TYPE.java
@@ -0,0 +1,86 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 语音类型
+ * @date 2022/11/15 20:11:54
+ */
+public enum EM_CUSTOM_MEDICAL_VOICE_TYPE {
+    /**
+     * 未知
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 门已打开,可以进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_1(1, "门已打开,可以进入"),
+    /**
+     * 不是本科室,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_2(2, "不是本科室,不能进入"),
+    /**
+     * 已出院,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_3(3, "已出院,不能进入"),
+    /**
+     * 核酸检测超期,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_4(4, "核酸检测超期,不能进入"),
+    /**
+     * 体温不正常,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_5(5, "体温不正常,不能进入"),
+    /**
+     * 证件信息缺失,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_6(6, "证件信息缺失,不能进入"),
+    /**
+     * 其他问题,不能进入
+     */
+    EM_CUSTOM_MEDICAL_VOICE_TYPE_7(7, "其他问题,不能进入");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_CUSTOM_MEDICAL_VOICE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_CUSTOM_MEDICAL_VOICE_TYPE enumType : EM_CUSTOM_MEDICAL_VOICE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_CUSTOM_MEDICAL_VOICE_TYPE enumType : EM_CUSTOM_MEDICAL_VOICE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_CUSTOM_MEDICAL_VOICE_TYPE getEnum(int value) {
+        for (EM_CUSTOM_MEDICAL_VOICE_TYPE e : EM_CUSTOM_MEDICAL_VOICE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CUSTOM_MEDICAL_VOICE_TYPE.EM_CUSTOM_MEDICAL_VOICE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java
new file mode 100644
index 0000000..f8a1cb1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_PASSWORD_ENCRYPTION_MODE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * AccessControlCustomPassword记录集中密码的保存方式
+ */
+public enum EM_CUSTOM_PASSWORD_ENCRYPTION_MODE {
+    /**
+     * 未知方式
+     */
+    EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_UNKNOWN,
+    /**
+     * 明文
+     */
+    EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_PLAINTEXT,
+    /**
+     * MD5加密方式
+     */
+    EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_MD5,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java
new file mode 100644
index 0000000..768f59d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_CUSTOM_SNAP_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 自定义抓图类型
+* @date 2022/03/31 14:04:19
+*/
+public enum EM_CUSTOM_SNAP_TYPE {
+/**
+未知
+*/
+EM_CUSTOM_SNAP_UNKNOWN(0,"未知"),
+/**
+猪体温检测, 对应结构体 NET_PIG_TEMPERATURE_INFO
+*/
+EM_CUSTOM_SNAP_PIG_TEMPERATURE(1,"猪体温检测, 对应结构体 NET_PIG_TEMPERATURE_INFO");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_CUSTOM_SNAP_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_CUSTOM_SNAP_TYPE enumType : EM_CUSTOM_SNAP_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_CUSTOM_SNAP_TYPE enumType : EM_CUSTOM_SNAP_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_CUSTOM_SNAP_TYPE getEnum(int value) {
+        for (EM_CUSTOM_SNAP_TYPE e : EM_CUSTOM_SNAP_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_CUSTOM_SNAP_TYPE.EM_CUSTOM_SNAP_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java
new file mode 100644
index 0000000..18d441f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATA_SOURCE_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @description  智能分析数据源类型
+ * @date 2022/06/28 15:29:39
+ */
+public enum EM_DATA_SOURCE_TYPE {
+    /**
+     未知
+     */
+    EM_DATA_SOURCE_REMOTE_UNKNOWN(0,"未知"),
+    /**
+     远程实时流 , 对应 NET_REMOTE_REALTIME_STREAM_INFO
+     */
+    EM_DATA_SOURCE_REMOTE_REALTIME_STREAM(1,"远程实时流 , 对应 NET_REMOTE_REALTIME_STREAM_INFO"),
+    /**
+     主动推送图片文件, 对应 NET_PUSH_PICFILE_INFO
+     */
+    EM_DATA_SOURCE_PUSH_PICFILE(2,"主动推送图片文件, 对应 NET_PUSH_PICFILE_INFO"),
+    /**
+     远程视频文件, 对应 NET_REMOTE_VIDEO_FILE_INFO
+     */
+    EM_DATA_SOURCE_REMOTE_VIDEO_FILE(3,"远程视频文件, 对应 NET_REMOTE_VIDEO_FILE_INFO"),
+    /**
+     远程图片文件, 对应 NET_REMOTE_PICTURE_FILE_INFO
+     */
+    EM_DATA_SOURCE_REMOTE_PICTURE_FILE(4,"远程图片文件, 对应 NET_REMOTE_PICTURE_FILE_INFO"),
+    /**
+     离线视频文件(第三方导入的文件), 对应 NET_OFFLINE_VIDEO_FILE_INFO
+     */
+    EM_DATA_SOURCE_OFFLINE_VIDEO_FILE(5,"离线视频文件(第三方导入的文件), 对应 NET_OFFLINE_VIDEO_FILE_INFO"),
+    /**
+     主动推送图片文件,添加任务时无规则和图片信息,通过推送图片接口,每张图片中带有不同的规则信息(目前能源场景中使用), 对应 NET_PUSH_PICFILE_BYRULE_INFO
+     */
+    EM_DATA_SOURCE_PUSH_PICFILE_BYRULE(6,"主动推送图片文件,添加任务时无规则和图片信息,通过推送图片接口,每张图片中带有不同的规则信息(目前能源场景中使用), 对应 NET_PUSH_PICFILE_BYRULE_INFO"),
+    /**
+     本地实时流, 对应 NET_LOCAL_STREAM_INFO
+     */
+    EM_DATA_SOURCE_LOCAL_STREAM(7,"本地实时流, 对应 NET_LOCAL_STREAM_INFO");
+
+    private int type;
+    private String des;
+
+    private EM_DATA_SOURCE_TYPE(int type, String des) {
+        this.type = type;
+        this.des = des;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDes() {
+        return des;
+    }
+
+    public void setDes(String des) {
+        this.des = des;
+    }
+
+    public static EM_DATA_SOURCE_TYPE getDataSourceType(int type) {
+        for (EM_DATA_SOURCE_TYPE source : EM_DATA_SOURCE_TYPE.values()) {
+            if (type == source.getType()) {
+                return source;
+            }
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATE_SOURCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATE_SOURCE.java
new file mode 100644
index 0000000..83220b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DATE_SOURCE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  数据来源 
+* @origin autoTool
+* @date 2023/09/06 15:55:03
+*/
+public enum EM_DATE_SOURCE {
+	/**
+     * GPS
+     */
+	EM_DATE_SOURCE_GPS(0,"GPS"),
+	/**
+     * 惯性导航数据
+     */
+	EM_DATE_SOURCE_INERTIALNAVIGATION(1,"惯性导航数据");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DATE_SOURCE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DATE_SOURCE enumType : EM_DATE_SOURCE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DATE_SOURCE enumType : EM_DATE_SOURCE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DATE_SOURCE getEnum(int value) {
+        for (EM_DATE_SOURCE e : EM_DATE_SOURCE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_DATE_SOURCE.EM_DATE_SOURCE_GPS;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java
new file mode 100644
index 0000000..2255f88
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEFENCE_AREA_TYPE.java
@@ -0,0 +1,102 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  防区类型 
+* @date 2022/07/19 19:31:27
+*/
+public enum EM_DEFENCE_AREA_TYPE {
+/**
+未知
+*/
+EM_DEFENCE_AREA_TYPE_UNKNOWN(0,"未知"),
+/**
+立即防区
+*/
+EM_DEFENCE_AREA_TYPE_INTIME(1,"立即防区"),
+/**
+延时防区
+*/
+EM_DEFENCE_AREA_TYPE_DELAY(2,"延时防区"),
+/**
+延时防区2
+*/
+EM_DEFENCE_AREA_TYPE_DELAY2(3,"延时防区2"),
+/**
+跟随防区
+*/
+EM_DEFENCE_AREA_TYPE_FOLLOW(4,"跟随防区"),
+/**
+退出防区
+*/
+EM_DEFENCE_AREA_TYPE_EXITEND(5,"退出防区"),
+/**
+24小时防区
+*/
+EM_DEFENCE_AREA_TYPE_FULLDAY(6,"24小时防区"),
+/**
+火警防区
+*/
+EM_DEFENCE_AREA_TYPE_FIRE(7,"火警防区"),
+/**
+恐慌防区
+*/
+EM_DEFENCE_AREA_TYPE_PANIC(8,"恐慌防区"),
+/**
+匪警防区
+*/
+EM_DEFENCE_AREA_TYPE_ROBBERY(9,"匪警防区"),
+/**
+医疗紧急防区
+*/
+EM_DEFENCE_AREA_TYPE_MEDICAL(10,"医疗紧急防区"),
+/**
+key防区
+*/
+EM_DEFENCE_AREA_TYPE_KEY(11,"key防区");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DEFENCE_AREA_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DEFENCE_AREA_TYPE enumType : EM_DEFENCE_AREA_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DEFENCE_AREA_TYPE enumType : EM_DEFENCE_AREA_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DEFENCE_AREA_TYPE getEnum(int value) {
+        for (EM_DEFENCE_AREA_TYPE e : EM_DEFENCE_AREA_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DEFENCE_AREA_TYPE.EM_DEFENCE_AREA_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java
new file mode 100644
index 0000000..9487534
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELETE_BY_SOURCEUID_ERRCODE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 通过全景图唯一标识符删除工装合规样本错误码信息
+ * @date 2022/10/08 20:13:32
+ */
+public enum EM_DELETE_BY_SOURCEUID_ERRCODE {
+	/**
+	 * 未知
+	 */
+	EM_DELETE_BY_SOURCEUID_ERRCODE_UNKNWON(-1, "未知"),
+	/**
+	 * 成功
+	 */
+	EM_DELETE_BY_SOURCEUID_ERRCODE_SUCCESS(0, "成功"),
+	/**
+	 * 工装不存在
+	 */
+	EM_DELETE_BY_SOURCEUID_ERRCODE_NOT_EXIST(1, "工装不存在"),
+	/**
+	 * 数据库操作失败
+	 */
+	EM_DELETE_BY_SOURCEUID_ERRCODE_DB_ERROR(2, "数据库操作失败");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_DELETE_BY_SOURCEUID_ERRCODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_DELETE_BY_SOURCEUID_ERRCODE enumType : EM_DELETE_BY_SOURCEUID_ERRCODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_DELETE_BY_SOURCEUID_ERRCODE enumType : EM_DELETE_BY_SOURCEUID_ERRCODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_DELETE_BY_SOURCEUID_ERRCODE getEnum(int value) {
+		for (EM_DELETE_BY_SOURCEUID_ERRCODE e : EM_DELETE_BY_SOURCEUID_ERRCODE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_DELETE_BY_SOURCEUID_ERRCODE.EM_DELETE_BY_SOURCEUID_ERRCODE_UNKNWON;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java
new file mode 100644
index 0000000..5c4b3a1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DELIVERY_FILE_TYPE.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/9/14
+ */
+public enum EM_DELIVERY_FILE_TYPE {
+    /**
+     * 未知
+     */
+    EM_DELIVERY_FILE_TYPE_UNKNOWN(0,"未知"),
+    /**
+     * 视频
+     */
+    EM_DELIVERY_FILE_TYPE_VIDEO(1,"视频"),
+    /**
+     * 图片
+     */
+    EM_DELIVERY_FILE_TYPE_IMAGE(2,"图片"),
+    /**
+     * 音频
+     */
+    EM_DELIVERY_FILE_TYPE_AUDIO(3,"音频");
+    private int type;
+    private String desc;
+    private EM_DELIVERY_FILE_TYPE(int type,String desc){
+        this.type=type;
+        this.desc=desc;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java
new file mode 100644
index 0000000..9bb81a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTION_SCENE_TYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 动物检测规则下的场景类型
+ * @since : Created in 2021/11/05 15:07
+ */
+
+public enum EM_DETECTION_SCENE_TYPE {
+    /**
+     * 未知
+     */
+    EM_DETECTION_SCENE_TYPE_UNKNOWN(0,"未知"),
+    /**
+     * 兽类场景,可检测动物、人、车
+     */
+    EM_DETECTION_SCENE_TYPE_ANIMAL(1,"兽类场景,可检测动物、人、车"),
+    /**
+     * 鸟类场景,可检测鸟类,人、车
+     */
+    EM_DETECTION_SCENE_TYPE_BIRD(2,"鸟类场景,可检测鸟类,人、车"),	
+	/**
+	 * 猪类场景,可检测猪只
+	 */
+	EM_DETECTION_SCENE_TYPE_PIG(3, "猪类场景,可检测猪只");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_DETECTION_SCENE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DETECTION_SCENE_TYPE enumType : EM_DETECTION_SCENE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DETECTION_SCENE_TYPE enumType : EM_DETECTION_SCENE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DETECTION_SCENE_TYPE getEnum(int value) {
+        for (EM_DETECTION_SCENE_TYPE e : EM_DETECTION_SCENE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DETECTION_SCENE_TYPE.EM_DETECTION_SCENE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java
new file mode 100644
index 0000000..a5569bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECTOR_STATUS_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  探测器状态类型 
+* @date 2022/08/31 14:44:15
+*/
+public enum EM_DETECTOR_STATUS_TYPE {
+/**
+未知
+*/
+EM_DETECTOR_STATUS_UNKNOWN(-1,"未知"),
+/**
+启用所有功能
+*/
+EM_DETECTOR_STATUS_ALLFUNCT_ENABLE(0,"启用所有功能"),
+/**
+禁用防拆功能
+*/
+EM_DETECTOR_STATUS_ANTITAMPER_DISABLE(1,"禁用防拆功能"),
+/**
+禁用所有功能
+*/
+EM_DETECTOR_STATUS_ALLFUNCT_DISABLE(2,"禁用所有功能");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DETECTOR_STATUS_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DETECTOR_STATUS_TYPE enumType : EM_DETECTOR_STATUS_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DETECTOR_STATUS_TYPE enumType : EM_DETECTOR_STATUS_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_DETECTOR_STATUS_TYPE getEnum(int value) {
+        for (EM_DETECTOR_STATUS_TYPE e : EM_DETECTOR_STATUS_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DETECTOR_STATUS_TYPE.EM_DETECTOR_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT.java
new file mode 100644
index 0000000..5b3cb26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 目标类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:34
+ */
+public class EM_DETECT_OBJECT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_DETECT_OBJECT_TYPE_UNKNOWN = 0;
+    /**
+     *  人脸
+     */
+    public static final int					EM_DETECT_OBJECT_TYPE_FACE = 1;
+    /**
+     *  车辆
+     */
+    public static final int					EM_DETECT_OBJECT_TYPE_VEHICLE = 2;
+    /**
+     *  结构化
+     */
+    public static final int					EM_DETECT_OBJECT_TYPE_STRUCTLIZE = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java
new file mode 100644
index 0000000..a70a33c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_OBJECT_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 目标类型
+ * @date 2022/11/21 17:53:12
+ */
+public enum EM_DETECT_OBJECT_TYPE {
+    /**
+     * 未知
+     */
+    EM_DETECT_OBJECT_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 人脸
+     */
+    EM_DETECT_OBJECT_TYPE_FACE(1, "人脸"),
+    /**
+     * 车辆
+     */
+    EM_DETECT_OBJECT_TYPE_VEHICLE(2, "车辆"),
+    /**
+     * 结构化
+     */
+    EM_DETECT_OBJECT_TYPE_STRUCTLIZE(3, "结构化");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_DETECT_OBJECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DETECT_OBJECT_TYPE enumType : EM_DETECT_OBJECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DETECT_OBJECT_TYPE enumType : EM_DETECT_OBJECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DETECT_OBJECT_TYPE getEnum(int value) {
+        for (EM_DETECT_OBJECT_TYPE e : EM_DETECT_OBJECT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DETECT_OBJECT_TYPE.EM_DETECT_OBJECT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java
new file mode 100644
index 0000000..6ab3101
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DETECT_SENSOR_TYPE.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 探测物体的传感器类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 13:45
+ */
+public enum EM_DETECT_SENSOR_TYPE {
+    /**
+     * 未知
+     */
+    EM_DETECT_SENSOR_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 线圈
+     */
+    EM_DETECT_SENSOR_TYPE_COIL(1, "线圈"),
+    /**
+     * 视频
+     */
+    EM_DETECT_SENSOR_TYPE_VIDEO(2, "视频"),
+    /**
+     * 雷达
+     */
+    EM_DETECT_SENSOR_TYPE_RADAR(3, "雷达"),
+    /**
+     * 5G
+     */
+    EM_DETECT_SENSOR_TYPE_5G(4, "5G"),
+    /**
+     * 融合
+     */
+    EM_DETECT_SENSOR_TYPE_FUSION(5, "融合");
+
+    private final int value;
+    private final String note;
+
+    EM_DETECT_SENSOR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DETECT_SENSOR_TYPE enumType : EM_DETECT_SENSOR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DETECT_SENSOR_TYPE enumType : EM_DETECT_SENSOR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DETECT_SENSOR_TYPE getEnum(int value) {
+        for (EM_DETECT_SENSOR_TYPE e : EM_DETECT_SENSOR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DETECT_SENSOR_TYPE.EM_DETECT_SENSOR_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEVICE_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEVICE_ATTRIBUTE.java
new file mode 100644
index 0000000..b5effa6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEVICE_ATTRIBUTE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 设备属性
+ * @date 2023/04/19 18:56:54
+ */
+public enum EM_DEVICE_ATTRIBUTE {
+	/**
+	 * 未知
+	 */
+	EM_DEVICE_ATTRIBUTE_UNKNOWN(0, "未知"),
+	/**
+	 * 主属性
+	 */
+	EM_DEVICE_ATTRIBUTE_MASTER(1, "主属性"),
+	/**
+	 * 辅属性
+	 */
+	EM_DEVICE_ATTRIBUTE_ASSISTANT(2, "辅属性");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_DEVICE_ATTRIBUTE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_DEVICE_ATTRIBUTE enumType : EM_DEVICE_ATTRIBUTE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_DEVICE_ATTRIBUTE enumType : EM_DEVICE_ATTRIBUTE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_STATUS.java
new file mode 100644
index 0000000..db4a428
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_STATUS.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  设备状态 
+* @date 2022/10/09 11:29:42
+*/
+public enum EM_DEV_STATUS {
+/**
+未知
+*/
+EM_DEV_STATUS_UNKNOWN(-1,"未知"),
+/**
+离线
+*/
+EM_DEV_STATUS_OFFLINE(0,"离线"),
+/**
+在线
+*/
+EM_DEV_STATUS_ONLINE(1,"在线");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DEV_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DEV_STATUS enumType : EM_DEV_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DEV_STATUS enumType : EM_DEV_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_DEV_STATUS getEnum(int value) {
+        for (EM_DEV_STATUS e : EM_DEV_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DEV_STATUS.EM_DEV_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java
new file mode 100644
index 0000000..0c3e01f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * className:EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE
+ * description:
+ *   枚举值,下发设置&获取设置
+ *
+ * author:251589
+ * createTime:2020/12/29 14:04
+ *
+ * @version v1.0
+ */
+public class EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE {
+
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_UNKNOWN = 0;        // 未知
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_FACE_DETECTION = 1;    // 目标检测
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_FACE_ANALYSIS = 2;    // 人脸分析
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_FACE_ATTRIBUTE = 3;    // 人脸属性
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_FACE_COMPARE = 4;    // 人脸比对
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_NORMAL = 5;            // 智能通用行为分析
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_OBJECT_DETECT = 6;    // 智能 视频结构化
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_SMART_MOTION = 7;    // 动检,对应的结构体 NET_CFG_SMART_MOTION_DETECT
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_ENCODE_ENHANCE = 8;    // 编码增强
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_ONE_KEY_EXPAND = 9;    // 一键扩展
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_NUMBER_STAT = 10;    // 人数统计
+    public static final int EM_DEV_VARIABLE_CARS_MANAGER_FUNC_TYPE_INTELLIGENT = 11;        // 智能功能,表示所有智能功能
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIALDETECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIALDETECT_TYPE.java
new file mode 100644
index 0000000..d09a3bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIALDETECT_TYPE.java
@@ -0,0 +1,110 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  仪表类型 
+* @date 2022/06/30 11:30:53
+*/
+public enum EM_DIALDETECT_TYPE {
+/**
+未知
+*/
+EM_DIALDETECT_TYPE_UNKNOWN(0,"未知"),
+/**
+压板检测
+*/
+EM_DIALDETECT_TYPE_PLATEN(1,"压板检测"),
+/**
+刀闸检测
+*/
+EM_DIALDETECT_TYPE_KNIFE(2,"刀闸检测"),
+/**
+指针表计检测
+*/
+EM_DIALDETECT_TYPE_POINTERMETER(3,"指针表计检测"),
+/**
+油位表计
+*/
+EM_DIALDETECT_TYPE_OILMETER(4,"油位表计"),
+/**
+数码管字符检测
+*/
+EM_DIALDETECT_TYPE_LED(5,"数码管字符检测"),
+/**
+液晶屏字符检测
+*/
+EM_DIALDETECT_TYPE_LCD(6,"液晶屏字符检测"),
+/**
+指示灯检测
+*/
+EM_DIALDETECT_TYPE_LIGHT(7,"指示灯检测"),
+/**
+旋转开关检测
+*/
+EM_DIALDETECT_TYPE_SWITCH(8,"旋转开关检测"),
+/**
+呼吸器检测
+*/
+EM_DIALDETECT_TYPE_PESPIRATOR(9,"呼吸器检测"),
+/**
+字符指示器检测
+*/
+EM_DIALDETECT_TYPE_CHARLNDICTOR(10,"字符指示器检测"),
+/**
+指针指示器检测
+*/
+EM_DIALDETECT_TYPE_POINTERLNDICTOR(11,"指针指示器检测"),
+/**
+液位计检测
+*/
+EM_DIALDETECT_TYPE_OILLEVEL(12,"液位计检测"),
+/**
+拨码盘字符检测
+*/
+EM_DIALDETECT_TYPE_DIALSWTICH(13,"拨码盘字符检测");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DIALDETECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DIALDETECT_TYPE enumType : EM_DIALDETECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DIALDETECT_TYPE enumType : EM_DIALDETECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DIALDETECT_TYPE getEnum(int value) {
+        for (EM_DIALDETECT_TYPE e : EM_DIALDETECT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DIALDETECT_TYPE.EM_DIALDETECT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIAL_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIAL_STATE.java
new file mode 100644
index 0000000..2a10426
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIAL_STATE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  表盘状态 
+* @date 2022/06/28 19:44:55
+*/
+public enum EM_DIAL_STATE {
+/**
+未知
+*/
+EM_DIAL_STATE_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_DIAL_STATE_NORMAL(1,"正常"),
+/**
+模糊
+*/
+EM_DIAL_STATE_DIM(2,"模糊"),
+/**
+表盘破损
+*/
+EM_DIAL_STATE_DIAL_BROKEN(3,"表盘破损"),
+/**
+外壳破裂
+*/
+EM_DIAL_STATE_SHELL_BROKEN(4,"外壳破裂"),
+/**
+读数异常
+*/
+EM_DIAL_STATE_ABNORMAL_READING(5,"读数异常");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DIAL_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DIAL_STATE enumType : EM_DIAL_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DIAL_STATE enumType : EM_DIAL_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DIAL_STATE getEnum(int value) {
+        for (EM_DIAL_STATE e : EM_DIAL_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DIAL_STATE.EM_DIAL_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION.java
new file mode 100644
index 0000000..cc8b692
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION.java
@@ -0,0 +1,91 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  箭头指向 
+* @origin autoTool
+* @date 2023/06/27 15:49:59
+*/
+public enum EM_DIRECTION {
+/**
+
+*/
+EM_DIRECTION_UNKNOWN(0,""),
+/**
+左
+*/
+EM_DIRECTION_LEFT(1,"左"),
+/**
+左上
+*/
+EM_DIRECTION_UPLEFT(2,"左上"),
+/**
+上
+*/
+EM_DIRECTION_UP(3,"上"),
+/**
+右上
+*/
+EM_DIRECTION_UPRIGHT(4,"右上"),
+/**
+右
+*/
+EM_DIRECTION_RIGHT(5,"右"),
+/**
+右下
+*/
+EM_DIRECTION_DOWNRIGHT(6,"右下"),
+/**
+下
+*/
+EM_DIRECTION_DOWN(7,"下"),
+/**
+左下
+*/
+EM_DIRECTION_DOWNLEFT(8,"左下");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DIRECTION enumType : EM_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DIRECTION enumType : EM_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DIRECTION getEnum(int value) {
+        for (EM_DIRECTION e : EM_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DIRECTION.EM_DIRECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_ACCURATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_ACCURATE.java
new file mode 100644
index 0000000..cb2c73f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_ACCURATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 支持的去重方向
+ * @origin autoTool
+ * @date 2023/09/22 13:39:22
+ */
+public enum EM_DIRECTION_ACCURATE {
+	/**
+	 * 未知
+	 */
+	EM_DIRECTION_ACCURATE_UNKNOWN(0, "未知"),
+	/**
+	 * 进入
+	 */
+	EM_DIRECTION_ACCURATE_ENTER(1, "进入"),
+	/**
+	 * 离开
+	 */
+	EM_DIRECTION_ACCURATE_EXIT(2, "离开");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_DIRECTION_ACCURATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_DIRECTION_ACCURATE enumType : EM_DIRECTION_ACCURATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_DIRECTION_ACCURATE enumType : EM_DIRECTION_ACCURATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_DIRECTION_ACCURATE getEnum(int value) {
+		for (EM_DIRECTION_ACCURATE e : EM_DIRECTION_ACCURATE.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_DIRECTION_ACCURATE.EM_DIRECTION_ACCURATE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java
new file mode 100644
index 0000000..ecdd306
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DIRECTION_AFTER_POWER_OFF.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 闸机断电以后门摆动放向
+ * @date 2021/2/7
+ */
+public enum EM_DIRECTION_AFTER_POWER_OFF {
+  /** 未知 */
+  EM_DIRECTION_AFTER_POWER_OFF_UNKNOWN(-1, "未知"),
+  /** 进门方向 */
+  EM_DIRECTION_AFTER_POWER_OFF_IN(0, "进门方向"),
+  /** 出门方向 */
+  EM_DIRECTION_AFTER_POWER_OFF_OUT(1, "出门方向");
+  private int mode;
+  private String desc;
+
+  EM_DIRECTION_AFTER_POWER_OFF(int mode, String desc) {
+    this.mode = mode;
+    this.desc = desc;
+  }
+
+  public static EM_DIRECTION_AFTER_POWER_OFF getEmDirectionAfterPowerOff(int mode) {
+    for (EM_DIRECTION_AFTER_POWER_OFF powerOff : EM_DIRECTION_AFTER_POWER_OFF.values()) {
+      if (powerOff.mode == mode) {
+        return powerOff;
+      }
+    }
+    return EM_DIRECTION_AFTER_POWER_OFF_UNKNOWN;
+  }
+
+  public int getMode() {
+    return mode;
+  }
+
+  public void setMode(int mode) {
+    this.mode = mode;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISK_STATE.java
new file mode 100644
index 0000000..cf11d5c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISK_STATE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 光盘状态
+ * @date 2021/2/22
+ */
+public enum EM_DISK_STATE {
+  /** 未知 */
+  EM_DISK_STATE_UNKNOWN,
+  /** 已放磁盘 */
+  EM_DISK_STATE_EXIST,
+  /** 未放磁盘 */
+  EM_DISK_STATE_NO_EXIST,
+  /** 需要换盘 */
+  EM_DISK_STATE_NEED_CHANGE;
+
+  public static EM_DISK_STATE getDiskState(int state) {
+    for (EM_DISK_STATE diskState : EM_DISK_STATE.values()) {
+      if (diskState.ordinal() == state) {
+        return diskState;
+      }
+    }
+    return EM_DISK_STATE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java
new file mode 100644
index 0000000..9e28e12
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DISPLAY_CAMERA_ANGLE_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 摄像头安装角度显示方式
+ * @date 2021/01/11
+ */
+public enum EM_DISPLAY_CAMERA_ANGLE_TYPE {
+	
+	// 未知的显示方式
+	EM_DISPLAY_CAMERA_ANGLE_UNKNOWN(0, "未知的显示方式"),
+
+	// 按角度值配置(默认)
+	EM_DISPLAY_CAMERA_ANGLE_NUM(1, "按角度值配置"),
+
+	// 按模式配置,0~20展示为顶装,21~90展示为斜装,配置时按60下发
+	EM_DISPLAY_CAMERA_ANGLE_MODE(2, "按模式配置");
+
+	private int value;
+	private String note;
+
+	private EM_DISPLAY_CAMERA_ANGLE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_DISPLAY_CAMERA_ANGLE_TYPE enumType : EM_DISPLAY_CAMERA_ANGLE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_DISPLAY_CAMERA_ANGLE_TYPE enumType : EM_DISPLAY_CAMERA_ANGLE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOOR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOOR_STATE.java
new file mode 100644
index 0000000..4c6af6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOOR_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  箱门状态 
+* @date 2022/06/28 19:44:55
+*/
+public enum EM_DOOR_STATE {
+/**
+未知
+*/
+EM_DOOR_STATE_UNKNOWN(0,"未知"),
+/**
+打开
+*/
+EM_DOOR_STATE_OPEN(1,"打开"),
+/**
+关闭
+*/
+EM_DOOR_STATE_CLOSE(2,"关闭");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DOOR_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DOOR_STATE enumType : EM_DOOR_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DOOR_STATE enumType : EM_DOOR_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_DOOR_STATE getEnum(int value) {
+        for (EM_DOOR_STATE e : EM_DOOR_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DOOR_STATE.EM_DOOR_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java
new file mode 100644
index 0000000..259b5cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_DATA_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 下载数据类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 16:03
+ */
+public enum EM_DOWNLOAD_DATA_TYPE {
+
+    EM_DOWNLOAD_DATA_RECORD(0, "录像"),
+    EM_DOWNLOAD_DATA_PICTURE(1, "图片");
+
+    private final int value;
+    private final String note;
+
+    EM_DOWNLOAD_DATA_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DOWNLOAD_DATA_TYPE enumType : EM_DOWNLOAD_DATA_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DOWNLOAD_DATA_TYPE enumType : EM_DOWNLOAD_DATA_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DOWNLOAD_DATA_TYPE getEnum(int value) {
+        for (EM_DOWNLOAD_DATA_TYPE e : EM_DOWNLOAD_DATA_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DOWNLOAD_DATA_TYPE.EM_DOWNLOAD_DATA_RECORD;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java
new file mode 100644
index 0000000..090a4bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_FILE_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 下载文件方式
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 15:25
+ */
+public enum EM_DOWNLOAD_FILE_TYPE {
+
+    EM_DOWNLOAD_BY_FILENAME(0,"按文件名下载"),
+    EM_DOWNLOAD_BY_CONDITION(1,"按条件下载");
+
+    private final int value;
+    private final String note;
+
+    EM_DOWNLOAD_FILE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DOWNLOAD_FILE_TYPE enumType : EM_DOWNLOAD_FILE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DOWNLOAD_FILE_TYPE enumType : EM_DOWNLOAD_FILE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DOWNLOAD_FILE_TYPE getEnum(int value) {
+        for (EM_DOWNLOAD_FILE_TYPE e : EM_DOWNLOAD_FILE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DOWNLOAD_FILE_TYPE.EM_DOWNLOAD_BY_FILENAME;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java
new file mode 100644
index 0000000..2793e69
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DOWNLOAD_TIME_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 下载时间类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 15:58
+ */
+public enum EM_DOWNLOAD_TIME_TYPE {
+
+    EM_DOWNLOAD_TIME_SNAP(0, "抓拍时间"),
+    EM_DOWNLOAD_TIME_STORAGE(1, "存储时间");
+
+    private final int value;
+    private final String note;
+
+    EM_DOWNLOAD_TIME_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DOWNLOAD_TIME_TYPE enumType : EM_DOWNLOAD_TIME_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DOWNLOAD_TIME_TYPE enumType : EM_DOWNLOAD_TIME_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_DOWNLOAD_TIME_TYPE getEnum(int value) {
+        for (EM_DOWNLOAD_TIME_TYPE e : EM_DOWNLOAD_TIME_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DOWNLOAD_TIME_TYPE.EM_DOWNLOAD_TIME_SNAP;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DRIVING_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..cbf45d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DRIVING_DIRECTION.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_DRIVING_DIRECTION {
+
+    /**
+     * 未知
+     */
+    EM_DRIVING_DIRECTION_UNKNOWN(0,"未知"),
+    /**
+     * 驶入
+     */
+    EM_DRIVING_DIRECTION_IN(1,"驶入"),
+    /**
+     * 驶出
+     */
+    EM_DRIVING_DIRECTION_OUT(2,"驶出");
+
+    private int value;
+    private String note;
+
+    private EM_DRIVING_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_DRIVING_DIRECTION enumType : EM_DRIVING_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_DRIVING_DIRECTION enumType : EM_DRIVING_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote()) ) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java
new file mode 100644
index 0000000..0a38c1b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_DYNAMIC_LOCK_ERRORCODE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  动态密码锁错误码 
+* @date 2022/06/23 10:09:19
+*/
+public enum EM_DYNAMIC_LOCK_ERRORCODE {
+/**
+未知
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_UNKNOWN(-1,"未知"),
+/**
+成功
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_SUCCESS(0,"成功"),
+/**
+操作失败
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_FAIL(1,"操作失败"),
+/**
+锁ID不存在
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_LOCK_NO_EXIT(2,"锁ID不存在"),
+/**
+锁已初始化
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_LOCK_INIT(3,"锁已初始化"),
+/**
+锁模块未启用
+*/
+EM_DYNAMIC_LOCK_ERRORCODE_LOCK_NOT_USE(4,"锁模块未启用");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_DYNAMIC_LOCK_ERRORCODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_DYNAMIC_LOCK_ERRORCODE enumType : EM_DYNAMIC_LOCK_ERRORCODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_DYNAMIC_LOCK_ERRORCODE enumType : EM_DYNAMIC_LOCK_ERRORCODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_DYNAMIC_LOCK_ERRORCODE getEnum(int value) {
+        for (EM_DYNAMIC_LOCK_ERRORCODE e : EM_DYNAMIC_LOCK_ERRORCODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_DYNAMIC_LOCK_ERRORCODE.EM_DYNAMIC_LOCK_ERRORCODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java
new file mode 100644
index 0000000..218db6b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMERGENCYSTATUS_TYPE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 紧急报警状态
+ * @date 2021/2/22
+ */
+public enum EM_EMERGENCYSTATUS_TYPE {
+  /** 未知 */
+  EM_EMERGENCYSTATUS_UNKNOWN(-1, "未知"),
+  EM_EMERGENCYSTATUS_CLOSE(0, "关闭"),
+  EM_EMERGENCYSTATUS_OPEN(1, "开启");
+  private int type;
+  private String desc;
+
+  EM_EMERGENCYSTATUS_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public static EM_EMERGENCYSTATUS_TYPE getEmergencyStatusType(int type) {
+    for (EM_EMERGENCYSTATUS_TYPE emergencyStatus : EM_EMERGENCYSTATUS_TYPE.values()) {
+      if (emergencyStatus.type == type) {
+        return emergencyStatus;
+      }
+    }
+    return EM_EMERGENCYSTATUS_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMOTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMOTION_TYPE.java
new file mode 100644
index 0000000..578dca2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EMOTION_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 表情
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_EMOTION_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_EMOTION_TYPE_UNKNOWN = 0;
+    /**
+     *  普通/正常
+     */
+    public static final int					EM_EMOTION_TYPE_NORMAL = 1;
+    /**
+     *  微笑
+     */
+    public static final int					EM_EMOTION_TYPE_SMILE = 2;
+    /**
+     *  愤怒
+     */
+    public static final int					EM_EMOTION_TYPE_ANGER = 3;
+    /**
+     *  悲伤
+     */
+    public static final int					EM_EMOTION_TYPE_SADNESS = 4;
+    /**
+     *  厌恶
+     */
+    public static final int					EM_EMOTION_TYPE_DISGUST = 5;
+    /**
+     *  害怕
+     */
+    public static final int					EM_EMOTION_TYPE_FEAR = 6;
+    /**
+     *  惊讶
+     */
+    public static final int					EM_EMOTION_TYPE_SURPRISE = 7;
+    /**
+     *  正常
+     */
+    public static final int					EM_EMOTION_TYPE_NEUTRAL = 8;
+    /**
+     *  大笑
+     */
+    public static final int					EM_EMOTION_TYPE_LAUGH = 9;
+    /**
+     *  高兴
+     */
+    public static final int					EM_EMOTION_TYPE_HAPPY = 10;
+    /**
+     *  困惑
+     */
+    public static final int					EM_EMOTION_TYPE_CONFUSED = 11;
+    /**
+     *  尖叫
+     */
+    public static final int					EM_EMOTION_TYPE_SCREAM = 12;
+    /**
+     *  平静
+     */
+    public static final int					EM_EMOTION_TYPE_CALMNESS = 13;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java
new file mode 100644
index 0000000..27ab478
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_ALARM_TYPE_EX.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 详细类型
+ * @date 2022/12/06 19:32:31
+ */
+public enum EM_ENCLOSURE_ALARM_TYPE_EX {
+	/**
+	 * 未知
+	 */
+	ENCLOSURE_ALARM_EX_UNKNOWN(0, "未知"),
+	/**
+	 * 驶入
+	 */
+	ENCLOSURE_ALARM_EX_DRIVEIN(1, "驶入"),
+	/**
+	 * 驶出
+	 */
+	ENCLOSURE_ALARM_EX_DRIVEOUT(2, "驶出"),
+	/**
+	 * 超速
+	 */
+	ENCLOSURE_ALARM_EX_OVERSPEED(3, "超速"),
+	/**
+	 * 超速消失
+	 */
+	ENCLOSURE_ALARM_EX_SPEEDCLEAR(4, "超速消失");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ENCLOSURE_ALARM_TYPE_EX(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ENCLOSURE_ALARM_TYPE_EX enumType : EM_ENCLOSURE_ALARM_TYPE_EX.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ENCLOSURE_ALARM_TYPE_EX enumType : EM_ENCLOSURE_ALARM_TYPE_EX.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java
new file mode 100644
index 0000000..1419901
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENCLOSURE_TYPE_EX.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 围栏报警类型
+ * @date 2022/12/06 19:32:31
+ */
+public enum EM_ENCLOSURE_TYPE_EX {
+	/**
+	 * 未知
+	 */
+	EM_ENCLOSURE_TYPE_EX_UNKNOWN(0, "未知"),
+	/**
+	 * 限速区
+	 */
+	EM_ENCLOSURE_TYPE_EX_LIMITSPEED(1, "限速区"),
+	/**
+	 * 驾驶区
+	 */
+	EM_ENCLOSURE_TYPE_EX_DRIVEALLOW(2, "驾驶区"),
+	/**
+	 * 禁止区
+	 */
+	EM_ENCLOSURE_TYPE_EX_FORBIDDRIVE(3, "禁止区"),
+	/**
+	 * 装货区
+	 */
+	EM_ENCLOSURE_TYPE_EX_LOADGOODS(4, "装货区"),
+	/**
+	 * 卸货区
+	 */
+	EM_ENCLOSURE_TYPE_EX_UPLOADGOODS(5, "卸货区");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_ENCLOSURE_TYPE_EX(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ENCLOSURE_TYPE_EX enumType : EM_ENCLOSURE_TYPE_EX.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ENCLOSURE_TYPE_EX enumType : EM_ENCLOSURE_TYPE_EX.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_DIRECTION.java
new file mode 100644
index 0000000..b22293e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_DIRECTION.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 进口方向
+ * @date 2020/11/07
+ */
+public enum EM_ENTRY_DIRECTION {
+
+	// 未知
+	EM_ENTRY_UNKNOWN(0, "未知"),
+	// 北向南
+	EM_ENTRY_NORTH_TO_SOUTH(1, "北向南"),
+	// 东北向西南
+	EM_ENTRY_EASTNORTH_TO_WESTSOUTH(2, "东北向西南"),
+	// 东向西
+	EM_ENTRY_EAST_TO_WEST(3, "东向西"),
+	// 东南向西北
+	EM_ENTRY_EASTSOUTH_TO_WESTNORTH(4, "东南向西北"),
+	// 南向北
+	EM_ENTRY_SOUTH_TO_NORTH(5, "南向北"),
+	// 西南向东北
+	EM_ENTRY_WESTSOUTH_TO_EASTSOUTH(6, "西南向东北"),
+	// 西向东
+	EM_ENTRY_WEST_TO_EAST(7, "西向东"),
+	// 西北向东南
+	EM_ENTRY_WESTNORTH_TO_EASTSOUTH(8, "西北向东南");
+
+	private int value;
+	private String note;
+
+	private EM_ENTRY_DIRECTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ENTRY_DIRECTION enumType : EM_ENTRY_DIRECTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ENTRY_DIRECTION enumType : EM_ENTRY_DIRECTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_TYPE.java
new file mode 100644
index 0000000..94bcc26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ENTRY_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 进口类型
+ * @date 2020/11/07
+ */
+public enum EM_ENTRY_TYPE {
+
+	// 未知
+	EM_ENTRY_TYPE_UNKNOWN(0, "未知"),
+	// 左转
+	EM_ENTRY_TYPE_TURN_LEFT(1, "左转"),
+	// 直行
+	EM_ENTRY_TYPE_STRAIGHT(2, "直行"),
+	// 右转
+	EM_ENTRY_TYPE_TRUN_RIGHT(3, "右转"),
+	// 掉头
+	EM_ENTRY_TYPE_TURN_ROUND(4, "掉头");
+
+	private int value;
+	private String note;
+
+	private EM_ENTRY_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_ENTRY_TYPE enumType : EM_ENTRY_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_ENTRY_TYPE enumType : EM_ENTRY_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java
new file mode 100644
index 0000000..d1f3baf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_DETECT_TYPE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_EVENT_DETECT_TYPE {
+    /**未知*/
+    EM_EVENT_DETECT_TYPE_UNKNOWN(-1,"未知"),
+    /**小于等于阈值报警*/
+    EM_EVENT_DETECT_TYPE_LESS_OR_EQUAL(0,"小于等于阈值报警"),
+    /**大于等于阈值报警*/
+    EM_EVENT_DETECT_TYPE_GREATER_OR_EQUAL(1,"大于等于阈值报警"),
+    /**等于阀值报警*/
+    EM_EVENT_DETECT_TYPE_EQUAL(2,"等于阀值报警"),
+    /**不等于阀值报警*/
+    EM_EVENT_DETECT_TYPE_NOEQUAL(3,"不等于阀值报警"),
+    /**人数变化报警*/
+    EM_EVENT_DETECT_TYPE_CHANGE(4,"人数变化报警"),
+    /**大于阈值报警*/
+    EM_EVENT_DETECT_TYPE_GREATER(5,"大于阈值报警"),
+    /**小于阈值报警*/
+    EM_EVENT_DETECT_TYPE_LESS(6,"小于阈值报警"),
+    /**区间内报警,检测人数在区间范围内报警,包括边界值。区间值对应PersonNum字段*/
+    EM_EVENT_DETECT_TYPE_IN_INTERVAL(7,"区间内报警,检测人数在区间范围内报警,包括边界值。区间值对应PersonNum字段"),
+    /**区间外报警,检测人数在区间范围外报警,不包括边界值。区间值对应PersonNum字段*/
+    EM_EVENT_DETECT_TYPE_OUT_INTERVAL(8,"区间外报警,检测人数在区间范围外报警,不包括边界值。区间值对应PersonNum字段");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_EVENT_DETECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_EVENT_DETECT_TYPE enumType : EM_EVENT_DETECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_EVENT_DETECT_TYPE enumType : EM_EVENT_DETECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+    public static EM_EVENT_DETECT_TYPE getEnum(int value) {
+        for (EM_EVENT_DETECT_TYPE e : EM_EVENT_DETECT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_EVENT_DETECT_TYPE.EM_EVENT_DETECT_TYPE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS.java
new file mode 100644
index 0000000..60a804f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS.java
@@ -0,0 +1,484 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 智能分析事件类型枚举类
+ */
+public enum EM_EVENT_IVS {
+
+    /**
+     * 订阅所有事件
+     */
+    EVENT_IVS_ALL(0x00000001),
+    /**
+     * 拌线入侵事件(对应 DEV_EVENT_CROSSLINE_INFO)
+     */
+    EVENT_IVS_CROSSLINEDETECTION(0x00000002),
+    /**
+     * 区域入侵事件(对应 DEV_EVENT_CROSSREGION_INFO)
+     */
+    EVENT_IVS_CROSSREGIONDETECTION(0x00000003),
+    /**
+     * 物品遗留事件(对应 DEV_EVENT_LEFT_INFO)
+     */
+    EVENT_IVS_LEFTDETECTION(0x00000005),
+    /**
+     * 停留事件(对应 DEV_EVENT_STAY_INFO)
+     */
+    EVENT_IVS_STAYDETECTION(0x00000006),
+    /**
+     * 徘徊事件(对应  DEV_EVENT_WANDER_INFO)
+     */
+    EVENT_IVS_WANDERDETECTION(0x00000007),
+    /**
+     * 移动事件(对应 DEV_EVENT_MOVE_INFO)
+     */
+    EVENT_IVS_MOVEDETECTION(0x00000009),
+    /**
+     * 聚众事件(对应 DEV_EVENT_RIOTERL_INFO)
+     */
+    EVENT_IVS_RIOTERDETECTION(0x0000000B),
+    /**
+     * 斗殴事件(对应 DEV_EVENT_FIGHT_INFO)
+     */
+    EVENT_IVS_FIGHTDETECTION(0x0000000E),
+    /**
+     * 交通路口事件----老规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO)
+     */
+    EVENT_IVS_TRAFFICJUNCTION(0x00000017),
+    /**
+     * 交通卡口事件----老规则(对应 DEV_EVENT_TRAFFICGATE_INFO)
+     */
+    EVENT_IVS_TRAFFICGATE(0x00000018),
+    /**
+     * 目标检测事件 (对应 DEV_EVENT_FACEDETECT_INFO)(智能规则对应  EVENT_IVS_FACEDETECT)
+     */
+    EVENT_IVS_FACEDETECT(0x0000001A),
+    /**
+     * 交通拥堵事件(对应 DEV_EVENT_TRAFFICJAM_INFO)
+     */
+    EVENT_IVS_TRAFFICJAM(0x0000001B),
+    /**
+     * 交通违章-闯红灯事件(对应 DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO)
+     */
+    EVENT_IVS_TRAFFIC_RUNREDLIGHT(0x00000100),
+    /**
+     * 交通违章-压车道线事件(对应 DEV_EVENT_TRAFFIC_OVERLINE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_OVERLINE(0x00000101),
+    /**
+     * 交通违章-逆行事件(对应  DEV_EVENT_TRAFFIC_RETROGRADE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_RETROGRADE(0x00000102),
+    /**
+     * 交通违章-违章左转(对应 DEV_EVENT_TRAFFIC_TURNLEFT_INFO)
+     */
+    EVENT_IVS_TRAFFIC_TURNLEFT(0x00000103),
+    /**
+     * 交通违章-违章右转(对应 DEV_EVENT_TRAFFIC_TURNRIGHT_INFO)
+     */
+    EVENT_IVS_TRAFFIC_TURNRIGHT(0x00000104),
+    /**
+     * 交通违章-违章掉头(对应 DEV_EVENT_TRAFFIC_UTURN_INFO)
+     */
+    EVENT_IVS_TRAFFIC_UTURN(0x00000105),
+    /**
+     * 交通违章-超速(对应 DEV_EVENT_TRAFFIC_OVERSPEED_INFO)
+     */
+    EVENT_IVS_TRAFFIC_OVERSPEED(0x00000106),
+    /**
+     * 交通违章-低速(对应 DEV_EVENT_TRAFFIC_UNDERSPEED_INFO)
+     */
+    EVENT_IVS_TRAFFIC_UNDERSPEED(0x00000107),
+    /**
+     * 交通违章-违章停车(对应 DEV_EVENT_TRAFFIC_PARKING_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PARKING(0x00000108),
+    /**
+     * 交通违章-不按车道行驶(对应 DEV_EVENT_TRAFFIC_WRONGROUTE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_WRONGROUTE(0x00000109),
+    /**
+     * 交通违章-违章变道(对应 DEV_EVENT_TRAFFIC_CROSSLANE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_CROSSLANE(0x0000010A),
+    /**
+     * 交通违章-压黄线 (对应 DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_OVERYELLOWLINE(0x0000010B),
+    /**
+     * 交通违章-黄牌车占道事件(对应 DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE(0x0000010E),
+    /**
+     * 交通违章-斑马线行人优先事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY(0x0000010F),
+    /**
+     * 交通违章-禁止通行事件(对应 DEV_EVENT_TRAFFIC_NOPASSING_INFO)
+     */
+    EVENT_IVS_TRAFFIC_NOPASSING(0x00000111),
+    /**
+     * 异常奔跑事件(对应 DEV_EVENT_ABNORMALRUNDETECTION_INFO)
+     */
+    EVENT_IVS_ABNORMALRUNDETECTION(0x00000112),
+    /**
+     * 物品搬移事件(对应 DEV_EVENT_TAKENAWAYDETECTION_INFO)
+     */
+    EVENT_IVS_TAKENAWAYDETECTION(0x00000115),
+    /**
+     * 非法停车事件(对应 DEV_EVENT_PARKINGDETECTION_INFO)
+     */
+    EVENT_IVS_PARKINGDETECTION(0x00000116),
+    /**
+     * 目标识别事件(对应 DEV_EVENT_FACERECOGNITION_INFO, (对应的智能规则配置  CFG_FACERECOGNITION_INFO)
+     */
+    EVENT_IVS_FACERECOGNITION(0x00000117),
+    /**
+     * 交通手动抓拍事件(对应  DEV_EVENT_TRAFFIC_MANUALSNAP_INFO)
+     */
+    EVENT_IVS_TRAFFIC_MANUALSNAP(0x00000118),
+    /**
+     * 交通流量统计事件(对应 DEV_EVENT_TRAFFIC_FLOW_STATE)
+     */
+    EVENT_IVS_TRAFFIC_FLOWSTATE(0x00000119),
+    /**
+     * 有车占道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINROUTE(0x0000011B),
+    /**
+     * 外部报警事件(对应 DEV_EVENT_ALARM_INFO)
+     */
+    EVENT_ALARM_LOCALALARM(0x0000011D),
+    /**
+     * 交通违章--卡口事件----新规则(对应 DEV_EVENT_TRAFFICJUNCTION_INFO)
+     */
+    EVENT_IVS_TRAFFIC_TOLLGATE(0x00000120),
+    /**
+     * 交通违章--占用公交车道事件(对应 DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO)
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(0x00000124),
+    /**
+     * 交通违章--违章倒车事件(对应 DEV_EVENT_IVS_TRAFFIC_BACKING_INFO)
+     */
+    EVENT_IVS_TRAFFIC_BACKING(0x00000125),
+    /**
+     * 声音异常检测(对应 DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO)
+     */
+    EVENT_IVS_AUDIO_ABNORMALDETECTION(0x00000126),
+    /**
+     * 交通违章-闯黄灯事件(对应 DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO)
+     */
+    EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT(0x00000127),
+    /**
+     * 攀高检测事件(对应 DEV_EVENT_IVS_CLIMB_INFO)
+     */
+    EVENT_IVS_CLIMBDETECTION(0x00000128),
+    /**
+     * 离岗检测事件(对应 DEV_EVENT_IVS_LEAVE_INFO)
+     */
+    EVENT_IVS_LEAVEDETECTION(0x00000129),
+    /**
+     * 交通违章--黄网格线抓拍事件(对应 DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(0x0000012A),
+    /**
+     * 车位有车事件(对应 DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO )
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(0x0000012B),
+    /**
+     * 车位无车事件(对应  DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO )
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(0x0000012C),
+    /**
+     * 交通行人事件(对应 DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAIN(0x0000012D),
+    /**
+     * 交通抛洒物品事件(对应 DEV_EVENT_TRAFFIC_THROW_INFO)
+     */
+    EVENT_IVS_TRAFFIC_THROW(0x0000012E),
+    /**
+     * 交通违章--压停止线事件(对应 DEV_EVENT_TRAFFIC_OVERSTOPLINE)
+     */
+    EVENT_IVS_TRAFFIC_OVERSTOPLINE(0X00000137),
+    /**
+     * 交通违章--交通未系安全带事件(对应 DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT)
+     */
+    EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(0x00000138),
+    /**
+     * 驾驶员抽烟事件(对应 DEV_EVENT_TRAFFIC_DRIVER_SMOKING)
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_SMOKING(0x00000139),
+    /**
+     * 驾驶员打电话事件(对应 DEV_EVENT_TRAFFIC_DRIVER_CALLING)
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_CALLING(0x0000013A),
+    /**
+     * 交通违章--未按规定依次通行(对应 DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PASSNOTINORDER(0x0000013C),
+    /**
+     * 视频遮挡事件(对应 DEV_EVENT_ALARM_VIDEOBLIND)
+     */
+    EVENT_ALARM_VIDEOBLIND(0x00000153),
+    /**
+     * 交通违章--车辆拥堵禁入事件(对应 DEV_EVENT_ALARM_JAMFORBIDINTO_INFO)
+     */
+    EVENT_IVS_TRAFFIC_JAM_FORBID_INTO(0x00000163),
+    /**
+     * 加油站提枪、挂枪事件(对应  DEV_EVENT_TRAFFIC_FCC_INFO)
+     */
+    EVENT_IVS_TRAFFIC_FCC(0x0000016B),
+    /**
+     * 门禁事件 (对应 DEV_EVENT_ACCESS_CTL_INFO)
+     */
+    EVENT_IVS_ACCESS_CTL(0x00000204),
+    /**
+     * SnapManual事件(对应 DEV_EVENT_SNAPMANUAL)
+     */
+    EVENT_IVS_SNAPMANUAL(0x00000205),
+    /**
+     * 生理疲劳驾驶事件(对应 DEV_EVENT_TIREDPHYSIOLOGICAL_INFO)
+     */
+    EVENT_IVS_TRAFFIC_TIREDPHYSIOLOGICAL(0x00000207),
+    /**
+     * 人证比对事件(对应  DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO )
+     */
+    EVENT_IVS_CITIZEN_PICTURE_COMPARE(0x00000209),
+    /**
+     * 人体特征事件(对应 DEV_EVENT_HUMANTRAIT_INFO)
+     */
+    EVENT_IVS_HUMANTRAIT(0x00000215),
+    /**
+     * 开车低头报警事件(对应DEV_EVENT_TIREDLOWERHEAD_INFO)
+     */
+    EVENT_IVS_TRAFFIC_TIREDLOWERHEAD(0x0000020A),
+    /**
+     * 开车左顾右盼报警事件(对应DEV_EVENT_DRIVERLOOKAROUND_INFO)
+     */
+    EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND(0x0000020B),
+    /**
+     * 开车离岗报警事件(对应DEV_EVENT_DRIVERLEAVEPOST_INFO)
+     */
+    EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST(0x0000020C),
+    /**
+     * 开车打哈欠事件(对应DEV_EVENT_DRIVERYAWN_INFO)
+     */
+    EVENT_IVS_TRAFFIC_DRIVERYAWN(0x00000210),
+    /**
+     * 人脸分析事件 (暂未有具体事件)
+     */
+    EVENT_IVS_FACEANALYSIS(0x00000217),
+    /**
+     * 车辆超速报警事件(对应 DEV_EVENT_HIGHSPEED_INFO)
+     */
+    EVENT_IVS_HIGHSPEED(0x0000022B),
+    /**
+     * 车牌对比事件(对应 DEV_EVENT_VEHICLE_RECOGNITION_INFO)
+     */
+    EVENT_IVS_VEHICLE_RECOGNITION(0x00000231),
+
+    /**
+     * 人群密度检测事件(对应结构体 DEV_EVENT_CROWD_DETECTION_INFO)
+     */
+    EVENT_IVS_CROWDDETECTION(0x0000022C),
+    /**
+     * 立体视觉区域内人数统计事件(对应DEV_EVENT_MANNUM_DETECTION_INFO)
+     */
+    EVENT_IVS_MAN_NUM_DETECTION(0x0000020E),
+    /**
+     * 电动扶梯运行异常事件 (对应DEV_EVENT_ELEVATOR_ABNORMAL_INFO)
+     */
+    EVENT_IVS_ELEVATOR_ABNORMAL(0x0000023D),
+    /**
+     * IVSS目标检测事件 (暂未有具体事件)
+     */
+    EVENT_IVSS_FACEATTRIBUTE(0x00000243),
+    /**
+     * IVSS目标识别事件 (暂未有具体事件)
+     */
+    EVENT_IVSS_FACECOMPARE(0x00000244),
+    /**
+     * 火警事件(对应 DEV_EVENT_FIREWARNING_INFO)
+     */
+    EVENT_IVS_FIREWARNING(0x00000245),
+    /**
+     * 车道偏移预警(对应 DEV_EVENT_LANEDEPARTURE_WARNNING_INFO)
+     */
+    EVENT_IVS_LANEDEPARTURE_WARNNING(0X00000251),
+    /**
+     * 前向碰撞预警(对应 DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO)
+     */
+    EVENT_IVS_FORWARDCOLLISION_WARNNING(0x00000252),
+    /**
+     * 漂浮物检测事件 (对应 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO)
+     */
+    EVENT_IVS_FLOATINGOBJECT_DETECTION(0x00000257),
+    /**
+     * 打电话检测事件(对应 DEV_EVENT_PHONECALL_DETECT_INFO)
+     */
+    EVENT_IVS_PHONECALL_DETECT(0x0000025A),
+    /**
+     * 吸烟检测事件(对应 DEV_EVENT_SMOKING_DETECT_INFO)
+     */
+    EVENT_IVS_SMOKING_DETECT(0x0000025B),
+    /**
+     * 雷达限速报警事件(对应 DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO)
+     */
+    EVENT_IVS_RADAR_SPEED_LIMIT_ALARM(0x0000025C),
+    /**
+     * 水位检测事件 (对应 DEV_EVENT_WATER_LEVEL_DETECTION_INFO)
+     */
+    EVENT_IVS_WATER_LEVEL_DETECTION(0x0000025D),
+    /**
+     * 城市机动车违停事件 (对应 DEV_EVENT_CITY_MOTORPARKING_INFO)
+     */
+    EVENT_IVS_CITY_MOTORPARKING(0x0000024F),
+    /**
+     * 城市机非动车违停事件 (对应 DEV_EVENT_CITY_NONMOTORPARKING_INFO)
+     */
+    EVENT_IVS_CITY_NONMOTORPARKING(0x00000250),
+    /**
+     * 违规撑伞检测事件 (对应 DEV_EVENT_HOLD_UMBRELLA_INFO)
+     */
+    EVENT_IVS_HOLD_UMBRELLA(0x0000025E),
+    /**
+     * 垃圾暴露检测事件 (对应 DEV_EVENT_GARBAGE_EXPOSURE_INFO)
+     */
+    EVENT_IVS_GARBAGE_EXPOSURE(0x0000025F),
+    /**
+     * 垃圾桶满溢检测事件 (对应 DEV_EVENT_DUSTBIN_OVER_FLOW_INFO)
+     */
+    EVENT_IVS_DUSTBIN_OVER_FLOW(0x00000260),
+    /**
+     * 门前脏乱检测事件 (对应 DEV_EVENT_DOOR_FRONT_DIRTY_INFO)
+     */
+    EVENT_IVS_DOOR_FRONT_DIRTY(0x00000261),
+    /**
+     * 排队滞留时间报警事件 (对应 DEV_EVENT_QUEUESTAY_DETECTION_INFO)
+     */
+    EVENT_IVS_QUEUESTAY_DETECTION(0X00000262),
+    /**
+     * 排队人数异常报警事件(对应 DEV_EVENT_QUEUENUM_DETECTION_INFO)
+     */
+    EVENT_IVS_QUEUENUM_DETECTION(0X00000263),
+    /**
+     * 生成图规则事件(对应 DEV_EVENT_GENERATEGRAPH_DETECTION_INFO)
+     */
+    EVENT_IVS_GENERATEGRAPH_DETECTION(0X00000264),
+    /**
+     * 交通违章-手动取证(对应  DEV_EVENT_TRAFFIC_PARKING_MANUAL_INFO)
+     */
+    EVENT_IVS_TRAFFIC_PARKING_MANUAL(0x00000265),
+    /**
+     * 安全帽检测事件(对应 DEV_EVENT_HELMET_DETECTION_INFO)
+     */
+    EVENT_IVS_HELMET_DETECTION(0x00000266),
+    /**
+     * 包裹堆积程度检测事件(对应 DEV_EVENT_DEPOSIT_DETECTION_INFO)
+     */
+    EVENT_IVS_DEPOSIT_DETECTION(0x00000267),
+    /**
+     * 热点异常报警事件(对应 DEV_EVENT_HOTSPOT_WARNING_INFO)
+     */
+    EVENT_IVS_HOTSPOT_WARNING(0x00000268),
+    /**
+     * 称重平台检测事件(对应 DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO)
+     */
+    EVENT_IVS_WEIGHING_PLATFORM_DETECTION(0x00000269),
+    /**
+     * 课堂行为分析事件(对应 DEV_EVENT_CLASSROOM_BEHAVIOR_INFO)
+     */
+    EVENT_IVS_CLASSROOM_BEHAVIOR(0x0000026A),
+    /**
+     * 工装(安全帽/工作服等)检测事件(对应 DEV_EVENT_WORKCLOTHES_DETECT_INFO)
+     */
+    EVENT_IVS_WORKCLOTHES_DETECT(0x0000026E),
+    /**
+     * 立体视觉站立事件(对应DEV_EVENT_MANSTAND_DETECTION_INFO)
+     */
+    EVENT_IVS_MAN_STAND_DETECTION(0x0000020D),
+    /**
+     * 加油站车辆检测事件 (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO)
+     */
+    EVENT_IVS_GASSTATION_VEHICLE_DETECT(0x00000283),
+    /**
+     * 商铺占道经营事件(对应 DEV_EVENT_SHOPPRESENCE_INFO)
+     */
+    EVENT_IVS_SHOPPRESENCE(0x00000246),
+    /**
+     * 流动摊贩事件 (对应 DEV_EVENT_FLOWBUSINESS_INFO)
+     */
+    EVENT_IVS_FLOWBUSINESS(0x0000024E),
+    /**
+     * 行人卡口事件(对应 DEV_EVENT_PEDESTRIAN_JUNCTION_INFO)
+     */
+    EVENT_IVS_PEDESTRIAN_JUNCTION(0x00000230),
+    /**
+     * 拉横幅事件(对应 DEV_EVENT_BANNER_DETECTION_INFO)
+     */
+    EVENT_IVS_BANNER_DETECTION(0x0000023B),
+    /**
+     * 智慧厨房穿着检测事件(对不戴口罩、厨师帽以及颜色不符合规定的厨师服进行报警)(对应 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO)
+     */
+    EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(0x0000029D),
+    /**
+     * 水位监测事件
+     */
+    EVENT_IVS_WATER_STAGE_MONITOR(0x0000030D),
+    /**
+     * 暴力抛物检测(对应 DEV_EVENT_VIOLENT_THROW_DETECTION_INFO)
+     */
+    EVENT_IVS_VIOLENT_THROW_DETECTION(0x0000027D),
+    /**
+     * 人体温智能检测事件(对应 DEV_EVENT_ANATOMY_TEMP_DETECT_INFO)
+     */
+    EVENT_IVS_ANATOMY_TEMP_DETECT(0x00000303),
+    /**
+     * 起雾检测事件(对应 DEV_EVENT_FOG_DETECTION)
+     */
+    EVENT_IVS_FOG_DETECTION(0x00000308),
+    /**
+     * 视频异常事件(对应 DEV_EVENT_VIDEOABNORMALDETECTION_INFO)
+     */
+    EVENT_IVS_VIDEOABNORMALDETECTION(0x00000013),
+    /**
+     * 单人独处事件(对应 DEV_EVENT_STAY_ALONE_DETECTION_INFO)
+     */
+    EVENT_IVS_STAY_ALONE_DETECTION(0x00000270),
+    /**
+     * 囚犯起身事件(对应 DEV_EVENT_PSRISEDETECTION_INFO)
+     */
+    EVENT_IVS_PSRISEDETECTION(0x0000011E),
+    /**
+     * 高空抛物检测(对应DEV_EVENT_HIGH_TOSS_DETECT_INFO)
+     */
+    EVENT_IVS_HIGH_TOSS_DETECT(0x0000028D),
+
+    /**
+     * 特征提取事件(对应 DEV_EVENT_FEATURE_ABSTRACT_INFO)
+     */
+    EVENT_IVS_FEATURE_ABSTRACT(0x00000276),
+	
+	/**
+	 * 非法运输事件(对应 NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO)
+	 */
+	EVENT_IVS_ILLEGAL_CARRIAGE( 0x0000042F), 
+	
+	/**
+	 * 打包垃圾检测事件(对应 NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO)
+	 */
+	EVENT_IVS_GARBAGE_PLASTICBAG( 0x00000459); 
+
+
+    private final int id;
+
+    private EM_EVENT_IVS(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java
new file mode 100644
index 0000000..cfc22ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_IVS_TYPE.java
@@ -0,0 +1,858 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.DEV_EVENT_NUMBERSTAT_INFO;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 智能分析事件类型
+ * 对应接口{@link com.netsdk.lib.NetSDKLib#CLIENT_RealLoadPictureEx(NetSDKLib.LLong, int, int, int, Callback, Pointer, Pointer)}
+ * @date 2020/10/14
+ */
+public enum EM_EVENT_IVS_TYPE {
+    /**
+     * 订阅所有事件
+     */
+    EVENT_IVS_ALL(0x00000001, "所有事件"),
+    /**
+     * 拌线入侵事件
+     * 对应结构体{@link NetSDKLib.DEV_EVENT_CROSSLINE_INFO}
+     */
+    EVENT_IVS_CROSSLINEDETECTION(0x00000002, "拌线入侵事件"),
+    /**
+     * 区域入侵事件
+     * 对应 {@link NetSDKLib.DEV_EVENT_CROSSREGION_INFO}
+     */
+    EVENT_IVS_CROSSREGIONDETECTION(0x00000003, "区域入侵事件"),
+    /**
+     * 贴条事件
+     * 对应 {@see DEV_EVENT_PASTE_INFO}
+     */
+    EVENT_IVS_PASTEDETECTION(0x00000004, "贴条事件"),
+    /**
+     * 物品遗留事件
+     * (对应 {@link NetSDKLib.DEV_EVENT_LEFT_INFO})
+     */
+    EVENT_IVS_LEFTDETECTION(0x00000005, "物品遗留事件"),
+    /**
+     * 停留事件
+     * (对应 {@link NetSDKLib.DEV_EVENT_STAY_INFO})
+     */
+    EVENT_IVS_STAYDETECTION(0x00000006, "停留事件"),
+    /**
+     * 徘徊事件
+     * (对应 {@link NetSDKLib.DEV_EVENT_WANDER_INFO})
+     */
+    EVENT_IVS_WANDERDETECTION(0x00000007, "徘徊事件"),
+    /**
+     * 物品保全事件
+     * (对应 {@see DEV_EVENT_PRESERVATION_INFO})
+     */
+    EVENT_IVS_PRESERVATION(0x00000008, "物品保全事件"),
+    /**
+     * (对应 {@link NetSDKLib.DEV_EVENT_MOVE_INFO})
+     */
+    EVENT_IVS_MOVEDETECTION(0x00000009, "移动事件"),
+    /**
+     * {@see DEV_EVENT_TAIL_INFO}
+     */
+    EVENT_IVS_TAILDETECTION(0x0000000A, "尾随事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_RIOTERL_INFO}
+     */
+    EVENT_IVS_RIOTERDETECTION(0x0000000B, "聚众事件"),
+    /**
+     * {@see DEV_EVENT_FIRE_INFO}
+     */
+    EVENT_IVS_FIREDETECTION(0x0000000C, "火警事件"),
+    /**
+     * {@see DEV_EVENT_SMOKE_INFO}
+     */
+    EVENT_IVS_SMOKEDETECTION(0x0000000D, "烟雾报警事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_FIGHT_INFO}
+     */
+    EVENT_IVS_FIGHTDETECTION(0x0000000E, "斗殴事件"),
+    /**
+     * {@see DEV_EVENT_FLOWSTAT_INFO}
+     */
+    EVENT_IVS_FLOWSTAT(0x0000000F, "流量统计事件"),
+    /**
+     * {@link DEV_EVENT_NUMBERSTAT_INFO}
+     */
+    EVENT_IVS_NUMBERSTAT(0x00000010, "数量统计事件"),
+    EVENT_IVS_CAMERACOVERDDETECTION(0x00000011, "摄像头覆盖事件(保留)"),
+    EVENT_IVS_CAMERAMOVEDDETECTION(0x00000012, "摄像头移动事件(保留)"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_VIDEOABNORMALDETECTION_INFO}
+     */
+    EVENT_IVS_VIDEOABNORMALDETECTION(0x00000013, "视频异常事件"),
+    EVENT_IVS_VIDEOBADDETECTION(0x00000014, "视频损坏事件(保留)"),
+    /**
+     * {@see DEV_EVENT_TRAFFICCONTROL_INFO}
+     * <p>
+     * {@see }
+     */
+    EVENT_IVS_TRAFFICCONTROL(0x00000015, "交通管理事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFICACCIDENT_INFO}
+     */
+    EVENT_IVS_TRAFFICACCIDENT(0x00000016, "交通事故事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO}
+     */
+    EVENT_IVS_TRAFFICJUNCTION(0x00000017, "交通路口事件----老规则"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFICGATE_INFO}
+     */
+    EVENT_IVS_TRAFFICGATE(0x00000018, "交通卡口事件----老规则"),
+    /**
+     * {@see DEV_EVENT_TRAFFICSNAPSHOT_INFO}
+     */
+    EVENT_TRAFFICSNAPSHOT(0x00000019, "交通抓拍事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_FACEDETECT_INFO}
+     */
+    EVENT_IVS_FACEDETECT(0x0000001A, "目标检测事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFICJAM_INFO}
+     */
+    EVENT_IVS_TRAFFICJAM(0x0000001B, "交通拥堵事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE(0x0000001C, "非机动车占机动车车道事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_RUNREDLIGHT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_RUNREDLIGHT(0x00000100, "交通违章-闯红灯事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_OVERLINE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_OVERLINE(0x00000101, "交通违章-压车道线事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_RETROGRADE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_RETROGRADE(0x00000102, "交通违章-逆行事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_TURNLEFT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_TURNLEFT(0x00000103, "交通违章-违章左转"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_TURNRIGHT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_TURNRIGHT(0x00000104, "交通违章-违章右转"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_UTURN_INFO}
+     */
+    EVENT_IVS_TRAFFIC_UTURN(0x00000105, "交通违章-违章掉头"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_OVERSPEED_INFO}
+     */
+    EVENT_IVS_TRAFFIC_OVERSPEED(0x00000106, "交通违章-超速"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_UNDERSPEED_INFO}
+     */
+    EVENT_IVS_TRAFFIC_UNDERSPEED(0x00000107, "交通违章-低速"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PARKING_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PARKING(0x00000108, "交通违章-违章停车"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_WRONGROUTE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_WRONGROUTE(0x00000109, "交通违章-不按车道行驶"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_CROSSLANE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_CROSSLANE(0x0000010A, "交通违章-违章变道"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_OVERYELLOWLINE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_OVERYELLOWLINE(0x0000010B, "交通违章-压黄线"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_DRIVINGONSHOULDER_INFO}
+     */
+    EVENT_IVS_TRAFFIC_DRIVINGONSHOULDER(0x0000010C, "交通违章-路肩行驶事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_YELLOWPLATEINLANE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE(0x0000010E, "交通违章-黄牌车占道事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PEDESTRAINPRIORITY_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY(0x0000010F, "交通违章-礼让行人/斑马线行人优先事件"),
+    /**
+     * {@see DEV_EVENT_CROSSFENCEDETECTION_INFO}
+     */
+    EVENT_IVS_CROSSFENCEDETECTION(0x0000011F, "翻越围栏事件"),
+    /**
+     * {@see DEV_EVENT_ELECTROSPARK_INFO}
+     */
+    EVENT_IVS_ELECTROSPARKDETECTION(0x00000110, "电火花事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_NOPASSING_INFO}
+     */
+    EVENT_IVS_TRAFFIC_NOPASSING(0x00000111, "交通违章-禁止通行事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_ABNORMALRUNDETECTION_INFO}
+     */
+    EVENT_IVS_ABNORMALRUNDETECTION(0x00000112, "异常奔跑事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_RETROGRADEDETECTION_INFO}
+     */
+    EVENT_IVS_RETROGRADEDETECTION(0x00000113, "人员逆行事件"),
+    /**
+     * {@see DEV_EVENT_INREGIONDETECTION_INFO}
+     */
+    EVENT_IVS_INREGIONDETECTION(0x00000114, "区域内检测事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TAKENAWAYDETECTION_INFO}
+     */
+    EVENT_IVS_TAKENAWAYDETECTION(0x00000115, "物品搬移事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_PARKINGDETECTION_INFO}
+     */
+    EVENT_IVS_PARKINGDETECTION(0x00000116, "非法停车事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_FACERECOGNITION_INFO}
+     */
+    EVENT_IVS_FACERECOGNITION(0x00000117, "目标识别事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_MANUALSNAP_INFO}
+     */
+    EVENT_IVS_TRAFFIC_MANUALSNAP(0x00000118, "交通手动抓拍事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_FLOW_STATE}
+     */
+    EVENT_IVS_TRAFFIC_FLOWSTATE(0x00000119, "交通流量统计事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_STAY_INFO}
+     */
+    EVENT_IVS_TRAFFIC_STAY(0x0000011A, "交通滞留事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINROUTE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINROUTE(0x0000011B, "有车占道事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_ALARM_INFO}
+     */
+    EVENT_ALARM_MOTIONDETECT(0x0000011C, "视频移动侦测事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_ALARM_INFO}
+     */
+    EVENT_ALARM_LOCALALARM(0x0000011D, "外部报警事件"),
+
+    /**
+     * {@link NetSDKLib.DEV_EVENT_PSRISEDETECTION_INFO}
+     */
+    EVENT_IVS_PSRISEDETECTION(0x0000011E, "囚犯起身事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO}
+     */
+    EVENT_IVS_TRAFFIC_TOLLGATE(0x00000120, "交通违章-卡口事件----新规则"),
+    /**
+     * {@see DEV_EVENT_DENSITYDETECTION_INFO}
+     */
+    EVENT_IVS_DENSITYDETECTION(0x00000121, "人员密集度检测"),
+    /**
+     * {@link NetSDKLib.NET_VIDEODIAGNOSIS_COMMON_INFO}
+     * {@link NetSDKLib.NET_REAL_DIAGNOSIS_RESULT}
+     */
+    EVENT_IVS_VIDEODIAGNOSIS(0x00000122, "视频诊断结果事件"),
+    /**
+     * {@see DEV_EVENT_QUEUEDETECTION_INFO}
+     */
+    EVENT_IVS_QUEUEDETECTION(0x00000123, "排队检测报警事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_VEHICLEINBUSROUTE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(0x00000124, "占用公交车道事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_IVS_TRAFFIC_BACKING_INFO}
+     */
+    EVENT_IVS_TRAFFIC_BACKING(0x00000125, "违章倒车事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_IVS_AUDIO_ABNORMALDETECTION_INFO}
+     */
+    EVENT_IVS_AUDIO_ABNORMALDETECTION(0x00000126, "声音异常检测"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_RUNYELLOWLIGHT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT(0x00000127, "交通违章-闯黄灯事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_IVS_CLIMB_INFO}
+     */
+    EVENT_IVS_CLIMBDETECTION(0x00000128, "攀高检测事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_IVS_LEAVE_INFO}
+     */
+    EVENT_IVS_LEAVEDETECTION(0x00000129, "离岗检测事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGONYELLOWBOX_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(0x0000012A, "黄网格线抓拍事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACEPARKING_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(0x0000012B, "车位有车事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PARKINGSPACENOPARKING_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(0x0000012C, "车位无车事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PEDESTRAIN_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAIN(0x0000012D, "交通行人事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_THROW_INFO}
+     */
+    EVENT_IVS_TRAFFIC_THROW(0x0000012E, "交通抛洒物品事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_IDLE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_IDLE(0x0000012F, "交通空闲事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_VEHICLEACC_INFO}
+     */
+    EVENT_ALARM_VEHICLEACC(0x00000130, "车载ACC断电报警事件"),
+    /**
+     * {@see DEV_EVENT_VEHICEL_ALARM_INFO}
+     */
+    EVENT_ALARM_VEHICLE_TURNOVER(0x00000131, "车辆侧翻报警事件"),
+    /**
+     * {@see DEV_EVENT_VEHICEL_ALARM_INFO}
+     */
+    EVENT_ALARM_VEHICLE_COLLISION(0x00000132, "车辆撞车报警事件"),
+    EVENT_ALARM_VEHICLE_LARGE_ANGLE(0x00000133, "车载摄像头大角度扭转事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE(0x00000134, "车位压线事件"),
+    /**
+     * {@see DEV_EVENT_IVS_MULTI_SCENE_SWICH_INFO}
+     */
+    EVENT_IVS_MULTISCENESWITCH(0x00000135, "多场景切换事件"),
+    /**
+     * {@see DEV_EVENT_TRAFFIC_RESTRICTED_PLATE}
+     */
+    EVENT_IVS_TRAFFIC_RESTRICTED_PLATE(0x00000136, "受限车牌事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_OVERSTOPLINE}
+     */
+    EVENT_IVS_TRAFFIC_OVERSTOPLINE(0x00000137, "压停止线事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_WITHOUT_SAFEBELT}
+     */
+    EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(0x00000138, "交通未系安全带事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_DRIVER_SMOKING}
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_SMOKING(0x00000139, "驾驶员抽烟事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_DRIVER_CALLING}
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_CALLING(0x0000013A, "驾驶员打电话事件"),
+    /**
+     * {@link com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT(0x0000013B, "行人闯红灯事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_TRAFFIC_PASSNOTINORDER_INFO}
+     */
+    EVENT_IVS_TRAFFIC_PASSNOTINORDER(0x0000013C, "未按规定依次通行"),
+    EVENT_IVS_OBJECT_DETECTION(0x00000141, "物体特征检测事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_ANALOGALRM_INFO}
+     */
+    EVENT_ALARM_ANALOGALARM(0x00000150, "模拟量报警通道的报警事件"),
+    EVENT_IVS_CROSSLINEDETECTION_EX(0x00000151, "警戒线扩展事件"),
+    EVENT_ALARM_COMMON(0x00000152, "普通录像"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_ALARM_VIDEOBLIND}
+     */
+    EVENT_ALARM_VIDEOBLIND(0x00000153, "视频遮挡事件"),
+    EVENT_ALARM_VIDEOLOSS(0x00000154, "视频丢失事件"),
+    /**
+     * {@see DEV_EVENT_GETOUTBED_INFO}
+     */
+    EVENT_IVS_GETOUTBEDDETECTION(0x00000155, "下床事件"),
+    /**
+     * {@see DEV_EVENT_PATROL_INFO}
+     */
+    EVENT_IVS_PATROLDETECTION(0x00000156, "巡逻检测事件"),
+    /**
+     * {@see DEV_EVENT_ONDUTY_INFO}
+     */
+    EVENT_IVS_ONDUTYDETECTION(0x00000157, "站岗检测事件"),
+    EVENT_IVS_NOANSWERCALL(0x00000158, "门口机呼叫未响应事件"),
+    EVENT_IVS_STORAGENOTEXIST(0x00000159, "存储组不存在事件"),
+    EVENT_IVS_STORAGELOWSPACE(0x0000015A, "硬盘空间低报警事件"),
+    EVENT_IVS_STORAGEFAILURE(0x0000015B, "存储错误事件"),
+    /**
+     * {@see DEV_EVENT_PROFILE_ALARM_TRANSMIT_INFO}
+     */
+    EVENT_IVS_PROFILEALARMTRANSMIT(0x0000015C, "报警传输事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_VIDEOSTATIC_INFO}
+     */
+    EVENT_IVS_VIDEOSTATIC(0x0000015D, "视频静态检测事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_VIDEOTIMING_INFO}
+     */
+    EVENT_IVS_VIDEOTIMING(0x0000015E, "视频定时检测事件"),
+    /**
+     * {@see CFG_IVS_HEATMAP_INFO}
+     */
+    EVENT_IVS_HEATMAP(0x0000015F, "热度图"),
+    /**
+     * {@see DEV_EVENT_ALARM_CITIZENIDCARD_INFO}
+     */
+    EVENT_IVS_CITIZENIDCARD(0x00000160, "证件信息读取事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_PIC_INFO}
+     */
+    EVENT_IVS_PICINFO(0x00000161, "图片信息事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_NETPLAYCHECK_INFO}
+     */
+    EVENT_IVS_NETPLAYCHECK(0x00000162, "上网登记事件"),
+    /**
+     * {@see DEV_EVENT_ALARM_JAMFORBIDINTO_INFO}
+     */
+    EVENT_IVS_TRAFFIC_JAM_FORBID_INTO(0x00000163, "车辆拥堵禁入事件"),
+    /**
+     * {@see EV_EVENT_SNAPBYTIME}
+     */
+    EVENT_IVS_SNAPBYTIME(0x00000164, "定时抓图事件"),               //(对应 DEV_EVENT_SNAPBYTIME)
+    EVENT_IVS_PTZ_PRESET(0x00000165, "云台转动到预置点事件"),        // (对应 DEV_EVENT_ALARM_PTZ_PRESET_INFO)
+    EVENT_IVS_RFID_INFO(0x00000166, "红外线检测信息事件"),        // (对应 DEV_EVENT_ALARM_RFID_INFO)
+    EVENT_IVS_STANDUPDETECTION(0x00000167, "人起立检测事件"),        //
+    EVENT_IVS_QSYTRAFFICCARWEIGHT(0x00000168, "交通卡口称重事件"),        // (对应 DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO)
+    EVENT_IVS_TRAFFIC_COMPAREPLATE(0x00000169, "卡口前后车牌合成事件"),        // (对应DEV_EVENT_TRAFFIC_COMPAREPLATE_INFO)
+    EVENT_IVS_SHOOTINGSCORERECOGNITION(0x0000016A, "打靶像机事件"),        // (对应 DEV_EVENT_SHOOTING_SCORE_RECOGNITION_INFO,CFG_IVS_SHOOTINGSCORERECOGNITION_INFO)
+    EVENT_IVS_TRAFFIC_FCC(0x0000016B, "加油站提枪、挂枪事件"),        // (对应 DEV_EVENT_TRAFFIC_FCC_INFO)
+    EVENT_IVS_TRAFFIC_TRANSFINITE(0x0000016C, "违章超限抓图上报事件"),        // ,绍兴科技治超(对应 DEV_EVENT_TRAFFIC_TRANSFINITE_INFO)
+    EVENT_IVS_SCENE_CHANGE(0x0000016D, "场景变更事件"),        // (对应 DEV_ALRAM_SCENECHANGE_INFO,CFG_VIDEOABNORMALDETECTION_INFO)
+    EVENT_IVS_LETRACK(0x0000016E, "简单跟踪事件(暂未有具体事件)"),        //
+    EVENT_IVS_OBJECT_ACTION(0x0000016F, "物体检测事件(暂未有具体事件)"),        //
+    EVENT_IVS_TRAFFIC_ANALYSE_PRESNAP(0x00000170, "预分析抓拍图片事件"),        // (对应 DEV_EVENT_TRAFFIC_ANALYSE_PRESNAP_INFO)
+    EVENT_ALARM_EQSTATE(0x00000171, "智能插座电量状态上报(暂未有具体事件)"),        //
+    EVENT_IVS_ALARM_IPC(0x00000172, "DVR/NVR设备上的IPC报警"),        // (对应 DEV_EVENT_ALARM_IPC_INFO)
+    EVENT_IVS_POS_RECORD(0x00000173, "POS录像查询事件(暂未有具体事件)"),        //
+    EVENT_IVS_NEAR_DISTANCE_DETECTION(0x00000174, "近距离接触事件"),        // (对应 DEV_EVENT_NEAR_DISTANCE_DETECTION_INFO)
+    EVENT_IVS_OBJECTSTRUCTLIZE_PERSON(0x00000175, "行人特征检测事件"),        // (对应 DEV_EVENT_OBJECTSTRUCTLIZE_PERSON_INFO)
+    EVENT_IVS_OBJECTSTRUCTLIZE_NONMOTOR(0x00000176, "非机动车特征检测事件"),        // (对应 DEV_EVENT_OBJECTSTRUCTLIZE_NONMOTOR_INFO)
+    EVENT_IVS_TUMBLE_DETECTION(0x00000177, "倒地报警事件"),        // (对应 DEV_EVENT_TUMBLE_DETECTION_INFO)
+    /**
+     * 所有以traffic开头的事件
+     * 目前指的是
+     * EVENT_IVS_TRAFFICCONTROL -> EVENT_TRAFFICSNAPSHOT
+     * EVENT_IVS_TRAFFIC_RUNREDLIGHT -> EVENT_IVS_TRAFFIC_UNDERSPEED
+     */
+    EVENT_IVS_TRAFFIC_ALL(0x000001FF, "所有以traffic开头的事件"),
+    EVENT_IVS_VIDEOANALYSE(0x00000200, "所有智能分析事件"),
+    EVENT_IVS_LINKSD(0x00000201, "LinkSD事件"),      // (对应 DEV_EVENT_LINK_SD)
+    EVENT_IVS_VEHICLEANALYSE(0x00000202, "车辆特征检测分析"),      // (对应DEV_EVENT_VEHICLEANALYSE)
+    EVENT_IVS_FLOWRATE(0x00000203, "流量使用情况事件"),      // (对应 DEV_EVENT_FLOWRATE_INFO)
+    /**
+     * {@link NetSDKLib.DEV_EVENT_ACCESS_CTL_INFO}
+     */
+    EVENT_IVS_ACCESS_CTL(0x00000204, "门禁事件"),
+    /**
+     * {@link NetSDKLib.DEV_EVENT_SNAPMANUAL}
+     */
+    EVENT_IVS_SNAPMANUAL(0x00000205, "SnapManual事件"),
+    EVENT_IVS_TRAFFIC_ELETAGINFO(0x00000206, "RFID电子车牌标签事件"),      // (对应 DEV_EVENT_TRAFFIC_ELETAGINFO_INFO)
+    EVENT_IVS_TRAFFIC_TIREDPHYSIOLOGICAL(0x00000207, "生理疲劳驾驶事件"),      // (对应 DEV_EVENT_TIREDPHYSIOLOGICAL_INFO)
+    EVENT_IVS_TRAFFIC_BUSSHARPTURN(0x00000208, "车辆急转报警事件"),      // (对应DEV_EVENT_BUSSHARPTURN_INFO)
+    EVENT_IVS_CITIZEN_PICTURE_COMPARE(0x00000209, "人证比对事件"),      // (对应 DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO)
+    EVENT_IVS_TRAFFIC_TIREDLOWERHEAD(0x0000020A, "开车低头报警事件"),      // (对应DEV_EVENT_TIREDLOWERHEAD_INFO)
+    EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND(0x0000020B, "开车左顾右盼报警事件"),      // (对应DEV_EVENT_DRIVERLOOKAROUND_INFO)
+    EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST(0x0000020C, "开车离岗报警事件"),      // (对应DEV_EVENT_DRIVERLEAVEPOST_INFO)
+    EVENT_IVS_MAN_STAND_DETECTION(0x0000020D, "立体视觉站立事件"),      // (对应DEV_EVENT_MANSTAND_DETECTION_INFO)
+    EVENT_IVS_MAN_NUM_DETECTION(0x0000020E, "立体视觉区域内人数统计事件"),      // (对应DEV_EVENT_MANNUM_DETECTION_INFO)
+    EVENT_IVS_STEREO_NUMBERSTAT(0x0000020F, "客流量统计事件"),      // (暂未有具体事件)
+    EVENT_IVS_TRAFFIC_DRIVERYAWN(0x00000210, "开车打哈欠事件"),      // (对应DEV_EVENT_DRIVERYAWN_INFO)
+    EVENT_IVS_NUMBERSTAT_PLAN(0x00000211, "客流量统计计划"),      // (暂未有具体事件,球机使用,对应规则配置结构体 CFG_NUMBERSTAT_INFO)
+    EVENT_IVS_HEATMAP_PLAN(0x00000212, "热度图计划"),      // (暂未有具体事件,球机使用,对应规则配置结构体 CFG_IVS_HEATMAP_INFO)
+    EVENT_IVS_CALLNOANSWERED(0x00000213, "呼叫无答应事件"),      //
+    EVENT_IVS_IGNOREINVITE(0x00000214, "无视邀请事件"),      //
+    EVENT_IVS_HUMANTRAIT(0x00000215, "人体特征事件"),      // (对应 DEV_EVENT_HUMANTRAIT_INFO)
+    EVENT_ALARM_LE_HEADDETECTION(0x00000216, "乐橙人头检测事件"),      // (对应 DEV_EVENT_LE_HEADDETECTION_INFO)
+    EVENT_IVS_FACEANALYSIS(0x00000217, "人脸分析事件"),      //  (暂未有具体事件)
+    EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT(0x00000218, "左转不礼让直行事件"),      // (对应 DEV_EVENT_TURNLEFTAFTERSTRAIGHT_INFO)
+    EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN(0x00000219, "大弯小转事件"),      // (对应 DEV_EVENT_BIGBENDSMALLTURN_INFO)
+    EVENT_IVS_ROAD_CONSTRUCTION(0x0000021A, "道路施工监测事件"),      // (对应DEV_EVENT_ROAD_CONSTRUCTION_INFO)
+    EVENT_IVS_ROAD_BLOCK(0x0000021B, "路障检测事件"),      // (对应DEV_EVENT_ROAD_BLOCK_INFO)
+    EVENT_IVS_TRAFFIC_QUEUEJUMP(0x0000021C, "车辆加塞事件"),      // (对应 DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO)
+    EVENT_IVS_VEHICLE_SUSPICIOUSCAR(0x0000021D, "嫌疑车辆事件"),      // (对应 DEV_EVENT_VEHICLE_SUSPICIOUSCAR_INFO)
+    EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT(0x0000021E, "右转不礼让直行事件"),    // (对应 DEV_EVENT_TURNRIGHTAFTERSTRAIGHT_INFO)
+    EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE(0x0000021F, "右转不礼让直行行人"),    // (对应 DEV_EVENT_TURNRIGHTAFTERPEOPLE_INFO)
+    EVENT_IVS_INSTALL_CARDREADER(0x00000220, "安装读卡器事件"),      // (对应 DEV_EVENT_INSTALL_CARDREADER_INFO)
+    EVENT_ALARM_YALE_DROPBOX_BADTOKEN(0x00000221, " Yale token失效事件,只用于订阅手机推送"),      //
+    EVENT_IVS_ACC_OFF_SNAP(0x00000222, "车载设备断电前抓拍上传事件"),      // (对应 DEV_EVENT_ACC_OFF_SNAP_INFO)
+    EVENI_IVS_XRAY_DETECTION(0x00000223, "X光检测事件"),        //  (对应 DEV_EVENT_XRAY_DETECTION_INFO)
+    EVENT_IVS_NOTCLEARCAR(0x00000224, "未清车告警"),        // (对应 DEV_EVENT_NOTCLEARCAR_INFO)
+    EVENT_IVS_SOSALEART(0x00000225, "sos求救报警"),        // (对应 DEV_EVENT_SOSALEART_INFO)
+    EVENT_IVS_OVERLOAD(0x00000226, "超载抓图"),        // (对应 DEV_EVENT_OVERLOAD_INFO)
+    EVENT_IVS_NONWORKINGTIME(0x00000227, "非工作时间告警"),        // (对应 DEV_EVENT_NONWORKINGTIME_INFO)
+    EVENT_IVS_TRAFFIC_HIGH_BEAM(0x00000228, "远光灯违章事件"),        // (对应 DEV_EVENT_TRAFFIC_HIGH_BEAM_INFO)
+    EVENT_IVS_TRAFFIC_TRUCKFORBID(0x00000229, "禁止货车事件"),        // (对应 DEV_EVENT_TRAFFICTRUCKFORBID_INFO)
+    EVENT_IVS_DRIVINGWITHOUTCARD(0x0000022A, "无卡驾驶报警事件"),        // (对应 DEV_EVENT_DRIVINGWITHOUTCARD_INFO)
+    EVENT_IVS_HIGHSPEED(0x0000022B, "车辆超速报警事件"),        // (对应 DEV_EVENT_HIGHSPEED_INFO)
+    EVENT_IVS_CROWDDETECTION(0x0000022C, "人群密度检测事件"),        // (对应结构体 DEV_EVENT_CROWD_DETECTION_INFO)
+    EVENT_IVS_TRAFFIC_CARDISTANCESHORT(0x0000022D, "车间距过小报警事件"),        // (对应 DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO)
+    /**
+     * {@link NetSDKLib.DEV_EVENT_PEDESTRIAN_JUNCTION_INFO}
+     */
+    EVENT_IVS_PEDESTRIAN_JUNCTION(0x00000230, "行人卡口事件"),
+    EVENT_IVS_VEHICLE_RECOGNITION(0x00000231, "车牌对比事件"),      // (对应 DEV_EVENT_VEHICLE_RECOGNITION_INFO)
+    EVENT_IVS_PASS_CHANGE(0x00000232, "预置点图片变化事件"),        //  (对应 DEV_EVENT_PASS_CHANGE_INFO)
+    EVENT_IVS_TRAFFIC_PARKING_SPACEDETECTION(0x00000233, "违停相机单球车位检测规则事件"),        //
+    EVENT_IVS_TRAFFIC_WAITINGAREA(0x00000234, "违章进入待行区事件"),        // (对应 DEV_EVENT_TRAFFIC_WAITINGAREA_INFO)
+    EVENT_IVS_TRAFFIC_BAN(0x00000235, "机动车违法禁令标识事件"),        // (对应 DEV_EVENT_TRAFFIC_BAN_INFO)
+    EVENT_IVS_POS_EXCHANGE(0x00000236, "POS机交易事件"),        // (对应 DEV_EVENT_POS_EXCHANGE_INFO)
+    EVENT_IVS_STEREO_FIGHTDETECTION(0x00000237, "立体行为分析打架/剧烈运动检测规则"),      // (仅用于规则配置,对应事件 EVENT_IVS_FIGHTDETECTION)
+    EVENT_IVS_STEREO_DISTANCE_DETECTION(0x00000238, "立体行为分析间距异常/人员靠近检测"),        // (仅用于规则配置,对应事件)
+    EVENT_IVS_STEREO_STEREOFALLDETECTION(0x00000239, "立体行为分析跌倒检测规则"),      // (仅用于规则配置,对应事件 EVENT_IVS_TUMBLE_DETECTION)
+    EVENT_IVS_STEREO_STAYDETECTION(0x0000023A, "立体行为分析人员滞留检测规则"),      // (仅用于规则配置,对应事件 EVENT_IVS_STAYDETECTION)
+    EVENT_IVS_BANNER_DETECTION(0x0000023B, "拉横幅事件"),        // (对应 DEV_EVENT_BANNER_DETECTION_INFO)
+    EVENT_IVS_NORMAL_FIGHTDETECTION(0x0000023C, "普通打架事件"),      // (只用于普通打架规则, 事件采用EVENT_IVS_FIGHTDETECTION)
+    EVENT_IVS_ELEVATOR_ABNORMAL(0x0000023D, "电动扶梯运行异常事件"),        //  (对应DEV_EVENT_ELEVATOR_ABNORMAL_INFO)
+    EVENT_IVS_NONMOTORDETECT(0x0000023E, "非机动车检测"),      //  (对应结构体 DEV_EVENT_NONMOTORDETECT_INFO)
+    EVENT_IVS_VEHICLEDETECT(0x0000023F, "机动车检测"),      //  (只用于规则配置,事件采用EVENT_IVS_TRAFFICJUNCTION)
+    EVENT_IVS_TRAFFIC_PARKING_B(0x00000240, "交通违章-B类违章停车"),      // (对应 DEV_EVENT_TRAFFIC_PARKING_B_INFO)
+    EVENT_IVS_TRAFFIC_PARKING_C(0x00000241, "交通违章-C类违章停车"),      // (对应 DEV_EVENT_TRAFFIC_PARKING_C_INFO)
+    EVENT_IVS_TRAFFIC_PARKING_D(0x00000242, "交通违章-D类违章停车"),      // (对应 DEV_EVENT_TRAFFIC_PARKING_D_INFO)
+    EVENT_IVSS_FACEATTRIBUTE(0x00000243, "IVSS目标检测事件 (暂未有具体事件)"),      //
+    EVENT_IVSS_FACECOMPARE(0x00000244, "IVSS目标识别事件 (暂未有具体事件)"),      //
+    EVENT_IVS_FIREWARNING(0x00000245, "火警事件"),        // (对应 DEV_EVENT_FIREWARNING_INFO)
+    EVENT_IVS_SHOPPRESENCE(0x00000246, "商铺占道经营事件"),      // (对应 DEV_EVENT_SHOPPRESENCE_INFO)
+    EVENT_IVS_WASTEDUMPED(0x00000247, "垃圾违章倾倒事件"),      // (对应 DEV_EVENT_WASTEDUMPED_INFO)
+    EVENT_IVS_SPILLEDMATERIAL_DETECTION(0x00000248, "抛洒物检测事件"),      // (对应 DEV_EVENT_SPILLEDMATERIAL_DETECTION_INFO)
+    EVENT_IVS_STEREO_MANNUM_DETECTION(0x00000249, "立体行为分析人数异常检测"),        //  (仅用于规则配置,对应事件 EVENT_IVS_MAN_NUM_DETECTION)
+    EVENT_IVS_DISTANCE_DETECTION(0x0000024A, "异常间距事件 "),        // (对应 DEV_EVENT_DISTANCE_DETECTION_INFO)
+    EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD(0x0000024B, "非机动车超载事件"),        //  (对应 DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO)
+    EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT(0x0000024C, "非机动车未戴安全帽事件"),    //  (对应 DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO)
+    EVENT_IVS_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING(0x0000024D, "拥堵滞留斑马线事件"),        //  (对应 DEV_EVENT_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO)
+
+    EVENT_IVS_FLOWBUSINESS(0x0000024E, "流动摊贩事件"),        //  (对应 DEV_EVENT_FLOWBUSINESS_INFO)
+
+    EVENT_IVS_CITY_MOTORPARKING(0x0000024F, "城市机动车违停事件"),        //  (对应 DEV_EVENT_CITY_MOTORPARKING_INFO)
+
+    EVENT_IVS_CITY_NONMOTORPARKING(0x00000250, "城市机非动车违停事件"),        //  (对应 DEV_EVENT_CITY_NONMOTORPARKING_INFO)
+
+    EVENT_IVS_LANEDEPARTURE_WARNNING(0X00000251, "车道偏移预警"),        // (对应 DEV_EVENT_LANEDEPARTURE_WARNNING_INFO)
+
+    EVENT_IVS_FORWARDCOLLISION_WARNNING(0x00000252, "前向碰撞预警"),        // (对应 DEV_EVENT_FORWARDCOLLISION_WARNNING_INFO)
+
+    EVENT_IVS_MATERIALSSTAY(0x00000253, "物料堆放事件"),        // (对应 DEV_EVENT_MATERIALSSTAY_INFO)
+
+    EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA(0x00000254, "非机动车装载伞具"),        // (对应 DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO)
+
+    EVENT_IVS_JABLOTRON_ALARM(0x00000255, "客户报警产品"),        //
+
+    EVENT_IVS_VIDEOUNFOCUS_ALARM(0x00000256, "视频虚焦事件"),        // (对应DEV_EVENT_VIDEOUNFOCUS_INFO)
+
+    EVENT_IVS_FLOATINGOBJECT_DETECTION(0x00000257, "漂浮物检测事件"),        //  (对应 DEV_EVENT_FLOATINGOBJECT_DETECTION_INFO)
+
+    EVENT_IVS_SHIP_DETECTION(0x00000258, "船舶检测事件"),        //  (对应 DEV_EVENT_SHIP_DETECTION_INFO)
+
+    EVENT_IVS_AIRPLANE_DETECTION(0x00000259, "飞机行为检测事件"),        // (对应 DEV_EVENT_AIRPLANE_DETECTION_INFO)
+
+    EVENT_IVS_PHONECALL_DETECT(0x0000025A, "打电话检测事件"),        // (对应 DEV_EVENT_PHONECALL_DETECT_INFO)
+
+    EVENT_IVS_SMOKING_DETECT(0x0000025B, "吸烟检测事件"),        // (对应 DEV_EVENT_SMOKING_DETECT_INFO)
+
+    EVENT_IVS_RADAR_SPEED_LIMIT_ALARM(0x0000025C, "雷达限速报警事件"),      // (对应 DEV_EVENT_RADAR_SPEED_LIMIT_ALARM_INFO)
+
+    EVENT_IVS_WATER_LEVEL_DETECTION(0x0000025D, "水位检测事件"),        //  (对应 DEV_EVENT_WATER_LEVEL_DETECTION_INFO)
+
+    EVENT_IVS_HOLD_UMBRELLA(0x0000025E, "违规撑伞检测事件"),        //  (对应 DEV_EVENT_HOLD_UMBRELLA_INFO)
+
+    EVENT_IVS_GARBAGE_EXPOSURE(0x0000025F, "垃圾暴露检测事件"),        //  (对应 DEV_EVENT_GARBAGE_EXPOSURE_INFO)
+
+    EVENT_IVS_DUSTBIN_OVER_FLOW(0x00000260, "垃圾桶满溢检测事件"),        //  (对应 DEV_EVENT_DUSTBIN_OVER_FLOW_INFO)
+
+    EVENT_IVS_DOOR_FRONT_DIRTY(0x00000261, "门前脏乱检测事件"),        //  (对应 DEV_EVENT_DOOR_FRONT_DIRTY_INFO)
+
+    EVENT_IVS_QUEUESTAY_DETECTION(0X00000262, "排队滞留时间报警事件"),        //  (对应 DEV_EVENT_QUEUESTAY_DETECTION_INFO)
+
+    EVENT_IVS_QUEUENUM_DETECTION(0X00000263, "排队人数异常报警事件"),        // (对应 DEV_EVENT_QUEUENUM_DETECTION_INFO)
+
+    EVENT_IVS_GENERATEGRAPH_DETECTION(0X00000264, "生成图规则事件"),        // (对应 DEV_EVENT_GENERATEGRAPH_DETECTION_INFO)
+
+    EVENT_IVS_TRAFFIC_PARKING_MANUAL(0x00000265, "交通违章-手动取证"),        // (对应 DEV_EVENT_TRAFFIC_PARKING_MANUAL_INFO)
+
+    EVENT_IVS_HELMET_DETECTION(0x00000266, "安全帽检测事件"),        // (对应 DEV_EVENT_HELMET_DETECTION_INFO)
+
+    EVENT_IVS_DEPOSIT_DETECTION(0x00000267, "包裹堆积程度检测事件"),        // (对应 DEV_EVENT_DEPOSIT_DETECTION_INFO)
+
+    EVENT_IVS_HOTSPOT_WARNING(0x00000268, "热点异常报警事件"),        // (对应 DEV_EVENT_HOTSPOT_WARNING_INFO)
+
+    EVENT_IVS_WEIGHING_PLATFORM_DETECTION(0x00000269, "称重平台检测事件"),        // (对应 DEV_EVENT_WEIGHING_PLATFORM_DETECTION_INFO)
+
+    EVENT_IVS_CLASSROOM_BEHAVIOR(0x0000026A, "课堂行为分析事件"),        // (对应 DEV_EVENT_CLASSROOM_BEHAVIOR_INFO)
+
+    EVENT_IVS_VEHICLE_DISTANCE_NEAR(0x0000026B, "安全驾驶车距过近报警事件"),        // (对应 DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO)
+
+    EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL(0x0000026C, "驾驶员异常报警事件"),        // (对应 DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO)
+
+    EVENT_IVS_TRAFFIC_DRIVER_CHANGE(0x0000026D, "驾驶员变更报警事件"),        // (对应 DEV_EVENT_TRAFFIC_DRIVER_CHANGE_INFO)
+
+    EVENT_IVS_WORKCLOTHES_DETECT(0x0000026E, "工装(安全帽/工作服等)检测事件"),        // (对应 DEV_EVENT_WORKCLOTHES_DETECT_INFO)
+
+    EVENT_IVS_SECURITYGATE_PERSONALARM(0x0000026F, "安检门人员报警事件"),      // (对应 DEV_EVENT_SECURITYGATE_PERSONALARM_INFO)
+
+    EVENT_IVS_STAY_ALONE_DETECTION(0x00000270, "单人独处事件"),        // (对应 DEV_EVENT_STAY_ALONE_DETECTION_INFO)
+
+    EVENT_IVS_TRAFFIC_ROAD_BLOCK(0x00000271, "交通路障检测事件"),        // (对应 DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO)
+
+    EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(0x00000272, "交通道路施工检测事件"),        // (对应 DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO)
+
+    EVENT_IVS_XRAY_DETECT_BYOBJECT(0x00000273, "X光按物体检测规则配置"),        // , 对应事件 EVENI_IVS_XRAY_DETECTION
+
+    EVENT_IVS_WORKSTATDETECTION(0x00000274, "作业统计事件"),        // (对应 DEV_EVENT_WORKSTATDETECTION_INFO)
+
+    EVENT_IVS_INFRAREDBLOCK(0x00000275, "红外阻断事件"),        // (对应 DEV_EVENT_INFRAREDBLOCK_INFO)
+
+    EVENT_IVS_FEATURE_ABSTRACT(0x00000276, "特征提取事件"),        // (对应 DEV_EVENT_FEATURE_ABSTRACT_INFO)
+
+    EVENT_IVS_INTELLI_SHELF(0x00000277, "智能补货事件"),        // (对应 DEV_EVENT_INTELLI_SHELF_INFO)
+
+    EVENT_IVS_PANORAMA_SHOT(0x00000278, "全景抓拍事件"),        // (对应 DEV_EVENT_PANORAMA_SHOT_INFO)
+
+    EVENT_ALARM_SMARTMOTION_HUMAN(0x00000279, "智能视频移动侦测事件(人)"),      // (对应 DEV_EVENT_SMARTMOTION_HUMAN_INFO)
+
+    EVENT_ALARM_SMARTMOTION_VEHICLE(0x0000027A, "智能视频移动侦测事件(车)"),      // (对应 DEV_EVENT_SMARTMOTION_VEHICLE_INFO)
+
+    EVENT_IVS_CAR_DRIVING_IN_OUT(0x0000027B, "车辆驶入驶出状态事件"),        // (对应 DEV_EVENT_CAR_DRIVING_IN_OUT_INFO)
+
+    EVENT_IVS_PARKINGSPACE_STATUS(0x0000027C, "停车位状态事件"),        // (对应 DEV_EVENT_PARKINGSPACE_STATUS_INFO)
+
+    EVENT_IVS_VIOLENT_THROW_DETECTION(0x0000027D, "暴力抛物检测"),        // (对应 DEV_EVENT_VIOLENT_THROW_DETECTION_INFO)
+
+    EVENT_IVS_TRAMCARSECTIONS_DETECTION(0x0000027E, "矿车超挂报警事件"),        // (对应 DEV_EVENT_TRAMCARSECTIONS_DETECTION_INFO)
+
+    EVENT_IVS_ALARM_BOX_ALARM(0x0000027F, "报警盒通道的触发报警事件"),      // , 目前只用于订阅手机推送
+
+    EVENT_IVS_FACE_COMPARISION(0x00000280, "人脸比对事件"),      // , 专用于手机推送的目标识别事件, 目前只用于订阅手机推送
+
+    EVENT_IVS_FACEBODY_DETECT(0x00000281, "人像检测事件"),        // (对应 DEV_EVENT_FACEBODY_DETECT_INFO)
+
+    EVENT_IVS_FACEBODY_ANALYSE(0x00000282, "人像识别事件"),        // (对应 DEV_EVENT_FACEBODY_ANALYSE_INFO)
+
+    EVENT_IVS_GASSTATION_VEHICLE_DETECT(0x00000283, "加油站车辆检测事件"),      //  (对应 DEV_EVENT_GASSTATION_VEHICLE_DETECT_INFO)
+
+    EVENT_IVS_CONGESTION_DETECTION(0x00000284, "道路场景车辆拥堵报警事件"),        // (对应 DEV_EVENT_CONGESTION_DETECTION_INFO)
+
+    EVENT_IVS_VEHICLELIMIT_DETECTION(0x00000285, "停车场场景下停车车辆上限报警"),        // (对应 DEV_EVENT_VEHICLELIMIT_DETECTION_INFO)
+
+    EVENT_IVS_ANIMAL_DETECTION(0x00000286, "动物检测事件"),      // (对应 DEV_EVENT_ANIMAL_DETECTION_INFO)
+    /**
+     * {@link com.netsdk.lib.structure.DEV_EVENT_SHOP_WINDOW_POST_INFO}
+     */
+
+    EVENT_IVS_SHOP_WINDOW_POST(0x00000287, "橱窗张贴事件"),
+    /**
+     * (对应 DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO)
+     * {@link com.netsdk.lib.structure.DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO}
+     */
+    EVENT_IVS_SHOP_SIGN_ABNORMAL(0x00000288, "店招异常事件"),
+
+    EVENT_IVS_BREED_DETECTION(0x00000289, "智慧养殖检测事件"),      //  (对应 DEV_EVENT_BREED_DETECTION_INFO)
+
+    EVENT_IVS_AIRPORT_VEHICLE_DETECT(0x0000028A, "机场智能保障车辆检测事件"),        //  (对应 DEV_EVENT_AIRPORT_VEHICLE_DETECT_INFO)
+
+    EVENT_IVS_PIG_TEMPERATURE_DETECT(0x0000028B, "智慧养殖猪体温检测"),      //  (只用于规则配置)
+
+    EVENT_IVS_MAN_CAR_COEXISTANCE(0x0000028C, "人车共存事件"),      //  (对应 DEV_EVENT_MAN_CAR_COEXISTANCE_INFO)
+
+    EVENT_IVS_HIGH_TOSS_DETECT(0x0000028D, "高空抛物检测"),      // (对应DEV_EVENT_HIGH_TOSS_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_GLOVE_DETECT(0x0000028E, "电力检测手套检测事件"),      // (对应DEV_EVENT_ELECTRIC_GLOVE_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_LADDER_DETECT(0x0000028F, "电力检测梯子检测事件"),      // (对应DEV_EVENT_ELECTRIC_LADDER_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_CURTAIN_DETECT(0x00000290, "电力检测布幔检测事件"),      // (对应DEV_EVENT_ELECTRIC_CURTAIN_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_FENCE_DETECT(0x00000291, "电力检测围栏检测事件"),      // (对应DEV_EVENT_ELECTRIC_FENCE_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(0x00000292, "电力检测标识牌检测事件"),      // (对应DEV_EVENT_ELECTRIC_SIGNBOARD_DETECT_INFO)
+
+    EVENT_IVS_ELECTRIC_BELT_DETECT(0x00000293, "电力检测安全带检测事件"),      // (对应DEV_EVENT_ELECTRIC_BELT_DETECT_INFO)
+
+    EVENT_IVS_RADAR_LINE_DETECTION(0x00000294, "雷达警戒线/绊线检测"),      // (对应DEV_EVENT_RADAR_LINE_DETECTION_INFO)
+
+    EVENT_IVS_RADAR_REGION_DETECTION(0x00000295, "雷达警戒区检测事件"),      // (对应DEV_EVENT_RADAR_REGION_DETECTION_INFO)
+
+    EVENT_IVS_AUDIO_INTENSITY(0x00000296, "异常音事件"),        // (对应 DEV_EVENT_AUDIO_INTENSITY_INFO)
+
+    EVENT_IVS_PARKING_LOT_STATUS_DETECTION(0x00000297, "室外停车位状态检测"),      //  (对应 DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO)
+
+    EVENT_IVS_VEHICLE_COMPARE(0x00000298, ""),      // (只用于规则配置)
+
+    EVENT_IVS_DREGS_UNCOVERED(0x00000299, "渣土车未遮盖载货检测事件"),      // (对应 DEV_EVENT_DREGS_UNCOVERED_INFO)
+
+    EVENT_IVS_WALK_DETECTION(0x0000029A, "走动检测事件"),      // (对应 DEV_EVENT_WALK_DETECTION_INFO)
+
+    EVENT_IVS_BACK_TO_DETECTION(0x0000029B, "背对检测事件"),      // (对应 DEV_EVENT_BACK_TO_DETECTION_INFO)
+
+    EVENT_IVS_WRITE_ON_THE_BOARD_DETECTION(0x0000029C, "板书检测事件"),      // (对应 DEV_EVENT_WRITE_ON_THE_BOARD_DETECTION_INFO)
+
+    EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(0x0000029D, "智慧厨房穿着检测事件"),    // (对不戴口罩、厨师帽以及颜色不符合规定的厨师服进行报警)(对应 DEV_EVENT_SMART_KITCHEN_CLOTHES_DETECTION_INFO)
+
+    EVENT_IVS_SLEEP_DETECT(0x0000029E, "睡觉检测事件"),        // (对应 DEV_EVENT_SLEEP_DETECT_INFO)
+
+    EVENT_IVS_WALK_AROUND_DETECT(0x0000029F, "随意走动检测事件"),        // (对应 DEV_EVENT_WALK_AROUND_DETECT_INFO)
+
+    EVENT_IVS_PLAY_MOBILEPHONE(0x00000300, "玩手机事件"),        // (对应 DEV_EVENT_PLAY_MOBILEPHONE_INFO)
+
+    EVENT_IVS_FINANCE_CONTRABAND_DETECT(0x00000301, "智慧金融违规物品检测事件"),        // (对应 DEV_EVENT_FINANCE_CONTRABAND_DETECT_INFO)
+
+    EVENT_IVS_FINANCE_CASH_TRANSACTION(0x00000302, "智慧金融现金交易检测事件"),        // (对应 DEV_EVENT_FINANCE_CASH_TRANSACTION_INFO)
+
+    /**
+     * (对应 DEV_EVENT_ANATOMY_TEMP_DETECT_INFO)
+     */
+    EVENT_IVS_ANATOMY_TEMP_DETECT(0x00000303, "人体温智能检测事件"),
+
+    EVENT_IVS_ACTIVITY_ANALYSE(0x00000304, "活跃度统计规则"),      //  (只用于规则配置)
+
+    EVENT_IVS_DOOR_STATUS(0x00000305, "门状态事件"),      // (对应 DEV_EVENT_DOOR_STATUS_INFO)
+
+    EVENT_IVS_DHOP_CUSTOM(0x00000306, "Dhop自定义事件"),        // (start/stop, 对应 DEV_EVENT_DHOP_CUSTOM_INFO)
+
+    EVENT_IVS_DHOP_CUSTOM_ONCE(0x00000307, "Dhop自定义事件"),        // (Pulse, 对应 DEV_EVENT_DHOP_CUSTOM_INFO)
+
+    EVENT_IVS_FOG_DETECTION(0x00000308, "起雾检测事件"),        // (对应 DEV_EVENT_FOG_DETECTION)
+
+    EVENT_IVS_TRAFFIC_VEHICLE_BC(0x00000309, "飙车事件"),        // (对应 DEV_EVENT_TRAFFIC_VEHICLE_BC )
+
+    EVENT_IVS_TRAFFIC_MOTOR_OVERLOAD(0x0000030A, "机动车超载"),      // (对应 DEV_EVENT_TRAFFIC_MOTOR_OVERLOAD_INFO)
+
+    EVENT_IVS_TRAFFIC_PLATE_OCCLUSION(0x0000030B, "车牌污损"),      // (对应 DEV_EVENT_TRAFFIC_PLATE_OCCLUSION_INFO)
+
+    EVENT_IVS_NONMOTOR_ENTRYING(0x0000030C, "非机动车进入电梯"),      // (对应 DEV_EVENT_NONMOTOR_ENTRYING_INFO)
+
+    EVENT_IVS_WATER_STAGE_MONITOR(0x0000030D, "水位监测事件"),      // , 目前仅用于任务型智能分析 (对应 DEV_EVENT_WATER_STAGE_MONITOR_INFO)
+
+    EVENT_IVS_TRAFFIC_ROAD_ALERT(0x0000030E, "道路安全预警"),      // (对应 DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO)
+
+    EVENT_IVS_BREAK_RULE_BUILDING_DETECTION(0x0000030F, "违章建筑检测事件"),        // (对应 DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO)
+
+    EVENT_IVS_TRAFFIC_NONMOTOR_RUN_REDLIGHT(0x00000310, "非机动车闯红灯"),       //  (对应 DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO )
+    /**
+     * 占用应急车道事件
+     */
+    EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE(0x00000311, "占用应急车道事件"),//  (对应 DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO  )
+
+    EVENT_IVS_TRAFFIC_REAREND_ACCIDENT(0x00000322, "交通事故事件"),       //  (对应 DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO )
+    /**
+     * 特殊车辆检测
+     */
+    EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT(0x00000333, "特殊车辆检测"),//  (对应 DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO   )
+
+    EVENT_IVS_TRAFFIC_NONMOTOR(0x00000335, "交通非机动车事件检测"),       //  (对应 DEV_EVENT_TRAFFIC_NONMOTOR_INFO )
+
+    EVENT_IVS_TRAFFIC_VISIBILITY(0x00000337, "交通能见度事件检测"),       //  (对应 DEV_EVENT_TRAFFIC_VISIBILITY_INFO )
+    
+    EVENT_IVS_ANYTHING_DETECT(0x0000033F, "全物体类型检测事件"),  // 全物体类型检测事件 ( 对应 DEV_EVENT_ANYTHING_DETECT_INFO ) 
+    
+    EVENT_IVS_OBJECT_ABNORMAL(0x00000340, "目标异常事件"),  // 目标异常事件(对应 DEV_EVENT_OBJECT_ABNORMAL_INFO )
+	
+	EVENT_IVS_STREET_SUNCURE(0x00000347,"沿街晾晒事件"),  //对应DEV_EVENT_STREET_SUNCURE_INFO
+	
+	EVENT_IVS_OUTDOOR_ADVERTISEMENT(0x00000348,"户外广告事件"),  //对应DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO
+	
+	EVENT_IVS_HUDDLE_MATERIAL(0x00000349,"乱堆物料检测事件"),  //对应DEV_EVENT_HUDDLE_MATERIAL_INFO
+	
+	EVENT_IVS_FOLLOW_CAR_ALARM(0x0000034F,"跟车报警事件"),  //对应DEV_EVENT_FOLLOW_CAR_ALARM_INFO
+	
+	EVENT_IVS_FIRE_LANE_DETECTION(0x00000324,"消防占道检测事件"),  //对应DEV_EVENT_FIRE_LANE_DETECTION_INFO)
+	
+	EVENT_IVS_TRAFFIC_NON_MOTOR_RETROGRADE(0x00000328,"非机动车逆行事件"),  //(对应 DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO)
+
+    EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS(0x00000338, "交通车辆清洁度检测事件检测"), //(对应 DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO)
+
+    EVENT_IVS_FIRE_LINE_DETECTION(0x0000034A,"进入消防通道检测事件"), //进入消防通道检测 (对应 DEV_EVENT_FIRE_LINE_DETECTION_INFO)
+
+	EVENT_IVS_TRAFFIC_PARKING_STATISTICS(0x0000035B,"车位统计事件"),  //(对应 DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO)
+	
+	EVENT_IVS_HEAT_IMAGING_TEMPER(0x0000035C,"热成像测温点温度异常报警事件"),  //(对应 DEV_EVENT_HEAT_IMAGING_TEMPER_INFO)
+
+    EVENT_IVS_OBJECT_PLACEMENT_DETECTION(0x00000369,"物品放置检测事件"),  // 对应DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO
+
+    EVENT_IVS_OBJECT_REMOVAL_DETECTION(0x0000036A,"物品拿取检测事件"),  // 对应DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO
+
+	EVENT_IVS_FIRE_EXTINGUISHER_DETECTION(0x0000036C,"灭火器检测事件"),  // 对应DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO
+
+    EVENT_IVS_TRASH_WITHOUT_COVER_DETECTION(0x00000373,"垃圾桶未盖盖子检测事件"),  // 对应DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO
+
+    EVENT_IVS_XRAY_UNPACKING_CHECK(0x00000384,"X光开包检查事件"),      // 对应DEV_EVENT_XRAY_UPACKING_CHECK_INFO
+
+    EVENT_IVS_GENEAL_ATTITUDE(0x0000038C, "通用姿态行为事件"),         // 对应 DEV_EVENT_GENEAL_ATTITUDE_INFO
+
+    EVENT_IVS_CROWD_LEVEL_DETECTION(0x00000395,"拥挤程度检测事件"),      // 对应DEV_EVENT_CROWD_LEVEL_DETECTION_INFO
+	
+	EVENT_IVS_RIDING_MOTOR_CYCLE(0x00000401,"摩托车骑跨检测事件"),      // 对应DEV_EVENT_RIDING_MOTOR_CYCLE_INFO
+	
+	EVENT_IVS_HUMAN_ANIMAL_COEXISTENCE(0x00000411,"人和动物检测事件"),      // 对应 DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO
+
+    EVENT_IVS_DROP_DETECTION(0x00000429,"滴漏检测事件"),     // 对应 NET_DEV_EVENT_DROP_DETECTION_INFO
+
+    EVENT_IVS_TEMPERATURE_ALARM(0x0000042A,"温度报警事件"),     // 对应 NET_DEV_EVENT_TEMPERATURE_ALARM_INFO
+
+    EVENT_IVS_HUMIDITY_ALARM(0x0000042B,"湿度报警事件"),				// 对应 NET_DEV_EVENT_HUMIDITY_ALARM_INFO
+
+    EVENT_IVS_ILLEGAL_CARRIAGE( 0x0000042F,"非法运输事件"),      // (对应 NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO)
+	
+	EVENT_IVS_GARBAGE_PLASTICBAG( 0x00000459," 打包垃圾检测事件"), // (对应 NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO)
+
+    EVENT_IVS_OBJECT_APPEAR_DETECTION( 0x0000045F," 目标出现事件"), // (对应 NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO)
+
+    EVENT_IVS_OBJECT_DISAPPEAR_DETECTION( 0x00000460," 目标消失事件"), // (对应 NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO)
+
+    EVENT_IVS_OBJECT_STATE_DETECTION( 0x00000461," 目标状态事件"), // (对应 NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO)
+
+    EVENT_IVS_ACTION_COUNT( 0x0000046E," 行为自定义行为计数事件"), // (对应 NET_DEV_EVENT_ACTION_COUNT_INFO)
+
+    EVENT_IVS_WADING_DETECTION( 0x0000046F,"涉水安全检测、水域监测报警"); // (对应 NET_DEV_EVENT_WADING_DETECTION_INFO)
+
+    private int type;
+    private String description;
+
+    private EM_EVENT_IVS_TYPE(int type, String description) {
+        this.type = type;
+        this.description = description;
+    }
+
+    public static EM_EVENT_IVS_TYPE getEventType(int type) {
+        for (EM_EVENT_IVS_TYPE event : EM_EVENT_IVS_TYPE.values()) {
+            if (type == event.getType()) {
+                return event;
+            }
+        }
+        return null;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_LEVEL.java
new file mode 100644
index 0000000..bd1f309
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_LEVEL.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 事件级别枚举
+ *
+ * @author 47040
+ * @since Created in 2021/5/13 19:49
+ */
+public enum EM_EVENT_LEVEL {
+
+    /**
+     * 未知
+     */
+    EM_EVENT_LEVEL_UNKNOWN(-1, "未知"),
+    /**
+     * 提示
+     */
+    EM_EVENT_LEVEL_HINT(0, "提示"),
+    /**
+     * 普通
+     */
+    EM_EVENT_LEVEL_GENERAL(1, "普通"),
+    /**
+     * 警告
+     */
+    EM_EVENT_LEVEL_WARNING(2, "警告");
+
+    private final int value;
+    private final String note;
+
+    EM_EVENT_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_EVENT_LEVEL enumType : EM_EVENT_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_EVENT_LEVEL enumType : EM_EVENT_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_EVENT_LEVEL getEnum(int value) {
+        for (EM_EVENT_LEVEL e : EM_EVENT_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_EVENT_LEVEL.EM_EVENT_LEVEL_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_ORDER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_ORDER.java
new file mode 100644
index 0000000..5d139ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_ORDER.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 设备给客户端传离线图片需要按照的顺序
+ * @date 2022/11/24 20:18:58
+ */
+public enum EM_EVENT_ORDER {
+	/**
+	 * 未知
+	 */
+	EM_EVENT_ORDER_UNKNOWN(0, "未知"),
+	/**
+	 * 正序上传
+	 */
+	EM_EVENT_ORDER_ASCENT(1, "正序上传"),
+	/**
+	 * 倒序上传
+	 */
+	EM_EVENT_ORDER_DESCENT(2, "倒序上传");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_EVENT_ORDER(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_EVENT_ORDER enumType : EM_EVENT_ORDER.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_EVENT_ORDER enumType : EM_EVENT_ORDER.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE.java
new file mode 100644
index 0000000..6ed73dd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE.java
@@ -0,0 +1,1521 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_NONMOTOR_INFO;
+import com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO;
+import com.netsdk.lib.structure.DEV_EVENT_TRAFFIC_VISIBILITY_INFO;
+
+/**
+ * className:EM_EVENT_TYPE
+ * description:
+ * author:251589
+ * createTime:2021/1/25 17:24
+ *
+ * @version v1.0
+ */
+public enum EM_EVENT_TYPE {
+    /**
+     * 订阅所有事件
+     */
+    EVENT_IVS_ALL(0x00000001, "订阅所有事件"),
+    /**
+     * 拌线入侵事件
+     */
+    EVENT_IVS_CROSSLINEDETECTION(0x00000002, "拌线入侵事件"),
+    /**
+     * 区域入侵事件
+     */
+    EVENT_IVS_CROSSREGIONDETECTION(0x00000003, "区域入侵事件"),
+    /**
+     * 贴条事件
+     */
+    EVENT_IVS_PASTEDETECTION(0x00000004, "贴条事件"),
+    /**
+     * 物品遗留事件
+     */
+    EVENT_IVS_LEFTDETECTION(0x00000005, "物品遗留事件"),
+    /**
+     * 停留事件
+     */
+    EVENT_IVS_STAYDETECTION(0x00000006, "停留事件"),
+    /**
+     * 徘徊事件
+     */
+    EVENT_IVS_WANDERDETECTION(0x00000007, "徘徊事件"),
+    /**
+     * 物品保全事件
+     */
+    EVENT_IVS_PRESERVATION(0x00000008, "物品保全事件"),
+    /**
+     * 移动事件
+     */
+    EVENT_IVS_MOVEDETECTION(0x00000009, "移动事件"),
+    /**
+     * 尾随事件
+     */
+    EVENT_IVS_TAILDETECTION(0x0000000A, "尾随事件"),
+    /**
+     * 聚众事件
+     */
+    EVENT_IVS_RIOTERDETECTION(0x0000000B, "聚众事件"),
+    /**
+     * 火警事件
+     */
+    EVENT_IVS_FIREDETECTION(0x0000000C, "火警事件"),
+    /**
+     * 烟雾报警事件
+     */
+    EVENT_IVS_SMOKEDETECTION(0x0000000D, "烟雾报警事件"),
+    /**
+     * 斗殴事件
+     */
+    EVENT_IVS_FIGHTDETECTION(0x0000000E, "斗殴事件"),
+    /**
+     * 流量统计事件
+     */
+    EVENT_IVS_FLOWSTAT(0x0000000F, "流量统计事件"),
+    /**
+     * 数量统计事件
+     */
+    EVENT_IVS_NUMBERSTAT(0x00000010, "数量统计事件"),
+    /**
+     * 摄像头覆盖事件
+     */
+    EVENT_IVS_CAMERACOVERDDETECTION(0x00000011, "摄像头覆盖事件"),
+    /**
+     * 摄像头移动事件
+     */
+    EVENT_IVS_CAMERAMOVEDDETECTION(0x00000012, "摄像头移动事件"),
+    /**
+     * 视频异常事件
+     */
+    EVENT_IVS_VIDEOABNORMALDETECTION(0x00000013, "视频异常事件"),
+    /**
+     * 视频损坏事件
+     */
+    EVENT_IVS_VIDEOBADDETECTION(0x00000014, "视频损坏事件"),
+    /**
+     * 交通管理事件
+     */
+    EVENT_IVS_TRAFFICCONTROL(0x00000015, "交通管理事件"),
+    /**
+     * 交通事故事件
+     */
+    EVENT_IVS_TRAFFICACCIDENT(0x00000016, "交通事故事件"),
+    /**
+     * 交通路口事件----老规则
+     */
+    EVENT_IVS_TRAFFICJUNCTION(0x00000017, "交通路口事件----老规则"),
+    /**
+     * 交通卡口事件----老规则
+     */
+    EVENT_IVS_TRAFFICGATE(0x00000018, "交通卡口事件----老规则"),
+    /**
+     * 交通抓拍事件
+     */
+    EVENT_TRAFFICSNAPSHOT(0x00000019, "交通抓拍事件"),
+    /**
+     * 目标检测事件
+     */
+    EVENT_IVS_FACEDETECT(0x0000001A, "目标检测事件"),
+    /**
+     * 交通拥堵事件,{@link NetSDKLib.DEV_EVENT_TRAFFICJAM_INFO}
+     */
+    EVENT_IVS_TRAFFICJAM(0x0000001B, "交通拥堵事件"),
+    /**
+     * 非机动车占机动车车道事件
+     */
+    EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE(0x0000001C, "非机动车占机动车车道事件"),
+    /**
+     * 交通违章-闯红灯事件
+     */
+    EVENT_IVS_TRAFFIC_RUNREDLIGHT(0x00000100, "交通违章-闯红灯事件"),
+    /**
+     * 交通违章-压车道线事件
+     */
+    EVENT_IVS_TRAFFIC_OVERLINE(0x00000101, "交通违章-压车道线事件"),
+    /**
+     * 交通违章-逆行事件
+     */
+    EVENT_IVS_TRAFFIC_RETROGRADE(0x00000102, "交通违章-逆行事件"),
+    /**
+     * 交通违章-违章左转
+     */
+    EVENT_IVS_TRAFFIC_TURNLEFT(0x00000103, "交通违章-违章左转"),
+    /**
+     * 交通违章-违章右转
+     */
+    EVENT_IVS_TRAFFIC_TURNRIGHT(0x00000104, "交通违章-违章右转"),
+    /**
+     * 交通违章-违章掉头
+     */
+    EVENT_IVS_TRAFFIC_UTURN(0x00000105, "交通违章-违章掉头"),
+    /**
+     * 交通违章-超速
+     */
+    EVENT_IVS_TRAFFIC_OVERSPEED(0x00000106, "交通违章-超速"),
+    /**
+     * 交通违章-低速
+     */
+    EVENT_IVS_TRAFFIC_UNDERSPEED(0x00000107, "交通违章-低速"),
+    /**
+     * 交通违章-违章停车
+     */
+    EVENT_IVS_TRAFFIC_PARKING(0x00000108, "交通违章-违章停车"),
+    /**
+     * 交通违章-不按车道行驶
+     */
+    EVENT_IVS_TRAFFIC_WRONGROUTE(0x00000109, "交通违章-不按车道行驶"),
+    /**
+     * 交通违章-违章变道
+     */
+    EVENT_IVS_TRAFFIC_CROSSLANE(0x0000010A, "交通违章-违章变道"),
+    /**
+     * 交通违章-压黄线
+     */
+    EVENT_IVS_TRAFFIC_OVERYELLOWLINE(0x0000010B, "交通违章-压黄线"),
+    /**
+     * 交通违章-路肩行驶事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVINGONSHOULDER(0x0000010C, "交通违章-路肩行驶事件"),
+    /**
+     * 交通违章-黄牌车占道事件
+     */
+    EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE(0x0000010E, "交通违章-黄牌车占道事件"),
+    /**
+     * 交通违章-礼让行人/斑马线行人优先事件
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY(0x0000010F, "交通违章-礼让行人/斑马线行人优先事件"),
+    /**
+     * 电火花事件
+     */
+    EVENT_IVS_ELECTROSPARKDETECTION(0x00000110, "电火花事件"),
+    /**
+     * 交通违章-禁止通行事件
+     */
+    EVENT_IVS_TRAFFIC_NOPASSING(0x00000111, "交通违章-禁止通行事件"),
+    /**
+     * 异常奔跑事件
+     */
+    EVENT_IVS_ABNORMALRUNDETECTION(0x00000112, "异常奔跑事件"),
+    /**
+     * 人员逆行事件
+     */
+    EVENT_IVS_RETROGRADEDETECTION(0x00000113, "人员逆行事件"),
+    /**
+     * 区域内检测事件
+     */
+    EVENT_IVS_INREGIONDETECTION(0x00000114, "区域内检测事件"),
+    /**
+     * 物品搬移事件
+     */
+    EVENT_IVS_TAKENAWAYDETECTION(0x00000115, "物品搬移事件"),
+    /**
+     * 非法停车事件
+     */
+    EVENT_IVS_PARKINGDETECTION(0x00000116, "非法停车事件"),
+    /**
+     * 目标识别事件
+     */
+    EVENT_IVS_FACERECOGNITION(0x00000117, "目标识别事件"),
+    /**
+     * 交通手动抓拍事件
+     */
+    EVENT_IVS_TRAFFIC_MANUALSNAP(0x00000118, "交通手动抓拍事件"),
+    /**
+     * 交通流量统计事件
+     */
+    EVENT_IVS_TRAFFIC_FLOWSTATE(0x00000119, "交通流量统计事件"),
+    /**
+     * 交通滞留事件
+     */
+    EVENT_IVS_TRAFFIC_STAY(0x0000011A, "交通滞留事件"),
+    /**
+     * 有车占道事件
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINROUTE(0x0000011B, "有车占道事件"),
+    /**
+     * 视频移动侦测事件
+     */
+    EVENT_ALARM_MOTIONDETECT(0x0000011C, "视频移动侦测事件"),
+    /**
+     * 外部报警事件
+     */
+    EVENT_ALARM_LOCALALARM(0x0000011D, "外部报警事件"),
+    /**
+     * 囚犯起身事件
+     */
+    EVENT_IVS_PSRISEDETECTION(0x0000011E, "囚犯起身事件"),
+    /**
+     * 翻越围栏事件
+     */
+    EVENT_IVS_CROSSFENCEDETECTION(0x0000011F, "翻越围栏事件"),
+    /**
+     * 交通违章-卡口事件----新规则
+     */
+    EVENT_IVS_TRAFFIC_TOLLGATE(0x00000120, "交通违章-卡口事件----新规则"),
+    /**
+     * 人员密集度检测
+     */
+    EVENT_IVS_DENSITYDETECTION(0x00000121, "人员密集度检测"),
+    /**
+     * 视频诊断结果事件
+     */
+    EVENT_IVS_VIDEODIAGNOSIS(0x00000122, "视频诊断结果事件"),
+    /**
+     * 排队检测报警事件
+     */
+    EVENT_IVS_QUEUEDETECTION(0x00000123, "排队检测报警事件"),
+    /**
+     * 占用公交车道事件
+     */
+    EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(0x00000124, "占用公交车道事件"),
+    /**
+     * 违章倒车事件
+     */
+    EVENT_IVS_TRAFFIC_BACKING(0x00000125, "违章倒车事件"),
+    /**
+     * 声音异常检测
+     */
+    EVENT_IVS_AUDIO_ABNORMALDETECTION(0x00000126, "声音异常检测"),
+    /**
+     * 交通违章-闯黄灯事件
+     */
+    EVENT_IVS_TRAFFIC_RUNYELLOWLIGHT(0x00000127, "交通违章-闯黄灯事件"),
+    /**
+     * 攀高检测事件
+     */
+    EVENT_IVS_CLIMBDETECTION(0x00000128, "攀高检测事件"),
+    /**
+     * 离岗检测事件
+     */
+    EVENT_IVS_LEAVEDETECTION(0x00000129, "离岗检测事件"),
+    /**
+     * 黄网格线抓拍事件
+     */
+    EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(0x0000012A, "黄网格线抓拍事件"),
+    /**
+     * 车位有车事件
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(0x0000012B, "车位有车事件"),
+    /**
+     * 车位无车事件
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(0x0000012C, "车位无车事件"),
+    /**
+     * 交通行人事件
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAIN(0x0000012D, "交通行人事件"),
+    /**
+     * 交通抛洒物品事件
+     */
+    EVENT_IVS_TRAFFIC_THROW(0x0000012E, "交通抛洒物品事件"),
+    /**
+     * 交通空闲事件
+     */
+    EVENT_IVS_TRAFFIC_IDLE(0x0000012F, "交通空闲事件"),
+    /**
+     * 车载ACC断电报警事件
+     */
+    EVENT_ALARM_VEHICLEACC(0x00000130, "车载ACC断电报警事件"),
+    /**
+     * 车辆侧翻报警事件
+     */
+    EVENT_ALARM_VEHICLE_TURNOVER(0x00000131, "车辆侧翻报警事件"),
+    /**
+     * 车辆撞车报警事件
+     */
+    EVENT_ALARM_VEHICLE_COLLISION(0x00000132, "车辆撞车报警事件"),
+    /**
+     * 车载摄像头大角度扭转事件
+     */
+    EVENT_ALARM_VEHICLE_LARGE_ANGLE(0x00000133, "车载摄像头大角度扭转事件"),
+    /**
+     * 车位压线事件
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE(0x00000134, "车位压线事件"),
+    /**
+     * 多场景切换事件
+     */
+    EVENT_IVS_MULTISCENESWITCH(0x00000135, "多场景切换事件"),
+    /**
+     * 受限车牌事件
+     */
+    EVENT_IVS_TRAFFIC_RESTRICTED_PLATE(0x00000136, "受限车牌事件"),
+    /**
+     * 压停止线事件
+     */
+    EVENT_IVS_TRAFFIC_OVERSTOPLINE(0x00000137, "压停止线事件"),
+    /**
+     * 交通未系安全带事件
+     */
+    EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(0x00000138, "交通未系安全带事件"),
+    /**
+     * 驾驶员抽烟事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_SMOKING(0x00000139, "驾驶员抽烟事件"),
+    /**
+     * 驾驶员打电话事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_CALLING(0x0000013A, "驾驶员打电话事件"),
+    /**
+     * 行人闯红灯事件
+     */
+    EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT(0x0000013B, "行人闯红灯事件"),
+    /**
+     * 未按规定依次通行
+     */
+    EVENT_IVS_TRAFFIC_PASSNOTINORDER(0x0000013C, "未按规定依次通行"),
+    /**
+     * 物体特征检测事件
+     */
+    EVENT_IVS_OBJECT_DETECTION(0x00000141, "物体特征检测事件"),
+    /**
+     * 模拟量报警通道的报警事件
+     */
+    EVENT_ALARM_ANALOGALARM(0x00000150, "模拟量报警通道的报警事件"),
+    /**
+     * 警戒线扩展事件
+     */
+    EVENT_IVS_CROSSLINEDETECTION_EX(0x00000151, "警戒线扩展事件"),
+    /**
+     * 普通录像
+     */
+    EVENT_ALARM_COMMON(0x00000152, "普通录像"),
+    /**
+     * 视频遮挡事件
+     */
+    EVENT_ALARM_VIDEOBLIND(0x00000153, "视频遮挡事件"),
+    /**
+     * 视频丢失事件
+     */
+    EVENT_ALARM_VIDEOLOSS(0x00000154, "视频丢失事件"),
+    /**
+     * 下床事件
+     */
+    EVENT_IVS_GETOUTBEDDETECTION(0x00000155, "下床事件"),
+    /**
+     * 巡逻检测事件
+     */
+    EVENT_IVS_PATROLDETECTION(0x00000156, "巡逻检测事件"),
+    /**
+     * 站岗检测事件
+     */
+    EVENT_IVS_ONDUTYDETECTION(0x00000157, "站岗检测事件"),
+    /**
+     * 门口机呼叫未响应事件
+     */
+    EVENT_IVS_NOANSWERCALL(0x00000158, "门口机呼叫未响应事件"),
+    /**
+     * 存储组不存在事件
+     */
+    EVENT_IVS_STORAGENOTEXIST(0x00000159, "存储组不存在事件"),
+    /**
+     * 硬盘空间低报警事件
+     */
+    EVENT_IVS_STORAGELOWSPACE(0x0000015A, "硬盘空间低报警事件"),
+    /**
+     * 存储错误事件
+     */
+    EVENT_IVS_STORAGEFAILURE(0x0000015B, "存储错误事件"),
+    /**
+     * 报警传输事件
+     */
+    EVENT_IVS_PROFILEALARMTRANSMIT(0x0000015C, "报警传输事件"),
+    /**
+     * 视频静态检测事件
+     */
+    EVENT_IVS_VIDEOSTATIC(0x0000015D, "视频静态检测事件"),
+    /**
+     * 视频定时检测事件
+     */
+    EVENT_IVS_VIDEOTIMING(0x0000015E, "视频定时检测事件"),
+    /**
+     * 热度图
+     */
+    EVENT_IVS_HEATMAP(0x0000015F, "热度图"),
+    /**
+     * 证件信息读取事件
+     */
+    EVENT_IVS_CITIZENIDCARD(0x00000160, "证件信息读取事件"),
+    /**
+     * 图片信息事件
+     */
+    EVENT_IVS_PICINFO(0x00000161, "图片信息事件"),
+    /**
+     * 上网登记事件
+     */
+    EVENT_IVS_NETPLAYCHECK(0x00000162, "上网登记事件"),
+    /**
+     * 车辆拥堵禁入事件
+     */
+    EVENT_IVS_TRAFFIC_JAM_FORBID_INTO(0x00000163, "车辆拥堵禁入事件"),
+    /**
+     * 定时抓图事件
+     */
+    EVENT_IVS_SNAPBYTIME(0x00000164, "定时抓图事件"),
+    /**
+     * 云台转动到预置点事件
+     */
+    EVENT_IVS_PTZ_PRESET(0x00000165, "云台转动到预置点事件"),
+    /**
+     * 红外线检测信息事件
+     */
+    EVENT_IVS_RFID_INFO(0x00000166, "红外线检测信息事件"),
+    /**
+     * 人起立检测事件
+     */
+    EVENT_IVS_STANDUPDETECTION(0x00000167, "人起立检测事件"),
+    /**
+     * 交通卡口称重事件
+     */
+    EVENT_IVS_QSYTRAFFICCARWEIGHT(0x00000168, "交通卡口称重事件"),
+    /**
+     * 卡口前后车牌合成事件
+     */
+    EVENT_IVS_TRAFFIC_COMPAREPLATE(0x00000169, "卡口前后车牌合成事件"),
+    /**
+     * 打靶像机事件
+     */
+    EVENT_IVS_SHOOTINGSCORERECOGNITION(0x0000016A, "打靶像机事件"),
+    /**
+     * 加油站提枪、挂枪事件
+     */
+    EVENT_IVS_TRAFFIC_FCC(0x0000016B, "加油站提枪、挂枪事件"),
+    /**
+     * 违章超限抓图上报事件,绍兴科技治超
+     */
+    EVENT_IVS_TRAFFIC_TRANSFINITE(0x0000016C, "违章超限抓图上报事件,绍兴科技治超"),
+    /**
+     * 场景变更事件
+     */
+    EVENT_IVS_SCENE_CHANGE(0x0000016D, "场景变更事件"),
+    /**
+     * 简单跟踪事件
+     */
+    EVENT_IVS_LETRACK(0x0000016E, "简单跟踪事件"),
+    /**
+     * 物体检测事件
+     */
+    EVENT_IVS_OBJECT_ACTION(0x0000016F, "物体检测事件"),
+    /**
+     * 预分析抓拍图片事件
+     */
+    EVENT_IVS_TRAFFIC_ANALYSE_PRESNAP(0x00000170, "预分析抓拍图片事件"),
+    /**
+     * 智能插座电量状态上报
+     */
+    EVENT_ALARM_EQSTATE(0x00000171, "智能插座电量状态上报"),
+    /**
+     * DVR/NVR设备上的IPC报警
+     */
+    EVENT_IVS_ALARM_IPC(0x00000172, "DVR/NVR设备上的IPC报警"),
+    /**
+     * POS录像查询事件
+     */
+    EVENT_IVS_POS_RECORD(0x00000173, "POS录像查询事件"),
+    /**
+     * 近距离接触事件
+     */
+    EVENT_IVS_NEAR_DISTANCE_DETECTION(0x00000174, "近距离接触事件"),
+    /**
+     * 行人特征检测事件
+     */
+    EVENT_IVS_OBJECTSTRUCTLIZE_PERSON(0x00000175, "行人特征检测事件"),
+    /**
+     * 非机动车特征检测事件
+     */
+    EVENT_IVS_OBJECTSTRUCTLIZE_NONMOTOR(0x00000176, "非机动车特征检测事件"),
+    /**
+     * 倒地报警事件
+     */
+    EVENT_IVS_TUMBLE_DETECTION(0x00000177, "倒地报警事件"),
+    /**
+     * 所有以traffic开头的事件,目前指的是
+     */
+    EVENT_IVS_TRAFFIC_ALL(0x000001FF, "所有以traffic开头的事件,目前指的是"),
+    /**
+     * EVENT_TRAFFICSNAPSHOT
+     */
+    //(EVENT_IVS_TRAFFICCONTROL, "EVENT_TRAFFICSNAPSHOT"),
+    /**
+     * EVENT_IVS_TRAFFIC_UNDERSPEED
+     */
+    //(EVENT_IVS_TRAFFIC_RUNREDLIGHT, "EVENT_IVS_TRAFFIC_UNDERSPEED"),
+    /**
+     * 所有智能分析事件
+     */
+    EVENT_IVS_VIDEOANALYSE(0x00000200, "所有智能分析事件"),
+    /**
+     * LinkSD事件
+     */
+    EVENT_IVS_LINKSD(0x00000201, "LinkSD事件"),
+    /**
+     * 车辆特征检测分析
+     */
+    EVENT_IVS_VEHICLEANALYSE(0x00000202, "车辆特征检测分析"),
+    /**
+     * 流量使用情况事件
+     */
+    EVENT_IVS_FLOWRATE(0x00000203, "流量使用情况事件"),
+    /**
+     * 门禁事件
+     */
+    EVENT_IVS_ACCESS_CTL(0x00000204, "门禁事件"),
+    /**
+     * SnapManual事件
+     */
+    EVENT_IVS_SNAPMANUAL(0x00000205, "SnapManual事件"),
+    /**
+     * RFID电子车牌标签事件
+     */
+    EVENT_IVS_TRAFFIC_ELETAGINFO(0x00000206, "RFID电子车牌标签事件"),
+    /**
+     * 生理疲劳驾驶事件
+     */
+    EVENT_IVS_TRAFFIC_TIREDPHYSIOLOGICAL(0x00000207, "生理疲劳驾驶事件"),
+    /**
+     * 车辆急转报警事件
+     */
+    EVENT_IVS_TRAFFIC_BUSSHARPTURN(0x00000208, "车辆急转报警事件"),
+    /**
+     * 人证比对事件
+     */
+    EVENT_IVS_CITIZEN_PICTURE_COMPARE(0x00000209, "人证比对事件"),
+    /**
+     * 开车低头报警事件
+     */
+    EVENT_IVS_TRAFFIC_TIREDLOWERHEAD(0x0000020A, "开车低头报警事件"),
+    /**
+     * 开车左顾右盼报警事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVERLOOKAROUND(0x0000020B, "开车左顾右盼报警事件"),
+    /**
+     * 开车离岗报警事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVERLEAVEPOST(0x0000020C, "开车离岗报警事件"),
+    /**
+     * 立体视觉站立事件
+     */
+    EVENT_IVS_MAN_STAND_DETECTION(0x0000020D, "立体视觉站立事件"),
+    /**
+     * 立体视觉区域内人数统计事件
+     */
+    EVENT_IVS_MAN_NUM_DETECTION(0x0000020E, "立体视觉区域内人数统计事件"),
+    /**
+     * 客流量统计事件
+     */
+    EVENT_IVS_STEREO_NUMBERSTAT(0x0000020F, "客流量统计事件"),
+    /**
+     * 开车打哈欠事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVERYAWN(0x00000210, "开车打哈欠事件"),
+    /**
+     * 客流量统计计划
+     */
+    EVENT_IVS_NUMBERSTAT_PLAN(0x00000211, "客流量统计计划"),
+    /**
+     * 热度图计划
+     */
+    EVENT_IVS_HEATMAP_PLAN(0x00000212, "热度图计划"),
+    /**
+     * 呼叫无答应事件
+     */
+    EVENT_IVS_CALLNOANSWERED(0x00000213, "呼叫无答应事件"),
+    /**
+     * 无视邀请事件
+     */
+    EVENT_IVS_IGNOREINVITE(0x00000214, "无视邀请事件"),
+    /**
+     * 人体特征事件
+     */
+    EVENT_IVS_HUMANTRAIT(0x00000215, "人体特征事件"),
+    /**
+     * 乐橙人头检测事件
+     */
+    EVENT_ALARM_LE_HEADDETECTION(0x00000216, "乐橙人头检测事件"),
+    /**
+     * 人脸分析事件
+     */
+    EVENT_IVS_FACEANALYSIS(0x00000217, "人脸分析事件"),
+    /**
+     * 左转不礼让直行事件
+     */
+    EVENT_IVS_TRAFFIC_TURNLEFTAFTERSTRAIGHT(0x00000218, "左转不礼让直行事件"),
+    /**
+     * 大弯小转事件
+     */
+    EVENT_IVS_TRAFFIC_BIGBENDSMALLTURN(0x00000219, "大弯小转事件"),
+    /**
+     * 道路施工监测事件
+     */
+    EVENT_IVS_ROAD_CONSTRUCTION(0x0000021A, "道路施工监测事件"),
+    /**
+     * 路障检测事件
+     */
+    EVENT_IVS_ROAD_BLOCK(0x0000021B, "路障检测事件"),
+    /**
+     * 车辆加塞事件
+     */
+    EVENT_IVS_TRAFFIC_QUEUEJUMP(0x0000021C, "车辆加塞事件"),
+    /**
+     * 嫌疑车辆事件
+     */
+    EVENT_IVS_VEHICLE_SUSPICIOUSCAR(0x0000021D, "嫌疑车辆事件"),
+    /**
+     * 右转不礼让直行事件
+     */
+    EVENT_IVS_TRAFFIC_TURNRIGHTAFTERSTRAIGHT(0x0000021E, "右转不礼让直行事件"),
+    /**
+     * 右转不礼让直行行人
+     */
+    EVENT_IVS_TRAFFIC_TURNRIGHTAFTERPEOPLE(0x0000021F, "右转不礼让直行行人"),
+    /**
+     * 安装读卡器事件
+     */
+    EVENT_IVS_INSTALL_CARDREADER(0x00000220, "安装读卡器事件"),
+    /**
+     * Yale
+     */
+    EVENT_ALARM_YALE_DROPBOX_BADTOKEN(0x00000221, "Yale"),
+    /**
+     * 车载设备断电前抓拍上传事件
+     */
+    EVENT_IVS_ACC_OFF_SNAP(0x00000222, "车载设备断电前抓拍上传事件"),
+    /**
+     * X光检测事件
+     */
+    EVENI_IVS_XRAY_DETECTION(0x00000223, "X光检测事件"),
+    /**
+     * 未清车告警
+     */
+    EVENT_IVS_NOTCLEARCAR(0x00000224, "未清车告警"),
+    /**
+     * sos求救报警
+     */
+    EVENT_IVS_SOSALEART(0x00000225, "sos求救报警"),
+    /**
+     * 超载抓图
+     */
+    EVENT_IVS_OVERLOAD(0x00000226, "超载抓图"),
+    /**
+     * 非工作时间告警
+     */
+    EVENT_IVS_NONWORKINGTIME(0x00000227, "非工作时间告警"),
+    /**
+     * 远光灯违章事件
+     */
+    EVENT_IVS_TRAFFIC_HIGH_BEAM(0x00000228, "远光灯违章事件"),
+    /**
+     * 禁止货车事件
+     */
+    EVENT_IVS_TRAFFIC_TRUCKFORBID(0x00000229, "禁止货车事件"),
+    /**
+     * 无卡驾驶报警事件
+     */
+    EVENT_IVS_DRIVINGWITHOUTCARD(0x0000022A, "无卡驾驶报警事件"),
+    /**
+     * 车辆超速报警事件
+     */
+    EVENT_IVS_HIGHSPEED(0x0000022B, "车辆超速报警事件"),
+    /**
+     * 人群密度检测事件
+     */
+    EVENT_IVS_CROWDDETECTION(0x0000022C, "人群密度检测事件"),
+    /**
+     * 车间距过小报警事件
+     */
+    EVENT_IVS_TRAFFIC_CARDISTANCESHORT(0x0000022D, "车间距过小报警事件"),
+    /**
+     * 行人卡口事件
+     */
+    EVENT_IVS_PEDESTRIAN_JUNCTION(0x00000230, "行人卡口事件"),
+    /**
+     * 车牌对比事件
+     */
+    EVENT_IVS_VEHICLE_RECOGNITION(0x00000231, "车牌对比事件"),
+    /**
+     * 预置点图片变化事件
+     */
+    EVENT_IVS_PASS_CHANGE(0x00000232, "预置点图片变化事件"),
+    /**
+     * 违停相机单球车位检测规则事件
+     */
+    EVENT_IVS_TRAFFIC_PARKING_SPACEDETECTION(0x00000233, "违停相机单球车位检测规则事件"),
+    /**
+     * 违章进入待行区事件
+     */
+    EVENT_IVS_TRAFFIC_WAITINGAREA(0x00000234, "违章进入待行区事件"),
+    /**
+     * 机动车违法禁令标识事件
+     */
+    EVENT_IVS_TRAFFIC_BAN(0x00000235, "机动车违法禁令标识事件"),
+    /**
+     * POS机交易事件
+     */
+    EVENT_IVS_POS_EXCHANGE(0x00000236, "POS机交易事件"),
+    /**
+     * 立体行为分析打架/剧烈运动检测规则
+     */
+    EVENT_IVS_STEREO_FIGHTDETECTION(0x00000237, "立体行为分析打架/剧烈运动检测规则"),
+    /**
+     * 立体行为分析间距异常/人员靠近检测
+     */
+    EVENT_IVS_STEREO_DISTANCE_DETECTION(0x00000238, "立体行为分析间距异常/人员靠近检测"),
+    /**
+     * 立体行为分析跌倒检测规则
+     */
+    EVENT_IVS_STEREO_STEREOFALLDETECTION(0x00000239, "立体行为分析跌倒检测规则"),
+    /**
+     * 立体行为分析人员滞留检测规则
+     */
+    EVENT_IVS_STEREO_STAYDETECTION(0x0000023A, "立体行为分析人员滞留检测规则"),
+    /**
+     * 拉横幅事件
+     */
+    EVENT_IVS_BANNER_DETECTION(0x0000023B, "拉横幅事件"),
+    /**
+     * 普通打架事件
+     */
+    EVENT_IVS_NORMAL_FIGHTDETECTION(0x0000023C, "普通打架事件"),
+    /**
+     * 电动扶梯运行异常事件
+     */
+    EVENT_IVS_ELEVATOR_ABNORMAL(0x0000023D, "电动扶梯运行异常事件"),
+    /**
+     * 非机动车检测
+     */
+    EVENT_IVS_NONMOTORDETECT(0x0000023E, "非机动车检测"),
+    /**
+     * 机动车检测
+     */
+    EVENT_IVS_VEHICLEDETECT(0x0000023F, "机动车检测"),
+    /**
+     * 交通违章-B类违章停车
+     */
+    EVENT_IVS_TRAFFIC_PARKING_B(0x00000240, "交通违章-B类违章停车"),
+    /**
+     * 交通违章-C类违章停车
+     */
+    EVENT_IVS_TRAFFIC_PARKING_C(0x00000241, "交通违章-C类违章停车"),
+    /**
+     * 交通违章-D类违章停车
+     */
+    EVENT_IVS_TRAFFIC_PARKING_D(0x00000242, "交通违章-D类违章停车"),
+    /**
+     * IVSS目标检测事件
+     */
+    EVENT_IVSS_FACEATTRIBUTE(0x00000243, "IVSS目标检测事件"),
+    /**
+     * IVSS目标识别事件
+     */
+    EVENT_IVSS_FACECOMPARE(0x00000244, "IVSS目标识别事件"),
+    /**
+     * 火警事件
+     */
+    EVENT_IVS_FIREWARNING(0x00000245, "火警事件"),
+    /**
+     * 商铺占道经营事件
+     */
+    EVENT_IVS_SHOPPRESENCE(0x00000246, "商铺占道经营事件"),
+    /**
+     * 垃圾违章倾倒事件
+     */
+    EVENT_IVS_WASTEDUMPED(0x00000247, "垃圾违章倾倒事件"),
+    /**
+     * 抛洒物检测事件
+     */
+    EVENT_IVS_SPILLEDMATERIAL_DETECTION(0x00000248, "抛洒物检测事件"),
+    /**
+     * 立体行为分析人数异常检测
+     */
+    EVENT_IVS_STEREO_MANNUM_DETECTION(0x00000249, "立体行为分析人数异常检测"),
+    /**
+     * 异常间距事件
+     */
+    EVENT_IVS_DISTANCE_DETECTION(0x0000024A, "异常间距事件"),
+    /**
+     * 非机动车超载事件
+     */
+    EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD(0x0000024B, "非机动车超载事件"),
+    /**
+     * 非机动车未戴安全帽事件
+     */
+    EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT(0x0000024C, "非机动车未戴安全帽事件"),
+    /**
+     * 拥堵滞留斑马线事件
+     */
+    EVENT_IVS_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING(0x0000024D, "拥堵滞留斑马线事件"),
+    /**
+     * 流动摊贩事件
+     */
+    EVENT_IVS_FLOWBUSINESS(0x0000024E, "流动摊贩事件"),
+    /**
+     * 城市机动车违停事件
+     */
+    EVENT_IVS_CITY_MOTORPARKING(0x0000024F, "城市机动车违停事件"),
+    /**
+     * 城市机非动车违停事件
+     */
+    EVENT_IVS_CITY_NONMOTORPARKING(0x00000250, "城市机非动车违停事件"),
+    /**
+     * 车道偏移预警
+     */
+    EVENT_IVS_LANEDEPARTURE_WARNNING(0X00000251, "车道偏移预警"),
+    /**
+     * 前向碰撞预警
+     */
+    EVENT_IVS_FORWARDCOLLISION_WARNNING(0x00000252, "前向碰撞预警"),
+    /**
+     * 物料堆放事件
+     */
+    EVENT_IVS_MATERIALSSTAY(0x00000253, "物料堆放事件"),
+    /**
+     * 非机动车装载伞具
+     */
+    EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA(0x00000254, "非机动车装载伞具"),
+    /**
+     * 客户报警产品
+     */
+    EVENT_IVS_JABLOTRON_ALARM(0x00000255, "客户报警产品"),
+    /**
+     * 视频虚焦事件
+     */
+    EVENT_IVS_VIDEOUNFOCUS_ALARM(0x00000256, "视频虚焦事件"),
+    /**
+     * 漂浮物检测事件
+     */
+    EVENT_IVS_FLOATINGOBJECT_DETECTION(0x00000257, "漂浮物检测事件"),
+    /**
+     * 船舶检测事件
+     */
+    EVENT_IVS_SHIP_DETECTION(0x00000258, "船舶检测事件"),
+    /**
+     * 飞机行为检测事件
+     */
+    EVENT_IVS_AIRPLANE_DETECTION(0x00000259, "飞机行为检测事件"),
+    /**
+     * 打电话检测事件
+     */
+    EVENT_IVS_PHONECALL_DETECT(0x0000025A, "打电话检测事件"),
+    /**
+     * 吸烟检测事件
+     */
+    EVENT_IVS_SMOKING_DETECT(0x0000025B, "吸烟检测事件"),
+    /**
+     * 雷达限速报警事件
+     */
+    EVENT_IVS_RADAR_SPEED_LIMIT_ALARM(0x0000025C, "雷达限速报警事件"),
+    /**
+     * 水位检测事件
+     */
+    EVENT_IVS_WATER_LEVEL_DETECTION(0x0000025D, "水位检测事件"),
+    /**
+     * 违规撑伞检测事件
+     */
+    EVENT_IVS_HOLD_UMBRELLA(0x0000025E, "违规撑伞检测事件"),
+    /**
+     * 垃圾暴露检测事件
+     */
+    EVENT_IVS_GARBAGE_EXPOSURE(0x0000025F, "垃圾暴露检测事件"),
+    /**
+     * 垃圾桶满溢检测事件
+     */
+    EVENT_IVS_DUSTBIN_OVER_FLOW(0x00000260, "垃圾桶满溢检测事件"),
+    /**
+     * 门前脏乱检测事件
+     */
+    EVENT_IVS_DOOR_FRONT_DIRTY(0x00000261, "门前脏乱检测事件"),
+    /**
+     * 排队滞留时间报警事件
+     */
+    EVENT_IVS_QUEUESTAY_DETECTION(0X00000262, "排队滞留时间报警事件"),
+    /**
+     * 排队人数异常报警事件
+     */
+    EVENT_IVS_QUEUENUM_DETECTION(0X00000263, "排队人数异常报警事件"),
+    /**
+     * 生成图规则事件
+     */
+    EVENT_IVS_GENERATEGRAPH_DETECTION(0X00000264, "生成图规则事件"),
+    /**
+     * 交通违章-手动取证
+     */
+    EVENT_IVS_TRAFFIC_PARKING_MANUAL(0x00000265, "交通违章-手动取证"),
+    /**
+     * 安全帽检测事件
+     */
+    EVENT_IVS_HELMET_DETECTION(0x00000266, "安全帽检测事件"),
+    /**
+     * 包裹堆积程度检测事件
+     */
+    EVENT_IVS_DEPOSIT_DETECTION(0x00000267, "包裹堆积程度检测事件"),
+    /**
+     * 热点异常报警事件
+     */
+    EVENT_IVS_HOTSPOT_WARNING(0x00000268, "热点异常报警事件"),
+    /**
+     * 称重平台检测事件
+     */
+    EVENT_IVS_WEIGHING_PLATFORM_DETECTION(0x00000269, "称重平台检测事件"),
+    /**
+     * 课堂行为分析事件
+     */
+    EVENT_IVS_CLASSROOM_BEHAVIOR(0x0000026A, "课堂行为分析事件"),
+    /**
+     * 安全驾驶车距过近报警事件
+     */
+    EVENT_IVS_VEHICLE_DISTANCE_NEAR(0x0000026B, "安全驾驶车距过近报警事件"),
+    /**
+     * 驾驶员异常报警事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL(0x0000026C, "驾驶员异常报警事件"),
+    /**
+     * 驾驶员变更报警事件
+     */
+    EVENT_IVS_TRAFFIC_DRIVER_CHANGE(0x0000026D, "驾驶员变更报警事件"),
+    /**
+     * 工装
+     */
+    EVENT_IVS_WORKCLOTHES_DETECT(0x0000026E, "工装"),
+    /**
+     * 安检门人员报警事件
+     */
+    EVENT_IVS_SECURITYGATE_PERSONALARM(0x0000026F, "安检门人员报警事件"),
+    /**
+     * 单人独处事件
+     */
+    EVENT_IVS_STAY_ALONE_DETECTION(0x00000270, "单人独处事件"),
+    /**
+     * 交通路障检测事件
+     */
+    EVENT_IVS_TRAFFIC_ROAD_BLOCK(0x00000271, "交通路障检测事件"),
+    /**
+     * 交通道路施工检测事件
+     */
+    EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(0x00000272, "交通道路施工检测事件"),
+    /**
+     * X光按物体检测规则配置,
+     */
+    EVENT_IVS_XRAY_DETECT_BYOBJECT(0x00000273, "X光按物体检测规则配置,"),
+    /**
+     * 作业统计事件
+     */
+    EVENT_IVS_WORKSTATDETECTION(0x00000274, "作业统计事件"),
+    /**
+     * 红外阻断事件
+     */
+    EVENT_IVS_INFRAREDBLOCK(0x00000275, "红外阻断事件"),
+    /**
+     * 特征提取事件
+     */
+    EVENT_IVS_FEATURE_ABSTRACT(0x00000276, "特征提取事件"),
+    /**
+     * 智能补货事件
+     */
+    EVENT_IVS_INTELLI_SHELF(0x00000277, "智能补货事件"),
+    /**
+     * 全景抓拍事件
+     */
+    EVENT_IVS_PANORAMA_SHOT(0x00000278, "全景抓拍事件"),
+    /**
+     * 智能视频移动侦测事件
+     */
+    EVENT_ALARM_SMARTMOTION_HUMAN(0x00000279, "智能视频移动侦测事件"),
+    /**
+     * 智能视频移动侦测事件
+     */
+    EVENT_ALARM_SMARTMOTION_VEHICLE(0x0000027A, "智能视频移动侦测事件"),
+    /**
+     * 车辆驶入驶出状态事件
+     */
+    EVENT_IVS_CAR_DRIVING_IN_OUT(0x0000027B, "车辆驶入驶出状态事件"),
+    /**
+     * 停车位状态事件
+     */
+    EVENT_IVS_PARKINGSPACE_STATUS(0x0000027C, "停车位状态事件"),
+    /**
+     * 暴力抛物检测
+     */
+    EVENT_IVS_VIOLENT_THROW_DETECTION(0x0000027D, "暴力抛物检测"),
+    /**
+     * 矿车超挂报警事件
+     */
+    EVENT_IVS_TRAMCARSECTIONS_DETECTION(0x0000027E, "矿车超挂报警事件"),
+    /**
+     * 报警盒通道的触发报警事件,
+     */
+    EVENT_IVS_ALARM_BOX_ALARM(0x0000027F, "报警盒通道的触发报警事件,"),
+    /**
+     * 人脸比对事件,
+     */
+    EVENT_IVS_FACE_COMPARISION(0x00000280, "人脸比对事件,"),
+    /**
+     * 人像检测事件
+     */
+    EVENT_IVS_FACEBODY_DETECT(0x00000281, "人像检测事件"),
+    /**
+     * 人像识别事件
+     */
+    EVENT_IVS_FACEBODY_ANALYSE(0x00000282, "人像识别事件"),
+    /**
+     * 加油站车辆检测事件
+     */
+    EVENT_IVS_GASSTATION_VEHICLE_DETECT(0x00000283, "加油站车辆检测事件"),
+    /**
+     * 道路场景车辆拥堵报警事件
+     */
+    EVENT_IVS_CONGESTION_DETECTION(0x00000284, "道路场景车辆拥堵报警事件"),
+    /**
+     * 停车场场景下停车车辆上限报警
+     */
+    EVENT_IVS_VEHICLELIMIT_DETECTION(0x00000285, "停车场场景下停车车辆上限报警"),
+    /**
+     * 动物检测事件,
+     */
+    EVENT_IVS_ANIMAL_DETECTION(0x00000286, "动物检测事件,"),
+    /**
+     * 橱窗张贴事件
+     */
+    EVENT_IVS_SHOP_WINDOW_POST(0x00000287, "橱窗张贴事件"),
+    /**
+     * 店招异常事件
+     */
+    EVENT_IVS_SHOP_SIGN_ABNORMAL(0x00000288, "店招异常事件"),
+    /**
+     * 智慧养殖检测事件
+     */
+    EVENT_IVS_BREED_DETECTION(0x00000289, "智慧养殖检测事件"),
+    /**
+     * 机场智能保障车辆检测事件
+     */
+    EVENT_IVS_AIRPORT_VEHICLE_DETECT(0x0000028A, "机场智能保障车辆检测事件"),
+    /**
+     * 智慧养殖猪体温检测
+     */
+    EVENT_IVS_PIG_TEMPERATURE_DETECT(0x0000028B, "智慧养殖猪体温检测"),
+    /**
+     * 人车共存事件
+     */
+    EVENT_IVS_MAN_CAR_COEXISTANCE(0x0000028C, "人车共存事件"),
+    /**
+     * 高空抛物检测
+     */
+    EVENT_IVS_HIGH_TOSS_DETECT(0x0000028D, "高空抛物检测"),
+    /**
+     * 电力检测手套检测事件
+     */
+    EVENT_IVS_ELECTRIC_GLOVE_DETECT(0x0000028E, "电力检测手套检测事件"),
+    /**
+     * 电力检测梯子检测事件
+     */
+    EVENT_IVS_ELECTRIC_LADDER_DETECT(0x0000028F, "电力检测梯子检测事件"),
+    /**
+     * 电力检测布幔检测事件
+     */
+    EVENT_IVS_ELECTRIC_CURTAIN_DETECT(0x00000290, "电力检测布幔检测事件"),
+    /**
+     * 电力检测围栏检测事件
+     */
+    EVENT_IVS_ELECTRIC_FENCE_DETECT(0x00000291, "电力检测围栏检测事件"),
+    /**
+     * 电力检测标识牌检测事件
+     */
+    EVENT_IVS_ELECTRIC_SIGNBOARD_DETECT(0x00000292, "电力检测标识牌检测事件"),
+    /**
+     * 电力检测安全带检测事件
+     */
+    EVENT_IVS_ELECTRIC_BELT_DETECT(0x00000293, "电力检测安全带检测事件"),
+    /**
+     * 雷达警戒线/绊线检测
+     */
+    EVENT_IVS_RADAR_LINE_DETECTION(0x00000294, "雷达警戒线/绊线检测"),
+    /**
+     * 雷达警戒区检测事件
+     */
+    EVENT_IVS_RADAR_REGION_DETECTION(0x00000295, "雷达警戒区检测事件"),
+    /**
+     * 异常音事件
+     */
+    EVENT_IVS_AUDIO_INTENSITY(0x00000296, "异常音事件"),
+    /**
+     * 室外停车位状态检测
+     */
+    EVENT_IVS_PARKING_LOT_STATUS_DETECTION(0x00000297, "室外停车位状态检测"),
+    /**
+     * 只用于规则配置
+     */
+    EVENT_IVS_VEHICLE_COMPARE(0x00000298, "只用于规则配置"),
+    /**
+     * 渣土车未遮盖载货检测事件
+     */
+    EVENT_IVS_DREGS_UNCOVERED(0x00000299, "渣土车未遮盖载货检测事件"),
+    /**
+     * 走动检测事件
+     */
+    EVENT_IVS_WALK_DETECTION(0x0000029A, "走动检测事件"),
+    /**
+     * 背对检测事件
+     */
+    EVENT_IVS_BACK_TO_DETECTION(0x0000029B, "背对检测事件"),
+    /**
+     * 板书检测事件
+     */
+    EVENT_IVS_WRITE_ON_THE_BOARD_DETECTION(0x0000029C, "板书检测事件"),
+    /**
+     * 智慧厨房穿着检测事件
+     */
+    EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION(0x0000029D, "智慧厨房穿着检测事件"),
+    /**
+     * 睡觉检测事件
+     */
+    EVENT_IVS_SLEEP_DETECT(0x0000029E, "睡觉检测事件"),
+    /**
+     * 随意走动检测事件
+     */
+    EVENT_IVS_WALK_AROUND_DETECT(0x0000029F, "随意走动检测事件"),
+    /**
+     * 玩手机事件
+     */
+    EVENT_IVS_PLAY_MOBILEPHONE(0x00000300, "玩手机事件"),
+    /**
+     * 智慧金融违规物品检测事件
+     */
+    EVENT_IVS_FINANCE_CONTRABAND_DETECT(0x00000301, "智慧金融违规物品检测事件"),
+    /**
+     * 智慧金融现金交易检测事件
+     */
+    EVENT_IVS_FINANCE_CASH_TRANSACTION(0x00000302, "智慧金融现金交易检测事件"),
+    /**
+     * 人体温智能检测事件
+     */
+    EVENT_IVS_ANATOMY_TEMP_DETECT(0x00000303, "人体温智能检测事件"),
+    /**
+     * 活跃度统计规则
+     */
+    EVENT_IVS_ACTIVITY_ANALYSE(0x00000304, "活跃度统计规则"),
+    /**
+     * 门状态事件
+     */
+    EVENT_IVS_DOOR_STATUS(0x00000305, "门状态事件"),
+    /**
+     * Dhop自定义事件
+     */
+    EVENT_IVS_DHOP_CUSTOM(0x00000306, "Dhop自定义事件"),
+    /**
+     * Dhop自定义事件
+     */
+    EVENT_IVS_DHOP_CUSTOM_ONCE(0x00000307, "Dhop自定义事件"),
+    /**
+     * 起雾检测事件
+     */
+    EVENT_IVS_FOG_DETECTION(0x00000308, "起雾检测事件"),
+    /**
+     * 飙车事件
+     */
+    EVENT_IVS_TRAFFIC_VEHICLE_BC(0x00000309, "飙车事件"),
+    /**
+     * 机动车超载
+     */
+    EVENT_IVS_TRAFFIC_MOTOR_OVERLOAD(0x0000030A, "机动车超载"),
+    /**
+     * 车牌污损
+     */
+    EVENT_IVS_TRAFFIC_PLATE_OCCLUSION(0x0000030B, "车牌污损"),
+    /**
+     * 非机动车进入电梯
+     */
+    EVENT_IVS_NONMOTOR_ENTRYING(0x0000030C, "非机动车进入电梯"),
+    /**
+     * 水位监测事件,
+     */
+    EVENT_IVS_WATER_STAGE_MONITOR(0x0000030D, "水位监测事件,"),
+    /**
+     * 道路安全预警
+     */
+    EVENT_IVS_TRAFFIC_ROAD_ALERT(0x0000030E, "道路安全预警"),
+    /**
+     * 违章建筑检测事件
+     */
+    EVENT_IVS_BREAK_RULE_BUILDING_DETECTION(0x0000030F, "违章建筑检测事件"),
+    /**
+     * 非机动车闯红灯
+     */
+    EVENT_IVS_TRAFFIC_NONMOTOR_RUN_REDLIGHT(0x00000310, "非机动车闯红灯"),
+    /**
+     * 占用应急车道事件
+     */
+    EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE(0x00000311, "占用应急车道事件"),
+    /**
+     * 婴儿车检测事件
+     */
+    EVENT_IVS_PRAM_DETECTION(0x00000312, "婴儿车检测事件"),
+    /**
+     * 立体行为婴儿车检测事件
+     */
+    EVENT_IVS_STEREO_PRAM_DETECTION(0x00000313, "立体行为婴儿车检测事件"),
+    /**
+     * 大件行李箱检测事件
+     */
+    EVENT_IVS_BIG_BAGGAGE_DETECTION(0x00000314, "大件行李箱检测事件"),
+    /**
+     * 立体行为大件行李箱检测事件
+     */
+    EVENT_IVS_STEREO_BIG_BAGGAGE_DETECTION(0x00000315, "立体行为大件行李箱检测事件"),
+    /**
+     * 逃票检测事件
+     */
+    EVENT_IVS_TICKET_EVADE_DETECTION(0x00000316, "逃票检测事件"),
+    /**
+     * 立体行为逃票检测事件
+     */
+    EVENT_IVS_STEREO_TICKET_EVADE_DETECTION(0x00000317, "立体行为逃票检测事件"),
+    /**
+     * 输电线异物检测
+     */
+    EVENT_IVS_POWERLINE_FOREIGN_DETECITON(0x00000318, "输电线异物检测"),
+    /**
+     * 压导流线
+     */
+    EVENT_IVS_TRAFFIC_OVER_GUIDE_LINE(0x00000319, "压导流线"),
+    /**
+     * 交通卡口测量
+     */
+    EVENT_IVS_TRAFFIC_CAR_MEASUREMENT(0x00000320, "交通卡口测量"),
+    /**
+     * 不安规定使用转向灯事件
+     */
+    EVENT_IVS_TRAFFIC_WRONG_TURN_LIGHT(0x00000321, "不安规定使用转向灯事件"),
+    /**
+     * 交通事故事件,{@link DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO}
+     */
+    EVENT_IVS_TRAFFIC_REAREND_ACCIDENT(0x00000322, "交通事故事件"),
+    /**
+     * 对讲动作事件
+     */
+    EVENT_IVS_DO_TALK_ACTION(0x00000323, "对讲动作事件"),
+    /**
+     * 消防占道检测事件
+     */
+    EVENT_IVS_FIRE_LANE_DETECTION(0x00000324, "消防占道检测事件"),
+    /**
+     * 全景异常停车事件
+     */
+    EVENT_IVS_PARKING_DETECTION_FOR_PRMA(0x00000325, "全景异常停车事件"),
+    /**
+     * 全景交通拥堵事件
+     */
+    EVENT_IVS_TRAFFIC_JAM_FOR_PRMA(0x00000326, "全景交通拥堵事件"),
+    /**
+     * 全景交通事故事件
+     */
+    EVENT_IVS_TRAFFIC_ACCIDENT_FOR_PRMA(0x00000327, "全景交通事故事件"),
+    /**
+     * 非机动车逆行事件
+     */
+    EVENT_IVS_TRAFFIC_NON_MOTOR_RETROGRADE(0x00000328, "非机动车逆行事件"),
+    /**
+     * 非机动车越线停车事件
+     */
+    EVENT_IVS_TRAFFIC_NON_MOTOR_OVER_STOP_LINE(0x00000329, "非机动车越线停车事件"),
+    /**
+     * 车辆驶入事件
+     */
+    EVENT_IVS_CAR_DRIVING_IN(0x00000330, "车辆驶入事件"),
+    /**
+     * 车辆驶出事件
+     */
+    EVENT_IVS_CAR_DRIVING_OUT(0x00000331, "车辆驶出事件"),
+    /**
+     * 人像检测
+     */
+    EVENT_IVS_PORTRAIT_DETECTION(0x00000332, "人像检测"),
+    /**
+     * 特殊车辆检测
+     */
+    EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT(0x00000333, "特殊车辆检测"),
+    /**
+     * 未开照明灯事件
+     */
+    EVENT_IVS_TRAFFIC_HEAD_LAMP_OFF(0x00000334, "未开照明灯事件"),
+    /**
+     * 交通非机动车事件检测,{@link DEV_EVENT_TRAFFIC_NONMOTOR_INFO}
+     */
+    EVENT_IVS_TRAFFIC_NONMOTOR(0x00000335, "交通非机动车事件检测,"),
+    /**
+     * 交通违章上下客事件检测
+     */
+    EVENT_IVS_TRAFFIC_BOARD(0x00000336, "交通违章上下客事件检测"),
+    /**
+     * 交通能见度事件检测,{@link DEV_EVENT_TRAFFIC_VISIBILITY_INFO}
+     */
+    EVENT_IVS_TRAFFIC_VISIBILITY(0x00000337, "交通能见度事件检测"),
+    /**
+     * 交通车辆清洁度检测事件检测
+     */
+    EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS(0x00000338, "交通车辆清洁度检测事件检测"),
+    /**
+     * 全景交通车流
+     */
+    EVENT_IVS_TRAFFICFLOW_FOR_PRMA(0x00000339, "全景交通车流"),
+    /**
+     * 工程车未清洗
+     */
+    EVENT_IVS_TRUCKNOTCLEAN_FOR_PRMA(0x0000033A, "工程车未清洗"),
+    /**
+     * 异物占道事件
+     */
+    EVENT_IVS_ROADOCCUPATION_BY_FOREIGNOBJECT(0x0000033B, "异物占道事件"),
+    /**
+     * 车流量超过上限
+     */
+    EVENT_IVS_TRAFFICFLOW_OVER(0x0000033C, "车流量超过上限"),
+    /**
+     * 违规物品检测事件
+     */
+    EVENT_IVS_GOODS_DETECTION(0x0000033D, "违规物品检测事件"),
+    /**
+     * 传送带阻塞报警事件
+     */
+    EVENT_IVS_CONVEYORBLOCK_DETECTION(0x0000033E, "传送带阻塞报警事件"),
+    /**
+     * 全物体类型检测事件
+     */
+    EVENT_IVS_ANYTHING_DETECT(0x0000033F, "全物体类型检测事件"),
+    /**
+     * 目标异常事件
+     */
+    EVENT_IVS_OBJECT_ABNORMAL(0x00000340, "目标异常事件"),
+    /**
+     * 辅助驾驶
+     */
+    EVENT_IVS_DRIVE_ASSISTANT(0x00000341, "辅助驾驶"),
+    /**
+     * 驾驶行为分析
+     */
+    EVENT_IVS_DRIVE_ACTION_ANAYLSE(0x00000342, "驾驶行为分析"),
+    /**
+     * 驾驶行为分析
+     */
+    EVENT_IVS_DRIVE_HANDSOFF_STEERING_WHEEL(0x00000343, "驾驶行为分析"),
+    /**
+     * 驾驶行为分析
+     */
+    EVENT_IVS_DRIVE_BLIND_SPOT(0x00000344, "驾驶行为分析"),
+    /**
+     * 物品检测
+     */
+    EVENT_IVS_ARTICLE_DETECTION(0x00000345, "物品检测"),
+    /**
+     * 路侧停车位手动抓图
+     */
+    EVENT_IVS_TRAFFIC_PARKINGSPACE_MANUALSNAP(0x00000346, "路侧停车位手动抓图"),
+    /**
+     * 沿街晾晒事件
+     */
+    EVENT_IVS_STREET_SUNCURE(0x00000347, "沿街晾晒事件"),
+    /**
+     * 户外广告事件
+     */
+    EVENT_IVS_OUTDOOR_ADVERTISEMENT(0x00000348, "户外广告事件"),
+    /**
+     * 乱堆物料检测事件
+     */
+    EVENT_IVS_HUDDLE_MATERIAL(0x00000349, "乱堆物料检测事件"),
+    /**
+     * 进入消防通道检测
+     */
+    EVENT_IVS_FIRE_LINE_DETECTION(0x0000034A, "进入消防通道检测"),
+    /**
+     * 违法占用公交车道
+     */
+    EVENT_IVS_OCCUPY_BUS_LANE(0x0000034B, "违法占用公交车道"),
+    /**
+     * 求救检测事件
+     */
+    EVENT_IVS_DISTRESS_DETECTION(0x0000034C, "求救检测事件"),
+    /**
+     * 交通副驾驶未系安全带事件
+     */
+    EVENT_IVS_TRAFFIC_ASSISTANT_WITHOUT_SAFEBELT(0x0000034D, "交通副驾驶未系安全带事件"),
+    /**
+     * 通用姿态行为事件
+     */
+    EVENT_IVS_GENEAL_ATTITUDE(0x0000038C, "通用姿态行为事件"),
+    /**
+     * 行为自定义行为计数事件
+     */
+    EVENT_IVS_ACTION_COUNT(0x0000046E, "行为自定义行为计数事件"),
+    /**
+     * 读写组,原型为"ReadWrite*","ReadWrite*",代表读写组,
+     */
+    STOR_POINT_READ_WRITE(0x00001001, "读写组"),
+    /**
+     * 只读组
+     */
+    STOR_POINT_READ_ONLY(0x00001002, "只读组"),
+    /**
+     * 冗余组,和"ReadWirte"组一个冗余副本
+     */
+    STOR_POINT_REDUNDANT(0x00001003, "冗余组"),
+    /**
+     * 备份组,数据写满后停止,不会循环覆盖
+     */
+    STOR_POINT_BACKUP(0x00001004, "备份组,数据写满后停止,不会循环覆盖"),
+    /**
+     * 历史抽帧组,实时录像在指定时间后,抽帧并写入该组
+     */
+    STOR_POINT_DRAW_FRAME(0x00001005, "历史抽帧组,实时录像在指定时间后,抽帧并写入该组"),
+    /**
+     * 远程网络存储组
+     */
+    STOR_POINT_NAS_FTP(0x00001006, "远程网络存储组"),
+    /**
+     * 远程网络存储组
+     */
+    STOR_POINT_NAS_NFS(0x00001007, "远程网络存储组"),
+    /**
+     * 远程网络存储组
+     */
+    STOR_POINT_NAS_SMB(0x00001008, "远程网络存储组"),
+    /**
+     * 远程网络存储组
+     */
+    STOR_POINT_NAS_ISCSI(0x00001009, "远程网络存储组"),
+    /**
+     * 远程网络存储组
+     */
+    STOR_POINT_NAS_CLOUD(0x0000100A, "远程网络存储组");
+    private int type;
+    private String description;
+
+    private EM_EVENT_TYPE(int type, String description) {
+        this.type = type;
+        this.description = description;
+    }
+
+    public static EM_EVENT_TYPE getEventType(int type) {
+        for (EM_EVENT_TYPE event : EM_EVENT_TYPE.values()) {
+            if (type == event.getType()) {
+                return event;
+            }
+        }
+        return null;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java
new file mode 100644
index 0000000..a2343b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_TYPE_DESCEIBEINFO.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 事件类型描述
+ * @date 2022/08/18 10:00:46
+ */
+public enum EM_EVENT_TYPE_DESCEIBEINFO {
+	/**
+	 * 正常抓图事件
+	 */
+	EM_EVENT_NORMAL(0, "正常抓图事件"),
+	/**
+	 * 邮件联动抓图事件
+	 */
+	EM_EVENT_EMAIL(1, "邮件联动抓图事件");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_EVENT_TYPE_DESCEIBEINFO(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_EVENT_TYPE_DESCEIBEINFO enumType : EM_EVENT_TYPE_DESCEIBEINFO.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_EVENT_TYPE_DESCEIBEINFO enumType : EM_EVENT_TYPE_DESCEIBEINFO.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java
new file mode 100644
index 0000000..962b820
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EVENT_WORKCLOTHES_RULE_TYPE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 工装检测报警规则类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:21
+ */
+public class EM_EVENT_WORKCLOTHES_RULE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_UNKNWON = 0;
+    /**
+     *  安全帽
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_HELMET = 1;
+    /**
+     *  工作服
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_CLOTHES = 2;
+    /**
+     *  工作裤
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_PANTS = 3;
+    /**
+     *  防护服
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_PROTECTIVESUIT = 4;
+    /**
+     *  鞋套
+     */
+    public static final int					EM_EVENT_WORKCLOTHES_RULE_SHOESCOVER = 5;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXPOWER_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXPOWER_STATE.java
new file mode 100644
index 0000000..9ff6287
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXPOWER_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  外接电源状态 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_EXPOWER_STATE {
+/**
+未连接
+*/
+EM_EXPOWER_DISCONNECT(0,"未连接"),
+/**
+连接
+*/
+EM_EXPOWER_CONNECT(1,"连接"),
+/**
+未知
+*/
+EM_EXPOWER_UNKNOWN(2,"未知");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_EXPOWER_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_EXPOWER_STATE enumType : EM_EXPOWER_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_EXPOWER_STATE enumType : EM_EXPOWER_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_EXPOWER_STATE getEnum(int value) {
+        for (EM_EXPOWER_STATE e : EM_EXPOWER_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_EXPOWER_STATE.EM_EXPOWER_DISCONNECT;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java
new file mode 100644
index 0000000..904af46
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EXTERNAL_WIFI_PRIORITY.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  外部wifi优先级 
+* @date 2022/08/31 14:44:17
+*/
+public enum EM_EXTERNAL_WIFI_PRIORITY {
+/**
+未知
+*/
+EM_EXTERNAL_WIFI_UNKNOWN(0,"未知"),
+/**
+首选外部wifi
+*/
+EM_EXTERNAL_WIFI_FIRST(1,"首选外部wifi"),
+/**
+备选外部wifi
+*/
+EM_EXTERNAL_WIFI_ALTERNATIVE(2,"备选外部wifi"),
+/**
+仅使用外部wifi
+*/
+EM_EXTERNAL_WIFI_USEONLY(3,"仅使用外部wifi");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_EXTERNAL_WIFI_PRIORITY(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_EXTERNAL_WIFI_PRIORITY enumType : EM_EXTERNAL_WIFI_PRIORITY.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_EXTERNAL_WIFI_PRIORITY enumType : EM_EXTERNAL_WIFI_PRIORITY.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_EXTERNAL_WIFI_PRIORITY getEnum(int value) {
+        for (EM_EXTERNAL_WIFI_PRIORITY e : EM_EXTERNAL_WIFI_PRIORITY.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_EXTERNAL_WIFI_PRIORITY.EM_EXTERNAL_WIFI_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EYE_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EYE_STATE_TYPE.java
new file mode 100644
index 0000000..f83192b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_EYE_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 眼睛状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_EYE_STATE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_EYE_STATE_UNKNOWN = 0;
+    /**
+     *  未识别
+     */
+    public static final int					EM_EYE_STATE_NODISTI = 1;
+    /**
+     *  闭眼
+     */
+    public static final int					EM_EYE_STATE_CLOSE = 2;
+    /**
+     *  睁眼
+     */
+    public static final int					EM_EYE_STATE_OPEN = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_APPEND_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_APPEND_STATE.java
new file mode 100644
index 0000000..33ded92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_APPEND_STATE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 人脸导入的状态
+ * @date 2022/10/31 11:10:10
+ */
+public enum EM_FACE_APPEND_STATE {
+	/**
+	 * 未知
+	 */
+	EM_FACE_APPEND_STATE_UNKNOWN(0, "未知"),
+	/**
+	 * 开始导入
+	 */
+	EM_FACE_APPEND_STATE_START(1, "开始导入"),
+	/**
+	 * 正在导入
+	 */
+	EM_FACE_APPEND_STATE_RUN(2, "正在导入"),
+	/**
+	 * 导入结束
+	 */
+	EM_FACE_APPEND_STATE_STOP(3, "导入结束"),
+	/**
+	 * 导入取消
+	 */
+	EM_FACE_APPEND_STATE_CANCLE(4, "导入取消");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_FACE_APPEND_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FACE_APPEND_STATE enumType : EM_FACE_APPEND_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FACE_APPEND_STATE enumType : EM_FACE_APPEND_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_CHECK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_CHECK.java
new file mode 100644
index 0000000..4af511f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_CHECK.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_FACE_CHECK {
+    EM_FACE_CHECK_UNKNOWN (-1,"未知"),		// 未知
+    EM_FACE_CHECK_NODATA(0,"该人员无人脸数据"),			// 该人员无人脸数据
+    EM_FACE_CHECK_CONSISTENT(1,"刷卡和人脸人员一致"),		// 刷卡和人脸人员一致
+    EM_FACE_CHECK_NOT_CONSISTENT(2,"刷卡和人脸人员不一致");	// 刷卡和人脸人员不一致
+
+    private final int value;
+    private final String note;
+
+    EM_FACE_CHECK(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_FACE_CHECK enumType : EM_FACE_CHECK.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_FACE_CHECK enumType : EM_FACE_CHECK.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_EVENT_LEVEL getEnum(int value) {
+        for (EM_EVENT_LEVEL e : EM_EVENT_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_EVENT_LEVEL.EM_EVENT_LEVEL_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java
new file mode 100644
index 0000000..d8779ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_ALIVE_TYPE.java
@@ -0,0 +1,7 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_FACE_TRAIT_ALIVE_TYPE {
+    EM_FACE_TRAIT_ALIVE_UNKNOWN,					// 未知
+    EM_FACE_TRAIT_ALIVE_NON,						// 非活体
+    EM_FACE_TRAIT_ALIVE,							// 活体
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java
new file mode 100644
index 0000000..edbb691
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FACE_TRAIT_EMOTION_TYPE.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_FACE_TRAIT_EMOTION_TYPE {
+    EM_FACE_TRAIT_EMOTION_UNKNOWN,					// 未知
+    EM_FACE_TRAIT_EMOTION_UNRECOGNIZE,				// 未识别
+    EM_FACE_TRAIT_EMOTION_ANGRY,					// 生气
+    EM_FACE_TRAIT_EMOTION_SAD,						// 悲伤
+    EM_FACE_TRAIT_EMOTION_DISGUST,					// 厌恶
+    EM_FACE_TRAIT_EMOTION_FEAR,						// 恐惧
+    EM_FACE_TRAIT_EMOTION_SURPRISE,					// 诧异
+    EM_FACE_TRAIT_EMOTION_CALM,						// 平静
+    EM_FACE_TRAIT_EMOTION_SMILE,					// 微笑
+    EM_FACE_TRAIT_EMOTION_LAUGH,					// 大笑
+    EM_FACE_TRAIT_EMOTION_HAPPY,					// 高兴
+    EM_FACE_TRAIT_EMOTION_CONFUSED,					// 困惑
+    EM_FACE_TRAIT_EMOTION_SCREAM,					// 尖叫
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_ERROR_CODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_ERROR_CODE.java
new file mode 100644
index 0000000..f95957d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_ERROR_CODE.java
@@ -0,0 +1,159 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 特征建模失败错误码
+ * @origin autoTool
+ * @date 2023/06/28 14:07:32
+ */
+public enum EM_FEATURE_ERROR_CODE {
+	/**
+     * 成功
+     */
+	EM_FEATURE_ERROR_SUCCESS(0,"成功"),
+	/**
+     * 未知
+     */
+	EM_FEATURE_ERROR_UNKNOWN(1,"未知"),
+	/**
+     * 图片格式问题
+     */
+	EM_FEATURE_ERROR_IMAGE_FORMAT_ERROR(2,"图片格式问题"),
+	/**
+     * 无目标或不够清晰
+     */
+	EM_FEATURE_ERROR_NOFACE_OR_NOTCLEAR(3,"无目标或不够清晰"),
+	/**
+     * 多个目标
+     */
+	EM_FEATURE_ERROR_MULT_FACES(4,"多个目标"),
+	/**
+     * 图片解码失败
+     */
+	EM_FEATURE_ERROR_IMAGH_DECODE_FAILED(5,"图片解码失败"),
+	/**
+     * 不推荐入库
+     */
+	EM_FEATURE_ERROR_NOT_SUGGEST_STORAGE(6,"不推荐入库"),
+	/**
+     * 数据库操作失败
+     */
+	EM_FEATURE_ERROR_DATABASE_OPERATE_FAILED(7,"数据库操作失败"),
+	/**
+     * 获取图片失败
+     */
+	EM_FEATURE_ERROR_GET_IMAGE_FAILED(8,"获取图片失败"),
+	/**
+     * 系统异常(如Licence失效、建模分析器未启动导致的失败)
+     */
+	EM_FEATURE_ERROR_SYSTEM_EXCEPTION(9,"系统异常(如Licence失效、建模分析器未启动导致的失败)"),
+	/**
+     * 目标宽度过小
+     */
+	EM_FEATURE_ERROR_UNDERSIZED_WIDTH(10,"目标宽度过小"),
+	/**
+     * 目标眼瞳间距过小
+     */
+	EM_FEATURE_ERROR_UNDERSIZED_INTERPUPILLARY_DISTANCE(11,"目标眼瞳间距过小"),
+	/**
+     * 目标脸对齐分数过低
+     */
+	EM_FEATURE_ERROR_FACE_ALIGNMENT_SCORE_LOW(12,"目标脸对齐分数过低"),
+	/**
+     * 目标俯仰角过大
+     */
+	EM_FEATURE_ERROR_OVERSIZED_FACE_PITCH_ANGLE(13,"目标俯仰角过大"),
+	/**
+     * 目标偏航角过大
+     */
+	EM_FEATURE_ERROR_OVERSIZED_FACE_YAW_ANGLE(14,"目标偏航角过大"),
+	/**
+     * 目标滚转角过大
+     */
+	EM_FEATURE_ERROR_OVERSIZED_FACE_ROLL_ANGLE(15,"目标滚转角过大"),
+	/**
+     * 目标质量分过低
+     */
+	EM_FEATURE_ERROR_FACE_QUALITY_LOW(16,"目标质量分过低"),
+	/**
+     * 目标清晰度过低
+     */
+	EM_FEATURE_ERROR_FACE_DEFINITION_LOW(17,"目标清晰度过低"),
+	/**
+     * 目标眼部遮挡
+     */
+	EM_FEATURE_ERROR_EYE_OCCLUSION(18,"目标眼部遮挡"),
+	/**
+     * 目标额头遮挡
+     */
+	EM_FEATURE_ERROR_FOREHEAD_OCCLUSION(19,"目标额头遮挡"),
+	/**
+     * 目标嘴巴遮挡
+     */
+	EM_FEATURE_ERROR_MOUTH_OCCLUSION(20,"目标嘴巴遮挡"),
+	/**
+     * 目标不完整
+     */
+	EM_FEATURE_ERROR_INCOMPLETE_FACE(21,"目标不完整"),
+	/**
+     * 目标光照过曝或者欠曝
+     */
+	EM_FEATURE_ERROR_ABNORMAL_FACE_EXPOSURE(22,"目标光照过曝或者欠曝"),
+	/**
+     * 目标饱和度过低
+     */
+	EM_FEATURE_ERROR_FACE_SATURATION_LOW(23,"目标饱和度过低"),
+	/**
+     * 目标区域在图像中占比过大
+     */
+	EM_FEATURE_ERROR_FACE_AREA_OVER_PROPORTION(24,"目标区域在图像中占比过大"),
+	/**
+     * 图像中未检出目标
+     */
+	EM_FEATURE_ERROR_FACE_DETECTION_FAILE(25,"图像中未检出目标");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_FEATURE_ERROR_CODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FEATURE_ERROR_CODE enumType : EM_FEATURE_ERROR_CODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FEATURE_ERROR_CODE enumType : EM_FEATURE_ERROR_CODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_FEATURE_ERROR_CODE getEnum(int value) {
+		for (EM_FEATURE_ERROR_CODE e : EM_FEATURE_ERROR_CODE.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_FEATURE_ERROR_CODE.EM_FEATURE_ERROR_SUCCESS;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java
new file mode 100644
index 0000000..7dafd69
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_LIST_TYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 睿厨着装检特征列表
+ * @date 2021/01/11
+ */
+public enum EM_FEATURE_LIST_TYPE {
+	// 未知
+	EM_FEATURE_LIST_UNKNOWN(0, "未知"),
+
+	// 是否戴口罩
+	EM_FEATURE_LIST_HAS_MASK(1, "是否戴口罩"),
+
+	// 是否戴厨师帽
+	EM_FEATURE_LIST_HAS_CHEF_HAT(2, "是否戴厨师帽"),
+
+	// 是否穿厨师服
+	EM_FEATURE_LIST_HAS_CHEF_CLOTHES(3, "是否穿厨师服"),
+
+	// 厨师服的颜色
+	EM_FEATURE_LIST_CHEF_CLOTHES_COLOR(4, "厨师服的颜色");
+
+	private int value;
+	private String note;
+
+	private EM_FEATURE_LIST_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FEATURE_LIST_TYPE enumType : EM_FEATURE_LIST_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FEATURE_LIST_TYPE enumType : EM_FEATURE_LIST_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_VERSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_VERSION.java
new file mode 100644
index 0000000..35d4d42
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FEATURE_VERSION.java
@@ -0,0 +1,162 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 特征值版本类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_FEATURE_VERSION extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_FEATURE_VERSION_UNKNOWN = 0;
+    /**
+     *  人脸,大模型,1.01.001
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_LARGE_1_01_001 = 1;
+    /**
+     *  人脸,大模型,1.02.001
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_LARGE_1_02_001 = 2;
+    /**
+     *  人脸,大模型,1.03.001
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_LARGE_1_03_001 = 3;
+    /**
+     *  人脸,大模型,1.04.001
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_LARGE_1_04_001 = 4;
+    /**
+     *  人脸,中模型,1.01.002
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_MIDDLE_1_01_002 = 31;
+    /**
+     *  人脸,中模型,1.02.002
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_MIDDLE_1_02_002 = 32;
+    /**
+     *  人脸,中模型,1.03.002
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_MIDDLE_1_03_002 = 33;
+    /**
+     *  人脸,中模型,1.04.002
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_MIDDLE_1_04_002 = 34;
+    /**
+     *  人脸,中模型,1.09.002
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_MIDDLE_1_09_002 = 39;
+    /**
+     *  人脸,小模型,1.01.003
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_SMALL_1_01_003 = 61;
+    /**
+     *  人脸,小模型,1.02.003
+     */
+    public static final int					EM_FEATURE_VERSION_FACE_SMALL_1_02_003 = 62;
+    /**
+     *  人和非机动车,全局无版本号
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR = 91;
+    /**
+     *  人和非机动车,全局浮点,1.00.01
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_00_01 = 92;
+    /**
+     *  人和非机动车,全局哈希,1.00.01
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_00_01 = 93;
+    /**
+     *  人和非机动车,全局浮点,1.01.00
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_00 = 94;
+    /**
+     *  人和非机动车,全局哈希,1.01.00
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_00 = 95;
+    /**
+     *  人和非机动车,全局浮点,1.01.01
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_FLOAT_1_01_01 = 96;
+    /**
+     *  人和非机动车,全局哈希,1.01.01
+     */
+    public static final int					EM_FEATURE_VERSION_HUMAN_NONMOTOR_HASH_1_01_01 = 97;
+    /**
+     *  机动车,全局无版本号
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC = 121;
+    /**
+     *  机动车,全局浮点版本号0
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC_FLOAT = 122;
+    /**
+     *  机动车,全局浮点版本号1.00.01
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_01 = 123;
+    /**
+     *  机动车,全局哈希版本号1.00.01
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_01 = 124;
+    /**
+     *  机动车,全局浮点版本号1.00.02
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC_FLOAT_1_00_02 = 125;
+    /**
+     *  机动车,全局哈希版本号1.00.02
+     */
+    public static final int					EM_FEATURE_VERSION_TRAFFIC_HASH_1_00_02 = 126;
+    /**
+     *  商汤,人脸,1.5.0
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_1_5_0 = 151;
+    /**
+     *  商汤,人脸,1.8.1
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_1_8_1 = 152;
+    /**
+     *  商汤,人脸,2.1.3
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_2_1_3 = 153;
+    /**
+     *  商汤,人脸,2.39.6
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_6 = 154;
+    /**
+     *  商汤,人脸,2.39.7
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_7 = 155;
+    /**
+     *  商汤,人脸,2.39.8
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_2_39_8 = 156;
+    /**
+     *  商汤,人脸,239
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_239 = 157;
+    /**
+     *  商汤,人脸,242
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_242 = 158;
+    /**
+     *  商汤,人脸,244
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_244 = 159;
+    /**
+     *  商汤,人脸,245
+     */
+    public static final int					EM_FEATURE_VERSION_SHANGTANG_FACE_245 = 160;
+    /**
+     *  深瞐,人脸/机动车/非机动车,2.4.2
+     */
+    public static final int					EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_4_2 = 181;
+    /**
+     *  深瞐,人脸/机动车/非机动车,2.5.7
+     */
+    public static final int					EM_FEATURE_VERSION_SHENMO_HUMAN_TRAFFIC_NON_2_5_7 = 182;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_TYPE.java
new file mode 100644
index 0000000..c94c2de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_TYPE.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 文件类型
+ * @date 2021/02/22
+ */
+public enum EM_FILE_TYPE {
+	// 未知
+	EM_FILE_TYPE_UNKNOWN(0, "未知"),
+	// jpg 图片
+	EM_FILE_TYPE_JPG(1, "jpg图片"),
+	// dav 文件
+	EM_FILE_TYPE_DAV(2, "dav文件");
+
+	private int value;
+	private String note;
+
+	private EM_FILE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FILE_TYPE enumType : EM_FILE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FILE_TYPE enumType : EM_FILE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java
new file mode 100644
index 0000000..7539639
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILE_UPDATE_STATE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  文件上传状态 
+* @date 2022/09/22 19:11:10
+*/
+public enum EM_FILE_UPDATE_STATE {
+/**
+未知
+*/
+EM_FILE_UPDATE_STATE_UNKNOWN(0,"未知"),
+/**
+正在上传
+*/
+EM_FILE_UPDATE_STATE_UPLOADING(1,"正在上传"),
+/**
+上传中断
+*/
+EM_FILE_UPDATE_STATE_PAUSED(2,"上传中断"),
+/**
+上传成功
+*/
+EM_FILE_UPDATE_STATE_SUCCEEDED(3,"上传成功");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_FILE_UPDATE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_FILE_UPDATE_STATE enumType : EM_FILE_UPDATE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_FILE_UPDATE_STATE enumType : EM_FILE_UPDATE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_FILE_UPDATE_STATE getEnum(int value) {
+        for (EM_FILE_UPDATE_STATE e : EM_FILE_UPDATE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_FILE_UPDATE_STATE.EM_FILE_UPDATE_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java
new file mode 100644
index 0000000..aaa351c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FILTER_IMAGE_TYPE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 返回的图片类型
+ * @date 2021/2/20
+ */
+public enum EM_FILTER_IMAGE_TYPE {
+  /** 未知 */
+  EM_FILTER_IMAGE_UNKNOWN,
+  /** 上报目标抠图 */
+  EM_FILTER_IMAGE_OBJECT,
+  /** 上报场景大图 */
+  EM_FILTER_IMAGE_SCENE;
+
+  public static EM_FILTER_IMAGE_TYPE getFilterImageType(int type) {
+    for (EM_FILTER_IMAGE_TYPE imageType : EM_FILTER_IMAGE_TYPE.values()) {
+      if (imageType.ordinal() == type) {
+        return imageType;
+      }
+    }
+    return EM_FILTER_IMAGE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java
new file mode 100644
index 0000000..44e5458
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIREPROOF_CLOTHES_STATE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 251823
+* @description  是否穿着防火衣 
+* @date 2022/11/01 19:47:04
+*/
+public enum EM_FIREPROOF_CLOTHES_STATE {
+/**
+未知
+*/
+EM_FIREPROOF_CLOTHES_STATE_UNKNOWN(0,"未知"),
+/**
+没有穿着防火衣
+*/
+EM_FIREPROOF_CLOTHES_STATE_NO(1,"没有穿着防火衣"),
+/**
+有穿着防火衣
+*/
+EM_FIREPROOF_CLOTHES_STATE_YES(2,"有穿着防火衣"),
+/**
+不存在指定颜色的防火衣
+*/
+EM_FIREPROOF_CLOTHES_STATE_NOEXIT(3,"不存在指定颜色的防火衣");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_FIREPROOF_CLOTHES_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_FIREPROOF_CLOTHES_STATE enumType : EM_FIREPROOF_CLOTHES_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_FIREPROOF_CLOTHES_STATE enumType : EM_FIREPROOF_CLOTHES_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_FIREPROOF_CLOTHES_STATE getEnum(int value) {
+        for (EM_FIREPROOF_CLOTHES_STATE e : EM_FIREPROOF_CLOTHES_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_FIREPROOF_CLOTHES_STATE.EM_FIREPROOF_CLOTHES_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java
new file mode 100644
index 0000000..6dc414a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 目标物体子类型
+ * @date 2021/12/27
+ */
+public enum EM_FIRE_EXTINGUISHER_CATEGORY_TYPE {
+
+	// 未知
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_UNKNOWN(0, "未知"),
+	// 普通类型灭火器,8kg左右
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_GENERAL(1, "普通类型灭火器,8kg左右"),
+	// 35kg推车式灭火器
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_EXTINGUISHER_HANDPUSH(2, "35kg推车式灭火器"),
+	// 普通标识牌
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_GENERAL(3, "普通标识牌"),
+	// 静电标示牌
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_STATIC_ELETRICITY(4, "静电标示牌"),
+	// 加油口盖标示牌
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_SIGNBOARD_OILCAP(5, "加油口盖标示牌"),
+	// 路锥
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_ROADCONE(6, "路锥"),
+	// 盖子
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_COVERPLATE(7, "盖子"),
+	// 加油口盖标示牌打开
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_OPEN(8, "加油口盖标示牌打开"),
+	// 加油口盖标示牌关闭
+	EM_FIRE_EXTINGUISHER_CATEGORY_TYPE_OILCAP_CLOSE(9, "加油口盖标示牌关闭");
+
+	private int value;
+	private String note;
+
+	private EM_FIRE_EXTINGUISHER_CATEGORY_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FIRE_EXTINGUISHER_CATEGORY_TYPE enumType : EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FIRE_EXTINGUISHER_CATEGORY_TYPE enumType : EM_FIRE_EXTINGUISHER_CATEGORY_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java
new file mode 100644
index 0000000..29dfc7e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_MOVE_STATE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 物体进入还是离开
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:49
+ */
+public class EM_FIRE_LANE_MOVE_STATE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_FIRE_LANE_MOVE_STATE_UNKNOWN = 0;
+    /**
+     *  进入
+     */
+    public static final int					EM_FIRE_LANE_MOVE_STATE_ENTER = 1;
+    /**
+     *  离开
+     */
+    public static final int					EM_FIRE_LANE_MOVE_STATE_LEAVE = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java
new file mode 100644
index 0000000..34c1225
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FIRE_LANE_OILCAP_STATE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 加油口盖标示牌状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:50
+ */
+public class EM_FIRE_LANE_OILCAP_STATE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_FIRE_LANE_OILCAP_STATE_UNKNOWN = 0;
+    /**
+     *  打开
+     */
+    public static final int					EM_FIRE_LANE_OILCAP_STATE_OPEN = 1;
+    /**
+     *  关闭
+     */
+    public static final int					EM_FIRE_LANE_OILCAP_STATE_CLOSE = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java
new file mode 100644
index 0000000..c99f750
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  漂浮物检测场景 
+* @date 2022/05/09 11:40:43
+*/
+public enum EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE {
+/**
+未知
+*/
+EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_UNKNOWN(0,"未知"),
+/**
+普通漂浮物检测
+*/
+EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_NOMAL(1,"普通漂浮物检测"),
+/**
+泡沫检测
+*/
+EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_BUBBLE(2,"泡沫检测");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE enumType : EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE enumType : EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE getEnum(int value) {
+        for (EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE e : EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE.EM_FLOATINGOBJECT_DETECTION_SENCE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java
new file mode 100644
index 0000000..dc6c0d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOCUS_LIMIT_SELECT_MODE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  聚焦极限对应枚举 
+* @date 2022/11/01 11:16:54
+*/
+public enum EM_FOCUS_LIMIT_SELECT_MODE {
+/**
+ Manual  自动
+*/
+EM_FOCUS_LIMIT_MODE_MANUAL(0," Manual  自动"),
+/**
+ Auto 手动
+*/
+EM_FOCUS_LIMIT_MODE_AUTO(1," Auto 手动"),
+/**
+
+*/
+EM_FOCUS_LIMIT_MODE_INVALI(2,"无效");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_FOCUS_LIMIT_SELECT_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_FOCUS_LIMIT_SELECT_MODE enumType : EM_FOCUS_LIMIT_SELECT_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_FOCUS_LIMIT_SELECT_MODE enumType : EM_FOCUS_LIMIT_SELECT_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_FOCUS_LIMIT_SELECT_MODE getEnum(int value) {
+        for (EM_FOCUS_LIMIT_SELECT_MODE e : EM_FOCUS_LIMIT_SELECT_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_FOCUS_LIMIT_SELECT_MODE.EM_FOCUS_LIMIT_MODE_MANUAL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java
new file mode 100644
index 0000000..04c1ef5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 跟随车辆报警图片类型
+ * @date 2021/01/13
+ */
+public enum EM_FOLLOW_CAR_ALARM_IMAGE_TYPE {
+	// 未知
+	EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_UNKNOWN(-1, "未知"),
+
+	// 全景图
+	EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_PANORAMA(0, "全景图"),
+
+	// 小图
+	EM_FOLLOW_CAR_ALARM_IMAGE_TYPE_SMALL_PICTURE(1, "小图");
+
+	private int value;
+	private String note;
+
+	private EM_FOLLOW_CAR_ALARM_IMAGE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_FOLLOW_CAR_ALARM_IMAGE_TYPE enumType : EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_FOLLOW_CAR_ALARM_IMAGE_TYPE enumType : EM_FOLLOW_CAR_ALARM_IMAGE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java
new file mode 100644
index 0000000..f844c38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FORBID_PARKING_STATUS.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 禁停状态
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:53
+ */
+public enum EM_FORBID_PARKING_STATUS {
+    /**
+     * 未知
+     */
+    EM_FORBID_PARKING_STATUS_UNKNOWN(0, "未知"),
+    /**
+     * 未禁止
+     */
+    EM_FORBID_PARKING_STATUS_NOT_FORBID(1, "未禁止"),
+    /**
+     * 禁止
+     */
+    EM_FORBID_PARKING_STATUS_FORBID(2, "禁止");
+
+    private int value;
+    private String note;
+
+    EM_FORBID_PARKING_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_FORBID_PARKING_STATUS enumType : EM_FORBID_PARKING_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_FORBID_PARKING_STATUS enumType : EM_FORBID_PARKING_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_FORBID_PARKING_STATUS getEnum(int value) {
+        for (EM_FORBID_PARKING_STATUS e : EM_FORBID_PARKING_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_FORBID_PARKING_STATUS.EM_FORBID_PARKING_STATUS_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java
new file mode 100644
index 0000000..94c7faf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_FREQUENCY_ALARM_TYPE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  报警类型
+ * @date 2021/7/21 11:18
+ */
+public enum EM_FREQUENCY_ALARM_TYPE {
+    EM_FREQUENCY_ALARM_UNKNOWN (-1),		// 未知
+    EM_FREQUENCY_ALARM_HIGH(0),				// 高频报警
+    EM_FREQUENCY_ALARM_LOW(1);					// 低频报警
+    private int id ;
+
+    private EM_FREQUENCY_ALARM_TYPE(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATE_TYPE.java
new file mode 100644
index 0000000..1ff4a2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATE_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 闸机类型
+ * @date 2021/2/7
+ */
+public enum EM_GATE_TYPE {
+  /** 未知 */
+  EM_ASG_GATE_TYPE_UNKNOWN(-1, "未知"),
+  /** 摆闸1 */
+  EM_ASG_GATE_TYPE_SWING_GATE_ONE(0, "摆闸1"),
+  /** 摆闸2 */
+  EM_ASG_GATE_TYPE_SWING_GATE_TWO(1, "摆闸2"),
+  /** 翼闸1 */
+  EM_ASG_GATE_TYPE_WING_GATE_ONE(2, "翼闸1"),
+  /** 翼闸2 */
+  EM_ASG_GATE_TYPE_WING_GATE_TWO(3, "翼闸2"),
+  /** 翼闸3 */
+  EM_ASG_GATE_TYPE_WING_GATE_THREE(4, "翼闸3"),  
+  /** 三棍闸1 */
+  EM_ASG_GATE_TYPE_THREE_STICK_GATE_ONE(10, "三棍闸1"),
+  /** 三棍闸2 */
+  EM_ASG_GATE_TYPE_THREE_STICK_GATE_TWO(11, "三棍闸2"),			
+  /** 摆闸3 */
+  EM_ASG_GATE_TYPE_SWING_GATE_THREE(20, "摆闸3"), 
+  /** 摆闸4 */
+  EM_ASG_GATE_TYPE_SWING_GATE_FOUR(21, "摆闸4"),	
+  /** 摆闸5 */
+  EM_ASG_GATE_TYPE_SWING_GATE_FIVE(22, "摆闸5");
+  
+  private int type;
+  private String desc;
+
+  EM_GATE_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public static EM_GATE_TYPE getGateType(int type) {
+    for (EM_GATE_TYPE gateType : EM_GATE_TYPE.values()) {
+      if (gateType.type == type) {
+        return gateType;
+      }
+    }
+    return EM_ASG_GATE_TYPE_UNKNOWN;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public void setType(int type) {
+    this.type = type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATHER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATHER_TYPE.java
new file mode 100644
index 0000000..eddb2c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GATHER_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 采集类型
+ * @date 2022/12/30 10:55:59
+ */
+public enum EM_GATHER_TYPE {
+	/**
+	 * 未知类型
+	 */
+	EM_GATHER_TYPE_UNKNOWN(0, "未知类型"),
+	/**
+	 * 人脸采集
+	 */
+	EM_GATHER_TYPE_FACE(1, "人脸采集"),
+	/**
+	 * 证件采集
+	 */
+	EM_GATHER_TYPE_IDCARD(2, "证件采集");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_GATHER_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_GATHER_TYPE enumType : EM_GATHER_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_GATHER_TYPE enumType : EM_GATHER_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java
new file mode 100644
index 0000000..d1c7131
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_STATUS.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 用户状态
+ * @date 2023/03/16 09:04:48
+ */
+public enum EM_GETUSERINFOBYCONDITION_USER_STATUS {
+	/**
+	 * 未知
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_STATUS_UNKNOWN(0, "未知"),
+	/**
+	 * 不存在,未配置过用户信息
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_STATUS_NOPRESENT(1, "不存在,未配置过用户信息"),
+	/**
+	 * 未激活,已经配置过用户信息,但是未使能
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_STATUS_INACTIVATED(2, "未激活,已经配置过用户信息,但是未使能"),
+	/**
+	 * 已激活
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_STATUS_ACTIVATED(3, "已激活");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_GETUSERINFOBYCONDITION_USER_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_GETUSERINFOBYCONDITION_USER_STATUS enumType : EM_GETUSERINFOBYCONDITION_USER_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_GETUSERINFOBYCONDITION_USER_STATUS enumType : EM_GETUSERINFOBYCONDITION_USER_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java
new file mode 100644
index 0000000..76e00bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GETUSERINFOBYCONDITION_USER_TYPE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 码流类型
+ * @date 2023/03/16 09:04:49
+ */
+public enum EM_GETUSERINFOBYCONDITION_USER_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 键盘用户
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_KEYPAD(1, "键盘用户"),
+	/**
+	 * IC卡用户
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_ICCARD(2, "IC卡用户"),
+	/**
+	 * 遥控器用户
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_REMOTECONTROL(3, "遥控器用户"),
+	/**
+	 * 手机用户
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_MOBILE(4, "手机用户"),
+	/**
+	 * key用户
+	 */
+	EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY(5, "key用户");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_GETUSERINFOBYCONDITION_USER_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_GETUSERINFOBYCONDITION_USER_TYPE enumType : EM_GETUSERINFOBYCONDITION_USER_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_GETUSERINFOBYCONDITION_USER_TYPE enumType : EM_GETUSERINFOBYCONDITION_USER_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java
new file mode 100644
index 0000000..ed50dfc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASSES_RULE_TYPE.java
@@ -0,0 +1,86 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 251823
+* @description  眼镜检测规则中报警类型 
+* @date 2022/11/01 19:47:17
+*/
+public enum EM_GLASSES_RULE_TYPE {
+/**
+未知
+*/
+EM_GLASSES_RULE_TYPE_UNKNOWN(-1,"未知"),
+/**
+无眼镜
+*/
+EM_GLASSES_RULE_TYPE_NO_GLASSES(0,"无眼镜"),
+/**
+太阳镜
+*/
+EM_GLASSES_RULE_TYPE_SUN_GLASSES(1,"太阳镜"),
+/**
+黑框眼镜
+*/
+EM_GLASSES_RULE_TYPE_BLACK_RIMMED_GLASSES(2,"黑框眼镜"),
+/**
+半框眼镜
+*/
+EM_GLASSES_RULE_TYPE_HALF_RIMMED_GLASSES(3,"半框眼镜"),
+/**
+无框眼镜
+*/
+EM_GLASSES_RULE_TYPE_RIMLESS_GLASSES(4,"无框眼镜"),
+/**
+普通眼镜
+*/
+EM_GLASSES_RULE_TYPE_NORMAL_GLASSES(5,"普通眼镜"),
+/**
+工业护目镜
+*/
+EM_GLASSES_RULE_TYPE_INDUSTRIAL_SAFETY_GLASSES(6,"工业护目镜");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GLASSES_RULE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GLASSES_RULE_TYPE enumType : EM_GLASSES_RULE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GLASSES_RULE_TYPE enumType : EM_GLASSES_RULE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_GLASSES_RULE_TYPE getEnum(int value) {
+        for (EM_GLASSES_RULE_TYPE e : EM_GLASSES_RULE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GLASSES_RULE_TYPE.EM_GLASSES_RULE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java
new file mode 100644
index 0000000..b1cd13a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLASS_STATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  戴眼镜状态 
+* @date 2022/09/28 10:27:56
+*/
+public enum EM_GLASS_STATE_TYPE {
+/**
+未知
+*/
+EM_GLASS_STATE_TYPE_UNKNOWN(0,"未知"),
+/**
+未戴
+*/
+EM_GLASS_STATE_TYPE_NOT_WEARING(1,"未戴"),
+/**
+戴常规眼镜
+*/
+EM_GLASS_STATE_TYPE_CONVENTIONAL_GLASSES(2,"戴常规眼镜"),
+/**
+戴太阳眼镜
+*/
+EM_GLASS_STATE_TYPE_SUN_GLASSES(3,"戴太阳眼镜"),
+/**
+戴黑框眼镜
+*/
+EM_GLASS_STATE_TYPE_BLACK_GLASSES(4,"戴黑框眼镜");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GLASS_STATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GLASS_STATE_TYPE enumType : EM_GLASS_STATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GLASS_STATE_TYPE enumType : EM_GLASS_STATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_GLASS_STATE_TYPE getEnum(int value) {
+        for (EM_GLASS_STATE_TYPE e : EM_GLASS_STATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GLASS_STATE_TYPE.EM_GLASS_STATE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java
new file mode 100644
index 0000000..c066cdd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GLOBAL_LANES_LINE_TYPE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @description 车道线属性
+ * @author 119178
+ * @date 2021/3/16
+ */
+public enum EM_GLOBAL_LANES_LINE_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_UNKNOWN(0),	
+	/**
+	 * 白实线
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_WHITESOLID(1),
+	/**
+	 * 白虚线
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_WHITEDOTTED(2),
+	/**
+	 * 黄线
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_YELLOW(3),		
+	/**
+	 * 上实下虚
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_UPSOLIDDOWNDOTTED(4),  
+	/**
+	 * 上虚下实
+	 */
+	EM_GLOBAL_LANES_LINE_TYPE_UPDOTTEDDOWNSOLID(5);   
+	
+	private int id ;
+
+	private EM_GLOBAL_LANES_LINE_TYPE(int id) {
+		this.id = id;
+	}
+
+	public int getId() {
+		return id;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java
new file mode 100644
index 0000000..8bcb165
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GRANULARITY_STARTFIND_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 查询要求返回的统计信息粒度
+ * @date 2022/11/03 10:19:57
+ */
+public enum EM_GRANULARITY_STARTFIND_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_GRANULARITY_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 按5分钟(时报表)
+	 */
+	EM_GRANULARITY_TYPE_MINUTE(1, "按5分钟(时报表)"),
+	/**
+	 * 按小时(日报表)
+	 */
+	EM_GRANULARITY_TYPE_HOUR(2, "按小时(日报表)"),
+	/**
+	 * 按天(月报表)
+	 */
+	EM_GRANULARITY_TYPE_DAY(3, "按天(月报表)"),
+	/**
+	 * 按月(年报表)
+	 */
+	EM_GRANULARITY_TYPE_MONTH(4, "按月(年报表)");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_GRANULARITY_STARTFIND_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_GRANULARITY_STARTFIND_TYPE enumType : EM_GRANULARITY_STARTFIND_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_GRANULARITY_STARTFIND_TYPE enumType : EM_GRANULARITY_STARTFIND_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java
new file mode 100644
index 0000000..4d168ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GREENCNHEALTH_STATUS.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 人员健康状态
+* @date 2022/03/08 11:25:17
+*/
+public enum EM_GREENCNHEALTH_STATUS {
+/**
+未知
+*/
+EM_GREENCNHEALTH_STATUS_UNKNOWN(0,"未知"),
+/**
+绿码
+*/
+EM_GREENCNHEALTH_STATUS_GREEN(1,"绿码"),
+/**
+黄码
+*/
+EM_GREENCNHEALTH_STATUS_YELLOW(2,"黄码"),
+/**
+红码
+*/
+EM_GREENCNHEALTH_STATUS_RED(3,"红码"),
+/**
+无效
+*/
+EM_GREENCNHEALTH_STATUS_INVALID(4,"无效");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GREENCNHEALTH_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GREENCNHEALTH_STATUS enumType : EM_GREENCNHEALTH_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GREENCNHEALTH_STATUS enumType : EM_GREENCNHEALTH_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_GREENCNHEALTH_STATUS getEnum(int value) {
+        for (EM_GREENCNHEALTH_STATUS e : EM_GREENCNHEALTH_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GREENCNHEALTH_STATUS.EM_GREENCNHEALTH_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java
new file mode 100644
index 0000000..d324113
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_COLOR_TYPE.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  分组物品颜色 
+* @date 2022/12/01 16:27:09
+*/
+public enum EM_GROUP_COLOR_TYPE {
+/**
+未知
+*/
+EM_GROUP_COLOR_TYPE_UNKNOWN(-1,"未知"),
+/**
+枣红色,rgb(195,33,54)
+*/
+EM_GROUP_COLOR_TYPE_JUJUBE_RED(0,"枣红色,rgb(195,33,54)"),
+/**
+紫色,rgb(255,0,255)
+*/
+EM_GROUP_COLOR_TYPE_PURPLE(1,"紫色,rgb(255,0,255)"),
+/**
+灰色,rgb(192,192,192)
+*/
+EM_GROUP_COLOR_TYPE_GRAY(2,"灰色,rgb(192,192,192)"),
+/**
+高亮黄色,rgb(255,255, 0)
+*/
+EM_GROUP_COLOR_TYPE_HIGHLIGHT_YELLOW(3,"高亮黄色,rgb(255,255, 0)"),
+/**
+青色
+*/
+EM_GROUP_COLOR_TYPE_CYAN(4,"青色"),
+/**
+粉色
+*/
+EM_GROUP_COLOR_TYPE_PINK(5,"粉色"),
+/**
+黑色
+*/
+EM_GROUP_COLOR_TYPE_BLACK(6,"黑色"),
+/**
+棕色
+*/
+EM_GROUP_COLOR_TYPE_BROWN(7,"棕色");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GROUP_COLOR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GROUP_COLOR_TYPE enumType : EM_GROUP_COLOR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GROUP_COLOR_TYPE enumType : EM_GROUP_COLOR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_GROUP_COLOR_TYPE getEnum(int value) {
+        for (EM_GROUP_COLOR_TYPE e : EM_GROUP_COLOR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GROUP_COLOR_TYPE.EM_GROUP_COLOR_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java
new file mode 100644
index 0000000..a378154
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GROUP_GRADE_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  分组安全等级 
+* @date 2022/12/01 16:27:09
+*/
+public enum EM_GROUP_GRADE_TYPE {
+/**
+未知
+*/
+EM_GROUP_GRADE_TYPE_UNKNOWN(-1,"未知"),
+/**
+普通级别
+*/
+EM_GROUP_GRADE_TYPE_NORMAL(0,"普通级别"),
+/**
+警示级别
+*/
+EM_GROUP_GRADE_TYPE_WARN(1,"警示级别"),
+/**
+危险级别
+*/
+EM_GROUP_GRADE_TYPE_DANGER(2,"危险级别");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GROUP_GRADE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GROUP_GRADE_TYPE enumType : EM_GROUP_GRADE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GROUP_GRADE_TYPE enumType : EM_GROUP_GRADE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_GROUP_GRADE_TYPE getEnum(int value) {
+        for (EM_GROUP_GRADE_TYPE e : EM_GROUP_GRADE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GROUP_GRADE_TYPE.EM_GROUP_GRADE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_POS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_POS.java
new file mode 100644
index 0000000..a4a7cbd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_POS.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  箭头相对于数字的位置 
+* @origin autoTool
+* @date 2023/06/27 15:49:59
+*/
+public enum EM_GUIDESCREEN_POS {
+/**
+
+*/
+EM_GUIDESCREEN_POS_UNKNOWN(0,""),
+/**
+左侧
+*/
+EM_GUIDESCREEN_POS_LEFT(1,"左侧"),
+/**
+右侧
+*/
+EM_GUIDESCREEN_POS_RIGHT(2,"右侧");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GUIDESCREEN_POS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GUIDESCREEN_POS enumType : EM_GUIDESCREEN_POS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GUIDESCREEN_POS enumType : EM_GUIDESCREEN_POS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_GUIDESCREEN_POS getEnum(int value) {
+        for (EM_GUIDESCREEN_POS e : EM_GUIDESCREEN_POS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GUIDESCREEN_POS.EM_GUIDESCREEN_POS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_ROLL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_ROLL.java
new file mode 100644
index 0000000..1d98856
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_GUIDESCREEN_ROLL.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  诱导屏内容是否滚动 
+* @origin autoTool
+* @date 2023/06/27 15:49:59
+*/
+public enum EM_GUIDESCREEN_ROLL {
+/**
+
+*/
+EM_GUIDESCREEN_ROLL_UNKNOWN(0,""),
+/**
+不滚动
+*/
+EM_GUIDESCREEN_ROLL_DISABLE(1,"不滚动"),
+/**
+滚动
+*/
+EM_GUIDESCREEN_ROLL_ENABLE(2,"滚动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_GUIDESCREEN_ROLL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_GUIDESCREEN_ROLL enumType : EM_GUIDESCREEN_ROLL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_GUIDESCREEN_ROLL enumType : EM_GUIDESCREEN_ROLL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_GUIDESCREEN_ROLL getEnum(int value) {
+        for (EM_GUIDESCREEN_ROLL e : EM_GUIDESCREEN_ROLL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_GUIDESCREEN_ROLL.EM_GUIDESCREEN_ROLL_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_H264_PROFILE_RANK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_H264_PROFILE_RANK.java
new file mode 100644
index 0000000..e5777bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_H264_PROFILE_RANK.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * H264 编码级别
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 9:04
+ */
+public enum EM_H264_PROFILE_RANK {
+    /**
+     * 提供I/P帧,仅支持 progressive(逐行扫描)和 CAVLC
+     */
+    NET_PROFILE_BASELINE(1, "BASELINE"),
+    /**
+     * 提供I/P/B帧,支持 progressive 和 interlaced,提供 CAVLC 或 CABAC
+     */
+    NET_PROFILE_MAIN(2, "MAIN"),
+    /**
+     * 提供I/P/B/SP/SI帧,仅支持 progressive (逐行扫描)和 CAVLC
+     */
+    NET_PROFILE_EXTENDED(3, "EXTENDED"),
+    /**
+     * 即 FRExt,Main_Profile基础上新增:8x8 intra prediction(8x8 帧内预测), custom
+     * quaint(自定义量化), lossless video coding(无损视频编码), 更多的 yuv 格式
+     */
+    NET_PROFILE_HIGH(4, "HIGH");
+
+    private final int value;
+    private final String note;
+
+    EM_H264_PROFILE_RANK(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_H264_PROFILE_RANK enumType : EM_H264_PROFILE_RANK.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_H264_PROFILE_RANK enumType : EM_H264_PROFILE_RANK.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_H264_PROFILE_RANK getEnum(int value) {
+        for (EM_H264_PROFILE_RANK e : EM_H264_PROFILE_RANK.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_H264_PROFILE_RANK.NET_PROFILE_BASELINE;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAIR_STYLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAIR_STYLE.java
new file mode 100644
index 0000000..de83333
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAIR_STYLE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 头发样式
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_HAIR_STYLE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAIR_UNKNOWN = 0;
+    /**
+     *  长发
+     */
+    public static final int					EM_HAIR_LONG_HAIR = 1;
+    /**
+     *  短发
+     */
+    public static final int					EM_HAIR_SHORT_HAIR = 2;
+    /**
+     *  马尾
+     */
+    public static final int					EM_HAIR_PONYTAIL = 3;
+    /**
+     *  盘发
+     */
+    public static final int					EM_HAIR_UPDO = 4;
+    /**
+     *  头部被遮挡
+     */
+    public static final int					EM_HAIR_HEAD_BLOCKED = 5;
+    /**
+     *  无头发
+     */
+    public static final int					EM_HAIR_NONE = 6;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java
new file mode 100644
index 0000000..b3c735a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BABYCARRIAGE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否推婴儿车
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_BABYCARRIAGE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_BABYCARRIAGE_UNKNOWN = 0;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_BABYCARRIAGE_NO = 1;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_BABYCARRIAGE_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BADGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BADGE.java
new file mode 100644
index 0000000..ff7a420
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BADGE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否佩戴工牌
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_BADGE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_BADGE_UNKNOWN = 0;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_BADGE_NO = 1;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_BADGE_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BAG.java
new file mode 100644
index 0000000..4d76687
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_BAG.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否戴包(包括背包或拎包)
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_BAG extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_BAG_UNKNOWN = 0;
+    /**
+     *  不带包
+     */
+    public static final int					EM_HAS_BAG_NO = 1;
+    /**
+     *  带包
+     */
+    public static final int					EM_HAS_BAG_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_DOWNBODY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_DOWNBODY.java
new file mode 100644
index 0000000..b032284
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_DOWNBODY.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 人体部位是否有下半身
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_DOWNBODY extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_DOWNBODY_UNKNOWN = -1;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_DOWNBODY_NO = 0;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_DOWNBODY_YES = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_GLASS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_GLASS.java
new file mode 100644
index 0000000..f4caaa2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_GLASS.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否带眼镜
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_HAS_GLASS extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_GLASS_UNKNOWN = 0;
+    /**
+     *  未戴
+     */
+    public static final int					EM_HAS_GLASS_NO = 1;
+    /**
+     *  戴普通眼镜
+     */
+    public static final int					EM_HAS_GLASS_NORMAL = 2;
+    /**
+     *  戴太阳眼镜
+     */
+    public static final int					EM_HAS_GLASS_SUN = 3;
+    /**
+     *  戴黑框眼镜
+     */
+    public static final int					EM_HAS_GLASS_BLACK = 4;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HAT.java
new file mode 100644
index 0000000..ffd9052
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否戴帽子
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_HAS_HAT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_HAT_UNKNOWN = 0;
+    /**
+     *  不戴帽子
+     */
+    public static final int					EM_HAS_HAT_NO = 1;
+    /**
+     *  戴帽子
+     */
+    public static final int					EM_HAS_HAT_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HEAD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HEAD.java
new file mode 100644
index 0000000..958c81f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HEAD.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 人体部位是否有头
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_HEAD extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_HEAD_UNKNOWN = -1;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_HEAD_NO = 0;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_HEAD_YES = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HOLD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HOLD.java
new file mode 100644
index 0000000..a996e87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_HOLD.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/24 15:05
+ */
+public enum  EM_HAS_HOLD {
+    EM_HAS_HOLD_UNKNOWN,							// 未知
+    EM_HAS_HOLD_NO,									// 无东西
+    EM_HAS_HOLD_YES,								// 有东西
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_RAINCOAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_RAINCOAT.java
new file mode 100644
index 0000000..2d3a20e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_RAINCOAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否有雨披
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_RAINCOAT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_RAINCOAT_UNKNOWN = 0;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_RAINCOAT_NO = 1;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_RAINCOAT_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_UMBRELLA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_UMBRELLA.java
new file mode 100644
index 0000000..9fee2cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_UMBRELLA.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否打伞
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_UMBRELLA extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_UMBRELLA_UNKNOWN = 0;
+    /**
+     *  未打伞
+     */
+    public static final int					EM_HAS_UMBRELLA_NO = 1;
+    /**
+     *  打伞
+     */
+    public static final int					EM_HAS_UMBRELLA_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_VEST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_VEST.java
new file mode 100644
index 0000000..6286474
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAS_VEST.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否有反光背心
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HAS_VEST extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HAS_VEST_UNKNOWN = 0;
+    /**
+     *  无
+     */
+    public static final int					EM_HAS_VEST_NO = 1;
+    /**
+     *  有
+     */
+    public static final int					EM_HAS_VEST_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAT_STYLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAT_STYLE.java
new file mode 100644
index 0000000..b7aa178
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HAT_STYLE.java
@@ -0,0 +1,12 @@
+package com.netsdk.lib.enumeration;
+// 帽子款式
+public enum EM_HAT_STYLE {
+    EM_HAT_UNKNOWN,									// 未知
+    EM_HAT_ORDINARY,								// 普通帽子
+    EM_HAT_HELMET,									// 头盔
+    EM_HAT_SAFETYHAT,								// 安全帽
+    EM_HAT_EAVELESS,								// 无檐帽
+    EM_HAT_PEAKEDCAP,								// 鸭舌帽
+    EM_HAT_FISHERMANHAT,							// 渔夫帽
+    EM_HAT_NONE,									// 未戴帽
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java
new file mode 100644
index 0000000..b032d99
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEALTH_CODE_STATUS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 健康码状态
+ */
+public enum EM_HEALTH_CODE_STATUS {
+    /**
+     * 未知
+     */
+    EM_HEALTH_CODE_STATUS_UNKNOWN0,
+    /**
+     * 红码
+     */
+    EM_HEALTH_CODE_STATUS_RED,
+    /**
+     * 绿码
+     */
+    EM_HEALTH_CODE_STATUS_GREEN,
+    /**
+     * 黄码
+     */
+    EM_HEALTH_CODE_STATUS_YELLOW,
+    /**
+     * 无效
+     */
+    EM_HEALTH_CODE_STATUS_INVALID,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEATMAP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEATMAP_TYPE.java
new file mode 100644
index 0000000..8f42b40
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HEATMAP_TYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 热度图类型
+ * @date 2020/9/21
+ */
+public enum EM_HEATMAP_TYPE {
+    /**
+     * 未知
+     */
+    EM_HEATMAP_UNKNOWN(0,"未知"),
+    /**
+     * 平均滞留时间热度图
+     */
+    EM_HEATMAP_AVERAGESTAYTIME(1,"平均滞留时间热度图"),
+    /**
+     * 人数统计热度图
+     */
+    EM_HEATMAP_HUMANSTATISTICS(2,"人数统计热度图"),
+    /**
+     * 行人轨迹图
+     */
+    EM_HEATMAP_HUMANTRACK(3,"行人轨迹图");
+    /**
+     * 类型
+     */
+    private int type;
+    /**
+     * 解释
+     */
+    private String desc;
+    private EM_HEATMAP_TYPE(int type,String desc){
+        this.type=type;
+        this.desc=desc;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public static EM_HEATMAP_TYPE getEmHeatMap(int type) {
+        for (EM_HEATMAP_TYPE heatmap : EM_HEATMAP_TYPE.values()) {
+            if (heatmap.getType() == type) {
+                return heatmap;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java
new file mode 100644
index 0000000..60a308e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HELMET_EVENT_TYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 触发事件的类型
+ * @since : Created in 2022/03/08 15:25
+ */
+
+public enum EM_HELMET_EVENT_TYPE {
+    /**
+     * 未知
+     */
+    EM_UNKNOWN_TYPE(0, "未知"),
+    /**
+     * 未佩戴安全帽
+     */
+    EM_NOT_WEAR_HELMET(1, "未佩戴安全帽");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_HELMET_EVENT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_HELMET_EVENT_TYPE enumType : EM_HELMET_EVENT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_HELMET_EVENT_TYPE enumType : EM_HELMET_EVENT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_HELMET_EVENT_TYPE getEnum(int value) {
+        for (EM_HELMET_EVENT_TYPE e : EM_HELMET_EVENT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_HELMET_EVENT_TYPE.EM_UNKNOWN_TYPE;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java
new file mode 100644
index 0000000..371c10a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_ANIMAL_ALARM_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 人和动物检测事件报警类型
+ * @date 2022/12/19 11:22:21
+ */
+public enum EM_HUMAN_ANIMAL_ALARM_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_HUMAN_ANIMAL_ALARM_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 从人数正常到人数异常
+	 */
+	EM_HUMAN_ANIMAL_ALARM_TYPE_NORMAL_TO_ABNORMAL(1, "从人数正常到人数异常"),
+	/**
+	 * 从人数异常到人数正常
+	 */
+	EM_HUMAN_ANIMAL_ALARM_TYPE_ABNORMAL_TO_NORMAL(2, "从人数异常到人数正常");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_HUMAN_ANIMAL_ALARM_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_HUMAN_ANIMAL_ALARM_TYPE enumType : EM_HUMAN_ANIMAL_ALARM_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_HUMAN_ANIMAL_ALARM_TYPE enumType : EM_HUMAN_ANIMAL_ALARM_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_HUMAN_ANIMAL_ALARM_TYPE getEnum(int value) {
+		for (EM_HUMAN_ANIMAL_ALARM_TYPE e : EM_HUMAN_ANIMAL_ALARM_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_HUMAN_ANIMAL_ALARM_TYPE.EM_HUMAN_ANIMAL_ALARM_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java
new file mode 100644
index 0000000..8a4eb26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_HUMAN_POSTURE_TYPE.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 关联的人体消息类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_HUMAN_POSTURE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_HUMAN_POSTURE_UNKNOWN = 0;
+    /**
+     *  与最优人脸同画面的人体
+     */
+    public static final int					EM_HUMAN_POSTURE_ALONG_WITH_FACE = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java
new file mode 100644
index 0000000..6d84bfb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IDCARD_MSG_TYPE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 证件消息类型
+ */
+public enum EM_IDCARD_MSG_TYPE {
+    /**
+     * 未知
+     */
+    EM_IDCARD_MSG_TYP_UNKNOWN,
+    /**
+     * 证件查询信息
+     */
+    EM_IDCARD_MSG_TYP_QUERY,
+    /**
+     * 证件权限下发
+     */
+    EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java
new file mode 100644
index 0000000..309e707
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_LIGHT_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 图像成像光源类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_IMAGE_LIGHT_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_IMAGE_LIGHT_TYPE_UNKNOWN = 0;
+    /**
+     *  可见光成像
+     */
+    public static final int					EM_IMAGE_LIGHT_TYPE_VISIBLE = 1;
+    /**
+     *  近红外成像(灰度图)
+     */
+    public static final int					EM_IMAGE_LIGHT_TYPE_NEAR_INFRARED = 2;
+    /**
+     *  热红外成像(伪彩色)
+     */
+    public static final int					EM_IMAGE_LIGHT_TYPE_THERMAL_INFRARED = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE.java
new file mode 100644
index 0000000..d8c455a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 图片类型
+ */
+public enum EM_IMAGE_TYPE {
+
+	// 未知
+	EM_IMAGE_UNKNOWN(-1, "未知"),
+
+	// 安检员图片
+	EM_IMAGE_INSPECTOR(0, "安检员图片"),
+
+	// 包裹图片
+	EM_IMAGE_PACKAGE(1, "包裹图片");
+
+	private int value;
+	private String note;
+
+	private EM_IMAGE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_IMAGE_TYPE enumType : EM_IMAGE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_IMAGE_TYPE enumType : EM_IMAGE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java
new file mode 100644
index 0000000..a0f8875
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IMAGE_TYPE_EX2.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 图片类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_IMAGE_TYPE_EX2 extends NetSDKLib.SdkStructure {
+
+	/**
+	 *  未知
+	 */
+	public static final int					EM_IMAGE_TYPE_UNKNOWN = 0;
+	/**
+	 *  全景广角度
+	 */
+	public static final int					EM_IMAGE_TYPE_SCENE_IMAGE = 1;
+	/**
+	 *  大图
+	 */
+	public static final int					EM_IMAGE_TYPE_GLOBAL_SCENE = 2;
+	/**
+	 *  大图(全景图)的缩略图
+	 */
+	public static final int					EM_IMAGE_TYPE_THUM_IMAGE = 3;
+	/**
+	 *  人脸全景图
+	 */
+	public static final int					EM_IMAGE_TYPE_FACE_SCENE_IMAGE = 4;
+	/**
+	 *  人脸图
+	 */
+	public static final int					EM_IMAGE_TYPE_FACE_IMAGE = 5;
+	/**
+	 *  人体图
+	 */
+	public static final int					EM_IMAGE_TYPE_HUMAN_IMAGE = 6;
+	/**
+	 *  与最优人脸同画面的人体图
+	 */
+	public static final int					EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_IMAGE = 7;
+	/**
+	 *  与最优人脸同画面人体的全景图
+	 */
+	public static final int					EM_IMAGE_TYPE_ALONG_WITH_FACE_HUMAN_SCENE_IMAGE = 8;
+	/**
+	 *  车位抠图
+	 */
+	public static final int					EM_IMAGE_TYPE_PARKING_IMAGE = 9;
+	/**
+	 *  车身特写抠图
+	 */
+	public static final int					EM_IMAGE_TYPE_BINARIZED_PLATE = 10;
+	/**
+	 *  格口抠图
+	 */
+	public static final int					EM_IMAGE_TYPE_DEPOSIT_IMAGE_INFO = 11;
+	/**
+	 *  普通图,图片名称未定义情况使用
+	 */
+	public static final int					EM_IMAGE_TYPE_IMAGE_INFO = 12;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java
new file mode 100644
index 0000000..d4d3066
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_FUNC_MODE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 红外功能模式
+ */
+public enum EM_INFRARED_FUNC_MODE {
+
+    EM_INFRARED_FUNC_MODE_UNKNOWN(0, "未知"),
+    EM_INFRARED_FUNC_MODE_ON(1, "开启"),
+    EM_INFRARED_FUNC_MODE_OFF(2, "关闭"),
+    EM_INFRARED_FUNC_MODE_AUTO(3, "自动");
+
+    private final int value;
+    private final String note;
+
+    EM_INFRARED_FUNC_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_INFRARED_FUNC_MODE enumType : EM_INFRARED_FUNC_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_INFRARED_FUNC_MODE enumType : EM_INFRARED_FUNC_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_INFRARED_FUNC_MODE getEnum(int value) {
+        for (EM_INFRARED_FUNC_MODE e : EM_INFRARED_FUNC_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_INFRARED_FUNC_MODE.EM_INFRARED_FUNC_MODE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java
new file mode 100644
index 0000000..83df5fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INFRARED_LIGHT_LEVEL.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 红外亮度
+ */
+public enum EM_INFRARED_LIGHT_LEVEL {
+
+    EM_INFRARED_LIGHT_LEVEL_UNKNOWN(0, "未知"),
+    EM_INFRARED_LIGHT_LEVEL_HIGH(1, "高"),
+    EM_INFRARED_LIGHT_LEVEL_MEDIUM(2, "中"),
+    EM_INFRARED_LIGHT_LEVEL_LOW(3, "低");
+
+    private final int value;
+    private final String note;
+
+    EM_INFRARED_LIGHT_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_INFRARED_LIGHT_LEVEL enumType : EM_INFRARED_LIGHT_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_INFRARED_LIGHT_LEVEL enumType : EM_INFRARED_LIGHT_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_INFRARED_LIGHT_LEVEL getEnum(int value) {
+        for (EM_INFRARED_LIGHT_LEVEL e : EM_INFRARED_LIGHT_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_INFRARED_LIGHT_LEVEL.EM_INFRARED_LIGHT_LEVEL_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java
new file mode 100644
index 0000000..7459e6a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSIDE_OBJECT_TYPE.java
@@ -0,0 +1,323 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  物品类型 
+* @origin autoTool
+* @date 2023/07/14 14:46:33
+*/
+public enum EM_INSIDE_OBJECT_TYPE {
+/**
+算法未识别物品
+*/
+EM_INSIDE_OBJECT_UNKNOWN(0,"算法未识别物品"),
+/**
+刀具
+*/
+EM_INSIDE_OBJECT_KNIFE(1,"刀具"),
+/**
+瓶装液体
+*/
+EM_INSIDE_OBJECT_BOTTLELIQUID(2,"瓶装液体"),
+/**
+枪支
+*/
+EM_INSIDE_OBJECT_GUN(3,"枪支"),
+/**
+雨伞
+*/
+EM_INSIDE_OBJECT_UMBRELLA(4,"雨伞"),
+/**
+手机
+*/
+EM_INSIDE_OBJECT_PHONE(5,"手机"),
+/**
+笔记本
+*/
+EM_INSIDE_OBJECT_NOTEBOOK(6,"笔记本"),
+/**
+充电宝
+*/
+EM_INSIDE_OBJECT_POWERBANK(7,"充电宝"),
+/**
+鞋子
+*/
+EM_INSIDE_OBJECT_SHOES(8,"鞋子"),
+/**
+杠子
+*/
+EM_INSIDE_OBJECT_ROD(9,"杠子"),
+/**
+金属
+*/
+EM_INSIDE_OBJECT_METAL(10,"金属"),
+/**
+爆炸物
+*/
+EM_INSIDE_OBJECT_EXPLOSIVE(11,"爆炸物"),
+/**
+喷雾喷灌
+*/
+EM_INSIDE_OBJECT_CONTAINERSPRAY(12,"喷雾喷灌"),
+/**
+烟花爆竹
+*/
+EM_INSIDE_OBJECT_EXPLOSIVE_FIREWORKS(13,"烟花爆竹"),
+/**
+打火机
+*/
+EM_INSIDE_OBJECT_LIGHTER(14,"打火机"),
+/**
+警棍
+*/
+EM_INSIDE_OBJECT_STICK(15,"警棍"),
+/**
+指虎
+*/
+EM_INSIDE_OBJECT_BRASSKNUCKLE(16,"指虎"),
+/**
+手铐
+*/
+EM_INSIDE_OBJECT_HANDCUFFS(17,"手铐"),
+/**
+象牙
+*/
+EM_INSIDE_OBJECT_IVORY(18,"象牙"),
+/**
+书籍
+*/
+EM_INSIDE_OBJECT_BOOK(19,"书籍"),
+/**
+光盘
+*/
+EM_INSIDE_OBJECT_CD(20,"光盘"),
+/**
+锤子
+*/
+EM_INSIDE_OBJECT_HAMMERS(21,"锤子"),
+/**
+钳子
+*/
+EM_INSIDE_OBJECT_PLIERS(22,"钳子"),
+/**
+斧头
+*/
+EM_INSIDE_OBJECT_AXE(23,"斧头"),
+/**
+螺丝刀
+*/
+EM_INSIDE_OBJECT_SCREW_DRIVER(24,"螺丝刀"),
+/**
+扳手
+*/
+EM_INSIDE_OBJECT_WRENCH(25,"扳手"),
+/**
+电击棍
+*/
+EM_INSIDE_OBJECT_ELECTRIC_SHOCK_STICK(26,"电击棍"),
+/**
+保温杯
+*/
+EM_INSIDE_OBJECT_THERMOS(27,"保温杯"),
+/**
+玻璃杯
+*/
+EM_INSIDE_OBJECT_GLASS_BOTTLES(28,"玻璃杯"),
+/**
+塑料瓶
+*/
+EM_INSIDE_OBJECT_PLASTIC_BOTTLE(29,"塑料瓶"),
+/**
+打火机油
+*/
+EM_INSIDE_OBJECT_IGNITION_OIL(30,"打火机油"),
+/**
+指甲油
+*/
+EM_INSIDE_OBJECT_NAIL_POLISH(31,"指甲油"),
+/**
+工具
+*/
+EM_INSIDE_OBJECT_BLUNT_INSTRUMENT(32,"工具"),
+/**
+剪刀
+*/
+EM_INSIDE_OBJECT_SCISSORS(33,"剪刀"),
+/**
+电子产品
+*/
+EM_INSIDE_OBJECT_ELECTRONIC(34,"电子产品"),
+/**
+手枪
+*/
+EM_INSIDE_OBJECT_PISTOL(35,"手枪"),
+/**
+折叠刀
+*/
+EM_INSIDE_OBJECT_FOLDINGKNIFE(36,"折叠刀"),
+/**
+尖刀
+*/
+EM_INSIDE_OBJECT_SHARPKNIFE(37,"尖刀"),
+/**
+菜刀
+*/
+EM_INSIDE_OBJECT_KITCHENKNIFE(38,"菜刀"),
+/**
+美工刀
+*/
+EM_INSIDE_OBJECT_UTILITYKNIFE(39,"美工刀"),
+/**
+烟花
+*/
+EM_INSIDE_OBJECT_FIREWORKS(40,"烟花"),
+/**
+爆竹
+*/
+EM_INSIDE_OBJECT_FIRECRACKER(41,"爆竹"),
+/**
+粉末
+*/
+EM_INSIDE_OBJECT_POWDER(42,"粉末"),
+/**
+难穿透物品
+*/
+EM_INSIDE_OBJECT_IMPENETERABLE_MATERALS(43,"难穿透物品"),
+/**
+香烟
+*/
+EM_INSIDE_OBJECT_CIGARETTE(44,"香烟"),
+/**
+电池
+*/
+EM_INSIDE_OBJECT_BATTERY(45,"电池"),
+/**
+零部件
+*/
+EM_INSIDE_OBJECT_GUNPARTS(46,"零部件"),
+/**
+火柴
+*/
+EM_INSIDE_OBJECT_MATCH(47,"火柴"),
+/**
+握把
+*/
+EM_INSIDE_OBJECT_GUNGRIP(48,"握把"),
+/**
+弹夹
+*/
+EM_INSIDE_OBJECT_GUNMAGAZINE(49,"弹夹"),
+/**
+套筒
+*/
+EM_INSIDE_OBJECT_GUNSLEEVE(50,"套筒"),
+/**
+枪管
+*/
+EM_INSIDE_OBJECT_GUNBARREL(51,"枪管"),
+/**
+子弹
+*/
+EM_INSIDE_OBJECT_BULLET(52,"子弹"),
+/**
+手雷
+*/
+EM_INSIDE_OBJECT_GRENADE(53,"手雷"),
+/**
+陶瓷片
+*/
+EM_INSIDE_OBJECT_CERAMICSHEET(54,"陶瓷片"),
+/**
+玻璃片
+*/
+EM_INSIDE_OBJECT_GLASSSHEET(55,"玻璃片"),
+/**
+IPAD底壳
+*/
+EM_INSIDE_OBJECT_IPADBASE(56,"IPAD底壳"),
+/**
+弹弓
+*/
+EM_INSIDE_OBJECT_SLINGSHOT(57,"弹弓"),
+/**
+毒品
+*/
+EM_INSIDE_OBJECT_DRUG(58,"毒品"),
+/**
+炸药包
+*/
+EM_INSIDE_OBJECT_EXPLOSIVEPACKAGE(59,"炸药包"),
+/**
+纽扣电池
+*/
+EM_INSIDE_OBJECT_CELLBATTERY(60,"纽扣电池"),
+/**
+铅蓄电池
+*/
+EM_INSIDE_OBJECT_LEADBATTERY(61,"铅蓄电池"),
+/**
+金属打火机
+*/
+EM_INSIDE_OBJECT_METALLIGHTER(62,"金属打火机"),
+/**
+化妆瓶
+*/
+EM_INSIDE_OBJECT_COSMETICBOTTLE(63,"化妆瓶"),
+/**
+易拉罐
+*/
+EM_INSIDE_OBJECT_CONTAINERCAN(64,"易拉罐"),
+/**
+气罐
+*/
+EM_INSIDE_OBJECT_AIRBOTTLE(65,"气罐"),
+/**
+方刀
+*/
+EM_INSIDE_OBJECT_SQUAREKNIFE(66,"方刀");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_INSIDE_OBJECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_INSIDE_OBJECT_TYPE enumType : EM_INSIDE_OBJECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_INSIDE_OBJECT_TYPE enumType : EM_INSIDE_OBJECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_INSIDE_OBJECT_TYPE getEnum(int value) {
+        for (EM_INSIDE_OBJECT_TYPE e : EM_INSIDE_OBJECT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_INSIDE_OBJECT_TYPE.EM_INSIDE_OBJECT_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java
new file mode 100644
index 0000000..44d60a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSTRUMENT_TYPE.java
@@ -0,0 +1,98 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  仪表类型 
+* @date 2022/06/28 19:24:08
+*/
+public enum EM_INSTRUMENT_TYPE {
+/**
+未知
+*/
+EM_INSTRUMENT_TYPE_UNKNOWN(0,"未知"),
+/**
+状态识别类型
+*/
+EM_INSTRUMENT_TYPE_STATE(1,"状态识别类型"),
+/**
+状态匹配类型
+*/
+EM_INSTRUMENT_TYPE_STATEMATCH(2,"状态匹配类型"),
+/**
+指针式表计类型
+*/
+EM_INSTRUMENT_TYPE_METER(3,"指针式表计类型"),
+/**
+数字识别类型
+*/
+EM_INSTRUMENT_TYPE_CHAR(4,"数字识别类型"),
+/**
+油表类型
+*/
+EM_INSTRUMENT_TYPE_OIL(5,"油表类型"),
+/**
+开关标识
+*/
+EM_INSTRUMENT_TYPE_SWIIDEN(6,"开关标识"),
+/**
+指示灯类型
+*/
+EM_INSTRUMENT_TYPE_LIGHT(7,"指示灯类型"),
+/**
+室内开关类型
+*/
+EM_INSTRUMENT_TYPE_SWITCH(8,"室内开关类型"),
+/**
+外观检测类型
+*/
+EM_INSTRUMENT_TYPE_APPEARANCE(9,"外观检测类型"),
+/**
+液位计
+*/
+EM_INSTRUMENT_TYPE_LEVELGAUGE(10,"液位计");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_INSTRUMENT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_INSTRUMENT_TYPE enumType : EM_INSTRUMENT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_INSTRUMENT_TYPE enumType : EM_INSTRUMENT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_INSTRUMENT_TYPE getEnum(int value) {
+        for (EM_INSTRUMENT_TYPE e : EM_INSTRUMENT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_INSTRUMENT_TYPE.EM_INSTRUMENT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSULATOR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSULATOR_STATE.java
new file mode 100644
index 0000000..a42b838
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INSULATOR_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  绝缘子状态 
+* @date 2022/06/28 19:44:56
+*/
+public enum EM_INSULATOR_STATE {
+/**
+未知
+*/
+EM_INSULATOR_STATE_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_INSULATOR_STATE_NORMAL(1,"正常"),
+/**
+破裂
+*/
+EM_INSULATOR_STATE_BROKEN(2,"破裂");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_INSULATOR_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_INSULATOR_STATE enumType : EM_INSULATOR_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_INSULATOR_STATE enumType : EM_INSULATOR_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_INSULATOR_STATE getEnum(int value) {
+        for (EM_INSULATOR_STATE e : EM_INSULATOR_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_INSULATOR_STATE.EM_INSULATOR_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INTENSITY_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INTENSITY_MODE.java
new file mode 100644
index 0000000..c73869b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_INTENSITY_MODE.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  SSA对比度调节模式,当背光模式为SSA时有效 
+* @origin autoTool
+* @date 2023/11/30 16:22:27
+*/
+public enum EM_INTENSITY_MODE {
+	/**
+     * 未知模式
+     */
+	EM_INTENSITY_UNKNOW(0,"未知模式"),
+	/**
+     * 关闭
+     */
+	EM_INTENSITY_DISABLE(1,"关闭"),
+	/**
+     * 自动
+     */
+	EM_INTENSITY_AUTO(2,"自动"),
+	/**
+     * 手动
+     */
+	EM_INTENSITY_MANUAL(3,"手动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_INTENSITY_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_INTENSITY_MODE enumType : EM_INTENSITY_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_INTENSITY_MODE enumType : EM_INTENSITY_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_INTENSITY_MODE getEnum(int value) {
+        for (EM_INTENSITY_MODE e : EM_INTENSITY_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_INTENSITY_MODE.EM_INTENSITY_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IPC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IPC_TYPE.java
new file mode 100644
index 0000000..e7effac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IPC_TYPE.java
@@ -0,0 +1,122 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * IPC类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/23 9:46
+ */
+public enum EM_IPC_TYPE {
+
+    NET_IPC_PRIVATE(0, "私有"),
+    NET_IPC_AEBELL(1, "AEBELL"),
+    NET_IPC_PANASONIC(2, "PANASONIC"),
+    NET_IPC_SONY(3, "SONY"),
+    NET_IPC_DYNACOLOR(4, "Dynacolor"),
+    NET_IPC_TCWS(5, "TCWS"),
+    NET_IPC_SAMSUNG(6, "SAMSUNG"),
+    NET_IPC_YOKO(7, "YOKO"),
+    NET_IPC_AXIS(8, "AXIS"),
+    NET_IPC_SANYO(9, "SANYO"),
+    NET_IPC_BOSH(10, "Bosch"),
+    NET_IPC_PECLO(11, "Peclo"),
+    NET_IPC_PROVIDEO(12, "Provideo"),
+    NET_IPC_ACTI(13, "ACTi"),
+    NET_IPC_VIVOTEK(14, "Vivotek"),
+    NET_IPC_ARECONT(15, "Arecont"),
+    NET_IPC_PRIVATEEH(16, "PrivateEH"),
+    NET_IPC_IMATEK(17, "IMatek"),
+    NET_IPC_SHANY(18, "Shany"),
+    NET_IPC_VIDEOTREC(19, "VIDEOTREC"),
+    NET_IPC_URA(20, "Ura"),
+    NET_IPC_BITICINO(21, "Bticino"),
+    NET_IPC_ONVIF(22, "Onvif协议类型"),
+    NET_IPC_SHEPHERD(23, "SHEPHERD"),
+    NET_IPC_YAAN(24, "YAAN"),
+    NET_IPC_AIRPOINT(25, "Airpop"),
+    NET_IPC_TYCO(26, "TYCO"),
+    NET_IPC_XUNMEI(27, "XUNMEI"),
+    NET_IPC_HIKVISION(28, ""),
+    NET_IPC_LG(29, "LG"),
+    NET_IPC_AOQIMAN(30, "AOQIMAN"),
+    NET_IPC_BAOKANG(31, "BAOKANG"),
+    NET_IPC_WATCHNET(32, "Watchnet"),
+    NET_IPC_XVISION(33, "Xvision"),
+    NET_IPC_FUSITSU(34, "FUSITSU"),
+    NET_IPC_CANON(35, "Canon"),
+    NET_IPC_GE(36, "GE"),
+    NET_IPC_Basler(37, "Basler"),
+    NET_IPC_Patro(38, "Patro"),
+    NET_IPC_CPKNC(39, "CPPLUS K系列"),
+    NET_IPC_CPRNC(40, "CPPLUS R系列"),
+    NET_IPC_CPUNC(41, "CPPLUS U系列"),
+    NET_IPC_CPPLUS(42, "CPPLUS IPC"),
+    NET_IPC_XunmeiS(43, "XunmeiS,实际协议为Onvif"),
+    NET_IPC_GDDW(44, "GDDW"),
+    NET_IPC_PSIA(45, "PSIA"),
+    NET_IPC_GB2818(46, "GB2818"),
+    NET_IPC_GDYX(47, "GDYX"),
+    NET_IPC_OTHER(48, "由用户自定义"),
+    NET_IPC_CPUNR(49, "CPPLUS NVR"),
+    NET_IPC_CPUAR(50, "CPPLUS DVR"),
+    NET_IPC_AIRLIVE(51, "Airlive"),
+    NET_IPC_NPE(52, "NPE"),
+    NET_IPC_AXVIEW(53, "AXVIEW"),
+    NET_IPC_DFWL(54, "DFWL"),
+    NET_IPC_HYUNDAI(56, "HYUNDAI DVR"),
+    NET_IPC_APHD(57, "APHD"),
+    NET_IPC_WELLTRANS(58, "WELLTRANS"),
+    NET_IPC_CDJF(59, "CDJF"),
+    NET_IPC_JVC(60, "JVC"),
+    NET_IPC_INFINOVA(61, "INFINOVA"),
+    NET_IPC_ADT(62, "ADT"),
+    NET_IPC_SIVIDI(63, "SIVIDI"),
+    NET_IPC_CPUNP(64, "CPPLUS 球机"),
+    NET_IPC_HX(65, "HX"),
+    NET_IPC_TJGS(66, "TJGS"),
+    NET_IPC_MULTICAST(79, "组播"),
+    NET_IPC_RVI(84, "RVi"),
+    NET_IPC_HONEYWELL(95, "Honeywell");
+
+    private final int value;
+    private final String note;
+
+    private EM_IPC_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_IPC_TYPE enumType : EM_IPC_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_IPC_TYPE enumType : EM_IPC_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_IPC_TYPE getEnum(int value) {
+        for (EM_IPC_TYPE e : EM_IPC_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_IPC_TYPE.NET_IPC_PRIVATE;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_CURRENT_VK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_CURRENT_VK.java
new file mode 100644
index 0000000..2276528
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_CURRENT_VK.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 是否当前vk
+ * @date 2022/11/03 09:43:17
+ */
+public enum EM_IS_CURRENT_VK {
+	/**
+	 * 未知
+	 */
+	EM_IS_CURRENT_VK_UNKNOWN(0, "未知"),
+	/**
+	 * 当前
+	 */
+	EM_IS_CURRENT_VK_CURRENT(1, "当前"),
+	/**
+	 * 之前
+	 */
+	EM_IS_CURRENT_VK_PRE(2, "之前");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_IS_CURRENT_VK(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_IS_CURRENT_VK enumType : EM_IS_CURRENT_VK.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_IS_CURRENT_VK enumType : EM_IS_CURRENT_VK.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ENCRYPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ENCRYPT.java
new file mode 100644
index 0000000..d9279ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ENCRYPT.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 是否加密
+ * @date 2022/11/03 09:43:17
+ */
+public enum EM_IS_ENCRYPT {
+	/**
+	 * 未知
+	 */
+	EM_IS_ENCRYPT_UNKNOWN(0, "未知"),
+	/**
+	 * 已加密
+	 */
+	EM_IS_ENCRYPT_YES(1, "已加密"),
+	/**
+	 * 未加密
+	 */
+	EM_IS_ENCRYPT_NO(2, "未加密");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_IS_ENCRYPT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_IS_ENCRYPT enumType : EM_IS_ENCRYPT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_IS_ENCRYPT enumType : EM_IS_ENCRYPT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ERRORDETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ERRORDETECT.java
new file mode 100644
index 0000000..679c7ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_ERRORDETECT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否虚检
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_IS_ERRORDETECT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_IS_ERRORDETECT_UNKNOWN = -1;
+    /**
+     *  无
+     */
+    public static final int					EM_IS_ERRORDETECT_NO = 0;
+    /**
+     *  有
+     */
+    public static final int					EM_IS_ERRORDETECT_YES = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_RECORD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_RECORD.java
new file mode 100644
index 0000000..7d0e30c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_IS_RECORD.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 录像使能
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 15:57
+ */
+public enum EM_IS_RECORD {
+    /**
+     * 未知
+     */
+    EM_IS_RECORD_UNKNOWN(0, "未知"),
+    /**
+     * 录像
+     */
+    EM_IS_RECORD_ON(1, "录像"),
+    /**
+     * 不录像
+     */
+    EM_IS_RECORD_OFF(2, "不录像");
+
+    private int value;
+    private String note;
+
+    EM_IS_RECORD(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_IS_RECORD enumType : EM_IS_RECORD.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_IS_RECORD enumType : EM_IS_RECORD.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_IS_RECORD getEnum(int value) {
+        for (EM_IS_RECORD e : EM_IS_RECORD.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_IS_RECORD.EM_IS_RECORD_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_COLOR.java
new file mode 100644
index 0000000..62ba7d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_COLOR.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯组灯色
+ * @date 2021/09/01
+ */
+public enum EM_LAMP_COLOR {
+	// 未知
+	EM_LAMP_COLOR_UNKOWN(-1, "未知"),
+	// 无灯
+	EM_LAMP_COLOR_NO(0, "无灯"),
+	// 灭灯
+	EM_LAMP_COLOR_LIGHT_OFF(1, "灭灯"),
+	// 亮灯
+	EM_LAMP_COLOR_LIGHT_ON(2, "亮灯"),
+	// 闪烁
+	EM_LAMP_COLOR_LIGHT_FLASH(3, "闪烁");
+
+	private int value;
+	private String note;
+
+	private EM_LAMP_COLOR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LAMP_COLOR enumType : EM_LAMP_COLOR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LAMP_COLOR enumType : EM_LAMP_COLOR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_TYPE.java
new file mode 100644
index 0000000..fd3aa21
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LAMP_TYPE.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯组类型
+ * @date 2021/09/01
+ */
+public enum EM_LAMP_TYPE {
+	// 未知
+	EM_LAMP_TYPE_UNKNOWN(0, "未知"),
+	// 直行方向指示信号灯
+	EM_LAMP_TYPE_STRAIGHT(1, "直行方向指示信号灯"),
+	// 左转方向指示信号灯
+	EM_LAMP_TYPE_LEFT(2, "左转方向指示信号灯"),
+	// 右转方向指示信号灯
+	EM_LAMP_TYPE_RIGHT(3, "右转方向指示信号灯"),
+	// 机动车信号灯
+	EM_LAMP_TYPE_MOTORVEHICLE(4, "机动车信号灯"),
+	// 左转非机动车信号灯
+	EM_LAMP_TYPE_LEFT_NOMOTOR(5, "左转非机动车信号灯"),
+	// 右转非机动车信号灯
+	EM_LAMP_TYPE_RIGHT_NOMOTOR(6, "右转非机动车信号灯"),
+	// 非机动车信号灯
+	EM_LAMP_TYPE_NOMOTOR(7, "非机动车信号灯"),
+	// 人行横道信号灯
+	EM_LAMP_TYPE_SIDEWALK(8, "人行横道信号灯"),
+	// 掉头信号灯
+	EM_LAMP_TYPE_TURNAROUND(9, "掉头信号灯"),
+	// 车道信号灯
+	EM_LAMP_TYPE_LANE(10, "车道信号灯"),
+	// 道口信号灯
+	EM_LAMP_TYPE_CROSSING(11, "道口信号灯"),
+	// 闪光警告信号灯
+	EM_LAMP_TYPE_FLASH_WARN(12, "闪光警告信号灯"),
+	// 有轨电车专用信号灯(直行)
+	EM_LAMP_TYPE_TRAM_DEDICATED_STRAIGHT(13, "有轨电车专用信号灯(直行)"),
+	// 有轨电车专用信号灯(左转)
+	EM_LAMP_TYPE_TRAM_DEDICATED_LEFT(14, "有轨电车专用信号灯(左转)"),
+	// 有轨电车专用信号灯(右转)
+	EM_LAMP_TYPE_TRAM_DEDICATED_RIGHT(15, "有轨电车专用信号灯(右转)");
+
+	private int value;
+	private String note;
+
+	private EM_LAMP_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LAMP_TYPE enumType : EM_LAMP_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LAMP_TYPE enumType : EM_LAMP_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LANE_RUNING_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LANE_RUNING_STATE.java
new file mode 100644
index 0000000..72bcda3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LANE_RUNING_STATE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 车道交通运行状态
+ * @date 2021/09/01
+ */
+public enum EM_LANE_RUNING_STATE {
+	// 未知
+	EM_LANE_RUNING_UNKNOWN(0, "未知"),
+	// 畅通
+	EM_LANE_RUNING_UNBLOCKED(1, "畅通"),
+	// 基本畅通
+	EM_LANE_RUNING_BASIC_UNBLOCKED(2, "基本畅通"),
+	// 轻度拥堵
+	EM_LANE_RUNING_LIGHT_CONGESTION(3, "轻度拥堵"),
+	// 中度拥堵
+	EM_LANE_RUNING_MIDDLE_CONGESTION(4, "中度拥堵"),
+	// 严重拥堵
+	EM_LANE_RUNING_SERIOUS_CONGESTION(5, "严重拥堵");
+
+	private int value;
+	private String note;
+
+	private EM_LANE_RUNING_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LANE_RUNING_STATE enumType : EM_LANE_RUNING_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LANE_RUNING_STATE enumType : EM_LANE_RUNING_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_CONFIG_VERSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_CONFIG_VERSION.java
new file mode 100644
index 0000000..a005f6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_CONFIG_VERSION.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 支持灯光配置的版本
+ * @origin autoTool
+ * @date 2023/10/19 17:27:48
+ */
+public enum EM_LC_CONFIG_VERSION {
+    /**
+     * 未知
+     */
+    EM_LC_CONFIG_VERSION_UNKNOWN(0, "未知"),
+    /**
+     * 使用Lighting配置,默认
+     */
+    EM_LC_CONFIG_VERSION_LIGHTING(1, "使用Lighting配置,默认"),
+    /**
+     * 使用Lighting_V2配置
+     */
+    EM_LC_CONFIG_VERSION_LIGHTING_V2(2, "使用Lighting_V2配置");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_LC_CONFIG_VERSION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_LC_CONFIG_VERSION enumType : EM_LC_CONFIG_VERSION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_LC_CONFIG_VERSION enumType : EM_LC_CONFIG_VERSION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_LC_CONFIG_VERSION getEnum(int value) {
+        for (EM_LC_CONFIG_VERSION e : EM_LC_CONFIG_VERSION.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_LC_CONFIG_VERSION.EM_LC_CONFIG_VERSION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_LIGHT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_LIGHT_TYPE.java
new file mode 100644
index 0000000..d20170f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_LIGHT_TYPE.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 灯光类型
+ * @origin autoTool
+ * @date 2023/10/19 17:27:53
+ */
+public enum EM_LC_LIGHT_TYPE {
+    /**
+     * 未知
+     */
+    EM_LC_LIGHT_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 红外灯
+     */
+    EM_LC_LIGHT_TYPE_INFRAREDLIGHT(1, "红外灯"),
+    /**
+     * 白光灯
+     */
+    EM_LC_LIGHT_TYPE_WIHTELIGHT(2, "白光灯"),
+    /**
+     * 激光灯
+     */
+    EM_LC_LIGHT_TYPE_LASERLIGHT(3, "激光灯"),
+    /**
+     * 智能混光灯(根据智能ID切换红外和白光灯)
+     */
+    EM_LC_LIGHT_TYPE_AIMIXLIGHT(4, "智能混光灯(根据智能ID切换红外和白光灯)"),
+    /**
+     * 指示灯
+     */
+    EM_LC_LIGHT_TYPE_PILOTLIGHT(5, "指示灯");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_LC_LIGHT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_LC_LIGHT_TYPE enumType : EM_LC_LIGHT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_LC_LIGHT_TYPE enumType : EM_LC_LIGHT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_LC_LIGHT_TYPE getEnum(int value) {
+        for (EM_LC_LIGHT_TYPE e : EM_LC_LIGHT_TYPE.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_LC_LIGHT_TYPE.EM_LC_LIGHT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_MODE.java
new file mode 100644
index 0000000..1f93272
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_MODE.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 421657
+* @description  支持的模式 
+* @origin autoTool
+* @date 2023/10/19 17:27:50
+*/
+public enum EM_LC_MODE {
+	/**
+     * 未知
+     */
+	EM_LC_MODE_UNKNOWN(0,"未知"),
+	/**
+     * 手动
+     */
+	EM_LC_MODE_MANUAL(1,"手动"),
+	/**
+     * 倍率优先
+     */
+	EM_LC_MODE_ZOOMPRIO(2,"倍率优先"),
+	/**
+     * 定时
+     */
+	EM_LC_MODE_TIMING(3,"定时"),
+	/**
+     * 自动
+     */
+	EM_LC_MODE_AUTO(4,"自动"),
+	/**
+     * 关闭灯光
+     */
+	EM_LC_MODE_OFF(5,"关闭灯光"),
+	/**
+     * 支持多种灯光
+     */
+	EM_LC_MODE_EXCLUSIVEMANUAL(6,"支持多种灯光"),
+	/**
+     * 智能灯光
+     */
+	EM_LC_MODE_SMARTLIGHT(7,"智能灯光"),
+	/**
+     * 事件联动
+     */
+	EM_LC_MODE_LINKING(8,"事件联动"),
+	/**
+     * 光敏
+     */
+	EM_LC_MODE_DUSKTODAW(9,"光敏");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_LC_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_LC_MODE enumType : EM_LC_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_LC_MODE enumType : EM_LC_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_LC_MODE getEnum(int value) {
+        for (EM_LC_MODE e : EM_LC_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_LC_MODE.EM_LC_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_SUPPORT_EVENTS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_SUPPORT_EVENTS.java
new file mode 100644
index 0000000..96309fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LC_SUPPORT_EVENTS.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 支持灯光联动的非智能事件
+ * @origin autoTool
+ * @date 2023/10/19 17:27:53
+ */
+public enum EM_LC_SUPPORT_EVENTS {
+    /**
+     * 未知
+     */
+    EM_LC_SUPPORT_EVENTS_UNKNOWN(0, "未知"),
+    /**
+     * 动态检测
+     */
+    EM_LC_SUPPORT_EVENTS_MOTIONDETECT(1, "动态检测"),
+    /**
+     * 遮挡
+     */
+    EM_LC_SUPPORT_EVENTS_MASK(2, "遮挡"),
+    /**
+     * 报警
+     */
+    EM_LC_SUPPORT_EVENTS_ALARM(3, "报警"),
+    /**
+     * 所有事件
+     */
+    EM_LC_SUPPORT_EVENTS_ALL(4, "所有事件");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_LC_SUPPORT_EVENTS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_LC_SUPPORT_EVENTS enumType : EM_LC_SUPPORT_EVENTS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_LC_SUPPORT_EVENTS enumType : EM_LC_SUPPORT_EVENTS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_LC_SUPPORT_EVENTS getEnum(int value) {
+        for (EM_LC_SUPPORT_EVENTS e : EM_LC_SUPPORT_EVENTS.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_LC_SUPPORT_EVENTS.EM_LC_SUPPORT_EVENTS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java
new file mode 100644
index 0000000..528593b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_STATE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 检测状态
+ * @date 2021/03/15
+ */
+public enum EM_LEAVEDETECTION_STATE {
+	// 未知
+	EM_LEAVEDETECTION_STATE_UNKNOWN(0, "未知"),
+	// 离岗
+	EM_LEAVEDETECTION_STATE_LEAVE(1, "离岗"),
+	// 在岗
+	EM_LEAVEDETECTION_STATE_ON_THE_JOB(2, "在岗");
+
+
+	private int value;
+	private String note;
+
+	private EM_LEAVEDETECTION_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LEAVEDETECTION_STATE enumType : EM_LEAVEDETECTION_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LEAVEDETECTION_STATE enumType : EM_LEAVEDETECTION_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java
new file mode 100644
index 0000000..dc17086
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LEAVEDETECTION_TRIGGER_MODE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 离岗的触发模式
+ * @date 2021/03/15
+ */
+public enum EM_LEAVEDETECTION_TRIGGER_MODE {
+	// 未知
+	EM_LEAVEDETECTION_TRIGGER_UNKNOEN(0, "未知"),
+	// 无人
+	EM_LEAVEDETECTION_TRIGGER_NOPERSON(1, "无人"),
+	// 离开
+	EM_LEAVEDETECTION_TRIGGER_LEAVE(2, "离开"),
+	// 静止(睡岗)
+	EM_LEAVEDETECTION_TRIGGER_STATIC(3, "静止(睡岗)"),
+	// 不在允许值岗人数范围内(值岗人数异常)
+	EM_LEAVEDETECTION_TRIGGER_OUTPERSONLIMIT(4, "不在允许值岗人数范围内(值岗人数异常)");
+
+	private int value;
+	private String note;
+
+	private EM_LEAVEDETECTION_TRIGGER_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LEAVEDETECTION_TRIGGER_MODE enumType : EM_LEAVEDETECTION_TRIGGER_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LEAVEDETECTION_TRIGGER_MODE enumType : EM_LEAVEDETECTION_TRIGGER_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java
new file mode 100644
index 0000000..50308a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LED_BRIGHTNESS_LEVEL.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  led灯亮度 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_LED_BRIGHTNESS_LEVEL {
+/**
+未知
+*/
+EM_LED_BRIGHTNESS_UNKNOWN(-1,"未知"),
+/**
+关闭
+*/
+EM_LED_BRIGHTNESS_CLOSED(0,"关闭"),
+/**
+亮度最低
+*/
+EM_LED_BRIGHTNESS_LOW(1,"亮度最低"),
+/**
+亮度适中
+*/
+EM_LED_BRIGHTNESS_MEDIUM(2,"亮度适中"),
+/**
+亮度最高
+*/
+EM_LED_BRIGHTNESS_HIGH(3,"亮度最高");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_LED_BRIGHTNESS_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_LED_BRIGHTNESS_LEVEL enumType : EM_LED_BRIGHTNESS_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_LED_BRIGHTNESS_LEVEL enumType : EM_LED_BRIGHTNESS_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_LED_BRIGHTNESS_LEVEL getEnum(int value) {
+        for (EM_LED_BRIGHTNESS_LEVEL e : EM_LED_BRIGHTNESS_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_LED_BRIGHTNESS_LEVEL.EM_LED_BRIGHTNESS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java
new file mode 100644
index 0000000..cd1e7e3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIFT_CALLER_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  梯控方式触发者 
+* @date 2022/10/19 14:01:07
+*/
+public enum EM_LIFT_CALLER_TYPE {
+/**
+未知
+*/
+EM_LIFT_CALLER_TYPE_UNKNOWN(0,"未知"),
+/**
+VTO 呼叫
+*/
+EM_LIFT_CALLER_TYPE_VTO(1,"VTO 呼叫"),
+/**
+平台呼叫
+*/
+EM_LIFT_CALLER_TYPE_PLATFORM(2,"平台呼叫"),
+/**
+本机鉴权呼叫
+*/
+EM_LIFT_CALLER_TYPE_LOCAL_AUTH(3,"本机鉴权呼叫"),
+/**
+门禁呼梯
+*/
+EM_LIFT_CALLER_TYPE_ACCESS_CONTROL(4,"门禁呼梯");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_LIFT_CALLER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_LIFT_CALLER_TYPE enumType : EM_LIFT_CALLER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_LIFT_CALLER_TYPE enumType : EM_LIFT_CALLER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_LIFT_CALLER_TYPE getEnum(int value) {
+        for (EM_LIFT_CALLER_TYPE e : EM_LIFT_CALLER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_LIFT_CALLER_TYPE.EM_LIFT_CALLER_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java
new file mode 100644
index 0000000..7f972c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LIGHTGROUP_FAULT_LEVEL.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯组故障等级
+ * @date 2021/09/28
+ */
+public enum EM_LIGHTGROUP_FAULT_LEVEL {
+	// 未知
+	EM_LIGHTGROUP_FAULT_UNKNOWN(0, "未知"),
+	// 忽略所有灯组故障
+	EM_LIGHTGROUP_FAULT_INGORE(1, "忽略所有灯组故障 "),
+	// 忽略车行灯黄灯、绿灯和人行灯故障
+	EM_LIGHTGROUP_FAULT_INGORE_YELLOWGREENPEDESTRIAN(2, "忽略车行灯黄灯、绿灯和人行灯故障 "),
+	// 忽略车行灯黄灯、红灯和人行灯故障
+	EM_LIGHTGROUP_FAULT_INGORE_YELLOWREDPEDESTRIAN(3, "忽略车行灯黄灯、红灯和人行灯故障"),
+	// 忽略车行灯黄灯和人行灯故障
+	EM_LIGHTGROUP_FAULT_INGORE_YELLOWPEDESTRIAN(4, "忽略车行灯黄灯和人行灯故障 "),
+	// 不忽略任何灯组故障
+	EM_LIGHTGROUP_FAULT_UNINGORE(5, "不忽略任何灯组故障");
+
+	private int value;
+	private String note;
+
+	private EM_LIGHTGROUP_FAULT_LEVEL(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_LIGHTGROUP_FAULT_LEVEL enumType : EM_LIGHTGROUP_FAULT_LEVEL.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_LIGHTGROUP_FAULT_LEVEL enumType : EM_LIGHTGROUP_FAULT_LEVEL.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java
new file mode 100644
index 0000000..8a1570a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_LINE_COLOR_TYPE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 轨迹线颜色类型
+ * @date 2020/8/24
+ */
+public enum EM_LINE_COLOR_TYPE {
+
+    EM_LINE_COLOR_TYPE_UNKNOWN(0, "未知"),
+    EM_LINE_COLOR_TYPE_RED(1, "红色"),
+    EM_LINE_COLOR_TYPE_YELLOW(2, "黄色"),
+    EM_LINE_COLOR_TYPE_BLUE(3, "蓝色"),
+    EM_LINE_COLOR_TYPE_GREEN(4, "绿色"),
+    EM_LINE_COLOR_TYPE_BLACK(5, "黑色"),
+    EM_LINE_COLOR_TYPE_WHITE(6, "白色");
+
+    private EM_LINE_COLOR_TYPE(int type, String color) {
+        this.type = type;
+        this.color = color;
+    }
+
+    private int type;
+    private String color;
+
+    public EM_LINE_COLOR_TYPE getColorType(int type) {
+        for (EM_LINE_COLOR_TYPE color : EM_LINE_COLOR_TYPE.values()
+        ) {
+            if (color.getType() == type) {
+                return color;
+            }
+        }
+        return null;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public String getColor() {
+        return color;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java
new file mode 100644
index 0000000..d86792a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MAIN_PAGE_STATE.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 界面图片状态
+ *
+ * @author 47040
+ * @since Created in 2021/4/27 19:17
+ */
+public enum EM_MAIN_PAGE_STATE {
+    /**
+     * 未知
+     */
+    EM_MAIN_PAGE_STATE_UNKNOWN(0, "未知"),
+    /**
+     * 正常
+     */
+    EM_MAIN_PAGE_STATE_NORMAL(1, "正常"),
+    /**
+     * 待机
+     */
+    EM_MAIN_PAGE_STATE_STANDBY(2, "待机"),
+    /**
+     * 通道关闭
+     */
+    EM_MAIN_PAGE_STATE_CHANNELCLOSED(3, "通道关闭"),
+    /**
+     * 禁止通行
+     */
+    EM_MAIN_PAGE_STATE_FORBIDENTER(4, "禁止通行"),
+    /**
+     * 紧急疏散
+     */
+    EM_MAIN_PAGE_STATE_URGENTEVACUATE(5, "紧急疏散");
+
+    private final int value;
+    private final String note;
+
+    EM_MAIN_PAGE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_MAIN_PAGE_STATE enumType : EM_MAIN_PAGE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_MAIN_PAGE_STATE enumType : EM_MAIN_PAGE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_MAIN_PAGE_STATE getEnum(int value) {
+        for (EM_MAIN_PAGE_STATE e : EM_MAIN_PAGE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_MAIN_PAGE_STATE.EM_MAIN_PAGE_STATE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_DETECT_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_DETECT_MODE.java
new file mode 100644
index 0000000..3d2d989
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_DETECT_MODE.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.enumeration;
+
+
+
+/**
+ * 门禁测温口罩检测模式
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public enum EM_MASK_DETECT_MODE {
+
+    /**
+     *  未知
+     */
+    EM_MASK_DETECT_MODE_UNKNOWN,
+
+    /**
+     *  不检测口罩
+     */
+    EM_MASK_DETECT_MODE_NO_DETECTION,
+
+    /**
+     *  口罩提醒模式
+     */
+    EM_MASK_DETECT_MODE_REMIND,
+
+    /**
+     *  口罩拦截模式
+     */
+    EM_MASK_DETECT_MODE_INTERCEPT,
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_STATE_TYPE.java
new file mode 100644
index 0000000..af76090
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 口罩状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_MASK_STATE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_MASK_STATE_UNKNOWN = 0;
+    /**
+     *  未识别
+     */
+    public static final int					EM_MASK_STATE_NODISTI = 1;
+    /**
+     *  没戴口罩
+     */
+    public static final int					EM_MASK_STATE_NOMASK = 2;
+    /**
+     *  戴口罩
+     */
+    public static final int					EM_MASK_STATE_WEAR = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_TYPE.java
new file mode 100644
index 0000000..29063c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MASK_TYPE.java
@@ -0,0 +1,7 @@
+package com.netsdk.lib.enumeration;
+// 是否戴口罩
+public enum EM_MASK_TYPE {
+    EM_MASK_UNKNOWN,								// 未知
+    EM_MASK_NO,										// 无
+    EM_MASK_YES,									// 戴
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java
new file mode 100644
index 0000000..7882d05
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MIX_SNAP_SPEED_SOURCE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 视频抓拍速度来源
+ * @date 2021/2/22
+ */
+public enum EM_MIX_SNAP_SPEED_SOURCE {
+  /** 未知 */
+  EM_SNAP_SPEED_SOURCE_UNKNOWN,
+  /** 视频 */
+  EM_SNAP_SPEED_SOURCE_VIDEO,
+  /** 雷达 */
+  EM_SNAP_SPEED_SOURCE_RADAR;
+
+  public static EM_MIX_SNAP_SPEED_SOURCE getMixSnapSpeedSource(int source) {
+    for (EM_MIX_SNAP_SPEED_SOURCE speedSource : EM_MIX_SNAP_SPEED_SOURCE.values()) {
+      if (speedSource.ordinal() == source) {
+        return speedSource;
+      }
+    }
+    return EM_SNAP_SPEED_SOURCE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java
new file mode 100644
index 0000000..9cbfe8d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FILE_TYPE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 文件后缀类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 14:34
+ */
+public enum EM_MOBILE_ENFORCE_FILE_TYPE {
+
+    EM_MOBILE_ENFORCE_FILE_TYPE_UNKNOWN(0, "未知"),
+    EM_MOBILE_ENFORCE_FILE_TYPE_DAV(1, "dav"),
+    EM_MOBILE_ENFORCE_FILE_TYPE_MP4(2, "mp4"),
+    EM_MOBILE_ENFORCE_FILE_TYPE_AAC(3, "aac"),
+    EM_MOBILE_ENFORCE_FILE_TYPE_MP3(4, "mp3"),
+    EM_MOBILE_ENFORCE_FILE_TYPE_JPG(5, "jpg");
+
+    private final int value;
+    private final String note;
+
+    EM_MOBILE_ENFORCE_FILE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_MOBILE_ENFORCE_FILE_TYPE enumType : EM_MOBILE_ENFORCE_FILE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_MOBILE_ENFORCE_FILE_TYPE enumType : EM_MOBILE_ENFORCE_FILE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_MOBILE_ENFORCE_FILE_TYPE getEnum(int value) {
+        for (EM_MOBILE_ENFORCE_FILE_TYPE e : EM_MOBILE_ENFORCE_FILE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_MOBILE_ENFORCE_FILE_TYPE.EM_MOBILE_ENFORCE_FILE_TYPE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java
new file mode 100644
index 0000000..c3cbfbf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_FORMAT.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 文件的真实类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 12:11
+ */
+public enum EM_MOBILE_ENFORCE_FORMAT {
+
+    EM_MOBILE_ENFORCE_FORMAT_UNKNOWN(0, "未知"),
+    EM_MOBILE_ENFORCE_FORMAT_VIDEO(1, "视频"),
+    EM_MOBILE_ENFORCE_FORMAT_AUDIO(2, "音频"),
+    EM_MOBILE_ENFORCE_FORMAT_IMAGE(3, "图片");
+
+    private final int value;
+    private final String note;
+
+    EM_MOBILE_ENFORCE_FORMAT(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_MOBILE_ENFORCE_FORMAT enumType : EM_MOBILE_ENFORCE_FORMAT.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_MOBILE_ENFORCE_FORMAT enumType : EM_MOBILE_ENFORCE_FORMAT.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_MOBILE_ENFORCE_FORMAT getEnum(int value) {
+        for (EM_MOBILE_ENFORCE_FORMAT e : EM_MOBILE_ENFORCE_FORMAT.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_MOBILE_ENFORCE_FORMAT.EM_MOBILE_ENFORCE_FORMAT_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java
new file mode 100644
index 0000000..19c60a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOBILE_ENFORCE_UPLOAD_FLAG.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 文件上传标志
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 10:16
+ */
+public enum EM_MOBILE_ENFORCE_UPLOAD_FLAG {
+
+    EM_MOBILE_ENFORCE_UPLOAD_FLAG_UNKNWON(-1, "未知"),
+    EM_MOBILE_ENFORCE_UPLOAD_FLAG_NOTUPLOAD(0, "未上传"),
+    EM_MOBILE_ENFORCE_UPLOAD_FLAG_UPLOADED(1, "已上传"),
+    EM_MOBILE_ENFORCE_UPLOAD_FLAG_BACKEDUP(3, "已备份");
+
+    private final int value;
+    private final String note;
+
+    EM_MOBILE_ENFORCE_UPLOAD_FLAG(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_MOBILE_ENFORCE_UPLOAD_FLAG enumType : EM_MOBILE_ENFORCE_UPLOAD_FLAG.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_MOBILE_ENFORCE_UPLOAD_FLAG enumType : EM_MOBILE_ENFORCE_UPLOAD_FLAG.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_MOBILE_ENFORCE_UPLOAD_FLAG getEnum(int value) {
+        for (EM_MOBILE_ENFORCE_UPLOAD_FLAG e : EM_MOBILE_ENFORCE_UPLOAD_FLAG.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_MOBILE_ENFORCE_UPLOAD_FLAG.EM_MOBILE_ENFORCE_UPLOAD_FLAG_UNKNWON;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOSAIC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOSAIC_TYPE.java
new file mode 100644
index 0000000..c045f2c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOSAIC_TYPE.java
@@ -0,0 +1,77 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 马赛克类型
+ * @date 2022/07/21 15:29:16
+ */
+public enum EM_MOSAIC_TYPE {
+	/**
+	 * 无效的马赛克类型
+	 */
+	EM_MOSAIC_TYPE_INVALID(0, "无效的马赛克类型"),
+	/**
+	 * 不打马赛克
+	 */
+	EM_MOSAIC_TYPE_NO(1, "不打马赛克"),
+	/**
+	 * [8x8大小] 马赛克
+	 */
+	EM_MOSAIC_TYPE_8(2, "[8x8大小] 马赛克"),
+	/**
+	 * [16x16大小] 马赛克
+	 */
+	EM_MOSAIC_TYPE_16(3, "[16x16大小] 马赛克"),
+	/**
+	 * [24x24大小] 马赛克
+	 */
+	EM_MOSAIC_TYPE_24(4, "[24x24大小] 马赛克"),
+	/**
+	 * [32x32大小] 马赛克
+	 */
+	EM_MOSAIC_TYPE_32(5, "[32x32大小] 马赛克");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_MOSAIC_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_MOSAIC_TYPE enumType : EM_MOSAIC_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_MOSAIC_TYPE enumType : EM_MOSAIC_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_MOSAIC_TYPE getEnum(int value) {
+		for (EM_MOSAIC_TYPE e : EM_MOSAIC_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_MOSAIC_TYPE.EM_MOSAIC_TYPE_INVALID;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java
new file mode 100644
index 0000000..0cf6edc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MOUTH_STATE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 嘴巴状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_MOUTH_STATE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_MOUTH_STATE_UNKNOWN = 0;
+    /**
+     *  未识别
+     */
+    public static final int					EM_MOUTH_STATE_NODISTI = 1;
+    /**
+     *  闭嘴
+     */
+    public static final int					EM_MOUTH_STATE_CLOSE = 2;
+    /**
+     *  张嘴
+     */
+    public static final int					EM_MOUTH_STATE_OPEN = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java
new file mode 100644
index 0000000..b60a6be
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSGROUP_OPERATE_TYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 主动跟踪主操作命令, 接口 CLIENT_OperateMasterSlaveGroup
+ * @date 2022/09/14 13:50:01
+ */
+public enum EM_MSGROUP_OPERATE_TYPE {
+	/**
+	 * 打开主从跟踪组, 对应 NET_IN_MSGROUP_OPEN_INFO 和 NET_OUT_MSGROUP_OPEN_INFO
+	 */
+	EM_MSGROUP_OPERATE_OPEN(0, "打开主从跟踪组, 对应 NET_IN_MSGROUP_OPEN_INFO 和 NET_OUT_MSGROUP_OPEN_INFO"),
+	/**
+	 * 联动主从跟踪组, 对应 NET_IN_MSGROUP_LOCATE_INFO 和 NET_OUT_MSGROUP_LOCATE_INTO
+	 */
+	EM_MSGROUP_OPERATE_LOCATE(1, "联动主从跟踪组, 对应 NET_IN_MSGROUP_LOCATE_INFO 和 NET_OUT_MSGROUP_LOCATE_INTO"),
+	/**
+	 * 手动选定目标跟踪, 对应 NET_IN_MSGROUP_TRACK_INFO 和 NET_OUT_MSGROUP_TRACK_INFO
+	 */
+	EM_MSGROUP_OPERATE_TRACK(2, "手动选定目标跟踪, 对应 NET_IN_MSGROUP_TRACK_INFO 和 NET_OUT_MSGROUP_TRACK_INFO"),
+	/**
+	 * 关闭主从式跟踪器实例, 对应 NET_IN_MSGROUP_CLOSE_INFO 和 NET_OUT_MSGROUP_CLOSE_INFO
+	 */
+	EM_MSGROUP_OPERATE_CLOSE(3, "关闭主从式跟踪器实例, 对应 NET_IN_MSGROUP_CLOSE_INFO 和 NET_OUT_MSGROUP_CLOSE_INFO"),
+	/**
+	 * 从主设备选择矩形框联动从设备, 对应 NET_IN_MSGROUP_RECTLOCATE_INFO 和NET_OUT_MSGROUP_RECTLOCATE_INFO
+	 */
+	EM_MSGROUP_OPERATE_RECTLOCATE(4,
+			"从主设备选择矩形框联动从设备, 对应 NET_IN_MSGROUP_RECTLOCATE_INFO 和 NET_OUT_MSGROUP_RECTLOCATE_INFO"),
+	/**
+	 * 将从机固定位置下的视频坐标转换为主机的视频坐标, 对应 对应 NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO 和
+	 * NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO
+	 */
+	EM_MSGROUP_OPERATE_SLAVE_POSITION_TO_MASTER(5,
+			"将从机固定位置下的视频坐标转换为主机的视频坐标, 对应 对应 NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO 和 NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_MSGROUP_OPERATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_MSGROUP_OPERATE_TYPE enumType : EM_MSGROUP_OPERATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_MSGROUP_OPERATE_TYPE enumType : EM_MSGROUP_OPERATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java
new file mode 100644
index 0000000..580a9ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MSG_OBJ_PERSON_DIRECTION.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 入侵方向
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_MSG_OBJ_PERSON_DIRECTION extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知方向
+     */
+    public static final int					EM_MSG_OBJ_PERSON_DIRECTION_UNKOWN = 0;
+    /**
+     *  从左向右
+     */
+    public static final int					EM_MSG_OBJ_PERSON_DIRECTION_LEFT_TO_RIGHT = 1;
+    /**
+     *  从右向左
+     */
+    public static final int					EM_MSG_OBJ_PERSON_DIRECTION_RIGHT_TO_LEFT = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MULTIFACE_DETECT_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MULTIFACE_DETECT_ERRCODE.java
new file mode 100644
index 0000000..1f219fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_MULTIFACE_DETECT_ERRCODE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 大图检测小图结果错误码
+ * @date 2023/04/20 15:11:18
+ */
+public enum EM_MULTIFACE_DETECT_ERRCODE {
+	/**
+	 * 未知
+	 */
+	EM_MULTIFACE_DETECT_UNKNOWN(-1, "未知"),
+	/**
+	 * 成功
+	 */
+	EM_MULTIFACE_DETECT_SUCCESS(0, "成功"),
+	/**
+	 * 解码失败
+	 */
+	EM_MULTIFACE_DETECT_DECODE_FAIL(1, "解码失败"),
+	/**
+	 * 未检测到有效目标
+	 */
+	EM_MULTIFACE_DETECT_NO_OBJECT(2, "未检测到有效目标");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_MULTIFACE_DETECT_ERRCODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_MULTIFACE_DETECT_ERRCODE enumType : EM_MULTIFACE_DETECT_ERRCODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_MULTIFACE_DETECT_ERRCODE enumType : EM_MULTIFACE_DETECT_ERRCODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NAS_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NAS_STATE_TYPE.java
new file mode 100644
index 0000000..69ebc62
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NAS_STATE_TYPE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  滤光片类型 
+* @date 2022/09/22 17:28:03
+*/
+public enum EM_NAS_STATE_TYPE {
+/**
+未知
+*/
+EM_NAS_STATE_TYPE_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_NAS_STATE_TYPE_ACTIVE(1,"正常"),
+/**
+LV异常
+*/
+EM_NAS_STATE_TYPE_LVFAILED(2,"LV异常"),
+/**
+非活跃
+*/
+EM_NAS_STATE_TYPE_INACTIVE(3,"非活跃"),
+/**
+LV所属的VG异常
+*/
+EM_NAS_STATE_TYPE_VGFAILED(4,"LV所属的VG异常"),
+/**
+服务未开启
+*/
+EM_NAS_STATE_TYPE_NOTSTARTED(5,"服务未开启");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NAS_STATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NAS_STATE_TYPE enumType : EM_NAS_STATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NAS_STATE_TYPE enumType : EM_NAS_STATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NAS_STATE_TYPE getEnum(int value) {
+        for (EM_NAS_STATE_TYPE e : EM_NAS_STATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NAS_STATE_TYPE.EM_NAS_STATE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java
new file mode 100644
index 0000000..072619f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEEDED_PIC_RETURN_TYPE.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 查询结果返回图片的格式
+ * @date 2021/4/26
+ */
+public enum EM_NEEDED_PIC_RETURN_TYPE {
+  /** 未知类型 */
+  EM_NEEDED_PIC_TYPE_UNKOWN(0, "未知类型"),
+  /** 返回图片HTTP链接 */
+  EM_NEEDED_PIC_TYPE_HTTP_URL(1, "返回图片HTTP链接"),
+  /** 返回图片二进制数据 */
+  EM_NEEDED_PIC_TYPE_BINARY_DATA(2, "返回图片二进制数据"),
+  /** 返回二进制和HTTP链接 */
+  EM_NEEDED_PIC_TYPE_HTTP_AND_BINARY(3, "返回二进制和HTTP链接");
+  private int type;
+  private String desc;
+
+  EM_NEEDED_PIC_RETURN_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public void setType(int type) {
+    this.type = type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java
new file mode 100644
index 0000000..73b2f9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_CONSUMPTION_MODE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 消费模式
+* @date 2022/03/07 10:54:03
+*/
+public enum EM_NET_CONSUMPTION_MODE {
+/**
+未知
+*/
+EM_NET_CONSUMPTION_MODE_UNKNOWN(-1,"未知"),
+/**
+定额消费
+*/
+EM_NET_CONSUMPTION_MODE_QUOTA(0,"定额消费"),
+/**
+非定额消费
+*/
+EM_NET_CONSUMPTION_MODE_NONQUOTA(1,"非定额消费"),
+/**
+充值
+*/
+EM_NET_CONSUMPTION_MODE_DEPOSIT(2,"充值");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_CONSUMPTION_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_CONSUMPTION_MODE enumType : EM_NET_CONSUMPTION_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_CONSUMPTION_MODE enumType : EM_NET_CONSUMPTION_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_NET_CONSUMPTION_MODE getEnum(int value) {
+        for (EM_NET_CONSUMPTION_MODE e : EM_NET_CONSUMPTION_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_CONSUMPTION_MODE.EM_NET_CONSUMPTION_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_COLOR.java
new file mode 100644
index 0000000..b20b1a1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_COLOR.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  显示颜色 
+* @origin autoTool
+* @date 2023/06/27 16:54:41
+*/
+public enum EM_NET_ECK_PANEL_COLOR {
+/**
+未知
+*/
+EM_NET_ECK_PANEL_COLOR_UNKNOWN(0,"未知"),
+/**
+红色
+*/
+EM_NET_ECK_PANEL_COLOR_RED(1,"红色"),
+/**
+绿色
+*/
+EM_NET_ECK_PANEL_COLOR_GREEN(2,"绿色"),
+/**
+黄色
+*/
+EM_NET_ECK_PANEL_COLOR_YELLOW(3,"黄色");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_ECK_PANEL_COLOR(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_ECK_PANEL_COLOR enumType : EM_NET_ECK_PANEL_COLOR.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_ECK_PANEL_COLOR enumType : EM_NET_ECK_PANEL_COLOR.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_ECK_PANEL_COLOR getEnum(int value) {
+        for (EM_NET_ECK_PANEL_COLOR e : EM_NET_ECK_PANEL_COLOR.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_ECK_PANEL_COLOR.EM_NET_ECK_PANEL_COLOR_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_DIRECTION.java
new file mode 100644
index 0000000..4fe0b7e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_DIRECTION.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  箭头指向,箭头专用 
+* @origin autoTool
+* @date 2023/06/27 16:54:41
+*/
+public enum EM_NET_ECK_PANEL_DIRECTION {
+/**
+未知
+*/
+EM_NET_ECK_PANEL_DIRECTION_UNKNOWN(0,"未知"),
+/**
+左
+*/
+EM_NET_ECK_PANEL_DIRECTION_LEFT(1,"左"),
+/**
+上
+*/
+EM_NET_ECK_PANEL_DIRECTION_UP(2,"上"),
+/**
+右
+*/
+EM_NET_ECK_PANEL_DIRECTION_RIGHT(3,"右");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_ECK_PANEL_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_ECK_PANEL_DIRECTION enumType : EM_NET_ECK_PANEL_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_ECK_PANEL_DIRECTION enumType : EM_NET_ECK_PANEL_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_ECK_PANEL_DIRECTION getEnum(int value) {
+        for (EM_NET_ECK_PANEL_DIRECTION e : EM_NET_ECK_PANEL_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_ECK_PANEL_DIRECTION.EM_NET_ECK_PANEL_DIRECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ICON.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ICON.java
new file mode 100644
index 0000000..92c6d59
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ICON.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  图标 
+* @origin autoTool
+* @date 2023/06/27 16:54:41
+*/
+public enum EM_NET_ECK_PANEL_ICON {
+/**
+未知
+*/
+EM_NET_ECK_PANEL_ICON_UNKNOWN(0,"未知"),
+/**
+禁止
+*/
+EM_NET_ECK_PANEL_ICON_CLOSE(1,"禁止"),
+/**
+禁止
+*/
+EM_NET_ECK_PANEL_ICON_CLOSECUSTOM(2,"禁止");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_ECK_PANEL_ICON(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_ECK_PANEL_ICON enumType : EM_NET_ECK_PANEL_ICON.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_ECK_PANEL_ICON enumType : EM_NET_ECK_PANEL_ICON.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_ECK_PANEL_ICON getEnum(int value) {
+        for (EM_NET_ECK_PANEL_ICON e : EM_NET_ECK_PANEL_ICON.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_ECK_PANEL_ICON.EM_NET_ECK_PANEL_ICON_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ISBOLD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ISBOLD.java
new file mode 100644
index 0000000..d7a331a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_ISBOLD.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  是否加粗 
+* @origin autoTool
+* @date 2023/06/27 16:54:41
+*/
+public enum EM_NET_ECK_PANEL_ISBOLD {
+/**
+不加粗
+*/
+EM_NET_ECK_PANEL_ISBOLD_FALSE(0,"不加粗"),
+/**
+加粗
+*/
+EM_NET_ECK_PANEL_ISBOLD_TRUE(1,"加粗");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_ECK_PANEL_ISBOLD(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_ECK_PANEL_ISBOLD enumType : EM_NET_ECK_PANEL_ISBOLD.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_ECK_PANEL_ISBOLD enumType : EM_NET_ECK_PANEL_ISBOLD.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_ECK_PANEL_ISBOLD getEnum(int value) {
+        for (EM_NET_ECK_PANEL_ISBOLD e : EM_NET_ECK_PANEL_ISBOLD.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_ECK_PANEL_ISBOLD.EM_NET_ECK_PANEL_ISBOLD_FALSE;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_TYPE.java
new file mode 100644
index 0000000..e5e5016
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_ECK_PANEL_TYPE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  显示内容的类型 
+* @origin autoTool
+* @date 2023/06/27 16:54:40
+*/
+public enum EM_NET_ECK_PANEL_TYPE {
+/**
+整数、字母、空格
+*/
+EM_NET_ECK_PANEL_TYPE_INTCHAR(0,"整数、字母、空格"),
+/**
+图形
+*/
+EM_NET_ECK_PANEL_TYPE_IMAGE(1,"图形"),
+/**
+箭头
+*/
+EM_NET_ECK_PANEL_TYPE_ARROWS(2,"箭头");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_ECK_PANEL_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_ECK_PANEL_TYPE enumType : EM_NET_ECK_PANEL_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_ECK_PANEL_TYPE enumType : EM_NET_ECK_PANEL_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_ECK_PANEL_TYPE getEnum(int value) {
+        for (EM_NET_ECK_PANEL_TYPE e : EM_NET_ECK_PANEL_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_ECK_PANEL_TYPE.EM_NET_ECK_PANEL_TYPE_INTCHAR;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java
new file mode 100644
index 0000000..b750cb7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_COLOR_TYPE.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  车牌颜色 
+* @date 2022/05/30 14:16:15
+*/
+public enum EM_NET_PLATE_COLOR_TYPE {
+/**
+其他颜色
+*/
+NET_PLATE_COLOR_OTHER(0,"其他颜色"),
+/**
+蓝色  Blue 
+*/
+NET_PLATE_COLOR_BLUE(1,"蓝色  Blue "),
+/**
+黄色  Yellow 
+*/
+NET_PLATE_COLOR_YELLOW(2,"黄色  Yellow "),
+/**
+白色  White 
+*/
+NET_PLATE_COLOR_WHITE(3,"白色  White "),
+/**
+黑色  Black 
+*/
+NET_PLATE_COLOR_BLACK(4,"黑色  Black "),
+/**
+黄底黑字  YellowbottomBlackText 
+*/
+NET_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT(5,"黄底黑字  YellowbottomBlackText "),
+/**
+蓝底白字  BluebottomWhiteText 
+*/
+NET_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT(6,"蓝底白字  BluebottomWhiteText "),
+/**
+黑底白字  BlackBottomWhiteText 
+*/
+NET_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT(7,"黑底白字  BlackBottomWhiteText "),
+/**
+渐变绿  ShadowGreen 
+*/
+NET_PLATE_COLOR_SHADOW_GREEN(8,"渐变绿  ShadowGreen "),
+/**
+黄绿双拼  YellowGreen 
+*/
+NET_PLATE_COLOR_YELLOW_GREEN(9,"黄绿双拼  YellowGreen ");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_PLATE_COLOR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_PLATE_COLOR_TYPE enumType : EM_NET_PLATE_COLOR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_PLATE_COLOR_TYPE enumType : EM_NET_PLATE_COLOR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_PLATE_COLOR_TYPE getEnum(int value) {
+        for (EM_NET_PLATE_COLOR_TYPE e : EM_NET_PLATE_COLOR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_PLATE_COLOR_TYPE.NET_PLATE_COLOR_OTHER;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_TYPE.java
new file mode 100644
index 0000000..5db8ec7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_PLATE_TYPE.java
@@ -0,0 +1,161 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @description 车牌类型
+ * @date 2022/05/30 14:16:15
+ */
+public enum EM_NET_PLATE_TYPE {
+	/**
+	
+	*/
+	NET_PLATE_TYPE_UNKNOWN(0, ""),
+	/**
+	 * Normal 蓝牌黑牌
+	 */
+	NET_PLATE_TYPE_NORMAL(1, " Normal  蓝牌黑牌"),
+	/**
+	 * Yellow 黄牌
+	 */
+	NET_PLATE_TYPE_YELLOW(2, " Yellow  黄牌"),
+	/**
+	 * DoubleYellow 双层黄尾牌
+	 */
+	NET_PLATE_TYPE_DOUBLEYELLOW(3, " DoubleYellow  双层黄尾牌"),
+	/**
+	 * Police 警牌
+	 */
+	NET_PLATE_TYPE_POLICE(4, " Police  警牌"),
+	/**
+	
+	*/
+	NET_PLATE_TYPE_WJ(5, ""),
+	/**
+	
+	*/
+	NET_PLATE_TYPE_OUTERGUARD(6, ""),
+	/**
+	
+	*/
+	NET_PLATE_TYPE_DOUBLEOUTERGUARD(7, ""),
+	/**
+	 * SAR 港澳特区号牌
+	 */
+	NET_PLATE_TYPE_SAR(8, " SAR  港澳特区号牌"),
+	/**
+	 * Trainning 教练车号牌
+	 */
+	NET_PLATE_TYPE_TRAINNING(9, " Trainning  教练车号牌"),
+	/**
+	 * Personal 个性号牌
+	 */
+	NET_PLATE_TYPE_PERSONAL(10, " Personal  个性号牌"),
+	/**
+	 * Agri 农用牌
+	 */
+	NET_PLATE_TYPE_AGRI(11, " Agri  农用牌"),
+	/**
+	 * Embassy 使馆号牌
+	 */
+	NET_PLATE_TYPE_EMBASSY(12, " Embassy  使馆号牌"),
+	/**
+	 * Moto 摩托车号牌
+	 */
+	NET_PLATE_TYPE_MOTO(13, " Moto  摩托车号牌"),
+	/**
+	 * Tractor 拖拉机号牌
+	 */
+	NET_PLATE_TYPE_TRACTOR(14, " Tractor  拖拉机号牌"),
+	/**
+	 * OfficialCar 公务车
+	 */
+	NET_PLATE_TYPE_OFFICIALCAR(15, " OfficialCar  公务车"),
+	/**
+	 * PersonalCar 私家车
+	 */
+	NET_PLATE_TYPE_PERSONALCAR(16, " PersonalCar  私家车"),
+	/**
+	
+	*/
+	NET_PLATE_TYPE_WARCAR(17, ""),
+	/**
+	 * Other 其他号牌
+	 */
+	NET_PLATE_TYPE_OTHER(18, " Other  其他号牌"),
+	/**
+	 * Civilaviation 民航号牌
+	 */
+	NET_PLATE_TYPE_CIVILAVIATION(19, " Civilaviation  民航号牌"),
+	/**
+	 * Black 黑牌
+	 */
+	NET_PLATE_TYPE_BLACK(20, " Black  黑牌"),
+	/**
+	 * PureNewEnergyMicroCar 纯电动新能源小车
+	 */
+	NET_PLATE_TYPE_PURENEWENERGYMICROCAR(21, " PureNewEnergyMicroCar  纯电动新能源小车"),
+	/**
+	 * MixedNewEnergyMicroCar 混合新能源小车
+	 */
+	NET_PLATE_TYPE_MIXEDNEWENERGYMICROCAR(22, " MixedNewEnergyMicroCar  混合新能源小车"),
+	/**
+	 * PureNewEnergyLargeCar 纯电动新能源大车
+	 */
+	NET_PLATE_TYPE_PURENEWENERGYLARGECAR(23, " PureNewEnergyLargeCar  纯电动新能源大车"),
+	/**
+	 * MixedNewEnergyLargeCar 混合新能源大车
+	 */
+	NET_PLATE_TYPE_MIXEDNEWENERGYLARGECAR(24, " MixedNewEnergyLargeCar  混合新能源大车"),
+	/**
+	 * Hongkong 香港号牌
+	 */
+	NET_PLATE_TYPE_HONGKONG(25, " Hongkong  香港号牌"),
+	/**
+	 * Makao 澳门号牌
+	 */
+	NET_PLATE_TYPE_MAKAO(26, " Makao  澳门号牌");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_NET_PLATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_NET_PLATE_TYPE enumType : EM_NET_PLATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_NET_PLATE_TYPE enumType : EM_NET_PLATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_NET_PLATE_TYPE getEnum(int value) {
+		for (EM_NET_PLATE_TYPE e : EM_NET_PLATE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_NET_PLATE_TYPE.NET_PLATE_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_QUERY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_QUERY_TYPE.java
new file mode 100644
index 0000000..afc8b99
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_QUERY_TYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  获取网卡信息类型 CLIENT_QueryNetStat  接口使用 
+* @origin autoTool
+* @date 2023/06/16 16:38:23
+*/
+public enum EM_NET_QUERY_TYPE {
+/**
+获取协议栈统计数据,(输入结构体NET_IN_NETAPP_NET_DATA_STAT,输出结构体NET_OUT_NETAPP_NET_DATA_STAT)
+*/
+NET_APP_DATA_STAT(0,"获取协议栈统计数据,(输入结构体NET_IN_NETAPP_NET_DATA_STAT,输出结构体NET_OUT_NETAPP_NET_DATA_STAT)"),
+/**
+获取物理链路状态,(输入结构体NET_IN_NETAPP_LINK_STATUS,输出结构体NET_OUT_NETAPP_LINK_STATUS)
+*/
+NET_APP_LINK_STAT(1,"获取物理链路状态,(输入结构体NET_IN_NETAPP_LINK_STATUS,输出结构体NET_OUT_NETAPP_LINK_STATUS)");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_QUERY_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_QUERY_TYPE enumType : EM_NET_QUERY_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_QUERY_TYPE enumType : EM_NET_QUERY_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_NET_QUERY_TYPE getEnum(int value) {
+        for (EM_NET_QUERY_TYPE e : EM_NET_QUERY_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_QUERY_TYPE.NET_APP_DATA_STAT;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_SERVER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_SERVER_TYPE.java
new file mode 100644
index 0000000..5631d5e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_SERVER_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 设备接入网络服务类型
+ * @date 2023/04/20 08:58:40
+ */
+public enum EM_NET_SERVER_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_NET_SERVER_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 自动
+	 */
+	EM_NET_SERVER_TYPE_AUTO(0, "自动"),
+	/**
+	 * TCP
+	 */
+	EM_NET_SERVER_TYPE_TCP(1, "TCP"),
+	/**
+	 * UDP
+	 */
+	EM_NET_SERVER_TYPE_UDP(2, "UDP"),
+	/**
+	 * 组播
+	 */
+	EM_NET_SERVER_TYPE_MULTICAST(3, "组播");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_NET_SERVER_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_NET_SERVER_TYPE enumType : EM_NET_SERVER_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_NET_SERVER_TYPE enumType : EM_NET_SERVER_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java
new file mode 100644
index 0000000..31766bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_TRAFFIC_CAR_CONTROL_TYPE.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 布控类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_NET_TRAFFIC_CAR_CONTROL_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  其他
+     */
+    public static final int					NET_CAR_CONTROL_OTHER = 0;
+    /**
+     *  过期未检	"OverdueNoCheck"
+     */
+    public static final int					NET_CAR_CONTROL_OVERDUE_NO_CHECK = 1;
+    /**
+     *  	"BrigandageCar"
+     */
+    public static final int					NET_CAR_CONTROL_BRIGANDAGE_CAR = 2;
+    /**
+     *  违章		"Breaking"
+     */
+    public static final int					NET_CAR_CONTROL_BREAKING = 3;
+    /**
+     *  "CausetroubleEscape"
+     */
+    public static final int					NET_CAR_CONTROL_CAUSETROUBLE_ESCAPE = 4;
+    /**
+     *  停车欠费  "OverdueParking"
+     */
+    public static final int					NET_CAR_CONTROL_CAUSETROUBLE_OVERDUEPARKING = 5;
+    /**
+     *  假牌车     "CounterfeitPlateCar"
+     */
+    public static final int					NET_CAR_CONTROL_COUNTERFEI_PLATE_CAR = 6;
+    /**
+     *  套牌车     "FakePlateCar"
+     */
+    public static final int					NET_CAR_CONTROL_FAKE_PLATE_CAR = 7;
+    /**
+     *  重点车辆   "FocalCar"
+     */
+    public static final int					NET_CAR_CONTROL_FOCAL_CAR = 8;
+    /**
+     *  保障车辆   "GuaranteeCar"
+     */
+    public static final int					NET_CAR_CONTROL_GUARANTEE_CAR = 9;
+    /**
+     *  关注车辆   "FollowCar"
+     */
+    public static final int					NET_CAR_CONTROL_FOLLOW_CAR = 10;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java
new file mode 100644
index 0000000..1c3486f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_VIFORMAT_TYPE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 采集源分辨率
+ * @date 2022/07/22 13:41:06
+ */
+public enum EM_NET_VIFORMAT_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_NET_VIFORMAT_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 表示正常分辨率
+	 */
+	EM_NET_VIFORMAT_TYPE_NORMAL(0, "表示正常分辨率"),
+	/**
+	 * 表示不支持的分辨率
+	 */
+	EM_NET_VIFORMAT_TYPE_UNSUPPORT(1, "表示不支持的分辨率"),
+	/**
+	 * 表示未接采集源
+	 */
+	EM_NET_VIFORMAT_TYPE_NOT_CONNECTED(2, "表示未接采集源");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_NET_VIFORMAT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_NET_VIFORMAT_TYPE enumType : EM_NET_VIFORMAT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_NET_VIFORMAT_TYPE enumType : EM_NET_VIFORMAT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_NET_VIFORMAT_TYPE getEnum(int value) {
+		for (EM_NET_VIFORMAT_TYPE e : EM_NET_VIFORMAT_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_NET_VIFORMAT_TYPE.EM_NET_VIFORMAT_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java
new file mode 100644
index 0000000..8f9f9dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_MODE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 工作模式
+* @date 2022/03/08 09:56:02
+*/
+public enum EM_NET_WIEGAND_MODE {
+/**
+未知
+*/
+EM_NET_WIEGAND_TRANSFER_MODE_UNKNOWN(-1,"未知"),
+/**
+韦根输入
+*/
+EM_NET_WIEGAND_TRANSFER_MODE_INPUT(0,"韦根输入"),
+/**
+韦根输出
+*/
+EM_NET_WIEGAND_TRANSFER_MODE_OUTPUT(1,"韦根输出");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_WIEGAND_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_WIEGAND_MODE enumType : EM_NET_WIEGAND_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_WIEGAND_MODE enumType : EM_NET_WIEGAND_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_NET_WIEGAND_MODE getEnum(int value) {
+        for (EM_NET_WIEGAND_MODE e : EM_NET_WIEGAND_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_WIEGAND_MODE.EM_NET_WIEGAND_TRANSFER_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java
new file mode 100644
index 0000000..cfb9d00
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_OUT_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 输出类型
+* @date 2022/03/08 09:56:03
+*/
+public enum EM_NET_WIEGAND_OUT_TYPE {
+/**
+未知
+*/
+EM_NET_WIEGAND_OUT_TYPE_UNKNOWN(-1,"未知"),
+/**
+输出ID
+*/
+EM_NET_WIEGAND_OUT_TYPE_ID(0,"输出ID"),
+/**
+输出卡号
+*/
+EM_NET_WIEGAND_OUT_TYPE_CARD_NO(1,"输出卡号");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_WIEGAND_OUT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_WIEGAND_OUT_TYPE enumType : EM_NET_WIEGAND_OUT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_WIEGAND_OUT_TYPE enumType : EM_NET_WIEGAND_OUT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_NET_WIEGAND_OUT_TYPE getEnum(int value) {
+        for (EM_NET_WIEGAND_OUT_TYPE e : EM_NET_WIEGAND_OUT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_WIEGAND_OUT_TYPE.EM_NET_WIEGAND_OUT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java
new file mode 100644
index 0000000..489580a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NET_WIEGAND_TRANSFER_MODE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 传输模式
+* @date 2022/03/08 09:56:03
+*/
+public enum EM_NET_WIEGAND_TRANSFER_MODE {
+/**
+未知
+*/
+EM_NET_WIEGAND_MODE_UNKNOWN(-1,"未知"),
+/**
+韦根34bit传输,4字节卡号,2Bit校验;
+*/
+EM_NET_WIEGAND_MODE_BIT_34(0,"韦根34bit传输,4字节卡号,2Bit校验;"),
+/**
+韦根66bit传输,8字节卡号,2Bit校验;
+*/
+EM_NET_WIEGAND_MODE_BIT_66(1,"韦根66bit传输,8字节卡号,2Bit校验;"),
+/**
+韦根26bit传输,3字节卡号,2Bit校验;
+*/
+EM_NET_WIEGAND_MODE_BIT_26(2,"韦根26bit传输,3字节卡号,2Bit校验;"),
+/**
+韦根32bit传输,4字节卡号,无校验位
+*/
+EM_NET_WIEGAND_MODE_BIT_32(3,"韦根32bit传输,4字节卡号,无校验位"),
+/**
+韦根42bit传输,5字节卡号,2Bit校验
+*/
+EM_NET_WIEGAND_MODE_BIT_42(4,"韦根42bit传输,5字节卡号,2Bit校验");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_NET_WIEGAND_TRANSFER_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_NET_WIEGAND_TRANSFER_MODE enumType : EM_NET_WIEGAND_TRANSFER_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_NET_WIEGAND_TRANSFER_MODE enumType : EM_NET_WIEGAND_TRANSFER_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_NET_WIEGAND_TRANSFER_MODE getEnum(int value) {
+        for (EM_NET_WIEGAND_TRANSFER_MODE e : EM_NET_WIEGAND_TRANSFER_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NET_WIEGAND_TRANSFER_MODE.EM_NET_WIEGAND_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_CONFIG.java
new file mode 100644
index 0000000..8252742
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_CONFIG.java
@@ -0,0 +1,407 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.CFG_MOTION_INFO;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 配置命令 对应接口{@link NetSDKLib#CLIENT_GetNewDevConfig(NetSDKLib.LLong, String, int,
+ *     byte[], int, IntByReference, int)} {@link NetSDKLib#CLIENT_SetNewDevConfig(NetSDKLib.LLong,
+ *     String, int, byte[], int, IntByReference, IntByReference, int)}
+ * @date 2020/11/9
+ */
+public enum EM_NEW_CONFIG {
+  /** 动态检测报警配置(对应 {@link CFG_MOTION_INFO}) */
+  CFG_CMD_MOTIONDETECT("MotionDetect"),
+  /** 视频编码物件配置(对应 {@link NetSDKLib.NET_CFG_VideoWidget} ) */
+  CFG_CMD_VIDEOWIDGET("VideoWidget"),
+  /** 视频分析全局配置(对应{@link NetSDKLib.CFG_ANALYSEGLOBAL_INFO}) */
+  CFG_CMD_ANALYSEGLOBAL("VideoAnalyseGlobal"),
+  /** 物体的检测模块配置(对应 {@link NetSDKLib.CFG_ANALYSEMODULES_INFO}) */
+  CFG_CMD_ANALYSEMODULE("VideoAnalyseModule"),
+  /** 视频分析规则配置(对应 {@link NetSDKLib.CFG_ANALYSERULES_INFO}) */
+  CFG_CMD_ANALYSERULE("VideoAnalyseRule"),
+  /** 视频输入前端选项(对应{@link NetSDKLib.CFG_VIDEO_IN_OPTIONS}) */
+  CFG_CMD_VIDEOINOPTIONS("VideoInOptions"),
+  /** 雨刷模式相关配置(对应{@link NetSDKLib.CFG_RAINBRUSHMODE_INFO}数组) */
+  CFG_CMD_RAINBRUSHMODE("RainBrushMode"),
+  /** 雨刷配置(对应{@link NetSDKLib.CFG_RAINBRUSH_INFO}) */
+  CFG_CMD_RAINBRUSH("RainBrush"),
+  /** 图像通道属性配置(对应{@link NetSDKLib.CFG_ENCODE_INFO}) */
+  CFG_CMD_ENCODE("Encode"),
+  /** 云台通道变倍配置(对应{@link NetSDKLib.CFG_VIDEO_IN_ZOOM}) */
+  CFG_CMD_VIDEO_IN_ZOOM("VideoInZoom"),
+  /** 远程设备信息(对应 {@link NetSDKLib.AV_CFG_RemoteDevice} 数组), 通道无关) */
+  CFG_CMD_REMOTEDEVICE("RemoteDevice"),
+  /** 视频分析资源配置(对应 {@link NetSDKLib.CFG_ANALYSESOURCE_INFO}) */
+  CFG_CMD_ANALYSESOURCE("VideoAnalyseSource"),
+  /** 智能交通全局配置({@link NetSDKLib.CFG_TRAFFICGLOBAL_INFO}) */
+  CFG_CMD_TRAFFICGLOBAL("TrafficGlobal"),
+  /** 录像模式(对应 {@link NetSDKLib.AV_CFG_RecordMode} ) */
+  CFG_CMD_RECORDMODE("RecordMode"),
+  /** 警灯配置(对应 {@link NetSDKLib.CFG_ALARMLAMP_INFO}) */
+  CFG_CMD_ALARMLAMP("AlarmLamp"),
+  /** 报警输出通道配置(对应 {@link NetSDKLib.CFG_ALARMOUT_INFO} ) */
+  CFG_CMD_ALARMOUT("AlarmOut"),
+  /** 智能交通抓拍(对应 {@link NetSDKLib.CFG_TRAFFICSNAPSHOT_INFO} ) */
+  CFG_CMD_INTELLECTIVETRAFFIC("TrafficSnapshot"),
+  /** 智能交通抓拍( {@link NetSDKLib.CFG_TRAFFICSNAPSHOT_NEW_INFO} ) */
+  CFG_CMD_TRAFFICSNAPSHOT_MULTI("TrafficSnapshotNew"),
+  /** 时间同步服务器(对应 {@link NetSDKLib.CFG_NTP_INFO} ) */
+  CFG_CMD_NTP("NTP"),
+  /** 外部输入报警配置(对应 CFG_ALARMIN_INFO) */
+  CFG_CMD_ALARMINPUT("Alarm"),
+  /** 网络协议配置(对应 {@link NetSDKLib.CFG_DVRIP_INFO}) */
+  CFG_CMD_DVRIP("DVRIP"),
+  /** 网络配置(对应 {@link NetSDKLib.CFG_NETWORK_INFO}) */
+  CFG_CMD_NETWORK("Network"),
+  /** 电视墙配置(对应 {@link NetSDKLib.AV_CFG_MonitorWall} 数组), 通道无关) */
+  CFG_CMD_MONITORWALL("MonitorWall"),
+  /** RTMP配置(对应 {@link NetSDKLib.CFG_RTMP_INFO}) */
+  CFG_CMD_RTMP("RTMP"),
+  /** 门禁事件配置(对应 {@link NetSDKLib.CFG_ACCESS_EVENT_INFO} 数组) */
+  CFG_CMD_ACCESS_EVENT("AccessControl"),
+  /** 门禁刷卡时间段(对应 {@link NetSDKLib.CFG_ACCESS_TIMESCHEDULE_INFO}) */
+  CFG_CMD_ACCESSTIMESCHEDULE("AccessTimeSchedule"),
+  /** 普通配置 (对应 {@link NetSDKLib.CFG_DEV_DISPOSITION_INFO}) */
+  CFG_CMD_DEV_GENERRAL("General"),
+  /** 视频诊断参数表({@link NetSDKLib.CFG_VIDEODIAGNOSIS_PROFILE}) */
+  CFG_CMD_VIDEODIAGNOSIS_PROFILE("VideoDiagnosisProfile"),
+  /** 视频诊断任务表({@link NetSDKLib.CFG_VIDEODIAGNOSIS_TASK}) */
+  CFG_CMD_VIDEODIAGNOSIS_TASK("VideoDiagnosisTask"),
+  /** 视频诊断任务表({@link NetSDKLib.CFG_VIDEODIAGNOSIS_TASK}) */
+  CFG_CMD_VIDEODIAGNOSIS_TASK_ONE("VideoDiagnosisTask.x"),
+  /** 视频诊断计划表({@link NetSDKLib.CFG_VIDEODIAGNOSIS_PROJECT}) */
+  CFG_CMD_VIDEODIAGNOSIS_PROJECT("VideoDiagnosisProject"),
+  /** 热成像摄像头属性配置({@link NetSDKLib.CFG_THERMOGRAPHY_INFO}) */
+  CFG_CMD_THERMO_GRAPHY("ThermographyOptions"),
+  /** 热成像测温规则配置(对应 {@link NetSDKLib.CFG_RADIOMETRY_RULE_INFO}) */
+  CFG_CMD_THERMOMETRY_RULE("ThermometryRule"),
+  /** 温度统计配置({@link NetSDKLib.CFG_TEMP_STATISTICS_INFO}) */
+  CFG_CMD_TEMP_STATISTICS("TemperatureStatistics"),
+  /** 热成像测温全局配置({@link NetSDKLib.CFG_THERMOMETRY_INFO}) */
+  CFG_CMD_THERMOMETRY("HeatImagingThermometry"),
+  /** 通道录像组状态(对应 {@link NetSDKLib.CFG_DEVRECORDGROUP_INFO}) */
+  CFG_CMD_DEVRECORDGROUP("DevRecordGroup"),
+  /** 存储组信息(对应 {@link NetSDKLib.AV_CFG_StorageGroup}数组), 通道无关) */
+  CFG_CMD_STORAGEGROUP("StorageGroup"),
+  /** 云台巡航路径配置(对应 {@link NetSDKLib.CFG_PTZTOUR_INFO}) */
+  CFG_CMD_PTZTOUR("PtzTour"),
+  /** 云台预置点配置(对应结构 {@link NetSDKLib.PTZ_PRESET_INFO}) */
+  CFG_CMD_PTZ_PRESET("PtzPreset"),
+  /** 输入通道配置(对应 {@link NetSDKLib.CFG_VIDEO_IN_INFO}) */
+  CFG_CMD_VIDEOIN("VideoIn"),
+  /** 通道名称(对应 {@link NetSDKLib.AV_CFG_ChannelName}) */
+  CFG_CMD_CHANNELTITLE("ChannelTitle"),
+  /** 设备通过Wifi模块扫描周围无线设备配置({@link NetSDKLib.CFG_WIFI_SEARCH_INFO}) */
+  CFG_CMD_WIFI_SEARCH("AroudWifiSearch"),
+  /** 定时录像配置(对应 {@link NetSDKLib.CFG_RECORD_INFO}) */
+  CFG_CMD_RECORD("Record"),
+  /** 检测采集设备配置({@link NetSDKLib.CFG_SCADA_DEV_INFO}) */
+  CFG_CMD_SCADA_DEV("SCADADev"),
+  /** 告警屏蔽规则( CFG_ALARM_SHIELD_RULE_INFO) */
+  CFG_CMD_ALARM_SHIELD_RULE("AlarmShieldRule"),
+  /** 刻录配置(对应 CFG_JUDICATURE_INFO) */
+  CFG_CMD_JUDICATURE("Judicature"),
+  /** 云台配置(对应 CFG_PTZ_INFO) */
+  CFG_CMD_PTZ("Ptz"),
+  /** 云台定时动作配置(对应 CFG_PTZ_AUTOMOVE_INFO)*/
+  CFG_CMD_PTZ_AUTO_MOVEMENT("PtzAutoMovement"),
+  /** 多人多开门方式组合配置(CFG_OPEN_DOOR_GROUP_INFO) */
+  CFG_CMD_OPEN_DOOR_GROUP("OpenDoorGroup"),
+  /** 车位指示灯本机配置(对应 CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL) */
+  CFG_CMD_PARKING_SPACE_LIGHT_GROUP("ParkingSpaceLightGroup"),
+  /** 灯光设备配置 (对应结构体 CFG_LIGHT_INFO) */
+  CFG_CMD_LIGHT("Light"),
+  /** 灯光设置(CFG_LIGHTING_INFO) */
+  CFG_CMD_LIGHTING("Lighting"),
+  /** 合成通道配置(对应 {@link NetSDKLib.CFG_COMPOSE_CHANNEL}) */
+  CFG_CMD_COMPOSE_CHANNEL("ComposeChannel"),
+  /** 审讯画中画(对应 CFG_PICINPIC_INFO)改为数组方式,兼容以前单个配置,根据长度区分 */
+  CFG_CMD_PICINPIC("PicInPic"),
+  /** 空闲动作配置(CFG_IDLE_MOTION_INFO) */
+  CFG_CMD_IDLEMOTION_INFO("IdleMotion"),
+  /** 语音激励(对应 {@link com.netsdk.lib.structure.CFG_AUDIO_SPIRIT}) */
+  CFG_CMD_AUDIO_SPIRIT("AudioSpirit"),
+  /** 设备安装位置的GPS坐标信息(对应 {@link com.netsdk.lib.structure.CFG_DEVLOCATION_INFO}) */
+  CFG_CMD_DEVLOCATION("DevLocation"),
+  /** 设备参数标定配置(对应 {@link com.netsdk.lib.structure.CFG_LOCATION_CALIBRATE_INFO}) */
+  CFG_CMD_LOCATION_CALIBRATE("LocationCalibrate"),
+  /** 门禁基本配置(对应 {@link com.netsdk.lib.structure.CFG_ACCESS_GENERAL_INFO}) */
+  CFG_CMD_ACCESS_GENERAL("AccessControlGeneral"),
+  /** 无线网络连接设置(对应 CFG_WIRELESS_INFO) */
+  CFG_CMD_WIRELESS("Wireless"),
+  /** 报警服务器配置(对应 CFG_ALARMCENTER_INFO) */
+  CFG_CMD_ALARMSERVER("AlarmServer"),
+  /** 报警全局配置(对应 CFG_COMMGLOBAL_INFO) */
+  CFG_CMD_COMMGLOBAL("CommGlobal"),
+  /** 模拟量报警通道配置(对应 CFG_ANALOGALARM_INFO) */
+  CFG_CMD_ANALOGALARM("AnalogAlarm"),
+  /** 警号配置(对应 CFG_ALARMBELL_INFO) */
+  CFG_CMD_ALARMBELL("AlarmBell"),
+  /** 移动相关业务配置(对应 CFG_MOBILE_INFO) */
+  CFG_CMD_MOBILE("Mobile"),
+  /** // (对应 CFG_PHONEEVENTNOTIFY_INFO) */
+  CFG_CMD_PHONEEVENTNOTIFY("PhoneEventNotify"),
+  /** // 电话报警中心配置(CFG_PSTN_ALARM_CENTER_INFO) */
+  CFG_CMD_PSTN_ALARM_SERVER("PSTNAlarmServer"),
+  /** // 音频输出音量(CFG_AUDIO_OUTPUT_VOLUME) */
+  CFG_CMD_AUDIO_OUTPUT_VOLUME("AudioOutputVolume"),
+  /** // 音频输入音量(CFG_AUDIO_INPUT_VOLUME) */
+  CFG_CMD_AUDIO_INPUT_VOLUME("AudioInputVolume"),
+  /** // 指示灯控制配置 (CFG_LIGHT_GLOBAL) */
+  CFG_CMD_LIGHT_GLOBAL("LightGlobal"),
+  /** // 混合音频音量,用于庭审主机(CFG_AUDIO_MIX_VOLUME) */
+  CFG_CMD_AUDIO_MIX_VOLUME("AudioMixVolume"),
+  /** // 报警键盘配置(CFG_ALARMKEYBOARD_INFO) */
+  CFG_CMD_ALARMKEYBOARD("AlarmKeyboard"),
+  /** // 电源故障配置(CFG_POWERFAULT_INFO) */
+  CFG_CMD_POWERFAULT("PowerFault"),
+  /** // 机箱入侵报警(防拆报警)配置(CFG_CHASSISINTRUSION_INFO) */
+  CFG_CMD_CHASSISINTRUSION("ChassisIntrusion"),
+  /** // 扩展报警盒配置 (CFG_EXALARMBOX_INFO) */
+  CFG_CMD_EXALARMBOX("ExAlarmBox"),
+  /** // 扩展报警输出配置(CFG_EXALARMOUTPUT_INFO) */
+  CFG_CMD_EXALARMOUTPUT("ExAlarmOut"),
+  /** // 扩展报警输入配置(CFG_EXALARMINPUT_INFO) */
+  CFG_CMD_EXALARMINPUT("ExAlarm"),
+  /** // 紧急事件配置(CFG_URGENCY_INFO) */
+  CFG_CMD_URGENCY("Emergency"),
+  /** // 传感器采样(CFG_SENSORSAMPLING_INFO) */
+  CFG_CMD_SENSORSAMPLING("SensorSampling"),
+  CFG_CMD_STP("STP"), // 环网配置(CFG_STP_INFO)
+  /** // 报警子系统配置(CFG_ALARM_SUBSYSTEM_INFO) */
+  CFG_CMD_ALARM_SUBSYSTEM("AlarmSubSystem"),
+  /** // 电池电量低配置(CFG_BATTERY_LOW_POWER_INFO) */
+  CFG_CMD_BATTERY_LOW_POWER("BatteryLowPowerAlarm"),
+  /** // 抓图通道联动外设配置(CFG_SNAPLINKAGE_INFO) */
+  CFG_CMD_SNAPLIKAGE("SnapLinkage"),
+  /** // 音频输入配置(CFG_AUDIO_INPUT) */
+  CFG_CMD_AUDIOINPUT("AudioInput"),
+  CFG_CMD_EMAIL("Email"), // 邮件发送配置(CFG_EMAIL_INFO)
+  CFG_CMD_TRAFFIC_TRANSFER_OFFLINE(
+      "TrafficTransferOffline"), // 传输离线文件配置(TRAFFIC_TRANSFER_OFFLINE_INFO)
+  CFG_CMD_COMMSUBSCRIBE("CommSubscribe"), // 订阅串口数据配置(CFG_DEVCOMM_SUBSCRIBE)
+  CFG_CMD_PARKINGSPACE_LIGHT_STATE(
+      "ParkingSpaceLightState"), // 车位状态对应的车位指示灯(CFG_PARKINGSPACE_LIGHT_STATE)
+  CFG_CMD_AIRCONDITION("AirCondition"), // 空调设备配置(CFG_AIRCONDITION_INFO)
+  CFG_CMD_COMPRESS_PLAY("CompressPlay"), // 压缩回放配置(CFG_COMPRESS_PLAY_INFO)
+  CFG_CMD_BUILDING("Building"), // VTO楼层配置(CFG_BUILDING_INFO)
+  CFG_CMD_BUILDING_EXTERNAL("BuildingExternal"), // VTO楼层扩展配置(CFG_BUILDING_EXTERNAL_INFO)
+  CFG_CMD_DIALRULE("DialRule"), // 拨号规则(CFG_DIALRULE_INFO)
+  CFG_CMD_OIL_MASS_INFO("OilMassInfo"), // 车辆油箱配置(CFG_OIL_MASS_INFO)
+  CFG_CMD_FISHEYE_INFO("FishEye"), // 鱼眼详细信息配置(CFG_FISHEYE_DETAIL_INFO)
+  CFG_CMD_VTNOANSWER_FORWARD("VTNoAnswerForward"), // 平台下发呼叫无应答转移配置列表
+  // (CFG_VT_NOANSWER_FORWARD_INFO)
+  CFG_CMD_VTO_CALL("VTOCall"), // VTO呼叫配置(CFG_VTO_CALL_INFO)
+  CFG_CMD_MACCONFLICT("MacConflict"), // MAC冲突报警配置(CFG_MACCONFLICT_INFO)
+  CFG_CMD_MONITORWALL_COLL_TOUR("MonitorWallCollectionTour"), // 电视墙预案轮巡配置
+  // (CFG_MONITORWALL_COLLECTION_TOUR_INFO)
+  CFG_CMD_PSTN_BREAK_LINE("PSTNBreakLine"), // PSTN断线事件配置(CFG_PSTN_BREAK_LINE_INFO)
+  CFG_CMD_NET_COLLECTION("NetCollection"), // 网络采集设备配置(CFG_NET_COLLECTION_INFO)
+  CFG_CMD_ALARM_SLOT_BOND("AlarmSlotBond"), // 虚拟Slot节点与具体物理设备的对应关系
+  // (CFG_ALARM_SLOT_BOND_INFO)
+  CFG_CMD_TRAFFICSTROBE("TrafficStrobe"), // 道闸配置(CFG_TRAFFICSTROBE_INFO)
+  CFG_CMD_TRAFFICVOICE("TrafficVoiceBroadcast"), // 智能交通语音播报配置( CFG_TRAFFICVOICE_BROADCAST)
+  CFG_CMD_STANDING_TIME("StandingTime"), // 停车时间配置(CFG_STANDING_TIME_INFO)
+  CFG_CMD_ENCLOSURE_TIME_SCHEDULE("EnclosureTimeSchedule"), // 电子围栏报警时间段配置
+  // (CFG_ENCLOSURE_TIME_SCHEDULE_INFO)
+  CFG_CMD_ECKCONFIG("ECKConfig"), // 停车场出入口控制器配置(CFG_ECKCONFIG_INFO)
+  CFG_CMD_PARKING_CARD("ParkingCard"), // 停车场出入口刷卡报警事件配置(CFG_PARKING_CARD_INFO)
+  CFG_CMD_RCEMERGENCY_CALL("RCEmergencyCall"), // 紧急呼叫报警事件配置(CFG_RCEMERGENCY_CALL_INFO)
+  CFG_CMD_LANES_STATE_REPORT("LanesStateReport"), // 车道信息上报配置(CFG_LANES_STATE_REPORT)
+  CFG_CMD_OPEN_DOOR_ROUTE("OpenDoorRoute"), // 开门路线集合,或称防反潜路线配置(CFG_OPEN_DOOR_ROUTE_INFO)
+  CFG_CMD_BURNPLAN("BurnPlan"), // 刻录计划配置(对应 CFG_BURNPLAN_INFO)
+  CFG_CMD_VSP_GAYS("VSP_GAYS"), // 平台接入配置(CFG_VSP_GAYS_INFO)
+  CFG_CMD_AUDIODETECT("AudioDetect"), // 音频检测报警配置(CFG_AUDIO_DETECT_INFO数组)
+  CFG_CMD_GUIDESCREEN("GuideScreen"), // 诱导屏系统配置(CFG_GUIDESCREEN_INFO)
+  CFG_CMD_VTS_CALL_INFO("VTSCallInfo"), // VTS呼叫配置(CFG_VTS_CALL_INFO)
+  CFG_CMD_DEV_LIST("DevList"), // 设备列表配置(CFG_DEV_LIST_INFO)
+  CFG_CMD_CALIBRATE_MATRIX("CalibrateMatrix"), // 主从式跟踪器标定矩阵配置(CFG_CALIBRATE_MATRIX_INFO,
+  // 新配置对应CFG_CALIBRATE_MATRIX_EX_INFO)
+  CFG_CMD_DEFENCE_AREA_DELAY("DefenceAreaDelay"), // 防区延时配置(CFG_DEFENCE_AREA_DELAY_INFO)
+  CFG_CMD_FLAT_FIELD_CORRECTION(
+      "FlatFieldCorrection"), // 热成像平场聚焦校准配置(CFG_FLAT_FIELD_CORRECTION_INFO)
+  CFG_CMD_THERMO_FUSION("ThermographyFusion"), // 热成像视频融合配置(CFG_THERMO_FUSION_INFO)
+  CFG_CMD_LCE_STATE("LCEState"), // 热成像自研机芯中摄像头属性的局部对比度增强配置(CFG_LCE_STATE_INFO)
+  CFG_CMD_LIGHTINGSCHEDULE("LightingSchedule"), // 灯光计划配置(对应 CFG_LIGHTINGSCHEDULE_INFO)
+  CFG_CMD_EMERGENCY_RECORD_FOR_PULL("EmergencyRecordForPull"), //
+  // 紧急录像存储配置,用于客户端主动拉的方式。在客户端拉流存储异常之后,进行紧急录像存储(CFG_EMERGENCY_RECORD_FOR_PULL_INFO)
+  CFG_CMD_VIDEOIN_ANALYSERULE("VideoInAnalyseRule"), // 视频通道智能规则配置(CFG_VIDEOIN_ANALYSE_RULE_INFO)
+  CFG_CMD_ACCESS_WORK_MODE("AccessWorkMode"), // 门锁工作模式(对应 CFG_ACCESS_WORK_MODE_INFO 数组)
+  CFG_CMD_VIDEO_TALK_PHONE_GENERAL(
+      "VideoTalkPhoneGeneral"), // 视频对讲电话通用配置(CFG_VIDEO_TALK_PHONE_GENERAL)
+  CFG_CMD_TRAFFIC_SNAP_MOSAIC("TrafficSnapMosaic"), // 抓图合成配置(对应 CFG_TRAFFIC_SNAP_MOSAIC_INFO)
+  CFG_CMD_SCENE_SNAP_RULE("SceneSnapShotWithRule"), // 场景抓拍设置(对应 CFG_SCENE_SNAPSHOT_RULE_INFO)
+  CFG_CMD_VTO_INFO("VTOInfo"), // 门口机配置(对应 CFG_VTO_LIST)
+  CFG_CMD_TS_POINT("TSPoint"), // 触摸屏校准配置(对应 CFG_TSPOINT_INFO)
+  CFG_CMD_VTH_NUMBER_INFO("VTHNumberInfo"), // 室内机号码信息(对应 CFG_VTH_NUMBER_INFO)
+  CFG_CMD_GPS("GPS"), // GPS配置(对应 CFG_GPS_INFO_ALL)
+  CFG_CMD_VTO_BASIC_INFO("VTOBasicInfo"), // VTO基本信息 (对应 CFG_VTO_BASIC_INFO)
+  CFG_CMD_SHORTCUT_CALL("ShortcutCall"), // 快捷号配置 (对应 CFG_SHORTCUT_CALL_INFO)
+  CFG_CMD_GPS_LOCATION_VER("GPSLocationVersion"), // 记录集GPSLocation的版本号(对应 CFG_LOCATION_VER_INFO)
+  CFG_CMD_PARKING_SPACE_ACCESS_FILTER("ParkingSpaceAccessFilter"), // 设备可访问地址过滤配置(对应
+  // CFG_PARKING_SPACE_ACCESS_FILTER_INFO)
+  CFG_CMD_WORK_TIME("WorkTime"), // 工作时间配置(对应 CFG_WORK_TIME_INFO)
+  // CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL)
+  CFG_CMD_CUSTOM_AUDIO("CustomAudio"), // 自定义音频配置(CFG_CUSTOM_AUDIO)
+  // CFG_WIFI_SEARCH_INFO)
+  CFG_CMD_G3G4AUTOCHANGE("G3G4AutoChange"), // 车载设备通信模块3G 4G自动切换(CFG_G3G4AUTOCHANGE)
+  CFG_CMD_CHECKCODE("CheckCode"), // 刷卡机校验码校验配置(对应 CFG_CHECKCODE_INFO)
+  CFG_CMD_VSP_SCYDKD("VSP_SCYDKD"), // 四川移动看店启迪平台接入配置(对应 CFG_VSP_SCYDKD_INFO)
+  CFG_CMD_VIDEOIN_DAYNIGHT("VideoInDayNight"), // 球机机芯日夜配置(对应 CFG_VIDEOIN_DAYNIGHT_INFO)
+  CFG_CMD_PTZ_POWERUP("PowerUp"), // 云台开机动作设置(对应 CFG_PTZ_POWERUP_INFO)
+  CFG_CMD_AUDIO_MIX_CHANNEL("AudioMixChannel"), // 配置定义每个纯音频通道的组成(对应
+  // CFG_AUDIO_MIX_CHANNEL_INFO_ALL)
+  CFG_CMD_AUDIO_TOUCH("AudioTouch"), // 变音,对音调进行变化(对应 CFG_AUDIO_TOUCH_INFO_ALL)
+  CFG_CMD_VIDEO_MOSAIC("VideoMosaic"), // 马赛克叠加配置(对应CFG_VIDEO_MOSAIC_INFO)
+  CFG_CMD_VTH_REMOTE_IPC_INFO("VTHRemoteIPCInfo"), // VTH中远程IPC配置(对应 CFG_VTH_REMOTE_IPC_INFO)
+  // ,该配置是全局的,不区分通道
+  CFG_CMD_UNFOCUSDETECT("UnFocusDetect"), // 虚焦检测配置(对应CFG_UNFOCUSDETECT_INFO)
+  CFG_CMD_MOVE_DETECT("MovedDetect"), // 场景变更检测配置(对应CFG_MOVE_DETECT_INFO)
+  CFG_CMD_FLOODLIGHT("Floodlight"), // 防护舱照明灯控制配置(对应
+  // CFG_FLOODLIGHT_CONTROLMODE_INFO)
+  CFG_CMD_AIRFAN("AirFan"), // 防护舱风扇控制配置(对应 CFG_AIRFAN_CONTROLMODE_INFO)
+  CFG_CMD_WLAN("WLan"), // WLAN配置(对应 CFG_NETAPP_WLAN)
+  CFG_CMD_SMART_ENCODE("SmartEncode"), // Smart H264编码方式(对应 CFG_SMART_ENCODE_INFO)
+  CFG_CMD_VEHICLE_HIGH_SPEED("HighSpeed"), // 车载高速报警配置(对应 CFG_VEHICLE_HIGHSPEED_INFO )
+  CFG_CMD_VEHICLE_LOW_SPEED("LowSpeed"), // 车载低速报警配置(对应 CFG_VEHICLE_LOWSPEED_INFO )
+  CFG_CMD_PSTN_PERSON_SERVER("PSTNPersonServer"), // 个人电话接机配置(对应
+  // CFG_PSTN_PERSON_SERVER_INFO_ALL )
+  CFG_CMD_ARM_LINK("ArmLink"), // 布撤防联动配置(对应 CFG_ARMLINK_INFO )
+  CFG_CMD_CABINLED_TIME_SCHEDULE(
+      "CabinLedTimeSchedule"), // 防护舱Led显示计划配置(对应 CFG_CABINLED_TIME_SCHEDULE)
+  CFG_CMD_PSTN_TESTPLAN("PSTNTestPlan"), // PSTN 测试计划配置(对应 CFG_PSTN_TESTPLAN_INFO)
+  CFG_CMD_DEFENCE_ARMMODE("DefenceArmMode"), // 单防区布撤防使能配置(对应 CFG_DEFENCE_ARMMODE_INFO)
+  CFG_CMD_SENSORMODE("SensorMode"), // 探测器安装工作模式配置(对应 CFG_SENSORMODE_INFO)
+  CFG_CMD_RADAR_SPEED_MEASURE("RadarSpeedMeasure"), // 雷达测速配置 智能楼宇专用(对应
+  // CFG_RADAR_SPEED_MEASURE_INFO)
+  CFG_CMD_VIDEOINDEFOG("VideoInDefog"), // 透雾设置配置(对应结构体 CFG_VIDEOINDEFOG_LIST)
+  CFG_CMD_VIDEOIN_BACKLIGHT("VideoInBacklight"), // 光线环境配置(对应CFG_VIDEOIN_BACKLIGHT_INFO)
+  CFG_CMD_AUDIO_OUT_EQUALIZER("AudioOutEqualizer"), // 音频输出均衡器配置(对应结构体CFG_AUDIO_OUTEQUALIZER_INFO)
+  CFG_CMD_AUDIO_OUT_SUPPRESSION("AudioOutSuppression"), // 音频抑制设置(对应结构体CFG_AUDIO_SUPPRESSION_INFO)
+  CFG_CMD_AUDIO_IN_CONTROL("AudioInControl"), // 音频输入控制(对应结构体CFG_AUDIO_INCONTROL_INFO)
+  CFG_CMD_LASER_DIST_MEASURE("LaserDistMeasure"), // 激光测距器配置(对应结构体 CFG_LASER_DIST_MEASURE_INFO)
+  CFG_CMD_OIL_4G_OVERFLOW("Oil4GFlow"), // 福山油田4G流量阈值及模式配置(对应结构体
+  // CFG_OIL_4G_OVERFLOW_INFO)
+  CFG_CMD_OIL_VIDEOWIDGET_4G_FLOW("VideoWidget4GFlow"), // 福山油田4G流量OSD叠加配置(对应结构体
+  // CFG_OIL_VIDEOWIDGET_4G_FLOW_INFO)
+  CFG_CMD_ATMOSPHERE_OSD("AtmosphereOSD"), // 气象信息叠加配置(对应结构体 CFG_CMD_ATMOSPHERE_OSD_INFO)
+  CFG_CMD_PARK_SPACE_OUT_LIGHT("ParkSpaceOutLight"), // 外接指示灯配置(对应结构体 CFG_PARK_SPACE_OUT_LIGHT_INFO)
+  CFD_CMD_VTO_CALL_INFO_EXTEND("VTOCallInfo"), // VTO呼叫配置扩展(对应结构体CFG_VTO_CALL_INFO_EXTEND)
+  CFG_CMD_ACCESS_TEXTDISPLAY("AccessControlTextDisplay"), // 门禁文字提示显示配置(对应结构体
+  // CFG_ACCESS_TEXTDISPLAY_INFO)
+  CFG_CMD_NETNVR_ENCRYPT("NvrEncrypt"), // 加密配置信息,涉及IPC和NVR(
+  // CFG_NETNVR_ENCRYPT_INFO )
+  CFG_CMD_CURTAIN("Curtain"), // 窗帘配置(对应结构体 CFG_CURTAIN_INFO)
+  CFG_CMD_FRESH_AIR("FreshAir"), // 新风配置(对应结构体 CFG_FRESH_AIR_INFO)
+  CFG_CMD_GROUND_HEAT("GroundHeat"), // 地暖配置(对应结构体 CFG_GROUND_HEAT_INFO)
+  CFG_CMD_SCENE_MODE("SceneMode"), // 情景模式(对应结构体 CFG_SCENE_MODE_INFO)
+  CFG_CMD_AIO_APP_CONFIG("AIOAppConfig"), // AIOAppConfig参数设置(对应结构体
+  // CFG_AIO_APP_CONFIG_INFO)
+  CFG_CMD_HTTPS("Https"), // Https服务配置(对应结构体 CFG_HTTPS_INFO)
+  CFG_CMD_NETAUTOADAPTORENCODE("NetAutoAdaptEncode"), // 网络自适应编码配置(对应结构体 CFG_NET_AUTO_ADAPT_ENCODE)
+  CFG_CMD_USERLOCKALARM("UserLockAlarm"), // 登陆锁定配置(对应结构体 CFG_USERLOCKALARM_INFO)
+  CFG_CMD_STROBOSCOPIC_LAMP("StroboscopicLamp"), // 频闪灯配置(对应结构体 CFG_STROBOSCOPIC_LAMP_INFO)
+  CFG_CMD_FREECOMBINATION("FreeCombination"), // 自由分割模式的窗口配置 CFG_FREECOMBINATION_INFO )
+  CFG_CMD_IOT_INFRARED_DETECT("IOT_InfraredDetect"), // 物联网红外检测配置(对应结构体CFG_IOT_INFRARED_DETECT_INFO)
+  CFG_CMD_IOT_RECORD_HANDLE("IOT_RecordHandle"), // 物联网录像联动配置(对应结构体CFG_IOT_RECORD_HANDLE_INFO)
+  CFG_CMD_IOT_SNAP_HANDLE("IOT_SnapHandle"), // 物联网抓图联动配置(对应结构体CFG_IOT_SNAP_HANDLE_INFO)
+  CFG_CMD_PLATFORM_MONITOR_IPC("PlatformMonitorIPC"), // 平台侧预览IPC配置 CFG_PLATFORMMONITORIPC_INFO )
+  CFG_CMD_CALLFORWARD("CallForward"), // 呼叫转移配置(对应结构体 CFG_CALLFORWARD_INFO)
+  CFD_CMD_DOORBELLSOUND("DoorBellSound"), // 门铃配置(对应结构体CFG_DOOR_BELLSOUND_INFO)
+  CFG_CMD_TELNET("Telnet"), // telnet配置(对应结构体CFG_TELNET_INFO)
+  CFG_CMD_OSDSYSABNORMAL("OSDSysAbnormal"), // 显示异常信息的叠加配置(对应结构体 CFG_OSD_SYSABNORMAL_INFO)
+  CFG_CMD_VIDEO_WIDGET2("VideoWidget2"), // 视频编码物件配置(对应结构体 CFG_VIDEO_WIDGET2_INFO)
+  CFG_CMD_VIDEOWIDGET_NUMBERSTAT("VideoWidgetNumberStat"), // 人数统计叠加OSD配置(对应结构体
+  // CFG_VIDEOWIDGET_NUMBERSTAT_INFO)
+  CFG_CMD_PRIVACY_MASKING("PrivacyMasking"), // 隐私遮挡设置(对应结构体 CFG_PRIVACY_MASKING_INFO)
+  CFG_CMD_DEVICE_INFO("DeviceInfo"), // 设备信息(对应结构体 CFG_DEVICE_INFO)
+  CFG_CMD_POLICEID_MAP_INFO("PoliceMap"), // 警员ID和设备通道映射关系信息(对应结构体 CFG_POLICEID_MAP_INFO)
+  CFG_CMD_GPS_NOT_ALIGNED("GpsNotAligned"), // GPS未定位配置(对应结构体 CFG_GPS_NOT_ALIGNED_INFO)
+  CFG_CMD_WIRELESS_NOT_CONNECTED("WireLessNotConnected"), // 网络未连接(包括wifi,3G/4G)配置(对应结构体
+  // CFG_WIRELESS_NOT_CONNECTED_INFO)
+  CFG_CMD_MCS_GENERAL_CAPACITY_LOW("MCSGeneralCapacityLow"), // 微云常规容量告警配置
+  // (对应结构体CFG_MCS_GENERAL_CAPACITY_LOW)
+  CFG_CMD_MCS_DATA_NODE_OFFLINE("MCSDataNodeOffline"), // 微云存储节点下线(对应结构体CFG_MCS_DATA_NODE_OFFLINE)
+  CFG_CMD_MCS_DISK_OFFLINE("MCSDiskOffline"), // 微云磁盘下线告警配置(对应结构体CFG_MCS_DISK_OFFLINE)
+  CFG_CMD_MCS_DISK_SLOW("MCSDiskSlow"), // 微云磁盘变慢告警配置(对应结构体CFG_MCS_DISK_SLOW)
+  CFG_CMD_MCS_DISK_BROKEN("MCSDiskBroken"), // 微云磁盘损坏告警配置(对应结构体CFG_MCS_DISK_BROKEN)
+  CFG_CMD_MCS_DISK_UNKNOW_ERROR(
+      "MCSDiskUnknowError"), // 微云磁盘未知错误告警配置(对应结构体CFG_MCS_DISK_UNKNOW_ERROR)
+  CFG_CMD_MCS_METADATA_SERVER_ABNORMAL("MCSMetadataServerAbnormal"), // 微云元数据服务器异常告警配置
+  // (对应结构体CFG_MCS_METADATA_SERVER_ABNORMAL)
+  CFG_CMD_MCS_CATALOG_SERVER_ABNORMAL("MCSCatalogServerAbnormal"), // 微云目录服务器异常告警配置
+  // (对应结构体CFG_MCS_CATALOG_SERVER_ABNORMAL)
+  CFG_CMD_MCS_GENERAL_CAPACITY_RESUME("MCSGeneralCapacityResume"), // 微云常规容量告警恢复告警配置
+  // (对应结构体CFG_MCS_GENERAL_CAPACITY_RESUME)
+  CFG_CMD_MCS_DATA_NODE_ONLINE("MCSDataNodeOnline"), // 微云存储节点上线告警配置
+  // (对应结构体CFG_MCS_DATA_NODE_ONLINE)
+  CFG_CMD_MCS_DISK_ONLINE("MCSDiskOnline"), // 微云磁盘上线告警配置(对应结构体CFG_MCS_DISK_ONLINE)
+  CFG_CMD_MCS_METADATA_SLAVE_ONLINE("MCSMetadataSlaveOnline"), // 微云元数据备机上线告警配置
+  // (对应结构体CFG_MCS_METADATA_SLAVE_ONLINE)
+  CFG_CMD_MCS_CATALOG_SERVER_ONLINE("MCSCatalogServerOnline"), // 微云目录服务器上线告警配置
+  // (对应结构体CFG_MCS_CATALOG_SERVER_ONLINE)
+  CFG_CMD_SECURITY_ALARMS_PRIVACY("SecurityAlarmsPrivacy"), // SecurityAlarms客户功能,隐私保护
+  // (对应结构体CFG_SECURITY_ALARMS_PRIVACY)
+  CFG_CMD_NO_FLY_TIME("NoFlyTime"), // 无人机禁飞时段配置 ( 对应结构体 CFG_NO_FLY_TIME_INFO )
+  CFG_CMD_PWD_RESET("PwdReset"), // 密码重置功能使能配置 ( 对应结构体 CFG_PWD_RESET_INFO )
+  CFG_CMD_NET_MONITOR_ABORT("NetMonitorAbort"), // 网络预览中断事件配置( 对应结构体
+  // CFG_NET_MONITOR_ABORT_INFO )
+  CFG_CMD_LOCAL_EXT_ALARM("LocalExtAlarm"), // 本地扩展报警配置 ( 对应结构体 CFG_LOCAL_EXT_ALARME_INFO )
+  CFG_CMD_ACCESSCONTROL_DELAYSTRATEGY("DelayStrategy"), // 门禁卡欠费与预欠费状态配置(对应结构体
+  // CFG_ACCESSCONTROL_DELAYSTRATEGY)
+  CFG_CMD_VIDEO_TALK_PHONE_BASIC("VideoTalkPhoneBasic"), // 视频对讲电话基础配置( 对应结构体
+  // CFG_VIDEO_TALK_PHONE_BASIC_INFO )
+  CFG_CMD_APP_EVENT_LANGUAGE("AppEventLanguage"), // 手机推送消息的翻译目标语言配置(对应结构体
+  // CFG_APP_EVENT_LANGUAGE_INFO )
+  CFG_CMD_LOGIN_FAILURE_ALARM("LoginFailureAlarm"), // 登陆失败报警配置(对应结构体 CFG_LOGIN_FAILURE_ALARM)
+  CFG_CMD_DROPBOXTOKEN("DropBoxToken"), // Dropbox Token 配置( 对应结构体
+  // CFG_DROPBOXTOKEN_INFO)
+  CFG_CMD_IDLINGTIME("IdlingTime"), // 怠速配置(对应结构体 CFG_IDLINGTIME_INFO)
+  CFG_CMD_CARDIVERSTATE("CarDiverState"), // 汽车行驶状态配置(对应结构体 CFG_CARDIVERSTATE_INFO)
+  CFG_CMD_VEHICLE("Vehicle"), // 车载配置(对应结构体 CFG_VEHICLE_INFO)
+  CFG_CMD_PTZDEVICE("PtzDevice"), // 模拟云台配置( 对应结构体 CFG_PTZDEVICE_INFO)
+  CFG_CMD_SMARTHOME_SCENELIST("SmartHomeSceneList"), // 美的地产智能家居场景列表
+  // (对应结构体CFG_SMARTHOME_SCENELIST_INFO)
+  CFG_CMD_LIGHTING_V2("Lighting_V2"), // 全彩相机补光灯灵敏度配置(对应结构体 CFG_LIGHTING_V2_INFO)
+  CFG_CMD_KBUSER_PASSWORD("KbuserPassword"), // 键盘操作员用户配置(对应结构体CFG_KBUSER_USERS_INFO)
+  CFG_CMD_ACCESS_OEM("AccessOEMSettings"), // 工行金库门禁信息配置,对应结构体CFG_ACCESS_OEM_INFO
+  CFG_CMD_FIRE_WARNING_EXT("FireWarningExt"), // 火警配置扩展(对应结构体CFG_FIREWARNING_EXT_INFO)
+  CFG_CMD_THERM_DENOISE("ThermDenoise"), // 热成像特有的机芯降噪,对应结构体CFG_THERM_DENOISE
+  CFG_CMD_CONSTANT_LAMP("ConstantLamp"), // 智能交通灯光配置,对应结构体CFG_CONSTANT_LAMP_INFO
+  CFG_CMD_TRAFFIC_IO("TrafficIO"), // 线圈IO配置,对应结构体CFG_TRAFFIC_IO
+  CFG_CMD_MONITOR_WALL_COLLECTION_MAP("MonitorWallCollectionMap"), // 电视墙预关联配置,
+  // 对应结构体CFG_MONITOR_WALL_COLLECTION_MAP_INFO,通道只支持传-1
+  CFG_CMD_VIDEO_INPUT_GROUP("VideoInputGroup"), // 视频输入组配置,对应结构体CFG_VIDEO_INPUT_GROUP_INFO
+  CFG_CMD_DOOR_NOT_CLOSE("DoorNotClosed"), // 门未关报警,对应结构体 CFG_DOOR_NOT_CLOSE_INFO
+  CFG_CMD_BREAK_IN("BreakIn"), // 闯入报警,对应结构体 CFG_BREAK_IN_INFO
+  CFG_CMD_ANTI_PASSBACK("AntiPassback"), // 反潜回报警,对应结构体 CFG_ANTI_PASSBACK_INFO
+  CFG_CMD_DURESS("Duress"), // 胁迫报警,对应结构体 CFG_DURESS_INFO
+  CFG_CMD_MALICIOUS_ACCESSCONTROL("MaliciousAccessControl"), // 非法超次报警报警,对应结构体
+  // CFG_DOOR_MALICIOUS_ACCESSCONTROL_INFO
+  CFG_CMD_REGULATOR_DETECT("RegulatorDetect"), // 标准黑体源异常报警,对应结构体
+  // CFG_REGULATOR_DETECT_INFO.
+  // 热成像通道有效
+
+  CFG_CMD_REMOTE_ANALYSEGLOBAL("RemoteVideoAnalyseGlobal"), // 远程视频分析全局配置(对应
+  // CFG_ANALYSEGLOBAL_INFO)
+  CFG_CMD_REMOTE_ANALYSEMODULE("RemoteVideoAnalyseModule"); // 远程物体的检测模块配置(对应
+  // CFG_ANALYSEMODULES_INFO)
+
+  private String value;
+
+  private EM_NEW_CONFIG(String value) {
+    this.value = value;
+  }
+
+  public String getValue() {
+    return value;
+  }
+
+  public void setValue(String value) {
+    this.value = value;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java
new file mode 100644
index 0000000..d1e19ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NEW_QUERY_SYSTEM_INFO.java
@@ -0,0 +1,222 @@
+package com.netsdk.lib.enumeration;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.ptr.IntByReference;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 能力集命令枚举, 对应接口
+ * {@link com.netsdk.lib.NetSDKLib#CLIENT_QueryNewSystemInfo(NetSDKLib.LLong, String, int, byte[], int, IntByReference, int)}
+ * @date 2020/11/9
+ */
+public enum EM_NEW_QUERY_SYSTEM_INFO {
+    /**
+     * 视频分析能力集(对应 CFG_CAP_ANALYSE_INFO, pExtendInfo 对应 CFG_CAP_ANALYSE_REQ_EXTEND_INFO)
+     */
+    CFG_CAP_CMD_VIDEOANALYSE("devVideoAnalyse.getCaps"),
+    /**
+     * 视频分析能力集(对应CFG_CAP_ANALYSE_INFO_EX)
+     */
+    CFG_CAP_CMD_VIDEOANALYSE_EX("devVideoAnalyse.getCapsEx"),
+    /**
+     * 获取后端设备的的在线状态(对应CFG_REMOTE_DEVICE_STATUS)
+     */
+    CFG_NETAPP_REMOTEDEVICE("netApp.getRemoteDeviceStatus"),
+    /**
+     * 接入设备信息(对应 CFG_PRODUCT_DEFINITION_INFO)
+     */
+    CFG_CAP_CMD_PRODUCTDEFINITION("magicBox.getProductDefinition"),
+    /**
+     * 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)兼容老设备
+     */
+    CFG_DEVICE_CAP_CMD_VIDEOANALYSE("intelli.getVideoAnalyseDeviceChannels"),
+    /**
+     * 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)
+     */
+    CFG_DEVICE_CAP_NEW_CMD_VIDEOANALYSE("devVideoAnalyse.factory.getCollect"),
+    /**
+     * 获得CPU个数
+     */
+    CFG_CAP_CMD_CPU_COUNT("magicBox.getCPUCount"),
+    /**
+     * 获取CPU占用率
+     */
+    CFG_CAP_CMD_CPU_USAGE("magicBox.getCPUUsage"),
+    /**
+     * 获得内存容量
+     */
+    CFG_CAP_CMD_MEMORY_INFO("magicBox.getMemoryInfo"),
+    /**
+     * 获取设备类型(对应CFG_DEVICE_CLASS_INFO)
+     */
+    CFG_CAP_CMD_DEVICE_CLASS("magicBox.getDeviceClass"),
+    /**
+     * 获取设备状态信息 (对应CFG_CAP_TRAFFIC_DEVICE_STATUS)
+     */
+    CFG_CAP_CMD_DEVICE_STATE("trafficSnap.getDeviceStatus"),
+    /**
+     * 视频输入能力集(对应CFG_CAP_VIDEOINPUT_INFO)
+     */
+    CFG_CAP_CMD_VIDEOINPUT("devVideoInput.getCaps"),
+    /**
+     * 得到所有活动的用户信息(对应 CFG_ACTIVEALLUSER_INFO)
+     */
+    CFG_USERMANAGER_ACTIVEUSER("userManager.getActiveUserInfoAll"),
+    /**
+     * 获取视频统计摘要信息(对应CFG_VIDEOSATA_SUMMARY_INFO)
+     */
+    CFG_CAP_VIDEOSTAT_SUMMARY("videoStatServer.getSummary"),
+    /**
+     * 获取视频诊断服务能力(CFG_VIDEODIAGNOSIS_CAPS_INFO)
+     */
+    CFG_CAP_CMD_VIDEODIAGNOSIS_SERVER("videoDiagnosisServer.getCaps"),
+    /**
+     * 获取视频诊断通道数目(CFG_VIDEODIAGNOSIS_GETCOLLECT_INFO)
+     */
+    CFG_CMD_VIDEODIAGNOSIS_GETCOLLECT("videoDiagnosisServer.factory.getCollect"),
+    /**
+     * 获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
+     */
+    CFG_CMD_VIDEODIAGNOSIS_GETSTATE("videoDiagnosisServer.getState"),
+    /**
+     * 获取服务器上支持的服务列表(CFG_DEV_SERVICE_LIST)
+     */
+    CFG_CAP_CMD_SERVICE_LIST("system.listService"),
+    /**
+     * 获取服务器报警联动能力集(CFG_CAP_EVENTHANDLER_INFO)
+     */
+    CFG_CAP_CMD_EVENTHANDLER("capsManager.get&EventManagerEventHandler"),
+    /**
+     * 获取报警能力集(CFG_CAP_ALARM_INFO)
+     */
+    CFG_CAP_ALARM("alarm.getAlarmCaps"),
+    /**
+     * 获取音频分析能力集(CFG_CAP_AUDIO_ANALYSE_INFO)
+     */
+    CFG_CAP_CMD_AUDIO_ANALYSE("devAudioAnalyse.getCaps"),
+    /**
+     * 获取主从式跟踪器通道数目(对应结构体CFG_MASTERSLAVETRACKER_INFO)
+     */
+    CFG_CMD_MASTERSLAVE_GETCOLLECT("masterSlaveTracker.factory.getCollect"),
+    /**
+     * 获取主从式设备能力集(CFG_CAP_MASTERSLAVE_INFO)
+     */
+    CFG_CAP_CMD_MASTERSLAVE("capsManager.get&MasterSlaveTracker"),
+    /**
+     * 获取镜头聚焦状态信息 (对应CFG_CAP_FOCUS_STATUS)
+     */
+    CFG_CAP_CMD_FOCUS_STATE("devVideoInput.getFocusStatus"),
+    /**
+     * 获取网络应用能力集(对应CFG_CAP_NETAPP)
+     */
+    CFG_CAP_CMD_NETAPP("netApp.getCaps"),
+    /**
+     * 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO )
+     */
+    CFG_CAP_CMD_PTZ_ENABLE("ptz.factory.instance"),
+    /**
+     * 获取录像能力集(CFG_CAP_RECORD_INFO)
+     */
+    CFG_CAP_CMD_RECORD("recordManager.getCaps"),
+    /**
+     * 获取刻录管理能力集( CFG_CAP_BURN_MANAGER)
+     */
+    CFG_CAP_CMD_BURN_MANAGER("BurnManager.getCaps"),
+    /**
+     * 获取云台能力集
+     * 对应结构体{@link com.netsdk.lib.structure.CFG_PTZ_PROTOCOL_CAPS_INFO}
+     */
+    CFG_CAP_CMD_PTZ("ptz.getCurrentProtocolCaps"),
+    /**
+     * 获取编码能力集(CFG_ENCODECAP)
+     */
+    CFG_CMD_ENCODE_GETCAPS("encode.getCaps"),
+    /**
+     * 视频输入能力集扩展(对应CFG_CAP_VIDEOINPUT_INFO_EX)
+     */
+    CFG_CAP_CMD_VIDEOINPUT_EX("devVideoInput.getCapsEx"),
+    /**
+     * 获取设备智能分析模式(对应 CFG_ANALYSE_MODE)
+     */
+    CFG_CAP_CMD_ANALYSE_MODE("intelli.getCaps.AnalyseMode"),
+    /**
+     * 获取设备报警联动能力,老协议已废除,新开发请使用该字段(CFG_CAP_EVENTMANAGER_INFO)
+     */
+    CFG_CAP_CMD_EVENTMANAGER("eventManager.getCaps"),
+    /**
+     * 获取文件能力(CFG_CAP_FILEMANAGER)
+     */
+    CFG_CAP_CMD_FILEMANAGER("FileManager.getCaps"),
+    /**
+     * 获取日志服务能力(CFG_CAP_LOG)
+     */
+    CFG_CAP_CMD_LOG("log.getCaps"),
+    /**
+     * 扬声器播放能力(CFG_CAP_SPEAK)
+     */
+    CFG_CAP_CMD_SPEAK("speak.getCaps"),
+    /**
+     * 门禁能力(CFG_CAP_ACCESSCONTROL)
+     */
+    CFG_CAP_CMD_ACCESSCONTROLMANAGER("accessControlManager.getCaps"),
+    /**
+     * 获取扩展报警能力集, (对应结构体 CFG_CAP_EXALARM_INFO)
+     */
+    CFG_CAP_CMD_EXALARM("alarm.getExAlarmCaps"),
+    /**
+     * 获取扩展报警盒能力集, (对应结构体 CFG_CAP_EXALARMBOX_INFO)
+     */
+    CFG_CAP_CMD_EXALARMBOX("alarm.getExAlarmBoxCaps"),
+    /**
+     * 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
+     */
+    CFG_CAP_CMD_RECORDFINDER("RecordFinder.getCaps"),
+    /**
+     * 模拟量报警输入通道能力(对应结构体 CFG_CAP_ANALOGALARM)
+     */
+    CFG_CAP_CMD_ANALOGALARM("AnalogAlarm.getCaps"),
+    /**
+     * 获取LowRateWPAN能力(对应的结构体 CFG_CAP_LOWRATEWPAN)
+     */
+    CFG_CAP_CMD_LOWRATEWPAN("LowRateWPAN.getCaps"),
+    /**
+     * 获取编码自适应编码能力(对应的结构体 CFG_CAP_ADAPT_ENCODE_INFO)
+     */
+    CFG_CAP_CMD_ADAPTENCODE("encode.getNAACaps"),
+    /**
+     * 获取该云台实际能够使用的协议,按介质区分 (对应结构体 CFG_CAP_PTZ_PROTOCOL)
+     */
+    CFG_CAP_CMD_PTZPROTOCAL("ptz.getProtocol"),
+    /**
+     * 查询是否支持视频裁剪能力 (对应结构体 CFG_CAP_MEDIA_CROP)
+     */
+    CFG_CAP_CMD_MEDIACROP("encode.getCropCaps"),
+    /**
+     * 获取OSD叠加能力(对应结构体CFG_CAP_OSDMANAGER_INFO)
+     */
+    CFG_CAP_CMD_OSDMANAGER("OSDManager.getCaps"),
+    /**
+     * 获取自定义标题能力集(对应结构体CFG_CAP_CUSTOM_OSD_INFO)
+     */
+    CFG_CAP_CMD_CUSTOM("OSDManager.getCustomCaps");
+
+    private EM_NEW_QUERY_SYSTEM_INFO(String value) {
+        this.value = value;
+    }
+
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java
new file mode 100644
index 0000000..b97798f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NONMOTOR_OBJECT_STATUS.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 事件/物体状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_NONMOTOR_OBJECT_STATUS extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未识别
+     */
+    public static final int					EM_NONMOTOR_OBJECT_STATUS_UNKNOWN = 0;
+    /**
+     *  否
+     */
+    public static final int					EM_NONMOTOR_OBJECT_STATUS_NO = 1;
+    /**
+     *  是
+     */
+    public static final int					EM_NONMOTOR_OBJECT_STATUS_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_ALLOW_LIST_CAR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_ALLOW_LIST_CAR.java
new file mode 100644
index 0000000..b41e66d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_ALLOW_LIST_CAR.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 是否为非允许名单车辆
+ * @origin autoTool
+ * @date 2023/06/20 10:13:16
+ */
+public enum EM_NON_ALLOW_LIST_CAR {
+	/**
+     * 未知
+     */
+	EM_NON_ALLOW_LIST_CAR_UNKNOWN(0,"未知"),
+	/**
+     * 允许名单车辆
+     */
+	EM_NON_ALLOW_LIST_CAR_NO(1,"允许名单车辆"),
+	/**
+     * 非允许名单车辆
+     */
+	EM_NON_ALLOW_LIST_CAR_YES(2,"非允许名单车辆");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_NON_ALLOW_LIST_CAR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_NON_ALLOW_LIST_CAR enumType : EM_NON_ALLOW_LIST_CAR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_NON_ALLOW_LIST_CAR enumType : EM_NON_ALLOW_LIST_CAR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_NON_ALLOW_LIST_CAR getEnum(int value) {
+		for (EM_NON_ALLOW_LIST_CAR e : EM_NON_ALLOW_LIST_CAR.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_NON_ALLOW_LIST_CAR.EM_NON_ALLOW_LIST_CAR_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_NEW_ENERGY_CAR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_NEW_ENERGY_CAR.java
new file mode 100644
index 0000000..f525108
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NON_NEW_ENERGY_CAR.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 是否为非新能源车辆
+ * @origin autoTool
+ * @date 2023/06/20 10:13:16
+ */
+public enum EM_NON_NEW_ENERGY_CAR {
+	/**
+     * 未知
+     */
+	EM_NON_NEW_ENERGY_CAR_UNKNOWN(0,"未知"),
+	/**
+     * 新能源车辆
+     */
+	EM_NON_NEW_ENERGY_CAR_NO(1,"新能源车辆"),
+	/**
+     * 非新能源车辆
+     */
+	EM_NON_NEW_ENERGY_CAR_YES(2,"非新能源车辆");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_NON_NEW_ENERGY_CAR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_NON_NEW_ENERGY_CAR enumType : EM_NON_NEW_ENERGY_CAR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_NON_NEW_ENERGY_CAR enumType : EM_NON_NEW_ENERGY_CAR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_NON_NEW_ENERGY_CAR getEnum(int value) {
+		for (EM_NON_NEW_ENERGY_CAR e : EM_NON_NEW_ENERGY_CAR.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_NON_NEW_ENERGY_CAR.EM_NON_NEW_ENERGY_CAR_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NTP_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NTP_STATUS.java
new file mode 100644
index 0000000..50466f4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NTP_STATUS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * NTP校时状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_NTP_STATUS extends NetSDKLib.SdkStructure {
+
+    /**
+     *    NET_NTP_STATUS_UNKNOWN = 0 ,
+     */
+    public static final int					NET_NTP_STATUS_UNKNOWN = 0;
+    /**
+     *    NET_NTP_STATUS_DISABLE , 
+     */
+    public static final int					NET_NTP_STATUS_DISABLE = 1;
+    /**
+     *    NET_NTP_STATUS_SUCCESSFUL , 
+     */
+    public static final int					NET_NTP_STATUS_SUCCESSFUL = 2;
+    /**
+     *    NET_NTP_STATUS_FAILED , 
+     */
+    public static final int					NET_NTP_STATUS_FAILED = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java
new file mode 100644
index 0000000..887e6b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_NUMBER_STAT_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 表示人数越上限类型
+ * @date 2022/07/04 10:11:30
+ */
+public enum EM_NUMBER_STAT_TYPE {
+    /**
+     * 未知
+     */
+    EM_NUMBERSTAT_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 进入
+     */
+    EM_NUMBERSTAT_TYPE_ENTEROVER(1, "进入"),
+    /**
+     * 退出
+     */
+    EM_NUMBERSTAT_TYPE_EXITOVER(2, "退出"),
+    /**
+     * 在里面
+     */
+    EM_NUMBERSTAT_TYPE_INSIDEOVER(3, "在里面"),
+    /**
+     * 经过
+     */
+    EM_NUMBERSTAT_TYPE_PASSOVER(4, "经过");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_NUMBER_STAT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_NUMBER_STAT_TYPE enumType : EM_NUMBER_STAT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_NUMBER_STAT_TYPE enumType : EM_NUMBER_STAT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_NUMBER_STAT_TYPE getEnum(int value) {
+        for (EM_NUMBER_STAT_TYPE e : EM_NUMBER_STAT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_NUMBER_STAT_TYPE.EM_NUMBERSTAT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java
new file mode 100644
index 0000000..f04f2f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_ABNORMAL_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 异常行为
+ * @date 2022/12/19 11:30:59
+ */
+public enum EM_OBJECT_ABNORMAL_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_OBJECT_ABNORMAL_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 逆向运动
+	 */
+	EM_OBJECT_ABNORMAL_TYPE_RETROGRADE(1, "逆向运动");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_OBJECT_ABNORMAL_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_OBJECT_ABNORMAL_TYPE enumType : EM_OBJECT_ABNORMAL_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_OBJECT_ABNORMAL_TYPE enumType : EM_OBJECT_ABNORMAL_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java
new file mode 100644
index 0000000..b9f62ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_BASKET_TYPE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  非机动车车篮 
+* @origin autoTool
+* @date 2023/02/14 20:11:39
+*/
+public enum EM_OBJECT_BASKET_TYPE {
+/**
+未知
+*/
+EM_OBJECT_BASKET_UNKNOWN(0,"未知"),
+/**
+无
+*/
+EM_OBJECT_BASKET_NO(1,"无"),
+/**
+有
+*/
+EM_OBJECT_BASKET_YES(2,"有");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_OBJECT_BASKET_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_OBJECT_BASKET_TYPE enumType : EM_OBJECT_BASKET_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_OBJECT_BASKET_TYPE enumType : EM_OBJECT_BASKET_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_OBJECT_BASKET_TYPE getEnum(int value) {
+        for (EM_OBJECT_BASKET_TYPE e : EM_OBJECT_BASKET_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_OBJECT_BASKET_TYPE.EM_OBJECT_BASKET_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java
new file mode 100644
index 0000000..e822364
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_COLOR_TYPE.java
@@ -0,0 +1,134 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 颜色类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_OBJECT_COLOR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_UNKNOWN = 0;
+    /**
+     *  白色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_WHITE = 1;
+    /**
+     *  橙色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_ORANGE = 2;
+    /**
+     *  粉色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_PINK = 3;
+    /**
+     *  黑色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_BLACK = 4;
+    /**
+     *  红色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_RED = 5;
+    /**
+     *  黄色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_YELLOW = 6;
+    /**
+     *  灰色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_GRAY = 7;
+    /**
+     *  蓝色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_BLUE = 8;
+    /**
+     *  绿色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_GREEN = 9;
+    /**
+     *  紫色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_PURPLE = 10;
+    /**
+     *  棕色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_BROWN = 11;
+    /**
+     *  银色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_SLIVER = 12;
+    /**
+     *  暗紫罗兰色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_DARKVIOLET = 13;
+    /**
+     *  栗色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_MAROON = 14;
+    /**
+     *  暗灰色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_DIMGRAY = 15;
+    /**
+     *  白烟色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_WHITESMOKE = 16;
+    /**
+     *  深橙色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_DARKORANGE = 17;
+    /**
+     *  浅玫瑰色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_MISTYROSE = 18;
+    /**
+     *  番茄红色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_TOMATO = 19;
+    /**
+     *  橄榄色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_OLIVE = 20;
+    /**
+     *  金色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_GOLD = 21;
+    /**
+     *  暗橄榄绿色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_DARKOLIVEGREEN = 22;
+    /**
+     *  黄绿色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_CHARTREUSE = 23;
+    /**
+     *  绿黄色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_GREENYELLOW = 24;
+    /**
+     *  森林绿色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_FORESTGREEN = 25;
+    /**
+     *  海洋绿色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_SEAGREEN = 26;
+    /**
+     *  深天蓝色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_DEEPSKYBLUE = 27;
+    /**
+     *  青色
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_CYAN = 28;
+    /**
+     *  无法识别
+     */
+    public static final int					EM_OBJECT_COLOR_TYPE_OTHER = 29;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java
new file mode 100644
index 0000000..36e5a55
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_NONMOTORANGLE_TYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  非机动车的角度 
+* @origin autoTool
+* @date 2023/02/14 20:11:39
+*/
+public enum EM_OBJECT_NONMOTORANGLE_TYPE {
+/**
+未知
+*/
+EM_OBJECT_NONMOTORANGLE_TYPE_UNKNOWN(0,"未知"),
+/**
+正面
+*/
+EM_OBJECT_NONMOTORANGLE_TYPE_FRONT(1,"正面"),
+/**
+侧面
+*/
+EM_OBJECT_NONMOTORANGLE_TYPE_SIDE(2,"侧面"),
+/**
+后面
+*/
+EM_OBJECT_NONMOTORANGLE_TYPE_BEHIND(3,"后面");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_OBJECT_NONMOTORANGLE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_OBJECT_NONMOTORANGLE_TYPE enumType : EM_OBJECT_NONMOTORANGLE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_OBJECT_NONMOTORANGLE_TYPE enumType : EM_OBJECT_NONMOTORANGLE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_OBJECT_NONMOTORANGLE_TYPE getEnum(int value) {
+        for (EM_OBJECT_NONMOTORANGLE_TYPE e : EM_OBJECT_NONMOTORANGLE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_OBJECT_NONMOTORANGLE_TYPE.EM_OBJECT_NONMOTORANGLE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java
new file mode 100644
index 0000000..283eb1a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OBJECT_STORAGEBOX_TYPE.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  非机动车后备箱 
+* @origin autoTool
+* @date 2023/02/14 20:11:39
+*/
+public enum EM_OBJECT_STORAGEBOX_TYPE {
+/**
+未知
+*/
+EM_OBJECT_STORAGEBOX_UNKNOWN(0,"未知"),
+/**
+无后备箱
+*/
+EM_OBJECT_STORAGEBOX_NO(1,"无后备箱"),
+/**
+自带箱
+*/
+EM_OBJECT_STORAGEBOX_OWNBOX(2,"自带箱"),
+/**
+自装箱
+*/
+EM_OBJECT_STORAGEBOX_SELFPACK(3,"自装箱"),
+/**
+自装箱和自带箱都有
+*/
+EM_OBJECT_STORAGEBOX_ALL(4,"自装箱和自带箱都有");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_OBJECT_STORAGEBOX_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_OBJECT_STORAGEBOX_TYPE enumType : EM_OBJECT_STORAGEBOX_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_OBJECT_STORAGEBOX_TYPE enumType : EM_OBJECT_STORAGEBOX_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_OBJECT_STORAGEBOX_TYPE getEnum(int value) {
+        for (EM_OBJECT_STORAGEBOX_TYPE e : EM_OBJECT_STORAGEBOX_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_OBJECT_STORAGEBOX_TYPE.EM_OBJECT_STORAGEBOX_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ONLINE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ONLINE_STATUS.java
new file mode 100644
index 0000000..31424a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ONLINE_STATUS.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  在线状态 
+* @date 2022/08/31 14:44:15
+*/
+public enum EM_ONLINE_STATUS {
+/**
+未知
+*/
+EM_ONLINE_UNKNOWN(0,"未知"),
+/**
+离线
+*/
+EM_ONLINE_OFF(1,"离线"),
+/**
+在线
+*/
+EM_ONLINE_ON(2,"在线");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ONLINE_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ONLINE_STATUS enumType : EM_ONLINE_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ONLINE_STATUS enumType : EM_ONLINE_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ONLINE_STATUS getEnum(int value) {
+        for (EM_ONLINE_STATUS e : EM_ONLINE_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ONLINE_STATUS.EM_ONLINE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java
new file mode 100644
index 0000000..1e53690
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPEN_STROBE_TYPE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 开闸类型
+ * @date 2021/2/22
+ */
+public enum EM_OPEN_STROBE_TYPE {
+    /**
+     * 未知
+     */
+    EM_OPEN_STROBE_TYPE_UNKNOWN,
+    /**
+     * 正常开闸(默认)
+     */
+    EM_OPEN_STROBE_TYPE_NORMAL,
+    /**
+     * 测试手动开闸(用于施工前期)
+     */
+    EM_OPEN_STROBE_TYPE_TEST,
+    /**
+     * 手动开闸
+     */
+    EM_OPEN_STROBE_TYPE_MANUAL;
+    public static EM_OPEN_STROBE_TYPE getOpenStrobeTyppe(int type){
+        for (EM_OPEN_STROBE_TYPE strobeType : EM_OPEN_STROBE_TYPE.values() ) {
+            if(strobeType.ordinal()==type){
+                return strobeType;
+            }
+        }
+        return EM_OPEN_STROBE_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java
new file mode 100644
index 0000000..46fa9bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_FACERECONGNITIONDB_TYPE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 目标识别数据库操作
+ * @date 2021/4/26
+ */
+public enum EM_OPERATE_FACERECONGNITIONDB_TYPE {
+  NET_FACERECONGNITIONDB_UNKOWN,
+  /** 删除人员信息和人脸样本 */
+  NET_FACERECONGNITIONDB_ADD,
+  /** 添加人员信息和人脸样本,如果人员已经存在,图片数据和原来的数据合并 */
+  NET_FACERECONGNITIONDB_DELETE,
+  /** 修改人员信息和人脸样本,人员的UID标识必填 */
+  NET_FACERECONGNITIONDB_MODIFY,
+  /** 通过UID删除人员信息和人脸样本 */
+  NET_FACERECONGNITIONDB_DELETE_BY_UID;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java
new file mode 100644
index 0000000..2d71e74
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATE_USERINFO_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description CLIENT_OperateUserInfoNew接口参数 nOperateType 对应的值含义
+ * @date 2023/03/10 15:08:40
+ */
+public enum EM_OPERATE_USERINFO_TYPE {
+	/**
+	 * 增加用户,opParam对应结构体 USER_INFO_NEW
+	 */
+	EM_OPERATE_USERINFO_TYPE_ADD_USER(3, "增加用户"),
+	/**
+	 * 删除用户,opParam对应结构体 USER_INFO_NEW
+	 */
+	EM_OPERATE_USERINFO_TYPE_DEL_USER(4, "删除用户"),
+	/**
+	 * 修改用户,opParam为修改后的用户信息 对应结构体 USER_INFO_NEW, subParam为原始用户信息 对应结构体
+	 * USER_INFO_NEW
+	 */
+	EM_OPERATE_USERINFO_TYPE_MODIFY_USER(5, "修改用户"),
+	/**
+	 * 修改密码,opParam为修改后的密码 对应结构体 USER_INFO_NEW, subParam为原始密码 对应结构体 USER_INFO_NEW
+	 */
+	EM_OPERATE_USERINFO_TYPE_MODIFY_PWD(6, "修改密码"),
+	/**
+	 * 增加用户组,opParam对应结构体 USER_GROUP_INFO_EX2
+	 */
+	EM_OPERATE_USERINFO_TYPE_ADD_GROUP(7, "增加用户组"),
+	/**
+	 * 删除用户组,opParam对应结构体 USER_GROUP_INFO_EX2
+	 */
+	EM_OPERATE_USERINFO_TYPE_DEL_GROUP(8, "删除用户组"),
+	/**
+	 * 修改用户组,opParam为修改后的用户组信息 对应结构体 USER_GROUP_INFO_EX2,subParam为原始用户组信息 对应结构体
+	 * USER_GROUP_INFO_EX2
+	 */
+	EM_OPERATE_USERINFO_TYPE_MODIFY_GROUP(9, "修改用户组");	
+			
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_OPERATE_USERINFO_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_OPERATE_USERINFO_TYPE enumType : EM_OPERATE_USERINFO_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_OPERATE_USERINFO_TYPE enumType : EM_OPERATE_USERINFO_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATION_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATION_MODE.java
new file mode 100644
index 0000000..21c47b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OPERATION_MODE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  操作模式 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_OPERATION_MODE {
+/**
+未知
+*/
+EM_OPERATION_UNKNOWN(-1,"未知"),
+/**
+紧急操作
+*/
+EM_OPERATION_PANIC(0,"紧急操作"),
+/**
+控制操作
+*/
+EM_OPERATION_CONTROL(1,"控制操作"),
+/**
+静音火灾报警操作
+*/
+EM_OPERATION_MUTE_FIRE_ALARM(2,"静音火灾报警操作");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_OPERATION_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_OPERATION_MODE enumType : EM_OPERATION_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_OPERATION_MODE enumType : EM_OPERATION_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_OPERATION_MODE getEnum(int value) {
+        for (EM_OPERATION_MODE e : EM_OPERATION_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_OPERATION_MODE.EM_OPERATION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_STATE.java
new file mode 100644
index 0000000..9a6f4f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  输出状态 
+* @date 2022/10/09 11:29:42
+*/
+public enum EM_OUTPUT_STATE {
+/**
+未知
+*/
+EM_OUTPUT_STATE_UNKNOWN(-1,"未知"),
+/**
+关闭
+*/
+EM_OUTPUT_STATE_CLOSE(0,"关闭"),
+/**
+打开
+*/
+EM_OUTPUT_STATE_OPEN(1,"打开");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_OUTPUT_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_OUTPUT_STATE enumType : EM_OUTPUT_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_OUTPUT_STATE enumType : EM_OUTPUT_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_OUTPUT_STATE getEnum(int value) {
+        for (EM_OUTPUT_STATE e : EM_OUTPUT_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_OUTPUT_STATE.EM_OUTPUT_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_TYPE.java
new file mode 100644
index 0000000..5f44850
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OUTPUT_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 输出通道类型
+ * @date 2023/03/15 16:46:55
+ */
+public enum EM_OUTPUT_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_OUTPUT_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 警号
+	 */
+	EM_OUTPUT_TYPE_SIREN(1, "警号"),
+	/**
+	 * 输出通道
+	 */
+	EM_OUTPUT_TYPE_ALARMOUT(2, "输出通道");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_OUTPUT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_OUTPUT_TYPE enumType : EM_OUTPUT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_OUTPUT_TYPE enumType : EM_OUTPUT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java
new file mode 100644
index 0000000..0b09bf4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_OVERSEA_VEHICLE_CATEGORY_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 海外车辆类型中的子类别,一个车辆只能是子类型的某一种。
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_OVERSEA_VEHICLE_CATEGORY_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_UNKNOWN = 0;
+    /**
+     * 摩托车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_MOTORCYCLE = 1;
+    /**
+     * 轻型货车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_LIGHT_GOODS_VEHICLE = 2;
+    /**
+     * 公司用私家车        
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_COMPANY_VEHICLE = 3;
+    /**
+     * 个人用私家车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_VEHICLE = 4;
+    /**
+     * TAXI或者快线车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_TAXI = 5;
+    /**
+     * 拖车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_TRAILER = 6;
+    /**
+     * 工程车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_ENGINEERING_PLANT_VEHICLE = 7;
+    /**
+     * 超大货车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_VERY_HEAVY_GOODS_VEHICLE = 8;
+    /**
+     * 大货车
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_HEAVY_GOODS_VEHICLE = 9;
+    /**
+     * 公共BUS 
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_PUBLIC_BUS = 10;
+    /**
+     * 私营BUS  
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_PRIVATE_BUS = 11;
+    /**
+     * 特殊车辆
+     */
+    public static final int					EM_OVERSEA_VEHICLE_CATEGORY_SPECIAL_VEHICLE = 12;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java
new file mode 100644
index 0000000..7870030
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_DIRECTION.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 停车方向
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:48
+ */
+public enum EM_PARKINGSPACE_DIRECTION {
+    /**
+     * 未知
+     */
+    EM_PARKINGSPACE_DIRECTION_UNKNOWN(0, "未知"),
+    /**
+     * 逆向
+     */
+    EM_PARKINGSPACE_DIRECTION_REVERSE(1, "逆向"),
+    /**
+     * 正向
+     */
+    EM_PARKINGSPACE_DIRECTION_FORWARD(2, "正向");
+
+    private int value;
+    private String note;
+
+    EM_PARKINGSPACE_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PARKINGSPACE_DIRECTION enumType : EM_PARKINGSPACE_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PARKINGSPACE_DIRECTION enumType : EM_PARKINGSPACE_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PARKINGSPACE_DIRECTION getEnum(int value) {
+        for (EM_PARKINGSPACE_DIRECTION e : EM_PARKINGSPACE_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PARKINGSPACE_DIRECTION.EM_PARKINGSPACE_DIRECTION_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java
new file mode 100644
index 0000000..e707aac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKINGSPACE_STATE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 车位状态
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 13:36
+ */
+public enum EM_PARKINGSPACE_STATE {
+    /**
+     * 未知
+     */
+    EM_PARKINGSPACE_STATE_UNKNOWN(-1, "未知"),
+    /**
+     * 车位无车
+     */
+    EM_PARKINGSPACE_STATE_NOPARKING(0, "车位无车"),
+    /**
+     * 车位有车
+     */
+    EM_PARKINGSPACE_STATE_PARKING(1, "车位有车");
+
+    private final int value;
+    private final String note;
+
+    EM_PARKINGSPACE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PARKINGSPACE_STATE enumType : EM_PARKINGSPACE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PARKINGSPACE_STATE enumType : EM_PARKINGSPACE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PARKINGSPACE_STATE getEnum(int value) {
+        for (EM_PARKINGSPACE_STATE e : EM_PARKINGSPACE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PARKINGSPACE_STATE.EM_PARKINGSPACE_STATE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_SPACE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_SPACE_TYPE.java
new file mode 100644
index 0000000..b1ee43a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_SPACE_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 车位有车事件类型
+ * @origin autoTool
+ * @date 2023/06/20 10:13:16
+ */
+public enum EM_PARKING_SPACE_TYPE {
+	/**
+     * 未知
+     */
+	EM_PARKING_SPACE_TYPE_UNKNOWN(-1,"未知"),
+	/**
+     * 正常驶入
+     */
+	EM_PARKING_SPACE_TYPE_NORMAL(0,"正常驶入"),
+	/**
+     * 泊车变更事件
+     */
+	EM_PARKING_SPACE_TYPE_CHANGE(1,"泊车变更事件");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_PARKING_SPACE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PARKING_SPACE_TYPE enumType : EM_PARKING_SPACE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PARKING_SPACE_TYPE enumType : EM_PARKING_SPACE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_PARKING_SPACE_TYPE getEnum(int value) {
+		for (EM_PARKING_SPACE_TYPE e : EM_PARKING_SPACE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_PARKING_SPACE_TYPE.EM_PARKING_SPACE_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java
new file mode 100644
index 0000000..6d3bbb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARKING_TRIGGER_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 车位抓拍触发类型
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 15:06
+ */
+public enum EM_PARKING_TRIGGER_TYPE {
+    /**
+     * 未知
+     */
+    EM_PARKING_TRIGGER_TYPE_UNKNOWN(-1, "未知"),
+    /**
+     * 非手动触发
+     */
+    EM_PARKING_TRIGGER_TYPE_NONMANUAL(0, "非手动触发"),
+    /**
+     * 手动触发
+     */
+    EM_PARKING_TRIGGER_TYPE_MANUAL(1, "手动触发");
+
+    private int value;
+    private String note;
+
+    EM_PARKING_TRIGGER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PARKING_TRIGGER_TYPE enumType : EM_PARKING_TRIGGER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PARKING_TRIGGER_TYPE enumType : EM_PARKING_TRIGGER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PARKING_TRIGGER_TYPE getEnum(int value) {
+        for (EM_PARKING_TRIGGER_TYPE e : EM_PARKING_TRIGGER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PARKING_TRIGGER_TYPE.EM_PARKING_TRIGGER_TYPE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARTITION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARTITION_TYPE.java
new file mode 100644
index 0000000..28a0d52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PARTITION_TYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 分区类型
+ * @date 2021/01/21
+ */
+public enum EM_PARTITION_TYPE {
+	// 未知
+	EM_PARTITION_UNKNOWN(0, "未知"),
+
+	// 读写
+	EM_PARTITION_READ_WIRTE(1, "读写"),
+
+	// 只读
+	EM_PARTITION_READ_ONLY(2, "只读"),
+
+	// 一般的
+	EM_PARTITION_READ_GENERIC(3, "一般的");
+
+	private int value;
+	private String note;
+
+	private EM_PARTITION_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PARTITION_TYPE enumType : EM_PARTITION_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PARTITION_TYPE enumType : EM_PARTITION_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java
new file mode 100644
index 0000000..ae9daf2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 路人库去重策略类型
+ * @date 2021/2/22
+ */
+public enum EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE {
+  /** 未知 */
+  EM_DUPLICATE_REMOVE_TYPE_UNKNOWN(-1, "未知"),
+  /** 无条件去重 */
+  EM_DUPLICATE_REMOVE_TYPE_ALL(0, "无条件去重"),
+  /** 按时间间隔去重 */
+  EM_DUPLICATE_REMOVE_TYPE_TIME(1, "按时间间隔去重"),
+  /** 按时间段间隔去重 */
+  EM_DUPLICATE_REMOVE_TYPE_TIME_SLOT(2, "按时间段间隔去重");
+  private int type;
+  private String desc;
+
+  EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public static EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE getDuplicateRemoveType(int type) {
+    for (EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE removeType :
+        EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE.values()) {
+      if (removeType.type == type) {
+        return removeType;
+      }
+    }
+    return EM_DUPLICATE_REMOVE_TYPE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java
new file mode 100644
index 0000000..a6e5c92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASSERBY_DB_OVERWRITE_TYPE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 路人库满时覆盖策略
+ * @date 2021/2/22
+ */
+public enum EM_PASSERBY_DB_OVERWRITE_TYPE {
+  /** 未知 */
+  EM_OVERWRITE_TYPE_UNKNOWN(-1, "未知"),
+  /** 满停止 */
+  EM_OVERWRITE_TYPE_FULL_STOP(0, "满停止"),
+  /** 满覆盖 */
+  EM_OVERWRITE_TYPE_FULL_COVERAGE(1, "满覆盖");
+  private int type;
+  private String desc;
+
+  EM_PASSERBY_DB_OVERWRITE_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public static EM_PASSERBY_DB_OVERWRITE_TYPE getOverwriteType(int type) {
+    for (EM_PASSERBY_DB_OVERWRITE_TYPE overwriteType : EM_PASSERBY_DB_OVERWRITE_TYPE.values()) {
+      if (overwriteType.type == type) {
+        return overwriteType;
+      }
+    }
+    return EM_OVERWRITE_TYPE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASS_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASS_MODE.java
new file mode 100644
index 0000000..98df07c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PASS_MODE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 通行模式
+ * @date 2021/2/7
+ */
+public enum EM_PASS_MODE {
+  /** 未知 */
+  EM_PASS_MODE_UNKNOWN(-1, "未知"),
+  /** 进授权出授权 */
+  EM_PASS_MODE_IN_AUTHORIZATION_OUT_AUTHORIZATION(0, "进授权出授权"),
+  /** 进授权出自由 */
+  EM_PASS_MODE_IN_AUTHORIZATION_OUT_FREE(1, "进授权出自由"),
+  /** 进授权出禁止 */
+  EM_PASS_MODE_IN_AUTHORIZATION_OUT_FORBID(2, "进授权出禁止"),
+  /** 进自由出授权 */
+  EM_PASS_MODE_IN_FREE_OUT_AUTHORIZATION(3, "进自由出授权"),
+  /** 进自由出自由 */
+  EM_PASS_MODE_IN_FREE_OUT_FREE(4, "进自由出自由"),
+  /** 进自由出禁止 */
+  EM_PASS_MODE_IN_FREE_OUT_FORBID(5, "进自由出禁止"),
+  /** 进禁止出授权 */
+  EM_PASS_MODE_IN_FORBID_OUT_AUTHORIZATION(6, "进禁止出授权"),
+  /** 进禁止出自由 */
+  EM_PASS_MODE_IN_FORBID_OUT_FREE(7, "进禁止出自由"),
+  /** 进禁止出禁止 */
+  EM_PASS_MODE_IN_FORBID_OUT_FORBID(8, "进禁止出禁止");
+
+  private int mode;
+  private String desc;
+  EM_PASS_MODE(int mode, String desc) {
+    this.mode = mode;
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java
new file mode 100644
index 0000000..eb0aad4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PERSON_FEATURE_ERRCODE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 建模失败原因
+ * @date 2021/4/22
+ */
+public enum EM_PERSON_FEATURE_ERRCODE {
+  /** 未知 */
+  EM_PERSON_FEATURE_ERRCODE_UNKNOWN(0, "未知"),
+  /** 图片格式问题 */
+  EM_PERSON_FEATURE_ERRCODE_PIC_FORMAT(1, "图片格式问题"),
+  /** 无人脸或不清晰 */
+  EM_PERSON_FEATURE_ERRCODE_NO_FACE(2, "无人脸或不清晰"),
+  /** 多个人脸 */
+  EM_PERSON_FEATURE_ERRCODE_MULTI_FACE(3, "多个人脸"),
+  /** 图片解码失败 */
+  EM_PERSON_FEATURE_ERRCODE_PIC_DECODE_FAIL(4, "图片解码失败"),
+  /** 不推荐入库 */
+  EM_PERSON_FEATURE_ERRCODE_NOT_RECOMMEND(5, "不推荐入库"),
+  /** 数据库操作失败 */
+  EM_PERSON_FEATURE_ERRCODE_FACEDB_FAIL(6, "数据库操作失败"),
+  /** 获取图片失败 */
+  EM_PERSON_FEATURE_ERRCODE_GET_PICTURE(7, "获取图片失败"),
+  /** 系统异常 */
+  EM_PERSON_FEATURE_ERRCODE_SYSTEM_ERROR(8, "系统异常");
+  private int errorCode;
+  private String reason;
+
+  EM_PERSON_FEATURE_ERRCODE(int errorCode, String reason) {
+    this.errorCode = errorCode;
+    this.reason = reason;
+  }
+
+  public int getErrorCode() {
+    return errorCode;
+  }
+
+  public void setErrorCode(int errorCode) {
+    this.errorCode = errorCode;
+  }
+
+  public String getReason() {
+    return reason;
+  }
+
+  public void setReason(String reason) {
+    this.reason = reason;
+  }
+
+  public static EM_PERSON_FEATURE_ERRCODE getError(int errorCode) {
+    for (EM_PERSON_FEATURE_ERRCODE personError : EM_PERSON_FEATURE_ERRCODE.values()) {
+      if (personError.errorCode == errorCode) {
+        return personError;
+      }
+    }
+    return EM_PERSON_FEATURE_ERRCODE_UNKNOWN;
+  }
+
+  public static String getErrorMessage(int errorCode) {
+    return getError(errorCode).getReason();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PIC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PIC_TYPE.java
new file mode 100644
index 0000000..44d3a40
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PIC_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  图片类型 
+* @date 2022/06/28 19:24:08
+*/
+public enum EM_PIC_TYPE {
+/**
+未知
+*/
+EM_PIC_TYPE_UNKNOWN(-1,"未知"),
+/**
+算法处理后的图片
+*/
+EM_PIC_TYPE_ALGORITHMICALLY_PROCESSED(0,"算法处理后的图片");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_PIC_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_PIC_TYPE enumType : EM_PIC_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_PIC_TYPE enumType : EM_PIC_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_PIC_TYPE getEnum(int value) {
+        for (EM_PIC_TYPE e : EM_PIC_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PIC_TYPE.EM_PIC_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java
new file mode 100644
index 0000000..424f20b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_ATTRIBUTE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 车牌属性
+ * @date 2023/01/10 19:44:59
+ */
+public enum EM_PLATE_ATTRIBUTE {
+    /**
+     * 未知
+     */
+    EM_PLATE_ATTRIBUTE_UNKNOWN(0, "未知"),
+    /**
+     * 正常
+     */
+    EM_PLATE_ATTRIBUTE_NORMAL(1, "正常"),
+    /**
+     * 无牌
+     */
+    EM_PLATE_ATTRIBUTE_NO_PLATE(2, "无牌"),
+    /**
+     * 部分遮挡/污损
+     */
+    EM_PLATE_ATTRIBUTE_PARTIAL_OCCLUSION(3, "部分遮挡/污损"),
+    /**
+     * 完全遮挡/污损
+     */
+    EM_PLATE_ATTRIBUTE_FULL_OCCLUSION(4, "完全遮挡/污损");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_PLATE_ATTRIBUTE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PLATE_ATTRIBUTE enumType : EM_PLATE_ATTRIBUTE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PLATE_ATTRIBUTE enumType : EM_PLATE_ATTRIBUTE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PLATE_ATTRIBUTE getEnum(int value) {
+        for (EM_PLATE_ATTRIBUTE e : EM_PLATE_ATTRIBUTE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PLATE_ATTRIBUTE.EM_PLATE_ATTRIBUTE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java
new file mode 100644
index 0000000..1f8b16c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_COLOR_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车牌颜色
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_PLATE_COLOR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知 "Unknown"
+     */
+    public static final int					EM_PLATE_COLOR_UNKNOWN = 0;
+    /**
+     *  其他颜色 "Other"
+     */
+    public static final int					EM_PLATE_COLOR_OTHER = 1;
+    /**
+     *  蓝色 "Blue"
+     */
+    public static final int					EM_PLATE_COLOR_BLUE = 2;
+    /**
+     *  黄色 "Yellow"    
+     */
+    public static final int					EM_PLATE_COLOR_YELLOW = 3;
+    /**
+     *  白色 "White"
+     */
+    public static final int					EM_PLATE_COLOR_WHITE = 4;
+    /**
+     *  黑色 "Black"
+     */
+    public static final int					EM_PLATE_COLOR_BLACK = 5;
+    /**
+     *  红色 "Red"
+     */
+    public static final int					EM_PLATE_COLOR_RED = 6;
+    /**
+     *  绿色 "Green"
+     */
+    public static final int					EM_PLATE_COLOR_GREEN = 7;
+    /**
+     *  渐变绿 "ShadowGreen"
+     */
+    public static final int					EM_PLATE_COLOR_SHADOW_GREEN = 8;
+    /**
+     *  黄绿双拼 "YellowGreen""
+     */
+    public static final int					EM_PLATE_COLOR_YELLOW_GREEN = 9;
+    /**
+     *  黄底黑字 "YellowbottomBlackText"
+     */
+    public static final int					EM_PLATE_COLOR_YELLOW_BOTTOM_BLACK_TEXT = 10;
+    /**
+     *  蓝底白字 "BluebottomWhiteText"
+     */
+    public static final int					EM_PLATE_COLOR_BLUE_BOTTOM_WHITE_TEXT = 11;
+    /**
+     *  黑底白字 "BlackBottomWhiteText"
+     */
+    public static final int					EM_PLATE_COLOR_BLACK_BOTTOM_WHITE_TEXT = 12;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_TYPE.java
new file mode 100644
index 0000000..29179d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLATE_TYPE.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 号牌类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_PLATE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 其他车
+     */
+    public static final int EM_PLATE_OTHER = 0;
+    /**
+     * 大型汽车
+     */
+    public static final int EM_PLATE_BIG_CAR = 1;
+    /**
+     * 小型汽车
+     */
+    public static final int EM_PLATE_SMALL_CAR = 2;
+    /**
+     * 使馆汽车
+     */
+    public static final int EM_PLATE_EMBASSY_CAR = 3;
+    /**
+     * 领馆汽车
+     */
+    public static final int EM_PLATE_CONSULATE_CAR = 4;
+    /**
+     * 境外汽车
+     */
+    public static final int EM_PLATE_ABROAD_CAR = 5;
+    /**
+     * 外籍汽车
+     */
+    public static final int EM_PLATE_FOREIGN_CAR = 6;
+    /**
+     * 低速车
+     */
+    public static final int EM_PLATE_LOW_SPEED_CAR = 7;
+    /**
+     * 教练车
+     */
+    public static final int EM_PLATE_COACH_CAR = 8;
+    /**
+     * 摩托车
+     */
+    public static final int EM_PLATE_MOTORCYCLE = 9;
+    /**
+     * 新能源车
+     */
+    public static final int EM_PLATE_NEW_POWER_CAR = 10;
+    /**
+     * 警用车
+     */
+    public static final int EM_PLATE_POLICE_CAR = 11;
+    /**
+     * 港澳两地车
+     */
+    public static final int EM_PLATE_HONGKONG_MACAO_CAR = 12;
+    /**
+     * 
+     */
+    public static final int EM_PLATE_WJPOLICE_CAR = 13;
+    /**
+     *
+     */
+    public static final int EM_PLATE_OUTERGUARD_CAR = 14;
+    /**
+     * 非机动车临时牌照
+     */
+    public static final int EM_PLATE_TEMPORARY_LICENSE_FOR_NON_MOTOR_VEHICLES = 15;
+    /**
+     * 非机动车牌正式牌照
+     */
+    public static final int EM_PLATE_OFFICIAL_LICENSE_PLATE_FOR_NON_MOTOR_VEHICLE = 16;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java
new file mode 100644
index 0000000..09cb506
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAYAUDIO_PRIORITY.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 语音播报优先级
+ * @date 2021/2/20
+ */
+public enum EM_PLAYAUDIO_PRIORITY {
+    /**
+     * 未知
+     */
+    EM_PLAYAUDIO_PRIORITY_UNKNOWN,
+    /**
+     * 插入播放队列最前端,播放完该文件后播放原来的文件
+     */
+    EM_PLAYAUDIO_PRIORITY_FRONT,
+    /**
+     * 插入播放队列最后,等待其它文件播放完再播放该文件
+     */
+    EM_PLAYAUDIO_PRIORITY_BACK,
+    /**
+     * 优先级同 EM_PLAYAUDIO_PRIORITY_FRONT,但取消队列中正在播放文件
+     */
+    EM_PLAYAUDIO_PRIORITY_EMERGENCY;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAY_WITH_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAY_WITH_MODE.java
new file mode 100644
index 0000000..425a079
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PLAY_WITH_MODE.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 文件所属的模式
+ * @date 2020/9/10
+ */
+public enum EM_PLAY_WITH_MODE {
+    /**
+     * 未知
+     */
+    EM_PLAY_WITH_MODE_UNKNOWN(0, "未知"),
+    /**
+     * 识别模式
+     */
+    EM_PLAY_WITH_MODE_RECOGNITION(1, "识别"),
+    /**
+     * 信息发布模式
+     */
+    EM_PLAY_WITH_MODE_INFORMATION_RELEASE(2, "信息发布"),
+    /**
+     * 主界面模式
+     */
+    EM_PLAY_WITH_MODE_MAIN_INTERFACE(3, "主界面");
+
+    private EM_PLAY_WITH_MODE(int mode, String desc) {
+        this.mode = mode;
+        this.desc = desc;
+    }
+
+    private int mode;
+    private String desc;
+
+    public int getMode() {
+        return mode;
+    }
+
+    public void setMode(int mode) {
+        this.mode = mode;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public static EM_PLAY_WITH_MODE getPlayMode(int mode) {
+        for (EM_PLAY_WITH_MODE playMode : EM_PLAY_WITH_MODE.values()) {
+            if (playMode.getMode() == mode) {
+                return playMode;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java
new file mode 100644
index 0000000..bb0c756
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_POWER_REGULATION_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  功率调节类型 
+* @date 2022/08/31 14:44:15
+*/
+public enum EM_POWER_REGULATION_TYPE {
+/**
+未知
+*/
+EM_POWER_REGULATION_UNKNOWN(-1,"未知"),
+/**
+自动
+*/
+EM_POWER_REGULATION_AUTO(0,"自动"),
+/**
+低
+*/
+EM_POWER_REGULATION_LOW(1,"低"),
+/**
+中
+*/
+EM_POWER_REGULATION_MEDIUM(2,"中"),
+/**
+高
+*/
+EM_POWER_REGULATION_HIGH(3,"高");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_POWER_REGULATION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_POWER_REGULATION_TYPE enumType : EM_POWER_REGULATION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_POWER_REGULATION_TYPE enumType : EM_POWER_REGULATION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_POWER_REGULATION_TYPE getEnum(int value) {
+        for (EM_POWER_REGULATION_TYPE e : EM_POWER_REGULATION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_POWER_REGULATION_TYPE.EM_POWER_REGULATION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PREALARM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PREALARM.java
new file mode 100644
index 0000000..b952290
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PREALARM.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否为违规预警图片
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:00
+ */
+public class EM_PREALARM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 未知
+     */
+    public static final int					EM_PREALARM_UNKNOWN = -1;
+    /**
+     * 机动车违章事件
+     */
+    public static final int					EM_PREALARM_VIOLATION_EVENT = 0;
+    /**
+     * 机动车违章预警事件
+     */
+    public static final int					EM_PREALARM_VIOLATION_WARNING_EVENT = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java
new file mode 100644
index 0000000..7658708
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRESSING_PLATE_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  压板状态 
+* @date 2022/06/28 19:44:56
+*/
+public enum EM_PRESSING_PLATE_STATE {
+/**
+未知
+*/
+EM_PRESSING_PLATE_STATE_UNKNOWN(0,"未知"),
+/**
+断开
+*/
+EM_PRESSING_PLATE_STATE_DISCONNECT(1,"断开"),
+/**
+闭合
+*/
+EM_PRESSING_PLATE_STATE_CLOSE(2,"闭合");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_PRESSING_PLATE_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_PRESSING_PLATE_STATE enumType : EM_PRESSING_PLATE_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_PRESSING_PLATE_STATE enumType : EM_PRESSING_PLATE_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_PRESSING_PLATE_STATE getEnum(int value) {
+        for (EM_PRESSING_PLATE_STATE e : EM_PRESSING_PLATE_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PRESSING_PLATE_STATE.EM_PRESSING_PLATE_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java
new file mode 100644
index 0000000..912d82a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 遮挡块形状
+ * @date 2022/07/21 13:40:56
+ */
+public enum EM_PRIVACY_MASKING_TYPE {
+	/**
+	 * 未知类型
+	 */
+	EM_MASKING_TYPE_UNKNOWN(0, "未知类型"),
+	/**
+	 * 矩形
+	 */
+	EM_MASKING_TYPE_RECT(1, "矩形"),
+	/**
+	 * 多边形
+	 */
+	EM_MASKING_TYPE_POLYGON(2, "多边形");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_PRIVACY_MASKING_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PRIVACY_MASKING_TYPE enumType : EM_PRIVACY_MASKING_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PRIVACY_MASKING_TYPE enumType : EM_PRIVACY_MASKING_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java
new file mode 100644
index 0000000..c6ce5fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASKING_VERSION.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 隐私遮档版本号
+ * @date 2022/07/21 13:40:56
+ */
+public enum EM_PRIVACY_MASKING_VERSION {
+	/**
+	 * 未知类型
+	 */
+	EM_PRIVACY_MASKING_UNKNOWN(0, "未知类型"),
+	/**
+	 * V1:第一版本隐私遮档算法(原始隐私遮档算法,使用配置)
+	 */
+	EM_PRIVACY_MASKING_V1(1, "V1:第一版本隐私遮档算法(原始隐私遮档算法,使用配置)"),
+	/**
+	 * V2:第二版本的隐私遮档算法(基于视场角的新算法,使用接口)
+	 */
+	EM_PRIVACY_MASKING_V2(2, "V2:第二版本的隐私遮档算法(基于视场角的新算法,使用接口)"),
+	/**
+	 * V3:球机和IPC协议统一的版本
+	 */
+	EM_PRIVACY_MASKING_V3(3, "V3:球机和IPC协议统一的版本");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_PRIVACY_MASKING_VERSION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PRIVACY_MASKING_VERSION enumType : EM_PRIVACY_MASKING_VERSION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PRIVACY_MASKING_VERSION enumType : EM_PRIVACY_MASKING_VERSION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java
new file mode 100644
index 0000000..aaabda6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PRIVACY_MASK_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 隐私保护的物体类型
+ * @date 2021/01/11
+ */
+public enum EM_PRIVACY_MASK_TYPE {
+	// 未知类型
+	EM_PRIVACY_MASK_UNKNOWN(0, "未知类型"),
+
+	// 人脸
+	EM_PRIVACY_MASK_HUMAN_FACE(1, "人脸"),
+
+	// 人体
+	EM_PRIVACY_MASK_HUMAN(2, "人体");
+
+	private int value;
+	private String note;
+
+	private EM_PRIVACY_MASK_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PRIVACY_MASK_TYPE enumType : EM_PRIVACY_MASK_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PRIVACY_MASK_TYPE enumType : EM_PRIVACY_MASK_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROCESS_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROCESS_MODE.java
new file mode 100644
index 0000000..da70754
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROCESS_MODE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  处理方式
+ * @date 2021/9/9
+ */
+public enum EM_PROCESS_MODE {
+/**未知*/
+EM_PROCESS_MODE_UNKNOWN(-1,"未知"),
+/**自弃*/
+EM_PROCESS_MODE_ABANDON_ONESELF(0,"自弃"),
+/**放行*/
+EM_PROCESS_MODE_RELEASE(1,"放行"),
+/**物品保管*/
+EM_PROCESS_MODE_STORAGE_OF_ARTICLES(2,"物品保管"),
+/**移交公安*/
+EM_PROCESS_MODE_TRANSFER_TO_SECURITY(3,"移交公安"),
+/**自行处理*/
+EM_PROCESS_MODE_DISCRETION(4,"自行处理"),
+/**误报*/
+EM_PROCESS_MODE_FALSE_ALARM(5,"误报");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_PROCESS_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_PROCESS_MODE enumType : EM_PROCESS_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_PROCESS_MODE enumType : EM_PROCESS_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_PROCESS_MODE getEnum(int value) {
+        for (EM_PROCESS_MODE e : EM_PROCESS_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PROCESS_MODE.EM_PROCESS_MODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java
new file mode 100644
index 0000000..8ca6b39
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PROPERTIES_VALUE_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 属性值类型
+ * @date 2022/04/20 11:28:15
+ */
+public enum EM_PROPERTIES_VALUE_TYPE {
+    /**
+     * 未知
+     */
+    EM_PROPERTIES_VALUE_UNKNOWN(0, "未知"),
+    /**
+     * int类型,1,100,1000
+     */
+    EM_PROPERTIES_VALUE_INT(1, "int类型,1,100,1000"),
+    /**
+     * bool类型,true,false
+     */
+    EM_PROPERTIES_VALUE_BOOL(2, "bool类型,true,false"),
+    /**
+     * string类型, 1 , 100 , 1000
+     */
+    EM_PROPERTIES_VALUE_STRING(3, "string类型, 1 , 100 , 1000 "),
+    /**
+     * int数组类型, [1,2,3]
+     */
+    EM_PROPERTIES_VALUE_INTARRAY(4, "int数组类型, [1,2,3] ");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_PROPERTIES_VALUE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PROPERTIES_VALUE_TYPE enumType : EM_PROPERTIES_VALUE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PROPERTIES_VALUE_TYPE enumType : EM_PROPERTIES_VALUE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PROPERTIES_VALUE_TYPE getEnum(int value) {
+        for (EM_PROPERTIES_VALUE_TYPE e : EM_PROPERTIES_VALUE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PROPERTIES_VALUE_TYPE.EM_PROPERTIES_VALUE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_FUNCTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_FUNCTION.java
new file mode 100644
index 0000000..de31b6c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_FUNCTION.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 云台功能
+ * @origin autoTool
+ * @date 2023/10/16 19:23:11
+ */
+public enum EM_PTZ_FUNCTION {
+    /**
+     * 未知
+     */
+    NET_EM_PTZ_FUNCTION_UNKNOWN(0, "未知"),
+    /**
+     * None
+     */
+    NET_EM_PTZ_FUNCTION_NONE(1, "None"),
+    /**
+     * Scan功能
+     */
+    NET_EM_PTZ_FUNCTION_SCAN(2, "Scan功能"),
+    /**
+     * Pattern功能
+     */
+    NET_EM_PTZ_FUNCTION_PATTERN(3, "Pattern功能"),
+    /**
+     * Tour功能
+     */
+    NET_EM_PTZ_FUNCTION_TOUR(4, "Tour功能"),
+    /**
+     * AutoPan功能
+     */
+    NET_EM_PTZ_FUNCTION_AUTOPAN(5, "AutoPan功能"),
+    /**
+     * Preset功能
+     */
+    NET_EM_PTZ_FUNCTION_PRESET(6, "Preset功能"),
+    /**
+     * HeatMap功能
+     */
+    NET_EM_PTZ_FUNCTION_HEATMAP(7, "HeatMap功能"),
+    /**
+     * Patrol功能
+     */
+    NET_EM_PTZ_FUNCTION_PATROL(8, "Patrol功能");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_PTZ_FUNCTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PTZ_FUNCTION enumType : EM_PTZ_FUNCTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PTZ_FUNCTION enumType : EM_PTZ_FUNCTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PTZ_FUNCTION getEnum(int value) {
+        for (EM_PTZ_FUNCTION e : EM_PTZ_FUNCTION.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_PTZ_FUNCTION.NET_EM_PTZ_FUNCTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java
new file mode 100644
index 0000000..947be56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_MOVING_RESULT_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  运动移动检测结果类型 
+* @date 2022/08/03 14:26:52
+*/
+public enum EM_PTZ_MOVING_RESULT_TYPE {
+/**
+未知
+*/
+EM_PTZ_MOVING_UNKNOWN(0,"未知"),
+/**
+检测正常
+*/
+EM_PTZ_MOVING_NORMAL(1,"检测正常"),
+/**
+不按指令运动
+*/
+EM_PTZ_MOVING_NOTOBEY(2,"不按指令运动"),
+/**
+不能运动
+*/
+EM_PTZ_MOVING_NOTMOVE(3,"不能运动"),
+/**
+未做检测
+*/
+EM_PTZ_MOVING_NOTDETECT(4,"未做检测");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_PTZ_MOVING_RESULT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_PTZ_MOVING_RESULT_TYPE enumType : EM_PTZ_MOVING_RESULT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_PTZ_MOVING_RESULT_TYPE enumType : EM_PTZ_MOVING_RESULT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_PTZ_MOVING_RESULT_TYPE getEnum(int value) {
+        for (EM_PTZ_MOVING_RESULT_TYPE e : EM_PTZ_MOVING_RESULT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_PTZ_MOVING_RESULT_TYPE.EM_PTZ_MOVING_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_TASK_NAME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_TASK_NAME.java
new file mode 100644
index 0000000..5fae424
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_TASK_NAME.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 任务名称
+ * @origin autoTool
+ * @date 2023/10/16 19:23:11
+ */
+public enum EM_PTZ_TASK_NAME {
+    /**
+     * 未知
+     */
+    NET_EM_PTZ_TASK_NAME_UNKNOWN(0, "未知"),
+    /**
+     * 定时任务
+     */
+    NET_EM_PTZ_TASK_NAME_AUTOMOVEMENT(1, "定时任务"),
+    /**
+     * 空闲任务
+     */
+    NET_EM_PTZ_TASK_NAME_IDLEMOTION(2, "空闲任务"),
+    /**
+     * 开机动作
+     */
+    NET_EM_PTZ_TASK_NAME_POWERUP(3, "开机动作"),
+    /**
+     * 云台联动
+     */
+    NET_EM_PTZ_TASK_NAME_LINK(4, "云台联动"),
+    /**
+     * 智能
+     */
+    NET_EM_PTZ_TASK_NAME_INTELIGENCE(5, "智能"),
+    /**
+     * 手动
+     */
+    NET_EM_PTZ_TASK_NAME_MANUAL(6, "手动");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_PTZ_TASK_NAME(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_PTZ_TASK_NAME enumType : EM_PTZ_TASK_NAME.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_PTZ_TASK_NAME enumType : EM_PTZ_TASK_NAME.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_PTZ_TASK_NAME getEnum(int value) {
+        for (EM_PTZ_TASK_NAME e : EM_PTZ_TASK_NAME.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return EM_PTZ_TASK_NAME.NET_EM_PTZ_TASK_NAME_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java
new file mode 100644
index 0000000..5d4010c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_PTZ_UNSUPPORT_DIRECTION.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 云台不支持的转动方向
+ * @date 2021/02/05
+ */
+public enum EM_PTZ_UNSUPPORT_DIRECTION {
+
+	// 未知
+	EM_PTZ_UNSUPPORT_DIRECTION_UNKNOWN(0, "未知"),
+
+	// 上
+	EM_PTZ_UNSUPPORT_DIRECTION_UP(1, "上"),
+
+	// 下
+	EM_PTZ_UNSUPPORT_DIRECTION_DOWN(2, "下"),
+	
+	// 左
+	EM_PTZ_UNSUPPORT_DIRECTION_LEFT(3, "左"),
+	
+	// 右
+	EM_PTZ_UNSUPPORT_DIRECTION_RIGHT(4, "右"),
+	
+	// 左上
+	EM_PTZ_UNSUPPORT_DIRECTION_LEFTUP(5, "左上"),
+	
+	// 右上
+	EM_PTZ_UNSUPPORT_DIRECTION_RIGHTUP(6, "右上"),
+	
+	// 左下
+	EM_PTZ_UNSUPPORT_DIRECTION_LEFTDOWN(7, "左下"),
+	
+	// 右下
+	EM_PTZ_UNSUPPORT_DIRECTION_RIGHTDOWN(8, "右下");
+	
+
+	private int value;
+	private String note;
+
+	private EM_PTZ_UNSUPPORT_DIRECTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_PTZ_UNSUPPORT_DIRECTION enumType : EM_PTZ_UNSUPPORT_DIRECTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_PTZ_UNSUPPORT_DIRECTION enumType : EM_PTZ_UNSUPPORT_DIRECTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java
new file mode 100644
index 0000000..3c8347d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_IS_EXPIRED.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 二维码是否过期
+ * @date 2021/2/22
+ */
+public enum EM_QRCODE_IS_EXPIRED {
+  /** 未知 */
+  EM_QRCODE_EXPIRED_UNKNOWN,
+  /** 未过期 */
+  EM_QRCODE_NO_EXPIRED,
+  /** 过期 */
+  EM_QRCODE_EXPIRED;
+
+  public static EM_QRCODE_IS_EXPIRED getQrCodeExpired(int expired) {
+    for (EM_QRCODE_IS_EXPIRED qrcodeExpired : EM_QRCODE_IS_EXPIRED.values()) {
+      if (qrcodeExpired.ordinal() == expired) {
+        return qrcodeExpired;
+      }
+    }
+    return EM_QRCODE_EXPIRED_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_STATE.java
new file mode 100644
index 0000000..d6de15b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QRCODE_STATE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 二维码状态
+ * @date 2021/2/22
+ */
+public enum EM_QRCODE_STATE {
+  /** 未知 */
+  EM_QRCODE_STATE_UNKNOWN,
+  /** 已批准 */
+  EM_QRCODE_STATE_CLEARED,
+  /** 未批准 */
+  EM_QRCODE_STATE_NOCLEARED;
+
+  public static EM_QRCODE_STATE getQrcodeState(int state) {
+    for (EM_QRCODE_STATE qrcodeState : EM_QRCODE_STATE.values()) {
+      if (qrcodeState.ordinal() == state) {
+        return qrcodeState;
+      }
+    }
+    return EM_QRCODE_STATE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java
new file mode 100644
index 0000000..1f62dab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_QUERY_TEMPERATURE_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 温度类型
+ * @date 2021/02/22
+ */
+public enum EM_QUERY_TEMPERATURE_TYPE {
+	// 未知
+	EM_QUERY_TEMPERATURE_TYPE_UNKNOWN(-1, "未知"),
+	// 全部
+	EM_QUERY_TEMPERATURE_TYPE_ALL(0, "全部"),
+	// 低
+	EM_QUERY_TEMPERATURE_TYPE_LOW(1, "低"),
+	// 正常
+	EM_QUERY_TEMPERATURE_TYPE_NORMAL(2, "正常"),
+	// 高
+	EM_QUERY_TEMPERATURE_TYPE_HIGH(3, "高");
+
+	private int value;
+	private String note;
+
+	private EM_QUERY_TEMPERATURE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_QUERY_TEMPERATURE_TYPE enumType : EM_QUERY_TEMPERATURE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_QUERY_TEMPERATURE_TYPE enumType : EM_QUERY_TEMPERATURE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java
new file mode 100644
index 0000000..2375e6e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_ALARM_TYPE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 雷达报警类型
+ * @date 2021/07/21
+ */
+public enum EM_RADAR_ALARM_TYPE {
+	// 未知
+	EM_RADAR_ALARM_TYPE_UNKNOWN(0, "未知"),
+	// 报警
+	EM_RADAR_ALARM_TYPE_ALARM(1, "报警"),
+	// 预警
+	EM_RADAR_ALARM_TYPE_WARNING(2, "预警");
+
+	private int value;
+	private String note;
+
+	private EM_RADAR_ALARM_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RADAR_ALARM_TYPE enumType : EM_RADAR_ALARM_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RADAR_ALARM_TYPE enumType : EM_RADAR_ALARM_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java
new file mode 100644
index 0000000..95cf229
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECTION_VEHICLE_TYPE.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  雷达检测车型 
+* @date 2022/06/07 09:46:01
+*/
+public enum EM_RADAR_DETECTION_VEHICLE_TYPE {
+/**
+未知
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_UNKNOWN(0,"未知"),
+/**
+中小客车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_MID_PASSENGER_CAR(1,"中小客车"),
+/**
+大客车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_MOTOR_BUS(2,"大客车"),
+/**
+小货车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_MICRO_TRUCK(3,"小货车"),
+/**
+中型货车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_MID_TRUCK(4,"中型货车"),
+/**
+大型货车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_LARGE_TRUCK(5,"大型货车"),
+/**
+特大货车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_SUPER_TRUCK(6,"特大货车"),
+/**
+集装箱车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_CONTAINER_CAR(7,"集装箱车"),
+/**
+摩托车
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_MOTORCYCLE(8,"摩托车"),
+/**
+拖拉机
+*/
+EM_RADAR_DETECTION_VEHICLE_TYPE_TRACTOR(9,"拖拉机");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_RADAR_DETECTION_VEHICLE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_RADAR_DETECTION_VEHICLE_TYPE enumType : EM_RADAR_DETECTION_VEHICLE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_RADAR_DETECTION_VEHICLE_TYPE enumType : EM_RADAR_DETECTION_VEHICLE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_RADAR_DETECTION_VEHICLE_TYPE getEnum(int value) {
+        for (EM_RADAR_DETECTION_VEHICLE_TYPE e : EM_RADAR_DETECTION_VEHICLE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RADAR_DETECTION_VEHICLE_TYPE.EM_RADAR_DETECTION_VEHICLE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java
new file mode 100644
index 0000000..d40bf2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_DETECT_OBJECT_TYPE.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 雷达检测对象类型
+ * @date 2021/07/21
+ */
+public enum EM_RADAR_DETECT_OBJECT_TYPE {
+	// 未知
+	EM_RADAR_DETECT_OBJECT_UNKNOWN(0, "未知"),
+	// 人
+	EM_RADAR_DETECT_OBJECT_HUMAN(1, "人"),
+	// 车
+	EM_RADAR_DETECT_OBJECT_VEHICLE(2, "车");
+
+	private int value;
+	private String note;
+
+	private EM_RADAR_DETECT_OBJECT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RADAR_DETECT_OBJECT_TYPE enumType : EM_RADAR_DETECT_OBJECT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RADAR_DETECT_OBJECT_TYPE enumType : EM_RADAR_DETECT_OBJECT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java
new file mode 100644
index 0000000..c4aa7b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_AREASUB_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 设备程序所在的雷达区域
+ * @date 2022/08/04 10:13:31
+ */
+public enum EM_RADAR_GETCAPS_AREASUB_TYPE {
+    /**
+     * 未知
+     */
+    EM_RADAR_GETCAPS_AREASUB_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 扇形
+     */
+    EM_RADAR_GETCAPS_AREASUB_TYPE_SECTOR(1, "扇形"),
+    /**
+     * 椭圆
+     */
+    EM_RADAR_GETCAPS_AREASUB_TYPE_ELLIPSE(2, "椭圆");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_RADAR_GETCAPS_AREASUB_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RADAR_GETCAPS_AREASUB_TYPE enumType : EM_RADAR_GETCAPS_AREASUB_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RADAR_GETCAPS_AREASUB_TYPE enumType : EM_RADAR_GETCAPS_AREASUB_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_RADAR_GETCAPS_AREASUB_TYPE getEnum(int value) {
+        for (EM_RADAR_GETCAPS_AREASUB_TYPE e : EM_RADAR_GETCAPS_AREASUB_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RADAR_GETCAPS_AREASUB_TYPE.EM_RADAR_GETCAPS_AREASUB_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java
new file mode 100644
index 0000000..4480b87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_GETCAPS_RADAR_TYPE.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 雷达类型
+ * @date 2022/08/04 10:13:32
+ */
+public enum EM_RADAR_GETCAPS_RADAR_TYPE {
+    /**
+     * 未知
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 单IP雷达
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE1(1, "单IP雷达"),
+    /**
+     * 雷达控制盒
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE2(2, "雷达控制盒"),
+    /**
+     * 端站一体机
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE3(3, "端站一体机"),
+    /**
+     * 室内雷达
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE4(4, "室内雷达"),
+    /**
+     * 体征雷达
+     */
+    EM_RADAR_GETCAPS_RADAR_TYPE5(5, "体征雷达");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_RADAR_GETCAPS_RADAR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RADAR_GETCAPS_RADAR_TYPE enumType : EM_RADAR_GETCAPS_RADAR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RADAR_GETCAPS_RADAR_TYPE enumType : EM_RADAR_GETCAPS_RADAR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_RADAR_GETCAPS_RADAR_TYPE getEnum(int value) {
+        for (EM_RADAR_GETCAPS_RADAR_TYPE e : EM_RADAR_GETCAPS_RADAR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RADAR_GETCAPS_RADAR_TYPE.EM_RADAR_GETCAPS_RADAR_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java
new file mode 100644
index 0000000..a21311d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OBJECTTYPE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_RADAR_OBJECTTYPE {
+	EM_RADAR_OBJECTTYPE_UNKNOWN(0,"未识别目标"),                         
+	EM_RADAR_OBJECTTYPE_PERSON(1,"目标为人"),                          
+	EM_RADAR_OBJECTTYPE_VEHICLE(2,"目标为交通工具"),                        
+	EM_RADAR_OBJECTTYPE_TREE(3,"目标为树"),                             
+	EM_RADAR_OBJECTTYPE_BUILIDING(4,"目标为建筑物"),                        
+	EM_RADAR_OBJECTTYPE_SCREEN(5,"目标为屏幕");                          
+	
+	private int value;
+    private String note;    
+    
+	private EM_RADAR_OBJECTTYPE(int value, String note) {
+		this.value = value;
+		this.note = note;
+	}
+	public int getValue() {
+		return value;
+	}
+	public void setValue(int value) {
+		this.value = value;
+	}
+	public String getNote() {
+		return note;
+	}
+	public void setNote(String note) {
+		this.note = note;
+	}
+    
+    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java
new file mode 100644
index 0000000..7458e1f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_OPERATE_TYPE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 雷达操作类型
+ * @date 2022/08/04 10:13:33
+ */
+public enum EM_RADAR_OPERATE_TYPE {
+    /**
+     * 雷达开始升级通知,入参:NET_IN_RADAR_STARTUPGRADE,出参:NET_OUT_RADAR_STARTUPGRADE
+     */
+    EM_RADAR_OPERATE_TYPE_STARTUPGRADE(0, "雷达开始升级通知,入参:NET_IN_RADAR_STARTUPGRADE,出参:NET_OUT_RADAR_STARTUPGRADE"),
+    /**
+     * 获取雷达能力,入参:NET_IN_RADAR_GETCAPS,出参:NET_OUT_RADAR_GETCAPS
+     */
+    EM_RADAR_OPERATE_TYPE_GETCAPS(1, "获取雷达能力,入参:NET_IN_RADAR_GETCAPS,出参:NET_OUT_RADAR_GETCAPS"),
+    /**
+     * 获取雷达状态,入参:NET_IN_RADAR_GETSTATUS,出参:NET_OUT_RADAR_GETSTATUS
+     */
+    EM_RADAR_OPERATE_TYPE_GETSTATUS(2, "获取雷达状态,入参:NET_IN_RADAR_GETSTATUS,出参:NET_OUT_RADAR_GETSTATUS"),
+    /**
+     * 计算图片对应的地图实际长度,入参:NET_IN_RADAR_CALCULATEREALSIZE,出参:NET_OUT_RADAR_CALCULATEREALSIZE
+     */
+    EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE(3, "计算图片对应的地图实际长度,入参:NET_IN_RADAR_CALCULATEREALSIZE,出参:NET_OUT_RADAR_CALCULATEREALSIZE"),
+    /**
+     * 雷球校准配置下发,入参:NET_IN_RADAR_SETCALIBRATION,出参:NET_OUT_RADAR_SETCALIBRATION
+     */
+    EM_RADAR_OPERATE_TYPE_SETCALIBRATION(4, "雷球校准配置下发,入参:NET_IN_RADAR_SETCALIBRATION,出参:NET_OUT_RADAR_SETCALIBRATION");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_RADAR_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RADAR_OPERATE_TYPE enumType : EM_RADAR_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RADAR_OPERATE_TYPE enumType : EM_RADAR_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_RADAR_OPERATE_TYPE getEnum(int value) {
+        for (EM_RADAR_OPERATE_TYPE e : EM_RADAR_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RADAR_OPERATE_TYPE.EM_RADAR_OPERATE_TYPE_STARTUPGRADE;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_POINTTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_POINTTYPE.java
new file mode 100644
index 0000000..c494b38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_POINTTYPE.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_RADAR_POINTTYPE {
+	EM_RADAR_POINTTYPE_UNKNOWN(0,"未知"),                          
+	EM_RADAR_POINTTYPE_ALARMPOINT(1,"当前点是报警区的报警点"),                       
+	EM_RADAR_POINTTYPE_LINKMONITORPOINT(2,"当前点是正在被联动监控的点"),                 
+	EM_RADAR_POINTTYPE_DISAPPEARTRACKPOINT(3,"当前点是消失的轨迹点");
+
+	private int value;
+    private String note;
+    
+	EM_RADAR_POINTTYPE(int givenValue, String note) {
+		// TODO Auto-generated constructor stub
+		this.value = givenValue;
+        this.note = note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public void setValue(int value) {
+		this.value = value;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public void setNote(String note) {
+		this.note = note;
+	}    
+	
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_STATUS.java
new file mode 100644
index 0000000..ede51bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RADAR_STATUS.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 雷达状态
+ * @date 2022/08/04 10:13:32
+ */
+public enum EM_RADAR_STATUS {
+    /**
+     * 未知
+     */
+    EM_RADAR_STATUS_UNKNOWN(0, "未知"),
+    /**
+     * 正常
+     */
+    EM_RADAR_STATUS_NORMAL(1, "正常"),
+    /**
+     * 异常
+     */
+    EM_RADAR_STATUS_ABNORMAL(2, "异常");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_RADAR_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RADAR_STATUS enumType : EM_RADAR_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RADAR_STATUS enumType : EM_RADAR_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_RADAR_STATUS getEnum(int value) {
+        for (EM_RADAR_STATUS e : EM_RADAR_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RADAR_STATUS.EM_RADAR_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERROR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERROR.java
new file mode 100644
index 0000000..688f42a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERROR.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_RAID_ERROR {
+
+    EM_RAID_ERROR_UNKNOW(0, "未知"),
+    EM_RAID_ERROR_FAILED(1, "RAID错误"),                      // RAID错误
+    EM_RAID_ERROR_DEGRADED(2, "RAID降级");                     // RAID降级
+
+    private int value;
+    private String note;
+
+    private EM_RAID_ERROR(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RAID_ERROR enumType : EM_RAID_ERROR.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RAID_ERROR enumType : EM_RAID_ERROR.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java
new file mode 100644
index 0000000..f4fc157
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAID_ERR_SUBDISK.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_RAID_ERR_SUBDISK {
+
+    EM_RAID_ERR_SUBDISK_UNKNOWN(0, "未知"),                         // 未知
+    EM_RAID_ERR_SUBDISK_OFFLINE(1, "离线"),                         // 离线
+    EM_RAID_ERR_SUBDISK_FAULTY(2, "异常"),                          // 异常
+    EM_RAID_ERR_SUBDISK_WRITEERR(3, "写错误");                      // 写错误
+
+
+    private int value;
+    private String note;
+
+    private EM_RAID_ERR_SUBDISK(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_RAID_ERR_SUBDISK enumType : EM_RAID_ERR_SUBDISK.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_RAID_ERR_SUBDISK enumType : EM_RAID_ERR_SUBDISK.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java
new file mode 100644
index 0000000..59848b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RAIN_SHED_TYPE.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  雨棚(伞)类型 
+* @origin autoTool
+* @date 2023/02/14 20:11:39
+*/
+public enum EM_RAIN_SHED_TYPE {
+/**
+无
+*/
+EM_RAIN_SHED_TYPE_NONE(-1,"无"),
+/**
+不撑伞
+*/
+EM_RAIN_SHED_TYPE_NO_UMBRELLA(0,"不撑伞"),
+/**
+人非手撑伞
+*/
+EM_RAIN_SHED_TYPE_NOT_PEOPLE_HOLD(1,"人非手撑伞"),
+/**
+未知
+*/
+EM_RAIN_SHED_TYPE_UNKOWN(2,"未知"),
+/**
+非机动车装载雨伞
+*/
+EM_RAIN_SHED_TYPE_NO_MOTOR_UMBRELLA(3,"非机动车装载雨伞"),
+/**
+非机动车装载雨棚
+*/
+EM_RAIN_SHED_TYPE_NO_MOTOR_CANOPY(4,"非机动车装载雨棚");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_RAIN_SHED_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_RAIN_SHED_TYPE enumType : EM_RAIN_SHED_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_RAIN_SHED_TYPE enumType : EM_RAIN_SHED_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_RAIN_SHED_TYPE getEnum(int value) {
+        for (EM_RAIN_SHED_TYPE e : EM_RAIN_SHED_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RAIN_SHED_TYPE.EM_RAIN_SHED_TYPE_NONE;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REAL_DATA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REAL_DATA_TYPE.java
new file mode 100644
index 0000000..b471bab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REAL_DATA_TYPE.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2021/3/2
+ */
+public enum EM_REAL_DATA_TYPE {
+  EM_REAL_DATA_TYPE_PRIVATE(0, "私有码流"),
+  EM_REAL_DATA_TYPE_GBPS(1, "国标PS码流"),
+  EM_REAL_DATA_TYPE_TS(2, "TS码流"),
+  EM_REAL_DATA_TYPE_MP4(3, "MP4文件"),
+  EM_REAL_DATA_TYPE_H264(4, "裸H264码流"),
+  EM_REAL_DATA_TYPE_FLV_STREAM(5, "流式FLV");
+  private int type;
+  private String desc;
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  EM_REAL_DATA_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  /**
+   * 根据type返回码流类型,默认返回私有码流
+   *
+   * @param type 码流类型
+   * @return
+   */
+  public static EM_REAL_DATA_TYPE getRealDataType(int type) {
+    for (EM_REAL_DATA_TYPE dataType : EM_REAL_DATA_TYPE.values()) {
+      if (dataType.getType() == type) {
+        return dataType;
+      }
+    }
+    return EM_REAL_DATA_TYPE_PRIVATE;
+  }
+
+  /**
+   * 根据码流类型返回枚举,如私有、ps、ts、mp4、h264、flv
+   *
+   * @param streamType
+   * @return
+   */
+  public static EM_REAL_DATA_TYPE getRealDataType(String streamType) {
+    for (EM_REAL_DATA_TYPE dataType : EM_REAL_DATA_TYPE.values()) {
+      if (dataType.getDesc().toLowerCase().contains(streamType.toLowerCase().trim())) {
+        return dataType;
+      }
+    }
+    return EM_REAL_DATA_TYPE_PRIVATE;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REASON_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REASON_TYPE.java
new file mode 100644
index 0000000..30c1abd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_REASON_TYPE.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 音频文件预上传错误原因
+ * @date 2020/6/10
+ */
+public enum EM_REASON_TYPE {
+    /**
+     * 未知原因
+     */
+    EM_REASON_TYPE_UNKNOWN(0, "未知原因"),
+    /**
+     * 文件个数超出
+     */
+    EM_REASON_TYPE_OVERNUMBER(1, "文件个数超出"),
+    /**
+     * 文件存储已满
+     */
+    EM_REASON_TYPE_FULLSTORAGE(2, "文件存储空间已满"),
+    /**
+     * 文件太大
+     */
+    EM_REASON_TYPE_TOOLARGE_FILE(3, "该文件太大"),
+    /**
+     * 无效的文件类型
+     */
+    EM_REASON_TYPE_INVALID_FILETYPE(4, "无效的文件类型"),
+    /**
+     * 没有上传权限
+     */
+    EM_REASON_TYPE_UNAUTH_UPLOAD(5, "没有上传权限"),
+    /**
+     * 文件命名异常
+     */
+    EM_REASON_TYPE_EXCEPTION_NAME(6, "文件命名异常"),
+    /**
+     * 文件名太长
+     */
+    EM_REASON_TYPE_TOOLONG_NAME(7, "文件名太长"),
+    /**
+     * 文件名已存在
+     */
+    EM_REASON_TYPE_EXIST_NAME(8, "文件名已存在");
+    private int type;
+    private String reason;
+
+    private EM_REASON_TYPE(int type, String reson) {
+        this.type = type;
+        this.reason = reson;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public static String getReason(int type) {
+        for (EM_REASON_TYPE reason : EM_REASON_TYPE.values()) {
+            if (type == reason.getType()) {
+                return reason.getReason();
+            }
+        }
+        return null;
+    }
+
+    public static EM_REASON_TYPE getReasonType(int type) {
+        for (EM_REASON_TYPE reason : EM_REASON_TYPE.values()) {
+            if (type == reason.type) {
+                return reason;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java
new file mode 100644
index 0000000..3a3b800
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FAIL_REASON.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 失败的原因
+ * @date 2021/11/07
+ */
+public enum EM_RECORD_BACKUP_FAIL_REASON {
+	/**
+	 未知
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_UNKNOW(0,"未知"),
+	/**
+	 登入失败
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_LOGIN_FAIL(1,"登入失败"),
+	/**
+	 没有查询到录像
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_NO_FILES(2,"没有查询到录像"),
+	/**
+	 下载过程中网络断开
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_DOWNLOAD_NET_ERROR(3,"下载过程中网络断开"),
+	/**
+	 未知错误
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_UNKNOW_ERROR(4,"未知错误"),
+	/**
+	 用户名无效
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_USER_NAME_NOT_VALID(5,"用户名无效"),
+	/**
+	 密码错误
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_PASSWORD_NOT_VALID(6,"密码错误"),
+	/**
+	 地址被屏蔽
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_PEER_HAS_BEEN_BLOCKED(7,"地址被屏蔽"),
+	/**
+	 地址在禁止访问名单内
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_PEER_IN_BLOCK_LIST(8,"地址在禁止访问名单内"),
+	/**
+	 超出最大连接数
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_TOO_MANY_CONNECTIONS(9,"超出最大连接数"),
+	/**
+	 账号被锁定
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_ACCOUNT_HAS_BEEN_BLOCKED(10,"账号被锁定"),
+	/**
+	 登入时网络连接失败
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_LOGIN_CONNECT_FAILED(11,"登入时网络连接失败"),
+	/**
+	 登入用户名或者密码错误
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_USER_OR_PWD_NOT_VALID(12,"登入用户名或者密码错误"),
+	/**
+	 登入超时
+	 */
+	EM_RECORD_BACKUP_FAIL_REASON_LOGIN_CONNECT_TIMEOUT(13,"登入超时");
+
+	private int value;
+	private String note;
+
+	private EM_RECORD_BACKUP_FAIL_REASON(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RECORD_BACKUP_FAIL_REASON enumType : EM_RECORD_BACKUP_FAIL_REASON.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RECORD_BACKUP_FAIL_REASON enumType : EM_RECORD_BACKUP_FAIL_REASON.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java
new file mode 100644
index 0000000..a534998
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_BACKUP_FIND_TYPE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 根据条件查询备份任务的查询方式
+ * @date 2022/01/14
+ */
+public enum EM_RECORD_BACKUP_FIND_TYPE {
+	// 未知
+	EM_RECORD_BACKUP_FIND_TYPE_UNKNOWN(0, "未知"), 
+	// 按照任务号查询
+	EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID(1, "按照任务号查询"), 
+	// 按照通道和录制时间段查询
+	EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME(2, "按照通道和录制时间段查询"),
+    // 按照主动注册的设备ID查
+	EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID(3,"按照主动注册的设备ID查");
+
+	private int value;
+	private String note;
+
+	private EM_RECORD_BACKUP_FIND_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RECORD_BACKUP_FIND_TYPE enumType : EM_RECORD_BACKUP_FIND_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RECORD_BACKUP_FIND_TYPE enumType : EM_RECORD_BACKUP_FIND_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java
new file mode 100644
index 0000000..1da9520
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_SNAP_FLAG_TYPE.java
@@ -0,0 +1,112 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 录像或抓图文件标志
+ * @date 2022/11/03 09:21:59
+ */
+public enum EM_RECORD_SNAP_FLAG_TYPE {
+	/**
+	 * 未知
+	 */
+	FLAG_TYPE_UNKNOW(-1, "未知"),
+	/**
+	 * 定时文件
+	 */
+	FLAG_TYPE_TIMING(0, "定时文件"),
+	/**
+	 * 手动文件
+	 */
+	FLAG_TYPE_MANUAL(1, "手动文件"),
+	/**
+	 * 重要文件
+	 */
+	FLAG_TYPE_MARKED(2, "重要文件"),
+	/**
+	 * 事件文件
+	 */
+	FLAG_TYPE_EVENT(3, "事件文件"),
+	/**
+	 * 合成图片
+	 */
+	FLAG_TYPE_MOSAIC(4, "合成图片"),
+	/**
+	 * 抠图图片
+	 */
+	FLAG_TYPE_CUTOUT(5, "抠图图片"),
+	/**
+	 * 留言文件
+	 */
+	FLAG_TYPE_LEAVE_WORD(6, "留言文件"),
+	/**
+	 * 对讲本地方文件
+	 */
+	FLAG_TYPE_TALKBACK_LOCAL_SIDE(7, "对讲本地方文件"),
+	/**
+	 * 对讲远程方文件
+	 */
+	FLAG_TYPE_TALKBACK_REMOTE_SIDE(8, "对讲远程方文件"),
+	/**
+	 * 浓缩视频
+	 */
+	FLAG_TYPE_SYNOPSIS_VIDEO(9, "浓缩视频"),
+	/**
+	 * 原始视频
+	 */
+	FLAG_TYPE_ORIGINAL_VIDEO(10, "原始视频"),
+	/**
+	 * 已经预处理的原始视频
+	 */
+	FLAG_TYPE_PRE_ORIGINAL_VIDEO(11, "已经预处理的原始视频"),
+	/**
+	 * 禁止名单图片
+	 */
+	FLAG_TYPE_BLACK_PLATE(12, "禁止名单图片"),
+	/**
+	 * 原始图片
+	 */
+	FLAG_TYPE_ORIGINAL_PIC(13, "原始图片"),
+	/**
+	 * 卡号录像
+	 */
+	FLAG_TYPE_CARD(14, "卡号录像"),
+	/**
+	
+	*/
+	FLAG_TYPE_MAX(128, "");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_RECORD_SNAP_FLAG_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RECORD_SNAP_FLAG_TYPE enumType : EM_RECORD_SNAP_FLAG_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RECORD_SNAP_FLAG_TYPE enumType : EM_RECORD_SNAP_FLAG_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_TYPE.java
new file mode 100644
index 0000000..0065f7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RECORD_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 录像类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_RECORD_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_RECORD_TYPE_UNKNOWN = 0;
+    /**
+     *  普通录像
+     */
+    public static final int					EM_RECORD_TYPE_COMMON = 1;
+    /**
+     *  报警录像
+     */
+    public static final int					EM_RECORD_TYPE_ALARM2 = 2;
+    /**
+     *  动检录像
+     */
+    public static final int					EM_RECORD_TYPE_MOTIONDETECT = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java
new file mode 100644
index 0000000..468b103
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_STATE_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 继电器状态
+ * @date 2020/12/14
+ */
+public enum EM_RELAY_STATE_TYPE {
+	// 未知
+	EM_RELAY_STATE_TYPE_UNKNOWN(-1, "未知"),
+	// 关
+	EM_RELAY_STATE_TYPE_CLOSE(0, "关"),
+	// 开
+	EM_RELAY_STATE_TYPE_OPEN(1, "开"),
+	// 不支持
+	EM_RELAY_STATE_TYPE_NO_SUPPORT(255, "不支持");
+
+	private int value;
+	private String note;
+
+	private EM_RELAY_STATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RELAY_STATE_TYPE enumType : EM_RELAY_STATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RELAY_STATE_TYPE enumType : EM_RELAY_STATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_TYPE.java
new file mode 100644
index 0000000..15ebc66
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RELAY_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  是否启用中继转发 
+* @date 2022/08/31 14:44:16
+*/
+public enum EM_RELAY_TYPE {
+/**
+未知
+*/
+EM_RELAY_UNKNOWN(-1,"未知"),
+/**
+关闭
+*/
+EM_RELAY_CLOSED(0,"关闭"),
+/**
+手动
+*/
+EM_RELAY_MANUAL(1,"手动"),
+/**
+自动
+*/
+EM_RELAY_AUTO(2,"自动");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_RELAY_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_RELAY_TYPE enumType : EM_RELAY_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_RELAY_TYPE enumType : EM_RELAY_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_RELAY_TYPE getEnum(int value) {
+        for (EM_RELAY_TYPE e : EM_RELAY_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RELAY_TYPE.EM_RELAY_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RESPIRATOR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RESPIRATOR_STATE.java
new file mode 100644
index 0000000..02df349
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RESPIRATOR_STATE.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  呼吸器状态 
+* @date 2022/06/28 19:44:55
+*/
+public enum EM_RESPIRATOR_STATE {
+/**
+未知
+*/
+EM_RESPIRATOR_STATE_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_RESPIRATOR_STATE_NORMAL(1,"正常"),
+/**
+硅胶变色
+*/
+EM_RESPIRATOR_STATE_SILICA_GEL_COLOR_CHANGE(2,"硅胶变色"),
+/**
+硅胶桶破损
+*/
+EM_RESPIRATOR_STATE_SILICA_GEL_BARREL_BROKEN(3,"硅胶桶破损"),
+/**
+油位异常
+*/
+EM_RESPIRATOR_STATE_ABNORMAL_OIL_LEVEL(4,"油位异常");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_RESPIRATOR_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_RESPIRATOR_STATE enumType : EM_RESPIRATOR_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_RESPIRATOR_STATE enumType : EM_RESPIRATOR_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_RESPIRATOR_STATE getEnum(int value) {
+        for (EM_RESPIRATOR_STATE e : EM_RESPIRATOR_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_RESPIRATOR_STATE.EM_RESPIRATOR_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ROAD_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ROAD_LEVEL.java
new file mode 100644
index 0000000..26ff69f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ROAD_LEVEL.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  路面状况等级 
+* @origin autoTool
+* @date 2023/06/16 10:02:52
+*/
+public enum EM_ROAD_LEVEL {
+/**
+未知
+*/
+EM_ROAD_UNKNOWN_LEVEL(-1,"未知"),
+/**
+0: 纵向裂纹
+*/
+EM_ROAD_ZERO_LEVEL(0,"0: 纵向裂纹"),
+/**
+1: 横向裂纹
+*/
+EM_ROAD_ONE_LEVEL(1,"1: 横向裂纹"),
+/**
+2: 鳄鱼裂纹
+*/
+EM_ROAD_TWO_LEVEL(2,"2: 鳄鱼裂纹"),
+/**
+3: 槽纹
+*/
+EM_ROAD_THREE_LEVEL(3,"3: 槽纹"),
+/**
+4: 车辙纹
+*/
+EM_ROAD_FOUR_LEVEL(4,"4: 车辙纹"),
+/**
+5: 纵向修复纹
+*/
+EM_ROAD_FIVE_LEVEL(5,"5: 纵向修复纹"),
+/**
+6: 横向修复纹
+*/
+EM_ROAD_SIX_LEVEL(6,"6: 横向修复纹");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ROAD_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ROAD_LEVEL enumType : EM_ROAD_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ROAD_LEVEL enumType : EM_ROAD_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_ROAD_LEVEL getEnum(int value) {
+        for (EM_ROAD_LEVEL e : EM_ROAD_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ROAD_LEVEL.EM_ROAD_UNKNOWN_LEVEL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java
new file mode 100644
index 0000000..cfbebd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RPC_NETAPP_TYPE.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 网络应用组件 操作类型
+ * @date 2021/09/01
+ */
+public enum EM_RPC_NETAPP_TYPE {
+	/**
+     *获得网络资源统计, pstuIn 对应 NET_IN_NETAPP_GET_NET_RESOURCE_STAT*,pstuOut对应 NET_OUT_NETAPP_GET_NET_RESOURCE_STAT*
+     */
+	EM_RPC_NETAPP_TYPE_GET_NET_RESOURCE_STAT(0),
+    /**
+     * 获取3G网络的信号强度, pstuIn 对应 NET_IN_NETAPP_GET_MOBILE_RSSI*, pstuOut 对应 NET_OUT_NETAPP_GET_MOBILE_RSSI*
+      */
+	EM_RPC_NETAPP_TYPE_GET_MOBILE_RSSI(1),
+    /**
+     * 获取所有移动网络接口, pstuIn 对应 NET_IN_NETAPP_GET_MOBILE_INTERFACE*,pstuOut对应 NET_OUT_NETAPP_GET_MOBILE_INTERFACE*
+     */
+	EM_PRC_NETAPP_TYPE_GET_MOBILE_INTERFACE(2),
+    /**
+     * 获取拨号信息, pstuIn 对应 NET_IN_NETAPP_GET_DIAL_INFO*,pstuOut对应 NET_OUT_NETAPP_GET_DIAL_INFO*
+     */
+	EM_PRC_NETAPP_TYPE_GET_DIAL_INFO(3);
+  
+    private final int id;
+    private EM_RPC_NETAPP_TYPE(int id){
+        this.id=id;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RULE_TYPE_ACCURATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RULE_TYPE_ACCURATE.java
new file mode 100644
index 0000000..e79c0ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_RULE_TYPE_ACCURATE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 精准人数统计类型
+ * @origin autoTool
+ * @date 2023/09/22 13:39:21
+ */
+public enum EM_RULE_TYPE_ACCURATE {
+	/**
+	 * 未知
+	 */
+	EM_RULE_TYPE_ACCURATE_UNKNOWN(0, "未知"),
+	/**
+	 * 客流ReID
+	 */
+	EM_RULE_TYPE_ACCURATE_NUMBERSTAT(1, "客流ReID"),
+	/**
+	 * 目标去重
+	 */
+	EM_RULE_TYPE_ACCURATE_TARGETRECOGNITION(2, "目标去重"),
+	/**
+	 * 客流聚档
+	 */
+	EM_RULE_TYPE_ACCURATE_NUMBERSTATCLUSTER(3, "客流聚档");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_RULE_TYPE_ACCURATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_RULE_TYPE_ACCURATE enumType : EM_RULE_TYPE_ACCURATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_RULE_TYPE_ACCURATE enumType : EM_RULE_TYPE_ACCURATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_RULE_TYPE_ACCURATE getEnum(int value) {
+		for (EM_RULE_TYPE_ACCURATE e : EM_RULE_TYPE_ACCURATE.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_RULE_TYPE_ACCURATE.EM_RULE_TYPE_ACCURATE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java
new file mode 100644
index 0000000..8557e8d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SAVE_COLLECTION_TYPE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  预案类型 
+* @origin autoTool
+* @date 2023/03/06 15:54:24
+*/
+public enum EM_SAVE_COLLECTION_TYPE {
+/**
+未知
+*/
+EM_SAVE_COLLECTION_UNKNOWN(0,"未知"),
+/**
+视频预案
+*/
+EM_SAVE_COLLECTION_VIDEO(1,"视频预案"),
+/**
+附加预案
+*/
+EM_SAVE_COLLECTION_ADDITIONAL(2,"附加预案");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_SAVE_COLLECTION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_SAVE_COLLECTION_TYPE enumType : EM_SAVE_COLLECTION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_SAVE_COLLECTION_TYPE enumType : EM_SAVE_COLLECTION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_SAVE_COLLECTION_TYPE getEnum(int value) {
+        for (EM_SAVE_COLLECTION_TYPE e : EM_SAVE_COLLECTION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SAVE_COLLECTION_TYPE.EM_SAVE_COLLECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCENE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCENE_TYPE.java
new file mode 100644
index 0000000..69a2c29
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCENE_TYPE.java
@@ -0,0 +1,191 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 应用场景, 内容与EM_SCENE_CLASS_TYPE一致
+ * @date 2021/01/16
+ */
+public enum EM_SCENE_TYPE {
+
+	// 未知
+	EM_SCENE_UNKNOW(0, "未知"),
+	// 普通场景
+	EM_SCENE_NORMAL(1, "Normal"),
+	// 交通场景
+	EM_SCENE_TRAFFIC(2, "Traffic"),
+	// 交通巡视
+	EM_SCENE_TRAFFIC_PATROL(3, "TrafficPatrol"),
+	// 目标检测/目标识别
+	EM_SCENE_FACEDETECTION(4, "FaceDetection"),
+	// ATM
+	EM_SCENE_ATM(5, "ATM"),
+	// 室内行为分析,和普通规则相同,对室内场景的算法优化版
+	EM_SCENE_INDOOR(6, "Indoor"),
+	// 目标识别
+	EM_SCENE_FACERECOGNITION(7, "FaceRecognition"),
+	// 
+	EM_SCENE_PS(8, ""),
+	// 客流量统计
+	EM_SCENE_NUMBERSTAT(9, "NumberStat"),
+	// 热度图
+	EM_SCENE_HEAT_MAP(10, "HeatMap"),
+	// 视频诊断
+	EM_SCENE_VIDEODIAGNOSIS(11, "VideoDiagnosis"),
+	// 车辆特征检测分析
+	EM_SCENE_VEHICLEANALYSE(12, "VehicleAnalyse"),
+	// 自动录播
+	EM_SCENE_COURSERECORD(13, "CourseRecord"),
+	// 车载场景(车载行业用,不同于智能交通的Traffic)
+	EM_SCENE_VEHICLE(14, "Vehicle"),
+	// 起立检测
+	EM_SCENE_STANDUPDETECTION(15, "StandUpDetection"),
+	// 卡口
+	EM_SCENE_GATE(16, "Gate"),
+	// 多预置点目标检测,配置一条规则但可以在不同预置点下生效
+	EM_SCENE_SDFACEDETECTION(17, "SDFaceDetect"),
+	// 球机热度图计划
+	EM_SCENE_HEAT_MAP_PLAN(18, "HeatMapPlan"),
+	// 球机客流量统计计划
+	EM_SCENE_NUMBERSTAT_PLAN(19, "NumberStatPlan"),
+	// 金融目标检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
+	EM_SCENE_ATMFD(20, "ATMFD"),
+	// 高速交通事件检测
+	EM_SCENE_HIGHWAY(21, "Highway"),
+	// 城市交通事件检测
+	EM_SCENE_CITY(22, "City"),
+	// 民用简易跟踪
+	EM_SCENE_LETRACK(23, "LeTrack"),
+	// 打靶相机
+	EM_SCENE_SCR(24, "SCR"),
+	// 立体视觉(双目)
+	EM_SCENE_STEREO_VISION(25, "StereoVision"),
+	// 人体检测
+	EM_SCENE_HUMANDETECT(26, "HumanDetect"),
+	// 人脸分析(同时支持目标检测、目标识别、人脸属性等综合型业务)
+	EM_SCENE_FACEANALYSIS(27, "FaceAnalysis"),
+	// X光检测
+	EM_SCENE_XRAY_DETECTION(28, "XRayDetection"),
+	// 双目相机客流量统计
+	EM_SCENE_STEREO_NUMBER(29, "StereoNumber"),
+	// 人群分布图
+	EM_SCENE_CROWD_DISTRI_MAP(30, "CrowdDistriMap"),
+	// 目标检测(含人机非等物体)
+	EM_SCENE_OBJECTDETECT(31, "ObjectDetect"),
+	// IVSS目标检测
+	EM_SCENE_FACEATTRIBUTE(32, "FaceAttribute"),
+	// IVSS目标识别
+	EM_SCENE_FACECOMPARE(33, "FaceCompare"),
+	// 立体行为分析(典型场景ATM舱)
+	EM_SCENE_STEREO_BEHAVIOR(34, "StereoBehavior"),
+	// 智慧城管
+	EM_SCENE_INTELLICITYMANAGER(35, "IntelliCityMgr"),
+	// 防护舱(ATM舱内)
+	EM_SCENE_PROTECTIVECABIN(36, "ProtectiveCabin"),
+	// 飞机行为检测
+	EM_SCENE_AIRPLANEDETECT(37, "AirplaneDetect"),
+	// 人群态势(人群分布图服务)
+	EM_SCENE_CROWDPOSTURE(38, "CrowdPosture"),
+	// 打电话检测
+	EM_SCENE_PHONECALLDETECT(39, "PhoneCallDetect"),
+	// 烟雾检测
+	EM_SCENE_SMOKEDETECTION(40, "SmokeDetection"),
+	// 船只检测
+	EM_SCENE_BOATDETECTION(41, "BoatDetection"),
+	// 吸烟检测
+	EM_SCENE_SMOKINGDETECT(42, "SmokingDetect"),
+	// 水利监测
+	EM_SCENE_WATERMONITOR(43, "WaterMonitor"),
+	// 生成图规则
+	EM_SCENE_GENERATEGRAPHDETECTION(44, "GenerateGraphDetection"),
+	// 交通停车
+	EM_SCENE_TRAFFIC_PARK(45, "TrafficPark"),
+	// 作业检测
+	EM_SCENE_OPERATEMONITOR(46, "OperateMonitor"),
+	// 智慧零售大类
+	EM_SCENE_INTELLI_RETAIL(47, "IntelliRetail"),
+	// 教育智慧课堂
+	EM_SCENE_CLASSROOM_ANALYSE(48, "ClassroomAnalyse"),
+	// 特征向量提取大类
+	EM_SCENE_FEATURE_ABSTRACT(49, "FeatureAbstract"),
+	// 人体检测
+	EM_SCENE_FACEBODY_DETECT(50, "FaceBodyDetect"),
+	// 人体识别
+	EM_SCENE_FACEBODY_ANALYSE(51, "FaceBodyAnalyse"),
+	// 车辆密度
+	EM_SCENE_VEHICLES_DISTRI(52, "VehiclesDistri"),
+	// 智慧养殖检测
+	EM_SCENE_INTELLI_BREED(53, "IntelliBreed"),
+	// 
+	EM_SCENE_INTELLI_PS(54, ""),
+	// 电力检测
+	EM_SCENE_ELECTRIC_DETECT(55, "ElectricDetect"),
+	// 雷检检测
+	EM_SCENE_RADAR_DETECT(56, "RadarDetect"),
+	// 车位检测大类
+	EM_SCENE_PARKINGSPACE(57, "ParkingSpace"),
+	// 智慧金融
+	EM_SCENE_INTELLI_FINANCE(58, "IntelliFinance"),
+	// CrowdAbnormal
+	EM_SCENE_CROWD_ABNORMAL(59, "CrowdAbnormal"),
+	// 超温检测
+	EM_SCENE_ANATOMYTEMP_DETECT(60, "AnatomyTempDetect"),
+	// 天气监控
+	EM_SCENE_WEATHER_MONITOR(61, "WeatherMonitor"),
+	// 电梯门禁
+	EM_SCENE_ELEVATOR_ACCESS_CONTROL(62, "ElevatorAccessControl"),
+	// 违章建筑
+	EM_SCENE_BREAK_RULE_BUILDING(63, "BreakRuleBuilding"),
+	// 全景交通
+	EM_SCENE_PANORAMA_TRAFFIC(64, "PanoramaTraffic"),
+	// 人像检测
+	EM_SCENE_PORTRAIT_DETECT(65, "PortraitDetect"),
+	// 传送带阻塞
+	EM_SCENE_CONVEY_OR_BLOCK(66, "ConveyorBlock"),
+	// 厨房有害动物检测
+	EM_SCENE_KITCHEN_ANIMAL(67, "KitchenAnimal"),
+	// 万物检测
+	EM_SCENE_ALLSEEINGEYE(68, "AllSeeingEye"),
+	// 驾驶行为分析
+	EM_SCENE_DRIVE(69, "Drive"),
+	// 高级驾驶辅助系统
+	EM_SCENE_DRIVEASSISTANT(70, "DriveAssistant"),
+	// 车内驾驶舱监测
+	EM_SCENE_INCABINMONITOR(71, "InCabinMonitor"),
+	// 盲区检测
+	EM_SCENE_BLINDSPOTDETECTION(72, "BlindSpotDetection");
+
+	private int value;
+	private String note;
+
+	private EM_SCENE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SCENE_TYPE enumType : EM_SCENE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SCENE_TYPE enumType : EM_SCENE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java
new file mode 100644
index 0000000..87aa291
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_COLOR.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 屏幕文本颜色
+ * @date 2022/11/28 16:20:21
+ */
+public enum EM_SCREEN_TEXT_COLOR {
+	/**
+	 * 未知
+	 */
+	EM_SCREEN_TEXT_COLOR_UNKNOWN(-1, "未知"),
+	/**
+	 * 绿色
+	 */
+	EM_SCREEN_TEXT_COLOR_GREEN(0, "绿色"),
+	/**
+	 * 红色
+	 */
+	EM_SCREEN_TEXT_COLOR_RED(1, "红色"),
+	/**
+	 * 黄色
+	 */
+	EM_SCREEN_TEXT_COLOR_YELLOW(2, "黄色"),
+	/**
+	 * 白色
+	 */
+	EM_SCREEN_TEXT_COLOR_WHITE(3, "白色");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SCREEN_TEXT_COLOR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SCREEN_TEXT_COLOR enumType : EM_SCREEN_TEXT_COLOR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SCREEN_TEXT_COLOR enumType : EM_SCREEN_TEXT_COLOR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java
new file mode 100644
index 0000000..d1bddd6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_ROLL_MODE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 屏幕文本滚动模式
+ * @date 2022/11/28 16:20:32
+ */
+public enum EM_SCREEN_TEXT_ROLL_MODE {
+	/**
+	 * 未知
+	 */
+	EM_SCREEN_TEXT_ROLL_MODE_UNKNOWN(-1, "未知"),
+	/**
+	 * 不滚动
+	 */
+	EM_SCREEN_TEXT_ROLL_MODE_NO(0, "不滚动"),
+	/**
+	 * 左右滚动
+	 */
+	EM_SCREEN_TEXT_ROLL_MODE_LEFT_RIGHT(1, "左右滚动"),
+	/**
+	 * 上下翻页滚动
+	 */
+	EM_SCREEN_TEXT_ROLL_MODE_UP_DOWN(2, "上下翻页滚动"),
+	/**
+	 * 截取(超出部分直接截断显示)
+	 */
+	EM_SCREEN_TEXT_ROLL_MODE_CUT_OUT(3, "截取(超出部分直接截断显示)");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SCREEN_TEXT_ROLL_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SCREEN_TEXT_ROLL_MODE enumType : EM_SCREEN_TEXT_ROLL_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SCREEN_TEXT_ROLL_MODE enumType : EM_SCREEN_TEXT_ROLL_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java
new file mode 100644
index 0000000..e231d82
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SCREEN_TEXT_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 屏幕文本类型
+ * @date 2022/11/28 16:20:10
+ */
+public enum EM_SCREEN_TEXT_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_SCREEN_TEXT_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 普通
+	 */
+	EM_SCREEN_TEXT_TYPE_ORDINARY(0, "普通"),
+	/**
+	 * 本地时间
+	 */
+	EM_SCREEN_TEXT_TYPE_LOCAL_TIME(1, "本地时间"),
+	/**
+	 * 二维码
+	 */
+	EM_SCREEN_TEXT_TYPE_QR_CODE(2, "二维码"),
+	/**
+	 * 资源文件
+	 */
+	EM_SCREEN_TEXT_TYPE_RESOURCE(3, "资源文件");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SCREEN_TEXT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SCREEN_TEXT_TYPE enumType : EM_SCREEN_TEXT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SCREEN_TEXT_TYPE enumType : EM_SCREEN_TEXT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java
new file mode 100644
index 0000000..02087ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SDK_LOG_QUERY_TYPE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 日志查询类型
+ *
+ * @author 47081
+ */
+public enum EM_SDK_LOG_QUERY_TYPE {
+    /**
+     * 所有日志
+     */
+    DHLOG_ALL,
+    /**
+     * 系统日志
+     */
+    DHLOG_SYSTEM,
+    /**
+     * 配置日志
+     */
+    DHLOG_CONFIG,
+    /**
+     * 存储相关
+     */
+    DHLOG_STORAGE,
+    /**
+     * 报警日志
+     */
+    DHLOG_ALARM,
+    /**
+     * 录象相关
+     */
+    DHLOG_RECORD,
+    /**
+     * 帐号相关
+     */
+    DHLOG_ACCOUNT,
+    /**
+     * 清除日志
+     */
+    DHLOG_CLEAR,
+    /**
+     * 回放相关
+     */
+    DHLOG_PLAYBACK,
+    /**
+     * 前端管理运行相关
+     */
+    DHLOG_MANAGER
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java
new file mode 100644
index 0000000..c53b4f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_ENCRYPT_FLAG.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description SD卡加密功能标识
+ * @date 2021/01/21
+ */
+public enum EM_SD_ENCRYPT_FLAG {
+	// 未知
+	EM_SD_ENCRYPT_UNKNOWN(-1, "未知"),
+
+	// 设备不支持SD卡加密功能
+	EM_SD_ENCRYPT_UNSUPPORT(0, "设备不支持SD卡加密功能"),
+
+	// 支持SD卡加密功能且获取数据成功
+	EM_SD_ENCRYPT_SUPPORT_AND_GETDATA_SUCCESS(1, "支持SD卡加密功能且获取数据成功"),
+
+	// 支持SD卡加密功能但获取数据失败
+	EM_SD_ENCRYPT_SUPPORT_AND_GETDATA_FAIL(2, "支持SD卡加密功能但获取数据失败");
+
+	private int value;
+	private String note;
+
+	private EM_SD_ENCRYPT_FLAG(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SD_ENCRYPT_FLAG enumType : EM_SD_ENCRYPT_FLAG.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SD_ENCRYPT_FLAG enumType : EM_SD_ENCRYPT_FLAG.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_LOCK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_LOCK_STATE.java
new file mode 100644
index 0000000..101ce7d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SD_LOCK_STATE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description SD卡加锁状态
+ * @date 2021/01/21
+ */
+public enum EM_SD_LOCK_STATE {
+
+	// 未知
+	EM_SD_LOCK_STATE_UNKNOWN(-1, "未知"),
+
+	// 未进行过加锁的状态, 如出厂状态,或清除密码时状态
+	EM_SD_LOCK_STATE_NORMAL(0, "未进行过加锁的状态"),
+
+	// 加锁
+	EM_SD_LOCK_STATE_LOCKED(1, "加锁"),
+
+	// 未加锁(加锁后解锁)
+	EM_SD_LOCK_STATE_UNLOCKED(2, "未加锁");
+
+	private int value;
+	private String note;
+
+	private EM_SD_LOCK_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SD_LOCK_STATE enumType : EM_SD_LOCK_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SD_LOCK_STATE enumType : EM_SD_LOCK_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java
new file mode 100644
index 0000000..eea0bdf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_LEVEL.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:22
+ * 安全门人员报警级别
+ */
+public enum  EM_SECURITYGATE_ALARM_LEVEL {
+    EM_SECURITYGATE_ALARM_LEVEL_UNKNOWN(0,"未知"),			    // 未知
+    EM_SECURITYGATE_ALARM_LEVEL_NON(1,"无报警"),					// 无报警
+    EM_SECURITYGATE_ALARM_LEVEL_LOW(2,"低危报警级别"),					// 低危报警级别
+    EM_SECURITYGATE_ALARM_LEVEL_MIDDLE(3,"中危报警级别"),					// 中危报警级别
+    EM_SECURITYGATE_ALARM_LEVEL_HIGH(4,"高危报警级别");					// 高危报警级别
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_ALARM_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_ALARM_LEVEL enumType : EM_SECURITYGATE_ALARM_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_ALARM_LEVEL enumType : EM_SECURITYGATE_ALARM_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_ALARM_LEVEL getEnum(int value) {
+        for (EM_SECURITYGATE_ALARM_LEVEL e : EM_SECURITYGATE_ALARM_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_ALARM_LEVEL.EM_SECURITYGATE_ALARM_LEVEL_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java
new file mode 100644
index 0000000..6bf644b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_ALARM_POSITION.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:28
+ *  报警位置
+ */
+public enum EM_SECURITYGATE_ALARM_POSITION {
+    EM_SECURITYGATE_ALARM_POSITION_UNKNWON(-1,"未知"),        // 未知
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_1(0,"左1"),                   // 左1
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_2(1,"左2"),                   // 左2
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_3(2,"左3"),                   // 左3
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_4(3,"左4"),                   // 左4
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_5(4,"左5"),                   // 左5
+    EM_SECURITYGATE_ALARM_POSITION_LEFT_6(5,"左6"),                   // 左6
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_1(6,"中1"),                 // 中1
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_2(7,"中2"),                 // 中2
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_3(8,"中3"),                 // 中3
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_4(9,"中4"),                 // 中4
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_5(10,"中5"),                 // 中5
+    EM_SECURITYGATE_ALARM_POSITION_MIDDLE_6(11,"中6"),                 // 中6
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_1(12,"右1"),                  // 右1
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_2(13,"右2"),                  // 右2
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_3(14,"右3"),                  // 右3
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_4(15,"右4"),                  // 右4
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_5(16,"右5"),                  // 右5
+    EM_SECURITYGATE_ALARM_POSITION_RIGHT_6(17,"右6");                  // 右6
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_ALARM_POSITION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_ALARM_POSITION enumType : EM_SECURITYGATE_ALARM_POSITION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_ALARM_POSITION enumType : EM_SECURITYGATE_ALARM_POSITION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_ALARM_POSITION getEnum(int value) {
+        for (EM_SECURITYGATE_ALARM_POSITION e : EM_SECURITYGATE_ALARM_POSITION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_ALARM_POSITION.EM_SECURITYGATE_ALARM_POSITION_UNKNWON;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java
new file mode 100644
index 0000000..3a97eda
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_EXPRESSION_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 11:01
+ *  人脸表情
+ */
+
+public enum  EM_SECURITYGATE_EXPRESSION_TYPE {
+    EM_SECURITYGATE_EXPRESSION_UNKNOWN(-1,"未知"),				// 未知
+    EM_SECURITYGATE_EXPRESSION_UNDEFINE(0,"未识别"),					// 未识别
+    EM_SECURITYGATE_EXPRESSION_ANGER(1,"生气"),						// 生气
+    EM_SECURITYGATE_EXPRESSION_SAD(2,"悲伤"),							// 悲伤
+    EM_SECURITYGATE_EXPRESSION_DISGUST(3,"厌恶"),						// 厌恶
+    EM_SECURITYGATE_EXPRESSION_FEAR(4,"恐惧"),						// 恐惧
+    EM_SECURITYGATE_EXPRESSION_SURPRISED(5,"诧异"),					// 诧异
+    EM_SECURITYGATE_EXPRESSION_CALM(6,"平静"),						// 平静
+    EM_SECURITYGATE_EXPRESSION_SMILE(7,"微笑"),						// 微笑
+    EM_SECURITYGATE_EXPRESSION_LAUGH(8,"大笑"),						// 大笑
+    EM_SECURITYGATE_EXPRESSION_HAPPY(9,"高兴"),						// 高兴
+    EM_SECURITYGATE_EXPRESSION_CONFUSE(10,"困惑"),						// 困惑
+    EM_SECURITYGATE_EXPRESSION_SCREAM(11,"尖叫");						// 尖叫
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_EXPRESSION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_EXPRESSION_TYPE enumType : EM_SECURITYGATE_EXPRESSION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_EXPRESSION_TYPE enumType : EM_SECURITYGATE_EXPRESSION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_EXPRESSION_TYPE getEnum(int value) {
+        for (EM_SECURITYGATE_EXPRESSION_TYPE e : EM_SECURITYGATE_EXPRESSION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_EXPRESSION_TYPE.EM_SECURITYGATE_EXPRESSION_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java
new file mode 100644
index 0000000..848440c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_GLASSES_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 11:11
+ * 安检门事件人员是否戴眼镜
+ */
+public enum EM_SECURITYGATE_GLASSES_TYPE {
+
+    EM_SECURITYGATE_GLASSES_UNKNOWN(-1,"未知"),					// 未知
+    EM_SECURITYGATE_GLASSES_UNDEFINE(0,"未识别"),						// 未识别
+    EM_SECURITYGATE_WITHOUT_GLASSES(1,"未戴眼镜"),						// 未戴眼镜
+    EM_SECURITYGATE_WITH_GLASSES(2,"戴眼镜");							// 戴眼镜
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_GLASSES_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_GLASSES_TYPE enumType : EM_SECURITYGATE_GLASSES_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_GLASSES_TYPE enumType : EM_SECURITYGATE_GLASSES_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_GLASSES_TYPE getEnum(int value) {
+        for (EM_SECURITYGATE_GLASSES_TYPE e : EM_SECURITYGATE_GLASSES_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_GLASSES_TYPE.EM_SECURITYGATE_GLASSES_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java
new file mode 100644
index 0000000..182f08e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_PERSON_PASS_DIRECTION.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:19
+ * 人员通过方向枚举
+ */
+public enum  EM_SECURITYGATE_PERSON_PASS_DIRECTION {
+    // 未知
+    EM_SECURITYGATE_PERSON_PASS_DIRECTION_UNKNOWN (0,"未知"),
+    EM_SECURITYGATE_PERSON_PASS_DIRECTION_IN(1,"进入"),			// 进入
+    EM_SECURITYGATE_PERSON_PASS_DIRECTION_OUT(2,"离开");	// 离开
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_PERSON_PASS_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_PERSON_PASS_DIRECTION enumType : EM_SECURITYGATE_PERSON_PASS_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_PERSON_PASS_DIRECTION enumType : EM_SECURITYGATE_PERSON_PASS_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_PERSON_PASS_DIRECTION getEnum(int value) {
+        for (EM_SECURITYGATE_PERSON_PASS_DIRECTION e : EM_SECURITYGATE_PERSON_PASS_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_PERSON_PASS_DIRECTION.EM_SECURITYGATE_PERSON_PASS_DIRECTION_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java
new file mode 100644
index 0000000..3db6e6e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SECURITYGATE_SEX_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:51
+ *  安检门事件人员性别
+ */
+public enum EM_SECURITYGATE_SEX_TYPE {
+    EM_SECURITYGATE_SEX_MAN(0,"男"),								// 男
+    EM_SECURITYGATE_SEX_WOMEN(1,"女"),									// 女
+    EM_SECURITYGATE_SEX_UNKNOWN(2,"未知");								// 未知
+
+    private final int value;
+    private final String note;
+
+    EM_SECURITYGATE_SEX_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SECURITYGATE_SEX_TYPE enumType : EM_SECURITYGATE_SEX_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SECURITYGATE_SEX_TYPE enumType : EM_SECURITYGATE_SEX_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SECURITYGATE_SEX_TYPE getEnum(int value) {
+        for (EM_SECURITYGATE_SEX_TYPE e : EM_SECURITYGATE_SEX_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SECURITYGATE_SEX_TYPE.EM_SECURITYGATE_SEX_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java
new file mode 100644
index 0000000..3aa0e97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEND_SEARCH_TYPE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_SEND_SEARCH_TYPE {
+    /**
+     * 组播和广播搜索
+     */
+    EM_SEND_SEARCH_TYPE_MULTICAST_AND_BROADCAST,
+
+    /**
+     * 组播搜索
+     */
+    EM_SEND_SEARCH_TYPE_MULTICAST,
+
+    /**
+     * 广播搜索
+     */
+    EM_SEND_SEARCH_TYPE_BROADCAST,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SENSE_METHOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SENSE_METHOD.java
new file mode 100644
index 0000000..ce55ca3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SENSE_METHOD.java
@@ -0,0 +1,240 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 传感器感应方式枚举类型
+ * @date 2023/04/18 10:57:31
+ */
+public enum EM_SENSE_METHOD {
+	/**
+	 * 未知类型
+	 */
+	EM_SENSE_UNKNOWN(-1, "未知类型"),
+	/**
+	 * 门磁
+	 */
+	EM_SENSE_DOOR(0, "门磁"),
+	/**
+	 * 被动红外
+	 */
+	EM_SENSE_PASSIVEINFRA(1, "被动红外"),
+	/**
+	 * 气感
+	 */
+	EM_SENSE_GAS(2, "气感"),
+	/**
+	 * 烟感
+	 */
+	EM_SENSE_SMOKING(3, "烟感"),
+	/**
+	 * 水感
+	 */
+	EM_SENSE_WATER(4, "水感"),
+	/**
+	 * 主动红外
+	 */
+	EM_SENSE_ACTIVEFRA(5, "主动红外"),
+	/**
+	 * 玻璃破碎
+	 */
+	EM_SENSE_GLASS(6, "玻璃破碎"),
+	/**
+	 * 紧急开关
+	 */
+	EM_SENSE_EMERGENCYSWITCH(7, "紧急开关"),
+	/**
+	 * 震动
+	 */
+	EM_SENSE_SHOCK(8, "震动"),
+	/**
+	 * 双鉴(红外+微波)
+	 */
+	EM_SENSE_DOUBLEMETHOD(9, "双鉴(红外+微波)"),
+	/**
+	 * 三技术
+	 */
+	EM_SENSE_THREEMETHOD(10, "三技术"),
+	/**
+	 * 温度
+	 */
+	EM_SENSE_TEMP(11, "温度"),
+	/**
+	 * 湿度
+	 */
+	EM_SENSE_HUMIDITY(12, "湿度"),
+	/**
+	 * 风速
+	 */
+	EM_SENSE_WIND(13, "风速"),
+	/**
+	 * 呼叫按钮
+	 */
+	EM_SENSE_CALLBUTTON(14, "呼叫按钮"),
+	/**
+	 * 气体压力
+	 */
+	EM_SENSE_GASPRESSURE(15, "气体压力"),
+	/**
+	 * 燃气浓度
+	 */
+	EM_SENSE_GASCONCENTRATION(16, "燃气浓度"),
+	/**
+	 * 气体流量
+	 */
+	EM_SENSE_GASFLOW(17, "气体流量"),
+	/**
+	 * 油量检测
+	 */
+	EM_SENSE_OIL(18, "油量检测"),
+	/**
+	 * 里程数检测
+	 */
+	EM_SENSE_MILEAGE(19, "里程数检测"),
+	/**
+	 * 其他
+	 */
+	EM_SENSE_OTHER(20, "其他"),
+	/**
+	 * 二氧化碳浓度检测
+	 */
+	EM_SEHSE_CO2(21, "二氧化碳浓度检测"),
+	/**
+	 * 噪音检测
+	 */
+	EM_SEHSE_SOUND(22, "噪音检测"),
+	/**
+	 * PM2.5检测
+	 */
+	EM_SEHSE_PM25(23, "PM2.5检测"),
+	/**
+	 * 六氟化硫浓度检测
+	 */
+	EM_SEHSE_SF6(24, "六氟化硫浓度检测"),
+	/**
+	 * 臭氧
+	 */
+	EM_SEHSE_O3(25, "臭氧"),
+	/**
+	 * 环境光照检测
+	 */
+	EM_SEHSE_AMBIENTLIGHT(26, "环境光照检测"),
+	/**
+	 * 红外报警
+	 */
+	EM_SEHSE_INFRARED(27, "红外报警"),
+	/**
+	 * 1500温度传感器
+	 */
+	EM_SEHSE_TEMP1500(28, "1500温度传感器"),
+	/**
+	 * DS18B20温度传感器
+	 */
+	EM_SEHSE_TEMPDS18B20(29, "DS18B20温度传感器"),
+	/**
+	 * 1500湿度传感器
+	 */
+	EM_SEHSE_HUMIDITY1500(30, "1500湿度传感器"),
+	/**
+	 * 紧急按钮
+	 */
+	EM_SEHSE_URGENCYBUTTON(31, "紧急按钮"),
+	/**
+	 * 盗窃
+	 */
+	EM_SEHSE_STEAL(32, "盗窃"),
+	/**
+	 * 周界
+	 */
+	EM_SEHSE_PERIMETER(33, "周界"),
+	/**
+	 * 防拆
+	 */
+	EM_SEHSE_PREVENTREMOVE(34, "防拆"),
+	/**
+	 * 门铃
+	 */
+	EM_SEHSE_DOORBELL(35, "门铃"),
+	/**
+	 * 交流电压传感器
+	 */
+	EM_SEHSE_ALTERVOLT(36, "交流电压传感器"),
+	/**
+	 * 直流电压传感器
+	 */
+	EM_SEHSE_DIRECTVOLT(37, "直流电压传感器"),
+	/**
+	 * 交流电流传感器
+	 */
+	EM_SEHSE_ALTERCUR(38, "交流电流传感器"),
+	/**
+	 * 直流电流传感器
+	 */
+	EM_SEHSE_DIRECTCUR(39, "直流电流传感器"),
+	/**
+	 * 通用模拟量
+	 */
+	EM_SEHSE_RSUGENERAL(40, "通用模拟量"),
+	/**
+	 * 门禁感应
+	 */
+	EM_SEHSE_RSUDOOR(41, "门禁感应"),
+	/**
+	 * 断电感应
+	 */
+	EM_SEHSE_RSUPOWEROFF(42, "断电感应"),
+	/**
+	 * 幕帘传感器
+	 */
+	EM_SEHSE_CURTAINSENSOR(43, "幕帘传感器"),
+	/**
+	 * 移动传感器
+	 */
+	EM_SEHSE_MOBILESENSOR(44, "移动传感器"),
+	/**
+	 * 火警
+	 */
+	EM_SEHSE_FIREALARM(45, "火警"),
+	/**
+	 * 锁舌
+	 */
+	EM_SEHSE_LOCKTONGUE(46, "锁舌"),
+	/**
+	 * 枚举类型总数,注意:这个值不能作为常量使用
+	 */
+	EM_SENSE_NU(47, "枚举类型总数,注意:这个值不能作为常量使用");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SENSE_METHOD(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SENSE_METHOD enumType : EM_SENSE_METHOD.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SENSE_METHOD enumType : EM_SENSE_METHOD.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SERVER_OPTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SERVER_OPTION.java
new file mode 100644
index 0000000..b7daa94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SERVER_OPTION.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 单个平台接入启动选项
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 8:42
+ */
+public enum EM_SERVER_OPTION {
+    /**
+     * 未知
+     */
+    EM_SERVER_OPTION_UNKNOWN(0, "未知"),
+    /**
+     * 平台接入不启动
+     */
+    EM_SERVER_OPTION_DISABLE(1, "平台接入不启动"),
+    /**
+     * 以28181接入方式开启
+     */
+    EM_SERVER_OPTION_GB28181(2, "以28181接入方式开启"),
+    /**
+     * 以35114接入方式开启
+     */
+    EM_SERVER_OPTION_GB35114(3, "以35114接入方式开启");
+
+    /**
+     * 枚举值
+     */
+    private final int value;
+    /**
+     * 枚举描述
+     */
+    private final String note;
+
+    EM_SERVER_OPTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * 依据枚举值返回描述
+     *
+     * @param givenValue 枚举值
+     * @return 对应描述
+     */
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SERVER_OPTION enumType : EM_SERVER_OPTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 依据描述返回枚举值
+     *
+     * @param givenNote 枚举描述
+     * @return 对应枚举值
+     */
+    public static int getValueByNote(String givenNote) {
+        for (EM_SERVER_OPTION enumType : EM_SERVER_OPTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * 依据枚举值返回枚举类型
+     *
+     * @param value 枚举值
+     * @return 对应枚举类型
+     */
+    public static EM_SERVER_OPTION getEnum(int value) {
+        for (EM_SERVER_OPTION e : EM_SERVER_OPTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SERVER_OPTION.EM_SERVER_OPTION_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEX_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEX_TYPE.java
new file mode 100644
index 0000000..e3c1d59
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SEX_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 性别
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_SEX_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 未知
+     */
+    public static final int					EM_SEX_TYPE_UNKNOWN = 0;
+    /**
+     * 男性
+     */
+    public static final int					EM_SEX_TYPE_MALE = 1;
+    /**
+     * 女性
+     */
+    public static final int					EM_SEX_TYPE_FEMALE = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHAPE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHAPE_TYPE.java
new file mode 100644
index 0000000..8f7d28a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHAPE_TYPE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 形状类型
+ * @date 2022/07/21 15:30:00
+ */
+public enum EM_SHAPE_TYPE {
+	/**
+	 * 无效的类型
+	 */
+	EM_SHAPE_TYPE_INVALID(0, "无效的类型"),
+	/**
+	 * 矩形
+	 */
+	EM_SHAPE_TYPE_RECT(1, "矩形"),
+	/**
+	 * 多边形
+	 */
+	EM_SHAPE_TYPE_POLYGON(2, "多边形");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SHAPE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SHAPE_TYPE enumType : EM_SHAPE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SHAPE_TYPE enumType : EM_SHAPE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_SHAPE_TYPE getEnum(int value) {
+		for (EM_SHAPE_TYPE e : EM_SHAPE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_SHAPE_TYPE.EM_SHAPE_TYPE_INVALID;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOES_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOES_TYPE.java
new file mode 100644
index 0000000..cbf576d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOES_TYPE.java
@@ -0,0 +1,9 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_SHOES_TYPE {
+    EM_SHOES_UNKNOWN,								// 未知
+    EM_SHOES_LEATHER,								// 皮鞋
+    EM_SHOES_BOOTS,									// 靴子
+    EM_SHOES_CASUAL,								// 休闲鞋
+    EM_SHOES_SANDALS,								// 凉鞋
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOW_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOW_COLOR.java
new file mode 100644
index 0000000..a5ee295
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SHOW_COLOR.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 设备需要展示的颜色
+ */
+public enum EM_SHOW_COLOR {
+	/**
+	 * 未知
+	 */
+	EM_SHOW_COLOR_UNKNOWN(0, "未知"),
+	/**
+	 * 蓝
+	 */
+	EM_SHOW_COLOR_BLUE(1, "蓝"),
+	/**
+	 * 黄
+	 */
+	EM_SHOW_COLOR_YELLOW(2, "黄"),
+	/**
+	 * 橙
+	 */
+	EM_SHOW_COLOR_ORANGE(3, "橙"),
+	/**
+	 * 红
+	 */
+	EM_SHOW_COLOR_RED(4, "红");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SHOW_COLOR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SHOW_COLOR enumType : EM_SHOW_COLOR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SHOW_COLOR enumType : EM_SHOW_COLOR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_SHOW_COLOR getEnum(int value) {
+		for (EM_SHOW_COLOR e : EM_SHOW_COLOR.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_SHOW_COLOR.EM_SHOW_COLOR_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java
new file mode 100644
index 0000000..7743b99
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SIGNLIGHT_TYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 灯光类型
+ * @date 2020/11/19
+ */
+public enum EM_SIGNLIGHT_TYPE {
+	// 未知
+	EM_SIGNLIGHT_TYPE_UNKNOWN(0, "未知"),
+
+	// 自动,按照sensor自动切换
+	EM_SIGNLIGHT_TYPE_AUTO(1, "自动,按照sensor自动切换"),
+
+	// 定时模式
+	EM_SIGNLIGHT_TYPE_TIMING(2, "定时模式"),
+
+	// 常灭
+	EM_SIGNLIGHT_TYPE_OFF(3, "常灭"),
+
+	// 常亮模式
+	EM_SIGNLIGHT_TYPE_ON(4, "常亮模式");
+
+	private int value;
+	private String note;
+
+	private EM_SIGNLIGHT_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SIGNLIGHT_TYPE enumType : EM_SIGNLIGHT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SIGNLIGHT_TYPE enumType : EM_SIGNLIGHT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMALL_OCCUPY_LARGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMALL_OCCUPY_LARGE.java
new file mode 100644
index 0000000..38c2e79
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMALL_OCCUPY_LARGE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 是否小车占大车位
+ * @origin autoTool
+ * @date 2023/06/20 10:13:15
+ */
+public enum EM_SMALL_OCCUPY_LARGE {
+	/**
+     * 未知
+     */
+	EM_SMALL_OCCUPY_LARGE_UNKNOWN(0,"未知"),
+	/**
+     * 未小车占大车位
+     */
+	EM_SMALL_OCCUPY_LARGE_NO(1,"未小车占大车位"),
+	/**
+     * 小车占大车位
+     */
+	EM_SMALL_OCCUPY_LARGE_YES(2,"小车占大车位");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SMALL_OCCUPY_LARGE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SMALL_OCCUPY_LARGE enumType : EM_SMALL_OCCUPY_LARGE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SMALL_OCCUPY_LARGE enumType : EM_SMALL_OCCUPY_LARGE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_SMALL_OCCUPY_LARGE getEnum(int value) {
+		for (EM_SMALL_OCCUPY_LARGE e : EM_SMALL_OCCUPY_LARGE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_SMALL_OCCUPY_LARGE.EM_SMALL_OCCUPY_LARGE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java
new file mode 100644
index 0000000..db599c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMARTHOME_SCENE_MODE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能家居情景模式
+ * @date 2023/03/15 20:39:47
+ */
+public enum EM_SMARTHOME_SCENE_MODE {
+	/**
+	 * 未知
+	 */
+	EM_SMARTHOME_SCENE_MODE_UNKNOWN(0, "未知"),
+	/**
+	 * 在家
+	 */
+	EM_SMARTHOME_SCENE_MODE_AT_HOME(1, "在家"),
+	/**
+	 * 离开
+	 */
+	EM_SMARTHOME_SCENE_MODE_LEAVE_HOME(2, "离开"),
+	/**
+	 * 睡眠
+	 */
+	EM_SMARTHOME_SCENE_MODE_IN_SLEEPING(3, "睡眠");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SMARTHOME_SCENE_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SMARTHOME_SCENE_MODE enumType : EM_SMARTHOME_SCENE_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SMARTHOME_SCENE_MODE enumType : EM_SMARTHOME_SCENE_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java
new file mode 100644
index 0000000..4a3caeb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_COLOUR.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 厨师服颜色
+ * @date 2021/7/26 15:24
+ */
+public enum  EM_SMART_KITCHEN_CLOTHES_COLOUR {
+
+        	EM_SMART_KITCHEN_CLOTHES_COLOUR_UNKNOWN(0,"未知"),                    // 未知
+            EM_SMART_KITCHEN_CLOTHES_COLOUR_RED(1,"红"),                     	// 红
+            EM_SMART_KITCHEN_CLOTHES_COLOUR_BLACK(2,"黑"),                      // 黑
+            EM_SMART_KITCHEN_CLOTHES_COLOUR_WHITE(3,"白");						// 白
+
+    private final int value;
+    private final String note;
+
+    EM_SMART_KITCHEN_CLOTHES_COLOUR(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SMART_KITCHEN_CLOTHES_COLOUR enumType : EM_SMART_KITCHEN_CLOTHES_COLOUR.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SMART_KITCHEN_CLOTHES_COLOUR enumType : EM_SMART_KITCHEN_CLOTHES_COLOUR.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SMART_KITCHEN_CLOTHES_COLOUR getEnum(int value) {
+        for (EM_SMART_KITCHEN_CLOTHES_COLOUR e : EM_SMART_KITCHEN_CLOTHES_COLOUR.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SMART_KITCHEN_CLOTHES_COLOUR.EM_SMART_KITCHEN_CLOTHES_COLOUR_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java
new file mode 100644
index 0000000..5315caa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMART_KITCHEN_CLOTHES_STATE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 厨师装备状态
+ * @date 2021/7/26 14:24
+ */
+public enum EM_SMART_KITCHEN_CLOTHES_STATE {
+
+    EM_SMART_KITCHEN_CLOTHES_STATE_UNKNOWN(0,"未知"),                     // 未知
+	EM_SMART_KITCHEN_CLOTHES_STATE_LACK(1,"没有"),                     	// 没有
+    EM_SMART_KITCHEN_CLOTHES_STATE_HAS(2,"有");                         // 有
+    private final int value;
+    private final String note;
+
+    EM_SMART_KITCHEN_CLOTHES_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SMART_KITCHEN_CLOTHES_STATE enumType : EM_SMART_KITCHEN_CLOTHES_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SMART_KITCHEN_CLOTHES_STATE enumType : EM_SMART_KITCHEN_CLOTHES_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SMART_KITCHEN_CLOTHES_STATE getEnum(int value) {
+        for (EM_SMART_KITCHEN_CLOTHES_STATE e : EM_SMART_KITCHEN_CLOTHES_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SMART_KITCHEN_CLOTHES_STATE.EM_SMART_KITCHEN_CLOTHES_STATE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMELLY_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMELLY_LEVEL.java
new file mode 100644
index 0000000..152c433
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMELLY_LEVEL.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  黑臭等级 
+* @date 2022/08/22 16:51:44
+*/
+public enum EM_SMELLY_LEVEL {
+/**
+未知
+*/
+EM_SMELLY_LEVEL_UNKNOWN(0,"未知"),
+/**
+正常
+*/
+EM_SMELLY_LEVEL_NORMAL(1,"正常"),
+/**
+轻度污染
+*/
+EM_SMELLY_LEVEL_LIGHT(2,"轻度污染"),
+/**
+重度污染
+*/
+EM_SMELLY_LEVEL_HEAVY(3,"重度污染");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_SMELLY_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_SMELLY_LEVEL enumType : EM_SMELLY_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_SMELLY_LEVEL enumType : EM_SMELLY_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_SMELLY_LEVEL getEnum(int value) {
+        for (EM_SMELLY_LEVEL e : EM_SMELLY_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SMELLY_LEVEL.EM_SMELLY_LEVEL_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMOKE_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMOKE_COLOR.java
new file mode 100644
index 0000000..ba328eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SMOKE_COLOR.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 烟雾颜色类型
+ * @date 2022/03/31
+ */
+public enum EM_SMOKE_COLOR {
+	// 未知
+	EM_SMOKE_COLOR_UNKNOWN(0, "未知"),
+
+	// White
+	EM_SMOKE_COLOR_WHITE(1, "White"),
+
+	// black
+	EM_SMOKE_COLOR_BLACK(2, "black"),
+
+	// red
+	EM_SMOKE_COLOR_RED(3, "red"),
+
+	// yellow
+	EM_SMOKE_COLOR_YELLOW(4, "yellow");
+
+	private int value;
+	private String note;
+
+	private EM_SMOKE_COLOR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SMOKE_COLOR enumType : EM_SMOKE_COLOR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SMOKE_COLOR enumType : EM_SMOKE_COLOR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAPCATEGORY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAPCATEGORY.java
new file mode 100644
index 0000000..d4173ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAPCATEGORY.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 抓拍的类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_SNAPCATEGORY extends NetSDKLib.SdkStructure {
+
+    /**
+     *  机动车
+     */
+    public static final int					EM_SNAPCATEGORY_MOTOR = 0;
+    /**
+     *  非机动车
+     */
+    public static final int					EM_SNAPCATEGORY_NONMOTOR = 1;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java
new file mode 100644
index 0000000..ef6bfea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SNAP_POLICY_TYPE.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 抓拍策略取值
+ *
+ * @author 47040
+ * @since Created in 2021/4/25 19:52
+ */
+public enum EM_SNAP_POLICY_TYPE {
+
+    EM_SNAP_POLICY_TYPE_UNKNOWN(0, "未知"),
+    EM_SNAP_POLICY_TYPE_REALTIME(1, "实时"),
+    EM_SNAP_POLICY_TYPE_OPTIMAL(2, "优选"),
+    EM_SNAP_POLICY_TYPE_QUALITY(3, "质量"),
+    EM_SNAP_POLICY_TYPE_TRIPLINE(4, "拌线");
+
+    private final int value;
+    private final String note;
+
+    EM_SNAP_POLICY_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SNAP_POLICY_TYPE enumType : EM_SNAP_POLICY_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SNAP_POLICY_TYPE enumType : EM_SNAP_POLICY_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SNAP_POLICY_TYPE getEnum(int value) {
+        for (EM_SNAP_POLICY_TYPE e : EM_SNAP_POLICY_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SNAP_POLICY_TYPE.EM_SNAP_POLICY_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java
new file mode 100644
index 0000000..36b927f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOLARCELL_SYSTEM_FAULT_TYPE.java
@@ -0,0 +1,103 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ * <p>
+ * \else
+ * 太阳能系统故障信息
+ * \endif
+ * @date 2020/8/11
+ */
+public enum EM_SOLARCELL_SYSTEM_FAULT_TYPE {
+
+    /**
+     * 未知
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 电池过放
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_BATTERY_OVER_DISCHARGE(1, "电池过放"),
+    /**
+     * 电池施压
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_BATTERY_OVERPRESSURE(2, "电池施压"),
+    /**
+     * 欠压警告
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_UNDERVOLTAGE_WARNING(3, "欠压警告"),
+    /**
+     * 负载短路
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_LOAD_SHORT_CIRCUIT(4, "负载短路"),
+    /**
+     * 负载功率过大或负载过流
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_EXCESSIVE_LOAD_POWER_OR_LOAD_OVER_CURRENT(5, "负载功率过大或负载过流"),
+    /**
+     * 控制器温度过高
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_CONTROLLER_TEMPERATURE_IS_TOO_HIGH(6, "控制器温度过高"),
+    /**
+     * 外部环境温度过高
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_EXTERNAL_AMBIENT_TEMPERATURE_IS_TOO_HIGH(7, "外部环境温度过高"),
+    /**
+     * 光伏输入功率过大
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_EXCESSIVE_PHOTOVOLTAIC_INPUT_POWER(8, "光伏输入功率过大"),
+    /**
+     * 光伏输入短路
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_PHOTOVOLTAIC_INPUT_SHORT_CIRCUIT(9, "光伏输入短路"),
+    /**
+     * 光伏输入端超压
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_PHOTOVOLTAIC_INPUT_TERMINAL_OVERPRESSURE(10, "光伏输入端超压"),
+    /**
+     * 太阳板逆流
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_PHOTOVOLTAIC_SOLAR_PLATE_COUNTERCURRENT(11, "太阳板逆流"),
+    /**
+     * 太阳板工作点超压
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_OVERPRESSURE_AT_WORKING_POINT_OF_SOLAR_PANEL(12, "太阳板工作点超压"),
+    /**
+     * 太阳板反接
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_REVERSE_CONNECTION_OF_SOLAR_PANEL(13, "太阳板反接"),
+    /**
+     * Anti-reverse MOS short
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_ANTI_REVERSE_MOS_SHORT(14, "Anti-reverse MOS short"),
+    /**
+     * Circuit,charge MOS short circui
+     */
+    EM_SOLARCELL_SYSTEM_FAULT_TYPE_ANTI_CIRCUIT_CHARGE_MOS_SHORT_CIRCUI(15, "Circuit,charge MOS short circui");
+    private int type;
+    private String info;
+
+    private EM_SOLARCELL_SYSTEM_FAULT_TYPE(int type, String info) {
+        this.type = type;
+        this.info = info;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public static EM_SOLARCELL_SYSTEM_FAULT_TYPE getSolarcellFaultType(int type) {
+        for (EM_SOLARCELL_SYSTEM_FAULT_TYPE faultType : EM_SOLARCELL_SYSTEM_FAULT_TYPE.values()) {
+            if (faultType.getType() == type) {
+                return faultType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_MODE.java
new file mode 100644
index 0000000..ee1e8f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_MODE.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.enumeration;
+/**
+ * 
+ * @author 119178
+ *
+ */
+public enum EM_SOURCE_MODE {
+	EM_SOURCE_MODE_UNKNOWN(0,"未知"),				// 未知
+	EM_SOURCE_MODE_SINGLE(1,"Single/单个备份模式"),				// "Single",/*单个备份模式*/
+	EM_SOURCE_MODE_COMBIN(2,"Combin/合并备份模式");				// "Combin",/*合并备份模式*/
+	
+	private int value;
+	private String note;
+
+	private EM_SOURCE_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java
new file mode 100644
index 0000000..9068f31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SOURCE_VIDEO_LOCATION.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 视频诊断录像保存位置
+ * @date 2021/2/22
+ */
+public enum EM_SOURCE_VIDEO_LOCATION {
+  /** 未知 */
+  EM_SOURCE_VIDEO_LOCATION_UNKNOWN,
+  /** 存于设备 */
+  EM_SOURCE_VIDEO_LOCATION_DEVICE,
+  /** 存于平台 */
+  EM_SOURCE_VIDEO_LOCATION_CENTER,
+  /** 存于第三方云 */
+  EM_SOURCE_VIDEO_LOCATION_THIRD;
+
+  public EM_SOURCE_VIDEO_LOCATION getVideoLocation(int location) {
+    for (EM_SOURCE_VIDEO_LOCATION videoLocation : EM_SOURCE_VIDEO_LOCATION.values()) {
+      if (videoLocation.ordinal() == location) {
+        return videoLocation;
+      }
+    }
+    return EM_SOURCE_VIDEO_LOCATION_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SPACE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SPACE_TYPE.java
new file mode 100644
index 0000000..e816919
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SPACE_TYPE.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 车位类型
+ * @date 2022/05/11 13:27:51
+ */
+public enum EM_SPACE_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_SPACE_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 小车位
+	 */
+	EM_SPACE_TYPE_CAR(0, "小车位"),
+	/**
+	 * 大车位
+	 */
+	EM_SPACE_TYPE_BIG_CAR(1, "大车位"),
+	/**
+	 * 危化品车位
+	 */
+	EM_SPACE_TYPE_HAZARDOUS_CHEMICALS(2, "危化品车位"),
+	/**
+	 * 货车车位
+	 */
+	EM_SPACE_TYPE_TRUCK(3, "货车车位"),
+	/**
+	 * 小客车车位
+	 */
+	EM_SPACE_TYPE_SMALL_TRUCK(4, "小客车车位"),
+	/**
+	 * 大客车车位
+	 */
+	EM_SPACE_TYPE_BUS(5, "大客车车位");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SPACE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SPACE_TYPE enumType : EM_SPACE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SPACE_TYPE enumType : EM_SPACE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_SPACE_TYPE getEnum(int value) {
+		for (EM_SPACE_TYPE e : EM_SPACE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_SPACE_TYPE.EM_SPACE_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java
new file mode 100644
index 0000000..3e7efdd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STANDARD_VEHICLE_TYPE.java
@@ -0,0 +1,150 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 标准车辆类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_STANDARD_VEHICLE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_STANDARD_VEHICLE_UNKNOWN = 0;
+    /**
+     *  机动车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MOTOR = 1;
+    /**
+     *  公交车
+     */
+    public static final int					EM_STANDARD_VEHICLE_BUS = 2;
+    /**
+     *  无牌机动车
+     */
+    public static final int					EM_STANDARD_VEHICLE_UNLICENSED_MOTOR = 3;
+    /**
+     *  大型汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_LARGE_CAR = 4;
+    /**
+     *  小型汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MICRO_CAR = 5;
+    /**
+     *  使馆汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_EMBASSY_CAR = 6;
+    /**
+     *  领馆汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MARGINAL_CAR = 7;
+    /**
+     *  境外汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_AREAOUT_CAR = 8;
+    /**
+     *  外籍汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_FOREIGN_CAR = 9;
+    /**
+     *  农用运输车
+     */
+    public static final int					EM_STANDARD_VEHICLE_FARM_TRANS_CAR = 10;
+    /**
+     *  拖拉机
+     */
+    public static final int					EM_STANDARD_VEHICLE_TRACTOR = 11;
+    /**
+     *  挂车
+     */
+    public static final int					EM_STANDARD_VEHICLE_TRAILER = 12;
+    /**
+     *  教练汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_COACH_CAR = 13;
+    /**
+     *  试验汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_TRIAL_CAR = 14;
+    /**
+     *  临时入境汽车
+     */
+    public static final int					EM_STANDARD_VEHICLE_TEMPORARYENTRY_CAR = 15;
+    /**
+     *  临时入境摩托
+     */
+    public static final int					EM_STANDARD_VEHICLE_TEMPORARYENTRY_MOTORCYCLE = 16;
+    /**
+     *  临时行驶车
+     */
+    public static final int					EM_STANDARD_VEHICLE_TEMPORARY_STEER_CAR = 17;
+    /**
+     *  大货车
+     */
+    public static final int					EM_STANDARD_VEHICLE_LARGE_TRUCK = 18;
+    /**
+     *  中货车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MID_TRUCK = 19;
+    /**
+     *  小货车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MICRO_TRUCK = 20;
+    /**
+     *  面包车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MICROBUS = 21;
+    /**
+     *  轿车
+     */
+    public static final int					EM_STANDARD_VEHICLE_SALOON_CAR = 22;
+    /**
+     *  小轿车
+     */
+    public static final int					EM_STANDARD_VEHICLE_CARRIAGE = 23;
+    /**
+     *  微型轿车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MINI_CARRIAGE = 24;
+    /**
+     *  SUV或者MPV
+     */
+    public static final int					EM_STANDARD_VEHICLE_SUV_MPV = 25;
+    /**
+     *  SUV
+     */
+    public static final int					EM_STANDARD_VEHICLE_SUV = 26;
+    /**
+     *  MPV
+     */
+    public static final int					EM_STANDARD_VEHICLE_MPV = 27;
+    /**
+     *  客车
+     */
+    public static final int					EM_STANDARD_VEHICLE_PASSENGER_CAR = 28;
+    /**
+     *  大客车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MOTOR_BUS = 29;
+    /**
+     *  中客车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MID_PASSENGER_CAR = 30;
+    /**
+     *  小客车
+     */
+    public static final int					EM_STANDARD_VEHICLE_MINI_BUS = 31;
+    /**
+     *  皮卡车
+     */
+    public static final int					EM_STANDARD_VEHICLE_PICKUP = 32;
+    /**
+     *  油罐车
+     */
+    public static final int					EM_STANDARD_VEHICLE_OILTANK_TRUCK = 33;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java
new file mode 100644
index 0000000..3124d65
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTFIND_DIRECTION.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 统计方向查询条件
+ * @date 2022/11/03 10:19:57
+ */
+public enum EM_STARTFIND_DIRECTION {
+	/**
+	 * 未知
+	 */
+	EM_STARTFIND_DIRECTION_UNKNOWN(0, "未知"),
+	/**
+	 * 全部
+	 */
+	EM_STARTFIND_DIRECTION_BOTH(1, "全部"),
+	/**
+	 * 左到右
+	 */
+	EM_STARTFIND_DIRECTION_LEFTTORIGHT(2, "左到右"),
+	/**
+	 * 右到左
+	 */
+	EM_STARTFIND_DIRECTION_RIGHTTOLEFT(3, "右到左");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_STARTFIND_DIRECTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STARTFIND_DIRECTION enumType : EM_STARTFIND_DIRECTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STARTFIND_DIRECTION enumType : EM_STARTFIND_DIRECTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTUP_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTUP_MODE.java
new file mode 100644
index 0000000..5b66260
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STARTUP_MODE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 启动模式
+ * @date 2021/2/7
+ */
+public enum EM_STARTUP_MODE {
+  /** 未知 */
+  EM_STARTUP_MODE_UNKNOWN(-1, "未知"),
+  /** 正常启动模式 */
+  EM_STARTUP_MODE_NORMAL(0, "正常启动模式"),
+  /** 零位设置启动模式 */
+  EM_STARTUP_MODE_ZERO_SETTING(1, "零位设置启动模式"),
+  /** 老化测试启动模式 */
+  EM_STARTUP_MODE_AGING_TEST(2, "老化测试启动模式");
+
+  private int mode;
+  private String desc;
+
+  EM_STARTUP_MODE(int mode, String desc) {
+    this.mode = mode;
+    this.desc = desc;
+  }
+
+  public static EM_STARTUP_MODE getStartupMode(int mode) {
+    for (EM_STARTUP_MODE startMode : EM_STARTUP_MODE.values()) {
+      if (startMode.mode == mode) {
+        return startMode;
+      }
+    }
+    return EM_STARTUP_MODE_UNKNOWN;
+  }
+
+  public int getMode() {
+    return mode;
+  }
+
+  public void setMode(int mode) {
+    this.mode = mode;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATEMANAGER_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATEMANAGER_STATE.java
new file mode 100644
index 0000000..e2a4dfc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATEMANAGER_STATE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 状态名称
+ * @date 2023/05/11 14:21:08
+ */
+public enum EM_STATEMANAGER_STATE {
+	/**
+	 * 智能终端箱的异常状态, 对应结构体NET_CASEABNORMAL_STATE_INFO
+	 */
+	EM_STATEMANAGER_STATE_CASEABNORMAL(0, "智能终端箱的异常状态"),
+	/**
+	 * 智能机箱的日常运行状态, 对应结构体NET_CASERUNNING_STATE_INFO
+	 */
+	EM_STATEMANAGER_STATE_CASERUNNING(1, "智能机箱的日常运行状态");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_STATEMANAGER_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STATEMANAGER_STATE enumType : EM_STATEMANAGER_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STATEMANAGER_STATE enumType : EM_STATEMANAGER_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATISTICS_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATISTICS_MODE.java
new file mode 100644
index 0000000..713c19f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATISTICS_MODE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 统计模式
+ * @date 2021/12/18
+ */
+public enum EM_STATISTICS_MODE {
+	// 未知
+	EM_STATISTICS_MODE_UNKNOWN(0, "未知"),
+	// 区域
+	EM_STATISTICS_MODE_AREA(1, "区域"),
+	// 车位
+	EM_STATISTICS_MODE_SPACE(2, "车位");
+
+	private int value;
+	private String note;
+
+	private EM_STATISTICS_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STATISTICS_MODE enumType : EM_STATISTICS_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STATISTICS_MODE enumType : EM_STATISTICS_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATUS.java
new file mode 100644
index 0000000..4a9c925
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STATUS.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 设备状态
+ * @date 2021/09/01
+ */
+public enum EM_STATUS {
+
+	// 未知
+	EM_STATUS_UNKNOWN(-1, "未知"),
+	// 无效
+	EM_STATUS_INVALID(0, "无效"),
+	// 工作正常
+	EM_STATUS_NORMAL(1, "工作正常"),
+	// 故障状态
+	EM_STATUS_FAULT(2, "故障状态"),
+	// 其他
+	EM_STATUS_OTHER(3, "其他");
+
+	private int value;
+	private String note;
+
+	private EM_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STATUS enumType : EM_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STATUS enumType : EM_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_DIRECTION.java
new file mode 100644
index 0000000..6fb8334
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_DIRECTION.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  统计方向查询条件 
+* @date 2023/02/06 16:07:27
+*/
+public enum EM_STAT_DIRECTION {
+/**
+未知
+*/
+EM_STAT_DIRECTION_UNKNOWN(0,"未知"),
+/**
+左到右
+*/
+EM_STAT_DIRECTION_LEFTTORIGHT(1,"左到右"),
+/**
+右到左
+*/
+EM_STAT_DIRECTION_RIGHTTOLEFT(2,"右到左"),
+/**
+全部
+*/
+EM_STAT_DIRECTION_BOTH(3,"全部");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_STAT_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_STAT_DIRECTION enumType : EM_STAT_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_STAT_DIRECTION enumType : EM_STAT_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_STAT_DIRECTION getEnum(int value) {
+        for (EM_STAT_DIRECTION e : EM_STAT_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_STAT_DIRECTION.EM_STAT_DIRECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_GRANULARITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_GRANULARITY.java
new file mode 100644
index 0000000..b1482b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STAT_GRANULARITY.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 粒度模式
+ * @date 2022/12/12 11:41:07
+ */
+public enum EM_STAT_GRANULARITY {
+	/**
+	 * 未知
+	 */
+	EM_STAT_GRANULARITY_UNKNOWN(0, "未知"),
+	/**
+	 * 分钟粒度
+	 */
+	EM_STAT_GRANULARITY_MINUTE(1, "分钟粒度");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_STAT_GRANULARITY(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STAT_GRANULARITY enumType : EM_STAT_GRANULARITY.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STAT_GRANULARITY enumType : EM_STAT_GRANULARITY.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java
new file mode 100644
index 0000000..83f80e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STEREO_ACTION_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 动作类型
+ * @date 2022/03/31
+ */
+public enum EM_STEREO_ACTION_TYPE {
+	// 未知
+	EM_STEREO_ACTION_TYPE_UNKNOWN(0, "未知"),
+
+	// 剧烈运动
+	EM_STEREO_ACTION_TYPE_DRASTIC_MOTION(1, "剧烈运动"),
+
+	// 单人打砸
+	EM_STEREO_ACTION_TYPE_SINGLE_FIGHT(2, "单人打砸"),
+
+	// 多人打架
+	EM_STEREO_ACTION_TYPE_MULTI_FIGHT(3, "多人打架");
+
+	private int value;
+	private String note;
+
+	private EM_STEREO_ACTION_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STEREO_ACTION_TYPE enumType : EM_STEREO_ACTION_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STEREO_ACTION_TYPE enumType : EM_STEREO_ACTION_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGEPOINT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGEPOINT_TYPE.java
new file mode 100644
index 0000000..c1b8cc6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGEPOINT_TYPE.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 存储点类型
+ * @origin autoTool
+ * @date 2023/10/30 15:54:18
+ */
+public enum EM_STORAGEPOINT_TYPE {
+    /**
+     *
+     */
+    EM_STORAGE_TIMINGRECORD(0, "定时录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_MANUALRECORD(1, "手动录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_VIDEODETECTRECORD(2, "视频检测录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_ALARMRECORD(3, "报警录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_CARDRECORD(4, "卡号录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_EVENTRECORD(5, "其他事件录像存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_TIMINGSNAPSHOT(6, "定时抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_MANUALSNAPSHOT(7, "手动抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_VIDEODETECTSNAPSHOT(8, "视频检测抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_ALARMSNAPSHOT(9, "报警抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_CARDSNAPSHOT(10, "卡号抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_EVENTSNAPSHOT(11, "其他事件抓图存储点类"),
+    /**
+     *
+     */
+    EM_STORAGE_TIMINGEXTRA1RECORD(12, "辅码流1录像存储点类");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_STORAGEPOINT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_STORAGEPOINT_TYPE enumType : EM_STORAGEPOINT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_STORAGEPOINT_TYPE enumType : EM_STORAGEPOINT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java
new file mode 100644
index 0000000..36414f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DEVICE_STATUS.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 存储设备状态
+ * @date 2021/01/21
+ */
+public enum EM_STORAGE_DEVICE_STATUS {
+	// 未知
+	EM_STORAGE_DEVICE_UNKNOWN(0, "未知"),
+
+	// 获取设备失败
+	EM_STORAGE_DEVICE_ERROR(1, "获取设备失败"),
+
+	// 正在读取设备
+	EM_STORAGE_DEVICE_INITIALIZING(2, "正在读取设备"),
+
+	// 获取设备成功
+	EM_STORAGE_DEVICE_SUCCESS(3, "获取设备成功");
+
+	private int value;
+	private String note;
+
+	private EM_STORAGE_DEVICE_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STORAGE_DEVICE_STATUS enumType : EM_STORAGE_DEVICE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STORAGE_DEVICE_STATUS enumType : EM_STORAGE_DEVICE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java
new file mode 100644
index 0000000..4e43b3e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_POWERMODE.java
@@ -0,0 +1,9 @@
+package com.netsdk.lib.enumeration;
+
+public class EM_STORAGE_DISK_POWERMODE {
+	public static final int 		EM_STORAGE_DISK_POWERMODE_UNKNOWN 			= 0;    // UNKnown状态(不是以下状态中的值)
+	public static final int 	    EM_STORAGE_DISK_POWERMODE_NONE     			= 1;    // 未知状态
+	public static final int 	    EM_STORAGE_DISK_POWERMODE_ACTIVE         	= 2;    // 活动状态
+	public static final int 	    EM_STORAGE_DISK_POWERMODE_STANDBY    		= 3;    // 休眠状态
+	public static final int 	    EM_STORAGE_DISK_POWERMODE_IDLE           	= 4;    // 空闲状态                                     
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java
new file mode 100644
index 0000000..6406f5d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_DISK_PREDISKCHECK.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.enumeration;
+
+public class EM_STORAGE_DISK_PREDISKCHECK {
+	public static final int 		EM_STORAGE_DISK_PREDISKCHECK_UNKNOWN 			= 0;    // UnKnown状态
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_GOOD     			= 1;    // 硬盘读速度到120以上, 运行良好
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_WARN         		= 2;    // cmd信息里有少量错误记录,smart信息有错误记录
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_ERROR    			= 3;    // cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_WILLFAIL           = 4;     // 硬盘速度比较低64M以下.cmd信息有错误记录,smart信息由错误记录.坏扇区有坏扇区记录
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_FAIL    			= 5;    // 硬盘返回错误
+	public static final int 	    EM_STORAGE_DISK_PREDISKCHECK_NONE    			= 6;    // 未知状态
+	public static final int 		EM_STORAGE_DISK_PREDISKCHECK_BECHECK			= 7;    // 正在查询中状态
+	public static final int 		EM_STORAGE_DISK_PREDISKCHECK_CHECKFAIL   		= 8;	// 查询失败状态                          
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java
new file mode 100644
index 0000000..9e26077
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_HEALTH_TYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 健康状态标识
+ * @date 2021/01/21
+ */
+public enum EM_STORAGE_HEALTH_TYPE {
+	// 未知
+	EM_STORAGE_HEALTH_UNKNOWN(-1, "未知"),
+
+	// 设备不支持健康检测功能
+	EM_STORAGE_HEALTH_UNSUPPORT(0, "设备不支持健康检测功能"),
+
+	// 支持健康检测功能且获取数据成功
+	EM_STORAGE_HEALTH_SUPPORT_AND_SUCCESS(1, "支持健康检测功能且获取数据成功"),
+
+	// 支持健康检测功能但获取数据失败
+	EM_STORAGE_HEALTH_SUPPORT_AND_FAIL(2, "支持健康检测功能但获取数据失败");
+
+	private int value;
+	private String note;
+
+	private EM_STORAGE_HEALTH_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_STORAGE_HEALTH_TYPE enumType : EM_STORAGE_HEALTH_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_STORAGE_HEALTH_TYPE enumType : EM_STORAGE_HEALTH_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java
new file mode 100644
index 0000000..3d4313a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STORAGE_PACKET_TYPE.java
@@ -0,0 +1,7 @@
+package com.netsdk.lib.enumeration;/**
+ * @author 47081
+ * @description
+ * @date 2021/2/20
+ * @version 1.0
+ */public enum EM_STORAGE_PACKET_TYPE {
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STRABISMUS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STRABISMUS_TYPE.java
new file mode 100644
index 0000000..463f255
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_STRABISMUS_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 斜视状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_STRABISMUS_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_STRABISMUS_UNKNOWN = 0;
+    /**
+     *  正常
+     */
+    public static final int					EM_STRABISMUS_NORMAL = 1;
+    /**
+     *  斜视
+     */
+    public static final int					EM_STRABISMUS_YES = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java
new file mode 100644
index 0000000..39efc85
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBCLASSID_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/12/28 16:07
+ */
+public enum EM_SUBCLASSID_TYPE {
+
+    EM_SUBCLASSID_UNKNOWN(0,"未知"),
+    EM_SUBCLASSID_ASSISTDEVICE(1,"辅助设备 (ITSE使用)");
+
+    private final int value;
+    private final String note;
+
+    EM_SUBCLASSID_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_SUBCLASSID_TYPE enumType : EM_SUBCLASSID_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_SUBCLASSID_TYPE enumType : EM_SUBCLASSID_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_SUBCLASSID_TYPE getEnum(int value) {
+        for (EM_SUBCLASSID_TYPE e : EM_SUBCLASSID_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SUBCLASSID_TYPE.EM_SUBCLASSID_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_MODE.java
new file mode 100644
index 0000000..e2d0ee7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_MODE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 子连接连接业务模式
+ * @date 2022/06/16 15:17:48
+ */
+public enum EM_SUBLINK_MODE {
+	/**
+	 * 通用模式,默认值
+	 */
+	EM_SUBLINK_MODE_NORMAL(0, "通用模式,默认值"),
+	/**
+	 * 低功耗模式
+	 */
+	EM_SUBLINK_MODE_LOWPOWER(1, "低功耗模式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SUBLINK_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUBLINK_MODE enumType : EM_SUBLINK_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUBLINK_MODE enumType : EM_SUBLINK_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_STATE.java
new file mode 100644
index 0000000..009262f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_STATE.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+子连接状态
+*/
+public enum EM_SUBLINK_STATE {
+/**
+/< 未知
+*/
+EM_SUBLINK_STATE_UNKNWON(0,"/< 未知"),
+/**
+/< 已连接
+*/
+EM_SUBLINK_STATE_CONNECT(1,"/< 已连接"),
+/**
+/< 已断开
+*/
+EM_SUBLINK_STATE_DISCONNECT(2,"/< 已断开"),
+/**
+/< BSID校验失败, 子连接创建失败
+*/
+EM_SUBLINK_STATE_BSID_ERROR(3,"/< BSID校验失败, 子连接创建失败");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_SUBLINK_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_SUBLINK_STATE enumType : EM_SUBLINK_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_SUBLINK_STATE enumType : EM_SUBLINK_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_SUBLINK_STATE getEnum(int value) {
+        for (EM_SUBLINK_STATE e : EM_SUBLINK_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SUBLINK_STATE.EM_SUBLINK_STATE_UNKNWON;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_TYPE.java
new file mode 100644
index 0000000..c5f9525
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUBLINK_TYPE.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 子连接连接方式
+ */
+public enum EM_SUBLINK_TYPE {
+	/**
+	 *  直连方式
+	 */
+	EM_SUBLINK_TYPE_PASSIVE(0, "直连方式"),
+	/**
+	 * 主动注册方式
+	 */
+	EM_SUBLINK_TYPE_PORT(1, "主动注册方式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SUBLINK_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUBLINK_TYPE enumType : EM_SUBLINK_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUBLINK_TYPE enumType : EM_SUBLINK_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_SUBLINK_TYPE getEnum(int value) {
+		for (EM_SUBLINK_TYPE e : EM_SUBLINK_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_SUBLINK_TYPE.EM_SUBLINK_TYPE_PASSIVE;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java
new file mode 100644
index 0000000..3d76d07
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTED_COLOR_LIST_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 检测符合要求的厨师服颜色不报警(无此字段表示不检测厨师服颜色)
+ * @date 2021/01/11
+ */
+public enum EM_SUPPORTED_COLOR_LIST_TYPE {
+
+	// 未知
+	EM_SUPPORTED_COLOR_LIST_TYPE_UNKNOWN(0, "未知"),
+
+	// 黑色
+	EM_SUPPORTED_COLOR_LIST_TYPE_BLACK(1, "黑色"),
+
+	// 白色
+	EM_SUPPORTED_COLOR_LIST_TYPE_WHITE(2, "白色"),
+
+	// 红色
+	EM_SUPPORTED_COLOR_LIST_TYPE_RED(3, "红色");
+
+	private int value;
+	private String note;
+
+	private EM_SUPPORTED_COLOR_LIST_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUPPORTED_COLOR_LIST_TYPE enumType : EM_SUPPORTED_COLOR_LIST_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUPPORTED_COLOR_LIST_TYPE enumType : EM_SUPPORTED_COLOR_LIST_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java
new file mode 100644
index 0000000..6bebfed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORTFINGERPRINT.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 是否支持信息功能
+ */
+public enum EM_SUPPORTFINGERPRINT {
+    /**
+     * 未知
+     */
+    EM_SUPPORTFINGERPRINT_UNKNOWN,
+    /**
+     * 不支持信息功能
+     */
+    EM_SUPPORTFINGERPRINT_NONSUPPORT,
+    /**
+     * 支持信息功能
+     */
+    EM_SUPPORTFINGERPRINT_SUPPORT,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java
new file mode 100644
index 0000000..c7203b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_CLOSE_UP_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 可选择特写模式
+ * @date 2021/01/11
+ */
+public enum EM_SUPPORT_CLOSE_UP_TYPE {
+	// 未知
+	EM_SUPPORT_CLOSE_UP_TYPE_UNKNOWN(0, "未知"),
+
+	// 跟踪模式
+	EM_SUPPORT_CLOSE_UP_TYPE_TRACK_MODE(1, "跟踪模式"),
+
+	// 固定模式
+	EM_SUPPORT_CLOSE_UP_TYPE_FIXED_MODE(2, "固定模式"),
+
+	// 指定区域模式
+	EM_SUPPORT_CLOSE_UP_TYPE_DESIGNED_REGION_MODE(3, "指定区域模式");
+
+	private int value;
+	private String note;
+
+	private EM_SUPPORT_CLOSE_UP_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUPPORT_CLOSE_UP_TYPE enumType : EM_SUPPORT_CLOSE_UP_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUPPORT_CLOSE_UP_TYPE enumType : EM_SUPPORT_CLOSE_UP_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java
new file mode 100644
index 0000000..314a341
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_CHECK_TYPE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_SUPPORT_FAST_CHECK_TYPE {
+    /**
+     *未知
+     */
+    EM_SUPPORT_FAST_CHECK_UNKNOWN(-1),
+    /**
+     * 不支持
+     */
+    EM_SUPPORT_FAST_CHECK_NONSUPPORT(0),
+    /**
+     * 支持
+     */
+    EM_SUPPORT_FAST_CHECK_SUPPORT(1);
+    private int type;
+    EM_SUPPORT_FAST_CHECK_TYPE(int type) {
+        this.type=type;
+    }
+    public int getType(){
+        return type;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java
new file mode 100644
index 0000000..fe9bef2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FAST_IMPORT_TYPE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_SUPPORT_FAST_IMPORT_TYPE {
+    /**
+     * 未知
+     */
+    EM_SUPPORT_FAST_IMPORT_UNKNOWN(-1),
+    /**
+     * 不支持
+     */
+    EM_SUPPORT_FAST_IMPORT_NONSUPPORT(0),
+    /**
+     * 支持
+     */
+    EM_SUPPORT_FAST_IMPORT_SUPPORT(1);
+    private int type;
+
+    EM_SUPPORT_FAST_IMPORT_TYPE(int type) {
+        this.type=type;
+    }
+    public int getType(){
+        return type;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java
new file mode 100644
index 0000000..7ab06c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_FOCUS_MODE.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.enumeration;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 支持的焦距模式对应枚举
+ * @date 2020/11/9
+ */
+public enum EM_SUPPORT_FOCUS_MODE {
+    ENUM_SUPPORT_FOCUS_CAR(1, "看清车模式"),
+    ENUM_SUPPORT_FOCUS_PLATE(2, "看清车牌模式"),
+    ENUM_SUPPORT_FOCUS_PEOPLE(3, "看清人模式"),
+    ENUM_SUPPORT_FOCUS_FACE(4, "看清人脸模式");
+
+    private EM_SUPPORT_FOCUS_MODE(int mode, String desc) {
+        this.mode = mode;
+        this.desc = desc;
+    }
+
+    private int mode;
+    private String desc;
+
+    public int getMode() {
+        return mode;
+    }
+
+    public void setMode(int mode) {
+        this.mode = mode;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java
new file mode 100644
index 0000000..4aceb92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_HELMET_TYPE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  支持安全帽功能 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public enum EM_SUPPORT_HELMET_TYPE {
+/**
+未知
+*/
+EM_SUPPORT_HELMET_TYPE_UNKNOWN(-1,"未知"),
+/**
+不支持
+*/
+EM_SUPPORT_HELMET_TYPE_NO_SUPPORT(0,"不支持"),
+/**
+支持
+*/
+EM_SUPPORT_HELMET_TYPE_SUPPORT(1,"支持");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_SUPPORT_HELMET_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_SUPPORT_HELMET_TYPE enumType : EM_SUPPORT_HELMET_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_SUPPORT_HELMET_TYPE enumType : EM_SUPPORT_HELMET_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_SUPPORT_HELMET_TYPE getEnum(int value) {
+        for (EM_SUPPORT_HELMET_TYPE e : EM_SUPPORT_HELMET_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SUPPORT_HELMET_TYPE.EM_SUPPORT_HELMET_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LIFT_CONTROL_TYPES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LIFT_CONTROL_TYPES.java
new file mode 100644
index 0000000..22e2588
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LIFT_CONTROL_TYPES.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 支持的梯控制方式类型
+ * @origin autoTool
+ * @date 2023/08/24 14:19:16
+ */
+public enum EM_SUPPORT_LIFT_CONTROL_TYPES {
+	/**
+	 * 未知
+	 */
+	EM_SUPPORT_LIFT_CONTROL_TYPES_UNKNOWN(0, "未知"),
+	/**
+	 * 本地485协议梯控方式
+	 */
+	EM_SUPPORT_LIFT_CONTROL_TYPES_LOCAL485(1, "本地485协议梯控方式"),
+	/**
+	 * 从门口机联动主门口进行召梯
+	 */
+	EM_SUPPORT_LIFT_CONTROL_TYPES_LINKMAINVTO(2, "从门口机联动主门口进行召梯"),
+	/**
+	 * 联动梯控主机召梯
+	 */
+	EM_SUPPORT_LIFT_CONTROL_TYPES_LINkLIFTCONTROLHOST(3, "联动梯控主机召梯");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SUPPORT_LIFT_CONTROL_TYPES(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUPPORT_LIFT_CONTROL_TYPES enumType : EM_SUPPORT_LIFT_CONTROL_TYPES.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUPPORT_LIFT_CONTROL_TYPES enumType : EM_SUPPORT_LIFT_CONTROL_TYPES.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java
new file mode 100644
index 0000000..cac1e6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_LOCALDATA_STORE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  是否支持本地存储 
+* @date 2022/08/22 10:11:26
+*/
+public enum EM_SUPPORT_LOCALDATA_STORE {
+/**
+未知
+*/
+EM_SUPPORT_LOCALDATA_STORE_UNKNOWN(-1,"未知"),
+/**
+不支持
+*/
+EM_SUPPORT_LOCALDATA_STORE_NO(0,"不支持"),
+/**
+支持
+*/
+EM_SUPPORT_LOCALDATA_STORE_YES(1,"支持");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_SUPPORT_LOCALDATA_STORE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_SUPPORT_LOCALDATA_STORE enumType : EM_SUPPORT_LOCALDATA_STORE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_SUPPORT_LOCALDATA_STORE enumType : EM_SUPPORT_LOCALDATA_STORE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_SUPPORT_LOCALDATA_STORE getEnum(int value) {
+        for (EM_SUPPORT_LOCALDATA_STORE e : EM_SUPPORT_LOCALDATA_STORE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_SUPPORT_LOCALDATA_STORE.EM_SUPPORT_LOCALDATA_STORE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_SEARCH_BY_PIC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_SEARCH_BY_PIC.java
new file mode 100644
index 0000000..bc92442
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_SUPPORT_SEARCH_BY_PIC.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 是否支持以图搜图
+ * @origin autoTool
+ * @date 2023/07/31 09:25:34
+ */
+public enum EM_SUPPORT_SEARCH_BY_PIC {
+	/**
+     * 未知, IVSS, NVR, DVR大概率支持目标以图搜图,IPC-FR不支持
+     */
+	EM_SUPPORT_SEARCH_BY_PIC_UNKNOWN(0,"未知, IVSS, NVR, DVR大概率支持目标以图搜图,IPC-FR不支持"),
+	/**
+     * 不支持
+     */
+	EM_SUPPORT_SEARCH_BY_PIC_UNSUPPORT(1,"不支持"),
+	/**
+     * 支持
+     */
+	EM_SUPPORT_SEARCH_BY_PIC_SUPPORT(2,"支持");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_SUPPORT_SEARCH_BY_PIC(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SUPPORT_SEARCH_BY_PIC enumType : EM_SUPPORT_SEARCH_BY_PIC.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SUPPORT_SEARCH_BY_PIC enumType : EM_SUPPORT_SEARCH_BY_PIC.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static EM_SUPPORT_SEARCH_BY_PIC getEnum(int value) {
+		for (EM_SUPPORT_SEARCH_BY_PIC e : EM_SUPPORT_SEARCH_BY_PIC.values()) {
+			if (e.getValue() == value) {
+				return e;
+			}
+		}
+		return EM_SUPPORT_SEARCH_BY_PIC.EM_SUPPORT_SEARCH_BY_PIC_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java
new file mode 100644
index 0000000..d217ef9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TALK_AUDIO_TYPE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 音频编码压缩格式
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/6/9
+ */
+public enum EM_TALK_AUDIO_TYPE {
+
+        EM_TALK_AUDIO_PCM,
+        EM_TALK_AUDIO_ADPCM,
+        EM_TALK_AUDIO_G711A,
+        EM_TALK_AUDIO_G711Mu,
+        EM_TALK_AUDIO_G726,
+        EM_TALK_AUDIO_G729,
+        EM_TALK_AUDIO_MPEG2,
+        EM_TALK_AUDIO_AMR,
+        EM_TALK_AUDIO_AAC,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java
new file mode 100644
index 0000000..a98a61e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TAMPERALTERSTATUS_TYPE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 设备锁状态
+ * @date 2021/2/22
+ */
+public enum EM_TAMPERALTERSTATUS_TYPE {
+  /** 未知 */
+  EM_TAMPERALTERSTATUS_UNKNOWN(-1, "未知"),
+  /** 关闭 */
+  EM_TAMPERALTERSTATUS_CLOSE(0, "关闭"),
+  /** 开启 */
+  EM_TAMPERALTERSTATUS_OPEN(1, "开启");
+  private int type;
+  private String desc;
+
+  EM_TAMPERALTERSTATUS_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public static EM_TAMPERALTERSTATUS_TYPE getTamperaltersStatus(int type) {
+    for (EM_TAMPERALTERSTATUS_TYPE statusType : EM_TAMPERALTERSTATUS_TYPE.values()) {
+      if (statusType.type == type) {
+        return statusType;
+      }
+    }
+    return EM_TAMPERALTERSTATUS_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TANK_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TANK_STATUS.java
new file mode 100644
index 0000000..dfed758
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TANK_STATUS.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 贮柜当前状态
+ * @date 2022/10/28 11:34:32
+ */
+public enum EM_TANK_STATUS {
+	/**
+	 * 未知
+	 */
+	EM_TANK_STATUS_UNKNOWN(0, "未知"),
+	/**
+	 * 出料
+	 */
+	EM_TANK_STATUS_DISCHARGING(1, "出料"),
+	/**
+	 * 进料
+	 */
+	EM_TANK_STATUS_CHARGING(2, "进料"),
+	/**
+	 * 空闲
+	 */
+	EM_TANK_STATUS_IDLE(3, "空闲");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_TANK_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TANK_STATUS enumType : EM_TANK_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TANK_STATUS enumType : EM_TANK_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java
new file mode 100644
index 0000000..d517f68
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATUREEX_TYPE.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 温度类型
+ * @date 2022/05/12 16:32:08
+ */
+public enum EM_TEMPERATUREEX_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_TEMPERATUREEX_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 全部
+	 */
+	EM_TEMPERATUREEX_TYPE_ALL(1, "全部"),
+	/**
+	 * 电源
+	 */
+	EM_TEMPERATUREEX_TYPE_POWER(2, "电源"),
+	/**
+	 * 机柜
+	 */
+	EM_TEMPERATUREEX_TYPE_CABINET(3, "机柜"),
+	/**
+	 * 环境
+	 */
+	EM_TEMPERATUREEX_TYPE_GLOBAL(4, "环境"),
+	/**
+	 * 主板
+	 */
+	EM_TEMPERATUREEX_TYPE_MAINBOARD(5, "主板"),
+	/**
+	 * 子卡
+	 */
+	EM_TEMPERATUREEX_TYPE_CARD(6, "子卡"),
+	/**
+	 * 背板
+	 */
+	EM_TEMPERATUREEX_TYPE_BACKBOARD(7, "背板"),
+	/**
+	 * 处理器
+	 */
+	EM_TEMPERATUREEX_TYPE_CPU(8, "处理器");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_TEMPERATUREEX_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TEMPERATUREEX_TYPE enumType : EM_TEMPERATUREEX_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TEMPERATUREEX_TYPE enumType : EM_TEMPERATUREEX_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java
new file mode 100644
index 0000000..775c77c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 温度单位
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_TEMPERATURE_UNIT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_TEMPERATURE_UNKNOWN = -1;
+    /**
+     *  摄氏度
+     */
+    public static final int					EM_TEMPERATURE_CENTIGRADE = 0;
+    /**
+     *  华氏度
+     */
+    public static final int					EM_TEMPERATURE_FAHRENHEIT = 1;
+    /**
+     *  开尔文
+     */
+    public static final int					EM_TEMPERATURE_KELVIN = 2;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java
new file mode 100644
index 0000000..991b9ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMPERATURE_UNIT_EX.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 温度单位
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:45
+ */
+public enum EM_TEMPERATURE_UNIT_EX {
+
+    /**
+     * 未知
+     */
+    EM_TEMPERATURE_EX_UNKNOWN(0, "未知"),
+    /**
+     * 摄氏度
+     */
+    EM_TEMPERATURE_EX_CENTIGRADE(1, "摄氏度"),
+    /**
+     * 华氏度
+     */
+    EM_TEMPERATURE_EX_FAHRENHEIT(2, "华氏度"),
+    /**
+     * 开尔文
+     */
+    EM_TEMPERATURE_EX_KELVIN(3, "开尔文");
+
+    private final int value;
+    private final String note;
+
+    EM_TEMPERATURE_UNIT_EX(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TEMPERATURE_UNIT_EX enumType : EM_TEMPERATURE_UNIT_EX.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TEMPERATURE_UNIT_EX enumType : EM_TEMPERATURE_UNIT_EX.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_TEMPERATURE_UNIT_EX getEnum(int value) {
+        for (EM_TEMPERATURE_UNIT_EX e : EM_TEMPERATURE_UNIT_EX.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TEMPERATURE_UNIT_EX.EM_TEMPERATURE_EX_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java
new file mode 100644
index 0000000..47b68cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEMP_MEASURE_TYPE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+
+
+
+/**
+ * 门禁测温类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public enum EM_TEMP_MEASURE_TYPE {
+
+    /**
+     *  未知
+     */
+    EM_TEMP_MEASURE_TYPE_UNKNOWN,
+
+    /**
+     *  单片机红外测温
+     */
+    EM_TEMP_MEASURE_TYPE_INFRARED,
+
+    /**
+     *  热成像测温
+     */
+    EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE,
+
+    /**
+     *  高德测温模块测温
+     */
+    EM_TEMP_MEASURE_TYPE_GUIDE_MODULE,
+
+    /**
+     *  单点手腕测温
+     */
+    EM_TEMP_MEASURE_TYPE_WRIST,
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEST_ITEMS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEST_ITEMS.java
new file mode 100644
index 0000000..5ffcfa0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TEST_ITEMS.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/20 11:48
+ */
+public enum  EM_TEST_ITEMS {
+    EM_TEST_ITEMS_UNKNOWN(-1,"未知"),								// 未知
+    EM_TEST_ITEMS_OTHER(0,"其他项目"),									// 其他项目
+    EM_TEST_ITEMS_HAND_TEST(1,"手部测试静电电阻"),								// 手部测试静电电阻
+    EM_TEST_ITEMS_TWOFEET_TEST(2,"双脚测试静电电阻"),								// 双脚测试静电电阻
+    EM_TEST_ITEMS_HANDTWOFEET_TEST(3,"手部和双脚测试静电电阻"),							// 手部和双脚测试静电电阻
+    EM_TEST_ITEMS_NONE(4,"全部不测");									// 全部不测
+
+    private final int value;
+    private final String note;
+
+    EM_TEST_ITEMS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TEST_ITEMS enumType : EM_TEST_ITEMS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TEST_ITEMS enumType : EM_TEST_ITEMS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_TEST_ITEMS getEnum(int value) {
+        for (EM_TEST_ITEMS e : EM_TEST_ITEMS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TEST_ITEMS.EM_TEST_ITEMS_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java
new file mode 100644
index 0000000..72f3582
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THERMAL_IMAGE_CALIBRATION_MODE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+
+
+
+/**
+ * 热成像标定模式
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public enum EM_THERMAL_IMAGE_CALIBRATION_MODE {
+
+    /**
+     *  未知
+     */
+    EM_THERMAL_IMAGE_CALIBRATION_MODE_UNKNOWN,
+
+    /**
+     *  室内模式
+     */
+    EM_THERMAL_IMAGE_CALIBRATION_MODE_INDOOR,
+
+    /**
+     *  壁装模式
+     */
+    EM_THERMAL_IMAGE_CALIBRATION_MODE_WALL_MOUNTING,
+
+    /**
+     *  闸机模式
+     */
+    EM_THERMAL_IMAGE_CALIBRATION_MODE_GATE,
+
+    /**
+     *  高端落地式模式   
+     */
+    EM_THERMAL_IMAGE_CALIBRATION_MODE_FLOOR,
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java
new file mode 100644
index 0000000..a33aeba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_ACTION_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 场景触发执行动作类型
+ * @date 2022/04/20 11:28:14
+ */
+public enum EM_THINGS_ACTION_TYPE {
+    /**
+     * 未知
+     */
+    EM_THINGS_ACTION_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * action/device/setProperty 	设置设备属性,对应结构体NET_THINGS_RULECONTENT_ACTION_SETPROPERTY
+     */
+    EM_THINGS_ACTION_TYPE_SETPROPERTY(1, " action/device/setProperty 	设置设备属性,对应结构体NET_THINGS_RULECONTENT_ACTION_SETPROPERTY");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_ACTION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_ACTION_TYPE enumType : EM_THINGS_ACTION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_ACTION_TYPE enumType : EM_THINGS_ACTION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_ACTION_TYPE getEnum(int value) {
+        for (EM_THINGS_ACTION_TYPE e : EM_THINGS_ACTION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_ACTION_TYPE.EM_THINGS_ACTION_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java
new file mode 100644
index 0000000..28e7b25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONDITION_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 场景触发过滤条件类型
+ * @date 2022/04/20 11:28:14
+ */
+public enum EM_THINGS_CONDITION_TYPE {
+    /**
+     * 未知
+     */
+    EM_THINGS_CONDITION_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * condition/timeRange 	比较当前时间是否在一个区间内,对应结构体
+     */
+    EM_THINGS_CONDITION_TYPE_TIMERANGE(1, " condition/timeRange 	比较当前时间是否在一个区间内,对应结构体"),
+    /**
+     * condition/device/property 	设备属性过滤,对应结构体
+     */
+    EM_THINGS_CONDITION_TYPE_PROPERTY(2, " condition/device/property 	设备属性过滤,对应结构体");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_CONDITION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_CONDITION_TYPE enumType : EM_THINGS_CONDITION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_CONDITION_TYPE enumType : EM_THINGS_CONDITION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_CONDITION_TYPE getEnum(int value) {
+        for (EM_THINGS_CONDITION_TYPE e : EM_THINGS_CONDITION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_CONDITION_TYPE.EM_THINGS_CONDITION_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java
new file mode 100644
index 0000000..8e2eabf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CONNECT_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 设备连接状态
+ * @date 2022/04/20 10:16:56
+ */
+public enum EM_THINGS_CONNECT_STATE {
+    /**
+     * 未知
+     */
+    EM_THINGS_CONNECT_STATE_UNKNOWN(-1, "未知"),
+    /**
+     * 连接断开
+     */
+    EM_THINGS_CONNECT_STATE_DISCONNECT(0, "连接断开"),
+    /**
+     * 已连接
+     */
+    EM_THINGS_CONNECT_STATE_CONNECT(1, "已连接");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_CONNECT_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_CONNECT_STATE enumType : EM_THINGS_CONNECT_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_CONNECT_STATE enumType : EM_THINGS_CONNECT_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+    public static EM_THINGS_CONNECT_STATE getEnum(int value) {
+        for (EM_THINGS_CONNECT_STATE e : EM_THINGS_CONNECT_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_CONNECT_STATE.EM_THINGS_CONNECT_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java
new file mode 100644
index 0000000..74c71c2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_CURRENTSTATUSGET_STATUS.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 报警状态
+ * @date 2022/04/20 10:50:24
+ */
+public enum EM_THINGS_CURRENTSTATUSGET_STATUS {
+    /**
+     * 未知
+     */
+    EM_THINGS_CURRENTSTATUSGET_STATUS_UNKNOWN(-1, "未知"),
+    /**
+     * 正常
+     */
+    EM_THINGS_CURRENTSTATUSGET_STATUS_NORMAL(0, "正常"),
+    /**
+     * 预警
+     */
+    EM_THINGS_CURRENTSTATUSGET_STATUS_EARLY(1, "预警"),
+    /**
+     * 报警
+     */
+    EM_THINGS_CURRENTSTATUSGET_STATUS_ALARM(2, "报警");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_CURRENTSTATUSGET_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_CURRENTSTATUSGET_STATUS enumType : EM_THINGS_CURRENTSTATUSGET_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_CURRENTSTATUSGET_STATUS enumType : EM_THINGS_CURRENTSTATUSGET_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+    public static EM_THINGS_CURRENTSTATUSGET_STATUS getEnum(int value) {
+        for (EM_THINGS_CURRENTSTATUSGET_STATUS e : EM_THINGS_CURRENTSTATUSGET_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_CURRENTSTATUSGET_STATUS.EM_THINGS_CURRENTSTATUSGET_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java
new file mode 100644
index 0000000..cd967bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_RULECONTENT_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 场景规则类型
+ * @date 2022/04/20 10:50:21
+ */
+public enum EM_THINGS_RULECONTENT_TYPE {
+    /**
+     * 未知
+     */
+    EM_THINGS_RULECONTENT_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * IFTTT类型
+     */
+    EM_THINGS_RULECONTENT_TYPE_IFTTT(1, "IFTTT类型");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_RULECONTENT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_RULECONTENT_TYPE enumType : EM_THINGS_RULECONTENT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_RULECONTENT_TYPE enumType : EM_THINGS_RULECONTENT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_RULECONTENT_TYPE getEnum(int value) {
+        for (EM_THINGS_RULECONTENT_TYPE e : EM_THINGS_RULECONTENT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_RULECONTENT_TYPE.EM_THINGS_RULECONTENT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java
new file mode 100644
index 0000000..e6ffabc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_SERVICE_TYPE.java
@@ -0,0 +1,118 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 物模型服务类型
+ * @date 2022/04/20 10:16:57
+ */
+public enum EM_THINGS_SERVICE_TYPE {
+    /**
+     * 阀门控制,入参:NET_IN_THINGS_SERVICE_VALVECONTROL,出参:NET_OUT_THINGS_SERVICE_VALVECONTROL
+     */
+    EM_THINGS_SERVICE_TYPE_VALVECONTROL(0, "阀门控制,入参:NET_IN_THINGS_SERVICE_VALVECONTROL,出参:NET_OUT_THINGS_SERVICE_VALVECONTROL"),
+    /**
+     * 电量清零,入参:NET_IN_THINGS_SERVICE_CHARGECLEAR,出参:NET_OUT_THINGS_SERVICE_CHARGECLEAR
+     */
+    EM_THINGS_SERVICE_TYPE_CHARGECLEAR(1, "电量清零,入参:NET_IN_THINGS_SERVICE_CHARGECLEAR,出参:NET_OUT_THINGS_SERVICE_CHARGECLEAR"),
+    /**
+     * 漏电自检,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOST,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOST
+     */
+    EM_THINGS_SERVICE_TYPE_LEAKCURTPOST(2, "漏电自检,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOST,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOST"),
+    /**
+     * 漏电自检异步,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC
+     */
+    EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC(3, "漏电自检异步,入参:NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC,出参:NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC"),
+    /**
+     * 空开红蓝灯闪烁(寻找空开),入参:NET_IN_THINGS_SERVICE_AIRSWITHFIND,出参:NET_OUT_THINGS_SERVICE_AIRSWITHFIND
+     */
+    EM_THINGS_SERVICE_TYPE_AIRSWITHFIND(4, "空开红蓝灯闪烁(寻找空开),入参:NET_IN_THINGS_SERVICE_AIRSWITHFIND,出参:NET_OUT_THINGS_SERVICE_AIRSWITHFIND"),
+    /**
+     * 空开恢复出厂设置,入参:NET_IN_THINGS_SERVICE_AIRSWITHRESET,出参:NET_OUT_THINGS_SERVICE_AIRSWITHRESET
+     */
+    EM_THINGS_SERVICE_TYPE_AIRSWITHRESET(5, "空开恢复出厂设置,入参:NET_IN_THINGS_SERVICE_AIRSWITHRESET,出参:NET_OUT_THINGS_SERVICE_AIRSWITHRESET"),
+    /**
+     * 添加联动规则,入参:NET_IN_THINGS_SERVICE_ADDRULE,出参:NET_OUT_THINGS_SERVICE_ADDRULE
+     */
+    EM_THINGS_SERVICE_TYPE_ADDRULE(6, "添加联动规则,入参:NET_IN_THINGS_SERVICE_ADDRULE,出参:NET_OUT_THINGS_SERVICE_ADDRULE"),
+    /**
+     * 删除联动规则,入参:NET_IN_THINGS_SERVICE_DELRULE,出参:NET_OUT_THINGS_SERVICE_DELRULE
+     */
+    EM_THINGS_SERVICE_TYPE_DELRULE(7, "删除联动规则,入参:NET_IN_THINGS_SERVICE_DELRULE,出参:NET_OUT_THINGS_SERVICE_DELRULE"),
+    /**
+     * 修改联动规则,入参:NET_IN_THINGS_SERVICE_MODRULE,出参:NET_OUT_THINGS_SERVICE_MODRULE
+     */
+    EM_THINGS_SERVICE_TYPE_MODRULE(8, "修改联动规则,入参:NET_IN_THINGS_SERVICE_MODRULE,出参:NET_OUT_THINGS_SERVICE_MODRULE"),
+    /**
+     * 查询联动规则,入参:NET_IN_THINGS_SERVICE_QUERULE,出参:NET_OUT_THINGS_SERVICE_QUERULE
+     */
+    EM_THINGS_SERVICE_TYPE_QUERULE(9, "查询联动规则,入参:NET_IN_THINGS_SERVICE_QUERULE,出参:NET_OUT_THINGS_SERVICE_QUERULE"),
+    /**
+     * 使能联动规则,入参:NET_IN_THINGS_SERVICE_ENABLE,出参:NET_OUT_THINGS_SERVICE_ENABLE
+     */
+    EM_THINGS_SERVICE_TYPE_ENABLERULE(10, "使能联动规则,入参:NET_IN_THINGS_SERVICE_ENABLE,出参:NET_OUT_THINGS_SERVICE_ENABLE"),
+    /**
+     * 添加设备,入参:NET_IN_THINGS_SERVICE_ADDDEVICE,出参:NET_OUT_THINGS_SERVICE_ADDDEVICE
+     */
+    EM_THINGS_SERVICE_TYPE_ADDDEVICE(11, "添加设备,入参:NET_IN_THINGS_SERVICE_ADDDEVICE,出参:NET_OUT_THINGS_SERVICE_ADDDEVICE"),
+    /**
+     * 删除子设备,入参:NET_IN_THINGS_SERVICE_DELDEVICE,出参:NET_OUT_THINGS_SERVICE_DELDEVICE
+     */
+    EM_THINGS_SERVICE_TYPE_DELDEVICE(12, "删除子设备,入参:NET_IN_THINGS_SERVICE_DELDEVICE,出参:NET_OUT_THINGS_SERVICE_DELDEVICE"),
+    /**
+     * 子设备替换,入参:NET_IN_THINGS_SERVICE_DEVREPLACE,出参:NET_OUT_THINGS_SERVICE_DEVREPLACE
+     */
+    EM_THINGS_SERVICE_TYPE_DEVREPLACE(13, "子设备替换,入参:NET_IN_THINGS_SERVICE_DEVREPLACE,出参:NET_OUT_THINGS_SERVICE_DEVREPLACE"),
+    /**
+     * 离线日志清除,入参:NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN,出参:NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN
+     */
+    EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN(14, "离线日志清除,入参:NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN,出参:NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN"),
+    /**
+     * 获取所有空开当前报警状态,入参:NET_IN_THINGS_SERVICE_CURRENTSTATUSGET,出参:NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET
+     */
+    EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET(15, "获取所有空开当前报警状态,入参:NET_IN_THINGS_SERVICE_CURRENTSTATUSGET,出参:NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_SERVICE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_SERVICE_TYPE enumType : EM_THINGS_SERVICE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_SERVICE_TYPE enumType : EM_THINGS_SERVICE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_SERVICE_TYPE getEnum(int value) {
+        for (EM_THINGS_SERVICE_TYPE e : EM_THINGS_SERVICE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_SERVICE_TYPE.EM_THINGS_SERVICE_TYPE_VALVECONTROL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java
new file mode 100644
index 0000000..65526eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TIMER_CORN_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 定时触发类型内容表达式类型
+ * @date 2022/04/20 11:28:15
+ */
+public enum EM_THINGS_TRIGGER_TIMER_CORN_TYPE {
+    /**
+     * 未知
+     */
+    EM_THINGS_TRIGGER_TIMER_CORN_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * quartz_cron  表达式结构:$second $minute $hour $dayofmonth $month $dayofweek $year
+     */
+    EM_THINGS_TRIGGER_TIMER_CORN_TYPE_QUARTZCORN(1, " quartz_cron  表达式结构:$second $minute $hour $dayofmonth $month $dayofweek $year"),
+    /**
+     * linux  表达式结构:$minute $hour $day of month $month $dayofweek
+     */
+    EM_THINGS_TRIGGER_TIMER_CORN_TYPE_LINUX(2, " linux  表达式结构:$minute $hour $day of month $month $dayofweek");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_TRIGGER_TIMER_CORN_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_TRIGGER_TIMER_CORN_TYPE enumType : EM_THINGS_TRIGGER_TIMER_CORN_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_TRIGGER_TIMER_CORN_TYPE enumType : EM_THINGS_TRIGGER_TIMER_CORN_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_TRIGGER_TIMER_CORN_TYPE getEnum(int value) {
+        for (EM_THINGS_TRIGGER_TIMER_CORN_TYPE e : EM_THINGS_TRIGGER_TIMER_CORN_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_TRIGGER_TIMER_CORN_TYPE.EM_THINGS_TRIGGER_TIMER_CORN_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java
new file mode 100644
index 0000000..51a4fdf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_THINGS_TRIGGER_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 场景的触发类型
+ * @date 2022/04/20 11:28:13
+ */
+public enum EM_THINGS_TRIGGER_TYPE {
+    /**
+     * 未知
+     */
+    EM_THINGS_TRIGGER_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * trigger/timer 	定时触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_TIMER
+     */
+    EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER(1, " trigger/timer 	定时触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_TIMER"),
+    /**
+     * trigger/device/property  设备属性触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_PROPERTY
+     */
+    EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY(2, " trigger/device/property  设备属性触发,对应结构体NET_THINGS_RULECONTENT_TRIGGER_PROPERTY");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_THINGS_TRIGGER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_THINGS_TRIGGER_TYPE enumType : EM_THINGS_TRIGGER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_THINGS_TRIGGER_TYPE enumType : EM_THINGS_TRIGGER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_THINGS_TRIGGER_TYPE getEnum(int value) {
+        for (EM_THINGS_TRIGGER_TYPE e : EM_THINGS_TRIGGER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_THINGS_TRIGGER_TYPE.EM_THINGS_TRIGGER_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java
new file mode 100644
index 0000000..7ab3d6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TITLE_TEXT_ALIGNTYPE.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 标题文本对齐方式
+ * @date 2022/05/23 08:51:37
+ */
+public enum EM_TITLE_TEXT_ALIGNTYPE {
+	/**
+	 * 无效的对齐方式
+	 */
+	EM_TEXT_ALIGNTYPE_INVALID(0, "无效的对齐方式"),
+	/**
+	 * 左对齐
+	 */
+	EM_TEXT_ALIGNTYPE_LEFT(1, "左对齐"),
+	/**
+	 * X坐标中对齐
+	 */
+	EM_TEXT_ALIGNTYPE_XCENTER(2, "X坐标中对齐"),
+	/**
+	 * Y坐标中对齐
+	 */
+	EM_TEXT_ALIGNTYPE_YCENTER(3, "Y坐标中对齐"),
+	/**
+	 * 居中
+	 */
+	EM_TEXT_ALIGNTYPE_CENTER(4, "居中"),
+	/**
+	 * 右对齐
+	 */
+	EM_TEXT_ALIGNTYPE_RIGHT(5, "右对齐"),
+	/**
+	 * 按照顶部对齐
+	 */
+	EM_TEXT_ALIGNTYPE_TOP(6, "按照顶部对齐"),
+	/**
+	 * 按照底部对齐
+	 */
+	EM_TEXT_ALIGNTYPE_BOTTOM(7, "按照底部对齐"),
+	/**
+	 * 按照左上角对齐
+	 */
+	EM_TEXT_ALIGNTYPE_LEFTTOP(8, "按照左上角对齐"),
+	/**
+	 * 换行对齐
+	 */
+	EM_TEXT_ALIGNTYPE_CHANGELINE(9, "换行对齐");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_TITLE_TEXT_ALIGNTYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TITLE_TEXT_ALIGNTYPE enumType : EM_TITLE_TEXT_ALIGNTYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TITLE_TEXT_ALIGNTYPE enumType : EM_TITLE_TEXT_ALIGNTYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java
new file mode 100644
index 0000000..1ab6506
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TOLLS_VEHICLE_TYPE.java
@@ -0,0 +1,122 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 260611
+ * @description 收费公路车辆通行费车型分类
+ * @date 2022/07/20 16:46:40
+ */
+public enum EM_TOLLS_VEHICLE_TYPE {
+    /**
+     * 未知
+     */
+    EM_TOLLS_VEHICLE_TYPE_UNKNOWN(0, "未知"),
+    /**
+     * 一型客车
+     */
+    EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR1(1, "一型客车"),
+    /**
+     * 二型客车
+     */
+    EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR2(2, "二型客车"),
+    /**
+     * 三型客车
+     */
+    EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR3(3, "三型客车"),
+    /**
+     * 四型客车
+     */
+    EM_TOLLS_VEHICLE_TYPE_PASSENGER_CAR4(4, "四型客车"),
+    /**
+     * 一型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK1(11, "一型货车"),
+    /**
+     * 二型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK2(12, "二型货车"),
+    /**
+     * 三型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK3(13, "三型货车"),
+    /**
+     * 四型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK4(14, "四型货车"),
+    /**
+     * 五型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK5(15, "五型货车"),
+    /**
+     * 六型货车
+     */
+    EM_TOLLS_VEHICLE_TYPE_TRUCK6(16, "六型货车"),
+    /**
+     * 一型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE1(21, "一型专项作业车"),
+    /**
+     * 二型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE2(22, "二型专项作业车"),
+    /**
+     * 三型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE3(23, "三型专项作业车"),
+    /**
+     * 四型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE4(24, "四型专项作业车"),
+    /**
+     * 五型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE5(25, "五型专项作业车"),
+    /**
+     * 六型专项作业车
+     */
+    EM_TOLLS_VEHICLE_TYPE_OPERATION_VEHICLE6(26, "六型专项作业车");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_TOLLS_VEHICLE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TOLLS_VEHICLE_TYPE enumType : EM_TOLLS_VEHICLE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TOLLS_VEHICLE_TYPE enumType : EM_TOLLS_VEHICLE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_TOLLS_VEHICLE_TYPE getEnum(int value) {
+        for (EM_TOLLS_VEHICLE_TYPE e : EM_TOLLS_VEHICLE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TOLLS_VEHICLE_TYPE.EM_TOLLS_VEHICLE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRACK_OBJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRACK_OBJECT_TYPE.java
new file mode 100644
index 0000000..e158628
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRACK_OBJECT_TYPE.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  目标类型 
+* @origin autoTool
+* @date 2023/09/22 13:56:24
+*/
+public enum EM_TRACK_OBJECT_TYPE {
+	/**
+     * 未知
+     */
+	EM_TRACK_OBJECT_TYPE_UNKNOWN(-1,"未知"),
+	/**
+     * 目标
+     */
+	EM_TRACK_OBJECT_TYPE_FACE(0,"目标"),
+	/**
+     * 人体
+     */
+	EM_TRACK_OBJECT_TYPE_HUMAN(1,"人体"),
+	/**
+     * 机动车
+     */
+	EM_TRACK_OBJECT_TYPE_VECHILE(2,"机动车"),
+	/**
+     * 非机动车
+     */
+	EM_TRACK_OBJECT_TYPE_NOMOTOR(3,"非机动车");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_TRACK_OBJECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_TRACK_OBJECT_TYPE enumType : EM_TRACK_OBJECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_TRACK_OBJECT_TYPE enumType : EM_TRACK_OBJECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_TRACK_OBJECT_TYPE getEnum(int value) {
+        for (EM_TRACK_OBJECT_TYPE e : EM_TRACK_OBJECT_TYPE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_TRACK_OBJECT_TYPE.EM_TRACK_OBJECT_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java
new file mode 100644
index 0000000..9fcc641
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_CAR_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车辆类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_TRAFFICCAR_CAR_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_TRAFFICCAR_CAR_TYPE_UNKNOWN = 0;
+    /**
+     *  允许名单车辆
+     */
+    public static final int					EM_TRAFFICCAR_CAR_TYPE_TRUST_CAR = 1;
+    /**
+     *  禁止名单车辆
+     */
+    public static final int					EM_TRAFFICCAR_CAR_TYPE_SUSPICIOUS_CAR = 2;
+    /**
+     *  非允许名单且非禁止名单车辆
+     */
+    public static final int					EM_TRAFFICCAR_CAR_TYPE_NORMAL_CAR = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java
new file mode 100644
index 0000000..4ab8de3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_LANE_TYPE.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车道类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_TRAFFICCAR_LANE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_UNKNOWN = 0;
+    /**
+     *  普通车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_NORMAL = 1;
+    /**
+     *  非机动车车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_NONMOTOR = 2;
+    /**
+     *  小型车车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_LIGHT_DUTY = 3;
+    /**
+     *  公交车车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_BUS = 4;
+    /**
+     *  应急车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_EMERGENCY = 5;
+    /**
+     *  危险品车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_DANGEROUS = 6;
+    /**
+     *  潮汐车道
+     */
+    public static final int					EM_TRAFFICCAR_LANE_TYPE_TIDAL = 7;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java
new file mode 100644
index 0000000..3eee6e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICCAR_MOVE_DIRECTION.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 交通车辆行驶方向类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_TRAFFICCAR_MOVE_DIRECTION extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知的
+     */
+    public static final int					EM_TRAFFICCAR_MOVE_DIRECTION_UNKNOWN = 0;
+    /**
+     *  直行
+     */
+    public static final int					EM_TRAFFICCAR_MOVE_DIRECTION_STRAIGHT = 1;
+    /**
+     *  左转
+     */
+    public static final int					EM_TRAFFICCAR_MOVE_DIRECTION_TURN_LEFT = 2;
+    /**
+     *  右转
+     */
+    public static final int					EM_TRAFFICCAR_MOVE_DIRECTION_TURN_RIGHT = 3;
+    /**
+     *  掉头
+     */
+    public static final int					EM_TRAFFICCAR_MOVE_DIRECTION_TURN_AROUND = 4;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java
new file mode 100644
index 0000000..5ed08c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFICSTROBE_STATUS.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 道闸栏状态
+ * @date 2020/12/15
+ */
+public enum EM_TRAFFICSTROBE_STATUS {
+
+	// 未知
+	NET_TRAFFICSTROBE_STATUS_UNKNOWN(0, "未知"),
+	// 道闸栏关闭
+	NET_TRAFFICSTROBE_STATUS_CLOSE_COMPLETE(1, "道闸栏关闭"),
+	// 道闸栏打开
+	NET_TRAFFICSTROBE_STATUS_OPEN_COMPLETE(2, "道闸栏打开"),
+	// 道闸栏未完全关闭
+	NET_TRAFFICSTROBE_STATUS_NOT_CLOSE_COMPLETE(3, "道闸栏未完全关闭"),
+	// 道闸栏未完全打开
+	NET_TRAFFICSTROBE_STATUS_NOT_OPEN_COMPLETE(4, "道闸栏未完全打开"),
+	// 道闸停止
+	NET_TRAFFICSTROBE_STATUS_NOT_STROBE_STOP(5, "道闸停止");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFICSTROBE_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFICSTROBE_STATUS enumType : EM_TRAFFICSTROBE_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_EVENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_EVENT.java
new file mode 100644
index 0000000..15a1929
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_EVENT.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 设备状态
+ * @date 2021/09/02
+ */
+public enum EM_TRAFFIC_EVENT {
+	// 未知
+	EM_TRAFFIC_EVENT_UNKNOWN(0, "未知"),
+	// 交通事故
+	EM_TRAFFIC_EVENT_ACCIDENT(1, "交通事故"),
+	// 道路障碍
+	EM_TRAFFIC_EVENT_ROAD_BARRIERS(2, "道路障碍"),
+	// 路面积水
+	EM_TRAFFIC_EVENT_ROAD_AREAWATER(3, "路面积水"),
+	// 路面湿滑
+	EM_TRAFFIC_EVENT_ROAD_SLIPPERY(4, "路面湿滑"),
+	// 路面结冰
+	EM_TRAFFIC_EVENT_ROAD_ICY(5, "路面结冰"),
+	// 道路施工
+	EM_TRAFFIC_EVENT_ROAD_CONSTRUCTION(6, "道路施工");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_EVENT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_EVENT enumType : EM_TRAFFIC_EVENT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_EVENT enumType : EM_TRAFFIC_EVENT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java
new file mode 100644
index 0000000..10d6b0e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_FLOW_STATUS.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 流量状态
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 11:42
+ */
+public enum EM_TRAFFIC_FLOW_STATUS {
+
+    /**
+     * 未知
+     */
+    EM_TRAFFIC_FLOW_STATUS_UNKNOWN(0, "未知"),
+    /**
+     * 交通拥堵
+     */
+    EM_TRAFFIC_FLOW_STATUS_CONGESTION(1, "交通拥堵"),
+    /**
+     * 交通畅通
+     */
+    EM_TRAFFIC_FLOW_STATUS_SMOOTH(2, "交通畅通");
+
+    private final int value;
+    private final String note;
+
+    EM_TRAFFIC_FLOW_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TRAFFIC_FLOW_STATUS enumType : EM_TRAFFIC_FLOW_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TRAFFIC_FLOW_STATUS enumType : EM_TRAFFIC_FLOW_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_TRAFFIC_FLOW_STATUS getEnum(int value) {
+        for (EM_TRAFFIC_FLOW_STATUS e : EM_TRAFFIC_FLOW_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TRAFFIC_FLOW_STATUS.EM_TRAFFIC_FLOW_STATUS_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java
new file mode 100644
index 0000000..b023f0d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_LIGHT_DETECT_STATE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 红绿灯状态
+ * @date 2020/11/07
+ */
+public enum EM_TRAFFIC_LIGHT_DETECT_STATE {
+	// 未知
+	EM_TRAFFIC_DETECT_STATE_UNKNOWN(-1, "未知"),
+	// 红灯
+	EM_TRAFFIC_DETECT_STATE_RED(0, "红灯"),
+	// 绿灯
+	EM_TRAFFIC_DETECT_STATE_GREEN(1, "绿灯");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_LIGHT_DETECT_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_LIGHT_DETECT_STATE enumType : EM_TRAFFIC_LIGHT_DETECT_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_LIGHT_DETECT_STATE enumType : EM_TRAFFIC_LIGHT_DETECT_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java
new file mode 100644
index 0000000..06ae0a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通外接设备工作状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_DEVICE_WORK_STATE {
+	// 未知
+	EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_UNKNOWN(-1, "未知"),
+	// 故障
+	EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_FAULT(0, "故障"),
+	// 正常
+	EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_NORMAL(1, "正常"),
+	// 关闭
+	EM_TRAFFIC_SNAP_DEVICE_WORK_STATE_CLOSE(2, "关闭");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_DEVICE_WORK_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_DEVICE_WORK_STATE enumType : EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_DEVICE_WORK_STATE enumType : EM_TRAFFIC_SNAP_DEVICE_WORK_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java
new file mode 100644
index 0000000..419539f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通地感输入状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE {
+	// 未知
+	EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_UNKNOWN(-1, "未知"),
+	// 无车
+	EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_NO_CAR(0, "无车"),
+	// 有车
+	EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_CAR(1, "有车"),
+	// 不支持
+	EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE_NO_SUPPORT(255, "不支持");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE enumType : EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE
+				.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE enumType : EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE
+				.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java
new file mode 100644
index 0000000..d534589
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通雷达检测线圈匹配状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE {
+	// 未知
+	EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE_UNKNOWN(-1, "未知"),
+	// 不匹配
+	EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE_MISMATCH(0, "不匹配"),
+	// 匹配
+	EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE_MATCH(1, "匹配"),
+	// 不检测
+	EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE_NO_DETECT(2, "不检测");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE enumType : EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE enumType : EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java
new file mode 100644
index 0000000..a6dbff5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通雷达检测汽车状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE {
+	// 未知
+	EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE_UNKNOWN(-1, "未知"),
+	// 无车
+	EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE_NO_CAR(0, "无车"),
+	// 有车
+	EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE_CAR(1, "有车");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE enumType : EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE enumType : EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java
new file mode 100644
index 0000000..dc54fcb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通道闸上次开关闸原因
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE {
+	// 未知
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_UNKNOWN(0, "未知"),
+	// 遥感器开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_CONTROL_SWITCH_ON(1, "遥感器开闸"),
+	// 遥感器关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_CONTROL_SWITCH_OFF(2, "遥感器关闸"),
+	// 地感LOOP1自动触发开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP1_OPEN(3, "地感LOOP1自动触发开闸"),
+	// 地感LOOP1自动触发关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP1_CLOSE(4, "地感LOOP1自动触发关闸"),
+	// 地感LOOP2自动触发开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_LOOP_LOOP2_OPEN(5, "地感LOOP2自动触发开闸"),
+	// 外部开关开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_EXTERNAL_SWITCH_OPEN(6, "外部开关开闸"),
+	// 外部开关关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_EXTERNAL_SWITCH_CLOSE(7, "外部开关关闸"),
+	// 内部开关开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INTERNAL_SWITCH_OPEN(8, "内部开关开闸"),
+	// 内部开关关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INTERNAL_SWITCH_CLOSE(9, "内部开关关闸"),
+	// 自动延时关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_AUTOMATIC_DELAY_CLOSE(10, "自动延时关闸"),
+	// 遇阻反弹开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_OBSTACLE_REBOUND_TO_OPEN(11, "遇阻反弹开闸"),
+	// 红外防砸开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INFRARED_ANTI_SMASHING_OPEN(12, "红外防砸开闸"),
+	// 红外防砸关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_INFRARED_ANTI_SMASHING_CLOSE(13, "红外防砸关闸"),
+	// 压力波开闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_PRESSURE_WAVE_OPEN(14, "压力波开闸"),
+	// 压力波关闸
+	EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE_PRESSURE_WAVE_CLOSE(15, "压力波关闸");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java
new file mode 100644
index 0000000..80b1b1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.java
@@ -0,0 +1,107 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通道闸故障代码
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE {
+	// 未知
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_UNKNOWN(0, "未知"),
+	// 编码器信号异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ENCODER_SIGNAL_EXCEPTION(1, "编码器信号异常"),
+	// 电机运行超时
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_RUNNING_OVERTIME(2, "电机运行超时"),
+	// 电机堵转
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_STALLING(3, "电机堵转"),
+	// 红外线被物体挡住
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INFRARED_IS_BLOCKED_BY_OBJECTS(4, "红外线被物体挡住"),
+	// 压力波被物体阻挡
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_THE_PRESSURE_WAVE_IS_BLOCKED_BY_AN_OBJECT(5, "压力波被物体阻挡"),
+	// 逆变单元保护
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INVERTER_UNIT_PROTECTION(6, "逆变单元保护"),
+	// 加速过流
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ACCELERATED_OVERCURRENT(7, "加速过流"),
+	// 减速过流
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_DECELERATION_OVER_CURRENT(8, "减速过流"),
+	// 恒速过流
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CONSTANT_SPEED_OVERCURRENT(9, "恒速过流"),
+	// 加速过压
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_ACCELERATED_OVERVOLTAGE(10, "加速过压"),
+	// 减速过压
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_DECELERATION_OVERPRESSURE(11, "减速过压"),
+	// 恒速过压
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CONSTANT_SPEED_OVERVOLTAGE(12, "恒速过压"),
+	// 制动电源异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_BRAKING_POWER_SUPPLY_EXCEPTION(13, "制动电源异常"),
+	// 欠压故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_UNDER_VOLTAGE(14, "欠压故障"),
+	// 变频器过载
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_FREQUENCY_CONVERTER_OVERLOAD(15, "变频器过载"),
+	// 电机过载
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_OVERLOAD(16, "电机过载"),
+	// 输入缺相
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INPUT_PHASE_LOSS(17, "输入缺相"),
+	// 输出缺相
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_OUTPUT_PHASE_LOSS(18, "输出缺相"),
+	// 模块过热
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MODULE_OVERHEAT(19, "模块过热"),
+	// 外部故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_EXTERNAL_FAULT(20, "外部故障"),
+	// 继电器异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_RELAY_EXCEPTION(21, "继电器异常"),
+	// 电流检测异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_CURRENT_DETECTION_EXCEPTION(22, "电流检测异常"),
+	// 电机调谐异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_TUNING_EXCEPTION(23, "电机调谐异常"),
+	// EEPROM 读写异常
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_EEPROM_READ_WRITE_EXCEPTION(24, "EEPROM 读写异常"),
+	// 变频器硬件故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INVERTER_HARDWARE_FAILURE(25, "变频器硬件故障"),
+	// 电机对地短路
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_MOTOR_SHORT_CIRCUIT_TO_GROUND(26, "电机对地短路"),
+	// 运行超时
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_RUN_TIMEOUT(27, "运行超时"),
+	// 开闸运行时遇阻
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_THE_GATE_IS_BLOCKED(28, "开闸运行时遇阻"),
+	// 传感器故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_SENSOR(29, "传感器故障"),
+	// 限位故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_LIMIT(30, "限位故障"),
+	// 内部通讯故障
+	EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE_INTERNAL_COMMUNICATION_FAULT(31, "内部通讯故障");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java
new file mode 100644
index 0000000..5620a00
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通道闸输入状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE {
+	// 未知
+	EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_UNKNOWN(-1, "未知"),
+	// 断开
+	EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_TO_BREAK_OFF(0, "断开"),
+	// 闭合
+	EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_CLOSE(1, "闭合"),
+	// 不支持
+	EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_NO_SUPPORT(255, "不支持");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java
new file mode 100644
index 0000000..6177a0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通栏杆状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE {
+	// 未知
+	TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_UNKNOWN(-1, "未知"),
+	// 正常
+	TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_NORMAL(0, "正常"),
+	// 脱落
+	TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE_FALL_OFF(1, "脱落"),
+	// 不支持
+	EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE_NO_SUPPORT(255, "不支持");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE enumType : EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java
new file mode 100644
index 0000000..bde84d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAFFIC_SNAP_STROBE_RUN_STATE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能交通道闸运行状态
+ * @date 2020/12/14
+ */
+public enum EM_TRAFFIC_SNAP_STROBE_RUN_STATE {
+	// 未知
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_UNKNOWN(-1, "未知"),
+	// 关
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_CLOSE(0, "关"),
+	// 开
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_OPEN(1, "开"),
+	// 正在开
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_OPENING(2, "正在开"),
+	// 正在关
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_CLOSING(3, "正在关"),
+	// 停
+	EM_TRAFFIC_SNAP_STROBE_RUN_STATE_STOP(4, "停");
+
+	private int value;
+	private String note;
+
+	private EM_TRAFFIC_SNAP_STROBE_RUN_STATE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAFFIC_SNAP_STROBE_RUN_STATE enumType : EM_TRAFFIC_SNAP_STROBE_RUN_STATE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAFFIC_SNAP_STROBE_RUN_STATE enumType : EM_TRAFFIC_SNAP_STROBE_RUN_STATE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java
new file mode 100644
index 0000000..842f54c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_MODE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+子连接连接方式
+*/
+public enum EM_TRANSMIT_PROXY_MODE {
+/**
+/< 本地代理
+*/
+EM_TRANSMIT_PROXY_MODE_LOCAL(1,"/< 本地代理"),
+/**
+/< 级联代理
+*/
+EM_TRANSMIT_PROXY_MODE_CASCADE(2,"/< 级联代理");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_TRANSMIT_PROXY_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_TRANSMIT_PROXY_MODE enumType : EM_TRANSMIT_PROXY_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_TRANSMIT_PROXY_MODE enumType : EM_TRANSMIT_PROXY_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return 0;
+    }
+
+public static EM_TRANSMIT_PROXY_MODE getEnum(int value) {
+        for (EM_TRANSMIT_PROXY_MODE e : EM_TRANSMIT_PROXY_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TRANSMIT_PROXY_MODE.EM_TRANSMIT_PROXY_MODE_LOCAL;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java
new file mode 100644
index 0000000..41ad084
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRANSMIT_PROXY_TYPE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+子连接连接方式
+*/
+public enum EM_TRANSMIT_PROXY_TYPE {
+/**
+/< Web代理。由服务端自动获取web端口,客户端不需要关心
+*/
+EM_TRANSMIT_PROXY_TYPE_WEB(1,"/< Web代理。由服务端自动获取web端口,客户端不需要关心"),
+/**
+/< 通用端口代理。要求客户端知道服务的端口
+*/
+EM_TRANSMIT_PROXY_TYPE_GENERAL(2,"/< 通用端口代理。要求客户端知道服务的端口");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_TRANSMIT_PROXY_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_TRANSMIT_PROXY_TYPE enumType : EM_TRANSMIT_PROXY_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_TRANSMIT_PROXY_TYPE enumType : EM_TRANSMIT_PROXY_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return 0;
+    }
+
+public static EM_TRANSMIT_PROXY_TYPE getEnum(int value) {
+        for (EM_TRANSMIT_PROXY_TYPE e : EM_TRANSMIT_PROXY_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TRANSMIT_PROXY_TYPE.EM_TRANSMIT_PROXY_TYPE_WEB;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java
new file mode 100644
index 0000000..a8437c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVELCODE_COLOR_STATE.java
@@ -0,0 +1,9 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_TRAVELCODE_COLOR_STATE {
+    EM_TRAVELCODE_COLOR_STATE_UNKNOWN,                  //未知
+    EM_TRAVELCODE_COLOR_STATE_RED,                             //红码
+    EM_TRAVELCODE_COLOR_STATE_GREEN,                        //绿码
+    EM_TRAVELCODE_COLOR_STATE_YELLOW,                      //黄码
+    EM_TRAVELCODE_COLOR_STATE_ORANGE,                     //橙码
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java
new file mode 100644
index 0000000..73ce85b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRAVEL_CODE_COLOR.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 行程码状态
+ * @date 2021/08/15
+ */
+public enum EM_TRAVEL_CODE_COLOR {
+	// 未知
+	EM_TRAVEL_CODE_COLOR_UNKNOWN(0, "未知"),
+
+	// 红
+	EM_TRAVEL_CODE_COLOR_RED(1, "红"),
+
+	// 绿
+	EM_TRAVEL_CODE_COLOR_GREEN(2, "绿"),
+
+	// 黄
+	EM_TRAVEL_CODE_COLOR_YELLOW(3, "黄"),
+	// 橙
+	EM_TRAVEL_CODE_COLOR_ORANGE(4, "橙");
+
+	private int value;
+	private String note;
+
+	private EM_TRAVEL_CODE_COLOR(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_TRAVEL_CODE_COLOR enumType : EM_TRAVEL_CODE_COLOR.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_TRAVEL_CODE_COLOR enumType : EM_TRAVEL_CODE_COLOR.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java
new file mode 100644
index 0000000..693efa9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_SOURCE.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 红绿灯触发源
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/29 16:43
+ */
+public enum EM_TRFAFFIC_LIGHT_SOURCE {
+
+    /**
+     * 未知
+     */
+    EM_TRFAFFIC_LIGHT_SOURCE_UNKNOWN(0, "未知"),
+    /**
+     * 信号检测器
+     */
+    EM_TRFAFFIC_LIGHT_SOURCE_SIGNAL(1, "信号检测器"),
+    /**
+     * DSP(算法检测)
+     */
+    EM_TRFAFFIC_LIGHT_SOURCE_DSP(2, "DSP(算法检测)"),
+    /**
+     * 网络信号检测器
+     */
+    EM_TRFAFFIC_LIGHT_SOURCE_NET_SIGNAL(3, "网络信号检测器");
+
+    private int value;
+    private String note;
+
+    EM_TRFAFFIC_LIGHT_SOURCE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TRFAFFIC_LIGHT_SOURCE enumType : EM_TRFAFFIC_LIGHT_SOURCE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TRFAFFIC_LIGHT_SOURCE enumType : EM_TRFAFFIC_LIGHT_SOURCE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java
new file mode 100644
index 0000000..68303b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRFAFFIC_LIGHT_TYPE.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 交通灯类型
+ * @author : 47040
+ * @since : Created in 2020/8/29 16:49
+ */
+public enum EM_TRFAFFIC_LIGHT_TYPE {
+    /**
+     * 未知
+     */
+    EM_TRFAFFIC_LIGHT_TYPE_UNKNOWN(0,"未知"),
+    /**
+     * 红灯
+     */
+    EM_TRFAFFIC_LIGHT_TYPE_RED(1,"红灯"),
+    /**
+     * 黄灯
+     */
+    EM_TRFAFFIC_LIGHT_TYPE_YELLOW(2,"黄灯"),
+    /**
+     * 绿灯
+     */
+    EM_TRFAFFIC_LIGHT_TYPE_GREEN(3,"绿灯");
+
+    private int value;
+    private String note;
+
+    EM_TRFAFFIC_LIGHT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TRFAFFIC_LIGHT_TYPE enumType : EM_TRFAFFIC_LIGHT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TRFAFFIC_LIGHT_TYPE enumType : EM_TRFAFFIC_LIGHT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java
new file mode 100644
index 0000000..b70b734
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_OCCUR_TYPE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  触发时机类型 
+* @date 2022/06/07 09:46:00
+*/
+public enum EM_TRIGGER_OCCUR_TYPE {
+/**
+未知
+*/
+EM_TRIGGER_OCCUR_TYPE_UNKNOWN(-1,"未知"),
+/**
+进入
+*/
+EM_TRIGGER_OCCUR_TYPE_ENTER(0,"进入"),
+/**
+离开
+*/
+EM_TRIGGER_OCCUR_TYPE_LEAVE(1,"离开");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_TRIGGER_OCCUR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_TRIGGER_OCCUR_TYPE enumType : EM_TRIGGER_OCCUR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_TRIGGER_OCCUR_TYPE enumType : EM_TRIGGER_OCCUR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_TRIGGER_OCCUR_TYPE getEnum(int value) {
+        for (EM_TRIGGER_OCCUR_TYPE e : EM_TRIGGER_OCCUR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_TRIGGER_OCCUR_TYPE.EM_TRIGGER_OCCUR_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_TYPE.java
new file mode 100644
index 0000000..d195b26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TRIGGER_TYPE.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/8/19 10:21
+ */
+public enum EM_TRIGGER_TYPE {
+    /**
+     * 未知类型
+     */
+    EM_TRIGGER_TYPE_UNKNOWN(-1,"未知类型"),
+    /**
+     * 车检器
+     */
+    EM_TRIGGER_TYPE_CAR_INSPECTION_DEV(0,"车检器"),	   // 车检器
+    /**
+     * 雷达
+     */
+    EM_TRIGGER_TYPE_DADAR(1,"雷达"),
+    /**
+     * 视频
+     */
+    EM_TRIGGER_TYPE_VIDEO(2,"视频");
+
+    private int value;
+    private String note;
+
+    private EM_TRIGGER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_TRIGGER_TYPE enumType : EM_TRIGGER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_TRIGGER_TYPE enumType : EM_TRIGGER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote()) ) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TROUSERS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TROUSERS_TYPE.java
new file mode 100644
index 0000000..1b3e624
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_TROUSERS_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 裤子类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class EM_TROUSERS_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_TROUSERS_TYPE_UNKNOWN = 0;
+    /**
+     *  长裤
+     */
+    public static final int					EM_TROUSERS_TYPE_TROUSERS = 1;
+    /**
+     *  短裤
+     */
+    public static final int					EM_TROUSERS_TYPE_SHORTS = 2;
+    /**
+     *  裙子
+     */
+    public static final int					EM_TROUSERS_TYPE_SKIRT = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java
new file mode 100644
index 0000000..e2eb0a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFIED_COLOR_TYPE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/24 14:40
+ */
+public class EM_UNIFIED_COLOR_TYPE {
+    public static final int  EM_UNIFIED_COLOR_TRANSPARENT = -1;				// 透明
+    public static  final  int EM_UNIFIED_COLOR_UNKNOWN=0;						// 未知
+    public static  final int EM_UNIFIED_COLOR_WHITE=1;							// 白色
+    public static final int EM_UNIFIED_COLOR_ORANGE=2;						// 橙色
+    public static final int EM_UNIFIED_COLOR_PINK=3;						// 粉色
+    public  static final int EM_UNIFIED_COLOR_BLACK=4;							// 黑色
+    public static final int  EM_UNIFIED_COLOR_RED=5;							// 红色
+    public static final int EM_UNIFIED_COLOR_YELLOW=6;						// 黄色
+    public static final int  EM_UNIFIED_COLOR_GRAY=7;							// 灰色
+    public static final int EM_UNIFIED_COLOR_BLUE=8;							// 蓝色
+    public static final int EM_UNIFIED_COLOR_GREEN=9;							// 绿色
+    public static final int EM_UNIFIED_COLOR_PURPLE=10;						// 紫色
+    public static final int EM_UNIFIED_COLOR_BROWN=11;							// 棕色
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFORM_STYLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFORM_STYLE.java
new file mode 100644
index 0000000..02e4bbe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UNIFORM_STYLE.java
@@ -0,0 +1,11 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 制服样式
+ * @author 29779
+ *
+ */
+public class EM_UNIFORM_STYLE {
+	public static final int EM_UNIFORM_STYLE_UNKNOWN = 0;						// 未知
+	public static final int EM_UNIFORM_STYLE_POLICE  = 1;						// 警服 
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPDATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPDATE_TYPE.java
new file mode 100644
index 0000000..54a47a1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPDATE_TYPE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 更新类型
+ * @date 2022/05/11 13:27:51
+ */
+public enum EM_UPDATE_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_UPDATE_TYPE_UNKNOWN(-1, "未知"),
+	/**
+	 * 删除区域或车位
+	 */
+	EM_UPDATE_TYPE_DELETE(0, "删除区域或车位"),
+	/**
+	 * 修改区域或车位
+	 */
+	EM_UPDATE_TYPE_MODIFY(1, "修改区域或车位"),
+	/**
+	 * 增加区域或车位
+	 */
+	EM_UPDATE_TYPE_ADD(2, "增加区域或车位");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_UPDATE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_UPDATE_TYPE enumType : EM_UPDATE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_UPDATE_TYPE enumType : EM_UPDATE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_UPDATE_TYPE getEnum(int value) {
+		for (EM_UPDATE_TYPE e : EM_UPDATE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_UPDATE_TYPE.EM_UPDATE_TYPE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPLOAD_FLAG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPLOAD_FLAG.java
new file mode 100644
index 0000000..f668065
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPLOAD_FLAG.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 上传标识
+ * @date 2021/2/22
+ */
+public enum EM_UPLOAD_FLAG {
+  /** 未知 */
+  EM_UPLOAD_FLAG_UNKNOWN,
+  /** 成功 */
+  EM_UPLOAD_FLAG_SUCCEED,
+  /** 失败 */
+  EM_UPLOAD_FLAG_FAILED;
+
+  public static EM_UPLOAD_FLAG getUploadFlag(int flag) {
+    for (EM_UPLOAD_FLAG upload : EM_UPLOAD_FLAG.values()) {
+      if (upload.ordinal() == flag) {
+        return upload;
+      }
+    }
+    return EM_UPLOAD_FLAG_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPPER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPPER_TYPE.java
new file mode 100644
index 0000000..96c0087
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_UPPER_TYPE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  上衣类型
+ * @date 2021/8/24 15:15
+ */
+public enum  EM_UPPER_TYPE {
+
+    EM_UPPER_UNKNOWN,								// 未知
+    EM_UPPER_LONGCOAT,								// 1-长款大衣
+    EM_UPPER_JACKETORJEANS,							// 2-夹克及牛仔服
+    EM_UPPER_TSHIRT,								// 3-T恤
+    EM_UPPER_SPORTSWEAR,							// 4-运动服
+    EM_UPPER_DOWNJACKET,							// 5-羽绒服
+    EM_UPPER_SHIRT,									// 6-衬衫
+    EM_UPPER_DRESS,									// 7-连衣裙
+    EM_UPPER_SUIT,									// 8-西装
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USERMANAGER_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USERMANAGER_IMAGE_TYPE.java
new file mode 100644
index 0000000..82b9e8b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USERMANAGER_IMAGE_TYPE.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  图片类型 
+* @origin autoTool
+* @date 2023/07/28 14:28:56
+*/
+public enum EM_USERMANAGER_IMAGE_TYPE {
+	/**
+     * 未知
+     */
+	EM_USERMANAGER_IMAGE_TYPE_UNKNOWN(-1,"未知"),
+	/**
+     * 本地目标库图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_LOCAL(0,"本地目标库图"),
+	/**
+     * 拍摄场景图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_SCENE(1,"拍摄场景图"),
+	/**
+     * 目标抠图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_FACE(2,"目标抠图"),
+	/**
+     * 红外抓图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_INFRARED(3,"红外抓图"),
+	/**
+     * 陪同人员抓图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_ENTOURAGE(4,"陪同人员抓图"),
+	/**
+     * 热图
+     */
+	EM_USERMANAGER_IMAGE_TYPE_THERMOGRAM(5,"热图");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_USERMANAGER_IMAGE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_USERMANAGER_IMAGE_TYPE enumType : EM_USERMANAGER_IMAGE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_USERMANAGER_IMAGE_TYPE enumType : EM_USERMANAGER_IMAGE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_USERMANAGER_IMAGE_TYPE getEnum(int value) {
+        for (EM_USERMANAGER_IMAGE_TYPE e : EM_USERMANAGER_IMAGE_TYPE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_USERMANAGER_IMAGE_TYPE.EM_USERMANAGER_IMAGE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java
new file mode 100644
index 0000000..a6eb3cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 定期人数清除周期
+ * @date 2022/5/27 9:54
+ */
+public enum  EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD {
+
+    EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_UNKNOWN(0,"未知"),				// 未知
+	EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_HOUR(1,"按小时"),					// 按小时
+    EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_DAILY(2,"按天");					// 按天, 按照每天00点清除
+
+
+
+    private int value;
+    private String note;
+
+     EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD enumType : EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD enumType : EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.values()) {
+            if (givenNote.equals(enumType.getNote()) ) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+    public static EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD getEnum(int value) {
+        for (EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD e : EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD.EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_TYPE.java
new file mode 100644
index 0000000..a089bcd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USER_PASS_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author : 291189
+ * @description : 进出方向
+ * @since : Created in 2022/05/26
+ */
+public enum EM_USER_PASS_TYPE {
+    EM_USER_PASS_TYPE_UNKNOWN(0,"未知"),
+    EM_USER_PASS_TYPE_ENTRY(1,"进门"),                              // 进门
+    EM_USER_PASS_TYPE_EXIT(2,"出门");                               // 出门
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_USER_PASS_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_USER_PASS_TYPE enumType : EM_USER_PASS_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_USER_PASS_TYPE enumType : EM_USER_PASS_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_USER_PASS_TYPE getEnum(int value) {
+        for (EM_USER_PASS_TYPE e : EM_USER_PASS_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_USER_PASS_TYPE.EM_USER_PASS_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java
new file mode 100644
index 0000000..794cf8a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_USE_PROPERTY_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 使用性质
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_USE_PROPERTY_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  非营运
+     */
+    public static final int					EM_USE_PROPERTY_NONOPERATING = 0;
+    /**
+     *  公路客运,旅游客运
+     */
+    public static final int					EM_USE_PROPERTY_HIGWAY = 1;
+    /**
+     *  公交客运
+     */
+    public static final int					EM_USE_PROPERTY_BUS = 2;
+    /**
+     *  出租客运
+     */
+    public static final int					EM_USE_PROPERTY_TAXI = 3;
+    /**
+     *  货运
+     */
+    public static final int					EM_USE_PROPERTY_FREIGHT = 4;
+    /**
+     *  租赁
+     */
+    public static final int					EM_USE_PROPERTY_LEASE = 5;
+    /**
+     *  警用,消防,救护,工程救险
+     */
+    public static final int					EM_USE_PROPERTY_SECURITY = 6;
+    /**
+     *  教练
+     */
+    public static final int					EM_USE_PROPERTY_COACH = 7;
+    /**
+     *  幼儿校车,小学生校车,其他校车
+     */
+    public static final int					EM_USE_PROPERTY_SCHOOLBUS = 8;
+    /**
+     *  危化品运输
+     */
+    public static final int					EM_USE_PROPERTY_FOR_DANGE_VEHICLE = 9;
+    /**
+     *  其他
+     */
+    public static final int					EM_USE_PROPERTY_OTHER = 10;
+    /**
+     *  网约车
+     */
+    public static final int					EM_USE_PROPERTY_ONLINE_CAR_HAILING = 11;
+    /**
+     *  非机动外卖车
+     */
+    public static final int					EM_USE_PROPERTY_NON_MOTORIZED_TAKE_OUT_VEHICLE = 12;
+    /**
+     *  非机动快递车
+     */
+    public static final int					EM_USE_PROPERTY_NON_MOTORIZED_EXPRESS_CAR = 13;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_DOORSTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_DOORSTATE.java
new file mode 100644
index 0000000..aef7e53
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_DOORSTATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  门状态 
+* @date 2022/08/10 11:46:30
+*/
+public enum EM_VAULT_DOORSTATE {
+/**
+未知
+*/
+EM_VAULT_DOORSTATE_UNKNOWN(0,"未知"),
+/**
+关门
+*/
+EM_VAULT_DOORSTATE_ISCLOSED(1,"关门"),
+/**
+开门
+*/
+EM_VAULT_DOORSTATE_ISOPENED(2,"开门");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_VAULT_DOORSTATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_VAULT_DOORSTATE enumType : EM_VAULT_DOORSTATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_VAULT_DOORSTATE enumType : EM_VAULT_DOORSTATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_VAULT_DOORSTATE getEnum(int value) {
+        for (EM_VAULT_DOORSTATE e : EM_VAULT_DOORSTATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VAULT_DOORSTATE.EM_VAULT_DOORSTATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java
new file mode 100644
index 0000000..db113d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VAULT_LOCKSTATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  锁状态 
+* @date 2022/08/10 11:46:30
+*/
+public enum EM_VAULT_LOCKSTATE {
+/**
+未知
+*/
+EM_VAULT_LOCKSTATE_UNKNOWN(0,"未知"),
+/**
+关锁
+*/
+EM_VAULT_LOCKSTATE_ISCLOSED(1,"关锁"),
+/**
+开锁
+*/
+EM_VAULT_LOCKSTATE_ISOPENED(2,"开锁");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_VAULT_LOCKSTATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_VAULT_LOCKSTATE enumType : EM_VAULT_LOCKSTATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_VAULT_LOCKSTATE enumType : EM_VAULT_LOCKSTATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_VAULT_LOCKSTATE getEnum(int value) {
+        for (EM_VAULT_LOCKSTATE e : EM_VAULT_LOCKSTATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VAULT_LOCKSTATE.EM_VAULT_LOCKSTATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java
new file mode 100644
index 0000000..88ee64a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLEINOUT_CAR_TYPE.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 车辆类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 13:50
+ */
+public enum EM_VEHICLEINOUT_CAR_TYPE {
+    /**
+     * 未知类型
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_UNKNOWN(0, "未知类型"),
+    /**
+     * 小型客车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_CAR(1, "小型客车"),
+    /**
+     * 面包车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_VAN(2, "面包车"),
+    /**
+     * 货车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_TRUCK(3, "货车"),
+    /**
+     * 公交车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_BUS(4, "公交车"),
+    /**
+     * 大货车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_LORRY(5, "大货车"),
+    /**
+     * 大车
+     */
+    EM_VEHICLEINOUT_CAR_TYPE_CART(6, "大车");
+
+    private final int value;
+    private final String note;
+
+    EM_VEHICLEINOUT_CAR_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VEHICLEINOUT_CAR_TYPE enumType : EM_VEHICLEINOUT_CAR_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VEHICLEINOUT_CAR_TYPE enumType : EM_VEHICLEINOUT_CAR_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_VEHICLEINOUT_CAR_TYPE getEnum(int value) {
+        for (EM_VEHICLEINOUT_CAR_TYPE e : EM_VEHICLEINOUT_CAR_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VEHICLEINOUT_CAR_TYPE.EM_VEHICLEINOUT_CAR_TYPE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java
new file mode 100644
index 0000000..0c0f8e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_DRIVING_DIRECTION.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 车辆行驶方向(相对车道方向)
+ * @since : Created in 2022/03/01 14:55
+ */
+
+public enum EM_VEHICLE_DRIVING_DIRECTION {
+    /**
+     * 未知
+     */
+    EM_VEHICLE_DRIVING_DIRECTION_UNKNOWN(0, "未知"),
+    /**
+     * 正向
+     */
+    EM_VEHICLE_DRIVING_DIRECTION_OBVERSE(1, "正向"),
+    /**
+     * 反向
+     */
+    EM_VEHICLE_DRIVING_DIRECTION_REVERSE(2, "反向");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_VEHICLE_DRIVING_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VEHICLE_DRIVING_DIRECTION enumType : EM_VEHICLE_DRIVING_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VEHICLE_DRIVING_DIRECTION enumType : EM_VEHICLE_DRIVING_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_VEHICLE_DRIVING_DIRECTION getEnum(int value) {
+        for (EM_VEHICLE_DRIVING_DIRECTION e : EM_VEHICLE_DRIVING_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VEHICLE_DRIVING_DIRECTION.EM_VEHICLE_DRIVING_DIRECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java
new file mode 100644
index 0000000..9dab707
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_HEAD_DIRECTION.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 车头方向
+ * @since : Created in 2022/03/01 14:55
+ */
+
+public enum EM_VEHICLE_HEAD_DIRECTION {
+    /**
+     * 未知
+     */
+    EM_VEHICLE_HEAD_DIRECTION_UNKNOWN(0, "未知"),
+    /**
+     * 左
+     */
+    EM_VEHICLE_HEAD_DIRECTION_LEFT(1, "左"),
+    /**
+     * 中
+     */
+    EM_VEHICLE_HEAD_DIRECTION_MIDDLE(2, "中"),
+    /**
+     * 右
+     */
+    EM_VEHICLE_HEAD_DIRECTION_RIGHT(3, "右");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_VEHICLE_HEAD_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VEHICLE_HEAD_DIRECTION enumType : EM_VEHICLE_HEAD_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VEHICLE_HEAD_DIRECTION enumType : EM_VEHICLE_HEAD_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_VEHICLE_HEAD_DIRECTION getEnum(int value) {
+        for (EM_VEHICLE_HEAD_DIRECTION e : EM_VEHICLE_HEAD_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VEHICLE_HEAD_DIRECTION.EM_VEHICLE_HEAD_DIRECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSITION.java
new file mode 100644
index 0000000..16e1c61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSITION.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 抓拍时车的位置
+ * @since : Created in 2022/03/01 14:55
+ */
+
+public enum EM_VEHICLE_POSITION {
+    /**
+     * 未知
+     */
+    EM_VEHICLE_POSITION_UNKNOWN(0, "未知"),
+    /**
+     * 头
+     */
+    EM_VEHICLE_POSITION_HEAD(1, "头"),
+    /**
+     * 尾
+     */
+    EM_VEHICLE_POSITION_TAIL(2, "尾");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_VEHICLE_POSITION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VEHICLE_POSITION enumType : EM_VEHICLE_POSITION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VEHICLE_POSITION enumType : EM_VEHICLE_POSITION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_VEHICLE_POSITION getEnum(int value) {
+        for (EM_VEHICLE_POSITION e : EM_VEHICLE_POSITION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VEHICLE_POSITION.EM_VEHICLE_POSITION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java
new file mode 100644
index 0000000..4f51c7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_POSTURE_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车辆姿势
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:21
+ */
+public class EM_VEHICLE_POSTURE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_VEHICLE_POSTURE_TYPE_UNKNOWN = 0;
+    /**
+     *  车头
+     */
+    public static final int					EM_VEHICLE_POSTURE_TYPE_VEHICLE_HEAD = 1;
+    /**
+     *  车侧
+     */
+    public static final int					EM_VEHICLE_POSTURE_TYPE_VEHICLE_SIDE = 2;
+    /**
+     *  车尾
+     */
+    public static final int					EM_VEHICLE_POSTURE_TYPE_VEHICLE_TAIL = 3;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java
new file mode 100644
index 0000000..cf3714e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_VEHICLE_REG_DB_OPERATOR_ERRCODE {
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_UNKNWON (0,"未知") ,        	// 未知
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_SUCCESS(1,"成功"),             // 成功
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_DB_ERROR(2,"数据库操作失败"),            // 数据库操作失败
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_NOT_EXIST(3,"车牌不存在"),           // 车牌库不存在
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_EXCEED_MAX_NUM(4,"超出车牌库数量限制");    // 超出车牌库数量限制
+
+    EM_VEHICLE_REG_DB_OPERATOR_ERRCODE(int state, String desc) {
+        this.state = state;
+        this.desc = desc;
+    }
+
+    private int state;
+    private String desc;
+
+    public int getState() {
+        return state;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public EM_VEHICLE_REG_DB_OPERATOR_ERRCODE getTaskState(int state) {
+        for (EM_VEHICLE_REG_DB_OPERATOR_ERRCODE taskState : EM_VEHICLE_REG_DB_OPERATOR_ERRCODE.values()) {
+            if (taskState.state == state) {
+                return taskState;
+            }
+        }
+        return EM_VEHICLE_REG_DB_OPERATOR_ERRCODE_UNKNWON;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE.java
new file mode 100644
index 0000000..e91d155
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 按功能划分的车辆类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 20:37
+ */
+public class EM_VEHICLE_TYPE extends NetSDKLib.SdkStructure {
+
+    /**
+     *  未知
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_UNKNOWN = 0;
+    /**
+     *  危化品车辆
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_TANK_CAR = 1;
+    /**
+     *  槽罐车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_SLOT_TANK_CAR = 2;
+    /**
+     *  渣土车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_DREGS_CAR = 3;
+    /**
+     *  混凝土搅拌车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_CONCRETE_MIXER_TRUCK = 4;
+    /**
+     *  出租车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_TAXI = 5;
+    /**
+     *  警车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_POLICE = 6;
+    /**
+     *  救护车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_AMBULANCE = 7;
+    /**
+     *  普通车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_GENERAL = 8;
+    /**
+     *  洒水车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_WATERING_CAR = 9;
+    /**
+     *  消防车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_FIRE_ENGINE = 10;
+    /**
+     *  工程车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_MACHINESHOP_TRUCK = 11;
+    /**
+     *  粉粒物料车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_POWER_LOT_VEHICLE = 12;
+    /**
+     *  吸污车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_SUCTION_SEWAGE_TRUCK = 13;
+    /**
+     *  普通罐车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_NORMAL_TANK_TRUCK = 14;
+    /**
+     *  校车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_SCHOOL_BUS = 15;
+    /**
+     *  挖掘机
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_EXCAVATOR = 16;
+    /**
+     *  推土车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_BULLDOZER = 17;
+    /**
+     *  吊车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_CRANE = 18;
+    /**
+     *  泵车
+     */
+    public static final int					EM_VEHICLE_TYPE_BY_FUNC_PUMP_TRUCK = 19;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java
new file mode 100644
index 0000000..2c0401b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VEHICLE_TYPE_SPLIT.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 车辆种类划分类型
+ * @date 2021/01/11
+ */
+public enum EM_VEHICLE_TYPE_SPLIT {
+	// 未知
+	EM_VEHICLE_TYPE_SPLIT_UNKNOWN(0, "未知"),
+
+	// 按功能划分
+	EM_VEHICLE_TYPE_SPLIT_FUNC(1, "按功能划分"),
+
+	// 按标准划分
+	EM_VEHICLE_TYPE_SPLIT_STANDARD(2, "按标准划分");
+
+	private int value;
+	private String note;
+
+	private EM_VEHICLE_TYPE_SPLIT(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_VEHICLE_TYPE_SPLIT enumType : EM_VEHICLE_TYPE_SPLIT.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_VEHICLE_TYPE_SPLIT enumType : EM_VEHICLE_TYPE_SPLIT.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java
new file mode 100644
index 0000000..a480ca4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEODIAGNOSIS_TASK_STATE.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 任务运行状态
+ * @date 2021/2/22
+ */
+public enum EM_VIDEODIAGNOSIS_TASK_STATE {
+  /** 未知 */
+  EM_VIDEODIAGNOSIS_TASK_STATE_UNKNOWN(-1, "未知"),
+  /** 未开始 */
+  EM_VIDEODIAGNOSIS_TASK_STATE_NOT_STARTED(0, "未开始"),
+  /** 运行中 */
+  EM_VIDEODIAGNOSIS_TASK_STATE_ONGOING(1, "运行中"),
+  /** 未完成 */
+  EM_VIDEODIAGNOSIS_TASK_STATE_INCOMPLETE(2, "未完成"),
+  /** 已完成 */
+  EM_VIDEODIAGNOSIS_TASK_STATE_COMPLETED(3, "已完成");
+
+  EM_VIDEODIAGNOSIS_TASK_STATE(int state, String desc) {
+    this.state = state;
+    this.desc = desc;
+  }
+
+  private int state;
+  private String desc;
+
+  public int getState() {
+    return state;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public EM_VIDEODIAGNOSIS_TASK_STATE getTaskState(int state) {
+    for (EM_VIDEODIAGNOSIS_TASK_STATE taskState : EM_VIDEODIAGNOSIS_TASK_STATE.values()) {
+      if (taskState.state == state) {
+        return taskState;
+      }
+    }
+    return EM_VIDEODIAGNOSIS_TASK_STATE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java
new file mode 100644
index 0000000..505447b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOINPUTS_SERVICE_TYPE.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 服务类型
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/13 10:22
+ */
+public enum EM_VIDEOINPUTS_SERVICE_TYPE {
+
+    /**
+     * 自动
+     */
+    EM_VIDEOINPUTS_SERVICE_TYPE_AUTO(0, "自动"),
+    /**
+     * TCP
+     */
+    EM_VIDEOINPUTS_SERVICE_TYPE_TCP(1, "TCP"),
+    /**
+     * UDP
+     */
+    EM_VIDEOINPUTS_SERVICE_TYPE_UDP(2, "UDP"),
+    /**
+     * 组播
+     */
+    EM_VIDEOINPUTS_SERVICE_TYPE_MULTICAST(3, "组播");
+
+    private int value;
+    private String note;
+
+    private EM_VIDEOINPUTS_SERVICE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VIDEOINPUTS_SERVICE_TYPE enumType : EM_VIDEOINPUTS_SERVICE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VIDEOINPUTS_SERVICE_TYPE enumType : EM_VIDEOINPUTS_SERVICE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOIN_BACKLIGHT_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOIN_BACKLIGHT_MODE.java
new file mode 100644
index 0000000..3e39911
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEOIN_BACKLIGHT_MODE.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  背光模式 
+* @origin autoTool
+* @date 2023/11/30 16:22:26
+*/
+public enum EM_VIDEOIN_BACKLIGHT_MODE {
+	/**
+     * 未知模式
+     */
+	EM_BACKLIGHT_UNKNOW(0,"未知模式"),
+	/**
+     * 关闭
+     */
+	EM_BACKLIGHT_OFF(1,"关闭"),
+	/**
+     * 背光补偿
+     */
+	EM_BACKLIGHT_BACKLIGHT(2,"背光补偿"),
+	/**
+     * 强光抑制
+     */
+	EM_BACKLIGHT_GLAREINHIBITION(3,"强光抑制"),
+	/**
+     * 宽动态
+     */
+	EM_BACKLIGHT_WIDEDYNAMIC(4,"宽动态"),
+	/**
+     * 场景自适应
+     */
+	EM_BACKLIGHT_SSA(5,"场景自适应");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_VIDEOIN_BACKLIGHT_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_VIDEOIN_BACKLIGHT_MODE enumType : EM_VIDEOIN_BACKLIGHT_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_VIDEOIN_BACKLIGHT_MODE enumType : EM_VIDEOIN_BACKLIGHT_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_VIDEOIN_BACKLIGHT_MODE getEnum(int value) {
+        for (EM_VIDEOIN_BACKLIGHT_MODE e : EM_VIDEOIN_BACKLIGHT_MODE.values()) {
+            if (e.getValue() == value){
+                return e;
+            }
+        }
+        return EM_VIDEOIN_BACKLIGHT_MODE.EM_BACKLIGHT_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java
new file mode 100644
index 0000000..76a6bf9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_ABNORMAL_DETECT_TYPE.java
@@ -0,0 +1,134 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description 屏保状态
+* @date 2022/03/29 13:59:54
+*/
+public enum EM_VIDEO_ABNORMAL_DETECT_TYPE {
+/**
+未知状态
+*/
+EM_VIDEO_ABNORMAL_DETECT_UNKNOWN(0,"未知状态"),
+/**
+视频丢失
+*/
+EM_VIDEO_ABNORMAL_DETECT_LOSS(1,"视频丢失"),
+/**
+视频遮挡
+*/
+EM_VIDEO_ABNORMAL_DETECT_COVER(2,"视频遮挡"),
+/**
+画面冻结
+*/
+EM_VIDEO_ABNORMAL_DETECT_FROZEN(3,"画面冻结"),
+/**
+过亮
+*/
+EM_VIDEO_ABNORMAL_DETECT_LIGHT(4,"过亮"),
+/**
+过暗
+*/
+EM_VIDEO_ABNORMAL_DETECT_DARK(5,"过暗"),
+/**
+场景变化
+*/
+EM_VIDEO_ABNORMAL_DETECT_SCENECHANGE(6,"场景变化"),
+/**
+条纹检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_STRIATION(7,"条纹检测"),
+/**
+噪声检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_NOISE(8,"噪声检测"),
+/**
+偏色检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_UNBALANCE(9,"偏色检测"),
+/**
+视频模糊检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_BLUR(10,"视频模糊检测"),
+/**
+对比度异常检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_CONTRAST(11,"对比度异常检测"),
+/**
+视频运动
+*/
+EM_VIDEO_ABNORMAL_DETECT_MOTION(12,"视频运动"),
+/**
+视频闪烁
+*/
+EM_VIDEO_ABNORMAL_DETECT_FILCKERING(13,"视频闪烁"),
+/**
+视频颜色-13
+*/
+EM_VIDEO_ABNORMAL_DETECT_COLOR(14,"视频颜色-13"),
+/**
+虚焦检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_UNFOCUS(15,"虚焦检测"),
+/**
+过曝检测
+*/
+EM_VIDEO_ABNORMAL_DETECT_OVEREXPOSURE(16,"过曝检测"),
+/**
+场景剧变
+*/
+EM_VIDEO_ABNORMAL_DETECT_DRAMATICCHANGE(17,"场景剧变"),
+/**
+黑白图像
+*/
+EM_VIDEO_ABNORMAL_DETECT_BLACKWHITE(18,"黑白图像"),
+/**
+雪花噪声
+*/
+EM_VIDEO_ABNORMAL_DETECT_SNOWNOISE(19,"雪花噪声");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_VIDEO_ABNORMAL_DETECT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_VIDEO_ABNORMAL_DETECT_TYPE enumType : EM_VIDEO_ABNORMAL_DETECT_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_VIDEO_ABNORMAL_DETECT_TYPE enumType : EM_VIDEO_ABNORMAL_DETECT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_VIDEO_ABNORMAL_DETECT_TYPE getEnum(int value) {
+        for (EM_VIDEO_ABNORMAL_DETECT_TYPE e : EM_VIDEO_ABNORMAL_DETECT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VIDEO_ABNORMAL_DETECT_TYPE.EM_VIDEO_ABNORMAL_DETECT_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java
new file mode 100644
index 0000000..a8e4e01
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_FILE_STATE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 录像文件的状态
+ * @date 2021/2/22
+ */
+public enum EM_VIDEO_FILE_STATE {
+  /** 未知 */
+  EM_VIDEO_FILE_STATE_UNKNOWN,
+  /** 正在写 */
+  EM_VIDEO_FILE_STATE_TEMPORARY,
+  /** 已写完并正常关闭文件句柄 */
+  EM_VIDEO_FILE_STATE_COMPLETE;
+
+  public static EM_VIDEO_FILE_STATE getVideoFileState(int status) {
+    for (EM_VIDEO_FILE_STATE fileState : EM_VIDEO_FILE_STATE.values()) {
+      if (fileState.ordinal() == status) {
+        return fileState;
+      }
+    }
+    return EM_VIDEO_FILE_STATE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_STREAM.java
new file mode 100644
index 0000000..0a32ec8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_STREAM.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 视频码流
+ * @date 2021/11/07
+ */
+public enum EM_VIDEO_STREAM {
+	// 未知
+	EM_VIDEO_STREAM_UNKNOWN(0, "未知"),
+	// 主码流
+	EM_VIDEO_STREAM_MAIN(1, "主码流"),
+	// 辅码流1
+	EM_VIDEO_STREAM_EXTRA1(2, "辅码流1"),
+	// 辅码流2
+	EM_VIDEO_STREAM_EXTRA2(3, "辅码流2"),
+	// 辅码流3
+	EM_VIDEO_STREAM_EXTRA3(4, "辅码流3"),
+	// 自动选择合适码流
+	EM_VIDEO_STREAM_AUTO(5, "自动选择合适码流"),
+	// 预览裸数据码流
+	EM_VIDEO_STREAM_PREVIEW(6, "预览裸数据码流"),
+	// 无视频码流(纯音频流)
+	EM_VIDEO_STREAM_NO_VIDEO_JUST_AUDIO(7, "无视频码流(纯音频流)");
+
+	private int value;
+	private String note;
+
+	private EM_VIDEO_STREAM(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_VIDEO_STREAM enumType : EM_VIDEO_STREAM.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_VIDEO_STREAM enumType : EM_VIDEO_STREAM.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_TYPE.java
new file mode 100644
index 0000000..77b8d6b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIDEO_TYPE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 录像的类型
+ * @date 2021/2/22
+ */
+public enum EM_VIDEO_TYPE {
+  /** 未知 */
+  EM_VIDEO_TYPE_UNKNOWN,
+  /** 全部 */
+  EM_VIDEO_TYPE_ALL,
+  /** 手动保存的录像 */
+  EM_VIDEO_TYPE_MANUAL,
+  /** 报警录像 */
+  EM_VIDEO_TYPE_ALARM;
+
+  public EM_VIDEO_TYPE getVideoType(int type) {
+    for (EM_VIDEO_TYPE videoType : EM_VIDEO_TYPE.values()) {
+      if (videoType.ordinal() == type) {
+        return videoType;
+      }
+    }
+    return EM_VIDEO_TYPE_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java
new file mode 100644
index 0000000..7ffd09f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VIRTUAL_COIL_OCCUPANCY_STATUS.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 虚拟线圈占用状态
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 11:50
+ */
+public enum EM_VIRTUAL_COIL_OCCUPANCY_STATUS {
+    /**
+     * 未知
+     */
+    EM_VIRTUAL_COIL_OCCUPANCY_STATUS_UNKNOWN(-1,"未知"),
+    /**
+     * 未占用
+     */
+    EM_VIRTUAL_COIL_OCCUPANCY_STATUS_UNOCCUPY(0,"未占用"),
+    /**
+     * 占用
+     */
+    EM_VIRTUAL_COIL_OCCUPANCY_STATUS_OCCUPY(1,"占用");
+
+    private final int value;
+    private final String note;
+
+    EM_VIRTUAL_COIL_OCCUPANCY_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VIRTUAL_COIL_OCCUPANCY_STATUS enumType : EM_VIRTUAL_COIL_OCCUPANCY_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VIRTUAL_COIL_OCCUPANCY_STATUS enumType : EM_VIRTUAL_COIL_OCCUPANCY_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_VIRTUAL_COIL_OCCUPANCY_STATUS getEnum(int value) {
+        for (EM_VIRTUAL_COIL_OCCUPANCY_STATUS e : EM_VIRTUAL_COIL_OCCUPANCY_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_VIRTUAL_COIL_OCCUPANCY_STATUS.EM_VIRTUAL_COIL_OCCUPANCY_STATUS_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java
new file mode 100644
index 0000000..5f395f7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VOLTAGE_STATE_TYPE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_VOLTAGE_STATE_TYPE {
+    EM_VOLTAGE_STATE_UNKNOWN(0,"电压状态未知"),                           // 未知
+    EM_VOLTAGE_STATE_OVER (1, "电压过高"),                           // 过压
+    EM_VOLTAGE_STATE_NORMAL (2, "电压正常"),                           // 正常
+    EM_VOLTAGE_STATE_UNDER (3, "欠压");                           // 欠压
+
+    private int value;
+    private String note;
+
+    private EM_VOLTAGE_STATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_VOLTAGE_STATE_TYPE enumType : EM_VOLTAGE_STATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_VOLTAGE_STATE_TYPE enumType : EM_VOLTAGE_STATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java
new file mode 100644
index 0000000..cf151e0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_VSP_GAVI_PLATFORM_CODE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+public enum EM_VSP_GAVI_PLATFORM_CODE {
+	EM_VSP_GAVI_PLATFORM_CODE_UNKNOWN(-1,"未知"),						
+	EM_VSP_GAVI_PLATFORM_CODE_DEFAULT(0,"默认,标准视图库接入平台"),							
+	EM_VSP_GAVI_PLATFORM_CODE_DAHUA(1,"DH视图库"),							 
+	EM_VSP_GAVI_PLATFORM_CODE_HKTDA_CLOUDSTORAGE(2,"TDA+云存储"),
+	EM_VSP_GAVI_PLATFORM_CODE_UNIVIEW(3,"宇视"),							
+	EM_VSP_GAVI_PLATFORM_CODE_HKTEST(4,"接口测试"),							
+	EM_VSP_GAVI_PLATFORM_CODE_SHQPNETPOSE(5,"上海清浦东方网力"),						
+	EM_VSP_GAVI_PLATFORM_CODE_HKTDA(6,"TDA"),							
+	EM_VSP_GAVI_PLATFORM_CODE_HARZONE(7,"华尊"),							
+	EM_VSP_GAVI_PLATFORM_CODE_NETPOSE(8,"东方网力"),							
+	EM_VSP_GAVI_PLATFORM_CODE_TAOAN(9,"韬安"),							
+	EM_VSP_GAVI_PLATFORM_CODE_RESERVED(10,"预留"),							
+	EM_VSP_GAVI_PLATFORM_CODE_HKVIEWGATEWAY(11,"视图网关"),					
+	EM_VSP_GAVI_PLATFORM_CODE_KODAK(12,"柯达");							
+	
+	private int value;
+	private String note;
+
+	private EM_VSP_GAVI_PLATFORM_CODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_SIGNLIGHT_TYPE enumType : EM_SIGNLIGHT_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_SIGNLIGHT_TYPE enumType : EM_SIGNLIGHT_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java
new file mode 100644
index 0000000..7dceeca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATERDATA_STAT_SERVER_SUPPORT.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  当前是否具备水质检测功能 
+* @date 2022/08/22 10:11:26
+*/
+public enum EM_WATERDATA_STAT_SERVER_SUPPORT {
+/**
+未知
+*/
+EM_WATERDATA_STAT_SERVER_SUPPORT_UNKNOWN(-1,"未知"),
+/**
+不支持
+*/
+EM_WATERDATA_STAT_SERVER_SUPPORT_NO(0,"不支持"),
+/**
+支持
+*/
+EM_WATERDATA_STAT_SERVER_SUPPORT_YES(1,"支持");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_WATERDATA_STAT_SERVER_SUPPORT(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_WATERDATA_STAT_SERVER_SUPPORT enumType : EM_WATERDATA_STAT_SERVER_SUPPORT.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_WATERDATA_STAT_SERVER_SUPPORT enumType : EM_WATERDATA_STAT_SERVER_SUPPORT.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_WATERDATA_STAT_SERVER_SUPPORT getEnum(int value) {
+        for (EM_WATERDATA_STAT_SERVER_SUPPORT e : EM_WATERDATA_STAT_SERVER_SUPPORT.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WATERDATA_STAT_SERVER_SUPPORT.EM_WATERDATA_STAT_SERVER_SUPPORT_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java
new file mode 100644
index 0000000..f2891d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_DETECTION_ALARM_TYPE.java
@@ -0,0 +1,126 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  事件报警类型 
+* @date 2022/08/22 16:50:06
+*/
+public enum EM_WATER_DETECTION_ALARM_TYPE {
+/**
+未知
+*/
+EM_WATER_DETECTION_ALARM_TYPE_UNKNOWN(0,"未知"),
+/**
+水质类别
+*/
+EM_WATER_DETECTION_ALARM_TYPE_QUALITY(1,"水质类别"),
+/**
+PH
+*/
+EM_WATER_DETECTION_ALARM_TYPE_PH(2,"PH"),
+/**
+浊度值
+*/
+EM_WATER_DETECTION_ALARM_TYPE_NTU(3,"浊度值"),
+/**
+氨氮值
+*/
+EM_WATER_DETECTION_ALARM_TYPE_NH3_N(4,"氨氮值"),
+/**
+总氮值
+*/
+EM_WATER_DETECTION_ALARM_TYPE_TN(5,"总氮值"),
+/**
+透明度值
+*/
+EM_WATER_DETECTION_ALARM_TYPE_SD(6,"透明度值"),
+/**
+化学需氧量
+*/
+EM_WATER_DETECTION_ALARM_TYPE_COD(7,"化学需氧量"),
+/**
+亚硝酸盐氮
+*/
+EM_WATER_DETECTION_ALARM_TYPE_NN(8,"亚硝酸盐氮"),
+/**
+溶解氧
+*/
+EM_WATER_DETECTION_ALARM_TYPE_DO(9,"溶解氧"),
+/**
+叶绿素a
+*/
+EM_WATER_DETECTION_ALARM_TYPE_CHL_A(10,"叶绿素a"),
+/**
+总磷
+*/
+EM_WATER_DETECTION_ALARM_TYPE_TP(11,"总磷"),
+/**
+高锰酸盐指数范围
+*/
+EM_WATER_DETECTION_ALARM_TYPE_CODMN(12,"高锰酸盐指数范围"),
+/**
+悬浮物
+*/
+EM_WATER_DETECTION_ALARM_TYPE_SS(13,"悬浮物"),
+/**
+五日生化需氧量
+*/
+EM_WATER_DETECTION_ALARM_TYPE_BOD_5(14,"五日生化需氧量"),
+/**
+硝酸盐
+*/
+EM_WATER_DETECTION_ALARM_TYPE_NO3_N(15,"硝酸盐"),
+/**
+富营养状况指数
+*/
+EM_WATER_DETECTION_ALARM_TYPE_TSI(16,"富营养状况指数"),
+/**
+黑臭等级
+*/
+EM_WATER_DETECTION_ALARM_TYPE_SMELLY_LEVEL(17,"黑臭等级");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_WATER_DETECTION_ALARM_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_WATER_DETECTION_ALARM_TYPE enumType : EM_WATER_DETECTION_ALARM_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_WATER_DETECTION_ALARM_TYPE enumType : EM_WATER_DETECTION_ALARM_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_WATER_DETECTION_ALARM_TYPE getEnum(int value) {
+        for (EM_WATER_DETECTION_ALARM_TYPE e : EM_WATER_DETECTION_ALARM_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WATER_DETECTION_ALARM_TYPE.EM_WATER_DETECTION_ALARM_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_QUALITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_QUALITY.java
new file mode 100644
index 0000000..253b00a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WATER_QUALITY.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  水质类别,越小越好 
+* @date 2022/08/22 16:51:44
+*/
+public enum EM_WATER_QUALITY {
+/**
+未知
+*/
+EM_WATER_QUALITY_UNKNOWN(0,"未知"),
+/**
+1类
+*/
+EM_WATER_QUALITY_1(1,"1类"),
+/**
+2类
+*/
+EM_WATER_QUALITY_2(2,"2类"),
+/**
+3类
+*/
+EM_WATER_QUALITY_3(3,"3类"),
+/**
+4类
+*/
+EM_WATER_QUALITY_4(4,"4类"),
+/**
+5类
+*/
+EM_WATER_QUALITY_5(5,"5类");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_WATER_QUALITY(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_WATER_QUALITY enumType : EM_WATER_QUALITY.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_WATER_QUALITY enumType : EM_WATER_QUALITY.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_WATER_QUALITY getEnum(int value) {
+        for (EM_WATER_QUALITY e : EM_WATER_QUALITY.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WATER_QUALITY.EM_WATER_QUALITY_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEARING_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEARING_STATE.java
new file mode 100644
index 0000000..25e3bb5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEARING_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 穿戴状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_WEARING_STATE {
+    /**
+     * 未知
+     */
+    EM_WEARING_STATE_UNKNOWN(0,"未知"),
+    /**
+     * 没有穿戴
+     */
+    EM_WEARING_STATE_NOTWEAR(1,"没有穿戴"),
+    /**
+     * 有穿戴
+     */
+    EM_WEARING_STATE_WEAR(2,"有穿戴");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_WEARING_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WEARING_STATE enumType : EM_WEARING_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WEARING_STATE enumType : EM_WEARING_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WEARING_STATE getEnum(int value) {
+        for (EM_WEARING_STATE e : EM_WEARING_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WEARING_STATE.EM_WEARING_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java
new file mode 100644
index 0000000..2669f2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WEB_TUNNEL_PROTOCOL.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  私有web代理协议类型 
+* @date 2022/04/21 14:35:33
+*/
+public enum EM_WEB_TUNNEL_PROTOCOL {
+/**
+未知
+*/
+EM_WEB_TUNNEL_PROTOCOL_UNKNOWN(0,"未知"),
+/**
+HTTP
+*/
+EM_WEB_TUNNEL_PROTOCOL_HTTP(1,"HTTP"),
+/**
+THTPS
+*/
+EM_WEB_TUNNEL_PROTOCOL_HTTPS(2,"THTPS");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_WEB_TUNNEL_PROTOCOL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_WEB_TUNNEL_PROTOCOL enumType : EM_WEB_TUNNEL_PROTOCOL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_WEB_TUNNEL_PROTOCOL enumType : EM_WEB_TUNNEL_PROTOCOL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_WEB_TUNNEL_PROTOCOL getEnum(int value) {
+        for (EM_WEB_TUNNEL_PROTOCOL e : EM_WEB_TUNNEL_PROTOCOL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WEB_TUNNEL_PROTOCOL.EM_WEB_TUNNEL_PROTOCOL_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java
new file mode 100644
index 0000000..35405a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WIRELESS_DEVICE_MODE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 无线设备工作模式
+ * @date 2023/03/16 14:52:52
+ */
+public enum EM_WIRELESS_DEVICE_MODE {
+	/**
+	 * 模式未识别
+	 */
+	EM_WIRELESS_DEVICE_MODE_UNKNOWN(0, "模式未识别"),
+	/**
+	 * Normal 普通模式
+	 */
+	EM_WIRELESS_DEVICE_MODE_NORMAL(1, "Normal 普通模式"),
+	/**
+	 * Polling 巡检模式 只有Type为RemoteControl时才能处于巡检模式
+	 */
+	EM_WIRELESS_DEVICE_MODE_POLLING(2, "Polling 巡检模式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_WIRELESS_DEVICE_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_WIRELESS_DEVICE_MODE enumType : EM_WIRELESS_DEVICE_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_WIRELESS_DEVICE_MODE enumType : EM_WIRELESS_DEVICE_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java
new file mode 100644
index 0000000..cdf66b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WLAN_SCAN_AND_CONFIG_TYPE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description wifi扫描及配置支持的版本类型
+ * @date 2021/2/22
+ */
+public enum EM_WLAN_SCAN_AND_CONFIG_TYPE {
+  /** 未知 */
+  EM_WLAN_SCAN_AND_CONFIG_UNKNOWN,
+  /** V2:二代协议 */
+  EM_WLAN_SCAN_AND_CONFIG_V2,
+  /** v3:三代协议 */
+  EM_WLAN_SCAN_AND_CONFIG_V3;
+
+  public EM_WLAN_SCAN_AND_CONFIG_TYPE getWlanScanAndConfigType(int type) {
+    for (EM_WLAN_SCAN_AND_CONFIG_TYPE configType : EM_WLAN_SCAN_AND_CONFIG_TYPE.values()) {
+      if (configType.ordinal() == type) {
+        return configType;
+      }
+    }
+    return EM_WLAN_SCAN_AND_CONFIG_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKACTION_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKACTION_STATE.java
new file mode 100644
index 0000000..1a1fc1a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKACTION_STATE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 作业行为状态信息
+ * @since : Created in 2022/03/08 15:25
+ */
+
+public enum EM_WORKACTION_STATE {
+    /**
+     * 未知
+     */
+    EM_WORKACTION_STATE_UNKNOWN(0, "未知"),
+    /**
+     * 无人作业
+     */
+    EM_WORKACTION_STATE_NO_WORKER(1, "无人作业"),
+    /**
+     * 单人作业
+     */
+    EEM_WORKACTION_STATE_SINGLE_WORKER(2, "单人作业"),
+    /**
+     * 无红马甲作业
+     */
+    EM_WORKACTION_STATE_NORED_VEST(3, "无红马甲作业");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_WORKACTION_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WORKACTION_STATE enumType : EM_WORKACTION_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WORKACTION_STATE enumType : EM_WORKACTION_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WORKACTION_STATE getEnum(int value) {
+        for (EM_WORKACTION_STATE e : EM_WORKACTION_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WORKACTION_STATE.EM_WORKACTION_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java
new file mode 100644
index 0000000..deae4e1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKCLOTHES_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 工作服穿戴状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_WORKCLOTHES_STATE {
+    /**
+     * 未知
+     */
+    EM_WORKCLOTHES_STATE_UNKNOWN(0,"未知"),
+    /**
+     * 无工作服
+     */
+    EM_WORKCLOTHES_STATE_NOTWEAR(1,"无工作服"),
+    /**
+     * 有工作服
+     */
+    EM_WORKCLOTHES_STATE_WEAR(2,"有工作服");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_WORKCLOTHES_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WORKCLOTHES_STATE enumType : EM_WORKCLOTHES_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WORKCLOTHES_STATE enumType : EM_WORKCLOTHES_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WORKCLOTHES_STATE getEnum(int value) {
+        for (EM_WORKCLOTHES_STATE e : EM_WORKCLOTHES_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WORKCLOTHES_STATE.EM_WORKCLOTHES_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKPANTS_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKPANTS_STATE.java
new file mode 100644
index 0000000..7443437
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKPANTS_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 工作裤穿戴状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_WORKPANTS_STATE {
+    /**
+     * 未知
+     */
+    EM_WORKPANTS_STATE_UNKNOWN(0,"未知"),
+    /**
+     * 没有
+     */
+    EM_WORKPANTS_STATE_NOTWEAR(1,"没有"),
+    /**
+     * 有
+     */
+    EM_WORKPANTS_STATE_WEAR(2,"有");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_WORKPANTS_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WORKPANTS_STATE enumType : EM_WORKPANTS_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WORKPANTS_STATE enumType : EM_WORKPANTS_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WORKPANTS_STATE getEnum(int value) {
+        for (EM_WORKPANTS_STATE e : EM_WORKPANTS_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WORKPANTS_STATE.EM_WORKPANTS_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java
new file mode 100644
index 0000000..9d08527
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSTATDETECTION_TYPE.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 作业统计检测类型
+ * @since : Created in 2022/03/08 15:25
+ */
+
+public enum EM_WORKSTATDETECTION_TYPE {
+    /**
+     * 未知
+     */
+    EM_WORKSTATDETECTION_UNKNOWN(0, "未知"),
+    /**
+     * 脱岗检测
+     */
+    EM_WORKSTATDETECTION_NO_WORKER(1, "脱岗检测"),
+    /**
+     * 单人作业
+     */
+    EM_WORKSTATDETECTION_SINGLE_WORKER(2, "单人作业"),
+    /**
+     * 工作负责人脱岗检测
+     */
+    EM_WORKSTATDETECTION_NO_WORKER_LEADER(3, "工作负责人脱岗检测"),
+    /**
+     * 手部消毒检测
+     */
+    EM_WORKSTATDETECTION_HAND_DISINFECTION(4, "手部消毒检测"),
+    /**
+     * 蘸脚动作检测
+     */
+    EM_WORKSTATDETECTION_FOOT_DIP(5, "蘸脚动作检测"),
+    /**
+     * 换鞋动作检测
+     */
+    EM_WORKSTATDETECTION_SHOES_CHANGE(6, "换鞋动作检测");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    EM_WORKSTATDETECTION_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WORKSTATDETECTION_TYPE enumType : EM_WORKSTATDETECTION_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WORKSTATDETECTION_TYPE enumType : EM_WORKSTATDETECTION_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WORKSTATDETECTION_TYPE getEnum(int value) {
+        for (EM_WORKSTATDETECTION_TYPE e : EM_WORKSTATDETECTION_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WORKSTATDETECTION_TYPE.EM_WORKSTATDETECTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java
new file mode 100644
index 0000000..3377716
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_ABSTRACT_ERRCODE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 工装建模错误码
+ * @date 2022/10/09 11:22:52
+ */
+public enum EM_WORKSUIT_ABSTRACT_ERRCODE {
+	/**
+	 * 未知
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_UNKNWON(0, "未知"),
+	/**
+	 * 建模失败
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_FAILED(1, "建模失败"),
+	/**
+	 * 系统异常(如Licence失效、建模分析器未启动导致的失败)
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_SYSERR(2, "系统异常(如Licence失效、建模分析器未启动导致的失败)"),
+	/**
+	 * 数据库操作失败
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_DB_ERROR(3, "数据库操作失败"),
+	/**
+	 * 工装数量超过限制
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_OVER_NUM(4, "工装数量超过限制"),
+	/**
+	 * 剩余存储空间大小不足
+	 */
+	EM_WORKSUIT_ABSTRACT_ERRCODE_NO_STORAGE(5, "剩余存储空间大小不足");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_WORKSUIT_ABSTRACT_ERRCODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_WORKSUIT_ABSTRACT_ERRCODE enumType : EM_WORKSUIT_ABSTRACT_ERRCODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_WORKSUIT_ABSTRACT_ERRCODE enumType : EM_WORKSUIT_ABSTRACT_ERRCODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java
new file mode 100644
index 0000000..d44832e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_APPEND_ERRCODE.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 工装合规导入返回的错误码信息
+ * @date 2022/10/08 19:50:19
+ */
+public enum EM_WORKSUIT_APPEND_ERRCODE {
+	/**
+	 * 未知
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_UNKNOWN(-1, "未知"),
+	/**
+	 * 成功
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_SUCCESS(0, "成功"),
+	/**
+	 * 组ID不存在或为空
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_INVALID_ID(1, "组ID不存在或为空"),
+	/**
+	 * 数据库操作失败
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_DB_ERROR(2, "数据库操作失败"),
+	/**
+	 * 图片大小不对
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_IMAGE_SIZE(3, "图片大小不对"),
+	/**
+	 * 图片分辨率不对
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_IMAGE_RESO(4, "图片分辨率不对"),
+	/**
+	 * 图片文件写入失败
+	 */
+	EM_WORKSUIT_APPEND_ERRCODE_IMAGE_WRITE(5, "图片文件写入失败");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_WORKSUIT_APPEND_ERRCODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_WORKSUIT_APPEND_ERRCODE enumType : EM_WORKSUIT_APPEND_ERRCODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_WORKSUIT_APPEND_ERRCODE enumType : EM_WORKSUIT_APPEND_ERRCODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+	public static EM_WORKSUIT_APPEND_ERRCODE getEnum(int value) {
+		for (EM_WORKSUIT_APPEND_ERRCODE e : EM_WORKSUIT_APPEND_ERRCODE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return EM_WORKSUIT_APPEND_ERRCODE.EM_WORKSUIT_APPEND_ERRCODE_UNKNOWN;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java
new file mode 100644
index 0000000..33631f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_POLICY.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 工装合规组优先方案
+ * @date 2022/10/08 17:05:54
+ */
+public enum EM_WORKSUIT_GROUP_POLICY {
+	/**
+	 * 未知
+	 */
+	EM_WORKSUIT_GROUP_POLICY_UNKNWON(-1, "未知"),
+	/**
+	 * 全身
+	 */
+	EM_WORKSUIT_GROUP_POLICY_WHOLE_BODY(0, "全身"),
+	/**
+	 * 上半身
+	 */
+	EM_WORKSUIT_GROUP_POLICY_UPPER_BODY(1, "上半身");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_WORKSUIT_GROUP_POLICY(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_WORKSUIT_GROUP_POLICY enumType : EM_WORKSUIT_GROUP_POLICY.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_WORKSUIT_GROUP_POLICY enumType : EM_WORKSUIT_GROUP_POLICY.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -2;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java
new file mode 100644
index 0000000..ab99780
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORKSUIT_GROUP_TYPE.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 工装合规组类型
+ * @date 2022/10/08 17:05:54
+ */
+public enum EM_WORKSUIT_GROUP_TYPE {
+	/**
+	 * 未知
+	 */
+	EM_WORKSUIT_GROUP_TYPE_UNKNWON(0, "未知"),
+	/**
+	 * 注册库(布控名单)
+	 */
+	EM_WORKSUIT_GROUP_TYPE_BLOCK(1, "注册库(布控名单)");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	EM_WORKSUIT_GROUP_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (EM_WORKSUIT_GROUP_TYPE enumType : EM_WORKSUIT_GROUP_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (EM_WORKSUIT_GROUP_TYPE enumType : EM_WORKSUIT_GROUP_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORK_HELMET_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORK_HELMET_STATE.java
new file mode 100644
index 0000000..32f613b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_WORK_HELMET_STATE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 安全帽佩戴状态
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public enum EM_WORK_HELMET_STATE {
+    /**
+     * 未知
+     */
+    EM_HELMET_STATE_UNKNOWN(0,"未知"),
+    /**
+     * 不带安全帽
+     */
+    EM_HELMET_STATE_NOTWEAR(1,"不带安全帽"),
+    /**
+     * 有带安全帽
+     */
+    EM_HELMET_STATE_WEAR(2,"有带安全帽"),
+    /**
+     * 不存在指定颜色的安全帽
+     */
+    EM_HELMET_STATE_INCONFORMITY_COLOR(3,"不存在指定颜色的安全帽");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    EM_WORK_HELMET_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (EM_WORK_HELMET_STATE enumType : EM_WORK_HELMET_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (EM_WORK_HELMET_STATE enumType : EM_WORK_HELMET_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static EM_WORK_HELMET_STATE getEnum(int value) {
+        for (EM_WORK_HELMET_STATE e : EM_WORK_HELMET_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_WORK_HELMET_STATE.EM_HELMET_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_DETECTION_JUDGE_REMOTELY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_DETECTION_JUDGE_REMOTELY.java
new file mode 100644
index 0000000..3d90861
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_DETECTION_JUDGE_REMOTELY.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  是否使用远程判图 
+* @origin autoTool
+* @date 2023/04/19 15:38:12
+*/
+public enum EM_XRAY_DETECTION_JUDGE_REMOTELY {
+/**
+未知, 当表示为未知时意为本地不送远程判图,集中判图时送到远程判图
+*/
+EM_XRAY_DETECTION_JUDGE_REMOTELY_UNKNOWN(-1,"未知, 当表示为未知时意为本地不送远程判图,集中判图时送到远程判图"),
+/**
+不送远端三方进行判图
+*/
+EM_XRAY_DETECTION_JUDGE_REMOTELY_NOT_SEND_JUDGE(0,"不送远端三方进行判图"),
+/**
+送远端三方进行判图
+*/
+EM_XRAY_DETECTION_JUDGE_REMOTELY_SEND_JUDGE(1,"送远端三方进行判图");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_XRAY_DETECTION_JUDGE_REMOTELY(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_XRAY_DETECTION_JUDGE_REMOTELY enumType : EM_XRAY_DETECTION_JUDGE_REMOTELY.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_XRAY_DETECTION_JUDGE_REMOTELY enumType : EM_XRAY_DETECTION_JUDGE_REMOTELY.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_XRAY_DETECTION_JUDGE_REMOTELY getEnum(int value) {
+        for (EM_XRAY_DETECTION_JUDGE_REMOTELY e : EM_XRAY_DETECTION_JUDGE_REMOTELY.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_XRAY_DETECTION_JUDGE_REMOTELY.EM_XRAY_DETECTION_JUDGE_REMOTELY_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java
new file mode 100644
index 0000000..9f77b4d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_IMAGE_TYPE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * X光机图片类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 09:19
+ */
+public enum EM_XRAY_IMAGE_TYPE {
+
+    EM_XRAY_IMAGE_TYPE_UNKNOWN(-1,"未知"),
+    EM_XRAY_IMAGE_TYPE_COLOR(0,"彩图"),
+    EM_XRAY_IMAGE_COLOR_TYPE_OVERLAY(1,"彩色叠加图");
+
+
+    private int value;
+    private String note;
+
+    private EM_XRAY_IMAGE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java
new file mode 100644
index 0000000..cadd8de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  X光机物品检测配置等级 
+* @date 2022/12/01 16:22:06
+*/
+public enum EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL {
+/**
+未知
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_UNKNWON(-1,"未知"),
+/**
+高
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_HIGH(0,"高"),
+/**
+中
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_MID(1,"中"),
+/**
+普通
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_NORMAL(2,"普通"),
+/**
+自定义1
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM1(3,"自定义1"),
+/**
+自定义2
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM2(4,"自定义2"),
+/**
+自定义3
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM3(5,"自定义3"),
+/**
+自定义4
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM4(6,"自定义4"),
+/**
+自定义5
+*/
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_CUSTOM5(7,"自定义5");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL enumType : EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL enumType : EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL getEnum(int value) {
+        for (EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL e : EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL.EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL_UNKNWON;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java
new file mode 100644
index 0000000..80a839e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_PACKAGE_MODE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 包裹产生方式
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 09:19
+ */
+public enum EM_XRAY_PACKAGE_MODE {
+
+    EM_XRAY_PACKAGE_MODE_UNKNOWN(-1,"未知方式"),
+    EM_XRAY_PACKAGE_MODE_LOCAL(0,"本地判图结果"),
+    EM_XRAY_PACKAGE_MODE_CENTRAL(1,"集中判图模式中的本地预判结果");
+
+    private int value;
+    private String note;
+
+    private EM_XRAY_PACKAGE_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_RELATED_IMAGE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_RELATED_IMAGE_TYPE.java
new file mode 100644
index 0000000..9a1d5f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_XRAY_RELATED_IMAGE_TYPE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  X光机关联图片类型 
+* @origin autoTool
+* @date 2023/04/19 15:40:38
+*/
+public enum EM_XRAY_RELATED_IMAGE_TYPE {
+/**
+未知
+*/
+EM_XRAY_RELATED_IMAGE_TYPE_UNKNOWN(-1,"未知"),
+/**
+表示目标大图
+*/
+EM_XRAY_RELATED_IMAGE_TYPE_LARGE_FACE(0,"表示目标大图"),
+/**
+表示目标小图
+*/
+EM_XRAY_RELATED_IMAGE_TYPE_SMALL_FACE(1,"表示目标小图"),
+/**
+表示包裹可见光图
+*/
+EM_XRAY_RELATED_IMAGE_TYPE_PACKAGE_VISIBLE_LIGHT(2,"表示包裹可见光图");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_XRAY_RELATED_IMAGE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_XRAY_RELATED_IMAGE_TYPE enumType : EM_XRAY_RELATED_IMAGE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_XRAY_RELATED_IMAGE_TYPE enumType : EM_XRAY_RELATED_IMAGE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static EM_XRAY_RELATED_IMAGE_TYPE getEnum(int value) {
+        for (EM_XRAY_RELATED_IMAGE_TYPE e : EM_XRAY_RELATED_IMAGE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_XRAY_RELATED_IMAGE_TYPE.EM_XRAY_RELATED_IMAGE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ZONE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ZONE_STATUS.java
new file mode 100644
index 0000000..3aae5a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/EM_ZONE_STATUS.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  防区异常状态 
+* @date 2022/10/09 11:29:42
+*/
+public enum EM_ZONE_STATUS {
+/**
+未知
+*/
+EM_ZONE_STATUS_UNKNOWN(0,"未知"),
+/**
+防区报警/打开
+*/
+EM_ZONE_STATUS_ALARM(1,"防区报警/打开"),
+/**
+防区防拆
+*/
+EM_ZONE_STATUS_TAMPER(2,"防区防拆"),
+/**
+防区防遮挡
+*/
+EM_ZONE_STATUS_MASK(3,"防区防遮挡"),
+/**
+防区短路
+*/
+EM_ZONE_STATUS_SHORT(4,"防区短路"),
+/**
+防区正常
+*/
+EM_ZONE_STATUS_NORMAL(5,"防区正常");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+EM_ZONE_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (EM_ZONE_STATUS enumType : EM_ZONE_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (EM_ZONE_STATUS enumType : EM_ZONE_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static EM_ZONE_STATUS getEnum(int value) {
+        for (EM_ZONE_STATUS e : EM_ZONE_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return EM_ZONE_STATUS.EM_ZONE_STATUS_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUMERROR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUMERROR.java
new file mode 100644
index 0000000..6dfcb0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUMERROR.java
@@ -0,0 +1,567 @@
+package com.netsdk.lib.enumeration;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description netSdk错误类型枚举
+ * @since 2020/7/28
+ */
+public enum ENUMERROR {
+    NET_UNDEFIND(-2, "没有定义"),
+    NET_NOERROR(0, "没有错误"),
+    NET_ERROR(-1, "未知错误"),
+    NET_SYSTEM_ERROR(1, "Windows系统出错"),
+    NET_NETWORK_ERROR(2, "网络错误,可能是因为网络超时"),
+    NET_DEV_VER_NOMATCH(3, "设备协议不匹配"),
+    NET_INVALID_HANDLE(4, "句柄无效"),
+    NET_OPEN_CHANNEL_ERROR(5, "打开通道失败"),
+    NET_CLOSE_CHANNEL_ERROR(6, "关闭通道失败"),
+    NET_ILLEGAL_PARAM(7, "用户参数不合法"),
+    NET_SDK_INIT_ERROR(8, "SDK初始化出错"),
+    NET_SDK_UNINIT_ERROR(9, "SDK清理出错"),
+    NET_RENDER_OPEN_ERROR(10, "申请render资源出错"),
+    NET_DEC_OPEN_ERROR(11, "打开解码库出错"),
+    NET_DEC_CLOSE_ERROR(12, "关闭解码库出错"),
+
+    NET_MULTIPLAY_NOCHANNEL(13, "多画面预览中检测到通道数为0"),
+    NET_TALK_INIT_ERROR(14, "录音库初始化失败"),
+    NET_TALK_NOT_INIT(15, "录音库未经初始化"),
+    NET_TALK_SENDDATA_ERROR(16, "发送音频数据出错"),
+    NET_REAL_ALREADY_SAVING(17, "实时数据已经处于保存状态"),
+    NET_NOT_SAVING(18, "未保存实时数据"),
+    NET_OPEN_FILE_ERROR(19, "打开文件出错"),
+    NET_PTZ_SET_TIMER_ERROR(20, "启动云台控制定时器失败"),
+    NET_RETURN_DATA_ERROR(21, "对返回数据的校验出错"),
+    NET_INSUFFICIENT_BUFFER(22, "没有足够的缓存"),
+    NET_NOT_SUPPORTED(23, "当前SDK未支持该功能"),
+    NET_NO_RECORD_FOUND(24, "查询不到录像"),
+    NET_NOT_AUTHORIZED(25, "无操作权限"),
+    NET_NOT_NOW(26, "暂时无法执行"),
+    NET_NO_TALK_CHANNEL(27, "未发现对讲通道"),
+    NET_NO_AUDIO(28, "未发现音频"),
+    NET_NO_INIT(29, "网络SDK未经初始化"),
+    NET_DOWNLOAD_END(30, "下载已结束"),
+    NET_EMPTY_LIST(31, "查询结果为空"),
+    NET_ERROR_GETCFG_SYSATTR(32, "获取系统属性配置失败"),
+    NET_ERROR_GETCFG_SERIAL(33, "获取序列号失败"),
+    NET_ERROR_GETCFG_GENERAL(34, "获取常规属性失败"),
+    NET_ERROR_GETCFG_DSPCAP(35, "获取DSP能力描述失败"),
+    NET_ERROR_GETCFG_NETCFG(36, "获取网络配置失败"),
+    NET_ERROR_GETCFG_CHANNAME(37, "获取通道名称失败"),
+    NET_ERROR_GETCFG_VIDEO(38, "获取视频属性失败"),
+    NET_ERROR_GETCFG_RECORD(39, "获取录象配置失败"),
+    NET_ERROR_GETCFG_PRONAME(40, "获取解码器协议名称失败"),
+    NET_ERROR_GETCFG_FUNCNAME(41, "获取232串口功能名称失败"),
+    NET_ERROR_GETCFG_485DECODER(42, "获取解码器属性失败"),
+    NET_ERROR_GETCFG_232COM(43, "获取232串口配置失败"),
+    NET_ERROR_GETCFG_ALARMIN(44, "获取外部报警输入配置失败"),
+    NET_ERROR_GETCFG_ALARMDET(45, "获取动态检测报警失败"),
+    NET_ERROR_GETCFG_SYSTIME(46, "获取设备时间失败"),
+    NET_ERROR_GETCFG_PREVIEW(47, "获取预览参数失败"),
+    NET_ERROR_GETCFG_AUTOMT(48, "获取自动维护配置失败"),
+    NET_ERROR_GETCFG_VIDEOMTRX(49, "获取视频矩阵配置失败"),
+    NET_ERROR_GETCFG_COVER(50, "获取区域遮挡配置失败"),
+    NET_ERROR_GETCFG_WATERMAKE(51, "获取图象水印配置失败"),
+    NET_ERROR_GETCFG_MULTICAST(52, "获取配置失败位置:组播端口按通道配置"),
+    NET_ERROR_SETCFG_GENERAL(55, "修改常规属性失败"),
+    NET_ERROR_SETCFG_NETCFG(56, "修改网络配置失败"),
+    NET_ERROR_SETCFG_CHANNAME(57, "修改通道名称失败"),
+    NET_ERROR_SETCFG_VIDEO(58, "修改视频属性失败"),
+    NET_ERROR_SETCFG_RECORD(59, "修改录象配置失败"),
+    NET_ERROR_SETCFG_485DECODER(60, "修改解码器属性失败"),
+    NET_ERROR_SETCFG_232COM(61, "修改232串口配置失败"),
+    NET_ERROR_SETCFG_ALARMIN(62, "修改外部输入报警配置失败"),
+    NET_ERROR_SETCFG_ALARMDET(63, "修改动态检测报警配置失败"),
+    NET_ERROR_SETCFG_SYSTIME(64, "修改设备时间失败"),
+    NET_ERROR_SETCFG_PREVIEW(65, "修改预览参数失败"),
+    NET_ERROR_SETCFG_AUTOMT(66, "修改自动维护配置失败"),
+    NET_ERROR_SETCFG_VIDEOMTRX(67, "修改视频矩阵配置失败"),
+    NET_ERROR_SETCFG_COVER(68, "修改区域遮挡配置失败"),
+    NET_ERROR_SETCFG_WATERMAKE(69, "修改图象水印配置失败"),
+    NET_ERROR_SETCFG_WLAN(70, "修改无线网络信息失败"),
+    NET_ERROR_SETCFG_WLANDEV(71, "选择无线网络设备失败"),
+    NET_ERROR_SETCFG_REGISTER(72, "修改主动注册参数配置失败"),
+    NET_ERROR_SETCFG_CAMERA(73, "修改摄像头属性配置失败"),
+    NET_ERROR_SETCFG_INFRARED(74, "修改红外报警配置失败"),
+    NET_ERROR_SETCFG_SOUNDALARM(75, "修改音频报警配置失败"),
+    NET_ERROR_SETCFG_STORAGE(76, "修改存储位置配置失败"),
+    NET_AUDIOENCODE_NOTINIT(77, "音频编码接口没有成功初始化"),
+    NET_DATA_TOOLONGH(78, "数据过长"),
+    NET_UNSUPPORTED(79, "设备不支持该操作"),
+    NET_DEVICE_BUSY(80, "设备资源不足"),
+    NET_SERVER_STARTED(81, "服务器已经启动"),
+    NET_SERVER_STOPPED(82, "服务器尚未成功启动"),
+    NET_LISTER_INCORRECT_SERIAL(83, "输入序列号有误"),
+    NET_QUERY_DISKINFO_FAILED(84, "获取硬盘信息失败"),
+    NET_ERROR_GETCFG_SESSION(85, "获取连接Session信息"),
+    NET_USER_FLASEPWD_TRYTIME(86, "输入密码错误超过限制次数"),
+    NET_LOGIN_ERROR_PASSWORD(100, "密码不正确"),
+    NET_LOGIN_ERROR_USER(101, "帐户不存在"),
+    NET_LOGIN_ERROR_TIMEOUT(102, "等待登录返回超时"),
+    NET_LOGIN_ERROR_RELOGGIN(103, "帐号已登录"),
+    NET_LOGIN_ERROR_LOCKED(104, "帐号已被锁定"),
+    NET_LOGIN_ERROR_BLACKLIST(105, "帐号已被列为禁止名单"),
+    NET_LOGIN_ERROR_BUSY(106, "资源不足,系统忙"),
+    NET_LOGIN_ERROR_CONNECT(107, "登录设备超时,请检查网络并重试"),
+    NET_LOGIN_ERROR_NETWORK(108, "网络连接失败"),
+    NET_LOGIN_ERROR_SUBCONNECT(109, "登录设备成功,但无法创建视频通道,请检查网络状况"),
+    NET_LOGIN_ERROR_MAXCONNECT(110, "超过最大连接数"),
+    NET_LOGIN_ERROR_PROTOCOL3_ONLY(111, "只支持3代协议"),
+    NET_LOGIN_ERROR_UKEY_LOST(112, "未插入U盾或U盾信息错误"),
+    NET_LOGIN_ERROR_NO_AUTHORIZED(113, "客户端IP地址没有登录权限"),
+    NET_LOGIN_ERROR_USER_OR_PASSOWRD(117, "账号或密码错误"),
+    NET_LOGIN_ERROR_DEVICE_NOT_INIT(118, "设备尚未初始化,不能登录,请先初始化设备"),
+    NET_RENDER_SOUND_ON_ERROR(120, "Render库打开音频出错"),
+    NET_RENDER_SOUND_OFF_ERROR(121, "Render库关闭音频出错"),
+    NET_RENDER_SET_VOLUME_ERROR(122, "Render库控制音量出错"),
+    NET_RENDER_ADJUST_ERROR(123, "Render库设置画面参数出错"),
+    NET_RENDER_PAUSE_ERROR(124, "Render库暂停播放出错"),
+    NET_RENDER_SNAP_ERROR(125, "Render库抓图出错"),
+    NET_RENDER_STEP_ERROR(126, "Render库步进出错"),
+    NET_RENDER_FRAMERATE_ERROR(127, "Render库设置帧率出错"),
+    NET_RENDER_DISPLAYREGION_ERROR(128, "Render库设置显示区域出错"),
+    NET_RENDER_GETOSDTIME_ERROR(129, "Render库获取当前播放时间出错"),
+    NET_GROUP_EXIST(140, "组名已存在"),
+    NET_GROUP_NOEXIST(141, "组名不存在"),
+    NET_GROUP_RIGHTOVER(142, "组的权限超出权限列表范围"),
+    NET_GROUP_HAVEUSER(143, "组下有用户,不能删除"),
+    NET_GROUP_RIGHTUSE(144, "组的某个权限被用户使用,不能删除"),
+    NET_GROUP_SAMENAME(145, "新组名同已有组名重复"),
+    NET_USER_EXIST(146, "用户已存在"),
+    NET_USER_NOEXIST(147, "用户不存在"),
+    NET_USER_RIGHTOVER(148, "用户权限超出组权限"),
+    NET_USER_PWD(149, "保留帐号,不容许修改密码"),
+    NET_USER_FLASEPWD(150, "密码不正确"),
+    NET_USER_NOMATCHING(151, "密码不匹配"),
+    NET_USER_INUSE(152, "账号正在使用中"),
+
+    NET_ERROR_GETCFG_ETHERNET(300, "获取网卡配置失败"),
+    NET_ERROR_GETCFG_WLAN(301, "获取无线网络信息失败"),
+    NET_ERROR_GETCFG_WLANDEV(302, "获取无线网络设备失败"),
+    NET_ERROR_GETCFG_REGISTER(303, "获取主动注册参数失败"),
+    NET_ERROR_GETCFG_CAMERA(304, "获取摄像头属性失败"),
+    NET_ERROR_GETCFG_INFRARED(305, "获取红外报警配置失败"),
+    NET_ERROR_GETCFG_SOUNDALARM(306, "获取音频报警配置失败"),
+    NET_ERROR_GETCFG_STORAGE(307, "获取存储位置配置失败"),
+    NET_ERROR_GETCFG_MAIL(308, "获取邮件配置失败"),
+    NET_CONFIG_DEVBUSY(309, "暂时无法设置"),
+    NET_CONFIG_DATAILLEGAL(310, "配置数据不合法"),
+    NET_ERROR_GETCFG_DST(311, "获取夏令时配置失败"),
+    NET_ERROR_SETCFG_DST(312, "设置夏令时配置失败"),
+    NET_ERROR_GETCFG_VIDEO_OSD(313, "获取视频OSD叠加配置失败"),
+    NET_ERROR_SETCFG_VIDEO_OSD(314, "设置视频OSD叠加配置失败"),
+    NET_ERROR_GETCFG_GPRSCDMA(315, "获取CDMA/GPRS网络配置失败"),
+    NET_ERROR_SETCFG_GPRSCDMA(316, "设置CDMA/GPRS网络配置失败"),
+    NET_ERROR_GETCFG_IPFILTER(317, "获取IP过滤配置失败"),
+    NET_ERROR_SETCFG_IPFILTER(318, "设置IP过滤配置失败"),
+    NET_ERROR_GETCFG_TALKENCODE(319, "获取语音对讲编码配置失败"),
+    NET_ERROR_SETCFG_TALKENCODE(320, "设置语音对讲编码配置失败"),
+    NET_ERROR_GETCFG_RECORDLEN(321, "获取录像打包长度配置失败"),
+    NET_ERROR_SETCFG_RECORDLEN(322, "设置录像打包长度配置失败"),
+    NET_DONT_SUPPORT_SUBAREA(323, "不支持网络硬盘分区"),
+    NET_ERROR_GET_AUTOREGSERVER(324, "获取设备上主动注册服务器信息失败"),
+    NET_ERROR_CONTROL_AUTOREGISTER(325, "主动注册重定向注册错误"),
+    NET_ERROR_DISCONNECT_AUTOREGISTER(326, "断开主动注册服务器错误"),
+    NET_ERROR_GETCFG_MMS(327, "获取mms配置失败"),
+    NET_ERROR_SETCFG_MMS(328, "设置mms配置失败"),
+    NET_ERROR_GETCFG_SMSACTIVATION(329, "获取短信激活无线连接配置失败"),
+    NET_ERROR_SETCFG_SMSACTIVATION(330, "设置短信激活无线连接配置失败"),
+    NET_ERROR_GETCFG_DIALINACTIVATION(331, "获取拨号激活无线连接配置失败"),
+    NET_ERROR_SETCFG_DIALINACTIVATION(332, "设置拨号激活无线连接配置失败"),
+    NET_ERROR_GETCFG_VIDEOOUT(333, "查询视频输出参数配置失败"),
+    NET_ERROR_SETCFG_VIDEOOUT(334, "设置视频输出参数配置失败"),
+    NET_ERROR_GETCFG_OSDENABLE(335, "获取osd叠加使能配置失败"),
+    NET_ERROR_SETCFG_OSDENABLE(336, "设置osd叠加使能配置失败"),
+    NET_ERROR_SETCFG_ENCODERINFO(337, "设置数字通道前端编码接入配置失败"),
+    NET_ERROR_GETCFG_TVADJUST(338, "获取TV调节配置失败"),
+    NET_ERROR_SETCFG_TVADJUST(339, "设置TV调节配置失败"),
+    NET_ERROR_CONNECT_FAILED(340, "请求建立连接失败"),
+    NET_ERROR_SETCFG_BURNFILE(341, "请求刻录文件上传失败"),
+    NET_ERROR_SNIFFER_GETCFG(342, "获取抓包配置信息失败"),
+    NET_ERROR_SNIFFER_SETCFG(343, "设置抓包配置信息失败"),
+    NET_ERROR_DOWNLOADRATE_GETCFG(344, "查询下载限制信息失败"),
+    NET_ERROR_DOWNLOADRATE_SETCFG(345, "设置下载限制信息失败"),
+    NET_ERROR_SEARCH_TRANSCOM(346, "查询串口参数失败"),
+    NET_ERROR_GETCFG_POINT(347, "获取预制点信息错误"),
+    NET_ERROR_SETCFG_POINT(348, "设置预制点信息错误"),
+    NET_SDK_LOGOUT_ERROR(349, "SDK没有正常登出设备"),
+    NET_ERROR_GET_VEHICLE_CFG(350, "获取车载配置失败"),
+    NET_ERROR_SET_VEHICLE_CFG(351, "设置车载配置失败"),
+    NET_ERROR_GET_ATM_OVERLAY_CFG(352, "获取atm叠加配置失败"),
+    NET_ERROR_SET_ATM_OVERLAY_CFG(353, "设置atm叠加配置失败"),
+    NET_ERROR_GET_ATM_OVERLAY_ABILITY(354, "获取atm叠加能力失败"),
+    NET_ERROR_GET_DECODER_TOUR_CFG(355, "获取解码器解码轮巡配置失败"),
+    NET_ERROR_SET_DECODER_TOUR_CFG(356, "设置解码器解码轮巡配置失败"),
+    NET_ERROR_CTRL_DECODER_TOUR(357, "控制解码器解码轮巡失败"),
+    NET_GROUP_OVERSUPPORTNUM(358, "超出设备支持最大用户组数目"),
+    NET_USER_OVERSUPPORTNUM(359, "超出设备支持最大用户数目"),
+    NET_ERROR_GET_SIP_CFG(368, "获取SIP配置失败"),
+    NET_ERROR_SET_SIP_CFG(369, "设置SIP配置失败"),
+    NET_ERROR_GET_SIP_ABILITY(370, "获取SIP能力失败"),
+    NET_ERROR_GET_WIFI_AP_CFG(371, "获取WIFI ap配置失败"),
+    NET_ERROR_SET_WIFI_AP_CFG(372, "设置WIFI ap配置失败"),
+    NET_ERROR_GET_DECODE_POLICY(373, "获取解码策略配置失败"),
+    NET_ERROR_SET_DECODE_POLICY(374, "设置解码策略配置失败"),
+    NET_ERROR_TALK_REJECT(375, "拒绝对讲"),
+    NET_ERROR_TALK_OPENED(376, "对讲被其他客户端打开"),
+    NET_ERROR_TALK_RESOURCE_CONFLICIT(377, "资源冲突"),
+    NET_ERROR_TALK_UNSUPPORTED_ENCODE(378, "不支持的语音编码格式"),
+    NET_ERROR_TALK_RIGHTLESS(379, "无权限"),
+    NET_ERROR_TALK_FAILED(380, "请求对讲失败"),
+    NET_ERROR_GET_MACHINE_CFG(381, "获取机器相关配置失败"),
+    NET_ERROR_SET_MACHINE_CFG(382, "设置机器相关配置失败"),
+    NET_ERROR_GET_DATA_FAILED(383, "设备无法获取当前请求数据"),
+    NET_ERROR_MAC_VALIDATE_FAILED(384, "MAC地址验证失败"),
+    NET_ERROR_GET_INSTANCE(385, "获取服务器实例失败"),
+    NET_ERROR_JSON_REQUEST(386, "生成的json字符串错误"),
+    NET_ERROR_JSON_RESPONSE(387, "响应的json字符串错误"),
+    NET_ERROR_VERSION_HIGHER(388, "协议版本低于当前使用的版本"),
+    NET_SPARE_NO_CAPACITY(389, "设备操作失败, 容量不足"),
+    NET_ERROR_SOURCE_IN_USE(390, "显示源被其他输出占用"),
+    NET_ERROR_REAVE(391, "高级用户抢占低级用户资源"),
+    NET_ERROR_NETFORBID(392, "禁止入网"),
+    NET_ERROR_GETCFG_MACFILTER(393, "获取MAC过滤配置失败"),
+    NET_ERROR_SETCFG_MACFILTER(394, "设置MAC过滤配置失败"),
+    NET_ERROR_GETCFG_IPMACFILTER(395, "获取IP/MAC过滤配置失败"),
+    NET_ERROR_SETCFG_IPMACFILTER(396, "设置IP/MAC过滤配置失败"),
+    NET_ERROR_OPERATION_OVERTIME(397, "当前操作超时"),
+    NET_ERROR_SENIOR_VALIDATE_FAILED(398, "高级校验失败"),
+    NET_ERROR_DEVICE_ID_NOT_EXIST(399, "设备ID不存在"),
+    NET_ERROR_UNSUPPORTED(400, "不支持当前操作"),
+    NET_ERROR_PROXY_DLLLOAD(401, "代理库加载失败"),
+    NET_ERROR_PROXY_ILLEGAL_PARAM(402, "代理用户参数不合法"),
+    NET_ERROR_PROXY_INVALID_HANDLE(403, "代理句柄无效"),
+    NET_ERROR_PROXY_LOGIN_DEVICE_ERROR(404, "代理登入前端设备失败"),
+    NET_ERROR_PROXY_START_SERVER_ERROR(405, "启动代理服务失败"),
+    NET_ERROR_SPEAK_FAILED(406, "请求喊话失败"),
+    NET_ERROR_NOT_SUPPORT_F6(407, "设备不支持此F6接口调用"),
+    NET_ERROR_CD_UNREADY(408, "光盘未就绪"),
+    NET_ERROR_DIR_NOT_EXIST(409, "目录不存在"),
+    NET_ERROR_UNSUPPORTED_SPLIT_MODE(410, "设备不支持的分割模式"),
+    NET_ERROR_OPEN_WND_PARAM(411, "开窗参数不合法"),
+    NET_ERROR_LIMITED_WND_COUNT(412, "开窗数量超过限制"),
+    NET_ERROR_UNMATCHED_REQUEST(413, "请求命令与当前模式不匹配"),
+
+    NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR(414, "Render库启用高清图像内部调整策略出错"),
+    NET_ERROR_UPGRADE_FAILED(415, "设备升级失败"),
+    NET_ERROR_NO_TARGET_DEVICE(416, "找不到目标设备"),
+    NET_ERROR_NO_VERIFY_DEVICE(417, "找不到验证设备"),
+    NET_ERROR_CASCADE_RIGHTLESS(418, "无级联权限"),
+    NET_ERROR_LOW_PRIORITY(419, "低优先级"),
+    NET_ERROR_REMOTE_REQUEST_TIMEOUT(420, "远程设备请求超时"),
+    NET_ERROR_LIMITED_INPUT_SOURCE(421, "输入源超出最大路数限制"),
+    NET_ERROR_SET_LOG_PRINT_INFO(422, "设置日志打印失败"),
+    NET_ERROR_PARAM_DWSIZE_ERROR(423, "入参的dwsize字段出错"),
+    NET_ERROR_LIMITED_MONITORWALL_COUNT(424, "电视墙数量超过上限"),
+    NET_ERROR_PART_PROCESS_FAILED(425, "部分过程执行失败"),
+    NET_ERROR_TARGET_NOT_SUPPORT(426, "该功能不支持转发"),
+    NET_ERROR_VISITE_FILE(510, "访问文件失败"),
+    NET_ERROR_DEVICE_STATUS_BUSY(511, "设备忙"),
+    NET_USER_PWD_NOT_AUTHORIZED(512, "修改密码无权限"),
+    NET_USER_PWD_NOT_STRONG(513, "密码强度不够"),
+    NET_ERROR_NO_SUCH_CONFIG(514, "没有对应的配置"),
+    NET_ERROR_AUDIO_RECORD_FAILED(515, "录音失败"),
+    NET_ERROR_SEND_DATA_FAILED(516, "数据发送失败"),
+    NET_ERROR_OBSOLESCENT_INTERFACE(517, "废弃接口"),
+    NET_ERROR_INSUFFICIENT_INTERAL_BUF(518, "内部缓冲不足"),
+    NET_ERROR_NEED_ENCRYPTION_PASSWORD(519, "修改设备ip时,需要校验密码"),
+    NET_ERROR_NOSUPPORT_RECORD(520, "设备不支持此记录集"),
+    NET_ERROR_SERIALIZE_ERROR(1010, "数据序列化错误"),
+    NET_ERROR_DESERIALIZE_ERROR(1011, "数据反序列化错误"),
+    NET_ERROR_LOWRATEWPAN_ID_EXISTED(1012, "该无线ID已存在"),
+    NET_ERROR_LOWRATEWPAN_ID_LIMIT(1013, "无线ID数量已超限"),
+    NET_ERROR_LOWRATEWPAN_ID_ABNORMAL(1014, "无线异常添加"),
+    NET_ERROR_ENCRYPT(1015, "加密数据失败"),
+    NET_ERROR_PWD_ILLEGAL(1016, "新密码不合规范"),
+    NET_ERROR_DEVICE_ALREADY_INIT(1017, "设备已经初始化"),
+    NET_ERROR_SECURITY_CODE(1018, "安全码错误"),
+    NET_ERROR_SECURITY_CODE_TIMEOUT(1019, "安全码超出有效期"),
+    NET_ERROR_GET_PWD_SPECI(1020, "获取密码规范失败"),
+    NET_ERROR_NO_AUTHORITY_OF_OPERATION(1021, "无权限进行该操作"),
+    NET_ERROR_DECRYPT(1022, "解密数据失败"),
+    NET_ERROR_2D_CODE(1023, "2D code校验失败"),
+    NET_ERROR_INVALID_REQUEST(1024, "非法的RPC请求"),
+    NET_ERROR_PWD_RESET_DISABLE(1025, "密码重置功能已关闭"),
+    NET_ERROR_PLAY_PRIVATE_DATA(1026, "显示私有数据,比如规则框等失败"),
+    NET_ERROR_ROBOT_OPERATE_FAILED(1027, "机器人操作失败"),
+    NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT(1028, "图片大小超限"),
+    NET_ERROR_USERID_INVALID(1029, "用户ID不存在"),
+    NET_ERROR_EXTRACTFEATURE_FAILED(1030, "照片特征值提取失败"),
+    NET_ERROR_PHOTO_EXIST(1031, "照片已存在"),
+    NET_ERROR_PHOTO_OVERFLOW(1032, "照片数量超过上限"),
+    NET_ERROR_CHANNEL_ALREADY_OPENED(1033, "通道已经打开"),
+    NET_ERROR_CREATE_SOCKET(1034, "创建套接字失败"),
+    NET_ERROR_CHANNEL_NUM(1035, "通道号错误"),
+    NET_ERROR_PHOTO_FORMAT(1036, "图片格式错误"),
+    /**
+     * 内部错误(比如:相关硬件问题,获取公钥失败,内部接口调用失败,写文件失败等等)
+     */
+    NET_ERROR_DIGITAL_CERTIFICATE_INTERNAL_ERROR(1037, "内部错误"),
+    /**
+     * 获取设备ID失败
+     */
+    NET_ERROR_DIGITAL_CERTIFICATE_GET_ID_FAILED(1038, "获取设备ID失败"),
+    NET_ERROR_DIGITAL_CERTIFICATE_IMPORT_ILLEGAL(1039, "证书文件非法(格式不支持或者不是证书文件)"),
+    NET_ERROR_DIGITAL_CERTIFICATE_SN_ERROR(1040, "证书sn重复或错误或不规范"),
+    /**
+     * (本地设备证书与系统中的不匹配devid_cryptoID,或者对端的不符合规则(devid_crytoID))
+     */
+    NET_ERROR_DIGITAL_CERTIFICATE_COMMON_NAME_ILLEGAL(1041, "证书commonName非法"),
+    NET_ERROR_DIGITAL_CERTIFICATE_NO_ROOT_CERT(1042, "根证书未导入或不存在"),
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_REVOKED(1043, "证书被吊销"),
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_INVALID(1044, "证书不可用或未生效或已过期"),
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_ERROR_SIGN(1045, "证书签名不匹配"),
+    NET_ERROR_DIGITAL_CERTIFICATE_COUNTS_UPPER_LIMIT(1046, "超出证书导入上限"),
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_NO_EXIST(1047, "证书文件不存在(导出证书或者获取对应证书的公钥)"),
+    NET_ERROR_DEFULAT_SEARCH_PORT(1048, "默认搜索端口无法使用(5050,37810)"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_STOUP(1049, "批量添加人脸停止"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_ERROR(1050, "批量添加人脸失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED(1051, "组ID超过最大值"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_NOT_IN_REGISTER_GROUP(1052, "组ID不存在或为空"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_NOT_FOUND(1053, "无图片数据"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GENERATE_GROUP_ID_FAILED(1054, "生成组ID超出范围"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_SET_CONFIG_FAILED(1055, "设置配置失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_OPEN_FAILED(1056, "图片文件打开失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_READ_FAILED(1057, "图片文件读取失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_WRITE_FAILED(1058, "图片文件写入失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_DPI_ERROR(1059, "图片分辨率异常"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_PX_ERROR(1060, "图片像素异常"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_SIZE_ERROR(1061, "图片大小不对"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_DATA_BASE_ERROR(1062, "数据库操作失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FACE_MAX_NUM(1063, "人员数量超过限制"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_BIRTH_DAY_FORMAT_ERROR(1064, "生日日期格式错误"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_UID_ERROR(1065, "人员UID不存在或为空"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_TOKEN_ERROR(1066, "令牌不存在或为空"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_BEGIN_NUM_OVER_RUN(1067, "查询起始数大于总数"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_NUM_ZERO(1068, "需手动建模人数为0"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_INIT_ERROR(1069, "建模分析器启动失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_AUTO_ABSTRACT_STATE(1070, "设备正在自动建模"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_STATE(1071, "设备正在手动建模"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_IM_EX_STATE(1072, "设备正在导入导出"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_PIC_WRITE_FAILED(1073, "图片写入失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_SPACE_EXCEED(1074, "超出人脸库空间大小限制"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_PIC_COUNT_EXCEED(1075, "超出人脸库图片数量限制"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_NOT_FOUND(1076, "人脸库不存在"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FIND_RECORDS_ERROR(1077, "查询原人脸库数据结果无效"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_PERSON_ERROR(1078, "删除原人脸库数据失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_GROUP_ERROR(1079, "删除人脸库失败"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_NAME_FORMAT_ERROR(1080, "命名格式错误"),
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILEPATH_NOT_SET(1081, "图片保存路径未设置"),
+    NET_ERROR_DEVICE_PARSE_PROTOCOL(1079, "设备解析协议错误"),
+    NET_ERROR_DEVICE_INVALID_REQUEST(1080, "设备返回无效请求"),
+    NET_ERROR_DEVICE_INTERNAL_ERROR(1081, "设备内部错误"),
+    NET_ERROR_DEVICE_REQUEST_TIMEOUT(1082, "设备内部请求超时"),
+    NET_ERROR_DEVICE_KEEPALIVE_FAIL(1083, "设备保活失败"),
+    NET_ERROR_DEVICE_NETWORK_ERROR(1084, "设备网络错误"),
+    NET_ERROR_DEVICE_UNKNOWN_ERROR(1085, "设备内部未知错误"),
+    NET_ERROR_DEVICE_COM_INTERFACE_NOTFOUND(1086, "设备组件接口没有找到"),
+    NET_ERROR_DEVICE_COM_IMPLEMENT_NOTFOUND(1087, "设备组件实现没有找到"),
+    NET_ERROR_DEVICE_COM_NOTFOUND(1088, "设备接入组件没有找到"),
+    NET_ERROR_DEVICE_COM_INSTANCE_NOTEXIST(1089, "设备接入组件实例不存在"),
+    NET_ERROR_DEVICE_CREATE_COM_FAIL(1090, "设备组件工厂创建组件失败"),
+    NET_ERROR_DEVICE_GET_COM_FAIL(1091, "设备组件工厂获取组件实例失败"),
+    NET_ERROR_DEVICE_BAD_REQUEST(1092, "设备业务请求不被接受"),
+    NET_ERROR_DEVICE_REQUEST_IN_PROGRESS(1093, "设备已经在处理请求,不接受重复请求"),
+    NET_ERROR_DEVICE_LIMITED_RESOURCE(1094, "设备资源不足"),
+    NET_ERROR_DEVICE_BUSINESS_TIMEOUT(1095, "设备业务超时"),
+    NET_ERROR_DEVICE_TOO_MANY_REQUESTS(1096, "设备接收过多请求"),
+    NET_ERROR_DEVICE_NOT_ALREADY(1097, "设备未准备就绪,不接受业务请求"),
+    NET_ERROR_DEVICE_SEARCHRECORD_TIMEOUT(1098, "设备录像查询超时"),
+    NET_ERROR_DEVICE_SEARCHTIME_INVALID(1099, "设备录像查询时间无效"),
+    NET_ERROR_DEVICE_SSID_INVALID(1100, "设备校验SSID无效"),
+    NET_ERROR_DEVICE_CHANNEL_STREAMTYPE_ERROR(1101, "设备校验通道号或码流类型无效"),
+    NET_ERROR_DEVICE_STREAM_PACKINGFORMAT_UNSUPPORT(1102, "设备不支持该码流打包格式"),
+    NET_ERROR_DEVICE_AUDIO_ENCODINGFORMAT_UNSUPPORT(1103, "设备不支持该语音编码格式"),
+    NET_ERROR_SECURITY_ERROR_SUPPORT_GUI(1104, " 校验请求安全码失败,可使用本地GUI方式重置密码"),
+    NET_ERROR_SECURITY_ERROR_SUPPORT_MULT(1105, "校验请求安全码失败,可使用DH渠道APP、configtool工具重置密码"),
+    NET_ERROR_SECURITY_ERROR_SUPPORT_UNIQUE(1106, "校验请求安全码失败,可登陆Web页面重置密码"),
+    NET_ERROR_STREAMCONVERTOR_DEFECT(1107, "转码库缺失"),
+
+
+    NET_ERROR_SECURITY_GENERATE_SAFE_CODE(1108, "调用DH加密库产生安全码失败"),
+    NET_ERROR_SECURITY_GET_CONTACT(1109, "获取联系方式失败"),
+    NET_ERROR_SECURITY_GET_QRCODE(1110, "获取重置密码的二维码信息失败"),
+    NET_ERROR_SECURITY_CANNOT_RESET(1111, "设备未初始化,无法重置"),
+    NET_ERROR_SECURITY_NOT_SUPPORT_CONTACT_MODE(1112, "不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱"),
+    NET_ERROR_SECURITY_RESPONSE_TIMEOUT(1113, "对端响应超时"),
+    NET_ERROR_SECURITY_AUTHCODE_FORBIDDEN(1114, "尝试校验AuthCode次数过多,禁止校验"),
+    NET_ERROR_TRANCODE_LOGIN_REMOTE_DEV(1115, "(虚拟转码)登陆远程设备失败"),
+    NET_ERROR_TRANCODE_NOFREE_CHANNEL(1116, "(虚拟转码)没有可用的通道资源"),
+    NET_ERROR_VK_INFO_DECRYPT_FAILED(1117, "VK信息解密失败"),
+    NET_ERROR_VK_INFO_DESERIALIZE_FAILED(1118, "VK信息解析失败"),
+    NET_ERROR_GDPR_ABILITY_NOT_ENABLE(1119, "SDK GDPR功能未使能"),
+
+    /*门禁快速导入及复核错误码 start*/
+    NET_ERROR_FAST_CHECK_NO_AUTH(1120, "门禁快速复核:无权限"),
+    NET_ERROR_FAST_CHECK_NO_FILE(1121, "门禁快速复核:文件不存在"),
+    NET_ERROR_FAST_CHECK_FILE_FAIL(1122, "门禁快速复核:文件准备失败"),
+    NET_ERROR_FAST_CHECK_BUSY(1123, "门禁快速复核:系统忙"),
+    NET_ERROR_FAST_CHECK_NO_PASSWORD(1124, "门禁快速复核:未定义密码, 不允许导出"),
+    NET_ERROR_IMPORT_ACCESS_SEND_FAILD(1125, "门禁快速导入:发送门禁数据失败"),
+    NET_ERROR_IMPORT_ACCESS_BUSY(1126, "门禁快速导入:系统忙, 已经有导入任务"),
+    NET_ERROR_IMPORT_ACCESS_DATAERROR(1127, "门禁快速导入:数据包检验失败"),
+    NET_ERROR_IMPORT_ACCESS_DATAINVALID(1128, "门禁快速导入:数据包非法"),
+    NET_ERROR_IMPORT_ACCESS_SYNC_FALID(1129, "门禁快速导入:同步失败,数据库无法生成"),
+    NET_ERROR_IMPORT_ACCESS_DBFULL(1130, "门禁快速导入:数据库已满, 无法导入"),
+    NET_ERROR_IMPORT_ACCESS_SDFULL(1131, "门禁快速导入:存储空间已满, 无法导入"),
+    NET_ERROR_IMPORT_ACCESS_CIPHER_ERROR(1132, "门禁快速导入:导入压缩包密码不对"),
+    /*门禁快速导入及复核错误码 end*/
+
+    NET_ERROR_INVALID_PARAM(1133, "参数无效"),
+    NET_ERROR_INVALID_PASSWORD(1134, "密码无效"),
+    NET_ERROR_INVALID_FINGERPRINT(1135, "信息无效"),
+    NET_ERROR_INVALID_FACE(1136, "人脸无效"),
+    NET_ERROR_INVALID_CARD(1137, "卡无效"),
+    NET_ERROR_INVALID_USER(1138, "用户无效"),
+    NET_ERROR_GET_SUBSERVICE(1139, "能力集子服务获取失败"),
+    NET_ERROR_GET_METHOD(1140, "获取组件的方法集失败"),
+    NET_ERROR_GET_SUBCAPS(1141, "获取资源实体能力集失败"),
+    NET_ERROR_UPTO_INSERT_LIMIT(1142, "已达插入上限"),
+    NET_ERROR_UPTO_MAX_INSERT_RATE(1143, "已达最大插入速度"),
+    NET_ERROR_ERASE_FINGERPRINT(1144, "清除信息数据失败"),
+    NET_ERROR_ERASE_FACE(1145, "清除人脸数据失败"),
+    NET_ERROR_ERASE_CARD(1146, "清除卡数据失败"),
+    NET_ERROR_NO_RECORD(1147, "没有记录"),
+    NET_ERROR_NOMORE_RECORDS(1148, "查找到最后,没有更多记录"),
+    NET_ERROR_RECORD_ALREADY_EXISTS(1149, "下发卡或信息时,数据重复"),
+    NET_ERROR_EXCEED_MAX_FINGERPRINT_PERUSER(1150, "超过个人最大信息记录数"),
+    NET_ERROR_EXCEED_MAX_CARD_PERUSER(1151, "超过个人最大卡片记录数"),
+    NET_ERROR_EXCEED_ADMINISTRATOR_LIMIT(1152, "超过门禁管理员个数限制"),
+
+    NET_LOGIN_ERROR_DEVICE_NOT_SUPPORT_HIGHLEVEL_SECURITY_LOGIN(1153, "设备不支持高安全等级登录"),
+    NET_LOGIN_ERROR_DEVICE_ONLY_SUPPORT_HIGHLEVEL_SECURITY_LOGIN(1154, "设备只支持高安全等级登录"),
+
+    NET_ERROR_VIDEO_CHANNEL_OFFLINE(1155, "此视频通道处于离线,拉流失败"),
+    NET_ERROR_USERID_FORMAT_INCORRECT(1156, "用户编号不规范"),
+    NET_ERROR_CANNOT_FIND_CHANNEL_RELATE_TO_SN(1157, "找不到该SN对应的通道"),
+    NET_ERROR_TASK_QUEUE_OF_CHANNEL_IS_FULL(1158, "该通道的任务队列满"),
+    NET_ERROR_APPLY_USER_INFO_BLOCK_FAIL(1159, "申请不到新的用户信息(权限)块"),
+    NET_ERROR_EXCEED_MAX_PASSWD_PERUSER(1160, "用户密码数量超过限制"),
+    NET_ERROR_PARSE_PROTOCOL(1161, "设备内部异常引起协议解析错误"),
+    NET_ERROR_CARD_NUM_EXIST(1162, "卡号已存在"),
+    NET_ERROR_FINGERPRINT_EXIST(1163, "信息已存在"),
+
+    NET_ERROR_OPEN_PLAYGROUP_FAIL(1164, "打开播放组失败"),
+    NET_ERROR_ALREADY_IN_PLAYGROUP(1165, "已位于播放组中"),
+    NET_ERROR_QUERY_PLAYGROUP_TIME_FAIL(1166, "查询播放组时间失败"),
+    NET_ERROR_SET_PLAYGROUP_BASECHANNEL_FAIL(1167, "设置播放组基准通道失败"),
+    NET_ERROR_SET_PLAYGROUP_DIRECTION_FAIL(1168, "设置播放组方向失败"),
+    NET_ERROR_SET_PLAYGROUP_SPEED_FAIL(1169, "设置播放组速度失败"),
+    NET_ERROR_ADD_PLAYGROUP_FAIL(1170, "加入播放组失败"),
+
+    NET_ERROR_EXPORT_AOL_LOGFILE_NO_AUTH(1171, " 导出AOL日志:无权限"),
+    NET_ERROR_EXPORT_AOL_LOGFILE_NO_FILE(1172, "导出AOL日志:文件不存在"),
+    NET_ERROR_EXPORT_AOL_LOGFILE_FILE_FAIL(1173, "导出AOL日志:文件准备失败"),
+    NET_ERROR_EXPORT_AOL_LOGFILE_BUSY(1174, "导出AOL日志:系统忙"),
+
+    /**
+     * 设备上APP安装相关错误码
+     */
+    NET_ERROR_EMPTY_LICENSE(1175, "License为空"),
+    NET_ERROR_UNSUPPORTED_MODE(1176, "不支持该模式"),
+    NET_ERROR_URL_APP_NOT_MATCH(1177, "URL与APP不匹配"),
+    NET_ERROR_READ_INFO_FAILED(1178, "读取信息失败"),
+    NET_ERROR_WRITE_FAILED(1179, "写入失败"),
+    NET_ERROR_NO_SUCH_APP(1180, "未找到APP"),
+    NET_ERROR_VERIFIF_FAILED(1181, "校验失败"),
+    NET_ERROR_LICENSE_OUT_DATE(1182, "License已过期"),
+
+    NET_ERROR_UPGRADE_PROGRAM_TOO_OLD(1183, "升级程序版本过低"),
+    NET_ERROR_SECURE_TRANSMIT_BEEN_CUT(1184, "加密传输被裁剪"),
+    NET_ERROR_DEVICE_NOT_SUPPORT_SECURE_TRANSMIT(1185, "设备不支持安全传输"),
+
+    NET_ERROR_EXTRA_STREAM_LOGIN_FAIL_CAUSE_BY_MAIN_STREAM(1186, "主码流成功的情况下,辅码流登录失败"),
+    NET_ERROR_EXTRA_STREAM_CLOSED_BY_REMOTE_DEVICE(1187, "辅码流被前端关闭"),
+
+    /*人脸库导入导出错误码 start*/
+    NET_ERROR_IMPORT_FACEDB_SEND_FAILD(1188, "人脸库导入:发送人脸库数据失败"),
+    NET_ERROR_IMPORT_FACEDB_BUSY(1189, "人脸库导入:系统忙, 已经有导入任务"),
+    NET_ERROR_IMPORT_FACEDB_DATAERROR(1190, "人脸库导入:数据包检验失败"),
+    NET_ERROR_IMPORT_FACEDB_DATAINVALID(1191, "人脸库导入:数据包非法"),
+    NET_ERROR_IMPORT_FACEDB_UPGRADE_FAILD(1192, "人脸库导入:上传失败"),
+    NET_ERROR_IMPORT_FACEDB_NO_AUTHORITY(1193, "人脸库导入:用户无权限"),
+    NET_ERROR_IMPORT_FACEDB_ABNORMAL_FILE(1194, " 人脸库导入:文件格式异常"),
+    NET_ERROR_IMPORT_FACEDB_SYNC_FALID(1195, "人脸库导入:同步失败,数据库无法生成"),
+    NET_ERROR_IMPORT_FACEDB_DBFULL(1196, "人脸库导入:数据库已满, 无法导入"),
+    NET_ERROR_IMPORT_FACEDB_SDFULL(1197, "人脸库导入:存储空间已满, 无法导入"),
+    NET_ERROR_IMPORT_FACEDB_CIPHER_ERROR(1198, "人脸库导入:导入压缩包密码不对"),
+
+    NET_ERROR_EXPORT_FACEDB_NO_AUTH(1199, "人脸库导出:无权限"),
+    NET_ERROR_EXPORT_FACEDB_NO_FILE(1200, "人脸库导出:文件不存在"),
+    NET_ERROR_EXPORT_FACEDB_FILE_FAIL(1201, "人脸库导出:文件准备失败"),
+    NET_ERROR_EXPORT_FACEDB_BUSY(1202, "人脸库导出:系统忙"),
+    NET_ERROR_EXPORT_FACEDB_NO_PASSWORD(1203, "人脸库导出:未定义密码, 不允许导出"),
+    /*人脸库导入导出错误码 end*/
+
+    /* 人脸图片操作错误码 范围 _EC(1300) ~ _EC(1400) */
+    NET_ERROR_FACEMANAGER_NO_FACE_DETECTED(1300, "图片中检测到0个人脸目标"),
+    NET_ERROR_FACEMANAGER_MULTI_FACE_DETECTED(1301, "图片中检测到多个人脸,无法返回特征"),
+    NET_ERROR_FACEMANAGER_PICTURE_DECODING_ERROR(1302, "图片解码错误"),
+    NET_ERROR_FACEMANAGER_LOW_PICTURE_QUALITY(1303, "图片质量太低"),
+    /**
+     * 结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别
+     */
+    NET_ERROR_FACEMANAGER_NOT_RECOMMENDED(1304, "结果不推荐使用"),
+    NET_ERROR_FACEMANAGER_FACE_FEATURE_ALREADY_EXIST(1305, "人脸特征已存在"),
+    NET_ERROR_FACEMANAGER_FACE_ANGLE_OVER_THRESHOLDS(1307, "人脸角度超过配置阈值"),
+    NET_ERROR_FACEMANAGER_FACE_RADIO_EXCEEDS_RANGE(1308, "人脸占比超出范围,算法建议占比:不要超过2/3,不要小于1/3"),
+    NET_ERROR_FACEMANAGER_FACE_OVER_EXPOSED(1309, "人脸过爆"),
+    NET_ERROR_FACEMANAGER_FACE_UNDER_EXPOSED(1310, "人脸欠爆"),
+    NET_ERROR_FACEMANAGER_BRIGHTNESS_IMBALANCE(1311, "人脸亮度不均衡 ,用于判断阴阳脸"),
+    NET_ERROR_FACEMANAGER_FACE_LOWER_CONFIDENCE(1312, "人脸的置信度低"),
+    NET_ERROR_FACEMANAGER_FACE_LOW_ALIGN(1313, "人脸对齐分数低"),
+    NET_ERROR_FACEMANAGER_FRAGMENTARY_FACE_DETECTED(1314, "人脸存在遮挡、残缺不全"),
+    NET_ERROR_FACEMANAGER_PUPIL_DISTANCE_NOT_ENOUGH(1315, "人脸瞳距小于阈值"),
+    NET_ERROR_FACEMANAGER_FACE_DATA_DOWNLOAD_FAILED(1316, " 人脸数据下载失败");
+
+    private final int code;
+    private final String error;
+
+    private ENUMERROR(int code, String error) {
+        this.code = code;
+        this.error = error;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getError() {
+        return error;
+    }
+
+    public static ENUMERROR getENUMError() {
+        int code = NetSDKLib.NETSDK_INSTANCE.CLIENT_GetLastError() & 0x7fffffff;
+        for (ENUMERROR error : ENUMERROR.values()) {
+            if (error.getCode() == code) {
+                return error;
+            }
+        }
+        return NET_UNDEFIND;
+    }
+
+    /**
+     * 错误信息
+     */
+    public static String getErrorMessage() {
+        return getENUMError().getError();
+    }
+
+    /**
+     * 错误码
+     */
+    public static int getErrorCode() {
+        return getENUMError().getCode();
+    }
+
+    /**
+     * 错误码+错误信息
+     */
+    public static String getFullError() {
+        ENUMERROR error = getENUMError();
+        return error.getCode() + "," + error.getError();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java
new file mode 100644
index 0000000..6ed6026
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_IN_REGION_STATUS.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 区域内状态
+ * @date 2022/03/31
+ */
+public enum ENUM_IN_REGION_STATUS {
+	// 未知
+	ENUM_IN_REGION_STATUS_UNKNOWN(0, "未知"),
+
+	// 在区域内
+	ENUM_IN_REGION_STATUS_YES(1, "在区域内"),
+
+	// 不在区域内
+	ENUM_IN_REGION_STATUS_NO(2, "不在区域内");
+
+	private int value;
+	private String note;
+
+	private ENUM_IN_REGION_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (ENUM_IN_REGION_STATUS enumType : ENUM_IN_REGION_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (ENUM_IN_REGION_STATUS enumType : ENUM_IN_REGION_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_MOTION_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_MOTION_STATUS.java
new file mode 100644
index 0000000..831e2c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_MOTION_STATUS.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 运动状态
+ * @date 2022/03/31
+ */
+public enum ENUM_MOTION_STATUS {
+	// 未知
+	ENUM_MOTION_STATUS_UNKNOWN(0, "未知"),
+
+	// 静止
+	ENUM_MOTION_STATUS_STATIC(1, "静止"),
+
+	// 运动
+	ENUM_MOTION_STATUS_MOVE(2, "运动");
+
+	private int value;
+	private String note;
+
+	private ENUM_MOTION_STATUS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (ENUM_MOTION_STATUS enumType : ENUM_MOTION_STATUS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (ENUM_MOTION_STATUS enumType : ENUM_MOTION_STATUS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java
new file mode 100644
index 0000000..e95cc3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 最后传递成功的数据包类型
+ * @date 2021/11/07
+ */
+public enum ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE {
+	// 未知
+	ENUM_RECORDBACKUP_FILE_PROGRESS_UNKNOWN(0, "未知"),
+
+	// 文件头包
+	ENUM_RECORDBACKUP_FILE_PROGRESS_HEADER_PACKAGE(1, "文件头包"),
+
+	// 索引包
+	ENUM_RECORDBACKUP_FILE_PROGRESS_INDEX_PACKAGE(2, "索引包"),
+	// 码流包
+	ENUM_RECORDBACKUP_FILE_PROGRESS_STREAM_PACKET(3, "码流包"),
+
+	// 文件尾空包
+	ENUM_RECORDBACKUP_FILE_PROGRESS_EMPTY_PACKET(4, "文件尾空包");
+
+	private int value;
+	private String note;
+
+	private ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE enumType : ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE enumType : ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java
new file mode 100644
index 0000000..eff0c3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_RECORDBACKUP_FILE_TYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 远程录像备份录像类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/27 20:25
+ */
+public enum ENUM_RECORDBACKUP_FILE_TYPE {
+
+    ENUM_RECORDBACKUP_FILE_COMMON(0, "普通录像"),
+    ENUM_RECORDBACKUP_FILE_ALARM(1, "报警录像"),
+    ENUM_RECORDBACKUP_FILE_MOTIONDETECT(2, "动检录像");
+
+    private final int value;
+    private final String note;
+
+    ENUM_RECORDBACKUP_FILE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (ENUM_RECORDBACKUP_FILE_TYPE enumType : ENUM_RECORDBACKUP_FILE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (ENUM_RECORDBACKUP_FILE_TYPE enumType : ENUM_RECORDBACKUP_FILE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static ENUM_RECORDBACKUP_FILE_TYPE getEnum(int value) {
+        for (ENUM_RECORDBACKUP_FILE_TYPE e : ENUM_RECORDBACKUP_FILE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return ENUM_RECORDBACKUP_FILE_TYPE.ENUM_RECORDBACKUP_FILE_COMMON;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java
new file mode 100644
index 0000000..f0cb9fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/ENUM_VAGEOBJECT_ACTION.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 物体动作支持类型
+ * @date 2021/10/09
+ */
+public enum ENUM_VAGEOBJECT_ACTION {
+	// 未知类型
+	ENUM_VAGEOBJECT_ACTION_UNKNOWN(0, "未知类型"),
+	// 第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体
+	ENUM_VAGEOBJECT_ACTION_APPEAR(1, "第一次出现在检测区域中,或者跟踪时物理分离动作中尚未确认的新物体"),
+	// 正在运动,物体被正常跟踪
+	ENUM_VAGEOBJECT_ACTION_MOVE(2, "正在运动,物体被正常跟踪"),
+	// 物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中
+	ENUM_VAGEOBJECT_ACTION_STAY(3, "物体停止运动,这个物体不会在出现在下一帧物体列表中,物体开始移动后再恢复在列表中"),
+	// 物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用
+	ENUM_VAGEOBJECT_ACTION_REMOVE(4, "物体从原来的区域移除,或者被遮盖,或者跟踪失败,移除的物体ID不会被自动删除,并且物体重现出现是有可能再次被使用"),
+	// 运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现
+	ENUM_VAGEOBJECT_ACTION_DISAPPEAR(5, "运动到跟踪区域之外,或者达到了算法跟踪物体的上限而被清除,消失的物体ID将不再出现"),
+	// 从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离
+	ENUM_VAGEOBJECT_ACTION_SPLIT(6, "从其他物体中分离出来,可以用来检测物体遗留,关联ID表示从这个ID对应物体分离"),
+	// 合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体
+	ENUM_VAGEOBJECT_ACTION_MERGE(7, "合并到其他物体,可以用来检查物体保全,关联ID表示合并到这个ID对相应的物体"),
+	// 如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID
+	ENUM_VAGEOBJECT_ACTION_RENAME(8, "如果算法无法确定分离动作中某个物体是原先同一个物体,应该创建先一个新的物体,证据充分后再重命名为旧的物体ID,关联ID表示暂时使用的新的ID");
+
+	private int value;
+	private String note;
+
+	private ENUM_VAGEOBJECT_ACTION(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (ENUM_VAGEOBJECT_ACTION enumType : ENUM_VAGEOBJECT_ACTION.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (ENUM_VAGEOBJECT_ACTION enumType : ENUM_VAGEOBJECT_ACTION.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/GetDevCaps_Type.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/GetDevCaps_Type.java
new file mode 100644
index 0000000..7708fb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/GetDevCaps_Type.java
@@ -0,0 +1,196 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/12
+ */
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.NET_IN_VIDEOIN_DAYNIGHT_CAPS;
+import com.netsdk.lib.structure.NET_OUT_VIDEOIN_DAYNIGHT_CAPS;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @description 设备能力类型,对应 {@link NetSDKLib#CLIENT_GetDevCaps(NetSDKLib.LLong, int, Pointer, Pointer,
+ *     int)}的nType参数 {@see}注解为暂未实现的封装 {@link}注解对应已有实现封装
+ * @date 2021/4/12
+ * @version 1.0
+ */
+public enum GetDevCaps_Type {
+  /** 电源时序器能力,pInBuf对应{@see NET_IN_CAP_SEQPOWER}, pOutBuf对应{@see NET_OUT_CAP_SEQPOWER} */
+  NET_DEV_CAP_SEQPOWER(0x01, "电源时序器能力"),
+  /** pInBuf对应NET_IN_ENCODE_CFG_CAPS pOutBuf对应 NET_OUT_ENCODE_CFG_CAPS */
+  NET_ENCODE_CFG_CAPS(0x02, "设备编码配置对应能力"),
+  /** pInBuf=NET_IN_VIDEOIN_FISHEYE_CAPS, pOutBuf=NET_OUT_VIDEOIN_FISHEYE_CAPS* */
+  NET_VIDEOIN_FISHEYE_CAPS(0x03, "鱼眼能力"),
+  /** pInBuf=NET_IN_COMPOSITE_CAPS, pOutBuf=NET_OUT_COMPOSITE_CAPS */
+  NET_COMPOSITE_CAPS(0x04, "根据指定的窗口号预先获取融合后的能力集"),
+  /** pInBuf=NET_IN_VIDEO_DETECT_CAPS, pOutBuf=NET_OUT_VIDEO_DETECT_CAPS */
+  NET_VIDEO_DETECT_CAPS(0x05, "获取视频检测输入能力集"),
+  /**
+   * pInBuf对应{@link NetSDKLib.NET_IN_THERMO_GETCAPS}, pOutBuf对应{@link
+   * NetSDKLib.NET_OUT_THERMO_GETCAPS}
+   */
+  NET_THERMO_GRAPHY_CAPS(0x06, "热成像摄像头属性能力"),
+  /**
+   * pInBuf对应{@link NetSDKLib.NET_IN_RADIOMETRY_GETCAPS}, pOutBuf对应{@link
+   * NetSDKLib.NET_OUT_RADIOMETRY_GETCAPS}
+   */
+  NET_RADIOMETRY_CAPS(0x07, "热成像测温全局配置能力"),
+  /** pInBuf = NET_IN_POS_GETCAPS,pOutBuf = NET_OUT_POS_GETCAPS */
+  NET_POS_CAPS(0x08, "POS机能力"),
+  /** pInBuf = NET_IN_USER_MNG_GETCAPS, pOutBuf = NET_OUT_USER_MNG_GETCAPS */
+  NET_USER_MNG_CAPS(0x09, "用户管理能力"),
+  /** pInBuf=NET_IN_MEDIAMANAGER_GETCAPS,pOutBuf=NET_OUT_MEDIAMANAGER_GETCAPS */
+  NET_MEDIAMANAGER_CAPS(0x0a, "获取 VideoInput 的各个能力项"),
+  /** pInBuf=NET_IN_MEDIA_VIDEOMOSAIC_GETCAPS,pOutBuf=NET_OUT_MEDIA_VIDEOMOSAIC_GETCAPS */
+  NET_VIDEO_MOSAIC_CAPS(0x0b, "获取通道马赛克叠加能力"),
+  /** pInBuf=NET_IN_SNAP_CFG_CAPS, pOutBuf= NET_OUT_SNAP_CFG_CAPS */
+  NET_SNAP_CFG_CAPS(0x0c, "设备抓图配置对应能力"),
+  /** pInBUf = NET_IN_VIDEOIN_CAPS, pOutBuf = NET_OUT_VIDEOIN_CAPS */
+  NET_VIDEOIN_CAPS(0x0d, "设备视频输出能力"),
+  /** pInBuf = NET_IN_FACEBOARD_CAPS, pOutBuf = NET_OUT_FACEBOARD_CAPS */
+  NET_FACE_BOARD_CAPS(0x0e, "面板设备能力集"),
+  /** pInBuf = NET_IN_EXTERNALSENSOR_CAPS, pOutBuf =NET_OUT_EXTERNALSENSOR_CAPS */
+  NET_EXTERNALSENSOR_CAPS(0x0f, "外部传感器管理能力集"),
+  /** pInBuf = NET_IN_VIDEO_IMAGECONTROL_CAPS, pOutBuf =NET_OUT_VIDEO_IMAGECONTROL_CAPS* */
+  NET_VIDEO_IMAGECONTROL_CAPS(0x10, "图像旋转设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_EXPOSURE_CAPS, pOutBuf = NET_OUT_VIDEOIN_EXPOSURE_CAPS */
+  NET_VIDEOIN_EXPOSURE_CAPS(0x11, "曝光设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_DENOISE_CAPS, pOutBuf = NET_OUT_VIDEOIN_DENOISE_CAPS */
+  NET_VIDEOIN_DENOISE_CAPS(0x12, "降噪能力"),
+  /** pInBuf = NET_IN_VIDEOIN_BACKLIGHT_CAPS, pOutBuf = NET_OUT_VIDEOIN_BACKLIGHT_CAPS */
+  NET_VIDEOIN_BACKLIGHT_CAPS(0x13, "背光设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_WHITEBALANCE_CAPS, pOutBuf = NET_OUT_VIDEOIN_WHITEBALANCE_CAPS */
+  NET_VIDEOIN_WHITEBALANCE_CAPS(0x14, "白平衡设置能力"),
+  /**
+   * pInBuf = {@link NET_IN_VIDEOIN_DAYNIGHT_CAPS}, pOutBuf = {@link NET_OUT_VIDEOIN_DAYNIGHT_CAPS}
+   */
+  NET_VIDEOIN_DAYNIGHT_CAPS(0x15, "球机机芯日夜设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_ZOOM_CAPS, pOutBuf = NET_OUT_VIDEOIN_ZOOM_CAPS */
+  NET_VIDEOIN_ZOOM_CAPS(0x16, "变倍设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_FOCUS_CAPS, pOutBuf = NET_OUT_VIDEOIN_FOCUS_CAPS */
+  NET_VIDEOIN_FOCUS_CAPS(0x17, "聚焦设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_SHARPNESS_CAPS, pOutBuf = NET_OUT_VIDEOIN_SHARPNESS_CAPS */
+  NET_VIDEOIN_SHARPNESS_CAPS(0x18, "锐度设置能力"),
+  /** pInBuf = NET_IN_VIDEOIN_COLOR_CAPS, pOutBuf = NET_OUT_VIDEOIN_COLOR_CAPS */
+  NET_VIDEOIN_COLOR_CAPS(0x19, "图像设置能力"),
+  /** pInBuf = NET_IN_GET_MASTERSLAVEGROUP_CAPS, pOutBuf = // NET_OUT_GET_MASTERSLAVEGROUP_CAPS */
+  NET_GET_MASTERSLAVEGROUP_CAPS(0x1a, "获取跟踪业务能力"),
+  /**
+   * pInBuf = NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY, pOutBuf =
+   * NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY *
+   */
+  NET_FACERECOGNITIONSE_CAPS(0x1b, "目标识别服务器能力查询"),
+  /** pInBuf = NET_IN_STORAGE_CAPS, pOutBuf = NET_OUT_STORAGE_CAPS */
+  NET_STORAGE_CAPS(0x1c, "获取存储能力集"),
+  /** pInBuf = NET_IN_VIDEOIN_RAWFRAME_CAPS, pOutBuf = // NET_OUT_VIDEOIN_RAWFRAME_CAPS */
+  NET_VIDEOIN_RAWFRAME_CAPS(0x1d, "获取视频输入扩展能力集"),
+  /** pInBuf = NET_IN_GET_COAXIAL_CONTROL_IO_CAPS, pOutBuf = NET_OUT_GET_COAXIAL_CONTROL_IO_CAPS */
+  NET_COAXIAL_CONTROL_IO_CAPS(0x1e, "获取同轴IO控制能力"),
+  /** pInBuf = NET_IN_GET_FACEINFO_CAPS, pOutBuf = NET_OUT_GET_FACEINFO_CAPS */
+  NET_FACEINFO_CAPS(0x1f, "获得人脸门禁控制器能力集"),
+  /** pInBuf = NET_IN_AC_CAPS, pOutBuf = NET_OUT_AC_CAPS */
+  NET_ACCESSCONTROL_CAPS(0x20, "获取门禁能力"),
+  /**
+   * pInBuf = NET_IN_GET_COAXIAL_CONTROL_IO_STATUS, pOutBuf = NET_OUT_GET_COAXIAL_CONTROL_IO_STATUS*
+   */
+  NET_COAXIAL_CONTROL_IO_STATUS(0x21, "获取同轴IO白光灯和喇叭状态"),
+  /** pInBuf =NET_IN_LIGHTINGCONTROL_CAPS,pOutBuf=NET_OUT_LIGHTINGCONTROL_CAPS */
+  NET_LIGHTINGCONTROL_CAPS(0x22, "获取补光灯能力(IPC/SD使用)"),
+  /** pInBuf =NET_IN_SUPPORT_GET_AUDIO_DECODE_CAPS,pOutBuf=NET_OUT_SUPPORT_GET_AUDIO_DECODE_CAPS* */
+  NET_SUPPORT_GET_AUDIO_DECODE_CAPS(0x23, "获取设备是否支持音频解码能力获取"),
+  /** pInBuf = NET_IN_UNIFIEDINFOCOLLECT_CAPS, pOutBuf = NET_OUT_UNIFIEDINFOCOLLECT_CAPS */
+  NET_UNIFIEDINFOCOLLECT_CAPS(0x24, "获取设备是否支持DMSS专用协议能力"),
+  /** pInBuf = NET_IN_EXALARMBOX_CAPS, pOutBuf = NET_OUT_EXALARMBOX_CAPS */
+  NET_EXALARMBOX_CAPS(0x25, "获取某个扩展报警盒的能力集"),
+  /** pInBuf = NET_IN_ALARMBOXMANAGER_CAPS, pOutBuf = NET_OUT_ALARMBOXMANAGER_CAPS */
+  NET_ALARMBOXMANAGER_CAPS(0x26, "获取报警盒子管理器能力集"),
+  /** pInBuf = NET_IN_GET_AUDIO_DETECT_CAPS, pOutBuf = NET_OUT_GET_AUDIO_DETECT_CAPS */
+  NET_GET_AUDIO_DETECT_CAPS(0x27, "获取音频输入能力集"),
+  /**
+   * pInBuf = NET_IN_SUPPORT_FACEDB_DOWNLOAD_CAPS, pOutBuf = NET_OUT_SUPPORT_FACEDB_DOWNLOAD_CAPS
+   */
+  NET_SUPPORT_FACEDB_DOWNLOAD(0x28, "获取是否支持远程人脸库下载"),
+  /** pInBuf = NET_IN_GET_LENS_FUNC_CAPS, pOutBuf = NET_OUT_GET_LENS_FUNC_CAPS */
+  NET_GET_LENS_FUNC_CAPS(0x29, "获取角度调节能力集"),
+  /** pInBuf = NET_IN_VIDEO_TALK_MANAGER_CAPS, pOutBuf = NET_OUT_VIDEO_TALK_MANAGER_CAPS */
+  NET_VIDEO_TALK_MANAGER_CAPS(0x2a, "获取可视对讲能力"),
+  /** pInBuf = NET_IN_VIDEO_IN_DEFOG_CAPS, pOutBuf = NET_OUT_VIDEO_IN_DEFOG_CAPS */
+  NET_VIDEO_IN_DEFOG_CAPS(0x30, "获取视频透雾能力集"),
+  /** pInBuf = NET_IN_DIAGNOSIS_CAPS, pOutBuf = NET_OUT_DIAGNOSIS_CAPS */
+  NET_DIAGNOSIS_CAPS(0x31, "获取故障诊断能力"),
+  /** pInBuf = NET_IN_LOWRATEWPAN_CAPS, pOutBuf = NET_OUT_LOWRATEWPAN_CAPS */
+  NET_LOWRATEWPAN_CAPS(0x32, "获取低功率WPAN能力集"),
+  /** pInBuf = NET_IN_GET_FILE_TRANSFER_CAPS, pOutBuf = NET_OUT_GET_FILE_TRANSFER_CAPS */
+  NET_GET_FILE_TRANSFER_CAPS(0x33, "获取远程文件下载能力集"),
+  /** pInBuf = NET_IN_AUDIO_OUTPUT_CAPS, pOutBuf = NET_OUT_AUDIO_OUTPUT_CAPS */
+  NET_AUDIO_OUTPUT_CAPS(0x34, "获取音频输出能力"),
+  /**
+   * pInBuf = NET_IN_REMOTE_FACE_RECOGNITION_CAPS, pOutBuf = NET_OUT_REMOTE_FACE_RECOGNITION_CAPS*
+   */
+  NET_REMOTE_FACE_RECOGNITION_CAPS(0x35, "获取远程目标识别服务器能力"),
+  /** pInBuf = NET_IN_REMOTE_COLLECT_DEVINFO_CAPS, pOutBuf = NET_OUT_REMOTE_COLLECT_DEVINFO_CAPS */
+  NET_REMOTE_COLLECT_DEVINFO_CAPS(0x36, "获取远程设备信息采集能力"),
+  /** pInBuf = NET_IN_MONITOR_WALL_CAPS_INFO, pOutBuf = NET_OUT_MONITOR_WALL_CAPS_INFO */
+  NET_MONITOR_WALL_CAPS(0x37, "获取电视墙管理器实例能力集"),
+  /** pInBuf = NET_IN_REMOTE_SPEAK_CAPS, pOutBuf = NET_OUT_REMOTE_SPEAK_CAPS */
+  NET_REMOTE_SPEAK_CAPS(0x38, "获取前端音频文件路径和能力集"),
+  /** pInBuf = NET_IN_WLAN_CAPS_INFO, pOutBuf = NET_OUT_WLAN_CAPS_INFO */
+  NET_WLAN_CAPS(0x39, "获取WLAN能力集"),
+  /** pInBuf = NET_IN_LOG_ONLINE_BACKUP_CAPS_INFO, pOutBuf = NET_OUT_LOG_ONLINE_BACKUP_CAPS_INFO */
+  NET_LOG_ONLINE_BACKUP_CAPS(0x3A, "获取日志在线备份能力集"),
+  /** pInBuf = NET_IN_RECEIPT_EVENT_CAPS_INFO, pOutBuf = NET_OUT_RECEIPT_EVENT_CAPS_INFO */
+  NET_RECEIPT_EVENT_CAPS(0x3B, "获取事件回执能力集"),
+  /**
+   * pInBuf = NET_IN_ANALYSE_TASK_MANAGER_CAPS_INFO, pOutBuf =
+   * NET_OUT_ANALYSE_TASK_MANAGER_CAPS_INFO
+   */
+  NET_ANALYSE_TASK_MANAGER_CAPS(0x3C, "获取智能任务分析能力集"),
+  /** pInBuf = NET_IN_PERIPHERAL_CHIP_CAPS, pOutBuf = NET_OUT_PERIPHERAL_CHIP_CAPS */
+  NET_PERIPHERAL_CHIP_CAPS(0x3D, "获取设备从片能力"),
+  /**
+   * pInBuf = NET_IN_CITIZEN_IDENTITY_MANAGER_CAPS, pOutBuf = NET_OUT_CITIZEN_IDENTITY_MANAGER_CAPS*
+   */
+  NET_CITIZEN_IDENTITY_MANAGER_CAPS(0x3E, "获取人证设备能力集"),
+  /** pInBuf = NET_IN_AROUD_4G_PROBE_SEARCH_CAPS, pOutBuf = NET_OUT_AROUD_4G_PROBE_SEARCH_CAPS */
+  NET_AROUD_4G_PROBE_SEARCH_CAPS(0x3F, "获取电子围栏手机采集能力"),
+  /** pInBuf = NET_IN_GET_ADVERTIMENT_CAPS, pOutBuf = NET_OUT_GET_ADVERTIMENT_CAPS */
+  NET_GET_ADVERTIMENT_CAPS(0x4A, "获取设备广告投放能力"),
+  /** pInBuf = NET_IN_LIGHTING_MIX_SOLUTION_CAPS, pOutBuf = NET_OUT_LIGHTING_MIX_SOLUTION_CAPS */
+  NET_VIDEOIN_LIGHTING_MIX_SOLUTION_CAPS(0x40, "混光灯补光方案能力");
+
+  GetDevCaps_Type(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  private int type;
+  private String desc;
+
+  public int getType() {
+    return type;
+  }
+
+  public void setType(int type) {
+    this.type = type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+
+  public static GetDevCaps_Type getDevCapsType(int type) {
+    for (GetDevCaps_Type cap : GetDevCaps_Type.values()) {
+      if (cap.type == type) {
+        return cap;
+      }
+    }
+    return null;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/LastErrorNew.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/LastErrorNew.java
new file mode 100644
index 0000000..0b7a4a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/LastErrorNew.java
@@ -0,0 +1,1703 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 根据NetSDK返回的通用错误码制作的对应枚举类
+ * @date 2022/03/02
+ */
+public enum LastErrorNew {
+
+    // 未收录错误
+    UNRECORDED_ERROR((0x80000000 | (-2)),"未收录错误","Unrecorded error"),
+
+    // 未知错误
+    NET_ERROR((0x80000000 | (-1)),"未知错误","Unknown error"),
+
+    // 没有错误
+    NET_NOERROR((0x80000000 | (0)),"没有错误","No error"),
+
+    // 系统出错
+    NET_SYSTEM_ERROR((0x80000000 | (1)),"系统出错","system error"),
+
+    // 网络错误,可能是因为网络超时
+    NET_NETWORK_ERROR((0x80000000 | (2)),"网络错误,可能是因为网络超时","Protocol error it may result from network timeout"),
+
+    // 设备协议不匹配
+    NET_DEV_VER_NOMATCH((0x80000000 | (3)),"设备协议不匹配","Device protocol does not match"),
+
+    // 句柄无效
+    NET_INVALID_HANDLE((0x80000000 | (4)),"句柄无效","Handle is invalid"),
+
+    // 打开通道失败
+    NET_OPEN_CHANNEL_ERROR((0x80000000 | (5)),"打开通道失败","Failed to open channel"),
+
+    // 关闭通道失败
+    NET_CLOSE_CHANNEL_ERROR((0x80000000 | (6)),"关闭通道失败","Failed to close channel"),
+
+    // 用户参数不合法
+    NET_ILLEGAL_PARAM((0x80000000 | (7)),"用户参数不合法","User parameter is illegal"),
+
+    // SDK初始化出错
+    NET_SDK_INIT_ERROR((0x80000000 | (8)),"SDK初始化出错","SDK initialization error"),
+
+    // SDK清理出错
+    NET_SDK_UNINIT_ERROR((0x80000000 | (9)),"SDK清理出错","SDK clear error"),
+
+    // 申请render资源出错
+    NET_RENDER_OPEN_ERROR((0x80000000 | (10)),"申请render资源出错","Error occurs when apply for render resources."),
+
+    // 打开解码库出错
+    NET_DEC_OPEN_ERROR((0x80000000 | (11)),"打开解码库出错","Error occurs when opening the decoder library"),
+
+    // 关闭解码库出错
+    NET_DEC_CLOSE_ERROR((0x80000000 | (12)),"关闭解码库出错","Error occurs when closing the decoder library"),
+
+    // 多画面预览中检测到通道数为0
+    NET_MULTIPLAY_NOCHANNEL((0x80000000 | (13)),"多画面预览中检测到通道数为0","The detected channel number is 0 in multiple-channel preview."),
+
+    // 录音库初始化失败
+    NET_TALK_INIT_ERROR((0x80000000 | (14)),"录音库初始化失败","Failed to initialize record library"),
+
+    // 录音库未经初始化
+    NET_TALK_NOT_INIT((0x80000000 | (15)),"录音库未经初始化","The record library has not been initialized"),
+
+    // 发送音频数据出错
+    NET_TALK_SENDDATA_ERROR((0x80000000 | (16)),"发送音频数据出错","Error occurs when sending out audio data"),
+
+    // 实时数据已经处于保存状态
+    NET_REAL_ALREADY_SAVING((0x80000000 | (17)),"实时数据已经处于保存状态","The real-time has been protected."),
+
+    // 未保存实时数据
+    NET_NOT_SAVING((0x80000000 | (18)),"未保存实时数据","The real-time data has not been save."),
+
+    // 打开文件出错
+    NET_OPEN_FILE_ERROR((0x80000000 | (19)),"打开文件出错","Error occurs when opening the file."),
+
+    // 启动云台控制定时器失败
+    NET_PTZ_SET_TIMER_ERROR((0x80000000 | (20)),"启动云台控制定时器失败","Failed to enable PTZ to control timer."),
+
+    // 对返回数据的校验出错
+    NET_RETURN_DATA_ERROR((0x80000000 | (21)),"对返回数据的校验出错","Error occurs when verify returned data."),
+
+    // 没有足够的缓存
+    NET_INSUFFICIENT_BUFFER((0x80000000 | (22)),"没有足够的缓存","There is no sufficient buffer."),
+
+    // 当前SDK未支持该功能
+    NET_NOT_SUPPORTED((0x80000000 | (23)),"当前SDK未支持该功能","The current SDK does not support this funcntion."),
+
+    // 查询不到录象
+    NET_NO_RECORD_FOUND((0x80000000 | (24)),"查询不到录象","There is no searched result."),
+
+    // 无操作权限
+    NET_NOT_AUTHORIZED((0x80000000 | (25)),"无操作权限","You have no operation right."),
+
+    // 暂时无法执行
+    NET_NOT_NOW((0x80000000 | (26)),"暂时无法执行","Can not operate right now."),
+
+    // 未发现对讲通道
+    NET_NO_TALK_CHANNEL((0x80000000 | (27)),"未发现对讲通道","There is no audio talk channel."),
+
+    // 未发现音频
+    NET_NO_AUDIO((0x80000000 | (28)),"未发现音频","There is no audio."),
+
+    // 网络SDK未经初始化
+    NET_NO_INIT((0x80000000 | (29)),"网络SDK未经初始化","The network SDK has not been initialized."),
+
+    // 下载已结束
+    NET_DOWNLOAD_END((0x80000000 | (30)),"下载已结束","The download completed."),
+
+    // 查询结果为空
+    NET_EMPTY_LIST((0x80000000 | (31)),"查询结果为空","There is no searched result."),
+
+    // 获取系统属性配置失败
+    NET_ERROR_GETCFG_SYSATTR((0x80000000 | (32)),"获取系统属性配置失败","Failed to get system property setup."),
+
+    // 获取序列号失败
+    NET_ERROR_GETCFG_SERIAL((0x80000000 | (33)),"获取序列号失败","Failed to get SN."),
+
+    // 获取常规属性失败
+    NET_ERROR_GETCFG_GENERAL((0x80000000 | (34)),"获取常规属性失败","Failed to get general property."),
+
+    // 获取DSP能力描述失败
+    NET_ERROR_GETCFG_DSPCAP((0x80000000 | (35)),"获取DSP能力描述失败","Failed to get DSP capacity description."),
+
+    // 获取网络配置失败
+    NET_ERROR_GETCFG_NETCFG((0x80000000 | (36)),"获取网络配置失败","Failed to get network channel setup."),
+
+    // 获取通道名称失败
+    NET_ERROR_GETCFG_CHANNAME((0x80000000 | (37)),"获取通道名称失败","Failed to get channel name."),
+
+    // 获取视频属性失败
+    NET_ERROR_GETCFG_VIDEO((0x80000000 | (38)),"获取视频属性失败","Failed to get video property."),
+
+    // 获取录象配置失败
+    NET_ERROR_GETCFG_RECORD((0x80000000 | (39)),"获取录象配置失败","Failed to get record setup"),
+
+    // 获取解码器协议名称失败
+    NET_ERROR_GETCFG_PRONAME((0x80000000 | (40)),"获取解码器协议名称失败","Failed to get decoder protocol name"),
+
+    // 获取232串口功能名称失败
+    NET_ERROR_GETCFG_FUNCNAME((0x80000000 | (41)),"获取232串口功能名称失败","Failed to get 232 COM function name."),
+
+    // 获取解码器属性失败
+    NET_ERROR_GETCFG_485DECODER((0x80000000 | (42)),"获取解码器属性失败","Failed to get decoder property"),
+
+    // 获取232串口配置失败
+    NET_ERROR_GETCFG_232COM((0x80000000 | (43)),"获取232串口配置失败","Failed to get 232 COM setup"),
+
+    // 获取外部报警输入配置失败
+    NET_ERROR_GETCFG_ALARMIN((0x80000000 | (44)),"获取外部报警输入配置失败","Failed to get external alarm input setup"),
+
+    // 获取动态检测报警失败
+    NET_ERROR_GETCFG_ALARMDET((0x80000000 | (45)),"获取动态检测报警失败","Failed to get motion detection alarm"),
+
+    // 获取设备时间失败
+    NET_ERROR_GETCFG_SYSTIME((0x80000000 | (46)),"获取设备时间失败","Failed to get device time"),
+
+    // 获取预览参数失败
+    NET_ERROR_GETCFG_PREVIEW((0x80000000 | (47)),"获取预览参数失败","Failed to get preview parameter"),
+
+    // 获取自动维护配置失败
+    NET_ERROR_GETCFG_AUTOMT((0x80000000 | (48)),"获取自动维护配置失败","Failed to get audio maintenance setup"),
+
+    // 获取视频矩阵配置失败
+    NET_ERROR_GETCFG_VIDEOMTRX((0x80000000 | (49)),"获取视频矩阵配置失败","Failed to get video matrix setup"),
+
+    // 获取区域遮挡配置失败
+    NET_ERROR_GETCFG_COVER((0x80000000 | (50)),"获取区域遮挡配置失败","Failed to get privacy mask zone setup"),
+
+    // 获取图象水印配置失败
+    NET_ERROR_GETCFG_WATERMAKE((0x80000000 | (51)),"获取图象水印配置失败","Failed to get video watermark setup"),
+
+    // 获取配置失败位置:组播端口按通道配置
+    NET_ERROR_GETCFG_MULTICAST((0x80000000 | (52)),"获取配置失败位置:组播端口按通道配置","Failed to get config, omulticast port by channel"),
+
+    // 修改常规属性失败
+    NET_ERROR_SETCFG_GENERAL((0x80000000 | (55)),"修改常规属性失败","Failed to modify general property"),
+
+    // 修改网络配置失败
+    NET_ERROR_SETCFG_NETCFG((0x80000000 | (56)),"修改网络配置失败","Failed to modify channel setup"),
+
+    // 修改通道名称失败
+    NET_ERROR_SETCFG_CHANNAME((0x80000000 | (57)),"修改通道名称失败","Failed to modify channel name"),
+
+    // 修改视频属性失败
+    NET_ERROR_SETCFG_VIDEO((0x80000000 | (58)),"修改视频属性失败","Failed to modify video channel"),
+
+    // 修改录象配置失败
+    NET_ERROR_SETCFG_RECORD((0x80000000 | (59)),"修改录象配置失败","Failed to modify record setup"),
+
+    // 修改解码器属性失败
+    NET_ERROR_SETCFG_485DECODER((0x80000000 | (60)),"修改解码器属性失败","Failed to modify decoder property"),
+
+    // 修改232串口配置失败
+    NET_ERROR_SETCFG_232COM((0x80000000 | (61)),"修改232串口配置失败","Failed to modify 232 COM setup"),
+
+    // 修改外部输入报警配置失败
+    NET_ERROR_SETCFG_ALARMIN((0x80000000 | (62)),"修改外部输入报警配置失败","Failed to modify external input alarm setup"),
+
+    // 修改动态检测报警配置失败
+    NET_ERROR_SETCFG_ALARMDET((0x80000000 | (63)),"修改动态检测报警配置失败","Failed to modify motion detection alarm setup"),
+
+    // 修改设备时间失败
+    NET_ERROR_SETCFG_SYSTIME((0x80000000 | (64)),"修改设备时间失败","Failed to modify device time"),
+
+    // 修改预览参数失败
+    NET_ERROR_SETCFG_PREVIEW((0x80000000 | (65)),"修改预览参数失败","Failed to modify preview parameter"),
+
+    // 修改自动维护配置失败
+    NET_ERROR_SETCFG_AUTOMT((0x80000000 | (66)),"修改自动维护配置失败","Failed to modify auto maintenance setup"),
+
+    // 修改视频矩阵配置失败
+    NET_ERROR_SETCFG_VIDEOMTRX((0x80000000 | (67)),"修改视频矩阵配置失败","Failed to modify video matrix setup"),
+
+    // 修改区域遮挡配置失败
+    NET_ERROR_SETCFG_COVER((0x80000000 | (68)),"修改区域遮挡配置失败","Failed to modify privacy mask zone"),
+
+    // 修改图象水印配置失败
+    NET_ERROR_SETCFG_WATERMAKE((0x80000000 | (69)),"修改图象水印配置失败","Failed to modify video watermark setup"),
+
+    // 修改无线网络信息失败
+    NET_ERROR_SETCFG_WLAN((0x80000000 | (70)),"修改无线网络信息失败","Failed to modify wireless network information"),
+
+    // 选择无线网络设备失败
+    NET_ERROR_SETCFG_WLANDEV((0x80000000 | (71)),"选择无线网络设备失败","Failed to select wireless network device"),
+
+    // 修改主动注册参数配置失败
+    NET_ERROR_SETCFG_REGISTER((0x80000000 | (72)),"修改主动注册参数配置失败","Failed to modify the actively registration parameter setup."),
+
+    // 修改摄像头属性配置失败
+    NET_ERROR_SETCFG_CAMERA((0x80000000 | (73)),"修改摄像头属性配置失败","Failed to modify camera property"),
+
+    // 修改红外报警配置失败
+    NET_ERROR_SETCFG_INFRARED((0x80000000 | (74)),"修改红外报警配置失败","Failed to modify IR alarm setup"),
+
+    // 修改音频报警配置失败
+    NET_ERROR_SETCFG_SOUNDALARM((0x80000000 | (75)),"修改音频报警配置失败","Failed to modify audio alarm setup"),
+
+    // 修改存储位置配置失败
+    NET_ERROR_SETCFG_STORAGE((0x80000000 | (76)),"修改存储位置配置失败","Failed to modify storage position setup"),
+
+    // 音频编码接口没有成功初始化
+    NET_AUDIOENCODE_NOTINIT((0x80000000 | (77)),"音频编码接口没有成功初始化","The audio encode port has not been successfully initialized."),
+
+    // 数据过长
+    NET_DATA_TOOLONGH((0x80000000 | (78)),"数据过长","The data are too long."),
+
+    // 设备不支持该操作
+    NET_UNSUPPORTED((0x80000000 | (79)),"设备不支持该操作","The device does not support current operation."),
+
+    // 设备资源不足
+    NET_DEVICE_BUSY((0x80000000 | (80)),"设备资源不足","Device resources is not sufficient."),
+
+    // 服务器已经启动
+    NET_SERVER_STARTED((0x80000000 | (81)),"服务器已经启动","The server has boot up"),
+
+    // 服务器尚未成功启动
+    NET_SERVER_STOPPED((0x80000000 | (82)),"服务器尚未成功启动","The server has not fully boot up"),
+
+    // 输入序列号有误
+    NET_LISTER_INCORRECT_SERIAL((0x80000000 | (83)),"输入序列号有误","Input serial number is not correct."),
+
+    // 获取硬盘信息失败
+    NET_QUERY_DISKINFO_FAILED((0x80000000 | (84)),"获取硬盘信息失败","Failed to get HDD information."),
+
+    // 获取连接Session信息
+    NET_ERROR_GETCFG_SESSION((0x80000000 | (85)),"获取连接Session信息","Failed to get connect session information."),
+
+    // 输入密码错误超过限制次数
+    NET_USER_FLASEPWD_TRYTIME((0x80000000 | (86)),"输入密码错误超过限制次数","The password you typed is incorrect. You have exceeded the maximum number of retries."),
+
+    // 密码过期
+    NET_LOGIN_ERROR_PASSWORD_EXPIRED((0x80000000 | (99)),"密码过期","password expired"),
+
+    // 密码不正确
+    NET_LOGIN_ERROR_PASSWORD((0x80000000 | (100)),"密码不正确","Password is not correct"),
+
+    // 帐户不存在
+    NET_LOGIN_ERROR_USER((0x80000000 | (101)),"帐户不存在","The account does not exist"),
+
+    // 等待登录返回超时
+    NET_LOGIN_ERROR_TIMEOUT((0x80000000 | (102)),"等待登录返回超时","Time out for log in returned value."),
+
+    // 帐号已登录
+    NET_LOGIN_ERROR_RELOGGIN((0x80000000 | (103)),"帐号已登录","The account has logged in"),
+
+    // 帐号已被锁定
+    NET_LOGIN_ERROR_LOCKED((0x80000000 | (104)),"帐号已被锁定","The account has been locked"),
+
+    // 帐号已被列为禁止名单
+    NET_LOGIN_ERROR_BLACKLIST((0x80000000 | (105)),"帐号已被列为禁止名单","The account has been in the block list"),
+
+    // 资源不足,系统忙
+    NET_LOGIN_ERROR_BUSY((0x80000000 | (106)),"资源不足,系统忙","Resources are not sufficient. System is busy now."),
+
+    // 登录设备超时,请检查网络并重试
+    NET_LOGIN_ERROR_CONNECT((0x80000000 | (107)),"登录设备超时,请检查网络并重试","Time out. Please check network and try again."),
+
+    // 网络连接失败
+    NET_LOGIN_ERROR_NETWORK((0x80000000 | (108)),"网络连接失败","Network connection failed."),
+
+    // 登录设备成功,但无法创建视频通道,请检查网络状况
+    NET_LOGIN_ERROR_SUBCONNECT((0x80000000 | (109)),"登录设备成功,但无法创建视频通道,请检查网络状况","Successfully logged in the device but can not create video channel. Please check network connection."),
+
+    // 超过最大连接数
+    NET_LOGIN_ERROR_MAXCONNECT((0x80000000 | (110)),"超过最大连接数","exceed the max connect number"),
+
+    // 只支持3代协议
+    NET_LOGIN_ERROR_PROTOCOL3_ONLY((0x80000000 | (111)),"只支持3代协议","protocol 3 support"),
+
+    // 未插入U盾或U盾信息错误
+    NET_LOGIN_ERROR_UKEY_LOST((0x80000000 | (112)),"未插入U盾或U盾信息错误","There is no USB or USB info error"),
+
+    // 客户端IP地址没有登录权限
+    NET_LOGIN_ERROR_NO_AUTHORIZED((0x80000000 | (113)),"客户端IP地址没有登录权限","Client-end IP address has no right to login"),
+
+    // 账号或密码错误
+    NET_LOGIN_ERROR_USER_OR_PASSOWRD((0x80000000 | (117)),"账号或密码错误","user or password error"),
+
+    // 设备尚未初始化,不能登录,请先初始化设备
+    NET_LOGIN_ERROR_DEVICE_NOT_INIT((0x80000000 | (118)),"设备尚未初始化,不能登录,请先初始化设备","cannot login because the device has not been init,please init the device and then login"),
+
+    // 登录受限,可能是IP受限、时间段受限、有效期受限
+    NET_LOGIN_ERROR_LIMITED((0x80000000 | (119)),"登录受限,可能是IP受限、时间段受限、有效期受限","Limited login, it could be IP limited, time limited or expiration limited"),
+
+    // Render库打开音频出错
+    NET_RENDER_SOUND_ON_ERROR((0x80000000 | (120)),"Render库打开音频出错","Error occurs when Render library open audio."),
+
+    // Render库关闭音频出错
+    NET_RENDER_SOUND_OFF_ERROR((0x80000000 | (121)),"Render库关闭音频出错","Error occurs when Render library close audio"),
+
+    // Render库控制音量出错
+    NET_RENDER_SET_VOLUME_ERROR((0x80000000 | (122)),"Render库控制音量出错","Error occurs when Render library control volume"),
+
+    // Render库设置画面参数出错
+    NET_RENDER_ADJUST_ERROR((0x80000000 | (123)),"Render库设置画面参数出错","Error occurs when Render library set video parameter"),
+
+    // Render库暂停播放出错
+    NET_RENDER_PAUSE_ERROR((0x80000000 | (124)),"Render库暂停播放出错","Error occurs when Render library pause play"),
+
+    // Render库抓图出错
+    NET_RENDER_SNAP_ERROR((0x80000000 | (125)),"Render库抓图出错","Render library snapshot error"),
+
+    // Render库步进出错
+    NET_RENDER_STEP_ERROR((0x80000000 | (126)),"Render库步进出错","Render library stepper error"),
+
+    // Render库设置帧率出错
+    NET_RENDER_FRAMERATE_ERROR((0x80000000 | (127)),"Render库设置帧率出错","Error occurs when Render library set frame rate."),
+
+    // Render库设置显示区域出错
+    NET_RENDER_DISPLAYREGION_ERROR((0x80000000 | (128)),"Render库设置显示区域出错","Error occurs when Render lib setting show region"),
+
+    // Render库获取当前播放时间出错
+    NET_RENDER_GETOSDTIME_ERROR((0x80000000 | (129)),"Render库获取当前播放时间出错","An error occurred when Render library getting current play time"),
+
+    // 组名已存在
+    NET_GROUP_EXIST((0x80000000 | (140)),"组名已存在","Group name has been existed."),
+
+    // 组名不存在
+    NET_GROUP_NOEXIST((0x80000000 | (141)),"组名不存在","The group name does not exist."),
+
+    // 组的权限超出权限列表范围
+    NET_GROUP_RIGHTOVER((0x80000000 | (142)),"组的权限超出权限列表范围","The group right exceeds the right list!"),
+
+    // 组下有用户,不能删除
+    NET_GROUP_HAVEUSER((0x80000000 | (143)),"组下有用户,不能删除","The group can not be removed since there is user in it!"),
+
+    // 组的某个权限被用户使用,不能出除
+    NET_GROUP_RIGHTUSE((0x80000000 | (144)),"组的某个权限被用户使用,不能出除","The user has used one of the group right. It can not be removed."),
+
+    // 新组名同已有组名重复
+    NET_GROUP_SAMENAME((0x80000000 | (145)),"新组名同已有组名重复","New group name has been existed"),
+
+    // 用户已存在
+    NET_USER_EXIST((0x80000000 | (146)),"用户已存在","The user name has been existed"),
+
+    // 用户不存在
+    NET_USER_NOEXIST((0x80000000 | (147)),"用户不存在","The account does not exist."),
+
+    // 用户权限超出组权限
+    NET_USER_RIGHTOVER((0x80000000 | (148)),"用户权限超出组权限","User right exceeds the group right."),
+
+    // 保留帐号,不容许修改密码
+    NET_USER_PWD((0x80000000 | (149)),"保留帐号,不容许修改密码","Reserved account. It does not allow to be modified."),
+
+    // 密码不正确
+    NET_USER_FLASEPWD((0x80000000 | (150)),"密码不正确","password is not correct"),
+
+    // 密码不匹配
+    NET_USER_NOMATCHING((0x80000000 | (151)),"密码不匹配","Password is invalid"),
+
+    // 账号正在使用中
+    NET_USER_INUSE((0x80000000 | (152)),"账号正在使用中","account in use"),
+
+    // 获取网卡配置失败
+    NET_ERROR_GETCFG_ETHERNET((0x80000000 | (300)),"获取网卡配置失败","Failed to get network card setup."),
+
+    // 获取无线网络信息失败
+    NET_ERROR_GETCFG_WLAN((0x80000000 | (301)),"获取无线网络信息失败","Failed to get wireless network information."),
+
+    // 获取无线网络设备失败
+    NET_ERROR_GETCFG_WLANDEV((0x80000000 | (302)),"获取无线网络设备失败","Failed to get wireless network device."),
+
+    // 获取主动注册参数失败
+    NET_ERROR_GETCFG_REGISTER((0x80000000 | (303)),"获取主动注册参数失败","Failed to get actively registration parameter."),
+
+    // 获取摄像头属性失败
+    NET_ERROR_GETCFG_CAMERA((0x80000000 | (304)),"获取摄像头属性失败","Failed to get camera property"),
+
+    // 获取红外报警配置失败
+    NET_ERROR_GETCFG_INFRARED((0x80000000 | (305)),"获取红外报警配置失败","Failed to get IR alarm setup"),
+
+    // 获取音频报警配置失败
+    NET_ERROR_GETCFG_SOUNDALARM((0x80000000 | (306)),"获取音频报警配置失败","Failed to get audio alarm setup"),
+
+    // 获取存储位置配置失败
+    NET_ERROR_GETCFG_STORAGE((0x80000000 | (307)),"获取存储位置配置失败","Failed to get storage position"),
+
+    // 获取邮件配置失败
+    NET_ERROR_GETCFG_MAIL((0x80000000 | (308)),"获取邮件配置失败","Failed to get mail setup."),
+
+    // 暂时无法设置
+    NET_CONFIG_DEVBUSY((0x80000000 | (309)),"暂时无法设置","Can not set right now."),
+
+    // 配置数据不合法
+    NET_CONFIG_DATAILLEGAL((0x80000000 | (310)),"配置数据不合法","The configuration setup data are illegal."),
+
+    // 获取夏令时配置失败
+    NET_ERROR_GETCFG_DST((0x80000000 | (311)),"获取夏令时配置失败","Failed to get DST setup"),
+
+    // 设置夏令时配置失败
+    NET_ERROR_SETCFG_DST((0x80000000 | (312)),"设置夏令时配置失败","Failed to set DST"),
+
+    // 获取视频OSD叠加配置失败
+    NET_ERROR_GETCFG_VIDEO_OSD((0x80000000 | (313)),"获取视频OSD叠加配置失败","Failed to get video OSD setup."),
+
+    // 设置视频OSD叠加配置失败
+    NET_ERROR_SETCFG_VIDEO_OSD((0x80000000 | (314)),"设置视频OSD叠加配置失败","Failed to set video OSD"),
+
+    // 获取CDMA\GPRS网络配置失败
+    NET_ERROR_GETCFG_GPRSCDMA((0x80000000 | (315)),"获取CDMA\\GPRS网络配置失败","Failed to get CDMA\\GPRS configuration"),
+
+    // 设置CDMA\GPRS网络配置失败
+    NET_ERROR_SETCFG_GPRSCDMA((0x80000000 | (316)),"设置CDMA\\GPRS网络配置失败","Failed to set CDMA\\GPRS configuration"),
+
+    // 获取IP过滤配置失败
+    NET_ERROR_GETCFG_IPFILTER((0x80000000 | (317)),"获取IP过滤配置失败","Failed to get IP Filter configuration"),
+
+    // 设置IP过滤配置失败
+    NET_ERROR_SETCFG_IPFILTER((0x80000000 | (318)),"设置IP过滤配置失败","Failed to set IP Filter configuration"),
+
+    // 获取语音对讲编码配置失败
+    NET_ERROR_GETCFG_TALKENCODE((0x80000000 | (319)),"获取语音对讲编码配置失败","Failed to get Talk Encode configuration"),
+
+    // 设置语音对讲编码配置失败
+    NET_ERROR_SETCFG_TALKENCODE((0x80000000 | (320)),"设置语音对讲编码配置失败","Failed to set Talk Encode configuration"),
+
+    // 获取录像打包长度配置失败
+    NET_ERROR_GETCFG_RECORDLEN((0x80000000 | (321)),"获取录像打包长度配置失败","Failed to get The length of the video package configuration"),
+
+    // 设置录像打包长度配置失败
+    NET_ERROR_SETCFG_RECORDLEN((0x80000000 | (322)),"设置录像打包长度配置失败","Failed to set The length of the video package configuration"),
+
+    // 不支持网络硬盘分区
+    NET_DONT_SUPPORT_SUBAREA((0x80000000 | (323)),"不支持网络硬盘分区","Not support Network hard disk partition"),
+
+    // 获取设备上主动注册服务器信息失败
+    NET_ERROR_GET_AUTOREGSERVER((0x80000000 | (324)),"获取设备上主动注册服务器信息失败","Failed to get the register server information"),
+
+    // 主动注册重定向注册错误
+    NET_ERROR_CONTROL_AUTOREGISTER((0x80000000 | (325)),"主动注册重定向注册错误","Failed to control actively registration"),
+
+    // 断开主动注册服务器错误
+    NET_ERROR_DISCONNECT_AUTOREGISTER((0x80000000 | (326)),"断开主动注册服务器错误","Failed to disconnect actively registration"),
+
+    // 获取mms配置失败
+    NET_ERROR_GETCFG_MMS((0x80000000 | (327)),"获取mms配置失败","Failed to get mms configuration"),
+
+    // 设置mms配置失败
+    NET_ERROR_SETCFG_MMS((0x80000000 | (328)),"设置mms配置失败","Failed to set mms configuration"),
+
+    // 获取短信激活无线连接配置失败
+    NET_ERROR_GETCFG_SMSACTIVATION((0x80000000 | (329)),"获取短信激活无线连接配置失败","Failed to get SMS configuration"),
+
+    // 设置短信激活无线连接配置失败
+    NET_ERROR_SETCFG_SMSACTIVATION((0x80000000 | (330)),"设置短信激活无线连接配置失败","Failed to set SMS configuration"),
+
+    // 获取拨号激活无线连接配置失败
+    NET_ERROR_GETCFG_DIALINACTIVATION((0x80000000 | (331)),"获取拨号激活无线连接配置失败","Failed to get activation of a wireless connection"),
+
+    // 设置拨号激活无线连接配置失败
+    NET_ERROR_SETCFG_DIALINACTIVATION((0x80000000 | (332)),"设置拨号激活无线连接配置失败","Failed to set activation of a wireless connection"),
+
+    // 查询视频输出参数配置失败
+    NET_ERROR_GETCFG_VIDEOOUT((0x80000000 | (333)),"查询视频输出参数配置失败","Failed to get the parameter of video output"),
+
+    // 设置视频输出参数配置失败
+    NET_ERROR_SETCFG_VIDEOOUT((0x80000000 | (334)),"设置视频输出参数配置失败","Failed to set the configuration of video output"),
+
+    // 获取osd叠加使能配置失败
+    NET_ERROR_GETCFG_OSDENABLE((0x80000000 | (335)),"获取osd叠加使能配置失败","Failed to get osd overlay enabling"),
+
+    // 设置osd叠加使能配置失败
+    NET_ERROR_SETCFG_OSDENABLE((0x80000000 | (336)),"设置osd叠加使能配置失败","Failed to set OSD overlay enabling"),
+
+    // 设置数字通道前端编码接入配置失败
+    NET_ERROR_SETCFG_ENCODERINFO((0x80000000 | (337)),"设置数字通道前端编码接入配置失败","Failed to set digital input configuration of front encoders"),
+
+    // 获取TV调节配置失败
+    NET_ERROR_GETCFG_TVADJUST((0x80000000 | (338)),"获取TV调节配置失败","Failed to get TV adjust configuration"),
+
+    // 设置TV调节配置失败
+    NET_ERROR_SETCFG_TVADJUST((0x80000000 | (339)),"设置TV调节配置失败","Failed to set TV adjust configuration"),
+
+    // 请求建立连接失败
+    NET_ERROR_CONNECT_FAILED((0x80000000 | (340)),"请求建立连接失败","Failed to request to establish a connection"),
+
+    // 请求刻录文件上传失败
+    NET_ERROR_SETCFG_BURNFILE((0x80000000 | (341)),"请求刻录文件上传失败","Failed to request to upload burn files"),
+
+    // 获取抓包配置信息失败
+    NET_ERROR_SNIFFER_GETCFG((0x80000000 | (342)),"获取抓包配置信息失败","Failed to get capture configuration information"),
+
+    // 设置抓包配置信息失败
+    NET_ERROR_SNIFFER_SETCFG((0x80000000 | (343)),"设置抓包配置信息失败","Failed to set capture configuration information"),
+
+    // 查询下载限制信息失败
+    NET_ERROR_DOWNLOADRATE_GETCFG((0x80000000 | (344)),"查询下载限制信息失败","Failed to get download restrictions information"),
+
+    // 设置下载限制信息失败
+    NET_ERROR_DOWNLOADRATE_SETCFG((0x80000000 | (345)),"设置下载限制信息失败","Failed to set download restrictions information"),
+
+    // 查询串口参数失败
+    NET_ERROR_SEARCH_TRANSCOM((0x80000000 | (346)),"查询串口参数失败","Failed to query serial port parameters"),
+
+    // 获取预制点信息错误
+    NET_ERROR_GETCFG_POINT((0x80000000 | (347)),"获取预制点信息错误","Failed to get the preset info"),
+
+    // 设置预制点信息错误
+    NET_ERROR_SETCFG_POINT((0x80000000 | (348)),"设置预制点信息错误","Failed to set the preset info"),
+
+    // SDK没有正常登出设备
+    NET_SDK_LOGOUT_ERROR((0x80000000 | (349)),"SDK没有正常登出设备","SDK log out the device abnormally"),
+
+    // 获取车载配置失败
+    NET_ERROR_GET_VEHICLE_CFG((0x80000000 | (350)),"获取车载配置失败","Failed to get vehicle configuration"),
+
+    // 设置车载配置失败
+    NET_ERROR_SET_VEHICLE_CFG((0x80000000 | (351)),"设置车载配置失败","Failed to set vehicle configuration"),
+
+    // 获取atm叠加配置失败
+    NET_ERROR_GET_ATM_OVERLAY_CFG((0x80000000 | (352)),"获取atm叠加配置失败","Failed to get ATM overlay configuration"),
+
+    // 设置atm叠加配置失败
+    NET_ERROR_SET_ATM_OVERLAY_CFG((0x80000000 | (353)),"设置atm叠加配置失败","Failed to set ATM overlay configuration"),
+
+    // 获取atm叠加能力失败
+    NET_ERROR_GET_ATM_OVERLAY_ABILITY((0x80000000 | (354)),"获取atm叠加能力失败","Failed to get ATM overlay ability"),
+
+    // 获取解码器解码轮巡配置失败
+    NET_ERROR_GET_DECODER_TOUR_CFG((0x80000000 | (355)),"获取解码器解码轮巡配置失败","Failed to get decoder tour configuration"),
+
+    // 设置解码器解码轮巡配置失败
+    NET_ERROR_SET_DECODER_TOUR_CFG((0x80000000 | (356)),"设置解码器解码轮巡配置失败","Failed to set decoder tour configuration"),
+
+    // 控制解码器解码轮巡失败
+    NET_ERROR_CTRL_DECODER_TOUR((0x80000000 | (357)),"控制解码器解码轮巡失败","Failed to control decoder tour"),
+
+    // 超出设备支持最大用户组数目
+    NET_GROUP_OVERSUPPORTNUM((0x80000000 | (358)),"超出设备支持最大用户组数目","Beyond the device supports for the largest number of user groups"),
+
+    // 超出设备支持最大用户数目
+    NET_USER_OVERSUPPORTNUM((0x80000000 | (359)),"超出设备支持最大用户数目","Beyond the device supports for the largest number of users"),
+
+    // 获取SIP配置失败
+    NET_ERROR_GET_SIP_CFG((0x80000000 | (368)),"获取SIP配置失败","Failed to get SIP configuration"),
+
+    // 设置SIP配置失败
+    NET_ERROR_SET_SIP_CFG((0x80000000 | (369)),"设置SIP配置失败","Failed to set SIP configuration"),
+
+    // 获取SIP能力失败
+    NET_ERROR_GET_SIP_ABILITY((0x80000000 | (370)),"获取SIP能力失败","Failed to get SIP capability"),
+
+    // 获取WIFI ap配置失败
+    NET_ERROR_GET_WIFI_AP_CFG((0x80000000 | (371)),"获取WIFI ap配置失败","Failed to get \"WIFI ap\' configuration"),
+
+    // 设置WIFI ap配置失败
+    NET_ERROR_SET_WIFI_AP_CFG((0x80000000 | (372)),"设置WIFI ap配置失败","Failed to set \"WIFI ap\" configuration"),
+
+    // 获取解码策略配置失败
+    NET_ERROR_GET_DECODE_POLICY((0x80000000 | (373)),"获取解码策略配置失败","Failed to get decode policy"),
+
+    // 设置解码策略配置失败
+    NET_ERROR_SET_DECODE_POLICY((0x80000000 | (374)),"设置解码策略配置失败","Failed to set decode policy"),
+
+    // 拒绝对讲
+    NET_ERROR_TALK_REJECT((0x80000000 | (375)),"拒绝对讲","refuse talk"),
+
+    // 对讲被其他客户端打开
+    NET_ERROR_TALK_OPENED((0x80000000 | (376)),"对讲被其他客户端打开","talk has opened by other client"),
+
+    // 资源冲突
+    NET_ERROR_TALK_RESOURCE_CONFLICIT((0x80000000 | (377)),"资源冲突","resource conflict"),
+
+    // 不支持的语音编码格式
+    NET_ERROR_TALK_UNSUPPORTED_ENCODE((0x80000000 | (378)),"不支持的语音编码格式","unsupported encode type"),
+
+    // 无权限
+    NET_ERROR_TALK_RIGHTLESS((0x80000000 | (379)),"无权限","no right"),
+
+    // 请求对讲失败
+    NET_ERROR_TALK_FAILED((0x80000000 | (380)),"请求对讲失败","request failed"),
+
+    // 获取机器相关配置失败
+    NET_ERROR_GET_MACHINE_CFG((0x80000000 | (381)),"获取机器相关配置失败","Failed to get device relative config"),
+
+    // 设置机器相关配置失败
+    NET_ERROR_SET_MACHINE_CFG((0x80000000 | (382)),"设置机器相关配置失败","Failed to set device relative config"),
+
+    // 设备无法获取当前请求数据
+    NET_ERROR_GET_DATA_FAILED((0x80000000 | (383)),"设备无法获取当前请求数据","get data failed"),
+
+    // MAC地址验证失败
+    NET_ERROR_MAC_VALIDATE_FAILED((0x80000000 | (384)),"MAC地址验证失败","MAC validate failed"),
+
+    // 获取服务器实例失败
+    NET_ERROR_GET_INSTANCE((0x80000000 | (385)),"获取服务器实例失败","Failed to get server instance"),
+
+    // 生成的json字符串错误
+    NET_ERROR_JSON_REQUEST((0x80000000 | (386)),"生成的json字符串错误","Generated json string is error"),
+
+    // 响应的json字符串错误
+    NET_ERROR_JSON_RESPONSE((0x80000000 | (387)),"响应的json字符串错误","The responding json string is error"),
+
+    // 协议版本低于当前使用的版本
+    NET_ERROR_VERSION_HIGHER((0x80000000 | (388)),"协议版本低于当前使用的版本","The protocol version is lower than current version"),
+
+    // 热备操作失败, 容量不足
+    NET_SPARE_NO_CAPACITY((0x80000000 | (389)),"热备操作失败, 容量不足","Hotspare disk operation failed. The capacity is low"),
+
+    // 显示源被其他输出占用
+    NET_ERROR_SOURCE_IN_USE((0x80000000 | (390)),"显示源被其他输出占用","Display source is used by other output"),
+
+    // 高级用户抢占低级用户资源
+    NET_ERROR_REAVE((0x80000000 | (391)),"高级用户抢占低级用户资源","advanced users grab low-level user resource"),
+
+    // 禁止入网
+    NET_ERROR_NETFORBID((0x80000000 | (392)),"禁止入网","net forbid"),
+
+    // 获取MAC过滤配置失败
+    NET_ERROR_GETCFG_MACFILTER((0x80000000 | (393)),"获取MAC过滤配置失败","get MAC filter configuration error"),
+
+    // 设置MAC过滤配置失败
+    NET_ERROR_SETCFG_MACFILTER((0x80000000 | (394)),"设置MAC过滤配置失败","set MAC filter configuration error"),
+
+    // 获取IP/MAC过滤配置失败
+    NET_ERROR_GETCFG_IPMACFILTER((0x80000000 | (395)),"获取IP/MAC过滤配置失败","get IP/MAC filter configuration error"),
+
+    // 设置IP/MAC过滤配置失败
+    NET_ERROR_SETCFG_IPMACFILTER((0x80000000 | (396)),"设置IP/MAC过滤配置失败","set IP/MAC filter configuration error"),
+
+    // 当前操作超时
+    NET_ERROR_OPERATION_OVERTIME((0x80000000 | (397)),"当前操作超时","operation over time"),
+
+    // 高级校验失败
+    NET_ERROR_SENIOR_VALIDATE_FAILED((0x80000000 | (398)),"高级校验失败","senior validation failure"),
+
+    // 设备ID不存在
+    NET_ERROR_DEVICE_ID_NOT_EXIST((0x80000000 | (399)),"设备ID不存在","device ID is not exist"),
+
+    // 不支持当前操作
+    NET_ERROR_UNSUPPORTED((0x80000000 | (400)),"不支持当前操作","unsupport operation"),
+
+    // 代理库加载失败
+    NET_ERROR_PROXY_DLLLOAD((0x80000000 | (401)),"代理库加载失败","proxy dll load error"),
+
+    // 代理用户参数不合法
+    NET_ERROR_PROXY_ILLEGAL_PARAM((0x80000000 | (402)),"代理用户参数不合法","proxy user parameter is not legal"),
+
+    // 代理句柄无效
+    NET_ERROR_PROXY_INVALID_HANDLE((0x80000000 | (403)),"代理句柄无效","handle invalid"),
+
+    // 代理登入前端设备失败
+    NET_ERROR_PROXY_LOGIN_DEVICE_ERROR((0x80000000 | (404)),"代理登入前端设备失败","login device error"),
+
+    // 启动代理服务失败
+    NET_ERROR_PROXY_START_SERVER_ERROR((0x80000000 | (405)),"启动代理服务失败","start proxy server error"),
+
+    // 请求喊话失败
+    NET_ERROR_SPEAK_FAILED((0x80000000 | (406)),"请求喊话失败","request speak failed"),
+
+    // 设备不支持此F6接口调用
+    NET_ERROR_NOT_SUPPORT_F6((0x80000000 | (407)),"设备不支持此F6接口调用","unsupport F6"),
+
+    // 光盘未就绪
+    NET_ERROR_CD_UNREADY((0x80000000 | (408)),"光盘未就绪","CD is not ready"),
+
+    // 目录不存在
+    NET_ERROR_DIR_NOT_EXIST((0x80000000 | (409)),"目录不存在","Directory does not exist"),
+
+    // 设备不支持的分割模式
+    NET_ERROR_UNSUPPORTED_SPLIT_MODE((0x80000000 | (410)),"设备不支持的分割模式","The device does not support the segmentation model"),
+
+    // 开窗参数不合法
+    NET_ERROR_OPEN_WND_PARAM((0x80000000 | (411)),"开窗参数不合法","Open the window parameter is illegal"),
+
+    // 开窗数量超过限制
+    NET_ERROR_LIMITED_WND_COUNT((0x80000000 | (412)),"开窗数量超过限制","Open the window more than limit"),
+
+    // 请求命令与当前模式不匹配
+    NET_ERROR_UNMATCHED_REQUEST((0x80000000 | (413)),"请求命令与当前模式不匹配","Request command with the current pattern don't match"),
+
+    // Render库启用高清图像内部调整策略出错
+    NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR((0x80000000 | (414)),"Render库启用高清图像内部调整策略出错","Render Library to enable high-definition image internal adjustment strategy error"),
+
+    // 设备升级失败
+    NET_ERROR_UPGRADE_FAILED((0x80000000 | (415)),"设备升级失败","Upgrade equipment failure"),
+
+    // 找不到目标设备
+    NET_ERROR_NO_TARGET_DEVICE((0x80000000 | (416)),"找不到目标设备","Can't find the target device"),
+
+    // 找不到验证设备
+    NET_ERROR_NO_VERIFY_DEVICE((0x80000000 | (417)),"找不到验证设备","Can't find the verify device"),
+
+    // 无级联权限
+    NET_ERROR_CASCADE_RIGHTLESS((0x80000000 | (418)),"无级联权限","No cascade permissions"),
+
+    // 低优先级
+    NET_ERROR_LOW_PRIORITY((0x80000000 | (419)),"低优先级","low priority"),
+
+    // 远程设备请求超时
+    NET_ERROR_REMOTE_REQUEST_TIMEOUT((0x80000000 | (420)),"远程设备请求超时","The remote device request timeout"),
+
+    // 输入源超出最大路数限制
+    NET_ERROR_LIMITED_INPUT_SOURCE((0x80000000 | (421)),"输入源超出最大路数限制","Input source beyond maximum route restrictions"),
+
+    // 设置日志打印失败
+    NET_ERROR_SET_LOG_PRINT_INFO((0x80000000 | (422)),"设置日志打印失败","Failed to set log print"),
+
+    // 入参的dwsize字段出错
+    NET_ERROR_PARAM_DWSIZE_ERROR((0x80000000 | (423)),"入参的dwsize字段出错","\"dwSize\" is not initialized in input param"),
+
+    // 电视墙数量超过上限
+    NET_ERROR_LIMITED_MONITORWALL_COUNT((0x80000000 | (424)),"电视墙数量超过上限","TV wall exceed limit"),
+
+    // 部分过程执行失败
+    NET_ERROR_PART_PROCESS_FAILED((0x80000000 | (425)),"部分过程执行失败","Fail to execute part of the process"),
+
+    // 该功能不支持转发
+    NET_ERROR_TARGET_NOT_SUPPORT((0x80000000 | (426)),"该功能不支持转发","Fail to transmit due to not supported by target"),
+
+    // 访问文件失败
+    NET_ERROR_VISITE_FILE((0x80000000 | (510)),"访问文件失败","Access to the file failed"),
+
+    // 设备忙
+    NET_ERROR_DEVICE_STATUS_BUSY((0x80000000 | (511)),"设备忙","Device busy"),
+
+    // 修改密码无权限
+    NET_USER_PWD_NOT_AUTHORIZED((0x80000000 | (512)),"修改密码无权限","Fail to change the password"),
+
+    // 密码强度不够
+    NET_USER_PWD_NOT_STRONG((0x80000000 | (513)),"密码强度不够","Password strength is not enough"),
+
+    // 没有对应的配置
+    NET_ERROR_NO_SUCH_CONFIG((0x80000000 | (514)),"没有对应的配置","No corresponding setup"),
+
+    // 录音失败
+    NET_ERROR_AUDIO_RECORD_FAILED((0x80000000 | (515)),"录音失败","Failed to record audio"),
+
+    // 数据发送失败
+    NET_ERROR_SEND_DATA_FAILED((0x80000000 | (516)),"数据发送失败","Failed to send out data"),
+
+    // 废弃接口
+    NET_ERROR_OBSOLESCENT_INTERFACE((0x80000000 | (517)),"废弃接口","Abandoned port"),
+
+    // 内部缓冲不足
+    NET_ERROR_INSUFFICIENT_INTERAL_BUF((0x80000000 | (518)),"内部缓冲不足","Internal buffer is not sufficient"),
+
+    // 修改设备ip时,需要校验密码
+    NET_ERROR_NEED_ENCRYPTION_PASSWORD((0x80000000 | (519)),"修改设备ip时,需要校验密码","verify password when changing device IP"),
+
+    // 设备不支持此记录集
+    NET_ERROR_NOSUPPORT_RECORD((0x80000000 | (520)),"设备不支持此记录集","device not support the record"),
+
+    // 设备正在升级
+    NET_ERROR_DEVICE_IN_UPGRADING((0x80000000 | (521)),"设备正在升级","Device is in upgrading"),
+
+    // 智能分析任务不存在
+    NET_ERROR_ANALYSE_TASK_NOT_EXIST((0x80000000 | (522)),"智能分析任务不存在","Analyse Task Not Exist"),
+
+    // 智能分析任务已经满
+    NET_ERROR_ANALYSE_TASK_FULL((0x80000000 | (523)),"智能分析任务已经满","Analyse Task Full"),
+
+    // 设备重启
+    NET_ERROR_DEVICE_RESTART((0x80000000 | (524)),"设备重启","Device restart"),
+
+    // 设备关机
+    NET_ERROR_DEVICE_SHUTDOWN((0x80000000 | (525)),"设备关机","Device shutdown"),
+
+    // 文件系统错误
+    NET_ERROR_FILE_SYSTEM_ERROR((0x80000000 | (526)),"文件系统错误","File system error"),
+
+    // 硬盘写错误
+    NET_ERROR_HARDDISK_WRITE_ERROR((0x80000000 | (527)),"硬盘写错误","Harddisk write error"),
+
+    // 硬盘读错误
+    NET_ERROR_HARDDISK_READ_ERROR((0x80000000 | (528)),"硬盘读错误","Harddisk read  error"),
+
+    // 无硬盘记录日志
+    NET_ERROR_NO_HARDDISK_RECORD_LOG((0x80000000 | (529)),"无硬盘记录日志","No harddisk record log"),
+
+    // 无工作盘(没有读写盘)
+    NET_ERROR_NO_HARDDISK((0x80000000 | (530)),"无工作盘(没有读写盘)","No harddisk"),
+
+    // 硬盘其他错误
+    NET_ERROR_HARDDISK_OTHER_ERRORS((0x80000000 | (531)),"硬盘其他错误","Harddisk other errors"),
+
+    // 硬盘坏道轻微错误
+    NET_ERROR_HARDDISK_BADSECTORS_MINOR_ERRORS((0x80000000 | (532)),"硬盘坏道轻微错误","Harddisk badsectors minor error"),
+
+    // 硬盘坏道严重错误
+    NET_ERROR_HARDDISK_BADSECTORS_CRITICAL_ERRORS((0x80000000 | (533)),"硬盘坏道严重错误","Harddisk badsectors critical error"),
+
+    // 硬盘物理坏道轻微
+    NET_ERROR_HARDDISK_PHYSICAL_BADSECTORS_SLIGHT((0x80000000 | (534)),"硬盘物理坏道轻微","Harddisk physical badsectors are slight"),
+
+    // 硬盘物理坏道严重
+    NET_ERROR_HARDDISK_PHYSICAL_BADSECTORS_SERIOUS((0x80000000 | (535)),"硬盘物理坏道严重","Harddisk physical badsectors are serious"),
+
+    // 断网报警
+    NET_ERROR_NETWORK_DISCONNECTION_ALARM((0x80000000 | (536)),"断网报警","Network disconnection alarm"),
+
+    // 网络断开
+    NET_ERROR_NETWORK_DISCONNECTION((0x80000000 | (537)),"网络断开","Network disconnection"),
+
+    // 设置视频源数量超出限制
+    NET_ERROR_SET_SOURCE_EXCEED((0x80000000 | (538)),"设置视频源数量超出限制","Set source exceed"),
+
+    // 上传文件尺寸超出范围(uploadFile方法)
+    NET_ERROR_SIZE_EXCEED((0x80000000 | (539)),"上传文件尺寸超出范围(uploadFile方法)","Upload file size out of range"),
+
+    // 存在日志配置文件,以日志打印配置文件为准,日志打印接口失效
+    NET_ERROR_LOGOPEN_DISABLE((0x80000000 | (540)),"存在日志配置文件,以日志打印配置文件为准,日志打印接口失效","LogCfg is exist,the CLIENT_LogOpen interface is unable."),
+
+    // 封装音频头失败
+    NET_ERROR_STREAM_PACKAGE_ERROR((0x80000000 | (541)),"封装音频头失败","stream package error"),
+
+    // 磁盘读数据限制
+    NET_ERROR_READ_LIMIT((0x80000000 | (542)),"磁盘读数据限制","Read_Limit"),
+
+    // 多画面预览已打开,资源不足,压缩回放失败
+    NET_ERROR_PREVIEWOPENED((0x80000000 | (543)),"多画面预览已打开,资源不足,压缩回放失败","PreviewOpened"),
+
+    // 压缩回放功能已打开,导致失败
+    NET_ERROR_COMPRESSOPENED((0x80000000 | (544)),"压缩回放功能已打开,导致失败","CompressOpened"),
+
+    // 未知的压缩失败原因
+    NET_ERROR_COMPRESSERROR_UNKNOWN((0x80000000 | (545)),"未知的压缩失败原因","CompressErrorUnknown"),
+
+    // 超出解码能力,导致压缩失败
+    NET_ERROR_COMPRESSERROR_OVERDECODE((0x80000000 | (546)),"超出解码能力,导致压缩失败","CompressErrorOverDecode"),
+
+    // 超出压缩能力,导致压缩失败
+    NET_ERROR_COMPRESSERROR_OVERENCODE((0x80000000 | (547)),"超出压缩能力,导致压缩失败","CompressErrorOverEncode"),
+
+    // 无原始码流,导致压缩失败
+    NET_ERROR_COMPRESSERROR_NONESTREAM((0x80000000 | (548)),"无原始码流,导致压缩失败","CompressErrorNoneStream"),
+
+    // 压缩通道所在的从片掉线,导致压缩失败
+    NET_ERROR_COMPRESSERROR_CHIPOFFLINE((0x80000000 | (549)),"压缩通道所在的从片掉线,导致压缩失败","CompressErrorChipOffline"),
+
+    // 通道未添加
+    NET_ERROR_CHANNELNOTADD((0x80000000 | (550)),"通道未添加","ChannelNotAdd"),
+
+    // 数据序列化错误
+    NET_ERROR_SERIALIZE_ERROR((0x80000000 | (1010)),"数据序列化错误","Failed to serialize data"),
+
+    // 数据反序列化错误
+    NET_ERROR_DESERIALIZE_ERROR((0x80000000 | (1011)),"数据反序列化错误","Failed to deserialize data"),
+
+    // 该无线ID已存在
+    NET_ERROR_LOWRATEWPAN_ID_EXISTED((0x80000000 | (1012)),"该无线ID已存在","the wireless id is already existed"),
+
+    // 无线ID数量已超限
+    NET_ERROR_LOWRATEWPAN_ID_LIMIT((0x80000000 | (1013)),"无线ID数量已超限","the wireless id limited"),
+
+    // 无线异常添加
+    NET_ERROR_LOWRATEWPAN_ID_ABNORMAL((0x80000000 | (1014)),"无线异常添加","add the wireless id abnormaly"),
+
+    // 加密数据失败
+    NET_ERROR_ENCRYPT((0x80000000 | (1015)),"加密数据失败","encrypt data fail"),
+
+    // 新密码不合规范
+    NET_ERROR_PWD_ILLEGAL((0x80000000 | (1016)),"新密码不合规范","new password illegal"),
+
+    // 设备已经初始化
+    NET_ERROR_DEVICE_ALREADY_INIT((0x80000000 | (1017)),"设备已经初始化","device is already init"),
+
+    // 安全码错误
+    NET_ERROR_SECURITY_CODE((0x80000000 | (1018)),"安全码错误","security code check out fail"),
+
+    // 安全码超出有效期
+    NET_ERROR_SECURITY_CODE_TIMEOUT((0x80000000 | (1019)),"安全码超出有效期","security code out of time"),
+
+    // 获取密码规范失败
+    NET_ERROR_GET_PWD_SPECI((0x80000000 | (1020)),"获取密码规范失败","get passwd specification fail"),
+
+    // 无权限进行该操作
+    NET_ERROR_NO_AUTHORITY_OF_OPERATION((0x80000000 | (1021)),"无权限进行该操作","no authority of operation"),
+
+    // 解密数据失败
+    NET_ERROR_DECRYPT((0x80000000 | (1022)),"解密数据失败","decrypt data fail"),
+
+    // 2D code校验失败
+    NET_ERROR_2D_CODE((0x80000000 | (1023)),"2D code校验失败","2D code check out fail"),
+
+    // 非法的RPC请求
+    NET_ERROR_INVALID_REQUEST((0x80000000 | (1024)),"非法的RPC请求","invalid request"),
+
+    // 密码重置功能已关闭
+    NET_ERROR_PWD_RESET_DISABLE((0x80000000 | (1025)),"密码重置功能已关闭","pwd reset unable"),
+
+    // 显示私有数据,比如规则框等失败
+    NET_ERROR_PLAY_PRIVATE_DATA((0x80000000 | (1026)),"显示私有数据,比如规则框等失败","failed to display private data,such as rule box"),
+
+    // 机器人操作失败
+    NET_ERROR_ROBOT_OPERATE_FAILED((0x80000000 | (1027)),"机器人操作失败","robot operate failed"),
+
+    // 图片大小超限
+    NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT((0x80000000 | (1028)),"图片大小超限","photosize exceeds limit"),
+
+    // 用户ID不存在
+    NET_ERROR_USERID_INVALID((0x80000000 | (1029)),"用户ID不存在","userid invalid"),
+
+    // 照片特征值提取失败
+    NET_ERROR_EXTRACTFEATURE_FAILED((0x80000000 | (1030)),"照片特征值提取失败","photo extract feature failed"),
+
+    // 照片已存在
+    NET_ERROR_PHOTO_EXIST((0x80000000 | (1031)),"照片已存在","photo exist"),
+
+    // 照片数量超过上限
+    NET_ERROR_PHOTO_OVERFLOW((0x80000000 | (1032)),"照片数量超过上限","photo over flow"),
+
+    // 通道已经打开
+    NET_ERROR_CHANNEL_ALREADY_OPENED((0x80000000 | (1033)),"通道已经打开","channel has already been opened"),
+
+    // 创建套接字失败
+    NET_ERROR_CREATE_SOCKET((0x80000000 | (1034)),"创建套接字失败","create socket error"),
+
+    // 通道号错误
+    NET_ERROR_CHANNEL_NUM((0x80000000 | (1035)),"通道号错误","invalid channel num"),
+
+    // 图片格式错误
+    NET_ERROR_PHOTO_FORMAT((0x80000000 | (1036)),"图片格式错误","photo format error"),
+
+    // 内部错误(比如:相关硬件问题,获取公钥失败,内部接口调用失败,写文件失败等等)
+    NET_ERROR_DIGITAL_CERTIFICATE_INTERNAL_ERROR((0x80000000 | (1037)),"内部错误(比如:相关硬件问题,获取公钥失败,内部接口调用失败,写文件失败等等)","Internal error"),
+
+    // 获取设备ID失败
+    NET_ERROR_DIGITAL_CERTIFICATE_GET_ID_FAILED((0x80000000 | (1038)),"获取设备ID失败","Get ID failed"),
+
+    // 证书文件非法(格式不支持或者不是证书文件)
+    NET_ERROR_DIGITAL_CERTIFICATE_IMPORT_ILLEGAL((0x80000000 | (1039)),"证书文件非法(格式不支持或者不是证书文件)","Import illegal"),
+
+    // 证书sn重复或错误或不规范
+    NET_ERROR_DIGITAL_CERTIFICATE_SN_ERROR((0x80000000 | (1040)),"证书sn重复或错误或不规范","SN error"),
+
+    // 证书commonName非法(本地设备证书与系统中的不匹配devid_cryptoID,或者对端的不符合规则(devid_crytoID))
+    NET_ERROR_DIGITAL_CERTIFICATE_COMMON_NAME_ILLEGAL((0x80000000 | (1041)),"证书commonName非法(本地设备证书与系统中的不匹配devid_cryptoID,或者对端的不符合规则(devid_crytoID))","Cert common name illegal"),
+
+    // 根证书未导入或不存在
+    NET_ERROR_DIGITAL_CERTIFICATE_NO_ROOT_CERT((0x80000000 | (1042)),"根证书未导入或不存在","No root cert"),
+
+    // 证书被吊销
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_REVOKED((0x80000000 | (1043)),"证书被吊销","Cert revoked"),
+
+    // 证书不可用或未生效或已过期
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_INVALID((0x80000000 | (1044)),"证书不可用或未生效或已过期","Cert invalid"),
+
+    // 证书签名不匹配
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_ERROR_SIGN((0x80000000 | (1045)),"证书签名不匹配","Cert error sign"),
+
+    // 超出证书导入上限
+    NET_ERROR_DIGITAL_CERTIFICATE_COUNTS_UPPER_LIMIT((0x80000000 | (1046)),"超出证书导入上限","Counts upper limit"),
+
+    // 证书文件不存在(导出证书或者获取对应证书的公钥)
+    NET_ERROR_DIGITAL_CERTIFICATE_CERT_NO_EXIST((0x80000000 | (1047)),"证书文件不存在(导出证书或者获取对应证书的公钥)","Cert no exist"),
+
+    // 默认搜索端口无法使用(5050,37810)
+    NET_ERROR_DEFULAT_SEARCH_PORT((0x80000000 | (1048)),"默认搜索端口无法使用(5050,37810)","default search port can't use(5050,37810)"),
+
+    // 批量添加目标停止
+    NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_STOUP((0x80000000 | (1049)),"批量添加目标停止","Target recognition server multi append stop"),
+
+    // 批量添加目标失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_MULTI_APPEND_ERROR((0x80000000 | (1050)),"批量添加目标失败","Target recognition server multi append error"),
+
+    // 组ID超过最大值
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED((0x80000000 | (1051)),"组ID超过最大值","Target recognition server group id exceed"),
+
+    // 组ID不存在或为空
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_NOT_IN_REGISTER_GROUP((0x80000000 | (1052)),"组ID不存在或为空","Target recognition server group id not in register group"),
+
+    // 无图片数据
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_NOT_FOUND((0x80000000 | (1053)),"无图片数据","Target recognition server picture not found"),
+
+    // 生成组ID超出范围
+    NET_ERROR_FACE_RECOGNITION_SERVER_GENERATE_GROUP_ID_FAILED((0x80000000 | (1054)),"生成组ID超出范围","Target recognition server generate group id failed"),
+
+    // 设置配置失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_SET_CONFIG_FAILED((0x80000000 | (1055)),"设置配置失败","Target recognition server set config failed"),
+
+    // 图片文件打开失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_OPEN_FAILED((0x80000000 | (1056)),"图片文件打开失败","Target recognition server file open failed"),
+
+    // 图片文件读取失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_READ_FAILED((0x80000000 | (1057)),"图片文件读取失败","Target recognition server file read failed"),
+
+    // 图片文件写入失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILE_WRITE_FAILED((0x80000000 | (1058)),"图片文件写入失败","Target recognition server file write failed"),
+
+    // 图片分辨率异常
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_DPI_ERROR((0x80000000 | (1059)),"图片分辨率异常","Target recognition server picture dpi error"),
+
+    // 图片像素异常
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_PX_ERROR((0x80000000 | (1060)),"图片像素异常","Target recognition server picture px error"),
+
+    // 图片大小不对
+    NET_ERROR_FACE_RECOGNITION_SERVER_PICTURE_SIZE_ERROR((0x80000000 | (1061)),"图片大小不对","Target recognition server picture size error"),
+
+    // 数据库操作失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_DATA_BASE_ERROR((0x80000000 | (1062)),"数据库操作失败","Target recognition server database error"),
+
+    // 人员数量超过限制
+    NET_ERROR_FACE_RECOGNITION_SERVER_FACE_MAX_NUM((0x80000000 | (1063)),"人员数量超过限制","Target recognition server target max num"),
+
+    // 生日日期格式错误
+    NET_ERROR_FACE_RECOGNITION_SERVER_BIRTH_DAY_FORMAT_ERROR((0x80000000 | (1064)),"生日日期格式错误","Target recognition server birthday format error"),
+
+    // 人员UID不存在或为空
+    NET_ERROR_FACE_RECOGNITION_SERVER_UID_ERROR((0x80000000 | (1065)),"人员UID不存在或为空","Target recognition server uid error"),
+
+    // 令牌不存在或为空
+    NET_ERROR_FACE_RECOGNITION_SERVER_TOKEN_ERROR((0x80000000 | (1066)),"令牌不存在或为空","Target recognition server token error"),
+
+    // 查询起始数大于总数
+    NET_ERROR_FACE_RECOGNITION_SERVER_BEGIN_NUM_OVER_RUN((0x80000000 | (1067)),"查询起始数大于总数","Target recognition server begin num over run"),
+
+    // 需手动建模人数为0
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_NUM_ZERO((0x80000000 | (1068)),"需手动建模人数为0","Target recognition server abstract num zero"),
+
+    // 建模分析器启动失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_INIT_ERROR((0x80000000 | (1069)),"建模分析器启动失败","Target recognition server abstract init error"),
+
+    // 设备正在自动建模
+    NET_ERROR_FACE_RECOGNITION_SERVER_AUTO_ABSTRACT_STATE((0x80000000 | (1070)),"设备正在自动建模","Target recognition server auto abstract state"),
+
+    // 设备正在手动建模
+    NET_ERROR_FACE_RECOGNITION_SERVER_ABSTRACT_STATE((0x80000000 | (1071)),"设备正在手动建模","Target recognition server abstract state"),
+
+    // 设备正在导入导出
+    NET_ERROR_FACE_RECOGNITION_SERVER_IM_EX_STATE((0x80000000 | (1072)),"设备正在导入导出","Target recognition server im ex state"),
+
+    // 图片写入失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_PIC_WRITE_FAILED((0x80000000 | (1073)),"图片写入失败","Target recognition server pic write failed"),
+
+    // 超出目标库空间大小限制
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_SPACE_EXCEED((0x80000000 | (1074)),"超出目标库空间大小限制","Target recognition server group space exceed"),
+
+    // 超出目标库图片数量限制
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_PIC_COUNT_EXCEED((0x80000000 | (1075)),"超出目标库图片数量限制","Target recognition server group pic count exceed"),
+
+    // 目标库不存在
+    NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_NOT_FOUND((0x80000000 | (1076)),"目标库不存在","Target recognition server group not found"),
+
+    // 查询原目标库数据结果无效
+    NET_ERROR_FACE_RECOGNITION_SERVER_FIND_RECORDS_ERROR((0x80000000 | (1077)),"查询原目标库数据结果无效","Target recognition server find record error"),
+
+    // 删除原目标库数据失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_PERSON_ERROR((0x80000000 | (1078)),"删除原目标库数据失败","Target recognition server delete person error"),
+
+    // 删除目标库失败
+    NET_ERROR_FACE_RECOGNITION_SERVER_DELETE_GROUP_ERROR((0x80000000 | (900)),"删除目标库失败","Target recognition server delete group error"),
+
+    // 命名格式错误
+    NET_ERROR_FACE_RECOGNITION_SERVER_NAME_FORMAT_ERROR((0x80000000 | (901)),"命名格式错误","Target recognition server name format error"),
+
+    // 图片保存路径未设置
+    NET_ERROR_FACE_RECOGNITION_SERVER_FILEPATH_NOT_SET((0x80000000 | (902)),"图片保存路径未设置","Target recognition server file path not set"),
+
+    // 添加小区名字重复
+    NET_ERROR_FACE_RECOGNITION_SERVER_AREAS_NAME_REPEAT((0x80000000 | (903)),"添加小区名字重复","Areas Name Repeat"),
+
+    // 添加小区ID重复
+    NET_ERROR_FACE_RECOGNITION_SERVER_AREAS_ID_REPEAT((0x80000000 | (904)),"添加小区ID重复","Areas ID Repeat"),
+
+    // 添加小区通道重复
+    NET_ERROR_FACE_RECOGNITION_SERVER_AREAS_CHANNEL_REPEAT((0x80000000 | (905)),"添加小区通道重复","Areas Channel Repeat"),
+
+    // 导出任务超出数量限制
+    NET_ERROR_FACE_RECOGNITION_SERVER_EXPORT_TASK_COUNT_EXCEED((0x80000000 | (906)),"导出任务超出数量限制","Export Task Count Exceed"),
+
+    // 设备不支持以图搜图
+    NET_ERROR_FACE_RECOGNITION_SERVER_PIC_SEARCH_NOT_SUPPORT((0x80000000 | (907)),"设备不支持以图搜图","Pic Search Not Support"),
+
+    // 设备不支持从大图中检测指定目标图片
+    NET_ERROR_FACE_RECOGNITION_SERVER_DETECT_MULTI_FACE_NOT_SUPPORT((0x80000000 | (908)),"设备不支持从大图中检测指定目标图片","Detect Multi Face Not Support"),
+
+    // 人员已经存在
+    NET_ERROR_FACE_RECOGNITION_SERVER_PERSON_ALREADY_EXISTS((0x80000000 | (909)),"人员已经存在","The person already exists"),
+
+    // 设备解析协议错误
+    NET_ERROR_DEVICE_PARSE_PROTOCOL((0x80000000 | (1079)),"设备解析协议错误","device parses protocol error"),
+
+    // 设备返回无效请求
+    NET_ERROR_DEVICE_INVALID_REQUEST((0x80000000 | (1080)),"设备返回无效请求","device returns invalid request"),
+
+    // 设备内部错误
+    NET_ERROR_DEVICE_INTERNAL_ERROR((0x80000000 | (1081)),"设备内部错误","device internal error"),
+
+    // 设备内部请求超时
+    NET_ERROR_DEVICE_REQUEST_TIMEOUT((0x80000000 | (1082)),"设备内部请求超时","device internal request timeout"),
+
+    // 设备保活失败
+    NET_ERROR_DEVICE_KEEPALIVE_FAIL((0x80000000 | (1083)),"设备保活失败","device keeps alive fail"),
+
+    // 设备网络错误
+    NET_ERROR_DEVICE_NETWORK_ERROR((0x80000000 | (1084)),"设备网络错误","device network error"),
+
+    // 设备内部未知错误
+    NET_ERROR_DEVICE_UNKNOWN_ERROR((0x80000000 | (1085)),"设备内部未知错误","device unknown error"),
+
+    // 设备组件接口没有找到
+    NET_ERROR_DEVICE_COM_INTERFACE_NOTFOUND((0x80000000 | (1086)),"设备组件接口没有找到","device not found com interface"),
+
+    // 设备组件实现没有找到
+    NET_ERROR_DEVICE_COM_IMPLEMENT_NOTFOUND((0x80000000 | (1087)),"设备组件实现没有找到","device not found com implement"),
+
+    // 设备接入组件没有找到
+    NET_ERROR_DEVICE_COM_NOTFOUND((0x80000000 | (1088)),"设备接入组件没有找到","device not found client component"),
+
+    // 设备接入组件实例不存在
+    NET_ERROR_DEVICE_COM_INSTANCE_NOTEXIST((0x80000000 | (1089)),"设备接入组件实例不存在","device not found client com instance"),
+
+    // 设备组件工厂创建组件失败
+    NET_ERROR_DEVICE_CREATE_COM_FAIL((0x80000000 | (1090)),"设备组件工厂创建组件失败","device creates com fail"),
+
+    // 设备组件工厂获取组件实例失败
+    NET_ERROR_DEVICE_GET_COM_FAIL((0x80000000 | (1091)),"设备组件工厂获取组件实例失败","device gets com instance fail"),
+
+    // 设备业务请求不被接受
+    NET_ERROR_DEVICE_BAD_REQUEST((0x80000000 | (1092)),"设备业务请求不被接受","device can not accept bad request"),
+
+    // 设备已经在处理请求,不接受重复请求
+    NET_ERROR_DEVICE_REQUEST_IN_PROGRESS((0x80000000 | (1093)),"设备已经在处理请求,不接受重复请求","device does not accept repeat request when in progressing"),
+
+    // 设备资源不足
+    NET_ERROR_DEVICE_LIMITED_RESOURCE((0x80000000 | (1094)),"设备资源不足","device limited resource"),
+
+    // 设备业务超时
+    NET_ERROR_DEVICE_BUSINESS_TIMEOUT((0x80000000 | (1095)),"设备业务超时","device business timeout"),
+
+    // 设备接收过多请求
+    NET_ERROR_DEVICE_TOO_MANY_REQUESTS((0x80000000 | (1096)),"设备接收过多请求","device accepts too many requests"),
+
+    // 设备未准备就绪,不接受业务请求
+    NET_ERROR_DEVICE_NOT_ALREADY((0x80000000 | (1097)),"设备未准备就绪,不接受业务请求","device not already and cannot accept request"),
+
+    // 设备录像查询超时
+    NET_ERROR_DEVICE_SEARCHRECORD_TIMEOUT((0x80000000 | (1098)),"设备录像查询超时","device searchs record timeout"),
+
+    // 设备录像查询时间无效
+    NET_ERROR_DEVICE_SEARCHTIME_INVALID((0x80000000 | (1099)),"设备录像查询时间无效","device checks search record time invalid"),
+
+    // 设备校验SSID无效
+    NET_ERROR_DEVICE_SSID_INVALID((0x80000000 | (1100)),"设备校验SSID无效","device checks SSID invalid"),
+
+    // 设备校验通道号或码流类型无效
+    NET_ERROR_DEVICE_CHANNEL_STREAMTYPE_ERROR((0x80000000 | (1101)),"设备校验通道号或码流类型无效","device checks channel or streamtype invalid"),
+
+    // 设备不支持该码流打包格式
+    NET_ERROR_DEVICE_STREAM_PACKINGFORMAT_UNSUPPORT((0x80000000 | (1102)),"设备不支持该码流打包格式","device does not support stream packing format"),
+
+    // 设备不支持该语音编码格式
+    NET_ERROR_DEVICE_AUDIO_ENCODINGFORMAT_UNSUPPORT((0x80000000 | (1103)),"设备不支持该语音编码格式","device does not support audio encoding format"),
+
+    // 校验请求安全码失败,可使用本地GUI方式重置密码
+    NET_ERROR_SECURITY_ERROR_SUPPORT_GUI((0x80000000 | (1104)),"校验请求安全码失败,可使用本地GUI方式重置密码","check request security failed, using local GUI reset password"),
+
+    // 校验请求安全码失败,可使用APP、configtool工具重置密码
+    NET_ERROR_SECURITY_ERROR_SUPPORT_MULT((0x80000000 | (1105)),"校验请求安全码失败,可使用APP、configtool工具重置密码","check request security failed, using private APP or configtool reset password"),
+
+    // 校验请求安全码失败,可登陆Web页面重置密码
+    NET_ERROR_SECURITY_ERROR_SUPPORT_UNIQUE((0x80000000 | (1106)),"校验请求安全码失败,可登陆Web页面重置密码","check request security failed, using Web reset password"),
+
+    // 转码库缺失
+    NET_ERROR_STREAMCONVERTOR_DEFECT((0x80000000 | (1107)),"转码库缺失","streamconvertor defect"),
+
+    // 调用加密库产生安全码失败
+    NET_ERROR_SECURITY_GENERATE_SAFE_CODE((0x80000000 | (1108)),"调用加密库产生安全码失败","generate safe code failed"),
+
+    // 获取联系方式失败
+    NET_ERROR_SECURITY_GET_CONTACT((0x80000000 | (1109)),"获取联系方式失败","get contact failed"),
+
+    // 获取重置密码的二维码信息失败
+    NET_ERROR_SECURITY_GET_QRCODE((0x80000000 | (1110)),"获取重置密码的二维码信息失败","get QR code information failed of reset passwd"),
+
+    // 设备未初始化,无法重置
+    NET_ERROR_SECURITY_CANNOT_RESET((0x80000000 | (1111)),"设备未初始化,无法重置","device uninitialized, can't reset"),
+
+    // 不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱
+    NET_ERROR_SECURITY_NOT_SUPPORT_CONTACT_MODE((0x80000000 | (1112)),"不支持设置该种联系方式,如只支持设置手机号,却请求设置邮箱","unsupported contact mode"),
+
+    // 对端响应超时
+    NET_ERROR_SECURITY_RESPONSE_TIMEOUT((0x80000000 | (1113)),"对端响应超时","server response time out"),
+
+    // 尝试校验AuthCode次数过多,禁止校验
+    NET_ERROR_SECURITY_AUTHCODE_FORBIDDEN((0x80000000 | (1114)),"尝试校验AuthCode次数过多,禁止校验","had check AuthCode too much, forbid check"),
+
+    // (虚拟转码)登陆远程设备失败
+    NET_ERROR_TRANCODE_LOGIN_REMOTE_DEV((0x80000000 | (1115)),"(虚拟转码)登陆远程设备失败","(virtual transcode)login remote device failed"),
+
+    // (虚拟转码)没有可用的通道资源
+    NET_ERROR_TRANCODE_NOFREE_CHANNEL((0x80000000 | (1116)),"(虚拟转码)没有可用的通道资源","(virtual transcode)no free virtual channel"),
+
+    // VK信息解密失败
+    NET_ERROR_VK_INFO_DECRYPT_FAILED((0x80000000 | (1117)),"VK信息解密失败","VK info decrypt failed"),
+
+    // VK信息解析失败
+    NET_ERROR_VK_INFO_DESERIALIZE_FAILED((0x80000000 | (1118)),"VK信息解析失败","VK info deserial failed"),
+
+    // SDK GDPR功能未使能
+    NET_ERROR_GDPR_ABILITY_NOT_ENABLE((0x80000000 | (1119)),"SDK GDPR功能未使能","SDK GDPR ability not enable"),
+
+    // 门禁快速复核:无权限
+    NET_ERROR_FAST_CHECK_NO_AUTH((0x80000000 | (1120)),"门禁快速复核:无权限","access control fast check:no authority"),
+
+    // 门禁快速复核:文件不存在
+    NET_ERROR_FAST_CHECK_NO_FILE((0x80000000 | (1121)),"门禁快速复核:文件不存在","access control fast check:file does not exist"),
+
+    // 门禁快速复核:文件准备失败
+    NET_ERROR_FAST_CHECK_FILE_FAIL((0x80000000 | (1122)),"门禁快速复核:文件准备失败","access control fast check:fail to prepare file"),
+
+    // 门禁快速复核:系统忙
+    NET_ERROR_FAST_CHECK_BUSY((0x80000000 | (1123)),"门禁快速复核:系统忙","access control fast check:system is busy"),
+
+    // 门禁快速复核:未定义密码, 不允许导出
+    NET_ERROR_FAST_CHECK_NO_PASSWORD((0x80000000 | (1124)),"门禁快速复核:未定义密码, 不允许导出","access control fast check:no password, and import is not allowed"),
+
+    // 门禁快速导入:发送门禁数据失败
+    NET_ERROR_IMPORT_ACCESS_SEND_FAILD((0x80000000 | (1125)),"门禁快速导入:发送门禁数据失败","access control fast import:fail to send access control data"),
+
+    // 门禁快速导入:系统忙, 已经有导入任务
+    NET_ERROR_IMPORT_ACCESS_BUSY((0x80000000 | (1126)),"门禁快速导入:系统忙, 已经有导入任务","access control fast import:system is busy"),
+
+    // 门禁快速导入:数据包检验失败
+    NET_ERROR_IMPORT_ACCESS_DATAERROR((0x80000000 | (1127)),"门禁快速导入:数据包检验失败","access control fast import:packet data check failed"),
+
+    // 门禁快速导入:数据包非法
+    NET_ERROR_IMPORT_ACCESS_DATAINVALID((0x80000000 | (1128)),"门禁快速导入:数据包非法","access control fast import:illegal packet data"),
+
+    // 门禁快速导入:同步失败,数据库无法生成
+    NET_ERROR_IMPORT_ACCESS_SYNC_FALID((0x80000000 | (1129)),"门禁快速导入:同步失败,数据库无法生成","access control fast import:fail to synchronization"),
+
+    // 门禁快速导入:数据库已满, 无法导入
+    NET_ERROR_IMPORT_ACCESS_DBFULL((0x80000000 | (1130)),"门禁快速导入:数据库已满, 无法导入","access control fast import:data base is full"),
+
+    // 门禁快速导入:存储空间已满, 无法导入
+    NET_ERROR_IMPORT_ACCESS_SDFULL((0x80000000 | (1131)),"门禁快速导入:存储空间已满, 无法导入","access control fast import:SD is full"),
+
+    // 门禁快速导入:导入压缩包密码不对
+    NET_ERROR_IMPORT_ACCESS_CIPHER_ERROR((0x80000000 | (1132)),"门禁快速导入:导入压缩包密码不对","access control fast import:password error"),
+
+    // 参数无效
+    NET_ERROR_INVALID_PARAM((0x80000000 | (1133)),"参数无效","invalid param"),
+
+    // 密码无效
+    NET_ERROR_INVALID_PASSWORD((0x80000000 | (1134)),"密码无效","invalid password"),
+
+    // 信息无效
+    NET_ERROR_INVALID_FINGERPRINT((0x80000000 | (1135)),"信息无效","invalid infomation"),
+
+    // 目标无效
+    NET_ERROR_INVALID_FACE((0x80000000 | (1136)),"目标无效","invalid target"),
+
+    // 卡无效
+    NET_ERROR_INVALID_CARD((0x80000000 | (1137)),"卡无效","invalid card"),
+
+    // 用户无效
+    NET_ERROR_INVALID_USER((0x80000000 | (1138)),"用户无效","invalid user"),
+
+    // 能力集子服务获取失败
+    NET_ERROR_GET_SUBSERVICE((0x80000000 | (1139)),"能力集子服务获取失败","device get sub service fail"),
+
+    // 获取组件的方法集失败
+    NET_ERROR_GET_METHOD((0x80000000 | (1140)),"获取组件的方法集失败","device get method fail"),
+
+    // 获取资源实体能力集失败
+    NET_ERROR_GET_SUBCAPS((0x80000000 | (1141)),"获取资源实体能力集失败","device get sub caps fail"),
+
+    // 已达插入上限
+    NET_ERROR_UPTO_INSERT_LIMIT((0x80000000 | (1142)),"已达插入上限","up to insert limit"),
+
+    // 已达最大插入速度
+    NET_ERROR_UPTO_MAX_INSERT_RATE((0x80000000 | (1143)),"已达最大插入速度","up tp max insert rate"),
+
+    // 清除信息数据失败
+    NET_ERROR_ERASE_FINGERPRINT((0x80000000 | (1144)),"清除信息数据失败","erase infomation data fail"),
+
+    // 清除目标数据失败
+    NET_ERROR_ERASE_FACE((0x80000000 | (1145)),"清除目标数据失败","erase target data fail"),
+
+    // 清除卡数据失败
+    NET_ERROR_ERASE_CARD((0x80000000 | (1146)),"清除卡数据失败","erase card data  fail"),
+
+    // 没有记录
+    NET_ERROR_NO_RECORD((0x80000000 | (1147)),"没有记录","no record"),
+
+    // 查找到最后,没有更多记录
+    NET_ERROR_NOMORE_RECORDS((0x80000000 | (1148)),"查找到最后,没有更多记录","no more records"),
+
+    // 下发卡或信息时,数据重复
+    NET_ERROR_RECORD_ALREADY_EXISTS((0x80000000 | (1149)),"下发卡或信息时,数据重复","record already exist"),
+
+    // 超过个人最大信息记录数
+    NET_ERROR_EXCEED_MAX_FINGERPRINT_PERUSER((0x80000000 | (1150)),"超过个人最大信息记录数","exceed max infomation per user"),
+
+    // 超过个人最大卡片记录数
+    NET_ERROR_EXCEED_MAX_CARD_PERUSER((0x80000000 | (1151)),"超过个人最大卡片记录数","exceed max card per user"),
+
+    // 超过门禁管理员个数限制
+    NET_ERROR_EXCEED_ADMINISTRATOR_LIMIT((0x80000000 | (1152)),"超过门禁管理员个数限制","exceed administrator limit"),
+
+    // 设备不支持高安全等级登录
+    NET_LOGIN_ERROR_DEVICE_NOT_SUPPORT_HIGHLEVEL_SECURITY_LOGIN((0x80000000 | (1153)),"设备不支持高安全等级登录","device not support high level security login"),
+
+    // 设备只支持高安全等级登录
+    NET_LOGIN_ERROR_DEVICE_ONLY_SUPPORT_HIGHLEVEL_SECURITY_LOGIN((0x80000000 | (1154)),"设备只支持高安全等级登录","device only support high level security login"),
+
+    // 表示此视频通道处于离线,拉流失败
+    NET_ERROR_VIDEO_CHANNEL_OFFLINE((0x80000000 | (1155)),"表示此视频通道处于离线,拉流失败","current video channel is offline, play failed"),
+
+    // 用户编号不规范
+    NET_ERROR_USERID_FORMAT_INCORRECT((0x80000000 | (1156)),"用户编号不规范","The format of  the User ID is incorrect - should be all digital numbers"),
+
+    // 找不到该SN对应的通道
+    NET_ERROR_CANNOT_FIND_CHANNEL_RELATE_TO_SN((0x80000000 | (1157)),"找不到该SN对应的通道","The corresponding channel to this serial number could not be found"),
+
+    // 该通道的任务队列满
+    NET_ERROR_TASK_QUEUE_OF_CHANNEL_IS_FULL((0x80000000 | (1158)),"该通道的任务队列满","The task queue for this channel is full"),
+
+    // 申请不到新的用户信息(权限)块
+    NET_ERROR_APPLY_USER_INFO_BLOCK_FAIL((0x80000000 | (1159)),"申请不到新的用户信息(权限)块","Applying for new user information blocks failed"),
+
+    // 用户密码数量超过限制
+    NET_ERROR_EXCEED_MAX_PASSWD_PERUSER((0x80000000 | (1160)),"用户密码数量超过限制","The maximum number of user's password exceeded"),
+
+    // 设备内部异常引起协议解析错误
+    NET_ERROR_PARSE_PROTOCOL((0x80000000 | (1161)),"设备内部异常引起协议解析错误","Internal error when parsing protocol packages"),
+
+    // 卡号已存在
+    NET_ERROR_CARD_NUM_EXIST((0x80000000 | (1162)),"卡号已存在","card num already exist"),
+
+    // 信息已存在
+    NET_ERROR_FINGERPRINT_EXIST((0x80000000 | (1163)),"信息已存在","infomation already exist"),
+
+    // 打开播放组失败
+    NET_ERROR_OPEN_PLAYGROUP_FAIL((0x80000000 | (1164)),"打开播放组失败","open play group fail"),
+
+    // 已位于播放组中
+    NET_ERROR_ALREADY_IN_PLAYGROUP((0x80000000 | (1165)),"已位于播放组中","play handle already in play group"),
+
+    // 查询播放组时间失败
+    NET_ERROR_QUERY_PLAYGROUP_TIME_FAIL((0x80000000 | (1166)),"查询播放组时间失败","query play group time fail"),
+
+    // 设置播放组基准通道失败
+    NET_ERROR_SET_PLAYGROUP_BASECHANNEL_FAIL((0x80000000 | (1167)),"设置播放组基准通道失败","set play group base channel fail"),
+
+    // 设置播放组方向失败
+    NET_ERROR_SET_PLAYGROUP_DIRECTION_FAIL((0x80000000 | (1168)),"设置播放组方向失败","set play group direction fail"),
+
+    // 设置播放组速度失败
+    NET_ERROR_SET_PLAYGROUP_SPEED_FAIL((0x80000000 | (1169)),"设置播放组速度失败","set play group speed fail"),
+
+    // 加入播放组失败
+    NET_ERROR_ADD_PLAYGROUP_FAIL((0x80000000 | (1170)),"加入播放组失败","add play handle to play group fail"),
+
+    // 导出AOL日志:无权限
+    NET_ERROR_EXPORT_AOL_LOGFILE_NO_AUTH((0x80000000 | (1171)),"导出AOL日志:无权限","export aol log file:no auth"),
+
+    // 导出AOL日志:文件不存在
+    NET_ERROR_EXPORT_AOL_LOGFILE_NO_FILE((0x80000000 | (1172)),"导出AOL日志:文件不存在","export aol log file:no file"),
+
+    // 导出AOL日志:文件准备失败
+    NET_ERROR_EXPORT_AOL_LOGFILE_FILE_FAIL((0x80000000 | (1173)),"导出AOL日志:文件准备失败","export aol log file:prepare file fail"),
+
+    // 导出AOL日志:系统忙
+    NET_ERROR_EXPORT_AOL_LOGFILE_BUSY((0x80000000 | (1174)),"导出AOL日志:系统忙","export aol log file:device busy"),
+
+    // License为空
+    NET_ERROR_EMPTY_LICENSE((0x80000000 | (1175)),"License为空","Empty license"),
+
+    // 不支持该模式
+    NET_ERROR_UNSUPPORTED_MODE((0x80000000 | (1176)),"不支持该模式","Unsupported mode"),
+
+    // URL与APP不匹配
+    NET_ERROR_URL_APP_NOT_MATCH((0x80000000 | (1177)),"URL与APP不匹配","Url and App are not match"),
+
+    // 读取信息失败
+    NET_ERROR_READ_INFO_FAILED((0x80000000 | (1178)),"读取信息失败","Read info failed"),
+
+    // 写入失败
+    NET_ERROR_WRITE_FAILED((0x80000000 | (1179)),"写入失败","Write failed"),
+
+    // 未找到APP
+    NET_ERROR_NO_SUCH_APP((0x80000000 | (1180)),"未找到APP","No such App"),
+
+    // 校验失败
+    NET_ERROR_VERIFIF_FAILED((0x80000000 | (1181)),"校验失败","Verify failed"),
+
+    // License已过期
+    NET_ERROR_LICENSE_OUT_DATE((0x80000000 | (1182)),"License已过期","License out of date"),
+
+    // 升级程序版本过低
+    NET_ERROR_UPGRADE_PROGRAM_TOO_OLD((0x80000000 | (1183)),"升级程序版本过低","upgrade program version too old"),
+
+    // 加密传输被裁剪
+    NET_ERROR_SECURE_TRANSMIT_BEEN_CUT((0x80000000 | (1184)),"加密传输被裁剪","secure transmit has been cut"),
+
+    // 设备不支持安全传输
+    NET_ERROR_DEVICE_NOT_SUPPORT_SECURE_TRANSMIT((0x80000000 | (1185)),"设备不支持安全传输","device not support secure transmit"),
+
+    // 主码流成功的情况下,辅码流登录失败
+    NET_ERROR_EXTRA_STREAM_LOGIN_FAIL_CAUSE_BY_MAIN_STREAM((0x80000000 | (1186)),"主码流成功的情况下,辅码流登录失败","when main stream success, extra stream login fail"),
+
+    // 辅码流被前端关闭
+    NET_ERROR_EXTRA_STREAM_CLOSED_BY_REMOTE_DEVICE((0x80000000 | (1187)),"辅码流被前端关闭","extra stream closed by remote device"),
+
+    // 目标库导入:发送目标库数据失败
+    NET_ERROR_IMPORT_FACEDB_SEND_FAILD((0x80000000 | (1188)),"目标库导入:发送目标库数据失败","Import targetdb: Failed to send target database data"),
+
+    // 目标库导入:系统忙, 已经有导入任务
+    NET_ERROR_IMPORT_FACEDB_BUSY((0x80000000 | (1189)),"目标库导入:系统忙, 已经有导入任务","Import targetdb: The system is busy. There are import tasks"),
+
+    // 目标库导入:数据包检验失败
+    NET_ERROR_IMPORT_FACEDB_DATAERROR((0x80000000 | (1190)),"目标库导入:数据包检验失败","Import targetdb: Packet validation failed"),
+
+    // 目标库导入:数据包非法
+    NET_ERROR_IMPORT_FACEDB_DATAINVALID((0x80000000 | (1191)),"目标库导入:数据包非法","Import targetdb: Invalid packet"),
+
+    // 目标库导入:上传失败
+    NET_ERROR_IMPORT_FACEDB_UPGRADE_FAILD((0x80000000 | (1192)),"目标库导入:上传失败","Import targetdb:Upload failed"),
+
+    // 目标库导入:用户无权限
+    NET_ERROR_IMPORT_FACEDB_NO_AUTHORITY((0x80000000 | (1193)),"目标库导入:用户无权限","Import targetdb:No authority"),
+
+    // 目标库导入:文件格式异常
+    NET_ERROR_IMPORT_FACEDB_ABNORMAL_FILE((0x80000000 | (1194)),"目标库导入:文件格式异常","Import targetdb:Abnormal file"),
+
+    // 目标库导入:同步失败,数据库无法生成
+    NET_ERROR_IMPORT_FACEDB_SYNC_FALID((0x80000000 | (1195)),"目标库导入:同步失败,数据库无法生成","Import targetdb: Synchronization failed, database could not be generated"),
+
+    // 目标库导入:数据库已满, 无法导入
+    NET_ERROR_IMPORT_FACEDB_DBFULL((0x80000000 | (1196)),"目标库导入:数据库已满, 无法导入","Import targetdb: Database is full, unable to import"),
+
+    // 目标库导入:存储空间已满, 无法导入
+    NET_ERROR_IMPORT_FACEDB_SDFULL((0x80000000 | (1197)),"目标库导入:存储空间已满, 无法导入","Import targetdb: Storage space is full, unable to import"),
+
+    // 目标库导入:导入压缩包密码不对
+    NET_ERROR_IMPORT_FACEDB_CIPHER_ERROR((0x80000000 | (1198)),"目标库导入:导入压缩包密码不对","Import targetdb: Incorrect password for importing compressed package"),
+
+    // 目标库导出:无权限
+    NET_ERROR_EXPORT_FACEDB_NO_AUTH((0x80000000 | (1199)),"目标库导出:无权限","Export targetdb: No authority"),
+
+    // 目标库导出:文件不存在
+    NET_ERROR_EXPORT_FACEDB_NO_FILE((0x80000000 | (1200)),"目标库导出:文件不存在","Export targetdb: File does not exist"),
+
+    // 目标库导出:文件准备失败
+    NET_ERROR_EXPORT_FACEDB_FILE_FAIL((0x80000000 | (1201)),"目标库导出:文件准备失败","Export targetdb: File preparation failed"),
+
+    // 目标库导出:系统忙
+    NET_ERROR_EXPORT_FACEDB_BUSY((0x80000000 | (1202)),"目标库导出:系统忙","Export targetdb: System busy"),
+
+    // 目标库导出:未定义密码, 不允许导出
+    NET_ERROR_EXPORT_FACEDB_NO_PASSWORD((0x80000000 | (1203)),"目标库导出:未定义密码, 不允许导出","Export targetdb: No password defined, export not allowed"),
+
+    // 获取了过多的数据,设备无法处理
+    NET_ERROR_REQUESTED_TOO_MUCH_DATA((0x80000000 | (1204)),"获取了过多的数据,设备无法处理","Requested Too Much Data at one time."),
+
+    // 在业务批量执行过程中有错误发生
+    NET_ERROR_BATCH_PROCESS_ERROR((0x80000000 | (1205)),"在业务批量执行过程中有错误发生","Batch Process Error"),
+
+    // 某种原因,业务被取消执行
+    NET_ERROR_OPERATION_CANCELLED((0x80000000 | (1206)),"某种原因,业务被取消执行","Operation Cancelled"),
+
+    // 设备型号不对,无法进一步处理
+    NET_ERROR_DEVICE_INVALID((0x80000000 | (1207)),"设备型号不对,无法进一步处理","Device Invalid"),
+
+    // 无法获取到设备状态信息
+    NET_ERROR_DEVICE_UNAVAILABLE((0x80000000 | (1208)),"无法获取到设备状态信息","Device Unavailable - Can not get the device status."),
+
+    // 信息通过URL下载方式下载失败
+    NET_ERROR_FINGERPRINT_DOWNLOAD_FAIL((0x80000000 | (1209)),"信息通过URL下载方式下载失败","information Download Fail"),
+
+    // 账户登录中
+    NET_ERROR_ACCOUNT_IN_USE((0x80000000 | (1210)),"账户登录中","Account In Use"),
+
+    // 更新用户眼睛信息时,用户不存在目标
+    NET_ERROR_IRIS_INFO_NOT_EXISTED((0x80000000 | (1211)),"更新用户眼睛信息时,用户不存在目标","Eyes Info Not Existed"),
+
+    // 下发的眼睛数据格式、特征值大小错误
+    NET_ERROR_INVALID_IRIS_DATA((0x80000000 | (1212)),"下发的眼睛数据格式、特征值大小错误","Invalid Eyes Data"),
+
+    // 眼睛信息已存在
+    NET_ERROR_IRIS_ALREADY_EXIST((0x80000000 | (1213)),"眼睛信息已存在","Eyes Info Already Exist"),
+
+    // 眼睛信息删除失败
+    NET_ERROR_ERASE_IRIS_FAILED((0x80000000 | (1214)),"眼睛信息删除失败","Erase Eyes Info Failed"),
+
+    // 超出个人所支持的眼睛信息组数量,两个眼睛(左右眼)为一组
+    NET_ERROR_EXCEED_MAX_IRIS_GROUP_COUNT_PER_USER((0x80000000 | (1215)),"超出个人所支持的眼睛信息组数量,两个眼睛(左右眼)为一组","Exceed Max Eyes Info Group Count Per User"),
+
+    // 超出个人单组眼睛信息所能记录的最大数量
+    NET_ERROR_EXCEED_MAX_IRIS_COUNT_PER_GROUP((0x80000000 | (1216)),"超出个人单组眼睛信息所能记录的最大数量","Exceed Max Eyes Info Count Per Group"),
+
+    // 门处于常开状态
+    NET_ERROR_DOOR_IN_NORMALLY_OPEN_STATUS((0x80000000 | (1217)),"门处于常开状态","The door is in a normally open status"),
+
+    // 门处于常闭状态
+    NET_ERROR_DOOR_IN_NORMALLY_CLOSED_STATUS((0x80000000 | (1218)),"门处于常闭状态","The door is in a normally closed status"),
+
+    // 门处于互锁状态
+    NET_ERROR_DOOR_IN_INTERLOCK_STATUS((0x80000000 | (1219)),"门处于互锁状态","The door is in an interlocking status"),
+
+    // 图片中检测到0个目标
+    NET_ERROR_FACEMANAGER_NO_FACE_DETECTED((0x80000000 | (1300)),"图片中检测到0个目标","No target detected"),
+
+    // 图片中检测到多个目标,无法返回特征
+    NET_ERROR_FACEMANAGER_MULTI_FACE_DETECTED((0x80000000 | (1301)),"图片中检测到多个目标,无法返回特征","Multi target detected, Can not extract eigenvalues"),
+
+    // 图片解码错误
+    NET_ERROR_FACEMANAGER_PICTURE_DECODING_ERROR((0x80000000 | (1302)),"图片解码错误","Picture decoding error"),
+
+    // 图片质量太低
+    NET_ERROR_FACEMANAGER_LOW_PICTURE_QUALITY((0x80000000 | (1303)),"图片质量太低","The picture quality is too low"),
+
+    // 结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别
+    NET_ERROR_FACEMANAGER_NOT_RECOMMENDED((0x80000000 | (1304)),"结果不推荐使用,比如:对外国人,特征提取成功,但算法支持不好,容易造成误识别","Not recommended, Eigen style mismatched to the algorithm model"),
+
+    // 目标特征已存在
+    NET_ERROR_FACEMANAGER_FACE_FEATURE_ALREADY_EXIST((0x80000000 | (1305)),"目标特征已存在","target eigenvalue already exist"),
+
+    // 目标角度超过配置阈值
+    NET_ERROR_FACEMANAGER_FACE_ANGLE_OVER_THRESHOLDS((0x80000000 | (1307)),"目标角度超过配置阈值","target angle over thresholds"),
+
+    // 目标占比超出范围,算法建议占比:不要超过2/3;不要小于1/3
+    NET_ERROR_FACEMANAGER_FACE_RADIO_EXCEEDS_RANGE((0x80000000 | (1308)),"目标占比超出范围,算法建议占比:不要超过2/3;不要小于1/3","target radio exceeds range"),
+
+    // 目标过爆
+    NET_ERROR_FACEMANAGER_FACE_OVER_EXPOSED((0x80000000 | (1309)),"目标过爆","target over exposed"),
+
+    // 目标欠爆
+    NET_ERROR_FACEMANAGER_FACE_UNDER_EXPOSED((0x80000000 | (1310)),"目标欠爆","target under exposed"),
+
+    // 目标亮度不均衡 ,用于判断阴阳脸
+    NET_ERROR_FACEMANAGER_BRIGHTNESS_IMBALANCE((0x80000000 | (1311)),"目标亮度不均衡 ,用于判断阴阳脸","target brightness imbalance"),
+
+    // 目标的置信度低
+    NET_ERROR_FACEMANAGER_FACE_LOWER_CONFIDENCE((0x80000000 | (1312)),"目标的置信度低","target lower confidence level"),
+
+    // 目标对齐分数低
+    NET_ERROR_FACEMANAGER_FACE_LOW_ALIGN((0x80000000 | (1313)),"目标对齐分数低","target low align score"),
+
+    // 目标存在遮挡、残缺不全
+    NET_ERROR_FACEMANAGER_FRAGMENTARY_FACE_DETECTED((0x80000000 | (1314)),"目标存在遮挡、残缺不全","Fragmentary target detected"),
+
+    // 目标瞳距小于阈值
+    NET_ERROR_FACEMANAGER_PUPIL_DISTANCE_NOT_ENOUGH((0x80000000 | (1315)),"目标瞳距小于阈值","Pupil distance in the photo is not enough"),
+
+    // 目标数据下载失败
+    NET_ERROR_FACEMANAGER_FACE_DATA_DOWNLOAD_FAILED((0x80000000 | (1316)),"目标数据下载失败","target download failed"),
+
+    // 工作模式错误
+    NET_ERROR_CITIZENMANAGER_ERROR_WORKINGMODE_ERROR((0x80000000 | (1317)),"工作模式错误","Working mode error"),
+
+    // 采集繁忙中
+    NET_ERROR_CITIZENMANAGER_ERROR_CAPTURE_BUSY((0x80000000 | (1318)),"采集繁忙中","Busy collecting"),
+
+    // 不支持该采集方式
+    NET_ERROR_CITIZENMANAGER_ERROR_CAPTURE_TYPE_ERROR((0x80000000 | (1319)),"不支持该采集方式","Does not support this collection method"),
+
+    // 普通用户不支持下发
+    NET_ERROR_NORMAL_USER_NOTSUPPORT((0x80000000 | (1320)),"普通用户不支持下发","Ordinary users do not support delivery"),
+
+    // 制冷机强制开机无效,当天开启次数已用完
+    NET_ERROR_THERMOGRAPHY_REF_SENSOR_OPEN_INVALID((0x80000000 | (1321)),"制冷机强制开机无效,当天开启次数已用完","The forced start-up of the refrigerator is invalid, and the opening times have been used up on the same day"),
+
+    // 制冷机延迟关闭无效,当天已达到延迟次数
+    NET_ERROR_THERMOGRAPHY_REF_DELAY_SHUT_DOWN_INVALID((0x80000000 | (1322)),"制冷机延迟关闭无效,当天已达到延迟次数","The delayed shutdown of the refrigerator is invalid, and the delay times have been reached on the same day"),
+
+    // 证件号已存在
+    NET_ERROR_CITIZENID_EXIST((0x80000000 | (1323)),"证件号已存在","ID is already exist"),
+
+    // 目标可检测,但特征值提取失败(算法场景)
+    NET_ERROR_FACEMANAGER_FACE_FFE_FAILED((0x80000000 | (1324)),"目标可检测,但特征值提取失败(算法场景)","The target can be detected, but the feature value extraction fails (algorithm scene)"),
+
+    // 目标照片因口罩,帽子,墨镜等目标属性不符合而提取特征值错误
+    NET_ERROR_FACEMANAGER_PHOTO_FEATURE_FAILED_FOR_FA((0x80000000 | (1325)),"目标照片因口罩,帽子,墨镜等目标属性不符合而提取特征值错误","The feature value extracted from the target photo is incorrect due to the inconsistency of target attributes such as masks, hats, sunglasses, etc."),
+
+    // 目标照片不完整
+    NET_ERROR_FACEMANAGER_FACE_DATA_PHOTO_INCOMPLETE((0x80000000 | (1326)),"目标照片不完整","Incomplete target photo"),
+
+    // 数据库插入越上限
+    NET_ERROR_DATABASE_ERROR_INSERT_OVERFLOW((0x80000000 | (1327)),"数据库插入越上限","Database Error Insert Overflow"),
+
+    // 工装检测合规库:组ID超过最大值
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUPID_EXCEED((0x80000000 | (1328)),"工装检测合规库:组ID超过最大值","WorkSuitCompareServer:GroupIdExceed"),
+
+    // 工装检测合规库:建模分析器启动失败
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACT_INIT_ERROR((0x80000000 | (1329)),"工装检测合规库:建模分析器启动失败","WorkSuitCompareServer:AbstractInitError"),
+
+    // 工装检测合规库:组ID不存在或为空
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUPID_NOT_FOUND((0x80000000 | (1330)),"工装检测合规库:组ID不存在或为空","WorkSuitCompareServer:GroupIdNotFound"),
+
+    // 工装检测合规库:数据库操作失败(指的是database操作)
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_DATABASE_ERROR((0x80000000 | (1331)),"工装检测合规库:数据库操作失败(指的是database操作)","WorkSuitCompareServer:DatabaseError"),
+
+    // 工装检测合规库:令牌不存在或为空
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_TOKEN_ERROR((0x80000000 | (1332)),"工装检测合规库:令牌不存在或为空","WorkSuitCompareServer:TokenError"),
+
+    // 工装检测合规库:查询起始数大于总数
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_BEGINNUM_OVERRUN((0x80000000 | (1333)),"工装检测合规库:查询起始数大于总数","WorkSuitCompareServer:BeginNumOverRun"),
+
+    // 工装检测合规库:设备正在建模
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACT_STATE((0x80000000 | (1334)),"工装检测合规库:设备正在建模","WorkSuitCompareServer:AbstractState"),
+
+    // 工装检测合规库:单次导入全景图数量超过限制
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_BIGPIC_MAXNUM((0x80000000 | (1335)),"工装检测合规库:单次导入全景图数量超过限制","WorkSuitCompareServer:BigPicMaxNum"),
+
+    // 工装检测合规库:工装数量超过限制
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_OBJECT_MAXNUM((0x80000000 | (1336)),"工装检测合规库:工装数量超过限制","WorkSuitCompareServer:ObjectMaxNum"),
+
+    // 工装检测合规库:超出合规库空间大小限制
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_GROUP_SPACE_EXCEED((0x80000000 | (1337)),"工装检测合规库:超出合规库空间大小限制","WorkSuitCompareServer:GroupSpaceExceed"),
+
+    // 工装检测合规库:需手动建模数量为0
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_ABSTRACTNUM_ZERO((0x80000000 | (1338)),"工装检测合规库:需手动建模数量为0","WorkSuitCompareServer:AbstractNumZero"),
+
+    // 工装检测合规库:无效参数
+    NET_ERROR_WORKSUIT_COMPARE_SERVER_INVALID_PARAM((0x80000000 | (1339)),"工装检测合规库:无效参数","WorkSuitCompareServer:InvalidParam"),
+
+    // 卡号不存在
+    NET_ERROR_CARD_NOT_EXIST((0x80000000 | (1340)),"卡号不存在","Card not exist"),
+
+    // 临时库过时
+    NET_ERROR_TEMPORARY_OUTDATED((0x80000000 | (1341)),"临时库过时","Temporary library outdated"),
+
+    // 无效的连接
+    NET_SUBBIZ_INVALID_SOCKET((0x80000000 | (1401)),"无效的连接","Invalid socket"),
+
+    // 暂停媒体文件下载失败
+    NET_SUBBIZ_PAUSE_ERROR((0x80000000 | (1402)),"暂停媒体文件下载失败","Pause download media file error"),
+
+    // 获取私有隧道向上侦听端口失败}
+    NET_SUBBIZ_GET_PORT_ERROR((0x80000000 | (1403)),"获取私有隧道向上侦听端口失败}","Failed to get private tunnel up listening port}");
+
+    private int value;
+    private String ChnNote;
+    private String EngNote;
+
+    private LastErrorNew(int givenValue, String ChnNote, String EngNote) {
+        this.value = givenValue;
+        this.ChnNote = ChnNote;
+        this.EngNote = EngNote;
+    }
+
+    public String getChnNote() {
+        return ChnNote;
+    }
+    public String getEngNote() {
+        return EngNote;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getChnNoteByValue(int givenValue) {
+        for (LastErrorNew enumType : LastErrorNew.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getChnNote();
+            }
+        }
+        return LastErrorNew.getChnNoteByValue(LastErrorNew.UNRECORDED_ERROR.value);
+    }
+    public static String getEngNoteByValue(int givenValue) {
+        for (LastErrorNew enumType : LastErrorNew.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getEngNote();
+            }
+        }
+        return LastErrorNew.getEngNoteByValue(LastErrorNew.UNRECORDED_ERROR.value);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java
new file mode 100644
index 0000000..d5ddbbe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ACCESS_ERRORCODE.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁卡操作数据错误码
+ * @date 2021/2/8
+ */
+public enum NET_ACCESS_ERRORCODE {
+    /**
+     * 未知错误
+     */
+    NET_ACCESS_ERRORCODE_UNKNOWN(0,"未知错误"),
+    /**
+     * 不支持该数据类型
+     */
+    NET_ACCESS_ERRORCODE_NOTSUPPORT(1,"不支持该数据类型"),
+    /**
+     * 数据类型已存满
+     */
+    NET_ACCESS_ERRORCODE_FULLDATA(2,"数据类型已满"),
+    /**
+     * 不支持下发操作
+     */
+    NET_ACCESS_ERRORCODE_NOTSUPPORTISSUED(3,"不支持下发操作");
+    private int code;
+    private String desc;
+
+    NET_ACCESS_ERRORCODE(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+    public static NET_ACCESS_ERRORCODE getNetAccessErrorCode(int code){
+        for (NET_ACCESS_ERRORCODE errorCode :NET_ACCESS_ERRORCODE.values() ) {
+            if(errorCode.code==code){
+                return errorCode;
+            }
+        }
+        return NET_ACCESS_ERRORCODE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java
new file mode 100644
index 0000000..0fbacec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_CODEID_ERROR_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 对码错误类型
+ * @date 2023/03/16 16:26:31
+ */
+public enum NET_CODEID_ERROR_TYPE {
+	/**
+	 * 对码正确
+	 */
+	NET_CODEID_ERROR_TYPE_RIGHT(0, "对码正确"),
+	/**
+	 * 已经存在
+	 */
+	NET_CODEID_ERROR_TYPE_ALREADYEXIST(1, "已经存在"),
+	/**
+	 * 其他错误
+	 */
+	NET_CODEID_ERROR_TYPE_OTHER(2, "其他错误");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_CODEID_ERROR_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_CODEID_ERROR_TYPE enumType : NET_CODEID_ERROR_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_CODEID_ERROR_TYPE enumType : NET_CODEID_ERROR_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java
new file mode 100644
index 0000000..b935344
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.*;
+
+/**
+ * {@link NetSDKLib#CLIENT_OperateCourseCompositeChannelMode}
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:30
+ */
+public enum NET_COURSECOMPOSITE_MODE_OPERATE_TYPE {
+    /**
+     * 添加模式,对应结构体
+     * pInParam {@link NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD}
+     * pOutParam {@link NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD}
+     */
+    NET_COURSECOMPOSITE_MODE_ADD(0, "添加模式"),
+    /**
+     * 删除模式,对应结构体
+     * pInParam {@link NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE}
+     * pOutParam {@link NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE}
+     */
+    NET_COURSECOMPOSITE_MODE_DELETE(1, "删除模式"),
+    /**
+     * 修改模式,对应结构体
+     * pInParam {@link NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY}
+     * pOutParam {@link NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY}
+     */
+    NET_COURSECOMPOSITE_MODE_MODIFY(2, "修改模式"),
+    /**
+     * 获取模式,对应结构体
+     * pInParam {@link NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET}
+     * pOutParam {@link NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET}
+     */
+    NET_COURSECOMPOSITE_MODE_GET(3, "获取模式");
+
+
+    private int value;
+    private String note;
+
+    NET_COURSECOMPOSITE_MODE_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_COURSECOMPOSITE_MODE_OPERATE_TYPE enumType : NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_COURSECOMPOSITE_MODE_OPERATE_TYPE enumType : NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_COURSECOMPOSITE_MODE_OPERATE_TYPE getEnum(int value) {
+        for (NET_COURSECOMPOSITE_MODE_OPERATE_TYPE e : NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_COURSECOMPOSITE_MODE_OPERATE_TYPE.NET_COURSECOMPOSITE_MODE_GET;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java
new file mode 100644
index 0000000..1f43bbf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_2DCODE_TYPE.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 二维码类型
+ * @date 2020/9/10
+ */
+public enum NET_EM_2DCODE_TYPE {
+    /**
+     * TYCO客户的P2P功能
+     */
+    NET_EM_2DCODE_TYPE_OZVISION(0, "TYCO"),
+    /**
+     * 乐橙手机客户端
+     */
+    NET_EM_2DCODE_TYPE_LCWEBSITE(1, "乐橙"),
+    /**
+     * easy4ip手机客户端
+     */
+    NET_EM_2DCODE_TYPE_EASY4IP(2, "easy4ip"),
+    /**
+     * i/gDMSS手机客户端
+     */
+    NET_EM_2DCODE_TYPE_DMSS(3, "i/gDMSS"),
+    /**
+     * 可视对讲客户端
+     */
+    NET_EM_2DCODE_TYPE_VIDEOTALK(4, "可视对讲"),
+    /**
+     * app注册信息二维码
+     */
+    NET_EM_2DCODE_TYPE_APPREGISTER(5, "app注册信息"),
+    /**
+     * H500平台向美的平台获取授权
+     */
+    NET_EM_2DCODE_TYPE_DEVAUTH(6, "H500平台");
+
+    private NET_EM_2DCODE_TYPE(int type, String descrip) {
+        this.type = type;
+        this.descrip = descrip;
+    }
+
+    private int type;
+    private String descrip;
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription(int type) {
+        for (NET_EM_2DCODE_TYPE code : NET_EM_2DCODE_TYPE.values()) {
+            if (code.getType() == type) {
+                return code.getDescrip();
+            }
+        }
+        return "";
+    }
+
+    public static NET_EM_2DCODE_TYPE getCode(int type) {
+        for (NET_EM_2DCODE_TYPE code : NET_EM_2DCODE_TYPE.values()) {
+            if (code.getType() == type) {
+                return code;
+            }
+        }
+        return null;
+    }
+
+    public String getDescrip() {
+        return descrip;
+    }
+
+    public void setDescrip(String descrip) {
+        this.descrip = descrip;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java
new file mode 100644
index 0000000..cb48aa8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ATTITUDE_TYPE.java
@@ -0,0 +1,130 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  姿态类型 
+* @date 2023/02/06 15:24:00
+*/
+public enum NET_EM_ATTITUDE_TYPE {
+/**
+未知
+*/
+NET_EM_ATTITUDE_TYPE_UNKNOWN(0,"未知"),
+/**
+单手递接
+*/
+NET_EM_ATTITUDE_TYPE_ONE_HAND(1,"单手递接"),
+/**
+叉腰
+*/
+NET_EM_ATTITUDE_TYPE_AKIMBO(2,"叉腰"),
+/**
+双手抱头
+*/
+NET_EM_ATTITUDE_TYPE_HAND_SON_HEAD(3,"双手抱头"),
+/**
+双手抱胸
+*/
+NET_EM_ATTITUDE_TYPE_HAND_SON_CHEST(4,"双手抱胸"),
+/**
+撞墙
+*/
+NET_EM_ATTITUDE_TYPE_HIT_WALL(5,"撞墙"),
+/**
+弯腰
+*/
+NET_EM_ATTITUDE_TYPE_BEND(6,"弯腰"),
+/**
+坐状态
+*/
+NET_EM_ATTITUDE_TYPE_SITTING(7,"坐状态"),
+/**
+站状态
+*/
+NET_EM_ATTITUDE_TYPE_STANDING(8,"站状态"),
+/**
+坐下
+*/
+NET_EM_ATTITUDE_TYPE_SIT_DOWN(9,"坐下"),
+/**
+起立
+*/
+NET_EM_ATTITUDE_TYPE_STAND_UP(10,"起立"),
+/**
+趴桌子
+*/
+NET_EM_ATTITUDE_TYPE_ON_TABLE(11,"趴桌子"),
+/**
+回头
+*/
+NET_EM_ATTITUDE_TYPE_LOOK_BACK(12,"回头"),
+/**
+传递
+*/
+NET_EM_ATTITUDE_TYPE_DELIVERY(13,"传递"),
+/**
+东张西望
+*/
+NET_EM_ATTITUDE_TYPE_GAZE_AROUND(14,"东张西望"),
+/**
+手放桌下偷看
+*/
+NET_EM_ATTITUDE_TYPE_HAND_DOWN_PEEP(15,"手放桌下偷看"),
+/**
+捡东西
+*/
+NET_EM_ATTITUDE_TYPE_PICK_UP(16,"捡东西"),
+/**
+举手
+*/
+NET_EM_ATTITUDE_TYPE_HAND_UP(17,"举手"),
+/**
+书写
+*/
+NET_EM_ATTITUDE_TYPE_WRITE(18,"书写");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_ATTITUDE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_ATTITUDE_TYPE enumType : NET_EM_ATTITUDE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_ATTITUDE_TYPE enumType : NET_EM_ATTITUDE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_ATTITUDE_TYPE getEnum(int value) {
+        for (NET_EM_ATTITUDE_TYPE e : NET_EM_ATTITUDE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_ATTITUDE_TYPE.NET_EM_ATTITUDE_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java
new file mode 100644
index 0000000..7d9016e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_CFG_OPERATE_TYPE.java
@@ -0,0 +1,432 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.NET_CFG_VSP_GAYS_SERVER_INFO;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import com.netsdk.lib.structure.NET_CFG_HEALTH_CODE_INFO;
+
+/**
+ * 配置枚举值列表 对应接口: 获取配置 {@link NetSDKLib#CLIENT_GetConfig(NetSDKLib.LLong, int, int, Pointer, int,
+ * int, Pointer)} 下发配置 {@link NetSDKLib#CLIENT_SetConfig(NetSDKLib.LLong, int, int, Pointer, int,
+ * int, IntByReference, Pointer)}
+ */
+public class NET_EM_CFG_OPERATE_TYPE {
+
+    public static final int NET_EM_CFG_SNAP_MODE = 0; // 抓图模式配置,对应结构体 NET_SNAP_MODE
+    public static final int NET_EM_CFG_DEV_CAR_COACH = 1; // 铁路记录配置, 对应结构体 NET_DEV_CAR_COACH_INFO
+    public static final int NET_EM_CFG_YUEQING_SUPPLYLIGHTING =
+            2; // 乐清外接灯光配置, 对应结构体 NET_YUEQING_SUPPLYLIGHTING_INFO
+    public static final int NET_EM_CFG_MEDIA_GLOBAL = 3; // 媒体组件全局配置, 对应结构体 NET_MEDIA_GLOBAL_INFO
+    public static final int NET_EM_CFG_PARKINGSPACELIGHT_STATE =
+            5; // 车位状态对应的车位指示灯, 对应结构体 NET_PARKINGSPACELIGHT_STATE_INFO
+    public static final int NET_EM_CFG_COAXIAL_LIGHT =
+            6; // 白光灯视频通道配置, 对应结构体 NET_CFG_COAXIAL_LIGHT_INFO
+    public static final int NET_EM_CFG_VIDEO_OUT = 7; // 视频输出配置, 对应结构体 NET_CFG_VIDEO_OUT_INFO
+
+    public static final int NET_EM_CFG_MEDIA_ENCRYPT =
+            9; // 媒体数据加密配置,对应结构体 NET_MEDIA_ENCRYPT_INFO,与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_COUNTRY =
+            10; // 国家/地区配置, 对应结构体 NET_CFG_COUNTRY_INFO,与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_VIDEOSTANDARD =
+            11; // 视频制式配置, 对应结构体 NET_CFG_VIDEOSTANDARD_INFO,与通道不相关,通道号需要填成-1, 目前设备不支持配置SECAM制式
+    public static final int NET_EM_CFG_SERIAL_PUSH_LOG =
+            12; // 串口服务器推送日志配置, 对应结构体 NET_CFG_SERIALPUSHLOG_INFO,与通道不相关需要填成-1
+    public static final int NET_EM_CFG_PRESET_SNAP_PICTURE_NUM =
+            13; // 预置点抓拍图片数量配置,对应结构体 NET_CFG_PRESET_SNAP_PICTURE_NUM
+    public static final int NET_EM_CFG_DOWNLOAD_ENCRYPT =
+            14; // 下载数据加密配置, 对应结构体 NET_DOWNLOAD_ENCRYPT_INFO,与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_LIFT_CONTROL_OPTION =
+            15; // 梯控功能全局配置,对应结构体 NET_CFG_LIFTCONTROL_OPTION,与通道不相关,通道号需要填成-1
+    /**
+     * 健康码使能配置,对应结构体{@link NET_CFG_HEALTH_CODE_INFO}, 与通道不相关,通道号需要填成-1
+     */
+    public static final int NET_EM_CFG_HEALTH_CODE =
+            16; // 健康码使能配置,对应结构体 NET_CFG_HEALTH_CODE_INFO, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_ACCESSCONTROL_MEASURE_TEMP =
+            20; // 门禁测温配置, 对应结构体 NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO, 与通道不相关,通道号需要填成-1
+
+    public static final int NET_EM_CFG_RTMP = 17; // RTMP 配置,对应结构体 NET_CFG_RTMP_INFO,与通道不相关,通道号需要填成
+    public static final int NET_EM_CFG_QR_CODE =
+            26; // 配置二维码有效时间, 对应的结构体 NET_CFG_QR_CODE_INFO , 通道号需要填成-1
+
+    public static final int NET_EM_CFG_TRAFFIC_LAMP_CONFIG=45; // 时间间隔配置, 对应结构体 NET_CFG_TRAFFIC_LAMP_CONFIG_INFO, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_DISABLE_BEEP_LINKAGE=47; // 防蜂鸣联动项使能配置, 对应结构体 NET_CFG_DISABLE_BEEP_LINKAGE_INFO, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_AREA_ARM_MODE = 48;	// Area布撤防配置, 对应结构体 NET_CFG_AREA_ARM_MODE_INFO, 与通道不相关,通道号需要填成-1
+    
+    public static final int NET_EM_CFG_CONTROL_CASE = 61;	// 控制智能机箱开关配置, 对应结构体 NET_CFG_CONTROL_CASE_INFO, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_LAMP_EXTERNAL_DEVICE =62;// 智慧灯杆项外设配置, 对应结构体 NET_CFG_LAMP_EXTERNAL_DEVICE_INFO, 与通道不相关,通道号需要填成-1
+
+    public static final int NET_EM_CFG_AUTO_PAN = 71;	// 水平旋转设置配置, 对应结构体 NET_CFG_AUTO_PAN_INFO
+    public static final int NET_EM_CFG_PTZ_MOVEMENT = 72;// 云台动作配置, 对应结构体 NET_CFG_PTZ_MOVEMENT_INFO
+
+    /*********OSD叠加相关配置*************************************************************************************************/
+    public static final int NET_EM_CFG_CHANNELTITLE =
+            1000; // 叠加通道标题属性配置,对应结构体 NET_OSD_CHANNEL_TITLE,其中结构体中的emOsdBlendType为必填参数
+
+    public static final int NET_EM_CFG_TIMETITLE =
+            1001; // 叠加时间标题属性配置,对应结构体 NET_OSD_TIME_TITLE,其中结构体中的emOsdBlendType为必填参数
+    public static final int NET_EM_CFG_CUSTOMTITLE =
+            1002; // 叠加自定义标题属性配置,对应结构体 NET_OSD_CUSTOM_TITLE,其中结构体中的stuCustomTitle.emOsdBlendType为必填参数
+    public static final int NET_EM_CFG_CUSTOMTITLETEXTALIGN =
+            1003; // 叠加自定义标题对齐方式属性配置,对应结构体 NET_OSD_CUSTOM_TITLE_TEXT_ALIGN
+    public static final int NET_EM_CFG_OSDCOMMINFO = 1004; // 叠加公共属性配置,对应结构体 NET_OSD_COMM_INFO
+    public static final int NET_EM_CFG_OSD_PTZZOOM = 1005; // 变倍叠加配置,对应结构体 NET_OSD_PTZZOOM_INFO
+    public static final int NET_EM_CFG_GPSTITLE = 1006; // 叠加GPS标题显示配置,对应结构体 NET_OSD_GPS_TITLE
+    public static final int NET_EM_CFG_OSD_NUMBERSTATPLAN =
+            1007; // 人数统计计划叠加OSD配置, 支持NumberStatPlan算法大类时(球机)使用,对应结构体NET_OSD_NUMBER_STATPLAN
+    public static final int NET_EM_CFG_GPSSTARNUM_OSD =
+            1008; // GPS搜星数OSD配置, 需求, 对应结构体 NET_CFG_GPSSTARNUM_OSD_INFO
+    public static final int NET_EM_CFG_PICTURETITLE = 1009; // 图片标题,对应结构体 NET_OSD_PICTURE_TITLE
+    public static final int NET_EM_CFG_OSD_FACEFLOWSTAT =
+            1010; // 人脸数量统计OSD配置,对应结构体 NET_OSD_FACEFLOWSTAT_INFO
+
+    public static final int NET_EM_CFG_PTZ_PRESET = 1011; // 预置点信息叠加,对应结构体 NET_OSD_CFG_PTZ_PRESET
+    public static final int NET_EM_CFG_PTZ_PATTERN =
+            1012; // 显示巡迹百分比叠加配置,对应结构体 NET_OSD_CFG_PTZ_PATTERN
+    public static final int NET_EM_CFG_PTZ_RS485_DETECT =
+            1013; // 显示RS485检测结果的叠加配置,对应结构体 NET_OSD_CFG_PTZ_RS485_DETECT
+    public static final int NET_EM_CFG_PTZ_COORDINATES =
+            1014; // 显示云台坐标的叠加配置,对应结构体 NET_OSD_CFG_PTZ_COORDINATES
+    public static final int NET_EM_CFG_PTZ_DIRECTION =
+            1015; // 显示云台方向的叠加配置,对应结构体 NET_OSD_CFG_PTZ_DIRECTION
+    public static final int NET_EM_CFG_TEMPERATURE =
+            1016; // 显示环境温度的叠加配置,对应结构体 NET_OSD_CFG_TEMPERATURE
+    public static final int NET_EM_CFG_COVERS = 1017; // 区域覆盖,对应结构体 NET_OSD_CFG_COVERS
+    public static final int NET_EM_CFG_USER_DEF_TITLE =
+            1018; // 用户自定义OSD标题,对应结构体 NET_OSD_USER_DEF_TITLE  DHOP专用
+    public static final int NET_EM_CFG_SNAP_OSD = 1019; // 抓拍OSD配置, 对应结构体 NET_CFG_SNAP_OSD
+
+    /*********encode 相关配置*************************************************************************************************/
+    public static final int NET_EM_CFG_ENCODE_VIDEO = 1100; // 编码视频格式属性配置,对应结构体 NET_ENCODE_VIDEO_INFO
+
+    public static final int NET_EM_CFG_ENCODE_VIDEO_PACK =
+            1101; // 编码视频格式打包模式配置,对应结构体 NET_ENCODE_VIDEO_PACK_INFO
+    public static final int NET_EM_CFG_ENCODE_VIDEO_SVC =
+            1102; // 编码视频格式SVC配置,对应结构体 NET_ENCODE_VIDEO_SVC_INFO
+    public static final int NET_EM_CFG_ENCODE_VIDEO_PROFILE =
+            1103; // 编码视频格式profile配置,对应结构体 NET_ENCODE_VIDEO_PROFILE_INFO
+    public static final int NET_EM_CFG_ENCODE_AUDIO_COMPRESSION =
+            1104; // 编码音频压缩格式配置,对应结构体 NET_ENCODE_AUDIO_COMPRESSION_INFO
+    public static final int NET_EM_CFG_ENCODE_AUDIO_INFO =
+            1105; // 编码音频格式配置,对应结构体 NET_ENCODE_AUDIO_INFO
+    public static final int NET_EM_CFG_ENCODE_SNAP_INFO = 1106; // 编码抓图配置,对应结构体 NET_ENCODE_SNAP_INFO
+    public static final int NET_EM_CFG_ENCODE_SNAPTIME =
+            1107; // 编码抓图时间相关配置,对应结构体 NET_ENCODE_SNAP_TIME_INFO
+    public static final int NET_EM_CFG_ENCODE_CHANNELTITLE =
+            1108; // 通道名称配置,对应结构体 NET_ENCODE_CHANNELTITLE_INFO
+
+    /**********音频相关配置***************************************************************************************************/
+    public static final int NET_EM_CFG_AUDIOIN_SOURCE =
+            1200; // 音频输入类型配置,对应结构体 NET_ENCODE_AUDIO_SOURCE_INFO
+
+    public static final int NET_EM_CFG_AUDIOIN_DENOISE =
+            1201; // 音频降噪配置,对应结构体 NET_AUDIOIN_DENOISE_INFO
+    public static final int NET_EM_CFG_AUDIOIN_VOLUME =
+            1202; // 音频输入音量配置,对应结构体 NET_AUDIOIN_VOLUME_INFO
+    public static final int NET_EM_CFG_AUDIOOUT_VOLUME =
+            1203; // 音频输出音量配置,对应结构体 NET_AUDIOOUT_VOLUME_INFO
+    public static final int NET_EM_CFG_AUDIOOUT_MODE =
+            1204;// 音频输出模式配置, 对应结构体 NET_AUDIOOUT_MODE_INFO
+    public static final int NET_EM_CFG_LOOPPLAYBACK_AUDIOALARM =
+            1205;// 音频循环播放报警配置,对应结构体 NET_LOOPPLAYBACK_AUDIOALARM_INFO,与通道不相关,通道号需要填成-1
+    /**********videoin 相关配置***********************************************************************************************/
+    public static final int NET_EM_CFG_VIDEOIN_SWITCHMODE =
+            1300; // 切换模式配置,对应结构体 NET_VIDEOIN_SWITCH_MODE_INFO
+
+    public static final int NET_EM_CFG_VIDEOIN_COLOR = 1301; // 视频输入颜色配置,对应结构体 NET_VIDEOIN_COLOR_INFO
+    public static final int NET_EM_CFG_VIDEOIN_IMAGE_OPT =
+            1302; // 图像属性配置,对应结构体 NET_VIDEOIN_IMAGE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_STABLE = 1303; // 图像防抖配置,对应结构体 NET_VIDEOIN_STABLE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_IRISAUTO =
+            1304; // 自动光圈配置,对应结构体 NET_VIDEOIN_IRISAUTO_INFO
+    public static final int NET_EM_CFG_VIDEOIN_IMAGEENHANCEMENT =
+            1305; // 图像增强配置,对应结构体 NET_VIDEOIN_IMAGEENHANCEMENT_INFO
+    public static final int NET_EM_CFG_VIDEOIN_EXPOSURE_NORMAL =
+            1306; // 曝光通用属性配置,对应结构体 NET_VIDEOIN_EXPOSURE_NORMAL_INFO
+    public static final int NET_EM_CFG_VIDEOIN_EXPOSURE_OTHER =
+            1307; // 其他曝光属性配置,对应结构体 NET_VIDEOIN_EXPOSURE_OTHER_INFO
+    public static final int NET_EM_CFG_VIDEOIN_EXPOSURE_SHUTTER =
+            1308; // 曝光快门配置,对应结构体 NET_VIDEOIN_EXPOSURE_SHUTTER_INFO
+    public static final int NET_EM_CFG_VIDEOIN_BACKLIGHT =
+            1309; // 背光配置,对应结构体 NET_VIDEOIN_BACKLIGHT_INFO
+    public static final int NET_EM_CFG_VIDEOIN_INTENSITY =
+            1310; // 场景自适应对比度强度配置,对应结构体 NET_VIDEOIN_INTENSITY_INFO
+    public static final int NET_EM_CFG_VIDEOIN_LIGHTING =
+            1311; // 补光灯配置,对应结构体 NET_VIDEOIN_LIGHTING_INFO
+    public static final int NET_EM_CFG_VIDEOIN_DEFOG = 1312; // 透雾配置,对应结构体 NET_VIDEOIN_DEFOG_INFO
+    public static final int NET_EM_CFG_VIDEOIN_FOCUSMODE =
+            1313; // 聚焦模式配置,对应结构体 NET_VIDEOIN_FOCUSMODE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_FOCUSVALUE =
+            1314; // 聚焦信息配置,对应结构体 NET_VIDEOIN_FOCUSVALUE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_WHITEBALANCE =
+            1315; // 白平衡配置,对应结构体 NET_VIDEOIN_WHITEBALANCE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_DAYNIGHT =
+            1316; // 日夜模式配置,对应结构体 NET_VIDEOIN_DAYNIGHT_INFO
+    public static final int NET_EM_CFG_VIDEOIN_DAYNIGHT_ICR =
+            1317; // 日夜模式ICR切换类型配置,对应结构体 NET_VIDEOIN_DAYNIGHT_ICR_INFO
+    public static final int NET_EM_CFG_VIDEOIN_SHARPNESS =
+            1318; // 锐度配置,对应结构体 NET_VIDEOIN_SHARPNESS_INFO
+    public static final int NET_EM_CFG_VIDEOIN_COMM_DENOISE =
+            1319; // 通用降噪配置,对应结构体 NET_VIDEOIN_DENOISE_INFO
+    public static final int NET_EM_CFG_VIDEOIN_3D_DENOISE =
+            1320; // 3D 降噪配置,对应结构体 NET_VIDEOIN_3D_DENOISE_INFO
+
+    /***********庭审相关配置*****************************************************************************************/
+    public static final int NET_EM_CFG_ENCODE_PLAN = 1400; // 刻录光盘编码计划, 对应结构体 NET_ENCODE_PLAN_INFO
+
+    public static final int NET_EM_CFG_COMPOSE_PLAN =
+            1403; // 合成通道的预案分割配置, 对应结构体 NET_COMPOSE_PLAN_INFO
+    /**
+     * 合成通道配置, 对应结构体{@link com.netsdk.lib.structure.NET_COMPOSE_CHANNEL_INFO}
+     */
+    public static final int NET_EM_CFG_COMPOSE_CHANNEL =
+            1401; // 合成通道配置, 对应结构体 NET_COMPOSE_CHANNEL_INFO
+    /**
+     * 刻录参数, 对应结构体 {@link com.netsdk.lib.structure.NET_BURN_PARAM_INFO}
+     */
+    public static final int NET_EM_CFG_BURN_PARAM = 1402; // 刻录参数, 对应结构体 NET_BURN_PARAM_INFO
+
+    /**********报警网关相关配置**************************************************************************************/
+    public static final int NET_EM_CFG_ALARM_SOUND = 1500; // 报警网关语音配置, 对应结构体 NET_ALARM_SOUND_INFO
+
+    public static final int NET_EM_CFG_FIRE_WARNINGMODE =
+            1503; // 火灾预警模式, 对应结构体 NET_FIREWARNING_MODE_INFO
+    public static final int NET_EM_CFG_FIRE_WARNING =
+            1504; // 火灾预警配置(与火灾预警模式配置配合使用), 对应的结构体 NET_FIRE_WARNING_INFO
+
+    /**********网络应用相关配置**************************************************************************************/
+    public static final int NET_EM_CFG_ACCESS_POINT =
+            1600; // 用于WiFi服务端配置(热点功能), 对应结构体 NET_NETAPP_ACCESSPOINT
+
+    /**************安全基线需求**************************************************************************************/
+    public static final int NET_EM_CFG_NAS = 1700; // NAS 配置, 对应结构体 NET_NAS_INFO
+
+    public static final int NET_EM_CFG_PPPOE = 1701; // PPPOE 配置,对应结构体 NET_PPPOE_INFO
+    public static final int NET_EM_CFG_EMAIL = 1702; // Email 配置,对应结构体 NET_EAMIL_INFO
+    public static final int NET_EM_CFG_DDNS = 1703; // DDNS 配置,对应结构体 NET_DDNS_INFO
+
+    /**************SCADA配置需求**************************************************************************************/
+    public static final int NET_EM_CFG_SCADA_PROTOCOLS_MANAGER =
+            1800; // 协议管理配置,对应结构体 NET_SCADA_PROTOCOLS_MANAGER
+
+    public static final int NET_EM_CFG_SCADA_DEVICEINFO_CFG =
+            1801; // 设备信息配置,对应结构体 NET_SCADA_DEVICEINFO_CFG
+
+    /**************NetApp配置需求*************************************************************************************/
+    public static final int NET_EM_CFG_NETAPP_LINK_LAYER_VPN =
+            1900; // 链路层VPN设置,对应结构体 NET_NETAPP_LINK_LAYER_VPN_CFG
+    public static final int NET_EM_CFG_NETAPP_COMMUNICATION_LIST = 1902;// 通讯录配置, 对应结构体 NET_NETAPP_COMMUNICATION_LIST_CFG, 与通道不相关,通道号需要填成-1  
+
+    /**************中国铁塔平台接入***********************************************************************************/
+    public static final int NET_EM_CFG_VSP_CHINA_TOWER = 2000; // 安徽治超平台接入配置,对应结构体 NET_VSP_CHINA_TOWER
+    public static final int NET_EM_CFG_BSCCUSTOM = 3919;                        // 门禁配置汇总 对应结构体 NET_CFG_BSCCUSTOM 通道无关 通道号填-1
+
+    /**********智能相关配置*******************************************************************************************/
+    public static final int NET_EM_CFG_STEREO_CALIBRATE =
+            2100; // 双目标定结果, 对应结构体NET_STEREO_CALIBRATE_INFO
+
+    public static final int NET_EM_CFG_STEREO_CALIBRATEMATRIX_MULTISENSOR =
+            2101; // 多目相机标定配置CalibrateMatrix(MultiSensor), 对应的结构体 NET_MULTI_SENSOR_INFO
+    public static final int NET_EM_CFG_CROWDDISTRIMAP_CALIBRATE =
+            2102; // 人群分布图标定配置, 对应的结构体 NET_CROWDDISTRIMAP_CALIBRATE_INFO
+    public static final int NET_EM_CFG_TRAFFIC_NOPASSING =
+            2103; // 交通禁行配置, 对应的结构体 NET_TRAFFIC_NOPASSING_INFO
+    public static final int NET_EM_CFG_FIGHT_CALIBRATE =
+            2104; // 打架标定配置, 对应的结构体 NET_FIGHT_CALIBRATE_INFO
+    public static final int NET_EM_CFG_FACE_RECOGNITION_ALARM =
+            2105; // 目标识别联动报警通道配置, 对应结构体 NET_FACE_RECOGNITION_ALARM_INFO
+    public static final int NET_EM_CFG_STEREO_CALIBRATEMATRIX_MULTIMODE =
+            2106; // 灵瞳相机的标定方式 CalibrateMatrix(MultiMode), 对应的结构体 NET_CALIBRATEMATRIX_MULTIMODE_INFO
+    public static final int NET_EM_CFG_AUTO_SNAP_SCHEDULE =
+            2107; // 智能养殖定时抓图配置, 对应结构体 NET_CFG_AUTO_SNAP_SCHEDULE_INFO
+    public static final int NET_EM_CFG_PARKING_TIMEOUT_DETECT =
+            2108; // 停车超时检测配置, 对应结构体 NET_CFG_PARKING_TIMEOUT_DETECT
+
+    /**********雷达配置***********************************************************************************************/
+    public static final int NET_EM_CFG_RADAR = 2200; // 雷达配置,对应结构体 DEV_RADAR_CONFIG
+    public static final int NET_EM_CFG_RADAR_RFIDCARD = 2201;    // 雷达RFID卡片信息配置,与通道不相关,通道号需要填成-1,对应结构体 NET_CFG_RADAR_RFIDCARD_INFO
+
+
+    /**********视频对讲电话通用配置***********************************************************************************/
+    public static final int NET_EM_CFG_VTH_PASSWORD =
+            2300; // 视频对讲电话通用配置,对应结构体 NET_CFG_VTH_PASSWORD_INFO
+
+    public static final int NET_EM_CFG_REGISTAR = 2301; // 注册服务器配置,对应结构体 NET_CFG_REGISTAR_INFO
+    public static final int NET_EM_CFG_SIP = 2302; // sip配置, 对应结构体 NET_CFG_SIPSERVER_INFO
+
+    /**********镜头前遮挡盖配置***************************************************************************************/
+    public static final int NET_EM_CFG_AELENSMASK = 2400; // 镜头前遮挡盖配置,对应结构体NET_CFG_AELENSMASK_INFO
+
+    public static final int NET_EM_CFG_ULTRASONIC = 2500; // 超声波配置,对应结构体NET_CFG_ULTRASONIC_INFO
+
+    /**********报警主机相关配置***************************************************************************************/
+    public static final int NET_EM_CFG_ARMSCHEDULE = 2600; // 报警计划配置,对应结构体 NET_CFG_ARMSCHEDULE_INFO
+
+    /**********录像抓图功能相关配置***********************************************************************************/
+    public static final int NET_EM_CFG_TIME_RECORDBACKUP_RESTORE =
+            3163; // 录像定时自动备份配置, NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO; 对应通道为-1
+
+    public static final int NET_EM_CFG_RECORDEXTRA =
+            3610; // 录像辅码流录像配置, 对应结构体 NET_CFG_RECORDEXTRA_INFO
+
+    /**********视频诊断相关配置***************************************************************************************/
+    public static final int NET_EM_VIDEODIAGNOSIS_PROJECT =
+            3700; // 视频诊断计划配置, 对应结构体NET_CFG_VIDEODIAGNOSIS_PROJECT_INFO
+
+    /***********车载相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_POSITIONREPORTPOLICY =
+            3800; // 车载GPS位置信息上报策略配置, 对应结构体 NET_CFG_POSITIONREPORTPOLICY_INFO
+
+    public static final int NET_EM_CFG_VEHICLE_WORKTIMESCHEDULE =
+            3801; // 车载工作计划配置,对应结构体 NET_CFG_VEHICLE_WORKTIMESCHEDULE_INFO
+    public static final int NET_EM_CFG_VEHICLE_LOAD = 3802; // 荷载人数配置, 对应结构体 NET_CFG_VEHICLE_LOAD_INFO
+
+    /***********门禁相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_ACCESSCTL_BLACKLIST =
+            3900; // 门禁禁止名单报警配置,对应结构体 NET_CFG_ACCESSCTL_BLACKLIST
+
+    public static final int NET_EM_CFG_ACCESSCTL_BLACKLIST_LINK =
+            3901; // 门禁禁止名单报警联动配置,对应结构体 NET_CFG_ALARM_MSG_HANDLE
+    /**
+     * 门禁节假日组配置, 对应结构体 {@link com.netsdk.lib.structure.NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO}
+     */
+    public static final int NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP =
+            3902; // 门禁节假日组配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO
+    /**
+     * 门禁节假日计划配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO
+     */
+    public static final int NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE =
+            3903; // 门禁节假日计划配置, 对应结构体 NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO
+    /**
+     * 在离线开门认证模式配置,对应结构体NET_CFG_ACCESSCTL_AUTH_MODE
+     */
+    public static final int NET_EM_CFG_ACCESSCTL_AUTH_MODE =
+            3904; // 在离线开门认证模式配置,对应结构体NET_CFG_ACCESSCTL_AUTH_MODE
+
+    public static final int NET_EM_CFG_ACS_FACE_RECOGNITION_SCHEME =
+            3905; //  门禁目标识别相关配置,对应结构体 NET_CFG_ACS_FACE_RECOGNITION_SCHEME
+    /**
+     * 广告禁用时段配置, 对应结构体 {@link com.netsdk.lib.structure.NET_CFG_FORBIDDEN_ADVERT_PLAY}, 通道无关,通道号填-1
+     */
+    public static final int NET_EM_CFG_FORBIDDEN_ADVERT_PLAY =
+            3906; // 广告禁用时段配置, 对应结构体 NET_CFG_FORBIDDEN_ADVERT_PLAY, 通道无关,通道号填-1
+    /**
+     * 门禁设备当前模式配置, 对应结构体 {@link com.netsdk.lib.structure.NET_CFG_BGY_CUSTOMERCFG}, 通道无关,通道号填-1
+     */
+    public static final int NET_EM_CFG_BGY_CUSTOMERCFG =
+            3907; // 门禁设备当前模式配置, 对应结构体 NET_CFG_BGY_CUSTOMERCFG, 通道无关,通道号填-1
+
+    public static final int NET_EM_CFG_ACCESSCTL_KEYBINDINGINFOCFG =
+            3908; // 不同数字按钮对应的信息配置, 对应结构体 NET_CFG_ACCESSCTL_KEYBINDINGINFOCFG, 通道无关,通道号填-1
+    public static final int NET_EM_CFG_HOST_DEVICE =
+            3909; // 主机、从机设置配置, 对应结构体 NET_CFG_HOST_DEVICE, 通道无关,通道号填-1
+    public static final int NET_EM_CFG_VTH_ALPA_CLOUD =
+            3910; // 室内机Alpa客户云服务器配置, 对应结构体 NET_CFG_VTH_ALPA_CLOUD, 通道无关, 通道号填-1
+    public static final int NET_EM_CFG_VTH_FETCHINFO =
+            3911; // 室内机广告信息配置,对应结构体 NET_CFG_VTH_FETCHINFO, 通道无关, 通道号填-1
+    public static final int NET_EM_CFG_VIDEOTALK_SIGNLIGHT =
+            3917; // 签名灯,可视对讲使用配置,对应结构体 NET_CFG_VIDEOTALK_SIGNLIGHT  通道无关 通道号填-1
+    public static final int NET_EM_CFG_CONSUMPTION_STRATEGY = 3921;
+    // 消费相关策略, 对应结构体 NET_CFG_CONSUMPTION_STRATEGY_INFO, 通道无关 通道号填-1
+    public static final int NET_EM_CFG_WIEGAND = 3922;
+    // 韦根配置, 对应结构体 NET_CFG_WIEGAND_INFO, 通道无关 通道号填-1
+    public static final int NET_EM_CFG_CUSTOMER_DEV_SETTING = 3931;// 门禁提供客户的"系统设置"配置, 对应结构体 NET_CFG_CUSTOMER_DEV_SETTING_INFO 通道无关, 通道号填-1
+
+    public static final int NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR = 3934;
+    // 定期通行人数清除功能配置, 对应结构体 NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO 通道无关, 通道号填-1
+
+    /***********配置************************************************************************************************/
+    public static final int NET_EM_CFG_SERIALNOWHITETABLE =
+            4000; // 前端序列号允许名单下发至NVR 配置, 对应结构体 NET_CFG_SERIALNOWHITETABLE_INFO
+
+    public static final int NET_EM_CFG_FILE_HOLD_DAYS =
+            4010; // 录像保存天数配置, 对应结构体NET_CFG_FILE_HOLD_DAYS_INFO
+
+    public static final int NET_EM_CFG_CARD_MNG
+            = 4016;     // 单片机兼容cpu卡和ic卡功能切换,对应结构体 NET_CFG_CARD_MNG_INFO
+    public static final int NET_EM_CFG_VSP_LXSJ = 4004;        // 灵信视觉平台接入配置 对应结构体 NET_CFG_VSP_LXSJ_INFO,配置较大,建议内存new出来
+
+    public static final int NET_EM_CFG_FINANCIAL_CABINET_CONFIG     = 4020;     // 金融业务库配置 对应结构体 NET_CFG_FINANCIAL_CABINET_CONFIG_INFO
+
+
+    /***********雷球联动配置************************************************************************************************/
+    //在调用 CLIENT_SetConfig 时,restart字段无效
+    public static final int NET_EM_CFG_RADAR_DEVLIST = 6010; // 雷达设备列表配置, 对应结构体NET_CFG_RADAR_DEVLIST_INFO
+    public static final int NET_EM_CFG_RADAR_SCREEN_RULE = 6012;    // 雷达屏幕显示规则配置, 对应结构体NET_CFG_RADAR_SCREEN_RULE_INFO
+    public static final int NET_EM_CFG_MINIRADAR_DECT_PARAM = 6016;     // Mini雷达探测参数配置, 对应结构体 NET_CFG_MINIRADAR_DECT_PARAM_INFO
+    public static final int NET_EM_CFG_MINIRADAR_INDOOR_ALARM = 6017;   // Mini雷达报警配置, 对应结构体 NET_CFG_MINIRADAR_INDOOR_ALARM_INFO
+    public static final int NET_EM_CFG_MINIRADAR_COMP_INFO = 6018;		// Mini雷达角度补偿配置, 对应结构体 NET_CFG_MINIRADAR_COMP_INFO
+    public static final int NET_EM_CFG_MINIRADAR_INSTALL_INFO = 6019;	// Mini雷达安装信息配置, 对应结构体 NET_CFG_MINIRADAR_INSTALL_INFO
+    public static final int NET_EM_CFG_MINIRADAR_REGION_DETECT = 6020;	// Mini雷达探测区域配置, 对应结构体 NET_CFG_MINIRADAR_REGION_DETECT_INFO
+
+    /***********第三方配置************************************************************************************************/
+    public static final int NET_EM_CFG_VSP_PAAS = 9000; // 乐橙云注册配置修改, 对应结构体 NET_CFG_VSP_PAAS_INFO
+    /**
+     * 平台接入配置(国标服务端), 对应结构体 {@link NET_CFG_VSP_GAYS_SERVER_INFO} ,对应通道为-1
+     */
+    public static final int NET_EM_CFG_VSP_GAYS_SERVER = 9001;
+
+    public static final int NET_EM_CFG_VSP_CO_SIGN_SERVER =
+            9002; // 协同签名服务器配置,对应结构体NET_CFG_VSP_CO_SIGN_SERVER_INFO,对应通道为-1
+    public static final int NET_EM_CFG_VSP_GAVI =
+            9003; // 公安视频图像信息应用系统接入配置,对应结构体NET_CFG_VSP_GAVI_INFO,对应通道为-1
+
+    /***********道闸配置************************************************************************************************/
+    public static final int NET_EM_CFG_TRAFFICSTROBE = 9100; // 道闸配置, 对应结构体 NET_CFG_TRAFFICSTROBE_INFO
+       
+	/***********布撤防配置************************************************************************************************/
+    public static final int NET_EM_CFG_DISABLE_LINKAGE = 
+    		9300; // 一键撤防配置,对应结构体 NET_CFG_DISABLE_LINKAGE, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_DISABLE_LINKAGE_TIME_SECTION = 
+    		9301; // 周期撤防联动项功能总开关, 对应结构体 NET_CFG_DISABLE_LINKAGE_TIME_SECTION, 与通道不相关,通道号需要填成-1
+    public static final int NET_EM_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC = 
+    		9303; //  远程通道是否同步本地端"周期一键布撤防"配置, 对应结构体 NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO, 与通道不相关,接口通道号需要填成-1
+    
+    /***********Traffic相关配置***************************************************************************************************/
+    public static final int NET_EM_CFG_TRAFFIC_LATTICE_SCREEN =
+            10000; // 点阵屏显示信息配置, 对应结构体 NET_CFG_TRAFFIC_LATTICE_SCREEN_INFO
+
+    public static final int NET_EM_CFG_TRAFFIC_VOICE_BROADCAST =
+            10001; // 智能交通语音播报配置, 对应结构体 NET_CFG_TRAFFIC_VOICE_BROADCAST_INFO
+    public static final int NET_EM_CFG_SCENE_SNAP_SHOT_WITH_RULE2 =
+            10002; // 场景抓拍设置, 对应结构体 NET_CFG_SCENE_SNAP_SHOT_WITH_RULE2_INFO
+
+    /***********热成像相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_HOT_COLD_SPOT_WARNING = 1505; // 热冷点报警配置, 对应的结构体 NET_HOT_COLD_SPOT_WARNING_INFO
+    public static final int NET_EM_CFG_SENSOR_MAINTAIN = 11100;		// 热成像机芯维护配置,对应结构体 NET_CFG_SENSOR_MAINTAIN
+    public static final int NET_EM_CFG_TILT_LIMIT = 11101;		    // 激光测距俯仰角限制,对应结构体 NET_CFG_TILT_LIMIT
+    public static final int NET_EM_CFG_RADIO_REGULATOR = 11102;		// 人体测温标准黑体配置, 对应结构体 NET_CFG_RADIO_REGULATOR,通道号不能为-1
+    public static final int NET_EM_CFG_HUMAN_THERM_CALIBRATE = 11103;// 人体测温标定信息, 对应结构体 NET_CFG_HUMAN_THERM_CALLBRATE_INFO ,通道号必须是-1
+    public static final int NET_EM_CFG_TELESCOPE_OPTIONS = 11104;	// 望远镜配置,对应结构体 NET_CFG_TELESCOPE_OPTIONS_INFO
+    public static final int NET_EM_CFG_ENVIRONMENT_THERM_INFO = 11105;    // 环境温度信息(热成像内部配置,只可读,不可设),通道号需要填热成像通道号  对应结构体 NET_CFG_ENVIRONMENT_THERM_INFO
+    public static final int NET_EM_CFG_THERMOMETRY_SHIELD = 11106;    // 测温屏蔽区配置 对应结构体 NET_CFG_THERMOMETRY_SHIELD_INFO
+
+    /***********DHRS相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_DHRS = 12700; // DH485串口点阵屏配置, 对应结构体 NET_CFG_DHRS
+
+    /***********录播默认配置******************************************************************************************/
+    public static final int NET_EM_CFG_COURSE_RECORD_DEFAULT_CONFIG =
+            12100; // 录播默认配置, 对应结构体 NET_CFG_COURSE_RECORD_DEFAULT_CONFIG
+
+    public static final int NET_EM_CFG_COURSE_RECORD_UPLOAD =
+            12101; // 录播设备支持录像文件上传配置, 对应结构体 NET_CFG_COURSE_RECORD_UPLOAD
+    /***********硬盘相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_NAS_DIRECTORY = 12302;					// 共享文件夹信息配置, 对应结构体 NET_CFG_NAS_DIRECTORY
+    /***********信号机相关配置******************************************************************************************/
+    public static final int NET_EM_CFG_RTSC_SCH_CROSSLIST = 14000;                // 路口数据列表配置, 对应结构体NET_CFG_RTSC_SCH_CROSSLIST_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_CHANNELS = 14001;                    // 通道表, 对应结构体NET_CFG_RTSC_SCH_CHANNELS_INFO
+    public static final int NET_EM_CFG_RTSC_SCH_PLANS = 14002;                        // 周期方案表,  对应结构体NET_CFG_RTSC_SCH_PLANS_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_MANAGE = 14003;                    // 红绿灯调度计划列表, 对应结构体 NET_CFG_RTSC_SCH_MANAGE_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_VEHICLE_DETECTORLIST = 14004;        // 检测器列表,对应结构体 NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_PEDDETECTOR_LIST = 14005;            // 行人检测器列表,对应结构体 NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY = 14006;        // 行人优先智能化配置,对应结构体 NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_OVERFLOW_CONTROL = 14007;            // 溢出控制列表,对应结构体 NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_NIGHTASK = 14008;                    // 夜间请求,对应结构体 NET_CFG_RTSC_SCH_NIGHTASK_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_OPTIMIZES = 14009;                    // 饱和度与单点自适应智能化配置,对应结构体 NET_CFG_RTSC_SCH_OPTIMIZES_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_VARLANELIST = 14010;                // 可变车道列表,对应结构体 NET_CFG_RTSC_SCH_VARLANELIST_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_SCH_VARLANE_MANAGEMENT = 14011;        // 可变车道调度计划列表,对应结构体 NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO, 与通道无关, 通道号需填成-1
+    public static final int NET_EM_CFG_RTSC_TEMP_SCH = 14012;                        // 临时方案配置,对应结构体 NET_CFG_RTSC_TEMP_SCH_INFO, 与通道无关, 通道号需填成-1
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ETH_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ETH_STATE.java
new file mode 100644
index 0000000..770af88
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_ETH_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description   有线网连接状态 
+* @date 2022/08/31 14:35:19
+*/
+public enum NET_EM_ETH_STATE {
+/**
+未知
+*/
+NET_EM_ETH_UNKNOWN(0,"未知"),
+/**
+连接
+*/
+NET_EM_ETH_CONNECT(1,"连接"),
+/**
+未连接
+*/
+NET_EM_ETH_DISCONNECT(2,"未连接");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_ETH_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_ETH_STATE enumType : NET_EM_ETH_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_ETH_STATE enumType : NET_EM_ETH_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_ETH_STATE getEnum(int value) {
+        for (NET_EM_ETH_STATE e : NET_EM_ETH_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_ETH_STATE.NET_EM_ETH_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FAILCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FAILCODE.java
new file mode 100644
index 0000000..55d7ab2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FAILCODE.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 操作错误码
+ * @date 2021/3/31
+ */
+public 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, "超过个人最大卡片记录数"),
+  NET_EM_FAILCODE_EXCEED_MAX_PHOTOSIZE(21, "超出最大照片大小"),
+  NET_EM_FAILCODE_INVALID_USERID(22, "用户ID无效(未找到客户)"),
+  NET_EM_FAILCODE_EXTRACTFEATURE_FAIL(23, "提取人脸特征失败"),
+  NET_EM_FAILCODE_PHOTO_EXIST(24, "人脸照片已存在"),
+  NET_EM_FAILCODE_PHOTO_OVERFLOW(25, "超出最大人脸照片数"),
+  NET_EM_FAILCODE_INVALID_PHOTO_FORMAT(26, "照片格式无效"),
+  NET_EM_FAILCODE_EXCEED_ADMINISTRATOR_LIMIT(27, "超出管理员人数限制");
+  /** 错误码 */
+  private int failCode;
+  /** 对应错误信息 */
+  private String desc;
+
+  NET_EM_FAILCODE(int failCode, String desc) {
+    this.failCode = failCode;
+    this.desc = desc;
+  }
+
+  public static NET_EM_FAILCODE FailCode(int failCode) {
+    for (NET_EM_FAILCODE code : NET_EM_FAILCODE.values()) {
+      if (failCode == code.getFailCode()) {
+        return code;
+      }
+    }
+    return NET_EM_FAILCODE_UNKNOWN;
+  }
+
+  public static String FailCodeMessage(int failCode) {
+    return FailCode(failCode).getDesc();
+  }
+
+  public int getFailCode() {
+    return failCode;
+  }
+
+  public void setFailCode(int failCode) {
+    this.failCode = failCode;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public void setDesc(String desc) {
+    this.desc = desc;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FIREWARNING_MODE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FIREWARNING_MODE_TYPE.java
new file mode 100644
index 0000000..798264a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FIREWARNING_MODE_TYPE.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 260611
+ * @description 火灾配置类型
+ * @date 2023/05/24 10:24:48
+ */
+public enum NET_EM_FIREWARNING_MODE_TYPE {
+	/**
+     * 云台预置点模式(默认)
+     */
+	NET_EM_FIREWARNING_TYPE_PTZPRESET(0,"云台预置点模式(默认)"),
+	/**
+     * 空间排除模式
+     */
+	NET_EM_FIREWARNING_TYPE_SPACEEXCLUDE(1,"空间排除模式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_FIREWARNING_MODE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_FIREWARNING_MODE_TYPE enumType : NET_EM_FIREWARNING_MODE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_FIREWARNING_MODE_TYPE enumType : NET_EM_FIREWARNING_MODE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static NET_EM_FIREWARNING_MODE_TYPE getEnum(int value) {
+		for (NET_EM_FIREWARNING_MODE_TYPE e : NET_EM_FIREWARNING_MODE_TYPE.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return NET_EM_FIREWARNING_MODE_TYPE.NET_EM_FIREWARNING_TYPE_PTZPRESET;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java
new file mode 100644
index 0000000..8987637
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FLOW_ATTRIBUTE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 车道流量信息属性
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public enum NET_EM_FLOW_ATTRIBUTE {
+    /**
+     * 
+     */
+    EM_FLOW_ATTRIBUTE_UNKNOWN(0,""),
+    /**
+     * 流量监测
+     */
+    EM_FLOW_ATTRIBUTE_FLOW_DETECTION(1,"流量监测"),
+    /**
+     * 排队检测
+     */
+    EM_FLOW_ATTRIBUTE_QUEUE_DETECTION(2,"排队检测");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_EM_FLOW_ATTRIBUTE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_FLOW_ATTRIBUTE enumType : NET_EM_FLOW_ATTRIBUTE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_FLOW_ATTRIBUTE enumType : NET_EM_FLOW_ATTRIBUTE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_FLOW_ATTRIBUTE getEnum(int value) {
+        for (NET_EM_FLOW_ATTRIBUTE e : NET_EM_FLOW_ATTRIBUTE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_FLOW_ATTRIBUTE.EM_FLOW_ATTRIBUTE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java
new file mode 100644
index 0000000..7906a95
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_FORMAT_TYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 码流类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 22:09
+ */
+public enum NET_EM_FORMAT_TYPE {
+
+    EM_FORMAT_TYPE_UNKNOWN(0, "未知类型"),
+    /*主码流*/
+    EM_FORMAT_MAIN_NORMAL(1, "主码流普通编码"),
+    EM_FORMAT_MAIN_MOVEEXAMINE(2, "主码流动检编码"),
+    EM_FORMAT_MAIN_ALARM(3, "主码流报警编码"),
+
+    /*辅码流*/
+    EM_FORMAT_EXTRA1(4, "辅码流1"),
+    EM_FORMAT_EXTRA2(5, "辅码流2"),
+    EM_FORMAT_EXTRA3(6, "辅码流3");
+
+    private final int value;
+    private final String note;
+
+    NET_EM_FORMAT_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (TALK_CODING_TYPE enumType : TALK_CODING_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_FORMAT_TYPE enumType : NET_EM_FORMAT_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_FORMAT_TYPE getEnum(int value) {
+        for (NET_EM_FORMAT_TYPE e : NET_EM_FORMAT_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_FORMAT_TYPE.EM_FORMAT_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java
new file mode 100644
index 0000000..9e26532
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_GET_ALARMREGION_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 获取的操作类型
+ * @date 2021/11/08
+ */
+public class NET_EM_GET_ALARMREGION_INFO {
+	public static final int NET_EM_GET_ALARMREGION_INFO_UNKNOWN = 0; // 未知
+	public static final int NET_EM_GET_ALARMREGION_INFO_ALARMCAPS = 1; // 获取防区能力,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMCAPS,
+																		// pstuOutParam类型为NET_OUT_GET_ALARMCAPS
+	public static final int NET_EM_GET_ALARMREGION_INFO_ARMMODE = 2; // 获取布防状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALARMMODE,
+																		// pstuOutParam类型为NET_OUT_GET_ALARMMODE
+	public static final int NET_EM_GET_ALARMREGION_INFO_BYPASSMODE = 3; // 获取旁路状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_BYPASSMODE,
+																		// pstuOutParam类型为NET_OUT_GET_BYPASSMODE
+	public static final int NET_EM_GET_ALARMREGION_INFO_AREAZONES = 4; // 获取区域防区,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAZONES,
+																		// pstuOutParam类型为NET_OUT_GET_AREAZONES
+	public static final int NET_EM_GET_ALARMREGION_INFO_ALLINSLOTS = 5; // 获取所有的报警防区,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLINSLOTS,
+																		// pstuOutParam类型为NET_OUT_GET_ALLINSLOTS
+	public static final int NET_EM_GET_ALARMREGION_INFO_ALLOUTSLOTS = 6; // 获取所有的报警输出,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ALLOUTSLOTS,
+																			// pstuOutParam类型为NET_OUT_GET_ALLOUTSLOTS
+
+	public static final int NET_EM_GET_ALARMREGION_INFO_ZONECONNECTIONSSTATUS = 7; // 获取防区连接状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CONNECTIONSTATUS,
+																					// pstuOutParam类型为NET_OUT_GET_CONNECTIONSTATUS
+	public static final int NET_EM_GET_ALARMREGION_INFO_AREASTATUS = 8; // 获取区域状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_AREAS_STATUS,
+																		// pstuOutParam类型为NET_OUT_GET_AREAS_STATUS
+	public static final int NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE = 9; // 获取输出状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_OUTPUT_STATE,
+																			// pstuOutParam类型为NET_OUT_GET_OUTPUT_STATE
+	public static final int NET_EM_GET_ALARMREGION_INFO_ZONESTROUBLE = 10; // 获取防区故障信息,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_ZONES_TROUBLE,
+																			// pstuOutParam类型为NET_OUT_GET_ZONES_TROUBLE
+	public static final int NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE = 11; // 获取通道状态,此时CLIENT_GetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_GET_CHANNELS_STATE,
+																			// pstuOutParam类型为NET_OUT_GET_CHANNELS_STATE
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java
new file mode 100644
index 0000000..934598b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_IMAGE_QUALITY.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 画质
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 22:25
+ */
+public enum NET_EM_IMAGE_QUALITY {
+
+    EM_IMAGE_QUALITY_Q10(1, "图像质量10%"),
+    EM_IMAGE_QUALITY_Q30(2, "图像质量30%"),
+    EM_IMAGE_QUALITY_Q50(3, "图像质量50%"),
+    EM_IMAGE_QUALITY_Q60(4, "图像质量60%"),
+    EM_IMAGE_QUALITY_Q80(5, "图像质量80%"),
+    EM_IMAGE_QUALITY_Q100(6, "图像质量100%");
+
+    private final int value;
+    private final String note;
+
+    NET_EM_IMAGE_QUALITY(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_IMAGE_QUALITY enumType : NET_EM_IMAGE_QUALITY.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_IMAGE_QUALITY enumType : NET_EM_IMAGE_QUALITY.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_IMAGE_QUALITY getEnum(int value) {
+        for (NET_EM_IMAGE_QUALITY e : NET_EM_IMAGE_QUALITY.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_IMAGE_QUALITY.EM_IMAGE_QUALITY_Q10;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java
new file mode 100644
index 0000000..093bb93
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_INTELLIPARKING_DATA_TYPE.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 智能停车数据类型
+ * @date 2022/10/28 11:30:56
+ */
+public enum NET_EM_INTELLIPARKING_DATA_TYPE {
+	/**
+	 * 数据是规划式停车场车位ID的使用情况,PlanArea字段有效
+	 */
+	NET_EM_INTELLIPARKING_DATA_TYPE_PLANAREA(0, "数据是规划式停车场车位ID的使用情况,PlanArea字段有效"),
+	/**
+	 * 数据是开放式停车场停车信息,OpenArea字段有效
+	 */
+	NET_EM_INTELLIPARKING_DATA_TYPE_OPENAREA(1, "数据是开放式停车场停车信息,OpenArea字段有效");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_INTELLIPARKING_DATA_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_INTELLIPARKING_DATA_TYPE enumType : NET_EM_INTELLIPARKING_DATA_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_INTELLIPARKING_DATA_TYPE enumType : NET_EM_INTELLIPARKING_DATA_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java
new file mode 100644
index 0000000..dce01fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_BACKGROUND_MODE.java
@@ -0,0 +1,10 @@
+package com.netsdk.lib.enumeration;
+/** 逻辑屏背景风格模式  */
+public enum NET_EM_LATTICE_SCREEN_BACKGROUND_MODE {
+
+    NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_UNKNOWN,				// 未知
+    NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_A,					// 背景风格A
+    NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_B,					// 背景风格B
+    NET_EM_LATTICE_SCREEN_BACKGROUND_MODE_C,					// 背景风格C
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java
new file mode 100644
index 0000000..18f8117
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_CONTROL_TYPE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.enumeration;
+/** 逻辑屏控制方式 */
+public enum NET_EM_LATTICE_SCREEN_CONTROL_TYPE {
+    EM_LATTICE_SCREEN_CONTROL_TYPE_UNKNOWN (-1,"未知"),				// 未知
+    EM_LATTICE_SCREEN_CONTROL_TYPE_CAMERA_CONTROL(0,"相机控制"),				// 相机控制
+    EM_LATTICE_SCREEN_CONTROL_TYPE_PLATFORM_CONTROL(1,"平台控制");		// 平台控制
+    private int value;
+    private String note;
+
+    NET_EM_LATTICE_SCREEN_CONTROL_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LATTICE_SCREEN_CONTROL_TYPE enumType : NET_EM_LATTICE_SCREEN_CONTROL_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_LATTICE_SCREEN_CONTROL_TYPE enumType : NET_EM_LATTICE_SCREEN_CONTROL_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java
new file mode 100644
index 0000000..98e4579
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_LOGO_TYPE.java
@@ -0,0 +1,8 @@
+package com.netsdk.lib.enumeration;
+
+public enum NET_EM_LATTICE_SCREEN_LOGO_TYPE {
+
+    NET_EM_LATTICE_SCREEN_LOGO_TYPE_UNKNOWN,					// 未知
+    NET_EM_LATTICE_SCREEN_LOGO_TYPE_STENCIL,					// 文字
+    NET_EM_LATTICE_SCREEN_LOGO_TYPE_PICTURE,					// 图片
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java
new file mode 100644
index 0000000..5b1489c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LATTICE_SCREEN_SHOW_TYPE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.enumeration;
+/**
+ *逻辑屏显示方式
+ */
+public enum NET_EM_LATTICE_SCREEN_SHOW_TYPE {
+    EM_LATTICE_SCREEN_SHOW_TYPE_UNKNOWN (-1,"未知"), 			// 未知
+    EM_LATTICE_SCREEN_SHOW_TYPE_WORD_CONTROL(0,"字段控制显示"),				// 字段控制显示
+    EM_LATTICE_SCREEN_SHOW_TYPE_TRUSTEESHIP_CONTROL(1,"托管显示");		// 托管显示(完全由平台自定义显示)
+
+    private int value;
+    private String note;
+
+    NET_EM_LATTICE_SCREEN_SHOW_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LATTICE_SCREEN_SHOW_TYPE enumType : NET_EM_LATTICE_SCREEN_SHOW_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_LATTICE_SCREEN_SHOW_TYPE enumType : NET_EM_LATTICE_SCREEN_SHOW_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LIGHTING_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LIGHTING_MODE.java
new file mode 100644
index 0000000..90cde58
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LIGHTING_MODE.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 421657
+ * @description 灯光模式
+ * @origin autoTool
+ * @date 2023/10/13 08:58:46
+ */
+public enum NET_EM_LIGHTING_MODE {
+    /**
+     * 未知模式
+     */
+    NET_EM_LIGHTING_UNKNOW(0, "未知模式"),
+    /**
+     * 手动模式
+     */
+    NET_EM_LIGHTING_MANUAL(1, "手动模式"),
+    /**
+     * 自动模式
+     */
+    NET_EM_LIGHTING_AUTO(2, "自动模式"),
+    /**
+     * 关闭模式
+     */
+    NET_EM_LIGHTING_OFF(3, "关闭模式"),
+    /**
+     * 倍率优先模式
+     */
+    NET_EM_LIGHTING_ZOOMPRIO(4, "倍率优先模式"),
+    /**
+     * 定时模式,本模式时LightingSchedule配置生效
+     */
+    NET_EM_LIGHTING_TIMING(5, "定时模式,本模式时LightingSchedule配置生效"),
+    /**
+     * 智能灯光模式(仅球机使用),如果在模式选择本模式,使用新加的SmartLighting配置
+     */
+    NET_EM_LIGHTING_SMARTLIGHT(6, "智能灯光模式(仅球机使用),如果在模式选择本模式,使用新加的SmartLighting配置"),
+    /**
+     * 支持多种灯光,但手动模式下只使用一种灯光,此时使用ManualLighting配置
+     */
+    NET_EM_LIGHTING_EXCLUSIVEMANUAL(7, "支持多种灯光,但手动模式下只使用一种灯光,此时使用ManualLighting配置"),
+    /**
+     * 强制打开灯光(需求要保持状态)
+     */
+    NET_EM_LIGHTING_FORCEON(8, "强制打开灯光(需求要保持状态)");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_EM_LIGHTING_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LIGHTING_MODE enumType : NET_EM_LIGHTING_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_LIGHTING_MODE enumType : NET_EM_LIGHTING_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_LIGHTING_MODE getEnum(int value) {
+        for (NET_EM_LIGHTING_MODE e : NET_EM_LIGHTING_MODE.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return NET_EM_LIGHTING_MODE.NET_EM_LIGHTING_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..8e17e6b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LOGIC_CHANNEL.java
@@ -0,0 +1,109 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 逻辑通道号
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/18 9:44
+ */
+public enum NET_EM_LOGIC_CHANNEL {
+
+    /**
+     * 无效
+     */
+    NET_EM_LOGIC_CHANNEL_INVALID(-1, "无效"),
+    /**
+     * 视频组合通道号
+     */
+    NET_EM_LOGIC_CHANNEL_COMPOSITE(0, "视频组合通道号"),
+    /**
+     * PPT显示逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_PPT(1, "PPT显示逻辑通道号"),
+    /**
+     * 板书特写逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_BLACKBOARD(2, "板书特写逻辑通道号"),
+    /**
+     * 学生特写逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_STUDENTFEATURE(3, "学生特写逻辑通道号"),
+    /**
+     * 学生全景逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_STUDENTFULLVIEW(4, "学生全景逻辑通道号"),
+    /**
+     * 教师特写逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_TEACHERFEATURE(5, "教师特写逻辑通道号"),
+    /**
+     * 教师全景逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_TEACHERFULLVIEW(6, "教师全景逻辑通道号"),
+    /**
+     * 教师检测逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_TEACHERDETECT(7, "教师检测逻辑通道号"),
+    /**
+     * 板书检测逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT(8, "板书检测逻辑通道号"),
+    /**
+     * 板书特写1逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_BLACKBOARD1(9, "板书特写1逻辑通道号"),
+    /**
+     * 板书检测1逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_BLACKBOARDDETECT1(10, "板书检测1逻辑通道号"),
+    /**
+     * 展台显示逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_VISUALPRESENTER(11, "展台显示逻辑通道号"),
+    /**
+     * 视频监控逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_VIDEOSURVEILLANCE(12, "视频监控逻辑通道号"),
+    /**
+     * 互动会议逻辑通道号
+     */
+    NET_EM_LOGIC_CHANNEL_VIDEOCONFERENCE(13, "互动会议逻辑通道号"),
+    /**
+     * 互动演示逻辑通道
+     */
+    NET_EM_LOGIC_CHANNEL_VIDEO_PRESENTATION(14, "互动演示逻辑通道");
+
+    private int value;
+    private String note;
+
+    NET_EM_LOGIC_CHANNEL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LOGIC_CHANNEL enumType : NET_EM_LOGIC_CHANNEL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_LOGIC_CHANNEL enumType : NET_EM_LOGIC_CHANNEL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java
new file mode 100644
index 0000000..61716e3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_AREATYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_AREATYPE {
+/**未知*/
+NET_EM_LXSJ_AREATYPE_UNKNOWN(-1,"未知"),
+/**0- 静态*/
+NET_EM_LXSJ_AREATYPE_STATIC_TYPE(0,"0- 静态"),
+/**1- 动态*/
+NET_EM_LXSJ_AREATYPE_DYNAMIC_TYPE(1,"1- 动态");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_AREATYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_AREATYPE enumType : NET_EM_LXSJ_AREATYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_AREATYPE enumType : NET_EM_LXSJ_AREATYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_AREATYPE getEnum(int value) {
+        for (NET_EM_LXSJ_AREATYPE e :NET_EM_LXSJ_AREATYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_AREATYPE.NET_EM_LXSJ_AREATYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java
new file mode 100644
index 0000000..3302015
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_COLORTYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_COLORTYPE {
+/**未知*/
+NET_EM_LXSJ_COLORTYPE_UNKNOWN(-1,"未知"),
+/**单色*/
+NET_EM_LXSJ_COLORTYPE_SINGLE_COLOR(1,"单色"),
+/**双色*/
+NET_EM_LXSJ_COLORTYPE_DOUBLE_COLOR(2,"双色"),
+/**三色*/
+NET_EM_LXSJ_COLORTYPE_THREE_COLOR(3,"三色");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_COLORTYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_COLORTYPE enumType : NET_EM_LXSJ_COLORTYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_COLORTYPE enumType : NET_EM_LXSJ_COLORTYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_COLORTYPE getEnum(int value) {
+        for (NET_EM_LXSJ_COLORTYPE e : NET_EM_LXSJ_COLORTYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_COLORTYPE.NET_EM_LXSJ_COLORTYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java
new file mode 100644
index 0000000..e160ea2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_DISPLAYTYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_DISPLAYTYPE {
+/**未知*/
+NET_EM_LXSJ_DISPLAYTYPE_UNKNOWN(-1,"未知"),
+/**0- 背景*/
+NET_EM_LXSJ_DISPLAYTYPE_BACK_TYPE(0,"0- 背景"),
+/**1- 前景*/
+NET_EM_LXSJ_DISPLAYTYPE_FRONT_TYPE(1,"1- 前景");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_DISPLAYTYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_DISPLAYTYPE enumType : NET_EM_LXSJ_DISPLAYTYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_DISPLAYTYPE enumType : NET_EM_LXSJ_DISPLAYTYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_DISPLAYTYPE getEnum(int value) {
+        for (NET_EM_LXSJ_DISPLAYTYPE e : NET_EM_LXSJ_DISPLAYTYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_DISPLAYTYPE.NET_EM_LXSJ_DISPLAYTYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java
new file mode 100644
index 0000000..4f95a95
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_ELEM_NAMETYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_ELEM_NAMETYPE {
+/**未知*/
+NET_EM_LXSJ_ELEM_NAMETYPE_UNKNOWN(-1,"未知"),
+/**0-分隔符*/
+NET_EM_LXSJ_ELEM_NAMETYPE_SEPERATER(0,"0-分隔符"),
+/**1-换行符*/
+NET_EM_LXSJ_ELEM_NAMETYPE_NEWLINE(1,"1-换行符"),
+/**2-车牌*/
+NET_EM_LXSJ_ELEM_NAMETYPE_PLATE(2,"2-车牌"),
+/**3-违章信息*/
+NET_EM_LXSJ_ELEM_NAMETYPE_VIOLATIONINFO(3,"3-违章信息"),
+/**4-速度*/
+NET_EM_LXSJ_ELEM_NAMETYPE_SPEED(4,"4-速度"),
+/**5-自定义项*/
+NET_EM_LXSJ_ELEM_NAMETYPE_CUSTOM(5,"5-自定义项");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_ELEM_NAMETYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_ELEM_NAMETYPE enumType : NET_EM_LXSJ_ELEM_NAMETYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_ELEM_NAMETYPE enumType : NET_EM_LXSJ_ELEM_NAMETYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_ELEM_NAMETYPE getEnum(int value) {
+        for (NET_EM_LXSJ_ELEM_NAMETYPE e : NET_EM_LXSJ_ELEM_NAMETYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_ELEM_NAMETYPE.NET_EM_LXSJ_ELEM_NAMETYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java
new file mode 100644
index 0000000..9416430
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTCOLOR.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_FONTCOLOR {
+/**未知*/
+NET_EM_LXSJ_FONTCOLOR_UNKNOWN(-1,"未知"),
+/**0-红灯、绿灯、蓝灯都不亮*/
+NET_EM_LXSJ_FONTCOLOR_R0_G0_B0(0,"0-红灯、绿灯、蓝灯都不亮"),
+/**1-红灯亮、绿灯不亮、蓝灯不亮*/
+NET_EM_LXSJ_FONTCOLOR_R1_G0_B0(1,"1-红灯亮、绿灯不亮、蓝灯不亮"),
+/**2-红灯不亮、绿灯亮、蓝灯不亮*/
+NET_EM_LXSJ_FONTCOLOR_R0_G1_B0(2,"2-红灯不亮、绿灯亮、蓝灯不亮"),
+/**3-红灯亮、绿灯亮、蓝灯不亮*/
+NET_EM_LXSJ_FONTCOLOR_R1_G1_B0(3,"3-红灯亮、绿灯亮、蓝灯不亮"),
+/**4-红灯不亮、绿灯不亮、蓝灯亮*/
+NET_EM_LXSJ_FONTCOLOR_R0_G0_B1(4,"4-红灯不亮、绿灯不亮、蓝灯亮"),
+/**5-红灯亮、绿灯不亮、蓝灯亮*/
+NET_EM_LXSJ_FONTCOLOR_R1_G0_B1(5,"5-红灯亮、绿灯不亮、蓝灯亮"),
+/**6-红灯不亮、绿灯亮、蓝灯不亮*/
+NET_EM_LXSJ_FONTCOLOR_R0_G1_B1(6,"6-红灯不亮、绿灯亮、蓝灯不亮"),
+/**7-红灯、绿灯、蓝灯全亮*/
+NET_EM_LXSJ_FONTCOLOR_R1_G1_B(7,"7-红灯、绿灯、蓝灯全亮");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_FONTCOLOR(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_FONTCOLOR enumType : NET_EM_LXSJ_FONTCOLOR.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_FONTCOLOR enumType : NET_EM_LXSJ_FONTCOLOR.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_FONTCOLOR getEnum(int value) {
+        for (NET_EM_LXSJ_FONTCOLOR e : NET_EM_LXSJ_FONTCOLOR.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_FONTCOLOR.NET_EM_LXSJ_FONTCOLOR_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java
new file mode 100644
index 0000000..75b9bef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_FONTSIZE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 文字大小(字高宽点数)
+ */
+public enum NET_EM_LXSJ_FONTSIZE {
+/**未知*/
+NET_EM_LXSJ_FONTSIZE_UNKNOWN(-1,"未知"),
+/**16点阵*/
+NET_EM_LXSJ_FONTSIZE_16(16,"16点阵"),
+/**32点阵*/
+NET_EM_LXSJ_FONTSIZE_32(32,"32点阵");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_FONTSIZE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_FONTSIZE enumType : NET_EM_LXSJ_FONTSIZE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_FONTSIZE enumType : NET_EM_LXSJ_FONTSIZE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_FONTSIZE getEnum(int value) {
+        for (NET_EM_LXSJ_FONTSIZE e : NET_EM_LXSJ_FONTSIZE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_FONTSIZE.NET_EM_LXSJ_FONTSIZE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java
new file mode 100644
index 0000000..f67264f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_SHOWMODE.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+public enum NET_EM_LXSJ_SHOWMODE {
+/**未知*/
+NET_EM_LXSJ_SHOWMODE_UNKNOWN(-1,"未知"),
+/**立即显示*/
+NET_EM_LXSJ_SHOWMODE_IMMEDIATELY(1,"立即显示"),
+/**向左移动*/
+NET_EM_LXSJ_SHOWMODE_TO_LEFT(2,"向左移动"),
+/**向上移动*/
+NET_EM_LXSJ_SHOWMODE_TO_TOP(3,"向上移动"),
+/**向右移动*/
+NET_EM_LXSJ_SHOWMODE_TO_RIGHT(4,"向右移动"),
+/**向下移动*/
+NET_EM_LXSJ_SHOWMODE_TO_BOTTOM(5,"向下移动"),
+/**闪烁*/
+NET_EM_LXSJ_SHOWMODE_BLINK(6,"闪烁"),
+/**向上连移*/
+NET_EM_LXSJ_SHOWMODE_TO_TOP_CONTINUOUS(94,"向上连移"),
+/**向下连移*/
+NET_EM_LXSJ_SHOWMODE_TO_BOTTOM_CONTINUOUS(95,"向下连移"),
+/**向右连移*/
+NET_EM_LXSJ_SHOWMODE_TO_RIGHT_CONTINUOUS(96,"向右连移"),
+/**向左连移*/
+NET_EM_LXSJ_SHOWMODE_TO_LEFT_CONTINUOUS(97,"向左连移");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_LXSJ_SHOWMODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_SHOWMODE enumType : NET_EM_LXSJ_SHOWMODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_SHOWMODE enumType : NET_EM_LXSJ_SHOWMODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_LXSJ_SHOWMODE getEnum(int value) {
+        for (NET_EM_LXSJ_SHOWMODE e : NET_EM_LXSJ_SHOWMODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_SHOWMODE.NET_EM_LXSJ_SHOWMODE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java
new file mode 100644
index 0000000..e0b60e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_LXSJ_TRANSMODE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;
+
+public enum NET_EM_LXSJ_TRANSMODE {
+    /**未知*/
+    NET_EM_LXSJ_TRANSMODE_UNKNOWN(-1,"未知"),
+    /**TCP方式*/
+    NET_EM_LXSJ_TRANSMODE_TCP(0,"TCP方式"),
+    /**UDP方式*/
+    NET_EM_LXSJ_TRANSMODE_UD(1,"UDP方式");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_EM_LXSJ_TRANSMODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_LXSJ_TRANSMODE enumType : NET_EM_LXSJ_TRANSMODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_LXSJ_TRANSMODE enumType : NET_EM_LXSJ_TRANSMODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_LXSJ_TRANSMODE getEnum(int value) {
+        for (NET_EM_LXSJ_TRANSMODE e : NET_EM_LXSJ_TRANSMODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_LXSJ_TRANSMODE.NET_EM_LXSJ_TRANSMODE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MASK_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MASK_TYPE.java
new file mode 100644
index 0000000..0a0b14f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MASK_TYPE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.enumeration;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 遮挡块形状类型
+ * @date 2020/11/9
+ */
+public enum NET_EM_MASK_TYPE {
+    /**
+     * 未知
+     */
+    NET_EM_MASK_UNKNOWN,
+    /**
+     * 矩形
+     */
+    NET_EM_MASK_RECT,
+    /**
+     * 多边形
+     */
+    NET_EM_MASK_POLYGON,
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java
new file mode 100644
index 0000000..38428ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_MOSAIC_TYPE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.enumeration;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 马赛克类型
+ * @date 2020/11/9
+ */
+public enum NET_EM_MOSAIC_TYPE {
+    NET_EM_MOSAIC_UNKNOWN(0, "未知"),
+    NET_EM_MOSAIC_8(8, "[8x8大小] 马赛克"),
+    NET_EM_MOSAIC_16(16, "[16x16大小] 马赛克"),
+
+    NET_EM_MOSAIC_24(24, "[24x24大小] 马赛克"),
+    NET_EM_MOSAIC_32(32, "[32x32大小] 马赛克");
+
+    private NET_EM_MOSAIC_TYPE(int type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    private int type;
+    private String desc;
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public static NET_EM_MOSAIC_TYPE getMosaicType(int type){
+        for (NET_EM_MOSAIC_TYPE mosaic:NET_EM_MOSAIC_TYPE.values()) {
+            if(type==mosaic.getType()){
+                return mosaic;
+            }
+        }
+        return null;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java
new file mode 100644
index 0000000..59c0c1c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OFFLINE_CALL_TYPE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 平台呼出类型
+ * @date 2021/2/22
+ */
+public enum NET_EM_OFFLINE_CALL_TYPE {
+  /** 未知 */
+  NET_EM_OFFLINE_CALL_UNKNOWN(-1, "未知"),
+  /** 在线呼出 */
+  NET_EM_OFFLINE_CALL_ONLINECALL(0, "在线呼出"),
+  /** 断线呼出 */
+  NET_EM_OFFLINE_CALL_OFFLINECALL(1, "断线呼出"),
+  /** 其他 */
+  NET_EM_OFFLINE_CALL_NONE(255, "其他");
+  private int type;
+  private String desc;
+
+  NET_EM_OFFLINE_CALL_TYPE(int type, String desc) {
+    this.type = type;
+    this.desc = desc;
+  }
+
+  public int getType() {
+    return type;
+  }
+
+  public String getDesc() {
+    return desc;
+  }
+
+  public static NET_EM_OFFLINE_CALL_TYPE getOfflineCallType(int type) {
+    for (NET_EM_OFFLINE_CALL_TYPE offlineCall : NET_EM_OFFLINE_CALL_TYPE.values()) {
+      if (offlineCall.type == type) {
+        return offlineCall;
+      }
+    }
+    return NET_EM_OFFLINE_CALL_UNKNOWN;
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java
new file mode 100644
index 0000000..efa5f42
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_OVER_FLOW_STATE.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 车辆排队长度溢出状态
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public enum NET_EM_OVER_FLOW_STATE {
+    /**
+     * 状态未知
+     */
+    EM_OVER_FLOW_STATE_UNKNOWN(0,"状态未知"),
+    /**
+     * 未溢出
+     */
+    EM_OVER_FLOW_STATE_NOT_OVERFLOW(1,"未溢出"),
+    /**
+     * 溢出
+     */
+    EM_OVER_FLOW_STATE_OVERFLOW(2,"溢出");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_EM_OVER_FLOW_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_OVER_FLOW_STATE enumType : NET_EM_OVER_FLOW_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_OVER_FLOW_STATE enumType : NET_EM_OVER_FLOW_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_OVER_FLOW_STATE getEnum(int value) {
+        for (NET_EM_OVER_FLOW_STATE e : NET_EM_OVER_FLOW_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_OVER_FLOW_STATE.EM_OVER_FLOW_STATE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_POWER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_POWER_TYPE.java
new file mode 100644
index 0000000..303de9c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_POWER_TYPE.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description   供电类型 
+* @date 2022/09/01 15:11:24
+*/
+public enum NET_EM_POWER_TYPE {
+/**
+未知
+*/
+NET_EM_POWER_TYPE_UNKNOWN(-1,"未知"),
+/**
+电源适配器
+*/
+NET_EM_POWER_TYPE_POWERADAPTER(0,"电源适配器"),
+/**
+电池
+*/
+NET_EM_POWER_TYPE_BATTERY(1,"电池"),
+/**
+电池+电源适配器
+*/
+NET_EM_POWER_TYPE_BATTERY_AND_POWERADAPTER(2,"电池+电源适配器");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_POWER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_POWER_TYPE enumType : NET_EM_POWER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_POWER_TYPE enumType : NET_EM_POWER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static NET_EM_POWER_TYPE getEnum(int value) {
+        for (NET_EM_POWER_TYPE e : NET_EM_POWER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_POWER_TYPE.NET_EM_POWER_TYPE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java
new file mode 100644
index 0000000..6463768
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RADAR_RFIDCARD_ACTION.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 卡片行为
+ * @since : Created in 2022/02/11 15:37
+ */
+
+public enum NET_EM_RADAR_RFIDCARD_ACTION {
+    /**
+     * 未知
+     */
+    EM_RADAR_RFIDCARD_ACTION_UNKNOWN(0,"未知"),
+    /**
+     * 卡片离开
+     */
+    EM_RADAR_RFIDCARD_ACTION_LEAVE(1,"卡片离开"),
+    /**
+     * 卡片进入
+     */
+    EM_RADAR_RFIDCARD_ACTION_ENTER(2,"卡片进入");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_EM_RADAR_RFIDCARD_ACTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_RADAR_RFIDCARD_ACTION enumType : NET_EM_RADAR_RFIDCARD_ACTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_RADAR_RFIDCARD_ACTION enumType : NET_EM_RADAR_RFIDCARD_ACTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_RADAR_RFIDCARD_ACTION getEnum(int value) {
+        for (NET_EM_RADAR_RFIDCARD_ACTION e : NET_EM_RADAR_RFIDCARD_ACTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_RADAR_RFIDCARD_ACTION.EM_RADAR_RFIDCARD_ACTION_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RECORD_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RECORD_MODE.java
new file mode 100644
index 0000000..19870f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_RECORD_MODE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 录像模式
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:39
+ */
+public enum NET_EM_RECORD_MODE {
+    /**
+     * 未知
+     */
+    NET_EM_RECORD_MODE_UNKNOWN(0, "未知"),
+    /**
+     * 课程录像模式
+     */
+    NET_EM_RECORD_MODE_COURSE(1, "课程录像模式"),
+    /**
+     * 普通模式
+     */
+    NET_EM_RECORD_MODE_NORMAL(2, "普通模式");
+
+    private int value;
+    private String note;
+
+    NET_EM_RECORD_MODE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_RECORD_MODE enumType : NET_EM_RECORD_MODE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_RECORD_MODE enumType : NET_EM_RECORD_MODE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_RECORD_MODE getEnum(int value) {
+        for (NET_EM_RECORD_MODE e : NET_EM_RECORD_MODE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_RECORD_MODE.NET_EM_RECORD_MODE_UNKNOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java
new file mode 100644
index 0000000..ada9979
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENEDETECTION_TYPE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @description 烟雾/火焰检测场景
+ * @author 119178
+ * @date 2021/3/11
+ */
+public enum NET_EM_SCENEDETECTION_TYPE {
+	/**
+	 * 未知
+	 */
+	NET_EM_SCENEDETECTION_UNKNOWN (0),
+	/**
+	 * 室内场景
+	 */
+	NET_EM_SCENEDETECTION_INDOORSCENE (1),				
+	/**
+	 * 室内场景
+	 */
+	NET_EM_SCENEDETECTION_OUTDOORSCENE(2),				
+	/**
+	 * 交通隧道场景
+	 */
+	NET_EM_SCENEDETECTION_TUNNEL(3),					
+	/**
+	 * 森林场景
+	 */
+	NET_EM_SCENEDETECTION_FOREST(4);		
+	
+	private int id;
+
+	private NET_EM_SCENEDETECTION_TYPE(int id) {
+		this.id = id;
+	}
+
+	public int getId() {
+		return id;
+	}	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENE_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENE_MODE.java
new file mode 100644
index 0000000..053cf0c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCENE_MODE.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 布防的情景模式
+ * @date 2023/03/15 16:05:03
+ */
+public enum NET_EM_SCENE_MODE {
+	/**
+	 * 未知模式
+	 */
+	NET_EM_SCENE_MODE_UNKNOWN(0, "未知模式"),
+	/**
+	 * 外出模式
+	 */
+	NET_EM_SCENE_MODE_OUTDOOR(1, "外出模式"),
+	/**
+	 * 在家模式
+	 */
+	NET_EM_SCENE_MODE_INDOOR(2, "在家模式"),
+	/**
+	 * 全局模式
+	 */
+	NET_EM_SCENE_MODE_WHOLE(3, "全局模式"),
+	/**
+	 * 立即模式
+	 */
+	NET_EM_SCENE_MODE_RIGHTNOW(4, "立即模式"),
+	/**
+	 * 自动模式
+	 */
+	NET_EM_SCENE_MODE_AUTO(5, "自动模式"),
+	/**
+	 * 强制模式
+	 */
+	NET_EM_SCENE_MODE_FORCE(6, "强制模式"),
+	/**
+	 * 自定义模式
+	 */
+	NET_EM_SCENE_MODE_CUSTOM(7, "自定义模式"),
+	/**
+	 * 就寝模式
+	 */
+	NET_EM_SCENE_MODE_SLEEPING(8, "就寝模式");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_SCENE_MODE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_SCENE_MODE enumType : NET_EM_SCENE_MODE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_SCENE_MODE enumType : NET_EM_SCENE_MODE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java
new file mode 100644
index 0000000..f0c070d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SCREEN_SHOW_CONTENTS.java
@@ -0,0 +1,112 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 逻辑屏显示内容
+ * @date 2022/05/10 10:39:28
+ */
+public enum NET_EM_SCREEN_SHOW_CONTENTS {
+	/**
+	 * 未知
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_UNKNOWN(0, "未知"),
+	/**
+	 * 车牌
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_PLATENUMBE(1, "车牌"),
+	/**
+	 * 系统时间
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_SYSTIME(2, "系统时间"),
+	/**
+	 * 停车时长
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_PARKTIME(3, "停车时长"),
+	/**
+	 * 车主姓名
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_MASTEROFCAR(4, "车主姓名"),
+	/**
+	 * 用户类型
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_USERTYPE(5, "用户类型"),
+	/**
+	 * 到期天数
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_REMAINDAY(6, "到期天数"),
+	/**
+	 * 停车费
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_PARKCHARGE(7, "停车费"),
+	/**
+	 * 余位数
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_REMAINSPACE(8, "余位数"),
+	/**
+	 * 系统日期
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_SYSDATE(9, "系统日期"),
+	/**
+	 * 车辆通过指示灯(红圆绿圆组合指示灯)
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_PASSICONCIRCLE(10, "车辆通过指示灯(红圆绿圆组合指示灯)"),
+	/**
+	 * 车辆通过指示灯(红叉绿箭组合指示灯)
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_PASSICONARROW(11, "车辆通过指示灯(红叉绿箭组合指示灯)"),
+	/**
+	 * 入场时间
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_INTIME(12, "入场时间"),
+	/**
+	 * 出场时间
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_OUTTIME(13, "出场时间"),
+	/**
+	 * 备注信息
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_REMARKS(14, "备注信息"),
+	/**
+	 * 资源文件(视频或图片)
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_RESOURCE(15, "资源文件(视频或图片)"),
+	/**
+	 * 自定义信息
+	 */
+	EM_TRAFFIC_LATTICE_SCREEN_CUSTOM(16, "自定义信息");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_SCREEN_SHOW_CONTENTS(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_SCREEN_SHOW_CONTENTS enumType : NET_EM_SCREEN_SHOW_CONTENTS.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_SCREEN_SHOW_CONTENTS enumType : NET_EM_SCREEN_SHOW_CONTENTS.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java
new file mode 100644
index 0000000..0ceeda0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SDK_LOCAL_CFG_TYPE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.structure.NET_CONFIG_OPENSSL_INFO;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description CLIENT_SetSDKLocalCfg/CLIENT_GetSDKLocalCfg 接口配置本地参数类型
+ * @date 2021/3/2
+ */
+public enum NET_EM_SDK_LOCAL_CFG_TYPE {
+    /**
+     * openssl库信息配置,对应结构体
+     * {@link NET_CONFIG_OPENSSL_INFO}
+     */
+    NET_SDK_LOCAL_CFG_TYPE_OPENSSL,
+    /**
+     * StreamConvertor转码库信息配置,对应结构体 NET_CONFIG_STREAMCONVERTOR_INFO
+     */
+    NET_SDK_LOCAL_CFG_TYPE_STREAMCONVERTOR
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java
new file mode 100644
index 0000000..ff09738
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SET_ALARMREGION_INFO.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.structure.*;
+
+/**
+ * @author 251823
+ * @description 设置的操作类型
+ * @date 2023/03/15 15:58:57
+ */
+public enum NET_EM_SET_ALARMREGION_INFO {
+	/**
+	 * 未知
+	 */
+	NET_EM_SET_ALARMREGION_INFO_UNKNOWN(0, "未知"),
+	/**
+	 * 设置布防模式, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为{@link NET_IN_SET_ALARMMODE},
+	 * pstuOutParam类型为{@link NET_OUT_SET_ALARMMODE}
+	 */
+	NET_EM_SET_ALARMREGION_INFO_ARMMODE(1,
+			"设置布防模式,	此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_ALARMMODE, pstuOutParam类型为NET_OUT_SET_ALARMMODE"),
+	/**
+	 * 设置旁路模式, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为{@link NET_IN_SET_BYPASSMODE},
+	 * pstuOutParam类型为{@link NET_OUT_SET_BYPASSMODE}
+	 */
+	NET_EM_SET_ALARMREGION_INFO_BYPASSMODE(2,
+			"设置旁路模式,	此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_BYPASSMODE, pstuOutParam类型为NET_OUT_SET_BYPASSMODE"),
+	/**
+	 * 设置输出状态, 此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为{@link NET_IN_SET_OUTPUT_STATE},
+	 * pstuOutParam类型为{@link NET_OUT_SET_OUTPUT_STATE}
+	 */
+	NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE(3,
+			"设置输出状态,	此时CLIENT_SetAlarmRegionInfo接口中的pstuInParam类型为NET_IN_SET_OUTPUT_STATE, pstuOutParam类型为NET_OUT_SET_OUTPUT_STATE");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_SET_ALARMREGION_INFO(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_SET_ALARMREGION_INFO enumType : NET_EM_SET_ALARMREGION_INFO.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_SET_ALARMREGION_INFO enumType : NET_EM_SET_ALARMREGION_INFO.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+
+	public static NET_EM_SET_ALARMREGION_INFO getEnum(int value) {
+		for (NET_EM_SET_ALARMREGION_INFO e : NET_EM_SET_ALARMREGION_INFO.values()) {
+			if (e.getValue() == value)
+				return e;
+		}
+		return NET_EM_SET_ALARMREGION_INFO.NET_EM_SET_ALARMREGION_INFO_UNKNOWN;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java
new file mode 100644
index 0000000..704cb2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SHAPE_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 景物形状
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 16:01
+ */
+public enum NET_EM_SHAPE_TYPE {
+    /**
+     * 未知
+     */
+    NET_EM_SHAPE_TYPE_UNKNOWN(-1, "未知"),
+    /**
+     * 折线形
+     */
+    NET_EM_SHAPE_TYPE_MANSARD(0, "折线形"),
+    /**
+     * 扇形
+     */
+    NET_EM_SHAPE_TYPE_SECTOR(1, "扇形");
+
+    private int value;
+    private String note;
+
+    NET_EM_SHAPE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_SHAPE_TYPE enumType : NET_EM_SHAPE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_SHAPE_TYPE enumType : NET_EM_SHAPE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_SHAPE_TYPE getEnum(int value) {
+        for (NET_EM_SHAPE_TYPE e : NET_EM_SHAPE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_SHAPE_TYPE.NET_EM_SHAPE_TYPE_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SIM_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SIM_STATE.java
new file mode 100644
index 0000000..e08f2c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_SIM_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description   sim卡状态 
+* @date 2022/08/31 14:35:19
+*/
+public enum NET_EM_SIM_STATE {
+/**
+未知
+*/
+NET_EM_SIM_UNKNOWN(0,"未知"),
+/**
+在线
+*/
+NET_EM_SIM_ONLINE(1,"在线"),
+/**
+离线
+*/
+NET_EM_SIM_OFFLINE(2,"离线");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_SIM_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_SIM_STATE enumType : NET_EM_SIM_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_SIM_STATE enumType : NET_EM_SIM_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_EM_SIM_STATE getEnum(int value) {
+        for (NET_EM_SIM_STATE e : NET_EM_SIM_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_SIM_STATE.NET_EM_SIM_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_STAFF_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_STAFF_TYPE.java
new file mode 100644
index 0000000..db5a89a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_STAFF_TYPE.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @description  标尺信息
+ * @author 119178
+ * @date 2021/3/16
+ */
+public enum NET_EM_STAFF_TYPE {
+    NET_EM_STAFF_TYPE_ERR(0),
+    /**
+     * "Horizontal" 水平线段
+     */
+    NET_EM_STAFF_TYPE_HORIZONTAL(1), 
+    /**
+     * "Vertical" 垂直线段
+     */
+    NET_EM_STAFF_TYPE_VERTICAL(2), 
+    /**
+     * "Any" 任意线段
+     */
+    NET_EM_STAFF_TYPE_ANY(3), 
+    /**
+     * "Cross" 垂直面交线段
+     */
+    NET_EM_STAFF_TYPE_CROSS(4);                   
+    
+	private int id ;
+
+	private NET_EM_STAFF_TYPE(int id) {
+		this.id = id;
+	}
+
+	public int getId() {
+		return id;
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_TAMPER_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_TAMPER_STATE.java
new file mode 100644
index 0000000..69cf418
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_TAMPER_STATE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description   主机防拆状态 
+* @date 2022/09/01 15:11:24
+*/
+public enum NET_EM_TAMPER_STATE {
+/**
+未知
+*/
+NET_EM_TAMPER_UNKNOWN(-1,"未知"),
+/**
+未报警
+*/
+NET_EM_TAMPER_NOALARM(0,"未报警"),
+/**
+报警中
+*/
+NET_EM_TAMPER_ALARMING(1,"报警中");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_EM_TAMPER_STATE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_EM_TAMPER_STATE enumType : NET_EM_TAMPER_STATE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_EM_TAMPER_STATE enumType : NET_EM_TAMPER_STATE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static NET_EM_TAMPER_STATE getEnum(int value) {
+        for (NET_EM_TAMPER_STATE e : NET_EM_TAMPER_STATE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_TAMPER_STATE.NET_EM_TAMPER_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java
new file mode 100644
index 0000000..c9ec8c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VIDEO_COMPRESSION.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 视频压缩格式
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 22:16
+ */
+public enum NET_EM_VIDEO_COMPRESSION {
+
+    EM_VIDEO_FORMAT_UNKNOWN(-1, "未知"),
+    EM_VIDEO_FORMAT_MPEG4(0, "MPEG4"),
+    EM_VIDEO_FORMAT_MS_MPEG4(1, "MS-MPEG4"),
+    EM_VIDEO_FORMAT_MPEG2(2, "MPEG2"),
+    EM_VIDEO_FORMAT_MPEG1(3, "MPEG1"),
+    EM_VIDEO_FORMAT_H263(4, "H.263"),
+    EM_VIDEO_FORMAT_MJPG(5, "MJPG"),
+    EM_VIDEO_FORMAT_FCC_MPEG4(6, "FCC-MPEG4"),
+    EM_VIDEO_FORMAT_H264(7, "H.264"),
+    EM_VIDEO_FORMAT_H265(8, "H.265"),
+    EM_VIDEO_FORMAT_SVAC(9, "SVAC");
+
+    private final int value;
+    private final String note;
+
+    NET_EM_VIDEO_COMPRESSION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EM_VIDEO_COMPRESSION enumType : NET_EM_VIDEO_COMPRESSION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EM_VIDEO_COMPRESSION enumType : NET_EM_VIDEO_COMPRESSION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EM_VIDEO_COMPRESSION getEnum(int value) {
+        for (NET_EM_VIDEO_COMPRESSION e : NET_EM_VIDEO_COMPRESSION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EM_VIDEO_COMPRESSION.EM_VIDEO_FORMAT_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java
new file mode 100644
index 0000000..b9aa342
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_DATA_TYPE.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 数据类型
+ * @date 2022/10/28 11:06:44
+ */
+public enum NET_EM_VS_DATA_TYPE {
+	/**
+	 * 数据是当前人数的横坐标
+	 */
+	NET_EM_VS_DATA_TYPE_X(0, "数据是当前人数的横坐标");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_VS_DATA_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_VS_DATA_TYPE enumType : NET_EM_VS_DATA_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_VS_DATA_TYPE enumType : NET_EM_VS_DATA_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_TYPE.java
new file mode 100644
index 0000000..5e777a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EM_VS_TYPE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 业务类型
+ * @date 2022/10/28 10:46:07
+ */
+public enum NET_EM_VS_TYPE {
+	/**
+	 * 活跃度分析实时数据,对应 NET_VIDEOSTAT_SUMMARY_STEREO
+	 */
+	NET_EM_VS_TYPE_ACTIVITY_ANALYSE(0, "活跃度分析实时数据,对应 NET_VIDEOSTAT_SUMMARY_STEREO"),
+	/**
+	 * 人群分布图报表实时数据,对应 NET_VIDEOSTAT_CROWD_DISTRI_MAP
+	 */
+	NET_EM_VS_TYPE_CROWD_DISTRI_MAP(1, "人群分布图报表实时数据,对应 NET_VIDEOSTAT_CROWD_DISTRI_MAP"),
+	/**
+	 * 智能停车实时数据,对应 NET_VIDEOSTAT_SUMMARY_INTELLIPARKING
+	 */
+	NET_EM_VS_TYPE_INTELLIG_PARKING(3, "智能停车实时数据,对应 NET_VIDEOSTAT_SUMMARY_INTELLIPARKING"),
+	/**
+	 * 抬头检测周期上报数据, 对应 NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION
+	 */
+	NET_EM_VS_TYPE_HEAD_LIFT_DETECTION(4, "抬头检测周期上报数据, 对应 NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION"),
+	/**
+	 * 贮柜储量检测实时上报数据, 对应 NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION
+	 */
+	NET_EM_VS_TYPE_TANK_CAPACITY_DETECTION(5, "贮柜储量检测实时上报数据, 对应 NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_EM_VS_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_EM_VS_TYPE enumType : NET_EM_VS_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_EM_VS_TYPE enumType : NET_EM_VS_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..a332b9f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_ENUM_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 输入媒体介质
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:05
+ */
+public enum NET_ENUM_INPUT_CHANNEL_MEDIA {
+    /**
+     * 未知
+     */
+    NET_ENUM_INPUT_MEDIA_UNKNOWN(0, "未知"),
+    /**
+     * VGA
+     */
+    NET_ENUM_INPUT_MEDIA_VGA(1, "VGA"),
+    /**
+     * HDMI
+     */
+    NET_ENUM_INPUT_MEDIA_HDMI(2, "HDMI");
+
+    private int value;
+    private String note;
+
+    NET_ENUM_INPUT_CHANNEL_MEDIA(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_ENUM_INPUT_CHANNEL_MEDIA enumType : NET_ENUM_INPUT_CHANNEL_MEDIA.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_ENUM_INPUT_CHANNEL_MEDIA enumType : NET_ENUM_INPUT_CHANNEL_MEDIA.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_ENUM_INPUT_CHANNEL_MEDIA getEnum(int value) {
+        for (NET_ENUM_INPUT_CHANNEL_MEDIA e : NET_ENUM_INPUT_CHANNEL_MEDIA.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_ENUM_INPUT_CHANNEL_MEDIA.NET_ENUM_INPUT_MEDIA_UNKNOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java
new file mode 100644
index 0000000..083f82f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_DEVICE_TYPE.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.enumeration;
+
+public enum NET_EVENT_DEVICE_TYPE {
+    NET_EVENT_DEVICE_TYPE_UNKOWN (0,"未知"),
+    NET_EVENT_DEVICE_TYPE_CARD(1,"卡片");
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_EVENT_DEVICE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EVENT_DEVICE_TYPE enumType : NET_EVENT_DEVICE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EVENT_DEVICE_TYPE enumType : NET_EVENT_DEVICE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EVENT_DEVICE_TYPE getEnum(int value) {
+        for (NET_EVENT_DEVICE_TYPE e : NET_EVENT_DEVICE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EVENT_DEVICE_TYPE.NET_EVENT_DEVICE_TYPE_UNKOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java
new file mode 100644
index 0000000..d775f44
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_OPERATE_TYPE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 操作类型枚举
+ * @date 2022/7/19
+ */
+public enum NET_EVENT_OPERATE_TYPE {
+        NET_EVENT_OPERATE_TYPE_UNKOWN (0, "未知"),
+        NET_EVENT_OPERATE_TYPE_ADD(1,"增加"),
+        NET_EVENT_OPERATE_TYPE_DELETE(2,"删除"),
+        NET_EVENT_OPERATE_TYPE_MODIFY(3,"修改");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_EVENT_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EVENT_OPERATE_TYPE enumType : NET_EVENT_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EVENT_OPERATE_TYPE enumType : NET_EVENT_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EVENT_OPERATE_TYPE getEnum(int value) {
+        for (NET_EVENT_OPERATE_TYPE e : NET_EVENT_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EVENT_OPERATE_TYPE.NET_EVENT_OPERATE_TYPE_UNKOWN;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_USER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_USER_TYPE.java
new file mode 100644
index 0000000..3bf6bee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_EVENT_USER_TYPE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 用户类型枚举
+ * @date 2022/7/19
+ */
+public enum NET_EVENT_USER_TYPE {
+
+    NET_EVENT_USER_TYPE_UNKOWN (0, "未知"),
+     NET_EVENT_USER_TYPE_KEYPAD(1,"键盘");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_EVENT_USER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_EVENT_USER_TYPE enumType : NET_EVENT_USER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_EVENT_USER_TYPE enumType : NET_EVENT_USER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_EVENT_USER_TYPE getEnum(int value) {
+        for (NET_EVENT_USER_TYPE e : NET_EVENT_USER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_EVENT_USER_TYPE.NET_EVENT_USER_TYPE_UNKOWN;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java
new file mode 100644
index 0000000..15024dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_FLOWSTAT_DIRECTION.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 车辆行驶方向
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public enum NET_FLOWSTAT_DIRECTION {
+    /**
+     * 兼容之前
+     */
+    DRIVING_DIR_UNKNOW(0,"兼容之前"),
+    /**
+     * 上行,即车辆离设备部署点越来越近
+     */
+    DRIVING_DIR_APPROACH(1,"上行,即车辆离设备部署点越来越近"),
+    /**
+     * 下行,即车辆离设备部署点越来越远
+     */
+    DRIVING_DIR_LEAVE(2,"下行,即车辆离设备部署点越来越远");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_FLOWSTAT_DIRECTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_FLOWSTAT_DIRECTION enumType : NET_FLOWSTAT_DIRECTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_FLOWSTAT_DIRECTION enumType : NET_FLOWSTAT_DIRECTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_FLOWSTAT_DIRECTION getEnum(int value) {
+        for (NET_FLOWSTAT_DIRECTION e : NET_FLOWSTAT_DIRECTION.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_FLOWSTAT_DIRECTION.DRIVING_DIR_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java
new file mode 100644
index 0000000..e844fb3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_MONITORWALL_OPERATE_TYPE.java
@@ -0,0 +1,115 @@
+package com.netsdk.lib.enumeration;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.*;
+
+/**
+ * 电视墙操作类型
+ * 对应接口 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:11
+ */
+public enum NET_MONITORWALL_OPERATE_TYPE {
+
+    /**
+     * 添加电视墙, 对应 NET_IN_MONITORWALL_ADD 和 NET_OUT_MONITORWALL_ADD
+     */
+    NET_MONITORWALL_OPERATE_ADD(0, "添加电视墙"),
+    /**
+     * 预案轮巡控制, 对应 NET_IN_CTRL_COLLECTIONTOUR 和 NET_OUT_CTRL_COLLECTIONTOUR
+     */
+    NET_MONITORWALL_OPERATE_CTRL_TOUR(1, "预案轮巡控制"),
+    /**
+     * 获取矩阵当前状态, 对应 NET_IN_MONITORWALL_GET_STATUS 和 NET_OUT_MONITORWALL_GET_STATUS
+     */
+    NET_MONITORWALL_OPERATE_GET_STATUS(2, "获取矩阵当前状态"),
+    /**
+     * 设置预案时间表, 对应
+     * {@link NET_IN_MONITORWALL_SET_COLL_SCHD} 和 {@link NET_OUT_MONITORWALL_SET_COLL_SCHD}
+     */
+    NET_MONITORWALL_OPERATE_SET_COLL_SCHD(3, "设置预案时间表"),
+    /**
+     * 获取预案时间表, 对应
+     * {@link NET_IN_MONITORWALL_GET_COLL_SCHD} 和 {@link NET_OUT_MONITORWALL_GET_COLL_SCHD}
+     */
+    NET_MONITORWALL_OPERATE_GET_COLL_SCHD(4, "获取预案时间表"),
+    /**
+     * 删除电视墙, 对应 NET_IN_MONITORWALL_REMOVE 和 NET_OUT_MONITORWALL_REMOVE
+     */
+    NET_MONITORWALL_OPERATE_REMOVE(5, "删除电视墙"),
+    /**
+     * 设置使能, 对应
+     * {@link NET_IN_MONITORWALL_SET_ENABLE} 和 {@link NET_OUT_MONITORWALL_SET_ENABLE}
+     */
+    NET_MONITORWALL_OPERATE_SET_ENABLE(6, "设置使能"),
+    /**
+     * 获取使能, 对应
+     * {@link NET_IN_MONITORWALL_GET_ENABLE} 和 {@link NET_OUT_MONITORWALL_GET_ENABLE}
+     */
+    NET_MONITORWALL_OPERATE_GET_ENABLE(7, "获取使能"),
+    /**
+     * 电视墙是否存在, 对应 NET_IN_MONITORWALL_NAME_EXIST 和 NET_OUT_MONITORWALL_NAME_EXIST
+     */
+    NET_MONITORWALL_OPERATE_NAME_EXIST(8, "电视墙是否存在"),
+    /**
+     * 修改电视墙名称, 对应 NET_IN_MONITORWALL_RENAME  和 NET_OUT_MONITORWALL_RENAME
+     */
+    NET_MONITORWALL_OPERATE_RENAME(9, "修改电视墙名称"),
+    /**
+     * 更新已上墙的视频源URL, 对应 NET_IN_MONITORWALL_UPDATE_SOURCE_URL 和 NET_OUT_MONITORWALL_UPDATE_SOURCE_URL
+     */
+    NET_MONITORWALL_OPERATE_UPDATE_SOURCE_URL(10, "更新已上墙的视频源URL"),
+    /**
+     * 获取电视墙锁定状态, 对应 NET_IN_MONITORWALL_GET_LOCK_STATUS  和 NET_OUT_MONITORWALL_GET_LOCK_STATUS
+     */
+    NET_MONITORWALL_OPERATE_GET_LOCK_STATUS(11, "获取电视墙锁定状态"),
+    /**
+     * 锁定电视墙(自由开窗的窗口不能再移动,防止用户误操作), 对应 NET_IN_MONITORWALL_LOCK  和 NET_OUT_MONITORWAL L_LOCK
+     */
+    NET_MONITORWALL_OPERATE_LOCK(12, "锁定电视墙");
+
+    private int value;
+    private String note;
+
+    NET_MONITORWALL_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_MONITORWALL_OPERATE_TYPE enumType : NET_MONITORWALL_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_MONITORWALL_OPERATE_TYPE enumType : NET_MONITORWALL_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_MONITORWALL_OPERATE_TYPE getEnum(int value) {
+        for (NET_MONITORWALL_OPERATE_TYPE e : NET_MONITORWALL_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_MONITORWALL_OPERATE_TYPE.NET_MONITORWALL_OPERATE_GET_STATUS;
+    }
+}
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_NOTIFY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_NOTIFY_TYPE.java
new file mode 100644
index 0000000..182196f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_NOTIFY_TYPE.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description 通知类型
+ * @date 2023/03/15 21:15:00
+ */
+public enum NET_NOTIFY_TYPE {
+	/**
+	 * 未知
+	 */
+	NET_NOTIFY_TYPE_UNKNOWN(0, "未知"),
+	/**
+	 * 短信
+	 */
+	NET_NOTIFY_TYPE_SMS(1, "短信"),
+	/**
+	 * 电话
+	 */
+	NET_NOTIFY_TYPE_CALL(2, "电话"),
+	/**
+	 * 短信&电话
+	 */
+	NET_NOTIFY_TYPE_ALL(3, "短信&电话");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_NOTIFY_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_NOTIFY_TYPE enumType : NET_NOTIFY_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_NOTIFY_TYPE enumType : NET_NOTIFY_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java
new file mode 100644
index 0000000..8b808a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_ALARMCONTION.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.enumeration;
+/** 
+* @author 251823
+* @description  热成像测温点报警条件 
+* @date 2022/06/07 14:08:52
+*/
+public enum NET_RADIOMETRY_ALARMCONTION {
+
+    /**
+     * 未知
+     */
+    NET_RADIOMETRY_ALARMCONTION_UNKNOWN(0, "未知"),
+    /**
+     * 小于
+     */
+    NET_RADIOMETRY_ALARMCONTION_BELOW(1, "小于"),
+    /**
+     * 等于
+     */
+    NET_RADIOMETRY_ALARMCONTION_MATCH(2, "等于"),
+    /**
+     * 大于
+     */
+    NET_RADIOMETRY_ALARMCONTION_ABOVE(3, "大于");
+
+    private int value;
+    private String note;
+
+    NET_RADIOMETRY_ALARMCONTION(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_RADIOMETRY_ALARMCONTION enumType : NET_RADIOMETRY_ALARMCONTION.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_RADIOMETRY_ALARMCONTION enumType : NET_RADIOMETRY_ALARMCONTION.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java
new file mode 100644
index 0000000..b1769cf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_RADIOMETRY_RESULT.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 热成像测温点报警结果值类型
+ */
+public enum NET_RADIOMETRY_RESULT {
+
+    /**
+     * 未知
+     */
+    NET_RADIOMETRY_RESULT_UNKNOWN(0, "未知"),
+    /**
+     * 具体值
+     */
+    NET_RADIOMETRY_RESULT_VAL(1, "具体值"),
+    /**
+     * 最大
+     */
+    NET_RADIOMETRY_RESULT_MAX(2, "最大"),
+    /**
+     * 最小
+     */
+    NET_RADIOMETRY_RESULT_MIN(3, "最小"),
+    /**
+     * 平均
+     */
+    NET_RADIOMETRY_RESULT_AVR(4, "平均"),
+    /**
+     * 标准
+     */
+    NET_RADIOMETRY_RESULT_STD(5, "标准"),
+    /**
+     * 中间
+     */
+    NET_RADIOMETRY_RESULT_MID(6, "中间"),
+    /**
+     * ISO
+     */
+    NET_RADIOMETRY_RESULT_ISO(7, "ISO"),
+    /**
+     * 温差
+     */
+    NET_RADIOMETRY_RESULT_DIFF(8, "温差"),
+    /**
+     * 斜率
+     */
+    NET_RADIOMETRY_RESULT_SLOPE(9, "斜率");
+
+    private int value;
+    private String note;
+
+    NET_RADIOMETRY_RESULT(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_RADIOMETRY_RESULT enumType : NET_RADIOMETRY_RESULT.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_RADIOMETRY_RESULT enumType : NET_RADIOMETRY_RESULT.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SENSE_METHOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SENSE_METHOD.java
new file mode 100644
index 0000000..5af1b40
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SENSE_METHOD.java
@@ -0,0 +1,274 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  传感器感应方式枚举类型 
+* @date 2022/08/31 14:44:16
+*/
+public enum NET_SENSE_METHOD {
+/**
+未知类型
+*/
+NET_SENSE_UNKNOWN(-1,"未知类型"),
+/**
+门磁
+*/
+NET_SENSE_DOOR(0,"门磁"),
+/**
+被动红外
+*/
+NET_SENSE_PASSIVEINFRA(1,"被动红外"),
+/**
+气感
+*/
+NET_SENSE_GAS(2,"气感"),
+/**
+烟感
+*/
+NET_SENSE_SMOKING(3,"烟感"),
+/**
+水感
+*/
+NET_SENSE_WATER(4,"水感"),
+/**
+主动红外
+*/
+NET_SENSE_ACTIVEFRA(5,"主动红外"),
+/**
+玻璃破碎
+*/
+NET_SENSE_GLASS(6,"玻璃破碎"),
+/**
+紧急开关
+*/
+NET_SENSE_EMERGENCYSWITCH(7,"紧急开关"),
+/**
+震动
+*/
+NET_SENSE_SHOCK(8,"震动"),
+/**
+双鉴(红外+微波)
+*/
+NET_SENSE_DOUBLEMETHOD(9,"双鉴(红外+微波)"),
+/**
+三技术
+*/
+NET_SENSE_THREEMETHOD(10,"三技术"),
+/**
+温度
+*/
+NET_SENSE_TEMP(11,"温度"),
+/**
+湿度
+*/
+NET_SENSE_HUMIDITY(12,"湿度"),
+/**
+风速
+*/
+NET_SENSE_WIND(13,"风速"),
+/**
+呼叫按钮
+*/
+NET_SENSE_CALLBUTTON(14,"呼叫按钮"),
+/**
+气体压力
+*/
+NET_SENSE_GASPRESSURE(15,"气体压力"),
+/**
+燃气浓度
+*/
+NET_SENSE_GASCONCENTRATION(16,"燃气浓度"),
+/**
+气体流量
+*/
+NET_SENSE_GASFLOW(17,"气体流量"),
+/**
+其他
+*/
+NET_SENSE_OTHER(18,"其他"),
+/**
+油量检测,汽油、柴油等车辆用油检测
+*/
+NET_SENSE_OIL(19,"油量检测,汽油、柴油等车辆用油检测"),
+/**
+里程数检测
+*/
+NET_SENSE_MILEAGE(20,"里程数检测"),
+/**
+紧急按钮
+*/
+NET_SENSE_URGENCYBUTTON(21,"紧急按钮"),
+/**
+盗窃
+*/
+NET_SENSE_STEAL(22,"盗窃"),
+/**
+周界
+*/
+NET_SENSE_PERIMETER(23,"周界"),
+/**
+防拆
+*/
+NET_SENSE_PREVENTREMOVE(24,"防拆"),
+/**
+门铃
+*/
+NET_SENSE_DOORBELL(25,"门铃"),
+/**
+交流电压传感器
+*/
+NET_SENSE_ALTERVOLT(26,"交流电压传感器"),
+/**
+直流电压传感器
+*/
+NET_SENSE_DIRECTVOLT(27,"直流电压传感器"),
+/**
+交流电流传感器
+*/
+NET_SENSE_ALTERCUR(28,"交流电流传感器"),
+/**
+直流电流传感器
+*/
+NET_SENSE_DIRECTCUR(29,"直流电流传感器"),
+/**
+高新兴通用模拟量	4~20mA或0~5V
+*/
+NET_SENSE_RSUGENERAL(30,"高新兴通用模拟量	4~20mA或0~5V"),
+/**
+高新兴门禁感应
+*/
+NET_SENSE_RSUDOOR(31,"高新兴门禁感应"),
+/**
+高新兴断电感应
+*/
+NET_SENSE_RSUPOWEROFF(32,"高新兴断电感应"),
+/**
+1500温度传感器
+*/
+NET_SENSE_TEMP1500(33,"1500温度传感器"),
+/**
+DS18B20温度传感器
+*/
+NET_SENSE_TEMPDS18B20(34,"DS18B20温度传感器"),
+/**
+1500湿度传感器
+*/
+NET_SENSE_HUMIDITY1500(35,"1500湿度传感器"),
+/**
+红外报警
+*/
+NET_SENSE_INFRARED(36,"红外报警"),
+/**
+火警
+*/
+NET_SENSE_FIREALARM(37,"火警"),
+/**
+CO2浓度检测,典型值:0~5000ppm
+*/
+NET_SENSE_CO2(38,"CO2浓度检测,典型值:0~5000ppm"),
+/**
+噪音检测,典型值:30~130dB
+*/
+NET_SNESE_SOUND(39,"噪音检测,典型值:30~130dB"),
+/**
+PM2.5检测,典型值:0~1000ug/m3
+*/
+NET_SENSE_PM25(40,"PM2.5检测,典型值:0~1000ug/m3"),
+/**
+SF6浓度检测,典型值:0~3000ppm
+*/
+NET_SENSE_SF6(41,"SF6浓度检测,典型值:0~3000ppm"),
+/**
+臭氧浓度检测,典型值:0~100ppm
+*/
+NET_SENSE_O3(42,"臭氧浓度检测,典型值:0~100ppm"),
+/**
+环境光照检测,典型值:0~20000Lux
+*/
+NET_SENSE_AMBIENTLIGHT(43,"环境光照检测,典型值:0~20000Lux"),
+/**
+签入按钮
+*/
+NET_SENSE_SIGNINBUTTON(44,"签入按钮"),
+/**
+液位
+*/
+NET_SENSE_LIQUIDLEVEL(45,"液位"),
+/**
+测距
+*/
+NET_SENSE_DISTANCE(46,"测距"),
+/**
+水流量
+*/
+NET_SENSE_WATERFLOW(47,"水流量"),
+/**
+按键传感器
+*/
+NET_SENSE_KEYPRESSS(48,"按键传感器"),
+/**
+SM7820B温湿度传感器
+*/
+NET_SENSE_TEMP_AND_HUMI_SM7820B(49,"SM7820B温湿度传感器"),
+/**
+DSU666单相电子式电能表D
+*/
+NET_SENSE_WATT_HUR_DDSU666(50,"DSU666单相电子式电能表D"),
+/**
+幕帘传感器
+*/
+NET_SENSE_CURTAIN_SENSOR(51,"幕帘传感器"),
+/**
+机壳防拆
+*/
+NET_SENSE_CASEPREVENTREMOVE(52,"机壳防拆"),
+/**
+枚举类型总数
+*/
+NET_SENSE_NU(53,"枚举类型总数");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_SENSE_METHOD(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_SENSE_METHOD enumType : NET_SENSE_METHOD.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_SENSE_METHOD enumType : NET_SENSE_METHOD.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -2;
+    }
+
+public static NET_SENSE_METHOD getEnum(int value) {
+        for (NET_SENSE_METHOD e : NET_SENSE_METHOD.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_SENSE_METHOD.NET_SENSE_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java
new file mode 100644
index 0000000..f1e118e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_SPLIT_OPERATE_TYPE.java
@@ -0,0 +1,169 @@
+package com.netsdk.lib.enumeration;
+
+
+import com.netsdk.lib.structure.NET_IN_SPLIT_SET_HIGHLIGHT;
+import com.netsdk.lib.structure.NET_OUT_SPLIT_SET_HIGHLIGHT;
+
+/**
+ * @author 260611
+ * @description 视频分割操作类型
+ * @date 2022/06/22 09:56:21
+ */
+public enum NET_SPLIT_OPERATE_TYPE {
+    /**
+     * 设置背景图片, 对应 NET_IN_SPLIT_SET_BACKGROUND 和 NET_OUT_SPLIT_SET_BACKBROUND
+     */
+    NET_SPLIT_OPERATE_SET_BACKGROUND(0, "设置背景图片, 对应 NET_IN_SPLIT_SET_BACKGROUND 和 NET_OUT_SPLIT_SET_BACKBROUND"),
+    /**
+     * 获取背景图片, 对应 NET_IN_SPLIT_GET_BACKGROUND 和 NET_OUT_SPLIT_GET_BACKGROUND
+     */
+    NET_SPLIT_OPERATE_GET_BACKGROUND(1, "获取背景图片, 对应 NET_IN_SPLIT_GET_BACKGROUND 和 NET_OUT_SPLIT_GET_BACKGROUND"),
+    /**
+     * 设置预拉流源, 对应 NET_IN_SPLIT_SET_PREPULLSRC 和 NET_OUT_SPLIT_SET_PREPULLSRC
+     */
+    NET_SPLIT_OPERATE_SET_PREPULLSRC(2, "设置预拉流源, 对应 NET_IN_SPLIT_SET_PREPULLSRC 和 NET_OUT_SPLIT_SET_PREPULLSRC"),
+    /**
+     * 设置源边框高亮使能开关, 对应 {@link NET_IN_SPLIT_SET_HIGHLIGHT} 和 {@link NET_OUT_SPLIT_SET_HIGHLIGHT}
+     */
+    NET_SPLIT_OPERATE_SET_HIGHLIGHT(3, "设置源边框高亮使能开关, 对应 NET_IN_SPLIT_SET_HIGHLIGHT 和 NET_OUT_SPLIT_SET_HIGHLIGHT"),
+    /**
+     * 调整窗口Z序, 对应 NET_IN_SPLIT_SET_ZORDER 和 NET_OUT_SPLIT_SET_ZORDER
+     */
+    NET_SPLIT_OPERATE_SET_ZORDER(4, "调整窗口Z序, 对应 NET_IN_SPLIT_SET_ZORDER 和 NET_OUT_SPLIT_SET_ZORDER"),
+    /**
+     * 窗口轮巡控制, 对应 NET_IN_SPLIT_SET_TOUR 和 NET_OUT_SPLIT_SET_TOUR
+     */
+    NET_SPLIT_OPERATE_SET_TOUR(5, "窗口轮巡控制, 对应 NET_IN_SPLIT_SET_TOUR 和 NET_OUT_SPLIT_SET_TOUR"),
+    /**
+     * 获取窗口轮巡状态, 对应 NET_IN_SPLIT_GET_TOUR_STATUS 和 NET_OUT_SPLIT_GET_TOUR_STATUS
+     */
+    NET_SPLIT_OPERATE_GET_TOUR_STATUS(6, "获取窗口轮巡状态, 对应 NET_IN_SPLIT_GET_TOUR_STATUS 和 NET_OUT_SPLIT_GET_TOUR_STATUS"),
+    /**
+     * 获取屏内窗口信息, 对应 NET_IN_SPLIT_GET_SCENE 和 NET_OUT_SPLIT_GET_SCENE
+     */
+    NET_SPLIT_OPERATE_GET_SCENE(7, "获取屏内窗口信息, 对应 NET_IN_SPLIT_GET_SCENE 和 NET_OUT_SPLIT_GET_SCENE"),
+    /**
+     * 批量开窗, 对应 NET_IN_SPLIT_OPEN_WINDOWS 和 NET_OUT_SPLIT_OPEN_WINDOWS
+     */
+    NET_SPLIT_OPERATE_OPEN_WINDOWS(8, "批量开窗, 对应 NET_IN_SPLIT_OPEN_WINDOWS 和 NET_OUT_SPLIT_OPEN_WINDOWS"),
+    /**
+     * 设置工作模式, 对应 NET_IN_SPLIT_SET_WORK_MODE 和 NET_OUT_SPLIT_SET_WORK_MODE
+     */
+    NET_SPLIT_OPERATE_SET_WORK_MODE(9, "设置工作模式, 对应 NET_IN_SPLIT_SET_WORK_MODE 和 NET_OUT_SPLIT_SET_WORK_MODE"),
+    /**
+     * 获取播放器实例,对应 NET_IN_SPLIT_GET_PLAYER 和 NET_OUT_SPLIT_GET_PLAYER
+     */
+    NET_SPLIT_OPERATE_GET_PLAYER(10, "获取播放器实例,对应 NET_IN_SPLIT_GET_PLAYER 和 NET_OUT_SPLIT_GET_PLAYER"),
+    /**
+     * 设置窗口工作模式,对应 NET_IN_WM_SET_WORK_MODE 和 NET_OUT_WM_SET_WORK_MODE
+     */
+    NET_WM_OPERATE_SET_WORK_MODE(11, "设置窗口工作模式,对应 NET_IN_WM_SET_WORK_MODE 和 NET_OUT_WM_SET_WORK_MODE"),
+    /**
+     * 获取窗口工作模式,对应 NET_IN_WM_GET_WORK_MODE 和 NET_OUT_WM_GET_WORK_MODE
+     */
+    NET_WM_OPERATE_GET_WORK_MODE(12, "获取窗口工作模式,对应 NET_IN_WM_GET_WORK_MODE 和 NET_OUT_WM_GET_WORK_MODE"),
+    /**
+     * 批量关窗, 对应 NET_IN_SPLIT_CLOSE_WINDOWS 和 NET_OUT_SPLIT_CLOSE_WINDOWS
+     */
+    NET_SPLIT_OPERATE_CLOSE_WINDOWS(13, "批量关窗, 对应 NET_IN_SPLIT_CLOSE_WINDOWS 和 NET_OUT_SPLIT_CLOSE_WINDOWS"),
+    /**
+     * 设置输出屏的鱼眼矫正规则 , 对应NET_IN_WM_SET_FISH_EYE_PARAM 和 NET_OUT_WM_SET_FISH_EYE_PARAM
+     */
+    NET_WM_OPERATE_SET_FISH_EYE_PARAM(14, "设置输出屏的鱼眼矫正规则 , 对应NET_IN_WM_SET_FISH_EYE_PARAM 和 NET_OUT_WM_SET_FISH_EYE_PARAM"),
+    /**
+     * 设置窗口走廊模式,对应NET_IN_WM_SET_CORRIDOR_MODE和NET_OUT_WM_SET_CORRIDOR_MODE
+     */
+    NET_WM_OPERATE_SET_CORRIDOR_MODE(15, "设置窗口走廊模式,对应NET_IN_WM_SET_CORRIDOR_MODE和NET_OUT_WM_SET_CORRIDOR_MODE"),
+    /**
+     * 获取窗口走廊模式,对应NET_IN_WM_GET_CORRIDOR_MODE和NET_OUT_WM_GET_CORRIDOR_MODE
+     */
+    NET_WM_OPERATE_GET_CORRIDOR_MODE(16, "获取窗口走廊模式,对应NET_IN_WM_GET_CORRIDOR_MODE和NET_OUT_WM_GET_CORRIDOR_MODE"),
+    /**
+     * 设置显示音量柱使能模式,对应NET_IN_WM_SET_VOLUME_COLUMN和NET_OUT_WM_SET_VOLUME_COLUMN
+     */
+    NET_WM_OPERATE_SET_VOLUME_COLUMN(17, "设置显示音量柱使能模式,对应NET_IN_WM_SET_VOLUME_COLUMN和NET_OUT_WM_SET_VOLUME_COLUMN"),
+    /**
+     * 获取显示音量柱使能模式,对应NET_IN_WM_GET_VOLUME_COLUMN和NET_OUT_WM_GET_VOLUME_COLUMN
+     */
+    NET_WM_OPERATE_GET_VOLUME_COLUMN(18, "获取显示音量柱使能模式,对应NET_IN_WM_GET_VOLUME_COLUMN和NET_OUT_WM_GET_VOLUME_COLUMN"),
+    /**
+     * 设置窗口背景图片,对应NET_IN_WM_SET_BACKGROUND和NET_OUT_WM_SET_BACKGROUND
+     */
+    NET_WM_OPERATE_SET_BACKGROUND(19, "设置窗口背景图片,对应NET_IN_WM_SET_BACKGROUND和NET_OUT_WM_SET_BACKGROUND"),
+    /**
+     * 获取窗口背景图片,对应NET_IN_WM_GET_BACKGROUND和NET_OUT_WM_GET_BACKGROUND
+     */
+    NET_WM_OPERATE_GET_BACKGROUND(20, "获取窗口背景图片,对应NET_IN_WM_GET_BACKGROUND和NET_OUT_WM_GET_BACKGROUND"),
+    /**
+     * 设置图像画面旋转模式,对应NET_IN_WM_SET_ROTATE_MODE和NET_OUT_WM_SET_ROTATE_MODE
+     */
+    NET_WM_OPERATE_SET_ROTATE_MODE(21, "设置图像画面旋转模式,对应NET_IN_WM_SET_ROTATE_MODE和NET_OUT_WM_SET_ROTATE_MODE"),
+    /**
+     * 设置视频源显示区域的模式,对应NET_IN_WM_SET_MEETING_MODE和NET_OUT_WM_SET_MEETING_MODE
+     */
+    NET_WM_OPERATE_SET_MEETING_MODE(22, "设置视频源显示区域的模式,对应NET_IN_WM_SET_MEETING_MODE和NET_OUT_WM_SET_MEETING_MODE"),
+    /**
+     * 设置锁定窗口当前位置,对应NET_IN_WM_SET_LOCK_POSITION和NET_OUT_WM_SET_LOCK_POSITION
+     */
+    NET_WM_OPERATE_SET_LOCK_POSITION(23, "设置锁定窗口当前位置,对应NET_IN_WM_SET_LOCK_POSITION和NET_OUT_WM_SET_LOCK_POSITION"),
+    /**
+     * 修改预案控制ID,对应NET_IN_WM_SET_COLLECTION_CTRL_ID和NET_OUT_WM_SET_COLLECTION_CTRL_ID
+     */
+    NET_WM_OPERATE_SET_COLLECTION_CTRL_ID(24, "修改预案控制ID,对应NET_IN_WM_SET_COLLECTION_CTRL_ID和NET_OUT_WM_SET_COLLECTION_CTRL_ID"),
+    /**
+     * 设置信号源属性,对应NET_IN_SPLIT_SET_SOURCE_ATTRIBUTE和NET_OUT_SPLIT_SET_SOURCE_ATTRIBUTE
+     */
+    NET_SPLIT_OPERATES_SET_SOURCE_ATTRIBUTE(25, "设置信号源属性,对应NET_IN_SPLIT_SET_SOURCE_ATTRIBUTE和NET_OUT_SPLIT_SET_SOURCE_ATTRIBUTE"),
+    /**
+     * 设置窗口粘附状态,对应NET_IN_SPLIT_SET_DOCK_CONTROL和NET_OUT_SPLIT_SET_DOCK_CONTROL
+     */
+    NET_SPLIT_OPERATES_SET_DOCK_CONTROL(26, "设置窗口粘附状态,对应NET_IN_SPLIT_SET_DOCK_CONTROL和NET_OUT_SPLIT_SET_DOCK_CONTROL"),
+    /**
+     * 设置窗口分割模式,对应NET_IN_WM_SET_MODE和NET_OUT_WM_SET_MODE
+     */
+    NET_WM_OPERATE_SET_MODE(27, "设置窗口分割模式,对应NET_IN_WM_SET_MODE和NET_OUT_WM_SET_MODE");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_SPLIT_OPERATE_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_SPLIT_OPERATE_TYPE enumType : NET_SPLIT_OPERATE_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_SPLIT_OPERATE_TYPE enumType : NET_SPLIT_OPERATE_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_SPLIT_OPERATE_TYPE getEnum(int value) {
+        for (NET_SPLIT_OPERATE_TYPE e : NET_SPLIT_OPERATE_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_SPLIT_OPERATE_TYPE.NET_SPLIT_OPERATE_SET_BACKGROUND;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_THREE_STATUS_BOOL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_THREE_STATUS_BOOL.java
new file mode 100644
index 0000000..35f0149
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_THREE_STATUS_BOOL.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author 291189
+ * @description 三态布尔类型
+ * @origin autoTool
+ * @date 2023/09/06 16:00:01
+ */
+public enum NET_THREE_STATUS_BOOL {
+    /**
+     *
+     */
+    BOOL_STATUS_FALSE(0, "失败"),
+    /**
+     *
+     */
+    BOOL_STATUS_TRUE(1, "成功"),
+    /**
+     * 未知
+     */
+    BOOL_STATUS_UNKNOWN(2, "未知");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    NET_THREE_STATUS_BOOL(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_THREE_STATUS_BOOL enumType : NET_THREE_STATUS_BOOL.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_THREE_STATUS_BOOL enumType : NET_THREE_STATUS_BOOL.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_THREE_STATUS_BOOL getEnum(int value) {
+        for (NET_THREE_STATUS_BOOL e : NET_THREE_STATUS_BOOL.values()) {
+            if (e.getValue() == value) {
+                return e;
+            }
+        }
+        return NET_THREE_STATUS_BOOL.BOOL_STATUS_FALSE;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java
new file mode 100644
index 0000000..1475593
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_JAM_STATUS.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 道路拥挤状况
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public enum NET_TRAFFIC_JAM_STATUS {
+    /**
+     * 未知
+     */
+    JAM_STATUS_UNKNOW(0,"未知"),
+    /**
+     * 通畅
+     */
+    JAM_STATUS_CLEAR(1,"通畅"),
+    /**
+     * 拥堵
+     */
+    JAM_STATUS_JAMMED(2,"拥堵"),
+    /**
+     * 拥堵
+     */
+    JAM_STATUS_SLOWED(3,"拥堵");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_TRAFFIC_JAM_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_TRAFFIC_JAM_STATUS enumType : NET_TRAFFIC_JAM_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_TRAFFIC_JAM_STATUS enumType : NET_TRAFFIC_JAM_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_TRAFFIC_JAM_STATUS getEnum(int value) {
+        for (NET_TRAFFIC_JAM_STATUS e : NET_TRAFFIC_JAM_STATUS.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_TRAFFIC_JAM_STATUS.JAM_STATUS_UNKNOW;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java
new file mode 100644
index 0000000..69e328e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_LIGHT_STATUS.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 信号灯指示状态
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/29 17:02
+ */
+public enum NET_TRAFFIC_LIGHT_STATUS {
+
+    /**
+     * 未知
+     */
+    LIGHT_STATUS_UNKNOWN(0, "未知"),
+    /**
+     * 红灯
+     */
+    LIGHT_STATUS_RED(1, "红灯"),
+    /**
+     * 绿灯
+     */
+    LIGHT_STATUS_GREEN(2, "绿灯"),
+    /**
+     * 黄灯
+     */
+    LIGHT_STATUS_YELLOW(3, "黄灯");
+
+    private int value;
+    private String note;
+
+    NET_TRAFFIC_LIGHT_STATUS(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_TRAFFIC_LIGHT_STATUS enumType : NET_TRAFFIC_LIGHT_STATUS.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_TRAFFIC_LIGHT_STATUS enumType : NET_TRAFFIC_LIGHT_STATUS.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java
new file mode 100644
index 0000000..0460e11
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_TRAFFIC_ROAD_RANK.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.enumeration;
+
+
+/**
+ * @author : 260611
+ * @description : 道路等级
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public enum NET_TRAFFIC_ROAD_RANK {
+    /**
+     * 
+     */
+    ROAD_RANK_UNKNOWN(0,""),
+    /**
+     * 快速路
+     */
+    ROAD_RANK_RAPID(1,"快速路"),
+    /**
+     * 主干路
+     */
+    ROAD_RANK_TRUNK(2,"主干路"),
+    /**
+     * 次干路
+     */
+    ROAD_RANK_SUBTRUNK(3,"次干路"),
+    /**
+     * 支路
+     */
+    ROAD_RANK_BRANCH(4,"支路");
+
+    private int value;
+
+    private String note;
+
+    public String getNote() {
+             return note;
+         }
+
+    public int getValue() {
+             return value;
+         }
+
+    NET_TRAFFIC_ROAD_RANK(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (NET_TRAFFIC_ROAD_RANK enumType : NET_TRAFFIC_ROAD_RANK.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (NET_TRAFFIC_ROAD_RANK enumType : NET_TRAFFIC_ROAD_RANK.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static NET_TRAFFIC_ROAD_RANK getEnum(int value) {
+        for (NET_TRAFFIC_ROAD_RANK e : NET_TRAFFIC_ROAD_RANK.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_TRAFFIC_ROAD_RANK.ROAD_RANK_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_VOLUME_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_VOLUME_TYPE.java
new file mode 100644
index 0000000..bf4550b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_VOLUME_TYPE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.enumeration;
+/**
+ * @author 251823
+ * @description 卷类型枚举
+ * @date 2022/05/30
+ */
+public class NET_VOLUME_TYPE {
+    public static final int VOLUME_TYPE_ALL = 0;    //所有卷
+    public static final int VOLUME_TYPE_PHYSICAL = 1;    //物理卷
+    public static final int VOLUME_TYPE_RAID = 2;    //Raid卷
+    public static final int VOLUME_TYPE_VOLUME_GROUP = 3;    //VG虚拟卷组
+    public static final int VOLUME_TYPE_ISCSI = 4;    //iSCSI卷
+    public static final int VOLUME_TYPE_INVIDUAL_PHY = 5;    //独立物理卷(这个物理盘,没有加入到, RAID,虚拟卷组等等组中)
+    public static final int VOLUME_TYPE_GLOBAL_SPARE = 6;    //全局热备卷
+    public static final int VOLUME_TYPE_NAS = 7;    //NAS盘(包括FTP, SAMBA, NFS)
+    public static final int VOLUME_TYPE_INVIDUAL_RAID = 8;    //独立RAID卷(指没有加入到,虚拟卷组等组中)
+    public static final int VOLUME_TYPE_MAX = 9;    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java
new file mode 100644
index 0000000..3d859fc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESSDEV_LOWPOWER_TYPE.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.enumeration;
+
+
+/** 
+* @author 291189
+* @description  无线设备类型 
+* @date 2022/07/19 10:21:10
+*/
+public enum NET_WIRELESSDEV_LOWPOWER_TYPE {
+/**
+未知设备
+*/
+NET_WIRELESSDEV_UNKNOWN(0,"未知设备"),
+/**
+无线遥控器
+*/
+NET_WIRELESSDEV_CONTROL(1,"无线遥控器"),
+/**
+无线防区
+*/
+NET_WIRELESSDEV_DEFENCE(2,"无线防区"),
+/**
+无线键盘
+*/
+NET_WIRELESSDEV_KEYBOARD(3,"无线键盘"),
+/**
+无线门磁    此字段协议上已废弃
+*/
+NET_WIRELESSDEV_MAGNETOMER(4,"无线门磁    此字段协议上已废弃"),
+/**
+无线警号
+*/
+NET_WIRELESSDEV_ALARMBELL(5,"无线警号"),
+/**
+智能锁
+*/
+NET_WIRELESSDEV_SMARTLOCK(6,"智能锁");
+
+private int value;
+
+private String note;
+
+public String getNote() {
+        return note;
+    }
+
+public int getValue() {
+        return value;
+    }
+
+NET_WIRELESSDEV_LOWPOWER_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+public static String getNoteByValue(int givenValue) {
+        for (NET_WIRELESSDEV_LOWPOWER_TYPE enumType : NET_WIRELESSDEV_LOWPOWER_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+public static int getValueByNote(String givenNote) {
+        for (NET_WIRELESSDEV_LOWPOWER_TYPE enumType : NET_WIRELESSDEV_LOWPOWER_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+public static NET_WIRELESSDEV_LOWPOWER_TYPE getEnum(int value) {
+        for (NET_WIRELESSDEV_LOWPOWER_TYPE e : NET_WIRELESSDEV_LOWPOWER_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return NET_WIRELESSDEV_LOWPOWER_TYPE.NET_WIRELESSDEV_UNKNOWN;
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java
new file mode 100644
index 0000000..c3a9f7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/NET_WIRELESS_DEVICE_TYPE.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * @author 251823
+ * @description Low Rate Wireless Personal Area Network 低速无线私域网 begin 无线设备类型
+ * @date 2023/03/16 14:52:52
+ */
+public enum NET_WIRELESS_DEVICE_TYPE {
+	/**
+	
+	*/
+	NET_WIRELESS_DEVICE_TYPE_UNKNOWN(0, ""),
+	/**
+	 * 无线键盘
+	 */
+	NET_WIRELESS_DEVICE_TYPE_KEYBOARD(1, "无线键盘"),
+	/**
+	 * 无线防区
+	 */
+	NET_WIRELESS_DEVICE_TYPE_DEFENCE(2, "无线防区"),
+	/**
+	 * 无线遥控
+	 */
+	NET_WIRELESS_DEVICE_TYPE_REMOTECONTROL(3, "无线遥控"),
+	/**
+	 * 无线门磁
+	 */
+	NET_WIRELESS_DEVICE_TYPE_MAGNETOMER(4, "无线门磁"),
+	/**
+	 * 无线警号
+	 */
+	NET_WIRELESS_DEVICE_TYPE_ALARMBELL(5, "无线警号"),
+	/**
+	 * 无线插座
+	 */
+	NET_WIRELESS_DEVICE_TYPE_SWITCHER(6, "无线插座"),
+	/**
+	 * 无线智能锁
+	 */
+	NET_WIRELESS_DEVICE_TYPE_SMARTLOCK(7, "无线智能锁"),
+	/**
+	 * 无线中继器
+	 */
+	NET_WIRELESS_DEVICE_TYPE_REPEATER(8, "无线中继器");
+
+	private int value;
+
+	private String note;
+
+	public String getNote() {
+		return note;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	NET_WIRELESS_DEVICE_TYPE(int givenValue, String note) {
+		this.value = givenValue;
+		this.note = note;
+	}
+
+	public static String getNoteByValue(int givenValue) {
+		for (NET_WIRELESS_DEVICE_TYPE enumType : NET_WIRELESS_DEVICE_TYPE.values()) {
+			if (givenValue == enumType.getValue()) {
+				return enumType.getNote();
+			}
+		}
+		return null;
+	}
+
+	public static int getValueByNote(String givenNote) {
+		for (NET_WIRELESS_DEVICE_TYPE enumType : NET_WIRELESS_DEVICE_TYPE.values()) {
+			if (givenNote.equals(enumType.getNote())) {
+				return enumType.getValue();
+			}
+		}
+		return -1;
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/REC_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/REC_TYPE.java
new file mode 100644
index 0000000..ea8e6c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/REC_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 录象类型(定时、动态检测、报警)
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 23:00
+ */
+public enum REC_TYPE {
+    NET_REC_TYPE_TIM(0, "定时"),
+    NET_REC_TYPE_MTD(1, "动态"),
+    NET_REC_TYPE_ALM(2, "报警"),
+    NET_REC_TYPE_NUM(3, "数量");
+
+    private final int value;
+    private final String note;
+
+    REC_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (REC_TYPE enumType : REC_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (REC_TYPE enumType : REC_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static REC_TYPE getEnum(int value) {
+        for (REC_TYPE e : REC_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return REC_TYPE.NET_REC_TYPE_TIM;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/SNAP_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/SNAP_TYPE.java
new file mode 100644
index 0000000..6060e8d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/SNAP_TYPE.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 抓图类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 23:07
+ */
+public enum SNAP_TYPE {
+
+    SNAP_TYP_TIMING(0, "定时"),
+    SNAP_TYP_ALARM(1, "报警"),
+    SNAP_TYP_NUM(2, "数量");
+
+    private final int value;
+    private final String note;
+
+    SNAP_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (SNAP_TYPE enumType : SNAP_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (SNAP_TYPE enumType : SNAP_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static SNAP_TYPE getEnum(int value) {
+        for (SNAP_TYPE e : SNAP_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return SNAP_TYPE.SNAP_TYP_TIMING;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/STREAM_RATE_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/STREAM_RATE_TYPE.java
new file mode 100644
index 0000000..2cf12b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/STREAM_RATE_TYPE.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 码流支持类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 19:42
+ */
+public enum STREAM_RATE_TYPE {
+    RATE_10(10),
+    RATE_20(20),
+    RATE_32(32),
+    RATE_48(48),
+    RATE_64(64),
+    RATE_80(80),
+    RATE_96(96),
+    RATE_128(128),
+    RATE_160(160),
+    RATE_192(192),
+    RATE_224(224),
+    RATE_256(256),
+    RATE_320(320),
+    RATE_384(384),
+    RATE_448(448),
+    RATE_512(512),
+    RATE_640(640),
+    RATE_768(768),
+    RATE_896(896),
+    RATE_1024(1024),
+    RATE_1280(1280),
+    RATE_1536(1536),
+    RATE_1792(1792),
+    RATE_2048(2048),
+    RATE_3072(3072),
+    RATE_4096(4096),
+    RATE_6144(6144),
+    RATE_8192(8192),
+    RATE_10240(10240),
+    RATE_12288(12288),
+    RATE_14336(14336),
+    RATE_16384(16384),
+    RATE_18422(18432),
+    RATE_20480(20480),
+    RATE_22528(22528);
+
+    private final int rate;
+
+    STREAM_RATE_TYPE(int rate) {
+        this.rate = rate;
+    }
+
+    public int getRate() {
+        return rate;
+    }
+
+    public static STREAM_RATE_TYPE getEnum(int value) {
+        for (STREAM_RATE_TYPE e : STREAM_RATE_TYPE.values()) {
+            if (e.getRate() == value)
+                return e;
+        }
+        return STREAM_RATE_TYPE.RATE_512;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/TALK_CODING_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/TALK_CODING_TYPE.java
new file mode 100644
index 0000000..8a9bbf9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/enumeration/TALK_CODING_TYPE.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.enumeration;
+
+/**
+ * 语音编码类型
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 10:25
+ */
+public enum TALK_CODING_TYPE {
+
+    NET_TALK_DEFAULT(0, "无头PCM"),
+    NET_TALK_PCM(1, "带头PCM"),
+    NET_TALK_G711a(2, "G711a"),
+    NET_TALK_AMR(3, "AMR"),
+    NET_TALK_G711u(4, "G711u"),
+    NET_TALK_G726(5, "G726"),
+    NET_TALK_G723_53(6, "G723_53"),
+    NET_TALK_G723_63(7, "G723_63"),
+    NET_TALK_AAC(8, "AAC"),
+    NET_TALK_OGG(9, "OGG"),
+    NET_TALK_G729(10, "G729"),
+    NET_TALK_MPEG2(11, "MPEG2"),
+    NET_TALK_MPEG2_Layer2(12, "MPEG2-Layer2"),
+    NET_TALK_G722_1(13, "G.722.1"),
+    NET_TALK_ADPCM(21, "ADPCM"),
+    NET_TALK_MP3(22, "MP3");
+
+    private final int value;
+    private final String note;
+
+    TALK_CODING_TYPE(int givenValue, String note) {
+        this.value = givenValue;
+        this.note = note;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static String getNoteByValue(int givenValue) {
+        for (TALK_CODING_TYPE enumType : TALK_CODING_TYPE.values()) {
+            if (givenValue == enumType.getValue()) {
+                return enumType.getNote();
+            }
+        }
+        return null;
+    }
+
+    public static int getValueByNote(String givenNote) {
+        for (TALK_CODING_TYPE enumType : TALK_CODING_TYPE.values()) {
+            if (givenNote.equals(enumType.getNote())) {
+                return enumType.getValue();
+            }
+        }
+        return -1;
+    }
+
+    public static TALK_CODING_TYPE getEnum(int value) {
+        for (TALK_CODING_TYPE e : TALK_CODING_TYPE.values()) {
+            if (e.getValue() == value)
+                return e;
+        }
+        return TALK_CODING_TYPE.NET_TALK_DEFAULT;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAALARM_INFO.java
new file mode 100644
index 0000000..448dba4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAALARM_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  区域报警事件(对应事件 DH_ALARM_AREAALARM) 
+* @date 2022/07/19 19:31:27
+*/
+public class ALARM_AREAALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+区域号
+*/
+public			int					nAreaIndex;
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+防区类型 {@link com.netsdk.lib.enumeration.EM_DEFENCE_AREA_TYPE}
+*/
+public			int					emDefenceAreaType;
+/** 
+触发的通道号
+*/
+public			int					nIndex;
+/** 
+触发类型 {@link com.netsdk.lib.enumeration.EM_AREAALARM_TRIGGER_TYPE}
+*/
+public			int					emTrigerType;
+/** 
+保留扩展字节
+*/
+public			byte[]					byReserved=new byte[1024];
+
+public ALARM_AREAALARM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java
new file mode 100644
index 0000000..a7d2e2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AREAARM_MODECHANGE_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 区域防区模式改变事件(对应事件 DH_ALARM_AREAARM_MODECHANGE)
+ * @date 2022/07/19 10:09:08
+ */
+public class ALARM_AREAARM_MODECHANGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 区域编号
+	 */
+	public int nAreaIndex;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 操作方式 {@link com.netsdk.lib.enumeration.EM_AREAARM_TRIGGERMODE}
+	 */
+	public int emTriggerMode;
+	/**
+	 * 操作用户,仅emTriggerMode = EM_AREAARM_USER_USER时有效
+	 * {@link com.netsdk.lib.enumeration.EM_AREAARM_USER}
+	 */
+	public int emUser;
+	/**
+	 * ID号,emTriggerMode = EM_AREAARM_TRIGGERMODE_KEYPAD 表示键盘地址;emTriggerMode
+	 * =EM_AREAARM_TRIGGERMODE_REMOTECONTROL时表示遥控器编号
+	 */
+	public int nID;
+	/**
+	 * 布撤防状态 {@link com.netsdk.lib.enumeration.EM_ARM_STATE}
+	 */
+	public int emArmState;
+	/**
+	 * 保留扩展字节
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public ALARM_AREAARM_MODECHANGE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AUDIO_ANOMALY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AUDIO_ANOMALY.java
new file mode 100644
index 0000000..629ab87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_AUDIO_ANOMALY.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 报警事件类型DH_ALARM_AUDIO_ANOMALY(音频异常事件)对应的数据描述信息
+ * @date 2022/06/20 17:39:31
+ */
+public class ALARM_AUDIO_ANOMALY extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwStructSize;
+	/**
+	 * 事件动作, 0:Start, 1:Stop
+	 */
+	public int dwAction;
+	/**
+	 * 音频通道号
+	 */
+	public int dwChannelID;
+	/**
+	 * 声音强度
+	 */
+	public int nDecibel;
+	/**
+	 * 声音频率
+	 */
+	public int nFrequency;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+	public ALARM_AUDIO_ANOMALY() {
+		this.dwStructSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_BETWEENRULE_DIFFTEMPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_BETWEENRULE_DIFFTEMPER_INFO.java
new file mode 100644
index 0000000..0bf68ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_BETWEENRULE_DIFFTEMPER_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 热成像规则间温差异常报警 (DH_ALARM_BETWEENRULE_TEMP_DIFF)
+ * @date 2023/05/24 10:24:56
+ */
+public class ALARM_BETWEENRULE_DIFFTEMPER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 0:开始 1:停止
+	 */
+	public int nAction;
+	/**
+	 * 温差OSD配置中的OSD编号
+	 */
+	public int nOsdId;
+	/**
+	 * 视频通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 报警条件 0:小于 1:等于 2:大于
+	 * {@link com.netsdk.lib.enumeration.NET_RADIOMETRY_ALARMCONTION}
+	 */
+	public int emAlarmContion;
+	/**
+	 * 测温规则1,参考配置CFG_RADIOMETRY_RULE_INFO
+	 */
+	public int nRuleId1;
+	/**
+	 * 测温规则2,参考配置CFG_RADIOMETRY_RULE_INFO
+	 */
+	public int nRuleId2;
+	/**
+	 * 规则间温差值
+	 */
+	public float fDiffValue;
+	/**
+	 * 温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
+	 */
+	public int nTemperatureUnit;
+	/**
+	 * 预置点
+	 */
+	public int nPresetID;
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 预留字段
+	 */
+	public byte[] reserved = new byte[128];
+
+	public ALARM_BETWEENRULE_DIFFTEMPER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java
new file mode 100644
index 0000000..fb742b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_CITIZEN_PICTURE_COMPARE_INFO.java
@@ -0,0 +1,123 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CITIZENIDCARD_SEX_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 普通报警事件 -> 人证比对事件
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/27 10:58
+ */
+public class ALARM_CITIZEN_PICTURE_COMPARE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuTime;
+    /**
+     * 人证比对结果,相似度大于等于阈值认为比对成功,1 表示成功,0 表示失败
+     */
+    public int bCompareResult;
+    /**
+     * 两张图片的相似度,单位百分比,范围[1,100]
+     */
+    public byte nSimilarity;
+    /**
+     * 检测阈值,范围[1,100]
+     */
+    public byte nThreshold;
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved1 = new byte[2];
+    /**
+     * 性别 {@link EM_CITIZENIDCARD_SEX_TYPE}
+     */
+    public int emSex;
+    /**
+     * 民族(参照DEV_EVENT_ALARM_CITIZENIDCARD_INFO的 nECType 定义)
+     */
+    public int nECType;
+    /**
+     * 居民姓名
+     */
+    public byte[] szCitizen = new byte[NET_COMMON_STRING_64];
+    /**
+     * 住址
+     */
+    public byte[] szAddress = new byte[NET_COMMON_STRING_256];
+    /**
+     * 证件号
+     */
+    public byte[] szNumber = new byte[NET_COMMON_STRING_64];
+    /**
+     * 签发机关
+     */
+    public byte[] szAuthority = new byte[NET_COMMON_STRING_256];
+    /**
+     * 出生日期(年月日)
+     */
+    public NET_TIME stuBirth;
+    /**
+     * 有效期限起始日期(年月日)
+     */
+    public NET_TIME stuValidityStart;
+    /**
+     * 该值为 1, 表示长期有效,此时 stuValidityEnd 值无意义
+     * 该值为 0, 此时 截止日期 查看 stuValidityEnd 的值
+     */
+    public int bLongTimeValidFlag;
+    /**
+     * 有效期限结束日期(年月日) bLongTimeValidFlag 为 0 时有效
+     */
+    public NET_TIME stuValidityEnd;
+    /**
+     * IC卡号
+     */
+    public byte[] szCardNo = new byte[NET_COMMON_STRING_32];
+    /**
+     * 手机号(比对时先输入手机号)
+     */
+    public byte[] szCellPhone = new byte[NET_COMMON_STRING_32];
+    /**
+     * 事件类型:0:人证比对结果	1:人证人脸采集
+     */
+    public int nEventType;
+    /**
+     * 人证人脸采集时人员ID
+     */
+    public byte[] szUserID = new byte[32];
+    /**
+     * 人脸序号
+     */
+    public int nFaceIndex;
+    /**
+     * 口罩状态 {@link EM_MASK_STATE_TYPE}
+     */
+    public int emMask;
+    /**
+     * 人脸质量评分
+     */
+    public int nScore;
+
+    /**
+     *  物理证件号(证件序列号)
+     */
+    public byte[] szIDPhysicalNumber = new byte[20];
+
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[956];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java
new file mode 100644
index 0000000..2816893
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_COLDSPOT_WARNING_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:ALARM_COLDSPOT_WARNING_INFO
+ * description:
+ * author:251589
+ * createTime:2021/5/12 20:53
+ *
+ * @version v1.0
+ */
+
+public class ALARM_COLDSPOT_WARNING_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  0:开始 1:停止
+     */
+    public int nAction;
+
+    /**
+     *  视频通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  冷点的坐标,坐标值 0~8192
+     */
+    public NetSDKLib.NET_POINT stuCoordinate;
+
+    /**
+     *  冷点温度值
+     */
+    public float fColdSpotValue;
+
+    /**
+     *  温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
+     */
+    public int nTemperatureUnit;
+    
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java
new file mode 100644
index 0000000..fc8867a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_ENCLOSURE_INFO_EX.java
@@ -0,0 +1,107 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 电子围栏报警拓展结构体
+ * @date 2022/12/06 19:32:32
+ */
+public class ALARM_ENCLOSURE_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 围栏报警类型 {@link com.netsdk.lib.enumeration.EM_ENCLOSURE_TYPE_EX}
+	 */
+	public int emType;
+	/**
+	 * 返回详细类型个数
+	 */
+	public int nActionNum;
+	/**
+	 * 详细类型,参考枚举{@link com.netsdk.lib.enumeration.EM_ENCLOSURE_ALARM_TYPE_EX}
+	 */
+	public int[] emAction = new int[16];
+	/**
+	 * 司机编号
+	 */
+	public int nDriverNo;
+	/**
+	 * 围栏编号
+	 */
+	public int nEnclosureID;
+	/**
+	 * 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
+	 */
+	public int dwLongitude;
+	/**
+	 * 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382
+	 */
+	public int dwLatidude;
+	/**
+	 * 限制车速
+	 */
+	public int nLimitSpeed;
+	/**
+	 * 当前速度
+	 */
+	public int nSpeed;
+	/**
+	 * 设备ID
+	 */
+	public byte[] szDeviceID = new byte[32];
+	/**
+	 * 出发围栏编号
+	 */
+	public int nStartEnclosureID;
+	/**
+	 * 目的围栏编号
+	 */
+	public int nEndEnclosureID;
+	/**
+	 * 出发时间,本地时间
+	 */
+	public NET_TIME_EX stuStartTime = new NET_TIME_EX();
+	/**
+	 * 出发时间,本地时间
+	 */
+	public NET_TIME_EX stuEndTime = new NET_TIME_EX();
+	/**
+	 * 本趟行驶行驶里程数,单位0.1Km
+	 */
+	public int nMileage;
+	/**
+	 * 趟数
+	 */
+	public int nTriggerCount;
+	/**
+	 * 围栏类型扩展个数
+	 */
+	public int nMultiTypeNum;
+	/**
+	 * 围栏类型扩展
+	 */
+	public byte[] szMultiType = new byte[16 * 32];
+	/**
+	 * GPS信息, refer to {@link NET_GPS_STATUS_INFO}
+	 */
+	public Pointer pstuGPSStatus;
+	/**
+	 * 保留
+	 */
+	public byte[] szReserved = new byte[508 - NetSDKLib.POINTERSIZE];
+
+	public ALARM_ENCLOSURE_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_EVENT_LEFT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_EVENT_LEFT_INFO.java
new file mode 100644
index 0000000..417ee77
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_EVENT_LEFT_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 物品遗留事件(对应事件 DH_EVENT_LEFT_DETECTION)
+ * @origin autoTool
+ * @date 2023/09/22 16:17:45
+ */
+public class ALARM_EVENT_LEFT_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nEventAction;
+    /**
+     * / 规则被触发生次数
+     */
+    public int nOccurrenceCount;
+    /**
+     * / 事件级别,GB30147需求项
+     */
+    public int nLevel;
+    /**
+     * / 事件触发的预置点号,从1开始(没有表示未知)
+     */
+    public short nPreserID;
+    /**
+     * / 事件触发的预置名称
+     */
+    public byte[] szPresetName = new byte[64];
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    public ALARM_EVENT_LEFT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FACE_FEATURE_ABSTRACT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FACE_FEATURE_ABSTRACT_INFO.java
new file mode 100644
index 0000000..7d00c9b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FACE_FEATURE_ABSTRACT_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 目标特征向量重建结果事件(对应事件DH_ALARM_FACE_FEATURE_ABSTRACT)
+ * @origin autoTool
+ * @date 2023/06/28 10:00:12
+ */
+public class ALARM_FACE_FEATURE_ABSTRACT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved1 = new byte[4];
+	/**
+	 * 实际返回的目标特征向量重建结果个数
+	 */
+	public int nRetAbstractInfo;
+	/**
+	 * 目标特征向量重建结果
+	 */
+	public FACE_FEATURE_ABSTRACT_INFO[] stuAbstractInfo = new FACE_FEATURE_ABSTRACT_INFO[100];
+	/**
+	 * 保留扩展字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public ALARM_FACE_FEATURE_ABSTRACT_INFO() {
+		for (int i = 0; i < stuAbstractInfo.length; i++) {
+			stuAbstractInfo[i] = new FACE_FEATURE_ABSTRACT_INFO();
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FAN_SPEED.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FAN_SPEED.java
new file mode 100644
index 0000000..e862400
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FAN_SPEED.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 风扇转速异常事件
+ * @origin autoTool
+ * @date 2023/11/27 20:28:07
+ */
+public class ALARM_FAN_SPEED extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * / 0-开始, 1-停止
+     */
+    public int dwAction;
+    /**
+     * / 风扇序号
+     */
+    public int dwIndex;
+    /**
+     * / 传感器名称
+     */
+    public byte[] szName = new byte[64];
+    /**
+     * / 事件发生时间
+     */
+    public NET_TIME stuTime = new NET_TIME();
+    /**
+     * / 当前转速
+     */
+    public int dwCurrent;
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    public ALARM_FAN_SPEED() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java
new file mode 100644
index 0000000..02b462c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_FIRE_DETECTION_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 251823
+ * @description 火警事件 (DH_ALARM_FIRE_DETECTION)
+ * @date 2020/12/21
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+public class ALARM_FIRE_DETECTION_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 通道号
+	 * */
+	public int nChannelID;
+		
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
+	 * */
+	public int nAction;
+	
+	/**
+	 * 事件发生的时间
+	 * */
+	public NetSDKLib.NET_TIME_EX UTC;
+	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	
+	/**
+	 * 保留字节 
+	 * */
+	public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_GYROABNORMALATTITUDE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_GYROABNORMALATTITUDE_INFO.java
new file mode 100644
index 0000000..09c0c17
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_GYROABNORMALATTITUDE_INFO.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 NET_ALARM_GYROABNORMALATTITUDE
+* @origin autoTool
+* @date 2023/09/06 16:21:38
+*/
+public class ALARM_GYROABNORMALATTITUDE_INFO extends NetSDKLib.SdkStructure {
+/** 
+事件动作,1表示持续性事件开始,2表示持续性事件结束;
+*/
+public			int					nAction;
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生时间
+*/
+public NET_TIME_EX stuTime=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+当前翻滚角,单位:度
+*/
+public			double					dbGyroCurRoll;
+/** 
+当前俯仰角,单位:度
+*/
+public			double					dbGyroCurPitch;
+/** 
+当前加速度,单位:m/s^2
+*/
+public			double					dbGyroCurAccel;
+/** 
+保留字段
+*/
+public			byte[]					byReserved=new byte[1024];
+
+public ALARM_GYROABNORMALATTITUDE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java
new file mode 100644
index 0000000..74bd736
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HEATIMG_TEMPER_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_RADIOMETRY_ALARMCONTION;
+import com.netsdk.lib.enumeration.NET_RADIOMETRY_RESULT;
+
+/**
+ * 热成像测温点温度异常报警事件(对应结构体 {@link NetSDKLib#NET_ALARM_HEATIMG_TEMPER})
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/12 16:46
+ */
+public class ALARM_HEATIMG_TEMPER_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 温度异常点名称 从测温规则配置项中选择
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 报警项编号
+	 */
+	public int nAlarmId;
+	/**
+	 * 报警结果值 fTemperatureValue 的类型,见枚举 {@link NET_RADIOMETRY_RESULT}
+	 */
+	public int nResult;
+	/**
+	 * 报警条件,见枚举 {@link NET_RADIOMETRY_ALARMCONTION}
+	 */
+	public int nAlarmContion;
+	/**
+	 * 报警温度值
+	 */
+	public float fTemperatureValue;
+	/**
+	 * 温度单位(当前配置的温度单位),见 {@link NetSDKLib.NET_TEMPERATURE_UNIT}
+	 */
+	public int nTemperatureUnit;
+	/**
+	 * 报警点的坐标 相对坐标体系,取值均为 0~8191
+	 */
+	public NetSDKLib.NET_POINT stCoordinate;
+	/**
+	 * 预置点
+	 */
+	public int nPresetID;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 0:开始 1:停止 -1:无意义
+	 */
+	public int nAction;
+	/**
+	 * 报警坐标, 其类型可以是点,线或多边形。替换 stCoordinate字段
+	 */
+	public NetSDKLib.NET_POLY_POINTS stuAlarmCoordinates;
+	/**
+	 * 报警最高的温度值
+	 */
+	public double dTemperatureMaxValue;
+	/**
+	 * 报警最低的温度值
+	 */
+	public double dTemperatureMinValue;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[140];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java
new file mode 100644
index 0000000..9f836d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HOTSPOT_WARNING_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:ALARM_HOTSPOT_WARNING_INFO
+ * description:
+ * author:251589
+ * createTime:2021/5/12 20:52
+ *
+ * @version v1.0
+ */
+
+public class ALARM_HOTSPOT_WARNING_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  0:开始 1:停止
+     */
+    public int nAction;
+
+    /**
+     *  视频通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  热点的坐标,坐标值 0~8192
+     */
+    public NetSDKLib.NET_POINT stuCoordinate;
+
+    /**
+     *  热点温度值
+     */
+    public float fHotSpotValue;
+
+    /**
+     *  温度单位(当前配置的温度单位),见 NET_TEMPERATURE_UNIT
+     */
+    public int nTemperatureUnit;
+    
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HUMIDITY_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HUMIDITY_ALARM_INFO.java
new file mode 100644
index 0000000..60839c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_HUMIDITY_ALARM_INFO.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  湿度报警事件 
+* @origin autoTool
+* @date 2023/12/05 16:13:52
+*/
+public class ALARM_HUMIDITY_ALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+/ 通道号
+*/
+public			int					nChannelID;
+/** 
+/ 事件动作,0表示脉冲事件,1表示事件开始,2表示事件结束;
+*/
+public			int					nAction;
+/** 
+/ 时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+/ 事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+/ 事件ID
+*/
+public			int					nEventID;
+/** 
+/ 事件发生时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+/ 当前湿度值
+*/
+public			float					fCurrentValue;
+/** 
+/ 报警阈值
+*/
+public			float					fLimitValue;
+/** 
+/ GPS信息
+*/
+public NET_GPS_STATUS_INFO stuGPSStatus=new NET_GPS_STATUS_INFO();
+/** 
+/ 预留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+
+public ALARM_HUMIDITY_ALARM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_IP_CONFLICT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_IP_CONFLICT_INFO.java
new file mode 100644
index 0000000..b9f475c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_IP_CONFLICT_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  IP冲突事件 
+* @origin autoTool
+* @date 2023/09/06 16:34:17
+*/
+public class ALARM_IP_CONFLICT_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+0:开始 1:停止
+*/
+public			int					nAction;
+/** 
+事件触发时间
+*/
+public NET_TIME stuTime=new NET_TIME();
+/** 
+IP冲突网卡名
+*/
+public			byte[]					szInterface=new byte[8];
+/** 
+主机Mac地址个数
+*/
+public			int					nMacNum;
+/** 
+与Interface网卡IP地址冲突的主机Mac地址列表
+*/
+public			byte[]					szMac=new byte[8*18];
+
+public ALARM_IP_CONFLICT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java
new file mode 100644
index 0000000..a34adbd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_LOCK_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型DH_ALARM_KEYPAD_LOCK (键盘锁定事件)对应的数据块描述信息
+ * @date 2023/03/09 20:13:06
+ */
+public class ALARM_KEYPAD_LOCK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int nAction;
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuTime = new NET_TIME_EX();
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public ALARM_KEYPAD_LOCK_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_TAMPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_TAMPER_INFO.java
new file mode 100644
index 0000000..df80c5a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_KEYPAD_TAMPER_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型DH_ALARM_KEYPAD_TAMPER (键盘防拆事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/08/02 14:32:52
+ */
+public class ALARM_KEYPAD_TAMPER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int nAction;
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuTime = new NET_TIME_EX();
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public ALARM_KEYPAD_TAMPER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_LOGIN_FAILIUR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_LOGIN_FAILIUR_INFO.java
new file mode 100644
index 0000000..e8bb41a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_LOGIN_FAILIUR_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  登陆失败事件 
+* @origin autoTool
+* @date 2023/09/06 16:45:08
+*/
+public class ALARM_LOGIN_FAILIUR_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+0:开始 1:停止
+*/
+public			int					nAction;
+/** 
+序号
+*/
+public			int					nSequence;
+/** 
+事件名,填用户名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+登录类型
+*/
+public			byte[]					szType=new byte[128];
+/** 
+来源IP地址
+*/
+public			byte[]					szAddr=new byte[128];
+/** 
+用户登陆失败错误码
+*/
+public			int					nError;
+/** 
+事件公共扩展字段结构体
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+
+public ALARM_LOGIN_FAILIUR_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MAN_NUM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MAN_NUM_INFO.java
new file mode 100644
index 0000000..0f91e37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MAN_NUM_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.MAN_NUM_LIST_INFO;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 立体视觉区域内人数统计报警
+ * @author 119178
+ * @date 2021/3/18
+ */
+public class ALARM_MAN_NUM_INFO extends SdkStructure{
+	/**
+	 * 通道号
+	 */
+	public int							nChannel;	
+	/**
+	 * 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int                         nAction;    
+	/**
+	 * 事件ID
+	 */
+	public int					        nEventID;		
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double				        dbPTS;	
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX			        stuTime;			 		
+	/**
+	 * 区域人员列表数量
+	 */
+	public int							nManListCount;		
+	/**
+	 * 区域内人员列表
+	 */
+	public MAN_NUM_LIST_INFO[]			stuManList =(MAN_NUM_LIST_INFO[]) new MAN_NUM_LIST_INFO().toArray(64);
+	/**
+	 * 事件名称
+	 */
+	public byte []						szName=new byte[128];	
+	/**
+	 * 变化前人数
+	 */
+	public int						nPrevNumber;			
+	/**
+	 * 当前人数
+	 */
+	public int						nCurrentNumber;	
+	/**
+	 * 规则名称
+	 */
+	public byte []						szRuleName=new byte[128];
+	/**
+	 * 实际触发报警的人数
+	 */
+	public int					nAlertNum;
+	/**
+	 * 报警类型. 0:未知, 1:从人数正常到人数异常, 2:从人数异常到人数正常
+	 */
+	public int							nAlarmType;	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte []                        byReserved= new byte[752];    		
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MOVE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MOVE_DETECTION_INFO.java
new file mode 100644
index 0000000..08b472b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_MOVE_DETECTION_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 421657
+ * @description 移动事件(对应事件DH_ALARM_MOVEDETECTION)
+ * @origin autoTool
+ * @date 2023/09/22 16:26:56
+ */
+public class ALARM_MOVE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuTime = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 规则被触发的次数
+     */
+    public int nCount;
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * /保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public ALARM_MOVE_DETECTION_INFO() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_NO_DISK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_NO_DISK_INFO.java
new file mode 100644
index 0000000..40924f4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_NO_DISK_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 无硬盘报警
+ * @date 2020/9/9
+ */
+public class ALARM_NO_DISK_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    /**
+     * 时间
+     */
+    public NET_TIME stuTime;
+    /**
+     * 事件动作, 0:Start, 1:Stop
+     */
+    public int dwAction;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    public ALARM_NO_DISK_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java
new file mode 100644
index 0000000..c59625e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RADAR_REGIONDETECTION_INFO.java
@@ -0,0 +1,132 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  雷达区域检测事件(对应 DH_ALARM_RADAR_REGIONDETECTION) 
+* @date 2022/09/01 20:26:50
+*/
+public class ALARM_RADAR_REGIONDETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+事件动作1:Start 2:Stop
+*/
+public			int					nAction;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuTime=new NET_TIME_EX();
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+检测到的对象个数
+*/
+public			int					nObjectNum;
+/** 
+雷达检测对象列表
+*/
+public			NET_RADAR_DETECT_OBJECT[]					stuObjects=new NET_RADAR_DETECT_OBJECT[100];
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件触发的预置点号
+*/
+public			int					nPresetID;
+/** 
+检测区域顶点数
+*/
+public			int					nDetectRegionNum;
+/** 
+检测区域,[0,8191]
+*/
+public			NetSDKLib.NET_POINT[]					stuDetectRegion=new NetSDKLib.NET_POINT[20];
+/** 
+报警类型 {@link com.netsdk.lib.enumeration.EM_RADAR_ALARM_TYPE}
+*/
+public			int					emAlarmType;
+/** 
+经度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254
+*/
+public			int					nLongitude;
+/** 
+纬度,扩大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254
+*/
+public			int					nLatitude;
+/** 
+智能事件规则编号,用于表示哪个规则触发的事件。
+*/
+public			int					nRuleID;
+/** 
+RFID卡片数量
+*/
+public			int					nCardNum;
+/** 
+RFID卡片信息
+*/
+public			NET_RADAR_REGIONDETECTION_RFIDCARD_INFO[]					stuCardInfo=new NET_RADAR_REGIONDETECTION_RFIDCARD_INFO[256];
+/** 
+报警等级,0 表示未知, 1表示预警警告,2表示报警
+*/
+public			int					nAlarmLevel;
+/** 
+报警标志位,bit0表示是否超速,bit1表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行
+*/
+public			int					nAlarmFlag;
+/** 
+报警输入通道号
+*/
+public			int					nAlarmChannel;
+/** 
+事件编号,用来唯一标志一个事件
+*/
+public			int					nEventID;
+/** 
+触发事件目标的速度,用整型传输,扩大100倍 单位m/s
+*/
+public			int					nSpeed;
+/** 
+触发事件目标的id,范围[0,63]
+*/
+public			int					nTrackID;
+/** 
+触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船
+*/
+public			int					nObjectType;
+/** 
+车道/航道方向 -1:未知 0:无效 1:上行 2:下行
+*/
+public			int					nUpDownGoing;
+/** 
+事件公共扩展字段结构体
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+当前触发事件目标的像素极坐标值--距离,扩大100倍的结果,单位米
+*/
+public			int					nDistance;
+/** 
+当前触发事件目标的极坐标值--角度,扩大100倍的结果,单位度
+*/
+public			int					nAngle;
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[992];
+
+public ALARM_RADAR_REGIONDETECTION_INFO(){
+		for(int i=0;i<stuObjects.length;i++){
+			stuObjects[i]=new NET_RADAR_DETECT_OBJECT();
+			}
+		for(int i=0;i<stuDetectRegion.length;i++){
+			stuDetectRegion[i]=new NetSDKLib.NET_POINT();
+			}
+		for(int i=0;i<stuCardInfo.length;i++){
+			stuCardInfo[i]=new NET_RADAR_REGIONDETECTION_RFIDCARD_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RAID_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RAID_INFO_EX.java
new file mode 100644
index 0000000..814cf2f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RAID_INFO_EX.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_RAID_DEVICE_NAME;
+
+/**
+ * className:ALARM_RAID_INFO_EX
+ * description:
+ * author:251589
+ * createTime:2021/2/26 8:52
+ *
+ * @version v1.0
+ */
+
+public class ALARM_RAID_INFO_EX  extends NetSDKLib.SdkStructure {
+    /**
+     *  0-开始, 1-停止
+     */
+    public int nAction;
+
+    /**
+     *  设备名称
+     */
+    public byte[] szDevice = new byte[NET_MAX_RAID_DEVICE_NAME];
+
+    /**
+     *  错误类型
+     */
+    public int emErrorType;
+
+    /**
+     *  有效的故障子盘个数
+     */
+    public int nDetailNum;
+
+    /**
+     *  故障子盘详细信息
+     */
+    public NET_RAID_ERR_DETAIL_INFO[] stuErrDetail = (NET_RAID_ERR_DETAIL_INFO[]) new NET_RAID_ERR_DETAIL_INFO().toArray(16);
+    
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     *  保留
+     */
+    public byte[] byReserved = new byte[508];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java
new file mode 100644
index 0000000..5a3c837
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * 事件类型 {@link NetSDKLib#NET_ALARM_REGION_PARKING_NO_ENTRY_RECORD}(区间车位停车,检测到车辆驶出区域时没有匹配到入场信息)
+ * 调用的接口{@link NetSDKLib#CLIENT_RealLoadPictureEx(NetSDKLib.LLong, int, int, int, Callback, Pointer, Pointer)}
+ * 使用的回调{@link NetSDKLib.fAnalyzerDataCallBack}
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/19 15:00
+ */
+public class ALARM_REGION_PARKING_NO_ENTRY_RECORD_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 车辆驶出区域停车位时间(单位:秒)
+     */
+    public NET_TIME_EX stuCarOutParkingSpaceTime;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 停车区间信息
+     */
+    public byte[] szInParkRegionInfo = new byte[128];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java
new file mode 100644
index 0000000..4043c2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_REGION_PARKING_TIMEOUT_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 事件类型 NET_ALARM_REGION_PARKING_TIMEOUT(区间车位停车超时)
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/19 14:50
+ */
+public class ALARM_REGION_PARKING_TIMEOUT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 车辆驶入停车场时间(单位:秒)
+     */
+    public NET_TIME_EX stuCarInParkingLotTime;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 停车区间信息
+     */
+    public byte[] szInParkRegionInfo = new byte[128];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java
new file mode 100644
index 0000000..baa3ea4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_LAMP_RUNNING_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description RTSC灯暂停事件, 对应事件类型 NET_ALARM_RTSC_LAMP_RUNING
+ * @date 2021/08/30
+ */
+public class ALARM_RTSC_LAMP_RUNNING_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  当前运行模式,参考枚举{ @link EM_CURRENT_OPERATE_MODE }
+     */
+    public int emCurOperateMode;
+
+    /**
+     *  运行灯组个数
+     */
+    public int nRunLampNum;
+
+    /**
+     *  运行灯组信息
+     */
+    public RUN_LAMP_INFO[] stuRunLampInfo = (RUN_LAMP_INFO[]) new RUN_LAMP_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[512];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java
new file mode 100644
index 0000000..56812b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_PHASE_RUNNING_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description RTSC跑动暂停事件, 对应事件类型 NET_ALARM_RTSC_PHASE_RUNING
+ * @date 2021/08/24
+ */
+public class ALARM_RTSC_PHASE_RUNNING_INFO extends NetSDKLib.SdkStructure{
+	
+	 /**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  当前运行模式,参考枚举{ @link EM_CURRENT_OPERATE_MODE }
+     */
+    public int emCurOperateMode;
+
+    /**
+     *  运行相位个数
+     */
+    public int nRunPhaseNum;
+
+    /**
+     *  运行相位信息
+     */
+    public RUN_PHASE_INFO[] stRunPhaseInfo = (RUN_PHASE_INFO[]) new RUN_PHASE_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[512];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java
new file mode 100644
index 0000000..6740d67
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_RUNNING_INFO.java
@@ -0,0 +1,103 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 信号机运行事件, 对应事件类型NET_ALARM_RTSC_RUNING
+ * @date 2021/09/01
+ */
+public class ALARM_RTSC_RUNNING_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  bit0:运行状态
+		bit1:控制方式
+		bit2:灯色状态信息
+		bit3:车道功能状态
+		bit4:车道/匝道控制状态信息
+		bit5:当前信号方案色步信息
+		bit6: 下一个周期信号方案色步信息
+     */
+    public int dwReportState;
+
+
+    /**
+     *  经度个数
+     */
+    public int nLongitudeNum;
+
+    /**
+     *  经度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLongitude = new double[3];
+
+    /**
+     *  纬度个数
+     */
+    public int nLatitudeNum;
+
+    /**
+     *  纬度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLatitude = new double[3];
+
+    /**
+     *  高度,单位为米 
+     */
+    public double dbAltitude;
+
+    /**
+     *  事件发生时间,带时区偏差的UTC时间,单位秒
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  设备状态 ,参考{ @link EM_STATUS}
+     */
+    public int emStatus;
+
+    /**
+     *  控制模式,参考{ @link EM_CONTROL_MODE}
+     */
+    public int emControlMode;
+
+    /**
+     *  灯色状态信息
+     */
+    public LAMP_STATE stuLampStateInfo;
+
+    /**
+     *  车道功能状态
+     */
+    public LANE_STATE stuLaneStateInfo;
+
+    /**
+     *  车道/匝道控制状态
+     */
+    public LANE_CTRL_STATE stuLaneCtrlStateInfo;
+
+    /**
+     *  当前信号方案色步信息
+     */
+    public CUR_STEP_INFO stuCurStepInfo;
+
+    /**
+     *  下一个周期信号方案色步信息
+     */
+    public NEXT_STEP_INFO stuNextStepInfo;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java
new file mode 100644
index 0000000..ca64903
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_RTSC_TRAFFIC_INFO.java
@@ -0,0 +1,89 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.TRAFFIC_EVENT;
+import com.netsdk.lib.structure.TRAFFIC_INFO;
+import com.netsdk.lib.structure.TRAFFIC_STATE;
+
+/**
+ * @author 251823
+ * @description 信号机交通信息事件, 对应事件类型NET_ALARM_RTSC_TRAFFIC
+ * @date 2021/09/01
+ */
+public class ALARM_RTSC_TRAFFIC_INFO extends NetSDKLib.SdkStructure{
+	  /**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  bit0:运行状态
+        bit1:控制方式
+		bit2:灯色状态信息
+		bit3:车道功能状态
+		bit4:车道/匝道控制状态信息
+		bit5:当前信号方案色步信息
+     */
+    public int dwReportState;
+
+    /**
+     *  经度个数
+     */
+    public int nLongitudeNum;
+
+    /**
+     *  经度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLongitude = new double[3];
+
+    /**
+     *  纬度个数
+     */
+    public int nLatitudeNum;
+
+    /**
+     *  纬度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLatitude = new double[3];
+
+    /**
+     *  高度,单位为米 
+     */
+    public double dbAltitude;
+
+    /**
+     *  事件发生时间,带时区偏差的UTC时间,单位秒
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  交通流信息
+     */
+    public TRAFFIC_INFO stuTrafficInfo;
+
+    /**
+     *  交通运行状态信息
+     */
+    public TRAFFIC_STATE stuTrafficState;
+
+    /**
+     *  车辆运行状态信息
+     */
+    public CAR_INFO stuCarInfo;
+
+    /**
+     *  交通事件信息
+     */
+    public TRAFFIC_EVENT stuTrafficEvent;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java
new file mode 100644
index 0000000..86d5387
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_SOLARCELL_SYSTEM_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_SOLARCELL_SYSTEM_FAULT_TYPE;
+import com.netsdk.lib.constant.SDK_ALARM_Ex_TYPE;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ * <p>
+ * \else
+ * 事件类型 {@link SDK_ALARM_Ex_TYPE#SDK_ALARM_SOLARCELL_SYSTEM_INFO}(太阳能系统信息上报)
+ * \endif
+ * @date 2020/8/11
+ */
+public class ALARM_SOLARCELL_SYSTEM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 蓄电池信息
+     */
+    public SOLARCELL_BATTERY_INFO stuBatteryInfo;
+    /**
+     * 太阳能板信息
+     */
+    public SOLARCELL_PANEL_INFO stuSolarPanel;
+    /**
+     * 历史数据信息
+     */
+    public SOLARCELL_SYSTEM_HISTORY_INFO stuHistoryInfo;
+    /**
+     * 系统故障,枚举值参考{@link EM_SOLARCELL_SYSTEM_FAULT_TYPE#getType()}
+     */
+    public int[] emSystemFault = new int[32];
+    /**
+     * 系统故障个数
+     */
+    public int nSystemFault;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java
new file mode 100644
index 0000000..4593c48
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_IPC_FAILURE_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * IPC的存储介质故障事件(SD卡异常) 报警
+ * {@link NetSDKLib#NET_ALARM_STORAGE_IPC_FAILURE}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/12 10:44
+ */
+public class ALARM_STORAGE_IPC_FAILURE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 0:开始 1:停止
+     */
+    public int nAction;
+    /**
+     * 发生报警的通道号
+     */
+    public int nChannelID;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_LOW_SPACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_LOW_SPACE_INFO.java
new file mode 100644
index 0000000..4b29892
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_STORAGE_LOW_SPACE_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  存储容量不足事件 
+* @origin autoTool
+* @date 2023/09/06 15:55:03
+*/
+public class ALARM_STORAGE_LOW_SPACE_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+0:开始 1:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+存储设备名称
+*/
+public			byte[]					szDevice=new byte[128];
+/** 
+存储组名称
+*/
+public			byte[]					szGroup=new byte[128];
+/** 
+总容量, byte
+*/
+public			long					nTotalSpace;
+/** 
+剩余容量, byte
+*/
+public			long					nFreeSpace;
+/** 
+已经使用的百分比
+*/
+public			int					nPercent;
+/** 
+事件触发时间
+*/
+public NET_TIME_EX stuTime=new NET_TIME_EX();
+/** 
+GPS信息
+*/
+public			NET_GPS_STATUS_INFO					stGPSStatus=new NET_GPS_STATUS_INFO();
+/** 
+事件公共扩展字段结构体
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+
+public ALARM_STORAGE_LOW_SPACE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TAKENAWAY_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TAKENAWAY_DETECTION_INFO.java
new file mode 100644
index 0000000..675606b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TAKENAWAY_DETECTION_INFO.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 421657
+ * @description 报警事件类型DH_EVENT_TAKENAWAYDETECTION(物品搬移事件)对应的数据描述信息
+ * @origin autoTool
+ * @date 2023/09/22 16:24:59
+ */
+public class ALARM_TAKENAWAY_DETECTION_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nEventAction;
+    /**
+     * / 规则被触发生次数
+     */
+    public int nOccurrenceCount;
+    /**
+     * / 事件级别,GB30147需求项, 0 提示1 普通2 警告
+     */
+    public int nLevel;
+    /**
+     * / 事件触发的预置点号,从1开始(没有表示未知)
+     */
+    public short nPreserID;
+    /**
+     * / 事件触发的预置名称
+     */
+    public byte[] szPresetName = new byte[64];
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    public ALARM_TAKENAWAY_DETECTION_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TALKING_HANGUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TALKING_HANGUP_INFO.java
new file mode 100644
index 0000000..8237a0e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TALKING_HANGUP_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  报警事件类型DH_ALARM_TALKING_HANGUP对应的数据描述信息 
+* @origin autoTool
+* @date 2023/06/19 15:36:49
+*/
+public class ALARM_TALKING_HANGUP_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+事件触发时间
+*/
+public NET_TIME stuTime=new NET_TIME();
+/** 
+挂断的房间号
+*/
+public			byte[]					szRoomNo=new byte[128];
+/** 
+RealUTC 是否有效,bRealUTC 为 TRUE 时,用 RealUTC,否则用 stuTime 字段
+*/
+public			int					bRealUTC;
+/** 
+事件发生的时间(标准UTC)
+*/
+public NET_TIME_EX RealUTC=new NET_TIME_EX();
+/** 
+语音挂断发起方
+*/
+public			byte[]					szCaller=new byte[32];
+
+public ALARM_TALKING_HANGUP_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java
new file mode 100644
index 0000000..493cecb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFICSTROBESTATE_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 道闸栏状态事件(对应结构体 ALARM_TRAFFICSTROBESTATE_INFO)
+ * @date 2020/12/15
+ */
+public class ALARM_TRAFFICSTROBESTATE_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
+	 */
+	public byte bEventAction;
+
+	/**
+	 * 事件发生时间
+	 */
+	public NET_TIME stuTime;
+
+	/**
+	 * 视频通道号
+	 */
+	public int nChannelID;
+
+	/**
+	 * 道闸栏状态{ @link EM_TRAFFICSTROBE_STATUS}
+	 */
+	public int emStatus;
+
+	/**
+	 * 道闸开关闸原因{ @link EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE}
+	 */
+	public int emStrobeActionReason;
+
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[1020];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java
new file mode 100644
index 0000000..ad50788
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_JUNTION_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 交通路口过车事件 (对应 DH_ALARM_TRAFFIC_FLOW_JUNTION)
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class ALARM_TRAFFIC_FLOW_JUNTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 表示抓拍序号  1表示抓拍正常结束 0表示抓拍异常结束
+     */
+    public int nSequence;
+    /**
+     * 区域路口过车信息
+     */
+    public TRAFFIC_FLOW_JUNTION_INFO stuFlowJunction = new TRAFFIC_FLOW_JUNTION_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    @Override
+    public String toString() {
+        try {
+            return "ALARM_TRAFFIC_FLOW_JUNTION_INFO{" +
+                    "nAction=" + nAction +
+                    ", nChannel=" + nChannel +
+                    ", szName UTF-8=" + new String(szName,"UTF-8").trim() +
+                    ", szName GBK=" + new String(szName,"GBK").trim() +
+                    ", stuUTC=" + stuUTC +
+                    ", nUTCMS=" + nUTCMS +
+                    ", nSequence=" + nSequence +
+                    ", stuFlowJunction=" + stuFlowJunction.toString() +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java
new file mode 100644
index 0000000..10667f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_QUEUE_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 交通路口排队事件 (对应 DH_ALARM_TRAFFIC_FLOW_QUEUE)
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class ALARM_TRAFFIC_FLOW_QUEUE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 表示抓拍序号  1表示抓拍正常结束 0表示抓拍异常结束
+     */
+    public int nSequence;
+    /**
+     * 区域路口排队信息
+     */
+    public TRAFFIC_FLOW_QUEUE_INFO stuFlowQueueInfo = new TRAFFIC_FLOW_QUEUE_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    @Override
+    public String toString() {
+        try {
+            return "ALARM_TRAFFIC_FLOW_QUEUE_INFO{" +
+                    "nAction=" + nAction +
+                    ", nChannel=" + nChannel +
+                    ", szName UTF-8=" + new String(szName,"UTF-8").trim() +
+                    ", szName GBK=" + new String(szName,"GBK").trim() +
+                    ", stuUTC=" + stuUTC +
+                    ", nUTCMS=" + nUTCMS +
+                    ", nSequence=" + nSequence +
+                    ", stuFlowQueueInfo=" + stuFlowQueueInfo.toString() +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java
new file mode 100644
index 0000000..a772bfc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_EX_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 交通路口车道统计拓展事件 (对应 DH_ALARM_TRAFFIC_FLOW_STAT_EX)
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class ALARM_TRAFFIC_FLOW_STAT_EX_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 表示抓拍序号  1表示抓拍正常结束 0表示抓拍异常结束
+     */
+    public int nSequence;
+    /**
+     * 路口车道统计信息
+     */
+    public TRAFFIC_FLOW_STAT_EX_INFO stuFlowStatEx = new TRAFFIC_FLOW_STAT_EX_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    @Override
+    public String toString() {
+        try {
+            return "ALARM_TRAFFIC_FLOW_STAT_EX_INFO{" +
+                    "nAction=" + nAction +
+                    ", nChannel=" + nChannel +
+                    ", szName UTF-8=" + new String(szName,"UTF-8").trim() +
+                    ", szName GBK=" + new String(szName,"GBK").trim() +
+                    ", stuUTC=" + stuUTC.toStringTime() +
+                    ", nUTCMS=" + nUTCMS +
+                    ", nSequence=" + nSequence +
+                    ", stuFlowStatEx=" + stuFlowStatEx.toString() +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java
new file mode 100644
index 0000000..bdab284
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_STAT_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 交通路口车道统计事件 (对应 DH_ALARM_TRAFFIC_FLOW_STAT)
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class ALARM_TRAFFIC_FLOW_STAT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public int PTS;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 序号
+     */
+    public int nSequence;
+    /**
+     * 流量状态数量
+     */
+    public int nStateNum;
+    /**
+     * 流量状态, 每个车道对应数组中一个元素
+     */
+    public NET_TRAFFIC_FLOW_STATE[] stuStates = (NET_TRAFFIC_FLOW_STATE[]) new NET_TRAFFIC_FLOW_STATE().toArray(8);
+    /**
+     * 静止车辆数,当前时刻检测范围内车速小于某个阀值的车辆数,单位:辆
+     */
+    public int nStopVehiclenum;
+    /**
+     * 车辆总数,当前时刻检测范围内检测到的所有车道内的车辆总数,单位:辆
+     */
+    public int nDetectionAreaVehicleNum;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    @Override
+    public String toString() {
+        String stuStatesStr = "";
+        if(stuStates.length > 0){
+            stuStatesStr += "stuStates[0] = ";
+            stuStatesStr += stuStates[0].toString();
+        }
+        for(int i = 1; i < stuStates.length; i ++){
+            stuStatesStr += ",stuStates[" + i + "] = ";
+            stuStatesStr += stuStates[i].toString();
+        }
+        try {
+            return "ALARM_TRAFFIC_FLOW_STAT_INFO{" +
+                    "nAction=" + nAction +
+                    ", nChannelID=" + nChannelID +
+                    ", szName UTF-8=" + new String(szName,"UTF-8").trim() +
+                    ", szName GBK=" + new String(szName,"GBK").trim() +
+                    ", PTS=" + PTS +
+                    ", nEventID=" + nEventID +
+                    ", stuUTC=" + stuUTC.toStringTime() +
+                    ", nSequence=" + nSequence +
+                    ", nStateNum=" + nStateNum +
+                    ", stuStates=" + stuStatesStr +
+                    ", nStopVehiclenum=" + nStopVehiclenum +
+                    ", nDetectionAreaVehicleNum=" + nDetectionAreaVehicleNum +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
new file mode 100644
index 0000000..249f4ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 交通路口停车事件 (对应 DH_ALARM_TRAFFIC_FLOW_VEHICLE_STOP)
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 表示抓拍序号  1表示抓拍正常结束 0表示抓拍异常结束
+     */
+    public int nSequence;
+    /**
+     * 区域路口停车信息
+     */
+    public TRAFFIC_FLOW_VEHICLE_STOP_INFO stuFlowVehicleStop = new TRAFFIC_FLOW_VEHICLE_STOP_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    @Override
+    public String toString() {
+        try {
+            return "ALARM_TRAFFIC_FLOW_VEHICLE_STOP_INFO{" +
+                    "nAction=" + nAction +
+                    ", nChannel=" + nChannel +
+                    ", szName UTF-8=" + new String(szName,"UTF-8").trim() +
+                    ", szName GBK=" + new String(szName,"GBK").trim() +
+                    ", stuUTC=" + stuUTC.toStringTime() +
+                    ", nUTCMS=" + nUTCMS +
+                    ", nSequence=" + nSequence +
+                    ", stuFlowVehicleStop=" + stuFlowVehicleStop.toString() +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java
new file mode 100644
index 0000000..8d73ef6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_LIGHT_STATE_INFO.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_TRFAFFIC_LIGHT_SOURCE;
+
+/**
+ * (交通灯事件)对应的数据块描述信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/29 16:41
+ */
+public class ALARM_TRAFFIC_LIGHT_STATE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 视频分析的数据源地址
+     */
+    public int nSource;
+    /**
+     * 帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 红绿灯触发源 枚举{@link EM_TRFAFFIC_LIGHT_SOURCE}
+     */
+    public int emLightSource;
+    /**
+     * stuLightPeriods元素个数
+     */
+    public int nLightPeriodsNum;
+    /**
+     * 每个元素表示一种灯亮的持续时间,时间单位毫秒
+     */
+    public NET_LIGHTPERIODS_INFO[] stuLightPeriods = new NET_LIGHTPERIODS_INFO[4];
+    /**
+     * 交通灯状态,数组下标为车道号,实际只用到了第一个元素
+     */
+    public NET_TRAFFIC_LIGHT_STATE[] stuLightStates = new NET_TRAFFIC_LIGHT_STATE[8];
+    /**
+     * stuLightStates元素个数
+     */
+    public int nLightStateNum;
+    /**
+     * 预留字段
+     */
+    public byte[] byReserved = new byte[1020];
+
+    public ALARM_TRAFFIC_LIGHT_STATE_INFO() {
+        for (int i = 0; i < stuLightPeriods.length; i++) {
+            stuLightPeriods[i] = new NET_LIGHTPERIODS_INFO();
+        }
+
+        for (int j = 0; j < stuLightStates.length; j++) {
+            stuLightStates[j] = new NET_TRAFFIC_LIGHT_STATE();
+        }
+
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java
new file mode 100644
index 0000000..7ca1d7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_TRAFFIC_VEHICLE_POSITION.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+
+/**
+ * @author : 260611
+ * @description : 车辆位置报警事件{@link NetSDKLib#NET_ALARM_TRAFFIC_VEHICLE_POSITION}
+ * @since : Created in 2022/03/01 14:55
+ */
+
+public class ALARM_TRAFFIC_VEHICLE_POSITION extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szEventName = new byte[NET_COMMON_STRING_128];
+    /**
+     * 物体ID
+     */
+    public int nObjectID;
+    /**
+     * 车牌号
+     */
+    public byte[] szPlateNumber = new byte[NET_COMMON_STRING_128];
+    /**
+     * 识别车牌与卡口抓拍线的相对距离(0为基准,表示视频抓拍卡口位置时的车牌距离;正数表示越过抓拍线;负数表示未越过抓拍线)
+     */
+    public int nPosition;
+    /**
+     * 开闸状态,具体请见 EM_OPEN_STROBE_STATE
+     */
+    public byte byOpenStrobeState;
+    /**
+     * 车牌置信度,范围[0, 255]
+     */
+    public int nPlateConfidence;
+    /**
+     * 车牌颜色
+     */
+    public byte[] szPlateColor = new byte[32];
+    /**
+     * 车牌类型
+     */
+    public byte[] szPlateType = new byte[32];
+    /**
+     * 车身置信度,范围[0, 255]
+     */
+    public int nVehicleConfidence;
+    /**
+     * 车头朝向,用于抓拍时,判断当前车头是否正对着相机, EM_VEHICLE_HEAD_DIRECTION
+     */
+    public int emVehicleHeadDirection;
+    /**
+     * 抓拍车的位置, EM_VEHICLE_POSITION
+     */
+    public int emVehiclePosition;
+    /**
+     * 车辆行驶方向(相对车道方向), EM_VEHICLE_DRIVING_DIRECTION
+     */
+    public int emDrivingDirection;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[427];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USERLOCK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USERLOCK_INFO.java
new file mode 100644
index 0000000..3474cff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USERLOCK_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 用户锁定报警事件, 对应 DH_ALARM_USERLOCK
+ * @origin autoTool
+ * @date 2023/11/28 15:07:03
+ */
+public class ALARM_USERLOCK_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuTime = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 用户名
+     */
+    public byte[] szUserName = new byte[128];
+    /**
+     * / 组名
+     */
+    public byte[] szGroup = new byte[128];
+    /**
+     * / 非法登录的IP
+     */
+    public byte[] szIllegalLoginIP = new byte[40];
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public ALARM_USERLOCK_INFO() {
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USER_LOCK_EVENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USER_LOCK_EVENT_INFO.java
new file mode 100644
index 0000000..e71e6ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_USER_LOCK_EVENT_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 事件类型 DH_ALARM_USER_LOCK_EVENT (用户锁定报警事件)对应的数据描述信息
+ * @origin autoTool
+ * @date 2023/11/27 20:14:15
+ */
+public class ALARM_USER_LOCK_EVENT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 用户名
+     */
+    public byte[] szUser = new byte[128];
+    /**
+     * / 组名
+     */
+    public byte[] szGroup = new byte[128];
+    /**
+     * / 设备IP
+     */
+    public byte[] szIP = new byte[40];
+    /**
+     * / 预留
+     */
+    public byte[] reserved = new byte[512];
+
+    public ALARM_USER_LOCK_EVENT_INFO() {
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java
new file mode 100644
index 0000000..84a1a3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_VEHICLE_INOUT_INFO.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * 事件类型 车辆进出车道报警
+ * {@link NetSDKLib#NET_ALARM_VEHICLE_INOUT}
+ *
+ * @author 47040
+ * @since Created in 2020/12/17 11:17
+ */
+public class ALARM_VEHICLE_INOUT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件动作,0表示脉冲事件
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 物体列表 长度由nObjectNum决定 指向 {@link NET_VEHICLE_OBJECT}
+     */
+    public Pointer pstObjets;
+    /**
+     * 物体有效个数
+     */
+    public int nObjectNum;
+    /**
+     * 统计有效个数
+     */
+    public int nStatNum;
+    /**
+     * 各个车道实时交通流量统计信息, 最大支持8车道
+     */
+    public NET_TRAFFIC_FLOW_STAT[] stuStats = new NET_TRAFFIC_FLOW_STAT[8];
+    
+    /**
+     * 雷达安装角度(雷达坐标系Y轴与正北方向的逆时针夹角)单位:度 (0 ~ 360)
+     */
+    public double dbRadarInstallAngle;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserverd = new byte[1016];
+
+    public ALARM_VEHICLE_INOUT_INFO() {
+        for (int i = 0; i < stuStats.length; i++) {
+            stuStats[i] = new NET_TRAFFIC_FLOW_STAT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WANDERDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WANDERDETECTION_INFO.java
new file mode 100644
index 0000000..ea6c6d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WANDERDETECTION_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 421657
+ * @description 徘徊事件(对应事件DH_ALARM_WANDERDETECTION)
+ * @origin autoTool
+ * @date 2023/09/22 16:32:04
+ */
+public class ALARM_WANDERDETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuTime = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 规则被触发的次数
+     */
+    public int nCount;
+    /**
+     * / 事件级别,GB31047需求
+     */
+    public int nLevel;
+    /**
+     * / 事件触发的预置点号,从1开始(没有表示未知)
+     */
+    public short nPreserID;
+    /**
+     * / 事件触发的预置名称
+     */
+    public byte[] szPresetName = new byte[64];
+    /**
+     * / 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * /保留字节
+     */
+    public byte[] byReserved = new byte[958];
+
+    public ALARM_WANDERDETECTION_INFO() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java
new file mode 100644
index 0000000..e599ee4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_LOWPOWER_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 无线设备低电量报警事件结构体
+ * @date 2022/07/19 10:21:10
+ */
+public class ALARM_WIRELESSDEV_LOWPOWER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否为低电量true低电量,false 电量正常,unknown未知 {@link NetSDKLib.NET_THREE_STATUS_BOOL}
+	 */
+	public int emResult;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME stuTime = new NET_TIME();
+	/**
+	 * 无线设备ID 此字段协议上已废弃
+	 */
+	public int nId;
+	/**
+	 * 无线设备类型 {@link com.netsdk.lib.enumeration.NET_WIRELESSDEV_LOWPOWER_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 无线配件序列号
+	 */
+	public byte[] szSN = new byte[32];
+	/**
+	 * 电量百分比
+	 */
+	public float fPercent;
+	/**
+	 * 通道号或探测器地址
+	 */
+	public int nIndex;	
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 预留
+	 */
+	public byte[] reserved = new byte[984];
+
+	public ALARM_WIRELESSDEV_LOWPOWER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java
new file mode 100644
index 0000000..7c45a4f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WIRELESSDEV_POWERLESS_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 探测器主电丢失事件(对应DH_ALARM_WIRELESSDEV_POWERLESS)
+ * @date 2023/03/09 20:12:33
+ */
+public class ALARM_WIRELESSDEV_POWERLESS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 探测器地址
+	 */
+	public int nIndex;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuLoacalTime = new NET_TIME_EX();
+	/**
+	 * 探测器类型
+	 */
+	public byte[] szModel = new byte[32];
+	/**
+	 * 探测器名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 探测器序列号
+	 */
+	public byte[] szSN = new byte[32];
+	/**
+	 * 探测器所属区域名称
+	 */
+	public byte[] szAreaName = new byte[32];
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserverd = new byte[128];
+
+	public ALARM_WIRELESSDEV_POWERLESS_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java
new file mode 100644
index 0000000..aaa4954
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型DH_ALARM_WORKSUIT_FEATURE_ABSTRACT
+ *              (工装特征向量建模结果上报事件)对应的数据块描述信息
+ * @date 2022/10/09 11:22:52
+ */
+public class ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 事件动作,0表示脉冲事件
+	 */
+	public int nAction;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuTime = new NET_TIME_EX();
+	/**
+	 * 工装建模结果个数
+	 */
+	public int nAbstractInfoNum;
+	/**
+	 * 工装建模结果信息
+	 */
+	public NET_WORKSUIT_ABSTRACT_INFO[] stuAbstractInfo = new NET_WORKSUIT_ABSTRACT_INFO[20];
+	/**
+	 * 预留字段
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public ALARM_WORKSUIT_FEATURE_ABSTRACT_INFO() {
+		for (int i = 0; i < stuAbstractInfo.length; i++) {
+			stuAbstractInfo[i] = new NET_WORKSUIT_ABSTRACT_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java
new file mode 100644
index 0000000..6537cf1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ANATOMY_TEMP_DETECT_PERSON_FILTER.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人员过滤信息
+ * @date 2021/02/22
+ */
+public class ANATOMY_TEMP_DETECT_PERSON_FILTER extends NetSDKLib.SdkStructure{
+	 /**
+     *  姓名 
+     */
+    public byte[] szName = new byte[64];
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL.java
new file mode 100644
index 0000000..5d325c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 布防失败细节
+ * @date 2023/03/15 16:25:59
+ */
+public class ARM_FAILED_DETAIL extends NetSDKLib.SdkStructure {
+	/**
+	 * 布防失败的区域号
+	 */
+	public int nArea;
+	/**
+	 * 报警源输入返回个数
+	 */
+	public int nAlarmSourceRet;
+	/**
+	 * 区域下包含的有源输入的防区
+	 */
+	public int[] arrAlarmSource = new int[72];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public ARM_FAILED_DETAIL() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL_EX.java
new file mode 100644
index 0000000..c0e9a5f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ARM_FAILED_DETAIL_EX.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 布防失败细节扩展字段
+ * @date 2023/03/15 16:29:32
+ */
+public class ARM_FAILED_DETAIL_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 布防失败的区域号
+	 */
+	public int nArea;
+	/**
+	 * 报警源输入返回个数
+	 */
+	public int nAlarmSourceRetEx;
+	/**
+	 * 区域下包含的有源输入的防区
+	 */
+	public int[] arrAlarmSourceEx = new int[256];
+	/**
+	 * 异常防区信息个数
+	 */
+	public int nZoneAbnormalNum;
+	/**
+	 * 异常防区信息,最大有1024个
+	 */
+	public NET_ZONE_ABNORMAL_INFO[] stuZoneAbnormal = new NET_ZONE_ABNORMAL_INFO[1024];
+
+	public ARM_FAILED_DETAIL_EX() {
+		for (int i = 0; i < stuZoneAbnormal.length; i++) {
+			stuZoneAbnormal[i] = new NET_ZONE_ABNORMAL_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java
new file mode 100644
index 0000000..1e9e7eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/AV_CFG_MONITOR_WALL_OUT_MODE_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 电视墙输出模式信息
+ * @date 2021/2/22
+ */
+public class AV_CFG_MONITOR_WALL_OUT_MODE_INFO extends NetSDKLib.SdkStructure {
+  /** 水平分辨率 */
+  public int nWidth;
+  /** 垂直分辨率 */
+  public int nHeight;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Auxs.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Auxs.java
new file mode 100644
index 0000000..67edb41
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Auxs.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_COMMON_STRING_32;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/11/9
+ */
+public class Auxs extends NetSDKLib.SdkStructure {
+    public byte[] auxs=new byte[CFG_COMMON_STRING_32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BODY_TRAIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BODY_TRAIT.java
new file mode 100644
index 0000000..bae212b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BODY_TRAIT.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/24 14:35
+ */
+public class BODY_TRAIT  extends NetSDKLib.SdkStructure {
+    /** EM_SEX_TYPE */
+    public int				emSex;					// 性别
+    /** EM_AGE_GROUP_TYPE  */
+    public int		emAgeGroup;				// 年龄组
+    /** EM_COAT_TYPE */
+    public int			emCoatType;				// 上衣类型
+    /** EM_TROUSERS_TYPE  */
+    public int		emTrousersType;			// 裤子类型
+    /**EM_ANGLE_TYPE  */
+    public int			emAngle;				// 人体角度
+    /** EM_CLOTHES_PATTERN */
+    public int		emUpperPattern;			// 上衣模式
+    /**EM_UNIFIED_COLOR_TYPE  */
+    public int	emTrousersColor;		// 裤子颜色
+    /** EM_HAS_UMBRELLA */
+    public int			emUmbrella;				// 打伞
+    /** EM_UNIFIED_COLOR_TYPE */
+    public int	emUmbrellaColor;		// 雨伞颜色
+    /** EM_HAS_HOLD */
+    public int				emHold;					// 胸前抱东西
+    /**  EM_CLOTHES_PATTERN*/
+    public int		emTrousersPattern;		// 裤子模式
+    /** EM_HAT_STYLE */
+    public  int			emHatType;				// 帽子款式
+    /** EM_UNIFIED_COLOR_TYPE */
+    public int	emHatColor;				// 帽子颜色
+    /** EM_UPPER_TYPE */
+    public int			emUpperType;			// 上衣类型
+    /** EM_UNIFIED_COLOR_TYPE */
+    public int	emCoatColor;			// 上衣颜色
+    /**EM_HAIR_STYLE  */
+    public int			emHairStyle;			// 发型
+    /** EM_UNIFIED_COLOR_TYPE */
+    public int	emHairColor;			// 头发颜色
+    /** EM_SHOES_TYPE */
+    public int			emShoesType;			// 鞋子款式
+    /** EM_UNIFIED_COLOR_TYPE*/
+    public int	emShoesColor;			// 鞋子颜色
+    /** EM_BAG_TYPE */
+    public int				emBagType;				// 箱包款式
+    /**  EM_UNIFIED_COLOR_TYPE */
+    public int	emBagColor;				// 箱包颜色
+    /** EM_MASK_TYPE */
+    public int			emMaskType;				// 口罩
+    /** EM_UNIFIED_COLOR_TYPE */
+    public int	emMaskColor;			// 口罩颜色
+    public NET_TIME_EX				stuSnapTime=new NET_TIME_EX();			// 抓图时间
+    public  byte[]					szReserved=new byte[1024];		// 预留字段
+
+    @Override
+    public String toString() {
+        return "BODY_TRAIT{" +
+                "emSex=" + emSex +
+                ", emAgeGroup=" + emAgeGroup +
+                ", emCoatType=" + emCoatType +
+                ", emTrousersType=" + emTrousersType +
+                ", emAngle=" + emAngle +
+                ", emUpperPattern=" + emUpperPattern +
+                ", emTrousersColor=" + emTrousersColor +
+                ", emUmbrella=" + emUmbrella +
+                ", emUmbrellaColor=" + emUmbrellaColor +
+                ", emHold=" + emHold +
+                ", emTrousersPattern=" + emTrousersPattern +
+                ", emHatType=" + emHatType +
+                ", emHatColor=" + emHatColor +
+                ", emUpperType=" + emUpperType +
+                ", emCoatColor=" + emCoatColor +
+                ", emHairStyle=" + emHairStyle +
+                ", emHairColor=" + emHairColor +
+                ", emShoesType=" + emShoesType +
+                ", emShoesColor=" + emShoesColor +
+                ", emBagType=" + emBagType +
+                ", emBagColor=" + emBagColor +
+                ", emMaskType=" + emMaskType +
+                ", emMaskColor=" + emMaskColor +
+                ", stuSnapTime=" + stuSnapTime +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_18.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_18.java
new file mode 100644
index 0000000..33fd0f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_18.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description
+ * @date 2023/04/20 10:05
+ */
+public class BYTE_18 extends NetSDKLib.SdkStructure {
+
+	public byte[] str_18 = new byte[18];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_2048.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_2048.java
new file mode 100644
index 0000000..9f77ac5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_2048.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2023/7/28 15:00
+ */
+public class BYTE_2048 extends NetSDKLib.SdkStructure{
+
+    public	 byte[]					SN_2048=new byte[2048];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_256.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_256.java
new file mode 100644
index 0000000..197d21d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_256.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2023/7/28 14:58
+ */
+public class BYTE_256 extends NetSDKLib.SdkStructure{
+
+    public	 byte[]					SN_256=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_32.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_32.java
new file mode 100644
index 0000000..9de51f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_32.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/8/31 20:35
+ */
+public class BYTE_32   extends NetSDKLib.SdkStructure {
+    public	 byte[]					SN_32=new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_40.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_40.java
new file mode 100644
index 0000000..5d764da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_40.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description
+ * @date 2023/03/15 20:35
+ */
+public class BYTE_40 extends NetSDKLib.SdkStructure {
+	public byte[] STR_40 = new byte[40];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_64.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_64.java
new file mode 100644
index 0000000..486e4de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/BYTE_64.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/12/22 10:05
+ */
+public class BYTE_64 extends NetSDKLib.SdkStructure{
+
+    public	 byte[]					SN_64=new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Byte64Arr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Byte64Arr.java
new file mode 100644
index 0000000..74c4278
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Byte64Arr.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/7/4 19:28
+ */
+public class Byte64Arr extends  NetSDKLib.SdkStructure{
+    public  byte[]  arr=new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ByteSize16.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ByteSize16.java
new file mode 100644
index 0000000..4f84804
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ByteSize16.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/8/10 14:14
+ */
+public class ByteSize16  extends NetSDKLib.SdkStructure{
+    public byte[]  byte16=new byte[16];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CAR_INFO.java
new file mode 100644
index 0000000..9f24325
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CAR_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车辆运行状态信息
+ * @date 2021/09/01
+ */
+public class CAR_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  机动车电子标识序列号
+     */
+    public byte[] szCarId = new byte[128];
+
+    /**
+     *  车牌号码
+     */
+    public byte[] szPlateNumber = new byte[128];
+
+    /**
+     *  车辆类型,参考NetSDKLib.EM_CAR_TYPE
+     */
+    public int emCarType;
+
+    /**
+     *  速度单位为米每秒(m/s)
+     */
+    public int nSpeed;
+
+    /**
+     *  加速度单位为米每平方秒(m/s2)
+     */
+    public int nAcceleration;
+
+    /**
+     *  车头方向角以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nHeadDirAngle;
+
+    /**
+     *  车辆故障报警自动驾驶汽车测试期间主动上报的故障信息,按位表示:Bit0:故障报警灯开启Bit1~Bit7:保留
+     */
+    public int nAlarm;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java
new file mode 100644
index 0000000..90e29eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_DOOR_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁的AB互锁的组
+ * @date 2021/2/7
+ */
+public class CFG_ABLOCK_DOOR_INFO extends NetSDKLib.SdkStructure {
+  /** 最大的门禁的互锁门通道数 */
+  public static final int CFG_MAX_ABLOCK_DOORS_NUM = 8;
+  /** 有效互锁门的个数 */
+  public int nDoor;
+  /** 互锁的门的通道号 */
+  public int[] anDoor = new int[CFG_MAX_ABLOCK_DOORS_NUM];
+
+  @Override
+  public String toString() {
+    return "CFG_ABLOCK_DOOR_INFO{" +
+            "nDoor=" + nDoor +
+            ", anDoor=" + Arrays.toString(anDoor) +
+            '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_INFO.java
new file mode 100644
index 0000000..6cca26e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ABLOCK_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁的AB互锁功能, 多个门通道,只有其他B通道都关闭,唯一的A通道才打开
+ * @date 2021/2/7
+ */
+public class CFG_ABLOCK_INFO extends NetSDKLib.SdkStructure {
+  /** 最大的互锁组数 */
+  public static final int CFG_MAX_ABLOCK_GROUP_NUM = 8;
+  /** 使能 */
+  public boolean bEnable;
+  /** 有效互锁组数 */
+  public int nDoors;
+  /** 互锁组信息 */
+  public CFG_ABLOCK_DOOR_INFO[] stuDoors =
+      (CFG_ABLOCK_DOOR_INFO[]) new CFG_ABLOCK_DOOR_INFO().toArray(CFG_MAX_ABLOCK_GROUP_NUM);
+
+  @Override
+  public String toString() {
+    StringBuilder builder = new StringBuilder();
+    for (int i = 0; i < nDoors; i++) {
+      builder.append(stuDoors[i].toString()).append("\n");
+    }
+    return "CFG_ABLOCK_INFO{"
+        + "bEnable="
+        + bEnable
+        + ", nDoors="
+        + nDoors
+        + ", stuDoors="
+        + builder.toString()
+        + '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java
new file mode 100644
index 0000000..79ff079
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_CONTROL_ASG.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门通道控制闸机参数
+ * @date 2021/2/7
+ */
+public class CFG_ACCESS_CONTROL_ASG extends NetSDKLib.SdkStructure {
+  /** 通行模式,{@link com.netsdk.lib.enumeration.EM_PASS_MODE} */
+  public int emPassMode;
+  /** 开门速度档位, 范围:0-7,对应1-8档 */
+  public int nOpenDoorSpeed;
+  /** 通行超时时间, 范围:2-60,单位:秒 */
+  public int nPassTimeOut;
+  /** 延时关门时间, 范围:0-60,单位:秒 */
+  public int nCloseDelayTime;
+  /** 闸机安全等级, 范围:0-4,对应1-5级 */
+  public int nSecurityLevel;
+  /** 二次开启功能开关;False:关闭,True:开启 */
+  public boolean bSecondOpenEnable;
+  /** 记忆功能开关;False:关闭,True:开启 */
+  public boolean bMemoryModeEnable;
+  /** 闸机防冲撞模式,参考枚举{@link EM_COLLISION_MODE} */
+  public int emCollisionMode;
+  /** 设备音量等级共8档, 范围:0-7, 0级表示静音 */
+  public int nVolumeLevel;
+  /** 闸机断电以后门摆动放向,{@link com.netsdk.lib.enumeration.EM_DIRECTION_AFTER_POWER_OFF} */
+  public int emDirectionAfterPowerOff;
+  /** 工作模式,{@link EM_ASG_WORK_MODE} */
+  public int emWorkMode; // 工作模式
+  /** 启动模式,{@link EM_STARTUP_MODE} */
+  public int emStartUpMode;
+  /** 主机侧门翼零位微调角度,进门方向右手边为主机侧门翼 */
+  public int nMasterWingAngleAdjust;
+  /** 从机侧门翼零位微调角度,进门方向左手边为从机侧门翼 */
+  public int nSlaveWingAngleAdjust;
+  /** 闸机类型,{@link EM_GATE_TYPE} */
+  public int emGateType;
+  /** 通道宽度,{@link EM_CHANNEL_WIDTH} */
+  public int emChannelWidth;
+  /** bSecondOpenEnable作用时间段,AccessTimeSchedule 配置索引 */
+  public int nSecondOpenTimeSection;
+  /** bMemoryModeEnable作用时间段,AccessTimeSchedule 配置索引 */
+  public int nMemoryModeTimeSection;
+  /** emWorkMode作用时间段,AccessTimeSchedule 配置索引 */
+  public int nWorkModeTimeSection;
+  /** 是否清理通行人数 */
+  public boolean bClearPassNum;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[112];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java
new file mode 100644
index 0000000..6cb613e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_GENERAL_INFO.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_ADDRESS_LEN;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_PASSWORD_LEN;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁基本配置
+ * @date 2021/2/7
+ */
+public class CFG_ACCESS_GENERAL_INFO extends NetSDKLib.SdkStructure {
+  /** 开门音频文件路径 */
+  public byte[] szOpenDoorAudioPath = new byte[MAX_ADDRESS_LEN];
+  /** 关门音频文件路径 */
+  public byte[] szCloseDoorAudioPath = new byte[MAX_ADDRESS_LEN];
+  /** 有人音频文件路径 */
+  public byte[] szInUsedAuidoPath = new byte[MAX_ADDRESS_LEN];
+  /** 暂停使用音频文件路径 */
+  public byte[] szPauseUsedAudioPath = new byte[MAX_ADDRESS_LEN];
+  /** 门未关音频文件路径 */
+  public byte[] szNotClosedAudioPath = new byte[MAX_ADDRESS_LEN];
+  /** 等待提示音频文件路径 */
+  public byte[] szWaitingAudioPath = new byte[MAX_ADDRESS_LEN];
+  /** 开锁命令响应间隔时间,单位秒,取值10、15(默认值)、20 */
+  public int nUnlockReloadTime;
+  /** 开锁输出保持时间,单位秒,取值1、2(默认)、3、4、5、6、9、15。 */
+  public int nUnlockHoldTime;
+
+  // 能力,bool对应java中byte
+  public byte abProjectPassword;
+  public byte abAccessProperty;
+  public byte abABLockInfo;
+  public byte byReserved;
+
+  /** 工程密码 */
+  public byte[] szProjectPassword = new byte[MAX_PASSWORD_LEN];
+  /** 门禁通道单双向配置,对应枚举{@link com.netsdk.lib.enumeration.CFG_ACCESS_PROPERTY_TYPE} */
+  public int emAccessProperty;
+  /** AB互锁信息 */
+  public CFG_ABLOCK_INFO stuABLockInfo;
+  /** 胁迫密码 */
+  public byte[] szDuressPassword = new byte[MAX_PASSWORD_LEN];
+  /** 胁迫使能 */
+  public boolean bDuressEnable;
+  /** 是否启用个性化密码 */
+  public boolean bCustomPasswordEnable;
+  /** 公共密码 */
+  public byte[] szCommonPassword = new byte[MAX_PASSWORD_LEN];
+  /** 梯控高峰时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标 */
+  public int nPeakTimeSection;
+  /** 是否为梯控高峰期, TRUE:高峰期, FALSE:平峰期 */
+  public boolean bPeakState;
+  /** 远程校验超时时间,单位:秒, 默认值:5秒,范围[1-15] */
+  public int nRemoteAuthTimeOut;
+  /** 楼层权限信息,每一个bit对应一个楼层,bit值1表示公共层,0表示权限楼层 */
+  public byte[] arrFloorPermission = new byte[64];
+  /** arrFloorPermission 数组个数 */
+  public int nFloorPermission;
+  /** 门通道控制闸机参数 */
+  public CFG_ACCESS_CONTROL_ASG stuAccessControlASG;
+  /** 门禁开门提示音 */
+  public CFG_ACCESS_VOICE stuAccessVoice;
+  /** 
+   * 门磁类型,参考{ @link EM_ACCESS_SENSOR_TYPE }
+   */
+  public int		emSensorType;				
+  /** 保留字节 */
+  public byte[]			szReserved= new byte[1120];		
+
+  @Override
+  public String toString() {
+    return "CFG_ACCESS_GENERAL_INFO{" +
+            "szOpenDoorAudioPath=" + Arrays.toString(szOpenDoorAudioPath) +
+            ", szCloseDoorAudioPath=" + Arrays.toString(szCloseDoorAudioPath) +
+            ", szInUsedAuidoPath=" + Arrays.toString(szInUsedAuidoPath) +
+            ", szPauseUsedAudioPath=" + Arrays.toString(szPauseUsedAudioPath) +
+            ", szNotClosedAudioPath=" + Arrays.toString(szNotClosedAudioPath) +
+            ", szWaitingAudioPath=" + Arrays.toString(szWaitingAudioPath) +
+            ", nUnlockReloadTime=" + nUnlockReloadTime +
+            ", nUnlockHoldTime=" + nUnlockHoldTime +
+            ", abProjectPassword=" + abProjectPassword +
+            ", abAccessProperty=" + abAccessProperty +
+            ", abABLockInfo=" + abABLockInfo +
+            ", byReserved=" + byReserved +
+            ", szProjectPassword=" + Arrays.toString(szProjectPassword) +
+            ", emAccessProperty=" + emAccessProperty +
+            ", stuABLockInfo=" + stuABLockInfo +
+            ", szDuressPassword=" + Arrays.toString(szDuressPassword) +
+            ", bDuressEnable=" + bDuressEnable +
+            ", bCustomPasswordEnable=" + bCustomPasswordEnable +
+            ", szCommonPassword=" + Arrays.toString(szCommonPassword) +
+            ", nPeakTimeSection=" + nPeakTimeSection +
+            ", bPeakState=" + bPeakState +
+            ", nRemoteAuthTimeOut=" + nRemoteAuthTimeOut +
+            ", arrFloorPermission=" + Arrays.toString(arrFloorPermission) +
+            ", nFloorPermission=" + nFloorPermission +
+            ", stuAccessControlASG=" + stuAccessControlASG +
+            ", stuAccessVoice=" + stuAccessVoice +
+            '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE.java
new file mode 100644
index 0000000..292838a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.CFG_EM_VOICE_ID;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁开门提示声
+ * @date 2021/2/7
+ */
+public class CFG_ACCESS_VOICE extends NetSDKLib.SdkStructure {
+  /** 当前播放语音ID,{@link CFG_EM_VOICE_ID} */
+  public int emCurrentVoiceID;
+
+  public CFG_ACCESS_VOICE_INFO[] arrayVoiceInfo =
+      (CFG_ACCESS_VOICE_INFO[]) new CFG_ACCESS_VOICE_INFO().toArray(16); // 语音列表
+  public int nVoiceCount; // arrayVoiceInfo 个数
+  public byte[] byReserved = new byte[1024]; // 预留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java
new file mode 100644
index 0000000..9b0b186
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCESS_VOICE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.CFG_EM_ASG_VOICE_DIRECTION;
+import com.netsdk.lib.enumeration.CFG_EM_VOICE_ID;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁开门语音信息
+ * @date 2021/2/7
+ */
+public class CFG_ACCESS_VOICE_INFO extends NetSDKLib.SdkStructure {
+  /** 语音ID,{@link CFG_EM_VOICE_ID} */
+  public int emVoiceID;
+  /** 语音内容 */
+  public byte[] szVoiceContent = new byte[128];
+  /** 语音文件路径及名称 */
+  public byte[] szFileName = new byte[128];
+  /** 闸机进出语音方向,{@link CFG_EM_ASG_VOICE_DIRECTION} */
+  public int emAsgVoiceDirection;
+  /** 预留字段 */
+  public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCURATE_NUMBER_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCURATE_NUMBER_STAT.java
new file mode 100644
index 0000000..7bc2a9e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACCURATE_NUMBER_STAT.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 精准客流能力,客流ReID, 人脸去重,客流聚档的对外能力
+ * @origin autoTool
+ * @date 2023/09/22 13:39:22
+ */
+public class CFG_ACCURATE_NUMBER_STAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持精准客流
+	 */
+	public int bSupport;
+	/**
+	 * 是否支持本地报表查询
+	 */
+	public int bSupportLocalDataStore;
+	/**
+	 * 精准人数统计类型 {@link com.netsdk.lib.enumeration.EM_RULE_TYPE_ACCURATE}
+	 */
+	public int emRuleType;
+	/**
+	 * 支持客流融合的通道号个数
+	 */
+	public int nChannelsNum;
+	/**
+	 * 支持客流融合的通道号,在RuleType为NumberStatCluster时有效
+	 */
+	public int[] nChannels = new int[1024];
+	/**
+	 * 单个通道支持的区域个数,NVR填写1,IPC根据支持的区域数填写
+	 */
+	public int nAreaNum;
+	/**
+	 * 是否支持营业时间设置,FaceRecognition存在支持和不支持营业时间设置两种形态
+	 */
+	public int bSupportTimeCfg;
+	/**
+	 * 支持的去重方向个数
+	 */
+	public int nDirectionNum;
+	/**
+	 * 支持的去重方向
+	 */
+	public int[] emDirection = new int[32];
+	/**
+	 * 支持查询粒度个数
+	 */
+	public int nGranularityNum;
+	/**
+	 * 支持查询粒度
+	 */
+	public byte[] szGranularity = new byte[8 * 8];
+
+	public CFG_ACCURATE_NUMBER_STAT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java
new file mode 100644
index 0000000..6699ed0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ACTIVITY_ANALYSE_CAPS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 活跃度统计规则
+ * @date 2021/01/11
+ */
+public class CFG_ACTIVITY_ANALYSE_CAPS extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 是否支持本地数据存储
+	 */
+	public int bSupportLocalDataStore;
+	
+	/**
+	 * 该规则支持的最大规则数
+	 */
+	public int nMaxRules;
+	
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARMIN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARMIN_INFO.java
new file mode 100644
index 0000000..0959b4c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARMIN_INFO.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+
+
+/**
+ * @author 421657
+ * @description 外部报警配置
+ * @origin autoTool
+ * @date 2023/11/01 20:42:35
+ */
+public class CFG_ALARMIN_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 报警通道号(0开始)
+     */
+    public int nChannelID;
+    /**
+     * / 使能开关
+     */
+    public int bEnable;
+    /**
+     * / 报警通道名称
+     */
+    public byte[] szChnName = new byte[64];
+    /**
+     * / 报警器类型,0:常闭,1:常开
+     */
+    public int nAlarmType;
+    /**
+     * / 报警联动
+     */
+    public CFG_ALARM_MSG_HANDLE stuEventHandler = new CFG_ALARM_MSG_HANDLE();
+    /**
+     * / 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
+     */
+    public CFG_TIME_SECTION[] stuTimeSection = new CFG_TIME_SECTION[7 * 6];
+    /**
+     * /
+     */
+    public int abDevID;
+    /**
+     * / 设备ID
+     */
+    public byte[] szDevID = new byte[128];
+    /**
+     * / 传感器触发模式, 0:高有效,1低有效;
+     * / 具体表现为传感器接地or电源,与nAlarmType组合使用
+     */
+    public int nPole;
+    /**
+     * 传感器感应方式 {@link com.netsdk.lib.enumeration.EM_SENSE_METHOD}
+     */
+    public int emSense;
+    /**
+     * / 报警使能控制方式 {@link com.netsdk.lib.enumeration.EM_CTRL_ENABLE}
+     */
+    public int emCtrl;
+    /**
+     * / 延时撤防时间,防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得
+     * / emCtrl值为EM_CTRL_NORMAL或EM_CTRL_ALWAYS_EN 时有效。
+     */
+    public int nDisDelay;
+    /**
+     * / 防区类型, 具体支持的类型通过查询能力获得 {@link com.netsdk.lib.enumeration.EM_CFG_DEFENCEAREATYPE}
+     */
+    public int emDefenceAreaType;
+    /**
+     * / 延时布防时间, 防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得
+     */
+    public int nEnableDelay;
+    /**
+     * / 根地址, -1表示无效, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推
+     */
+    public int nSlot;
+    /**
+     * / 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, -1表示无效, 从0开始
+     */
+    public int nLevel1;
+    /**
+     * / 表示nLevel2字段是否存在
+     */
+    public byte abLevel2;
+    /**
+     * / 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, -1表示无效, 从0开始
+     */
+    public int nLevel2;
+    /**
+     * / 门未关超时时间,单位为s,范围 15s-300s
+     */
+    public int nDoorNotClosedTimeout;
+
+    public CFG_ALARMIN_INFO() {
+        for (int i = 0; i < stuTimeSection.length; i++) {
+            stuTimeSection[i] = new CFG_TIME_SECTION();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SENSE_METHOD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SENSE_METHOD.java
new file mode 100644
index 0000000..1ae9770
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SENSE_METHOD.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryNewSystemInfo 接口的命令 CFG_CAP_ALARM (获取报警能力集)对应结构体
+ *              传感器报警方式
+ * @date 2023/04/18 10:57:31
+ */
+public class CFG_ALARM_SENSE_METHOD extends NetSDKLib.SdkStructure {
+	/**
+	 * 支持的传感器方式数
+	 */
+	public int nSupportSenseMethodNum;
+	/**
+	 * 支持的传感器方式,参考枚举{ @link EM_SENSE_METHOD}
+	 */
+	public int[] emSupportSenseMethod = new int[16];
+
+	public CFG_ALARM_SENSE_METHOD() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java
new file mode 100644
index 0000000..7b76a7e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警子系统配置 ==>CFG_CMD_ALARM_SUBSYSTEM
+ * @date 2023/03/15 19:18:13
+ */
+public class CFG_ALARM_SUBSYSTEM_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 本地防区数目
+	 */
+	public int nZoneNum;
+	/**
+	 * 本地防区号
+	 */
+	public int[] anZone = new int[256];
+	/**
+	 * 扩展防区数目
+	 */
+	public int nExZoneNum;
+	/**
+	 * 扩展防区号
+	 */
+	public int[] anExZone = new int[256];
+	/**
+	 * 延时撤防时间(进入延时), 单位为秒
+	 */
+	public int nDisableDelay;
+	/**
+	 * 延时布防时间(退出延时), 单位为秒
+	 */
+	public int nEnableDelay;
+	/**
+	 * 是否为公共子系统
+	 */
+	public int bIsPublic;
+	/**
+	 * 公共所属的子系统数目
+	 */
+	public int nPublicSubSystem;
+	/**
+	 * 公共所属的关联子系统
+	 */
+	public int[] anPublicSubSystem = new int[256];
+	/**
+	 * 报警联动
+	 */
+	public CFG_ALARM_SUBSYSTEM_MSG_HANDLE stuEventHandler = new CFG_ALARM_SUBSYSTEM_MSG_HANDLE();
+	/**
+	 * 是否启用子系统
+	 */
+	public int bEnable;
+
+	public CFG_ALARM_SUBSYSTEM_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java
new file mode 100644
index 0000000..aa7ec96
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ALARM_SUBSYSTEM_MSG_HANDLE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警联动
+ * @date 2023/03/15 19:18:13
+ */
+public class CFG_ALARM_SUBSYSTEM_MSG_HANDLE extends NetSDKLib.SdkStructure {
+	/**
+	 * 报警输出使能
+	 */
+	public int bAlarmOutEnable;
+	/**
+	 * 警号输出使能
+	 */
+	public int bAlarmBellEnable;
+	/**
+	 * 报警输出通道号个数
+	 */
+	public int nAlarmOutChannelNum;
+	/**
+	 * 报警输出通道号列表
+	 */
+	public int[] nAlarmOutChannels = new int[256];
+
+	public CFG_ALARM_SUBSYSTEM_MSG_HANDLE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java
new file mode 100644
index 0000000..592c07e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_DETECT_SCENE_CAPS.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体测温检测场景能力
+ * @date 2021/01/11
+ */
+public class CFG_ANATOMYTEMP_DETECT_SCENE_CAPS extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 人体测温智能支持类型 ,参考{ @link CFG_EM_FACEDETECT_TYPE }
+	 */
+	public int[] emFaceDetectTypes = new int[32];
+	
+	/**
+	 * 人体测温智能支持类型的个数
+	 */
+	public int nFaceDetectTypesNum;
+	
+	/**
+	 * 可见光的能力配置
+	 */
+	public CFG_ANATOMYTEMP_VISUAL_CAPS stuVisual;
+	
+	/**
+	 * 预留
+	 */
+	public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java
new file mode 100644
index 0000000..73d931e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ANATOMYTEMP_VISUAL_CAPS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体测温的可见光的能力
+ * @date 2021/01/11
+ */
+public class CFG_ANATOMYTEMP_VISUAL_CAPS extends NetSDKLib.SdkStructure{
+	/**
+	 * 是否支持人脸左右角度过滤
+	 */
+	public int bSupportFaceRight;
+
+	/**
+	 * 是否支持人脸上下角度过滤
+	 */
+	public int bSupportFaceUp;
+	
+	/**
+	 * 是否支持人脸左右歪头角度过滤
+	 */
+	public int bSupportFaceRoll;
+	
+	/**
+	 * 预留
+	 */
+	public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AREA_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AREA_MODE_INFO.java
new file mode 100644
index 0000000..72d8032
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AREA_MODE_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域信息
+ * @date 2022/07/22 14:43:48
+ */
+public class CFG_AREA_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 区域名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 该区域的总车位个数
+	 */
+	public int nCount;
+	/**
+	 * 区域坐标个数
+	 */
+	public int nAreaCount;
+	/**
+	 * 区域坐标
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuArea = new NetSDKLib.CFG_POLYGON[20];
+	/**
+	 * 车位类型: 0:未知, 1:小车车位, 2:大车车位, 3:危化品车位, 4:货车车位, 5:小客车车位, 6:大客车车位
+	 */
+	public int nSpaceType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[60];
+
+	public CFG_AREA_MODE_INFO() {
+		for (int i = 0; i < stuArea.length; i++) {
+			stuArea[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT.java
new file mode 100644
index 0000000..9f92b6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 语音激励
+ * @date 2020/11/9
+ */
+public class CFG_AUDIO_SPIRIT extends NetSDKLib.SdkStructure {
+  /** 使能 */
+  public boolean bEnable;
+  /** 激励音量阈值, 0~100 */
+  public int nAudioLimit; //
+  /** 激励延时时间, 单位: 秒 */
+  public int nDelayTime; //
+  /**
+   * 语音激励音频通道属性,由用户申请内存,大小为sizeof(CFG_AUDIO_SPIRIT_CHANNEL)*nChannelCount 对应结构体数组{@link
+   * CFG_AUDIO_SPIRIT_CHANNEL}
+   */
+  public Pointer pstuChannels; //
+  /** 音频通道数 */
+  public int nChannelCount; //
+  /** 激励联动项 */
+  public CFG_AUDIO_SPIRIT_LINKAGE stuLinkage; //
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java
new file mode 100644
index 0000000..82feab1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 语音激励音频通道配置
+ * @date 2020/11/9
+ */
+public class CFG_AUDIO_SPIRIT_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 语音激励联动视频通道号
+     */
+    public int				nChannel;				 
+    /**
+     * 语音激励优先级, 1~10
+     */
+    public int				nPriority;				 
+    /**
+     * 对应的视频摄像机的预置点, 与云台一致0~255
+     */
+    public int				nPreset;
+
+    @Override
+    public String toString() {
+        return "CFG_AUDIO_SPIRIT_CHANNEL{" +
+                "nChannel=" + nChannel +
+                ", nPriority=" + nPriority +
+                ", nPreset=" + nPreset +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java
new file mode 100644
index 0000000..4c5155b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUDIO_SPIRIT_LINKAGE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_MAX_LOWER_MATRIX_OUTPUT;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 语音激励联动项
+ * @date 2020/11/9
+ */
+public class CFG_AUDIO_SPIRIT_LINKAGE extends NetSDKLib.SdkStructure {
+  /** 矩阵输出口数量 */
+  public int nOutputNum;
+  /** 同步大画面输出到(多个)矩阵输出口 */
+  public int[] nOutputChanel = new int[CFG_MAX_LOWER_MATRIX_OUTPUT];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_HOMING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_HOMING.java
new file mode 100644
index 0000000..e0f4926
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_HOMING.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @创建人 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public class CFG_AUTO_HOMING extends NetSDKLib.SdkStructure {
+
+
+    /**
+     * 自动归位开关
+     */
+
+    public int	bEnable;
+
+    /**
+     * 空闲时间,表示空闲的时间,单位为秒
+     */
+    public int	nTime;
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_REMOTE_CHECK_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_REMOTE_CHECK_INFO_EX.java
new file mode 100644
index 0000000..560ff96
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_AUTO_REMOTE_CHECK_INFO_EX.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 开门远程验证扩展
+ * @origin autoTool
+ * @date 2023/08/24 14:01:18
+ */
+public class CFG_AUTO_REMOTE_CHECK_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 远程验证假日计划, 需要远程验证的假日计划, 值为AccessHolidaySchedule索引
+	 */
+	public int nHolidayScheduleID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[60];
+
+	public CFG_AUTO_REMOTE_CHECK_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_INFO.java
new file mode 100644
index 0000000..e7eac2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 标定基本信息
+ * @date 2021/02/02
+ */
+public class CFG_CALIBRATE_INFO extends NetSDKLib.SdkStructure{
+	
+	 /**
+	  * 标定信息单元二维数组
+	  */
+	public CFG_CALIBRATE_UNIT_INFO_ARR[] stuCalibrateUnitInfo = new CFG_CALIBRATE_UNIT_INFO_ARR[5];
+	
+	/**
+	 * 标定数量
+	 */
+	public int nInfoNum;
+	
+	public CFG_CALIBRATE_INFO() {
+		for (int i = 0; i < stuCalibrateUnitInfo.length; i++) {
+			stuCalibrateUnitInfo[i] = new CFG_CALIBRATE_UNIT_INFO_ARR();
+		}
+	}	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java
new file mode 100644
index 0000000..2f0942c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 标定信息单元
+ * @date 2021/02/02
+ */
+public class CFG_CALIBRATE_UNIT_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 分辨率高
+	 */
+	public int nHeight;
+	
+	/**
+	 * 分辨率宽
+	 */
+	public int nWidth;
+	
+	/**
+	 * 云台位置(P/T/Z 归一化)
+	 */
+	public float[] nPosition =new float[3];
+	
+	/**
+	 * 标定点坐标
+	 */
+	public int[] nLocation =new int[2];
+	
+	/**
+	 * 横向视场角(单位:0.01度)
+	 */
+	public int nHFOV;
+	
+	/**
+	 * 纵向视场角(单位:0.01度)
+	 */
+	public int nVFOV;
+		
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java
new file mode 100644
index 0000000..9293a27
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CALIBRATE_UNIT_INFO_ARR.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 标定信息单元数组
+ * @date 2021/02/02
+ */
+public class CFG_CALIBRATE_UNIT_INFO_ARR extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 标定信息单元
+	 */
+	public CFG_CALIBRATE_UNIT_INFO[] unitArr = new CFG_CALIBRATE_UNIT_INFO[2];
+	
+	public CFG_CALIBRATE_UNIT_INFO_ARR() {
+		for (int i = 0; i < unitArr.length; i++) {
+			unitArr[i] = new CFG_CALIBRATE_UNIT_INFO();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAMERA_OCCLUSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAMERA_OCCLUSION.java
new file mode 100644
index 0000000..80bfbcd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAMERA_OCCLUSION.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 相机遮挡报警配置
+ * @date 2023/03/31 11:19:02
+ */
+public class CFG_CAMERA_OCCLUSION extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 相机遮挡持续时间, 取值范围:0-10,默认值为2
+     */
+    public int nCameraOcclusionTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_CAMERA_OCCLUSION() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ACCESSCONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ACCESSCONTROL.java
new file mode 100644
index 0000000..933c939
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ACCESSCONTROL.java
@@ -0,0 +1,93 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 门禁控制能力
+ * @origin autoTool
+ * @date 2023/08/24 14:19:16
+ */
+public class CFG_CAP_ACCESSCONTROL extends NetSDKLib.SdkStructure {
+	/**
+	 * 门禁组数、
+	 */
+	public int nAccessControlGroups;
+	/**
+	 * 是否支持门禁报警日志记录在记录集中
+	 */
+	public int bSupAccessControlAlarmRecord;
+	/**
+	 * AccessControlCustomPassword记录集中密码的保存方式
+	 * {@link com.netsdk.lib.enumeration.EM_CUSTOM_PASSWORD_ENCRYPTION_MODE}
+	 */
+	public int emCustomPasswordEncryption;
+	/**
+	 * 是否支持信息功能 {@link com.netsdk.lib.enumeration.EM_SUPPORTFINGERPRINT}
+	 */
+	public int emSupportFingerPrint;
+	/**
+	 * 是否只支持单门授权(发卡)
+	 */
+	public int bOnlySingleDoorAuth;
+	/**
+	 * 是否支持授权异步返回
+	 */
+	public int bAsynAuth;
+	/**
+	 * 假日计划
+	 */
+	public NET_SPECIAL_DAYS_SCHEDULE stSpecialDaysSchedule = new NET_SPECIAL_DAYS_SCHEDULE();
+	/**
+	 * 是否支持多人多类型组合开门
+	 */
+	public int bSupportMultiUserMultiTypeAuth;
+	/**
+	 * 是否支持门禁快速导入功能 {@link com.netsdk.lib.enumeration.EM_SUPPORT_FAST_IMPORT_TYPE}
+	 */
+	public int bSupportFastImport;
+	/**
+	 * 是否支持门禁快速复核功能{@link com.netsdk.lib.enumeration.EM_SUPPORT_FAST_CHECK_TYPE}
+	 */
+	public int bSupportFastCheck;
+	/**
+	 * 是否支持梯控功能
+	 */
+	public int bSupportCallLift;
+	/**
+	 * 支持的梯控制方式类型的集合{@link com.netsdk.lib.enumeration.EM_SUPPORT_LIFT_CONTROL_TYPES}
+	 */
+	public int[] emSupportLiftControlTypes = new int[32];
+	/**
+	 * 支持的梯控方式类型的有效数
+	 */
+	public int nSupportLiftControlTypesNum;
+	/**
+	 * 支持静电检测功能
+	 */
+	public int bSupportESD;
+	/**
+	 * 是否支持假日常开常闭功能
+	 */
+	public int bSupportSpecialDaysAlwaysOpenOrClose;
+	/**
+	 * 能力bit位控制:0-不支持人员采集新接口, 1-支持人脸使用新接口, 2-支持身份证采集使用新接口, 4-支持指纹采集使用新接口,
+	 * 8-支持卡采集使用新接口 16-支持虹膜采集使用新接口, 32-支持掌纹采集使用新接口
+	 */
+	public int nSupportPersonCollection;
+	/**
+	 * 是否支持平台下发假日计划
+	 */
+	public int bSupportSpecialDaysConfig;
+	/**
+	 * 是否支持按照门通道设置门磁的常开/常闭类型
+	 */
+	public int bSupportSetDoorChannelSensorType;
+	/**
+	 * 保留字段
+	 */
+	public byte[] szResvered = new byte[1016];
+
+	public CFG_CAP_ACCESSCONTROL() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ALARM_INFO.java
new file mode 100644
index 0000000..28d0858
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ALARM_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取报警能力集
+ * @date 2023/04/18 10:57:31
+ */
+public class CFG_CAP_ALARM_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备是否支持PIR(人体热式感应器)报警,外部报警的一种
+	 */
+	public int bAlarmPir;
+	/**
+	 * 设备是否支持补光灯
+	 */
+	public int bFlashLight;
+	/**
+	 * 防区类型种类数,为0表示无此字段时报警输入不作为防区使用。
+	 */
+	public int nDefenceAreaTypeNum;
+	/** 
+	 * 支持防区类型,参考枚举{ @link EM_CFG_DEFENCEAREATYPE}
+	 */
+	public int[] emDefenceAreaType = new int[8];
+	/**
+	 * 延时防区的最大延时时间,单位为秒,只有支持延时防区时此字段才有效。
+	 */
+	public int nMaxDelay;
+	/**
+	 * 报警通道数,为了保持兼容性,此为0时表示每个通道支持所有类型的传感器
+	 */
+	public int nAlarmChannelNum;
+	/**
+	 * 报警通道集合
+	 */
+	public CFG_ALARM_SENSE_METHOD[] stuAlarmChannel = new CFG_ALARM_SENSE_METHOD[32];
+	/**
+	 * 警号个数
+	 */
+	public int nAlarmBellCount;
+	/**
+	 * 最大备用报警中心数,无此字段时默认为0,0表示不支持备用报警中心
+	 */
+	public int nMaxBackupAlarmServer;
+	/**
+	 * 最大电话报警中心数, 无此字段时默认为0,0表示不支持电话报警中心。
+	 */
+	public int nMaxPSTNAlarmServer;
+	/**
+	 * 报警设备是否支持AlarmRegion组件。如果没有该字段或者该字段为false,客户端使用已有报警组件(alarm、alarmSubregion)操作设备;如果该字段为true,客户端使用新报警组件操作设备
+	 */
+	public int bSupportAlarmRegion;
+	/**
+	 * VTH报警输入传感器类型NO、NC正确使用,无这个能力或false的VTH表示NO、NC与协议相反使用
+	 */
+	public int bVTHSensorTypeCorrectly;					
+	/**
+	 * 保留字段
+	 */
+	public byte[] szResvered = new byte[1024];					
+
+	public CFG_CAP_ALARM_INFO() {
+		for (int i = 0; i < stuAlarmChannel.length; i++) {
+			stuAlarmChannel[i] = new CFG_ALARM_SENSE_METHOD();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java
new file mode 100644
index 0000000..bfda78e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO.java
@@ -0,0 +1,192 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 视频分析能力集  对应能力集命令  CFG_CAP_CMD_VIDEOANALYSE 
+ * @date 2021/01/08
+ */
+public class CFG_CAP_ANALYSE_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 支持的场景个数
+	 */
+	public int nSupportedSceneNum;
+	
+	/**
+	 * 支持的场景列表
+	 */
+	public MaxNameByteArrInfo[] szSceneName = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_SCENE_LIST_SIZE);
+	
+	
+	/**
+	 * 每通道支持最大分析模块数
+	 */
+	public int nMaxMoudles;
+	
+	/**
+	 * 支持的检测物体类型个数
+	 */
+	public int nSupportedObjectTypeNum;
+		
+	/**
+	 * 支持的检测物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypeName = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+	
+	/**
+	 * 每通道支持最大规则条数
+	 */
+	public int nMaxRules;
+	
+	/**
+	 * 支持的事件类型规则个数
+	 */
+	public int nSupportedRulesNum;
+	
+	/**
+	 * 支持的事件类型规则列表,事件类型,详见dhnetsdk.h中"智能分析事件类型"
+	 */
+	public int[] dwRulesType = new int[NetSDKLib.MAX_RULE_LIST_SIZE];
+	
+	/**
+	 * 支持的最大标尺个数
+	 */
+	public int nMaxStaffs;
+		
+	/**
+	 * 折线最大顶点数
+	 */
+	public int nMaxPointOfLine;
+	
+	/**
+	 * 区域最大顶点数
+	 */
+	public int nMaxPointOfRegion;
+	
+	/**
+	 * 最大内部选项个数
+	 */
+	public int nMaxInternalOptions;
+	
+	/**
+	 * 是否支持复杂尺寸过滤器复杂尺寸过滤器使用独立的面积过滤和宽高比过滤参数
+	 */
+	public byte bComplexSizeFilter;
+	
+	/**
+	 * 是否支持特定的物体过滤器
+	 */
+	public byte bSpecifiedObjectFilter;
+	
+	/**
+	 * 支持模块中的最大排除区域个数
+	 */
+	public int nMaxExcludeRegionNum;
+		
+	/**
+	 * 支持的模块中的最大校准框个数
+	 */
+	public int nMaxCalibrateBoxNum;
+	
+	/**
+	 * 模块中至少需要设置的校准框个数
+	 */
+	public int nMinCalibrateBoxNum;
+	
+	/**
+	 * 模块中支持的最大特殊区域检测个数
+	 */
+	public int nMaxSepcialDetectRegions;
+	
+	/**
+	 * 支持的每天的时间段个数
+	 */
+	public int nSupportedTimeSectionNum;
+	
+	/**
+	 * 支持的特殊检测区属性个数
+	 */
+	public int nSpecialDetectPropertyNum;
+	
+	/**
+	 * 支持的特殊检测区属性
+	 */
+	public int[] nSupportedSpecialDetectPropertys = new int[NetSDKLib.EM_SEPCIALREGION_PROPERTY_TYPE.EM_SEPCIALREGION_PROPERTY_TYPE_NUM];
+	
+	/**
+	 * 支持的视频通道类型选择   第0位为1表示支持数字类型,第1位为1表示支持模拟类型,第2为1表示支持混合(数字和模拟)
+	 */
+	public int nSupportedVideoChannelType;
+	
+	/**
+	 * 是否支持多场景切换
+	 */
+	public byte bSupportMultiSceneSwitch;
+	
+	/**
+	 * 支持的场景能力集
+	 */
+	public CFG_VACAP_SUPPORTEDSCENES stSupportScenes;
+	
+	/**
+	 * 支持的场景组合项个数
+	 */
+	public int nSupportedComp;
+	
+	/**
+	 * 支持的场景组合项列表
+	 */
+	public CFG_SUPPORTED_COMP[] stuSupportedComp = (CFG_SUPPORTED_COMP[])new CFG_SUPPORTED_COMP().toArray(NetSDKLib.MAX_SUPPORTED_COMP_SIZE);
+	
+	/**
+	 * 0 Module/Rule配置均要设置(默认,智能服务器), 1 仅Rule配置要设置(IPC/xVR)
+	 */
+	public byte byFilterMask;
+	
+	/**
+	 * 摄像头安装角度显示方式,{ @link EM_DISPLAY_CAMERA_ANGLE_TYPE }
+	 */
+	public int emDisCameraAngleType;
+	
+	/**
+	 * 实际返回客流量统计场景PD个数
+	 */
+	public int nMaxNumberStatMultNum;
+	
+	/**
+	 * 实际返回客流量统计场景PD个数
+	 */
+	public CFG_NUMBERSTAT_MULT_INFO[] stuNumberStatMult = (CFG_NUMBERSTAT_MULT_INFO[])new CFG_NUMBERSTAT_MULT_INFO().toArray(NetSDKLib.MAX_NUMBER_STAT_MAULT_NUM);
+
+	/**
+	 * 全能力集,表示视频通道能力 full可以认为是不变的
+	 */
+	public VA_CAPS_INFO stuFullCaps;
+	
+	/**
+	 * 动态能力集,表示当前视频通道能力
+	 */
+	public VA_DYNAMIC_CAPS_INFO stuDynamicCaps;
+	
+	public CFG_CAP_ANALYSE_INFO() {
+		
+		for (int i = 0; i < szSceneName.length; i++) {
+			szSceneName[i] = new MaxNameByteArrInfo();
+		}
+		
+		for (int i = 0; i < szObjectTypeName.length; i++) {
+			szObjectTypeName[i] = new MaxNameByteArrInfo();
+		}
+		
+		for (int i = 0; i < stuSupportedComp.length; i++) {
+			stuSupportedComp[i] = new CFG_SUPPORTED_COMP();
+		}
+		
+		for (int i = 0; i < stuNumberStatMult.length; i++) {
+			stuNumberStatMult[i] = new CFG_NUMBERSTAT_MULT_INFO();
+		}
+	}	
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java
new file mode 100644
index 0000000..ce9c255
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_INFO_OPT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 视频分析能力集 简化结构体,用于查询IPC是否有目标识别能力 
+ * @date 2021/01/12
+ */
+public class CFG_CAP_ANALYSE_INFO_OPT extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 支持的场景个数
+	 */
+	public int nSupportedSceneNum;	
+	
+	/**
+	 * 支持的场景列表
+	 */
+	public MaxNameByteArrInfo[] szSceneName = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_SCENE_LIST_SIZE);
+	
+	public CFG_CAP_ANALYSE_INFO_OPT() {
+		for (int i = 0; i < szSceneName.length; i++) {
+			szSceneName[i] = new MaxNameByteArrInfo();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java
new file mode 100644
index 0000000..459f1ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_ANALYSE_REQ_EXTEND_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取能力的请求数据扩展
+ * @date 2021/01/11
+ */
+public class CFG_CAP_ANALYSE_REQ_EXTEND_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 结构体大小 
+	 */
+	public int dwSize;
+	
+	/**
+	 * 智能分析实例类型,参考{ @link CFG_EM_INSTANCE_SUBCLASS_TYPE}
+	 */
+	public int emSubClassID;
+	
+	public CFG_CAP_ANALYSE_REQ_EXTEND_INFO() {
+		this.dwSize = this.size();		
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java
new file mode 100644
index 0000000..ad15e88
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_CELIBRATE_AREA.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 标定区域能力信息
+ * @date 2021/01/11
+ */
+public class CFG_CAP_CELIBRATE_AREA extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 标定区域类型,参考{ @link EM_CALIBRATEAREA_TYPE}
+	 */
+	public int emType;
+	
+	 /**
+     *  支持的水平标尺最大个数
+     */
+    public byte byMaxHorizontalStaffNum;
+
+    /**
+     *  支持的水平标尺最小个数
+     */
+    public byte byMinHorizontalStaffNum;
+
+    /**
+     *  支持的垂直标尺最大个数
+     */
+    public byte byMaxVerticalStaffNum;
+
+    /**
+     *  支持的垂直标尺最小个数
+     */
+    public byte byMinVerticalStaffNum;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_SCENE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_SCENE.java
new file mode 100644
index 0000000..50be779
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CAP_SCENE.java
@@ -0,0 +1,268 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 场景能力
+ * @date 2021/01/11
+ */
+public class CFG_CAP_SCENE extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 场景名称
+	 */
+	public byte[] szSceneName = new byte[NetSDKLib.MAX_PATH];
+	
+	/**
+	 * 当前规则类型支持的检测物体类型个数
+	 */
+	public int nSupportedObjectTypeNum;
+	
+	/**
+	 * 当前规则类型支持的检测物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypeName = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+	
+	/**
+	 * 支持的规则个数
+	 */
+	public int nSupportRules;
+	
+	/**
+	 * 支持的规则列表
+	 */
+	public SCENE_SUPPORT_RULE[] stSpportRules = (SCENE_SUPPORT_RULE[])new SCENE_SUPPORT_RULE().toArray(NetSDKLib.MAX_RULE_LIST_SIZE);
+	
+	/**
+	 * 是否支持扰动强度设置  
+	 */
+	public byte bDisturbance;
+	
+	/**
+	 * 是否支持去扰动处理
+	 */
+	public byte bAntiDisturbance;
+	
+	/**
+	 * 是否支持逆光处理
+	 */
+	public byte bBacklight;
+	
+	/**
+     *  是否支持阴影处理
+     */
+    public byte bShadow;
+
+    /**
+     *  是否支持检测精度
+     */
+    public byte bAccuracy;
+
+    /**
+     *  是否支持检测步长
+     */
+    public byte bMovingStep;
+
+    /**
+     *  是否支持检测缩放
+     */
+    public byte bScalingFactor;
+
+    /**
+     *  是否支持Y分量判定阈值
+     */
+    public byte bThresholdY;
+
+    /**
+     *  是否支持UV分量判定阈值
+     */
+    public byte bThresholdUV;
+
+    /**
+     *  是否支持边缘检测判定阈值
+     */
+    public byte bThresholdEdge;
+
+    /**
+     *  是否支持检测平衡
+     */
+    public byte bDetectBalance;
+
+    /**
+     *  是否支持算法序号
+     */
+    public byte bAlgorithmIndex;
+
+    /**
+     *  是否支持高光处理,即Backgroud参数 
+     */
+    public byte bHighlight;
+
+    /**
+     *  是否支持物体抓图
+     */
+    public byte bSnapshot;
+
+    /**
+     *  是否支持检测区域配置
+     */
+    public byte bDetectRegion;
+
+    /**
+     *  是否支持排除区域配置
+     */
+    public byte bExcludeRegion;
+
+    /**
+     *  是否支持轮廓辅助跟踪
+     */
+    public byte bContourAssistantTrack;
+
+    /**
+     *  是否摄像头位置参数
+     */
+    public byte bCameraAspect;
+
+    /**
+     *  是否支持抖动参数
+     */
+    public byte bJitter;
+
+    /**
+     *  是否支持去抖动处理参数
+     */
+    public byte bDejitter;
+
+    /**
+     *  最大标定区域个数
+     */
+    public int nMaxCalibrateAreaNum;
+
+    /**
+     *  标定区域能力信息个数
+     */
+    public int nCalibrateAreaNum;
+
+    /**
+     *  标定区域能力信息
+     */
+    public CFG_CAP_CELIBRATE_AREA[] stCalibrateAreaCap = (CFG_CAP_CELIBRATE_AREA[])new CFG_CAP_CELIBRATE_AREA().toArray(NetSDKLib.MAX_CALIBRATEAREA_TYPE_NUM);
+
+    /**
+     *  是否支持像素计量方式
+     */
+    public byte bPixel;
+
+    /**
+     *  是否支持实际长度计量方式
+     */
+    public byte bMetric;
+
+    /**
+     *  是否支持远端近端标定后的像素计量方式
+     */
+    public byte bCalibratedPixel;
+
+    /**
+     *  当前场景下支持的子场景类型
+     */
+    public MaxSceneSupTypeByteArrInfo[] szSubType = (MaxSceneSupTypeByteArrInfo[])new MaxSceneSupTypeByteArrInfo().toArray(NetSDKLib.MAX_SCENE_SUBTYPE_NUM);
+
+    /**
+     *  子场景类型个数
+     */
+    public int nSubTypeNum;
+
+    /**
+     *  每个大类支持的最大规则条数
+     */
+    public int nMaxRules;
+
+    /**
+     *  是否支持重建背景,默认不支持(false)
+     */
+    public int bSupportedSetModule;
+
+    /**
+     *  是否支持打架标定配置,默认FALSE
+     */
+    public int bSupportFightCalibrate;
+
+    /**
+     *  车辆种类划分类型个数
+     */
+    public int nVehicleTypeSplitNum;
+
+    /**
+     *  车辆种类划分类型 { @link EM_VEHICLE_TYPE_SPLIT }
+     */
+    public int[] emVehicleTypeSplit = new int[16];
+
+    /**
+     *  是否支持隐私保护, false-不支持(默认);true-支持
+     */
+    public int bPrivacyMaskSupport;
+
+    /**
+     *  隐私保护的物体类型的数量
+     */
+    public int nPrivacyMaskCount;
+
+    /**
+     *  隐私保护的物体类型 { @link EM_PRIVACY_MASK_TYPE }
+     */
+    public int[] emPrivacyMaskTypes = new int[32];
+
+    /**
+     *  大类业务方案别名
+     */
+    public byte[] szClassAlias = new byte[16];
+
+    /**
+     *  人群分布图的标定线段相关能力 
+     */
+   public CROWD_CALIBRATION stuCalibration;
+
+    /**
+     *  人体测温场景能力
+     */
+   public CFG_ANATOMYTEMP_DETECT_SCENE_CAPS stuAnatomyTempDetect;
+
+    /**
+     *  立体行为分析场景能力
+     */
+   public CFG_STEREO_BEHAVIOR_SCENE_CAPS stuStereoBehaviorCaps;
+   
+   /**
+    * 姿态行为分析场景能力个数
+    */
+   public int nGenealAttitudeCaps;	
+   
+   /**
+    * 姿态行为分析场景能力
+    */
+   public CFG_GENEAL_ATTITUDE_CAPS[] stuGenealAttitudeCaps = (CFG_GENEAL_ATTITUDE_CAPS[])new CFG_GENEAL_ATTITUDE_CAPS().toArray(128);
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];		
+	
+
+	public CFG_CAP_SCENE() {
+		for (int i = 0; i < szObjectTypeName.length; i++) {
+			szObjectTypeName[i] = new MaxNameByteArrInfo();
+		}
+		for (int i = 0; i < stSpportRules.length; i++) {
+			stSpportRules[i] = new SCENE_SUPPORT_RULE();
+		}
+		for (int i = 0; i < stCalibrateAreaCap.length; i++) {
+			stCalibrateAreaCap[i] = new CFG_CAP_CELIBRATE_AREA();
+		}
+		
+		for (int i = 0; i < szSubType.length; i++) {
+			szSubType[i] = new MaxSceneSupTypeByteArrInfo();
+		}
+	}
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java
new file mode 100644
index 0000000..f9a0abb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHANNEL_TIME_SECTION.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 网络存储服务器配置
+ * @date 2022/09/08 19:33:10
+ */
+public class CFG_CHANNEL_TIME_SECTION extends NetSDKLib.SdkStructure {
+	/**
+	 * 存储时间段
+	 */
+	public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection = new NetSDKLib.CFG_TIME_SECTION[7 * 2];
+
+	public CFG_CHANNEL_TIME_SECTION() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.CFG_TIME_SECTION();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java
new file mode 100644
index 0000000..48141a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CHASSISINTRUSION_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 机箱入侵报警(防拆报警)配置
+ * @date 2023/03/15 21:57:49
+ */
+public class CFG_CHASSISINTRUSION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能开关
+	 */
+	public int bEnable;
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+
+	public CFG_CHASSISINTRUSION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSLINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSLINE_INFO.java
new file mode 100644
index 0000000..33c72ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSLINE_INFO.java
@@ -0,0 +1,141 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_CROSSLINEDETECTION (拌线入侵事件)对应的规则配置
+ * @date 2021/07/06
+ */
+public class CFG_CROSSLINE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  规则名称,不同规则不能重名
+     */
+    public byte[] szRuleName = new byte[NetSDKLib.MAX_NAME_LEN];
+
+    /**
+     *  规则使能
+     */
+    public byte bRuleEnable;
+
+    /**
+     *  触发跟踪使能,仅对绊线,入侵规则有效
+     */
+    public byte bTrackEnable;
+
+    /**
+     *  保留字段 
+     */
+    public byte[] bReserved = new byte[2];
+
+    /**
+     *  相应物体类型个数
+     */
+    public int nObjectTypeNum;
+
+    /**
+     *  相应物体类型列表
+     */
+    public MaxNameByteArrInfo[] szObjectTypes = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+
+    /**
+     *  检测方向:0:由左至右;1:由右至左;2:两者都可以
+     */
+    public int nDirection;
+
+    /**
+     *  警戒线顶点数
+     */
+    public int nDetectLinePoint;
+
+    /**
+     *  警戒线
+     */
+    public NetSDKLib.CFG_POLYLINE[] stuDetectLine = (NetSDKLib.CFG_POLYLINE[]) new NetSDKLib.CFG_POLYLINE().toArray(NetSDKLib.MAX_POLYLINE_NUM);
+    /**
+     *  报警联动
+     */
+    public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler;
+
+    /**
+     *  事件响应时间段
+     */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+    /**
+     *  stuTimeSection字段是否禁用,默认FALSE:不禁用,TRUE:禁用,用户控制
+     */
+    public boolean bDisableTimeSection;
+
+    /**
+     *  云台预置点编号 0~65535
+     */
+    public int nPtzPresetId;
+
+    /**
+     *  规则特定的尺寸过滤器是否有效
+     */
+    public boolean bSizeFileter;
+
+    /**
+     *  规则特定的尺寸过滤器
+     */
+    public NetSDKLib.CFG_SIZEFILTER_INFO stuSizeFileter;
+
+    /**
+     *  触发报警位置数
+     */
+    public int nTriggerPosition;
+
+    /**
+     *  触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
+     */
+    public byte[] bTriggerPosition = new byte[8];
+
+    /**
+     *  跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
+     */
+    public int nTrackDuration;
+
+    /**
+     *  检测的车辆子类型个数
+     */
+    public int nVehicleSubTypeNum;
+
+    /**
+     *  检测的车辆子类型列表
+     */
+    public int[] emVehicleSubType = new int[128];
+
+    /**
+     *  是否开启目标属性识别,默认false
+     */
+    public boolean bFeatureEnable;
+
+    /**
+     *  前端视频分析联动
+     */
+    public NetSDKLib.CFG_ALARM_MSG_HANDLE stuRemoteEventHandler;
+
+    /**
+     *  前端视频分析联动响应时间段
+     */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuRemoteTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+    
+    /**
+     *  stuRemoteTimeSection字段是否禁用, 默认FALSE:不禁用, TRUE:禁用, 用户控制
+     */
+    public boolean bDisableRemoteTimeSection;
+
+    /**
+     *  物体过滤器是否有效, 即stuObjectFilter 是否有效
+     */
+    public boolean bObjectFilter;
+
+    /**
+     *  物体过滤器信息 
+     */
+    public NET_CFG_OBJECT_FILTER_INFO stuObjectFilter;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSREGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSREGION_INFO.java
new file mode 100644
index 0000000..a3bb75a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_CROSSREGION_INFO.java
@@ -0,0 +1,173 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件)对应的规则配置
+ * @date 2021/07/06
+ */
+public class CFG_CROSSREGION_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  规则名称,不同规则不能重名
+     */
+    public byte[] szRuleName = new byte[NetSDKLib.MAX_NAME_LEN];
+
+    /**
+     *  规则使能
+     */
+    public byte bRuleEnable;
+
+    /**
+     *  触发跟踪使能,仅对绊线,入侵规则有效
+     */
+    public byte bTrackEnable;
+
+    /**
+     *  保留字段
+     */
+    public byte[] bReserved = new byte[2];
+
+    /**
+     *  相应物体类型个数
+     */
+    public int nObjectTypeNum;
+
+    /**
+     *  相应物体类型列表
+     */
+    public MaxNameByteArrInfo[] szObjectTypes = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+
+    /**
+     *  检测方向:0:Enter;1:Leave;2:Both
+     */
+    public int nDirection;
+
+    /**
+     *  警戒区顶点数
+     */
+    public int nDetectRegionPoint;
+
+    /**
+     *  警戒区
+     */
+    public NetSDKLib.CFG_POLYGON[] stuDetectRegion = (NetSDKLib.CFG_POLYGON[]) new NetSDKLib.CFG_POLYGON().toArray(NetSDKLib.MAX_POLYGON_NUM);
+    /**
+     *  报警联动
+     */
+    public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler;
+
+    /**
+     *  事件响应时间段
+     */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuTimeSectionWeekDay =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+    /**
+     *  stuTimeSection字段是否禁用,默认FALSE:不禁用,TRUE:禁用,用户控制
+     */
+    public boolean bDisableTimeSection;
+
+    /**
+     *  云台预置点编号 0~65535
+     */
+    public int nPtzPresetId;
+
+    /**
+     *  规则特定的尺寸过滤器是否有效
+     */
+    public boolean bSizeFileter;
+
+    /**
+     *  规则特定的尺寸过滤器
+     */
+    public NetSDKLib.CFG_SIZEFILTER_INFO stuSizeFileter;
+
+    /**
+     *  检测动作数
+     */
+    public int nActionType;
+
+    /**
+     *  检测动作列表,0-出现 1-消失 2-在区域内 3-穿越区域
+     */
+    public byte[] bActionType = new byte[4];
+
+    /**
+     *  最小目标个数(当bActionType中包含"2-在区域内"时有效)
+     */
+    public int nMinTargets;
+
+    /**
+     *  最大目标个数(当bActionType中包含"2-在区域内"时有效)
+     */
+    public int nMaxTargets;
+
+    /**
+     *  最短持续时间, 单位秒(当bActionType中包含"2-在区域内"时有效)
+     */
+    public int nMinDuration;
+
+    /**
+     *  报告时间间隔, 单位秒(当bActionType中包含"2-在区域内"时有效)
+     */
+    public int nReportInterval;
+
+    /**
+     *  跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 
+     */
+    public int nTrackDuration;
+
+    /**
+     *  检测的车辆子类型个数
+     */
+    public int nVehicleSubTypeNum;
+
+    /**
+     *  检测的车辆子类型列表
+     */
+    public int[] emVehicleSubType = new int[128];
+
+    /**
+     *  是否开启目标属性识别,默认false
+     */
+    public boolean bFeatureEnable;
+
+    /**
+     *  前端视频分析联动
+     */
+    public NetSDKLib.CFG_ALARM_MSG_HANDLE stuRemoteEventHandler;
+
+    /**
+     *  前端视频分析联动响应时间段
+     */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuRemoteTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+    /**
+     *  stuRemoteTimeSection字段是否禁用, 默认FALSE:不禁用, TRUE:禁用, 用户控制
+     */
+    public boolean bDisableRemoteTimeSection;
+
+    /**
+     *  物体过滤器是否有效, 即stuObjectFilter 是否有效
+     */
+    public boolean bObjectFilter;
+
+    /**
+     *  物体过滤器信息 
+     */
+    public NET_CFG_OBJECT_FILTER_INFO stuObjectFilter;
+
+    /**
+     *  灵敏度,值越小灵敏度越低。取值1-10
+     */
+    public int nSensitivity;
+
+    /**
+     *  报警类型, EM_CFG_CROSSREGION_ALARMTYPE
+     */
+    public int emAlarmType;
+
+
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java
new file mode 100644
index 0000000..b6dfafb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETAIL_DRIVEASSISTANT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 驾驶辅助场景配置
+ * @date 2021/2/22
+ */
+public class CFG_DETAIL_DRIVEASSISTANT_INFO extends NetSDKLib.SdkStructure {
+  /** 是否有效 */
+  public boolean bValid;
+  /** 车宽 0-5000mm 单位mm */
+  public int nVehicleWidth;
+  /** 相机高度 0-5000mm 单位mm */
+  public int nCamHeight;
+  /** 车头到相机的距离 0-5000mm 单位mm */
+  public int nCamToCarHead;
+  /** 保留 */
+  public byte[] byReserved = new byte[56];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGION.java
new file mode 100644
index 0000000..a8c0b2d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGION.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.CFG_COMMON_STRING_64;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_MOTION_COL;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_MOTION_ROW;
+
+/**
+ * @author 47081
+ * @description
+ * @date 2021/4/9
+ * @version 1.0
+ */
+public class CFG_DETECT_REGION extends NetSDKLib.SdkStructure {
+  /** 区域ID */
+  public int nRegionID;
+  /** 动态窗口名称 */
+  public byte[] szRegionName = new byte[CFG_COMMON_STRING_64];
+  /** 面积阀值,取值[0, 100] */
+  public int nThreshold;
+  /** 灵敏度1~6 */
+  public int nSenseLevel;
+  /** 动态检测区域的行数 */
+  public int nMotionRow;
+  /** 动态检测区域的列数 */
+  public int nMotionCol;
+  /** 检测区域,最多32*32块区域 */
+  public BYTE_32[] byRegion=new BYTE_32[MAX_MOTION_ROW];
+
+  public CFG_DETECT_REGION(){
+    for(int i=0;i<byRegion.length;i++){
+      byRegion[i]=new BYTE_32();
+    }
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java
new file mode 100644
index 0000000..8789a85
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DETECT_REGIONS_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 规则相关检测区域信息
+ * @date 2021/2/22
+ */
+public class CFG_DETECT_REGIONS_INFO extends NetSDKLib.SdkStructure {
+	/** 检测区域使能字段不存在时默认为TRUE */
+	public boolean bEnable;
+	/**
+	 * 检测区域顶点数
+	 */
+	public int nDetectRegionPoint;
+	/**
+	 * 检测区域
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuDetectRegion = new NetSDKLib.CFG_POLYGON[20];
+
+	public CFG_DETECT_REGIONS_INFO() {
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DEVLOCATION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DEVLOCATION_INFO.java
new file mode 100644
index 0000000..68ca65d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DEVLOCATION_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 设备安装位置的GPS坐标信息 
+ * @date 2021/02/01
+ */
+public class CFG_DEVLOCATION_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 经度 单位百万分之一度,范围0-360度
+	 */
+	public int unLongitude;
+	
+	/**
+	 * 纬度 单位百万分之一度,范围0-360度
+	 */
+	public int unLatitude;
+	
+	/**
+	 * 海拔 单位米
+	 */
+	public double dbAltitude;
+	
+	/**
+	 * GPS信息按照配置上报
+	 */
+	public int bConfigEnable;
+	
+	/**
+	 * 设备高度 单位米
+	 */
+	public float fHeight;
+	
+	
+	
+	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DISTRACT_DRIVING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DISTRACT_DRIVING.java
new file mode 100644
index 0000000..ead96cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DISTRACT_DRIVING.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 分心驾驶报警配置 DistractCfg
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_DISTRACT_DRIVING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 低头持续时间 取值范围:0-10,默认值为2
+     */
+    public int nBowDownTime;
+    /**
+     * 左顾右盼持续时间 取值范围:0-10,默认值为2
+     */
+    public int nGlanceRightAndLeftTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_DISTRACT_DRIVING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVEING_CALLING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVEING_CALLING.java
new file mode 100644
index 0000000..385f534
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVEING_CALLING.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 打电话报警配置
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_DRIVEING_CALLING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 低头持续时间 取值范围:0-10,默认值为2
+     */
+    public int nBowDownTime;
+    /**
+     * 打电话持续时间, 取值范围:0-10,默认值为2
+     */
+    public int nCallingTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_DRIVEING_CALLING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVER_NOBELT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVER_NOBELT.java
new file mode 100644
index 0000000..03ef41b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVER_NOBELT.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 未系安全带报警配置
+ * @date 2023/03/31 11:19:02
+ */
+public class CFG_DRIVER_NOBELT extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 未系安全带持续时间, 取值范围:0-255,默认值为10
+     */
+    public int nNobeltTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_DRIVER_NOBELT() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java
new file mode 100644
index 0000000..5f818e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_ACIONANAYLSE_INFO.java
@@ -0,0 +1,112 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_DRIVE_ACTION_ANAYLSE 驾驶行为分析 对应的规则配置
+ * @date 2023/03/31 11:19:02
+ */
+public class CFG_DRIVE_ACIONANAYLSE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 规则名称,不同规则不能重名
+     */
+    public byte[] szRuleName = new byte[128];
+    /**
+     * 规则使能
+     */
+    public int bRuleEnable;
+    /**
+     * 相应物体类型个数
+     */
+    public int nObjectTypeNum;
+    /**
+     * 相应物体类型列表
+     */
+    public byte[] szObjectTypes = new byte[16 * 128];
+    /**
+     * 报警联动
+     */
+    public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+    /**
+     * 事件响应时间段
+     */
+    public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection = new NetSDKLib.CFG_TIME_SECTION[7 * 10];
+    /**
+     * 云台预置点编号  0~65535
+     */
+    public int nPtzPresetId;
+    /**
+     * 灵敏度  取值1-10,默认值5 值越小灵敏度越低
+     */
+    public int nSensitivity;
+    /**
+     * 工作模式  0:正常模式 1:测试模式
+     */
+    public int nWorkMode;
+    /**
+     * 报警触发速度
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警分级速度
+     */
+    public int nGradeSpeed;
+    /**
+     * 疲劳驾驶报警配置
+     */
+    public CFG_FATIGUE_DRIVING stuFatigue = new CFG_FATIGUE_DRIVING();
+    /**
+     * 分心驾驶报警
+     */
+    public CFG_DISTRACT_DRIVING stuDistract = new CFG_DISTRACT_DRIVING();
+    /**
+     * 打电话报警配置
+     */
+    public CFG_DRIVEING_CALLING stuCalling = new CFG_DRIVEING_CALLING();
+    /**
+     * 离岗报警配置
+     */
+    public CFG_DRIVE_LEAVE_INFO stuLeave = new CFG_DRIVE_LEAVE_INFO();
+    /**
+     * 红外阻断报警配置
+     */
+    public CFG_INFRARED_BLOCKING stuInfraredBlocking = new CFG_INFRARED_BLOCKING();
+    /**
+     * 抽烟报警配置
+     */
+    public CFG_DRIVE_SMOKING stuSmoking = new CFG_DRIVE_SMOKING();
+    /**
+     * 相机遮挡持续时间
+     */
+    public CFG_CAMERA_OCCLUSION stuCameraOcclusionTime = new CFG_CAMERA_OCCLUSION();
+    /**
+     * 身份异常报警配置
+     */
+    public CFG_IDENTITY_ANOMALY stuIdentityAnomaly = new CFG_IDENTITY_ANOMALY();
+    /**
+     * 换人驾驶报警配置
+     */
+    public CFG_SUBSTITUTION_DRIVING stuSubstitution = new CFG_SUBSTITUTION_DRIVING();
+    /**
+     * 未系安全带报警配置
+     */
+    public CFG_DRIVER_NOBELT stuNobelt = new CFG_DRIVER_NOBELT();
+    /**
+     * 报警多抓张数 取值范围[0, 10],默认3
+     */
+    public int nPicNums;
+    /**
+     * 报警多抓时间间隔,单位:ms 取值范围[100, 10000],默认:3000
+     */
+    public int nPicInterval;
+
+    public byte[] byReserved = new byte[4092];
+
+    public CFG_DRIVE_ACIONANAYLSE_INFO() {
+        for (int i = 0; i < stuTimeSection.length; i++) {
+            stuTimeSection[i] = new NetSDKLib.CFG_TIME_SECTION();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java
new file mode 100644
index 0000000..928c1bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_LEAVE_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 离岗报警配置
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_DRIVE_LEAVE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 离岗持续时间, 取值范围:0-10,默认值为2
+     */
+    public int nLeaveTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_DRIVE_LEAVE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_SMOKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_SMOKING.java
new file mode 100644
index 0000000..12891ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_DRIVE_SMOKING.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 抽烟报警配置
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_DRIVE_SMOKING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 抽烟持续时间, 取值范围:0-10,默认值为2
+     */
+    public int nSmokingTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_DRIVE_SMOKING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ENCODECAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ENCODECAP.java
new file mode 100644
index 0000000..11d671e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_ENCODECAP.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.CFG_EM_PREVIEW_MODE;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_MAX_PREVIEW_MODE_SPLIT_TYPE_NUM;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_MAX_VIDEO_CHANNEL_NUM;
+
+/**
+ * 视频编码能力
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 22:24
+ */
+public class CFG_ENCODECAP extends NetSDKLib.SdkStructure {
+
+    /**
+     * 实际通道数
+     */
+    public int nChannelNum;
+    /**
+     * 各通道编码能力信息数组
+     */
+    public CFG_VIDEO_ENCODECAP[] stuVideoEncodeCap = new CFG_VIDEO_ENCODECAP[CFG_MAX_VIDEO_CHANNEL_NUM];
+    /**
+     * 多画面预览工作模式 枚举值 {@link CFG_EM_PREVIEW_MODE}
+     */
+    public int emPreviewMode;
+    /**
+     * 有效的多画面预览窗口分割种类数
+     */
+    public int nSplitModeNum;
+    /**
+     * 多画面预览窗口分割数信息, 可以为1, 4, 6, 8, 9, 16, 25, 36
+     */
+    public int[] anSplitMode = new int[CFG_MAX_PREVIEW_MODE_SPLIT_TYPE_NUM];
+    /**
+     * -1表示默认[1, 4, 8, 9, 16, …模拟通道数量], 为小于模拟通道数的N的平方数, 如果模拟通道大于8, 也包含8
+     * 支持的音频编码采样率
+     */
+    public int[] nAudioFrequence = new int[16];
+    /**
+     * 支持的音频编码采样率的实际个数
+     */
+    public int nAudioFrequenceCount;
+
+    public CFG_ENCODECAP() {
+        for (int i = 0; i < stuVideoEncodeCap.length; i++) {
+            stuVideoEncodeCap[i] = new CFG_VIDEO_ENCODECAP();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java
new file mode 100644
index 0000000..b2b744b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_EXITMAN_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 离开人员的滞留时间信息
+ * @date 2022/12/19 09:10:21
+ */
+public class CFG_EXITMAN_STAY_STAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 人员进入区域时间
+	 */
+	public CFG_NET_TIME_EX stuEnterTime = new CFG_NET_TIME_EX();
+	/**
+	 * 人员离开区域时间
+	 */
+	public CFG_NET_TIME_EX stuExitTime = new CFG_NET_TIME_EX();
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[104];
+
+	public CFG_EXITMAN_STAY_STAT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FATIGUE_DRIVING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FATIGUE_DRIVING.java
new file mode 100644
index 0000000..ff041f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FATIGUE_DRIVING.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 疲劳驾驶报警配置
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_FATIGUE_DRIVING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 闭眼持续时间 取值范围:0-10,默认值为2
+     */
+    public int nEyesClosedTime;
+    /**
+     * 哈欠持续时间 取值范围:0-10,默认值为2
+     */
+    public int nYawningTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_FATIGUE_DRIVING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FIREWARNING_EXT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FIREWARNING_EXT_INFO.java
new file mode 100644
index 0000000..8611019
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_FIREWARNING_EXT_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description FireWarningExt 配置( 对应CFG_CMD_FIRE_WARNING_EXT)
+ * @date 2023/05/24 10:24:47
+ */
+public class CFG_FIREWARNING_EXT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 可见光通道是否需要全景图
+	 */
+	public int bVisualOverviewEnable;
+	/**
+	 * 可见光通道是否需要细节图
+	 */
+	public int bVisualDetailEnable;
+	/**
+	 * 热成像通道抓图张数
+	 */
+	public int nThermoSnapTimes;
+
+	public CFG_FIREWARNING_EXT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java
new file mode 100644
index 0000000..88f8c46
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GENEAL_ATTITUDE_CAPS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 姿态行为分析场景能力
+ * @date 2021/03/31
+ */
+public class CFG_GENEAL_ATTITUDE_CAPS extends NetSDKLib.SdkStructure{
+    /**
+     *  支持的最大规则数
+     */
+    public int nMaxRules;
+
+    /**
+     *  大类外部翻译展示名称
+     */
+    public byte[] szShowType = new byte[32];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[988];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUIDESCREEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUIDESCREEN_INFO.java
new file mode 100644
index 0000000..839e4d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUIDESCREEN_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  诱导屏系统配置(对应 CFG_CMD_GUIDESCREEN 命令) 
+* @origin autoTool
+* @date 2023/06/27 15:49:59
+*/
+public class CFG_GUIDESCREEN_INFO extends NetSDKLib.SdkStructure {
+/** 
+上下屏时,上屏显示内容
+英文或常用中文汉字,中文需要GB2312编码,长度不超过64字节
+*/
+public			byte[]					szText=new byte[128];
+/**
+ 箭头标志数量
+*/
+public			int					nArrowNum;
+/** 
+箭头标志设置, 对应的屏从左至右依次排列
+*/
+public			CFG_GUISCREEN_ARROW[]					stuArrow=new CFG_GUISCREEN_ARROW[8];
+
+public			CFG_GUIDESCREEN_INFO(){
+		for(int i=0;i<stuArrow.length;i++){
+			stuArrow[i]=new CFG_GUISCREEN_ARROW();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUISCREEN_ARROW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUISCREEN_ARROW.java
new file mode 100644
index 0000000..123beed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_GUISCREEN_ARROW.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  诱导屏箭头设置 
+* @origin autoTool
+* @date 2023/06/27 15:49:59
+*/
+public class CFG_GUISCREEN_ARROW extends NetSDKLib.SdkStructure {
+/** 
+箭头指向 {@link com.netsdk.lib.enumeration.EM_DIRECTION}
+*/
+public			int					emDirect;
+/** 
+箭头相对于数字的位置 {@link com.netsdk.lib.enumeration.EM_GUIDESCREEN_POS}
+*/
+public			int					emPos;
+/** 
+是否滚动 {@link com.netsdk.lib.enumeration.EM_GUIDESCREEN_ROLL}
+*/
+public			int					emRoll;
+
+public			CFG_GUISCREEN_ARROW(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java
new file mode 100644
index 0000000..3195fd5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_HIGH_TOSS_DETECT_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.constant.SDKStructureFieldLenth;
+
+import static com.netsdk.lib.NetSDKLib.MAX_NAME_LEN;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型 {@link NetSDKLib#EVENT_IVS_HIGH_TOSS_DETECT} (高空抛物检测)对应的规则配置
+ * @date 2020/8/24
+ */
+public class CFG_HIGH_TOSS_DETECT_INFO extends NetSDKLib.SdkStructure {
+  /** 规则名称,不同规则不能重名 */
+  public byte[] szRuleName = new byte[MAX_NAME_LEN];
+  /** 规则使能 */
+  public boolean bRuleEnable;
+  /** 相应物体类型个数 */
+  public int nObjectTypeNum;
+  /** 相应物体类型列表 */
+  public byte[] szObjectTypes = new byte[MAX_OBJECT_LIST_SIZE * MAX_NAME_LEN];
+  /** 云台预置点编号 0~65535 */
+  public int nPtzPresetId;
+  /** 报警联动 */
+  public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler;
+  /** 事件响应时间段 */
+  public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection =
+      (NetSDKLib.CFG_TIME_SECTION[])
+          new NetSDKLib.CFG_TIME_SECTION().toArray(WEEK_DAY_NUM * MAX_REC_TSECT_EX);
+  /** 检测区顶点数 */
+  public int nDetectRegionPoint;
+  /** 检测区 */
+  public NetSDKLib.CFG_POLYGON[] stuDetectRegion =
+      (NetSDKLib.CFG_POLYGON[]) new NetSDKLib.CFG_POLYGON().toArray(20);
+  /** 规则特定的尺寸过滤器,为提高规则判断精度 */
+  public NetSDKLib.CFG_SIZEFILTER_INFO stuSizeFilter;
+  /** 尺寸过滤器使能 */
+  public boolean bSizeFilterEnable;
+  /** 灵敏度,越高越容易检测, 取值1-10,默认值5 */
+  public int nSensitivity;
+  /** 画轨迹使能 */
+  public boolean bTrackEnable;
+  /** 轨迹点数量,TrackEnable为true时有效(2~10) */
+  public int nTrackPointNum;
+  /** 轨迹线粗细等级,TrackEnable为true时有效(1~10) */
+  public int nTrackLineLevel;
+  /** 轨迹线颜色 */
+  public int emColor;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[3592];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IDENTITY_ANOMALY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IDENTITY_ANOMALY.java
new file mode 100644
index 0000000..bad5d13
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IDENTITY_ANOMALY.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 身份异常报警配置 IdentityAnomalyCfg
+ * @date 2023/03/31 11:19:02
+ */
+public class CFG_IDENTITY_ANOMALY extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1016];
+
+    public CFG_IDENTITY_ANOMALY() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_BLOCKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_BLOCKING.java
new file mode 100644
index 0000000..99d667d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_BLOCKING.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 红外阻断报警配置
+ * @date 2023/03/31 11:19:01
+ */
+public class CFG_INFRARED_BLOCKING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 红外阻断持续时间, 取值范围:0-10,默认值为2
+     */
+    public int nInfraredBlockingTime;
+    /**
+     * 时间间隔, 取值范围:0-65536,默认值为60
+     */
+    public int nAlarmInterval;
+    /**
+     * 报警触发速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmSpeed;
+    /**
+     * 报警上报速度, 取值范围:0-200,默认值为30
+     */
+    public int nAlarmReportSpeed;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_INFRARED_BLOCKING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_INFO.java
new file mode 100644
index 0000000..1bead52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INFRARED_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_INFRARED_FUNC_MODE;
+import com.netsdk.lib.enumeration.EM_INFRARED_LIGHT_LEVEL;
+
+/**
+ * 红外功能配置
+ * 对应配置项 {@link NetSDKLib#CFG_CMD_INFRARED_CONFIG}
+ */
+public class CFG_INFRARED_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 红外功能模式 枚举值 {@link EM_INFRARED_FUNC_MODE}
+     */
+    public int emInfraredMode;
+    /**
+     * 红外亮度 枚举值 {@link EM_INFRARED_LIGHT_LEVEL}
+     * 当且仅当 emInfraredMode 为 EM_INFRARED_FUNC_MODE_ON 即枚举值 1 时有效
+     */
+    public int emLightLevel;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java
new file mode 100644
index 0000000..46fc024
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_INTELLI_SHELF_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_INTELLI_SHELF(智能补货事件)对应的规则配置
+ * @date 2022/11/15 19:52:34
+ */
+public class CFG_INTELLI_SHELF_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 规则名称,不同规则不能重名
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 规则使能
+	 */
+	public int bRuleEnable;
+	/**
+	 * 相应物体类型个数
+	 */
+	public int nObjectTypeNum;
+	/**
+	 * 相应物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypes = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+	/**
+	 * 云台预置点编号 0~65535
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 事件响应时间段
+	 */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+	/**
+	 * 检测区顶点数
+	 */
+	public int nDetectRegionPoint;
+	/**
+	 * 检测区
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuDetectRegion = new NetSDKLib.CFG_POLYGON[20];
+	/**
+	 * 货架上货物百分比低于阈值则报警, 0表示不报警
+	 */
+	public short nThreshold;
+	/**
+	 * 区域ID,该通道和PresetID下的某个区域,取值范围1-5
+	 */
+	public short nAreaID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[4096];
+
+	public CFG_INTELLI_SHELF_INFO() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.TIME_SECTION_WEEK_DAY_10();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java
new file mode 100644
index 0000000..1fbfd78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_IVS_MAN_NUM_DETECTION_INFO.java
@@ -0,0 +1,109 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应的规则配置
+ * @date 2022/09/23 16:08:32
+ */
+public class CFG_IVS_MAN_NUM_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 规则名称,不同规则不能重名
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 规则使能
+	 */
+	public int bRuleEnable;
+	/**
+	 * 触发跟踪使能,仅对绊线,入侵规则有效
+	 */
+	public byte bTrackEnable;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved1 = new byte[3];
+	/**
+	 * 相应物体类型个数
+	 */
+	public int nObjectTypeNum;
+	/**
+	 * 相应物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypes = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 事件响应时间段
+	 */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+	/**
+	 * 云台预置点编号 0~65535
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 检测区域顶点数
+	 */
+	public int nDetectRegionPoint;
+	/**
+	 * 检测区域坐标
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuDetectRegion = new NetSDKLib.CFG_POLYGON[20];
+	/**
+	 * 异常人数阈值
+	 */
+	public int nThreshold;
+	/**
+	 * 人数异常检测方式 0-小于等于阈值报警 1-大于等于阈值报警
+	 */
+	public int nDetectType;
+	/**
+	 * null
+	 */
+	public int nSensitivity;
+	/**
+	 * 最大检测高度,单位cm
+	 */
+	public int nMaxHeight;
+	/**
+	 * 最小检测高度,单位cm
+	 */
+	public int nMinHeight;
+	/**
+	 * 是否开启滞留检测报警功能, 对应报警为StayDetection。
+	 */
+	public int bStayDetectEnable;
+	/**
+	 * 最短滞留持续时间,单位秒[2, 65535], 开启滞留检测报警时需设置
+	 */
+	public int nStayMinDuration;
+	/**
+	 * 是否开启人数异常报警功能, 默认为TRUE。对应报警为ManNumDetection
+	 */
+	public int bManNumAlarmEnable;
+	/**
+	 * 区域ID(一个预置点对应多个区域ID)
+	 */
+	public int nAreaID;
+	/**
+	 * 计划ID,范围 1~MaxNumberStatPlan
+	 */
+	public int nPlanId;
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[504];
+
+	public CFG_IVS_MAN_NUM_DETECTION_INFO() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.TIME_SECTION_WEEK_DAY_10();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_DAYNIGHT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_DAYNIGHT.java
new file mode 100644
index 0000000..27def0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_DAYNIGHT.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 白天黑夜补光灯灵敏度配置
+ * @date 2023/05/23 09:40:10
+ */
+public class CFG_LIGHTING_V2_DAYNIGHT extends NetSDKLib.SdkStructure {
+	/**
+	 * 各类型灯光信息
+	 */
+	public CFG_LIGHTING_V2_UNIT[] anLightInfo = new CFG_LIGHTING_V2_UNIT[3];
+	/**
+	 * 灯光类型数量
+	 */
+	public int nLightInfoLen;
+
+	public CFG_LIGHTING_V2_DAYNIGHT() {
+		for (int i = 0; i < anLightInfo.length; i++) {
+			anLightInfo[i] = new CFG_LIGHTING_V2_UNIT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_INFO.java
new file mode 100644
index 0000000..1ade3e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 补光灯灵敏度配置
+ * @date 2023/05/23 09:40:10
+ */
+public class CFG_LIGHTING_V2_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道
+	 */
+	public int nChannel;
+	/**
+	 * 白天黑夜对应灯光配置数量
+	 */
+	public int nDNLightInfoNum;
+	/**
+	 * 白天黑夜对应灯光配置 从元素0开始分别表示 白天、夜晚、普通、顺光、一般逆光、强逆光、低照度、自定义
+	 */
+	public CFG_LIGHTING_V2_DAYNIGHT[] anDNLightInfo = new CFG_LIGHTING_V2_DAYNIGHT[8];
+
+	public CFG_LIGHTING_V2_INFO() {
+		for (int i = 0; i < anDNLightInfo.length; i++) {
+			anDNLightInfo[i] = new CFG_LIGHTING_V2_DAYNIGHT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_UNIT.java
new file mode 100644
index 0000000..d066713
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LIGHTING_V2_UNIT.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 补光灯灵敏度配置信息单元
+ * @date 2023/05/23 09:40:10
+ */
+public class CFG_LIGHTING_V2_UNIT extends NetSDKLib.SdkStructure {
+	/**
+	 * 灯光类型 {@link com.netsdk.lib.enumeration.EM_CFG_LC_LIGHT_TYPE}
+	 */
+	public int emLightType;
+	/**
+	 * 灯光模式 {@link com.netsdk.lib.enumeration.EM_CFG_LC_MODE}
+	 */
+	public int emMode;
+	/**
+	 * 灯光补偿
+	 */
+	public int nCorrection;
+	/**
+	 * 灯光灵敏度
+	 */
+	public int nSensitive;
+	/**
+	 * 补光灯开关延时
+	 */
+	public int nLightSwitchDelay;
+	/**
+	 * 近光灯组信息
+	 */
+	public NET_LIGHT_INFO[] anNearLight = new NET_LIGHT_INFO[4];
+	/**
+	 * 近光灯组数量
+	 */
+	public int nNearLightLen;
+	/**
+	 * 中光灯组信息
+	 */
+	public NET_LIGHT_INFO[] anMiddleLight = new NET_LIGHT_INFO[4];
+	/**
+	 * 中光灯组数量
+	 */
+	public int nMiddleLightLen;
+	/**
+	 * 远光灯组信息
+	 */
+	public NET_LIGHT_INFO[] anFarLight = new NET_LIGHT_INFO[4];
+	/**
+	 * 远光灯组数量
+	 */
+	public int nFarLightLen;
+	/**
+	 * 当前白光灯上限亮度相对于白光灯最大亮度的百分比0~100
+	 */
+	public int nPercentOfMaxBrightness;
+	/**
+	 * 智能补光方案下生效,表示红外白光切换延时,防止来回切换影响寿命和体验单位秒 范围0-300 默认30s
+	 */
+	public int nAIMixLightSwitchDelay;
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[120];
+
+	public CFG_LIGHTING_V2_UNIT() {
+		for (int i = 0; i < anNearLight.length; i++) {
+			anNearLight[i] = new NET_LIGHT_INFO();
+		}
+		for (int i = 0; i < anMiddleLight.length; i++) {
+			anMiddleLight[i] = new NET_LIGHT_INFO();
+		}
+		for (int i = 0; i < anFarLight.length; i++) {
+			anFarLight[i] = new NET_LIGHT_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LINK_CLASS_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LINK_CLASS_TYPE.java
new file mode 100644
index 0000000..b989a93
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LINK_CLASS_TYPE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 联动业务大类选项
+ * @date 2021/01/11
+ */
+public class CFG_LINK_CLASS_TYPE extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 待级联的业务所在通道号
+	 */
+	public int nChannel;
+	
+	/**
+	 * 待级联的业务大类,参考{ @link NetSDKLib.EM_SCENE_TYPE}
+	 */
+	public int emClassType;
+	
+	/**
+	 * 联动状态下是否支持全时检测
+	 */
+	public int bSupportAllTimeWork;
+	
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[252];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java
new file mode 100644
index 0000000..37d0ba4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.constant.SDKStructureFieldLenth;
+
+/**
+ * @author 251823
+ * @description 设备参数标定配置
+ * @date 2021/02/01
+ */
+public class CFG_LOCATION_CALIBRATE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 可见光横向视角
+	 */
+	public int nVisualMaxHFOV;
+	
+	/**
+	 * 可见光纵向视角
+	 */
+	public int nVisualMaxVFOV;
+	
+	/**
+	 * 热成像横向视角
+	 */
+	public int nThermoMaxHFOV;
+	
+	/**
+	 * 热成像纵向视角
+	 */
+	public int nThermoMaxVFOV;
+	
+	/**
+	 * 标定点信息
+	 */
+	public CFG_LOCATION_CALIBRATE_POINT_INFO[] stuPointInfo = new CFG_LOCATION_CALIBRATE_POINT_INFO[SDKStructureFieldLenth.MAX_CALIBRATE_POINT_NUM];
+	
+	/**
+	 * 标定点个数
+	 */
+	public int nPointNum;
+	
+	/**
+	 * 字节对齐 
+	 */
+	public byte[] byReserved1 = new byte[4];
+	
+	public CFG_LOCATION_CALIBRATE_INFO() {
+		for (int i = 0; i < stuPointInfo.length; i++) {
+			stuPointInfo[i] = new CFG_LOCATION_CALIBRATE_POINT_INFO();
+		}
+	}
+					
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java
new file mode 100644
index 0000000..ac44284
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_LOCATION_CALIBRATE_POINT_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 标定点信息 
+ * @date 2021/02/02
+ */
+public class CFG_LOCATION_CALIBRATE_POINT_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 标定点ID
+	 */
+	public int nID;
+	
+	/**
+	 * 标定点名称
+	 */
+	public byte[]  szName = new byte[NetSDKLib.CFG_COMMON_STRING_128];
+	
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	
+	/**
+	 * 经度
+	 */
+	public int nLongitude;
+	
+	/**
+	 * 纬度
+	 */
+	public int nLatitude;
+	
+	/**
+	 * 海拔
+	 */
+	public double fAltitude;
+	
+	/**
+	 * 标定点基本信息
+	 */
+	public CFG_CALIBRATE_INFO stuCalibrateInfo;
+	
+	/**
+	 * 字节对齐 
+	 */
+	public byte[] byReserved1 = new byte[4];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..da3489b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MANNUMDETECTION_RULE_INFO.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域内人数统计
+ * @date 2021/01/11
+ */
+public class CFG_MANNUMDETECTION_RULE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_INFO.java
new file mode 100644
index 0000000..43f25b9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_INFO.java
@@ -0,0 +1,125 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.ptr.IntByReference;
+
+import java.util.Arrays;
+
+import static com.netsdk.lib.NetSDKLib.MAX_REC_TSECT;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.*;
+
+/**
+ * @author 47081
+ * @description 动态监测报警配置,对应接口 {@link
+ *     com.netsdk.lib.NetSDKLib#CLIENT_GetNewDevConfig(NetSDKLib.LLong, String, int, byte[], int,
+ *     IntByReference, int)}和{@link NetSDKLib#CLIENT_SetNewDevConfig(NetSDKLib.LLong, String, int,
+ *     byte[], int, IntByReference, IntByReference, int)}
+ * @date 2021/4/9
+ * @version 1.0
+ */
+public class CFG_MOTION_INFO extends NetSDKLib.SdkStructure {
+  /** 报警通道号(0开始), nVersion=1时,此字段无效 */
+  public int nChannelID;
+  /** 使能开关 */
+  public int bEnable;
+  /** 一代动检灵敏度1~6 */
+  public int nSenseLevel;
+  /** 一代动态检测区域的行数 */
+  public int nMotionRow;
+  /** 一代动态检测区域的列数 */
+  public int nMotionCol;
+  /** 一代检测区域,最多32*32块区域 */
+  public BYTE_32[] byRegion = new BYTE_32[MAX_MOTION_ROW];
+  /** 报警联动 */
+  public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler=new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+  /** 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的stuTimeSection */
+  public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection =
+          new NetSDKLib.CFG_TIME_SECTION[WEEK_DAY_NUM * MAX_REC_TSECT];
+  /** 0, 1, 由能力集确定, 只读, 等于1时以下字段有效 */
+  public int nVersion;
+  /** 只读,决定nSenseLevel是否有效 */
+  public int bSenseLevelEn;
+  /** 只读,面积占用比使能, 决定nVolumeRatio是否有效 */
+  public int bVRatioEn;
+  /** 一代动检的面积占用比,1-100 */
+  public int nVolumeRatio;
+  /** 只读,灵敏度使能,决定nSubRatio值是否有效 */
+  public int bSRatioEn;
+  /** 一代动检的残差阈值, 1-100 */
+  public int nSubRatio;
+  /** 此字段及以下两个字段已废弃 */
+  public int abWindow;
+  /** 视频窗口个数 */
+  @Deprecated public int nWindowCount;
+  /** 视频窗口数组 */
+  @Deprecated
+  public CFG_MOTION_WINDOW[] stuWindows = new CFG_MOTION_WINDOW[MAX_MOTION_WINDOW];
+  /** 只读, 1:nRegionCount,stuRegion有效 0:nMotionRow,nMotionCol,byRegion有效 */
+  public int abDetectRegion;
+  /** 三代动态检测区域个数 */
+  public int nRegionCount;
+  /** 三代动态检测区域 */
+  public CFG_DETECT_REGION[] stuRegion =
+    new CFG_DETECT_REGION[MAX_MOTION_WINDOW];
+  /** 前端动态检测联动 */
+  public NetSDKLib.CFG_ALARM_MSG_HANDLE stuRemoteEventHandler=new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+  /** 前端动态检测联动, 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuRemoteEventHandler中的stuTimeSection */
+  public NetSDKLib.CFG_TIME_SECTION[] stuRemoteTimeSection =
+          new NetSDKLib.CFG_TIME_SECTION[WEEK_DAY_NUM * MAX_REC_TSECT];
+
+  @Override
+  public String toString() {
+    return "CFG_MOTION_INFO{" +
+            "nChannelID=" + nChannelID +
+            ", bEnable=" + bEnable +
+            ", nSenseLevel=" + nSenseLevel +
+            ", nMotionRow=" + nMotionRow +
+            ", nMotionCol=" + nMotionCol +
+            ", byRegion=" + Arrays.toString(byRegion) +
+            ", stuEventHandler=" + stuEventHandler +
+            ", stuTimeSection=" + Arrays.toString(stuTimeSection) +
+            ", nVersion=" + nVersion +
+            ", bSenseLevelEn=" + bSenseLevelEn +
+            ", bVRatioEn=" + bVRatioEn +
+            ", nVolumeRatio=" + nVolumeRatio +
+            ", bSRatioEn=" + bSRatioEn +
+            ", nSubRatio=" + nSubRatio +
+            ", abWindow=" + abWindow +
+            ", nWindowCount=" + nWindowCount +
+            ", stuWindows=" + Arrays.toString(stuWindows) +
+            ", abDetectRegion=" + abDetectRegion +
+            ", nRegionCount=" + nRegionCount +
+            ", stuRegion=" + Arrays.toString(stuRegion) +
+            ", stuRemoteEventHandler=" + stuRemoteEventHandler +
+            ", stuRemoteTimeSection=" + Arrays.toString(stuRemoteTimeSection) +
+            '}';
+  }
+      public  CFG_MOTION_INFO(){
+            for(int i=0;i<byRegion.length;i++){
+              byRegion[i]=new BYTE_32();
+            }
+
+
+            for(int i=0;i<stuTimeSection.length;i++){
+              stuTimeSection[i]=new  NetSDKLib.CFG_TIME_SECTION();
+            }
+
+            for(int i=0;i<stuWindows.length;i++){
+              stuWindows[i]=new CFG_MOTION_WINDOW();
+            }
+
+            for(int i=0;i<stuRegion.length;i++){
+              stuRegion[i]= new  CFG_DETECT_REGION();
+            }
+            for(int i=0;i<stuRemoteTimeSection.length;i++){
+              stuRemoteTimeSection[i]=new NetSDKLib.CFG_TIME_SECTION();
+            }
+
+      }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_WINDOW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_WINDOW.java
new file mode 100644
index 0000000..640b62f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_MOTION_WINDOW.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @description 动检支持的视频窗口配置
+ * @date 2021/4/9
+ * @version 1.0
+ */
+public class CFG_MOTION_WINDOW extends NetSDKLib.SdkStructure {
+  /** 面积阀值,取值[0, 100] */
+  public int nThreshold;
+  /** 灵敏度,取值[0, 100] */
+  public int nSensitive;
+  /** 动检窗口区域, 坐标位置取值[0, 8192) */
+  public NetSDKLib.CFG_RECT stuWindow;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_GROUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_GROUP_INFO.java
new file mode 100644
index 0000000..14181e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_GROUP_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 网络存储服务器配置, 包含多个服务器
+ * @date 2022/09/08 19:33:11
+ */
+public class CFG_NAS_GROUP_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 存储服务器数量
+	 */
+	public int nNasNum;
+	/**
+	 * 存储服务器数组
+	 */
+	public CFG_NAS_INFO_NEW[] stuNasInfo = new CFG_NAS_INFO_NEW[16];
+
+	public CFG_NAS_GROUP_INFO() {
+		for (int i = 0; i < stuNasInfo.length; i++) {
+			stuNasInfo[i] = new CFG_NAS_INFO_NEW();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO.java
new file mode 100644
index 0000000..eaf61e3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description NAS信息
+ * @date 2022/09/08 19:33:10
+ */
+public class CFG_NAS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能开关
+	 */
+	public int bEnable;
+	/**
+	 * 网络存储服务器版本0=老的FTP,1=NAS存储
+	 */
+	public int nVersion;
+	/**
+	 * 协议类型0=FTP 1=SMB
+	 */
+	public int nProtocol;
+	/**
+	 * IP地址或网络名
+	 */
+	public byte[] szAddress = new byte[256];
+	/**
+	 * 端口号
+	 */
+	public int nPort;
+	/**
+	 * 帐户名
+	 */
+	public byte[] szUserName = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * 共享的目录名
+	 */
+	public byte[] szDirectory = new byte[256];
+	/**
+	 * 文件长度
+	 */
+	public int nFileLen;
+	/**
+	 * 相邻文件时间间隔
+	 */
+	public int nInterval;
+	/**
+	 * 存储时间段
+	 */
+	public CFG_CHANNEL_TIME_SECTION[] stuChnTime = new CFG_CHANNEL_TIME_SECTION[256];
+	/**
+	 * 有效的存储时间段数
+	 */
+	public int nChnTimeCount;
+
+	public CFG_NAS_INFO() {
+		for (int i = 0; i < stuChnTime.length; i++) {
+			stuChnTime[i] = new CFG_CHANNEL_TIME_SECTION();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_EX.java
new file mode 100644
index 0000000..4b8ca5e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_EX.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 网络存储服务器配置
+ * @date 2022/09/08 19:33:11
+ */
+public class CFG_NAS_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 0, 1, 由能力集确定, 只读
+	 */
+	public int nVersion;
+	/**
+	 * nVersion == 0时有效, 仅支持单服务器
+	 */
+	public CFG_NAS_INFO stuNasOld = new CFG_NAS_INFO();
+	/**
+	 * nVersion == 1时有效, 支持多个服务器
+	 */
+	public CFG_NAS_GROUP_INFO stuNasGroup = new CFG_NAS_GROUP_INFO();
+
+	public CFG_NAS_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_NEW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_NEW.java
new file mode 100644
index 0000000..fe229c0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NAS_INFO_NEW.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 网络存储配置
+ * @date 2022/09/08 19:33:10
+ */
+public class CFG_NAS_INFO_NEW extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	/**
+	 * 名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 协议类型, 0-FTP, 1-SMB, 2-ISCSI, 3-NFS, 4-Cloud ,协议类型是 4-Cloud时,具体云协议定义见emCloudProtocol
+	 */
+	public int nPortocol;
+	/**
+	 * IP地址或网址
+	 */
+	public byte[] szAddress = new byte[256];
+	/**
+	 * 端口
+	 */
+	public int nPort;
+	/**
+	 * 用户名
+	 */
+	public byte[] szUser = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * 共享的目录名
+	 */
+	public byte[] szDirectory = new byte[128];
+	/**
+	 * 字符编码格式, 0-UTF8, 1-GB2312
+	 */
+	public int nCharEncoding;
+	/**
+	 * 超时时间, 单位毫秒
+	 */
+	public int nTimeOut;
+	/**
+	 * 数据流ID
+	 */
+	public int nStreamID;
+	/**
+	 * 更新时间, 该字段值变化后,需要重新初始化iSCSI功能
+	 */
+	public CFG_NET_TIME_EX stuUpdateTime = new CFG_NET_TIME_EX();
+	/**
+	 * 云存储协议类型 {@link com.netsdk.lib.enumeration.EM_CFG_NAS_CLOUDPROTOCOL_TYPE}
+	 */
+	public int emCloudProtocol;
+	/**
+	 * 客户端设备在服务器上的存储子目录,可以是IP地址,设备序列号,设备机器号,为空使用设备机器号
+	 */
+	public byte[] szSubDirectory = new byte[256];
+
+	public CFG_NAS_INFO_NEW() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETAPP_WLAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETAPP_WLAN.java
new file mode 100644
index 0000000..25708c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETAPP_WLAN.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description WLAN配置(对应 CFG_CMD_WLAN)
+ * @date 2023/03/16 11:15:26
+ */
+public class CFG_NETAPP_WLAN extends NetSDKLib.SdkStructure {
+	/**
+	 * stuWlanInfo有效的WLAN配置个数
+	 */
+	public int nNum;
+	/**
+	 * WLAN配置信息
+	 */
+	public CFG_WLAN_INFO[] stuWlanInfo = new CFG_WLAN_INFO[8];
+
+	public CFG_NETAPP_WLAN() {
+		for (int i = 0; i < stuWlanInfo.length; i++) {
+			stuWlanInfo[i] = new CFG_WLAN_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java
new file mode 100644
index 0000000..77c122e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BOND_INTERFACE.java
@@ -0,0 +1,37 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+ /**
+  * @author 291189
+  * @description  绑定虚拟网口
+  * @date 2021/10/29
+  */
+ public class CFG_NETWORK_BOND_INTERFACE extends NetSDKLib.SdkStructure {
+/** 是否绑定虚拟网口,只有网卡名是bondxx时,才允许有Bonding字段,其它网卡不能用*/
+public			int					bBonding;
+/** 网卡绑定模式 CFG_ENUM_NET_BOND_MODE */
+public			int					emMode;
+/** 802.3ad链路聚合控制方式 CFG_ENUM_NET_BOND_LACP*/
+public			int					emLacp;
+/** 网络最大传输单元*/
+public			int					nMTU;
+/** 物理网口成员*/
+public			byte[]					szMembers=new byte[16*16];
+/** ip地址*/
+public			byte[]					szIP=new byte[256];
+/** 网络接口名称*/
+public			byte[]					szName=new byte[128];
+/** 网络接口名称*/
+public			byte[]					szAlias=new byte[128];
+/** DNS服务器地址*/
+public			byte[]					szDnsServers=new byte[2*256];
+/** mac地址*/
+public			byte[]					szMacAddress=new byte[256];
+/** 子网掩码*/
+public			byte[]					szSubnetMask=new byte[256];
+/** 默认网关*/
+public			byte[]					szDefGateway=new byte[256];
+/** 是否开启DHCP*/
+public			int					bDhcpEnable;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java
new file mode 100644
index 0000000..a83e4c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NETWORK_BR_INTERFACE.java
@@ -0,0 +1,31 @@
+ package com.netsdk.lib.structure;
+ import com.netsdk.lib.NetSDKLib;
+ /**
+  * @author 291189
+  * @description  网桥
+  * @date 2021/10/29
+  */
+ public class CFG_NETWORK_BR_INTERFACE extends NetSDKLib.SdkStructure {
+/** 网络接口名称*/
+public			byte[]					szName=new byte[128];
+/** 使能*/
+public			int					bEnable;
+/** 网络最大传输单元*/
+public			int					nMTU;
+/** 物理网口成员*/
+public			byte[]					szMembers=new byte[16*16];
+/** ip地址*/
+public			byte[]					szIP=new byte[256];
+/** 子网掩码*/
+public			byte[]					szSubnetMask=new byte[256];
+/** 默认网关*/
+public			byte[]					szDefGateway=new byte[256];
+/** DNS服务器地址*/
+public			byte[]					szDnsServers=new byte[2*256];
+/** 是否开启DHCP*/
+public			int					bDhcpEnable;
+/** DHCP失败时是否使用保留IP,使用保留IP时还继续发DHCP请求*/
+public			int					bReservedIPEnable;
+/** DNS获取方式,dhcp使能时可以设置为true,支持通过dhcp获取*/
+public			int					bDnsAutoGet;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME.java
new file mode 100644
index 0000000..53e2e7f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 时间
+ * @date 2022/12/19 09:10:21
+ */
+public class CFG_NET_TIME extends NetSDKLib.SdkStructure {
+
+	public int nStructSize;
+	/**
+	 * 年
+	 */
+	public int dwYear;
+	/**
+	 * 月
+	 */
+	public int dwMonth;
+	/**
+	 * 日
+	 */
+	public int dwDay;
+	/**
+	 * 时
+	 */
+	public int dwHour;
+	/**
+	 * 分
+	 */
+	public int dwMinute;
+	/**
+	 * 秒
+	 */
+	public int dwSecond;
+
+	public CFG_NET_TIME() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME_EX.java
new file mode 100644
index 0000000..361a0d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NET_TIME_EX.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 时间
+ * @date 2022/09/08 19:33:10
+ */
+public class CFG_NET_TIME_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 年
+	 */
+	public int dwYear;
+	/**
+	 * 月
+	 */
+	public int dwMonth;
+	/**
+	 * 日
+	 */
+	public int dwDay;
+	/**
+	 * 时
+	 */
+	public int dwHour;
+	/**
+	 * 分
+	 */
+	public int dwMinute;
+	/**
+	 * 秒
+	 */
+	public int dwSecond;
+	/**
+	 * 毫秒
+	 */
+	public int dwMillisecond;
+	/**
+	 * 保留字段
+	 */
+	public int[] dwReserved = new int[2];
+
+	public CFG_NET_TIME_EX() {
+	}
+
+	public String toStringTime() {
+		return String.format("%02d/%02d/%02d %02d:%02d:%02d.%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond,dwMillisecond);
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_INFO.java
new file mode 100644
index 0000000..0691949
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_INFO.java
@@ -0,0 +1,133 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_NUMBERSTAT(数量统计事件)对应的规则配置
+ * @date 2022/09/23 16:15:49
+ */
+public class CFG_NUMBERSTAT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 规则名称,不同规则不能重名
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 规则使能
+	 */
+	public byte bRuleEnable;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved = new byte[3];
+	/**
+	 * 相应物体类型个数
+	 */
+	public int nObjectTypeNum;
+	/**
+	 * 相应物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypes = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+	/**
+	 * 数量上限 单位:个,1~65535
+	 */
+	public int nUpperLimit;
+	/**
+	 * 上报周期 单位:秒,1~65535
+	 */
+	public int nPeriod;
+	/**
+	 * 检测区顶点数
+	 */
+	public int nDetectRegionPoint;
+	/**
+	 * 检测区
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuDetectRegion = new NetSDKLib.CFG_POLYGON[20];
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 事件响应时间段
+	 */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+	/**
+	 * 云台预置点编号 0~65535
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 数量统计类型 支持:"Region" 区域类型 "Entrance" 出入口类型
+	 * {@link com.netsdk.lib.enumeration.CFG_LINK_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 正常运动方向, 按照此方向行驶是正向,反过来是逆行 只对出入口类型有效。第一个点是起点,第二个点是终点,点的坐标归一化到[0,8191]区间。
+	 */
+	public NetSDKLib.CFG_POLYGON[] stDirection = new NetSDKLib.CFG_POLYGON[2];
+	/**
+	 * 记录周期,单位:分钟,1~10
+	 */
+	public int nRecordInterval;
+	/**
+	 * 进入数报警阈值,0表示不报警
+	 */
+	public int nEnterThreshold;
+	/**
+	 * 离开数报警阈值,0表示不报警
+	 */
+	public int nExitThreshold;
+	/**
+	 * 滞留数报警阈值,0表示不报警
+	 */
+	public int nInsideThreshold;
+	/**
+	 * 计划ID,仅球机有效,从1开始
+	 */
+	public int nPlanID;
+	/**
+	 * 区域ID,一个预置点可以对应多个区域
+	 */
+	public int nAreaID;
+	/**
+	 * 检测线实际最大个数
+	 */
+	public int nMaxDetectLineNum;
+	/**
+	 * 离开检测线坐标
+	 */
+	public NetSDKLib.CFG_POLYLINE[] stuDetectLine = new NetSDKLib.CFG_POLYLINE[20];
+	/**
+	 * 停留超时时间
+	 */
+	public int nStayMinDuration;
+	/**
+	 * 前端视频分析联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuRemoteEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 前端视频分析联动响应时间段
+	 */
+    public NetSDKLib.TIME_SECTION_WEEK_DAY_10[]   stuRemoteTimeSection =
+            (NetSDKLib.TIME_SECTION_WEEK_DAY_10[])new NetSDKLib.TIME_SECTION_WEEK_DAY_10().toArray(NetSDKLib.WEEK_DAY_NUM); 
+	
+
+	public CFG_NUMBERSTAT_INFO() {
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.CFG_POLYGON();
+		}
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.TIME_SECTION_WEEK_DAY_10();
+		}
+		for (int i = 0; i < stDirection.length; i++) {
+			stDirection[i] = new NetSDKLib.CFG_POLYGON();
+		}
+		for (int i = 0; i < stuDetectLine.length; i++) {
+			stuDetectLine[i] = new NetSDKLib.CFG_POLYLINE();
+		}
+		for (int i = 0; i < stuRemoteTimeSection.length; i++) {
+			stuRemoteTimeSection[i] = new NetSDKLib.TIME_SECTION_WEEK_DAY_10();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java
new file mode 100644
index 0000000..1025023
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_MULT_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 客流量统计PD
+ * @date 2021/01/11
+ */
+public class CFG_NUMBERSTAT_MULT_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 最大返回规则个数
+	 */
+	public int nMaxRules;
+	
+	/**
+	 * 隐藏部分参数配置使能 true-对于StereoNumber/NumberStat算法大类,隐藏StereoCalibrate标定配置和规则的MaxHeight/MinHeight
+	 */
+	public int bHiddenDetailEnable;
+	
+	/**
+	 * 相机类型,0:表示老单目客流 1:表示新统一单目客流 2:表示新统一双目客流
+	 */
+	public int nCameraType;
+	
+	/**
+	 * 支持的事件类型规则个数
+	 */
+	public int nMaxSupportedRulesNum;
+	
+	/**
+	 * 支持的事件类型规则列表,事件类型,详见dhnetsdk.h中"智能分析事件类型"
+	 */
+	public CFG_SUPPORTED_RULES_INFO[] stuSupportedRules = (CFG_SUPPORTED_RULES_INFO[])new CFG_SUPPORTED_RULES_INFO().toArray(NetSDKLib.MAX_RULE_LIST_SIZE);
+	
+	
+	public CFG_NUMBERSTAT_MULT_INFO() {
+		for (int i = 0; i < stuSupportedRules.length; i++) {
+			stuSupportedRules[i] = new CFG_SUPPORTED_RULES_INFO();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java
new file mode 100644
index 0000000..ff296f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBERSTAT_RULE_INFO.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 客流量统计
+ * @date 2021/01/11
+ */
+public class CFG_NUMBERSTAT_RULE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBER_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBER_STAT_INFO.java
new file mode 100644
index 0000000..4e57db1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_NUMBER_STAT_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 人数统计大类场景
+ * @date 2021/01/11
+ */
+public class CFG_NUMBER_STAT_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 相机类型,0:表示老单目客流 1:表示新统一单目客流 2:表示新统一双目客流
+	 */
+	public int nCameraType;
+	
+	/**
+	 * 定时上报以及上报周期
+	 */
+	public CFG_SUPPORT_SCHEDULE_REPORT	stuSupportScheduleReport;
+	
+	/**
+	 * 精准客流能力,客流ReID, 目标去重,客流聚档的对外能力
+	 */
+	public CFG_ACCURATE_NUMBER_STAT  stuAccurateNumberStat = new CFG_ACCURATE_NUMBER_STAT();
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java
new file mode 100644
index 0000000..f31612a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PARKING_STATISTICS_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车位统计场景配置信息
+ * @date 2022/07/22 14:43:48
+ */
+public class CFG_PARKING_STATISTICS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 统计模式: "AreaMode" 区域模式, "SpaceMode" 车位模式
+	 */
+	public byte[] szStatisticsMode = new byte[16];
+	/**
+	 * 区域个数
+	 */
+	public int nAreaModeCount;
+	/**
+	 * 区域信息数组, 每个元素表示一个区域; szStatisticsMode为AreaMode时有效
+	 */
+	public CFG_AREA_MODE_INFO[] stuAreaMode = new CFG_AREA_MODE_INFO[128];
+	/**
+	 * 车位个数
+	 */
+	public int nSpaceModeCount;
+	/**
+	 * 车位信息数组, 每个元素表示一个车位; szStatisticsMode为SpaceMode时有效
+	 */
+	public CFG_SPACE_MODE_INFO[] stuSpaceMode = new CFG_SPACE_MODE_INFO[128];
+	/**
+	 * 车辆置信度阈值, 范围[0, 100], 低于该阈值的车辆不做统计
+	 */
+	public int nConfidenceFilter;
+
+	public CFG_PARKING_STATISTICS_INFO() {
+		for (int i = 0; i < stuAreaMode.length; i++) {
+			stuAreaMode[i] = new CFG_AREA_MODE_INFO();
+		}
+		for (int i = 0; i < stuSpaceMode.length; i++) {
+			stuSpaceMode[i] = new CFG_SPACE_MODE_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PIG_STAY_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PIG_STAY_STAT.java
new file mode 100644
index 0000000..bda974c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PIG_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 猪只离开滞留时间信息
+ * @date 2022/12/19 09:10:21
+ */
+public class CFG_PIG_STAY_STAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 猪只进入区域的时间
+	 */
+	public CFG_NET_TIME stuEnterTime = new CFG_NET_TIME();
+	/**
+	 * 猪只离开区域的时间
+	 */
+	public CFG_NET_TIME stuExitTime = new CFG_NET_TIME();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[200];
+
+	public CFG_PIG_STAY_STAT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java
new file mode 100644
index 0000000..74013de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PORTRAIT_DETECTION_CAPS.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_SNAP_POLICY_TYPE;
+
+/**
+ * 人像检测信息
+ *
+ * @author 47040
+ * @since Created in 2021/4/25 19:55
+ */
+public class CFG_PORTRAIT_DETECTION_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 抓拍策略取值个数
+     */
+    public int nSnapPolicyNum;
+    /**
+     * 抓拍策略取值 {@link EM_SNAP_POLICY_TYPE}
+     */
+    public int[] emSnapPolicyType = new int[8];
+    /**
+     * 是否支持合规检测 0/1 不支持、支持
+     */
+    public int bCompliantDetectSupport;
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java
new file mode 100644
index 0000000..1cbabd1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PRIVACY_MASKING_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 251823
+* @description 
+* @date 2022/07/21 14:54:08
+*/
+public class CFG_PRIVACY_MASKING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 隐私遮挡配置个数
+	 */
+	public int nMaskingInfoCount;				
+	/**
+	 * 隐私遮挡配置信息
+	 */
+	public CGF_MASKING_INFO[] stuMaskingInfo = new CGF_MASKING_INFO[64];
+		
+	public CFG_PRIVACY_MASKING_INFO() {
+		for (int i = 0; i < stuMaskingInfo.length; i++) {
+			stuMaskingInfo[i] = new CGF_MASKING_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PROFILE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PROFILE_INFO.java
new file mode 100644
index 0000000..8d70387
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PROFILE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 情景详细信息
+ * @date 2023/03/15 20:39:47
+ */
+public class CFG_PROFILE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 情景ID
+	 */
+	public int nSceneID;
+	/**
+	 * 厂家名称
+	 */
+	public byte[] szBrand = new byte[64];
+	/**
+	 * 情景模式 {@link com.netsdk.lib.enumeration.EM_SMARTHOME_SCENE_MODE}
+	 */
+	public int emScene;
+	/**
+	 * 串口地址
+	 */
+	public NetSDKLib.CFG_COMMADDR_INFO stuCommAddr = new NetSDKLib.CFG_COMMADDR_INFO();
+
+	public CFG_PROFILE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO.java
new file mode 100644
index 0000000..ed775ef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 单个个人电话接机配置信息
+ * @date 2023/04/18 10:54:34
+ */
+public class CFG_PSTN_PERSON_SERVER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 个人电话名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 个人电话接收机号码
+	 */
+	public byte[] szNumber = new byte[32];
+
+	public CFG_PSTN_PERSON_SERVER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO_ALL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO_ALL.java
new file mode 100644
index 0000000..a83395c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PSTN_PERSON_SERVER_INFO_ALL.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 个人电话接机配置信息
+ * @date 2023/04/18 10:54:34
+ */
+public class CFG_PSTN_PERSON_SERVER_INFO_ALL extends NetSDKLib.SdkStructure {
+	/**
+	 * 个人电话接机配置使能
+	 */
+	public int bEnable;
+	/**
+	 * 有效的个人电话接机配置信息个数,目前最多支持3个
+	 */
+	public int nServerCount;
+	/**
+	 * 个人电话接机配置信息数组,每个元素对应一个个人电话配置
+	 * 最多支持多少个人电话,通过获取报警能力集(CLIENT_QueryNewSystemInfo对应宏CFG_CAP_ALARM) 获取有效电话个数
+	 */
+	public CFG_PSTN_PERSON_SERVER_INFO[] stuPSTNPersonServer = new CFG_PSTN_PERSON_SERVER_INFO[8];
+
+	public CFG_PSTN_PERSON_SERVER_INFO_ALL() {
+		for (int i = 0; i < stuPSTNPersonServer.length; i++) {
+			stuPSTNPersonServer[i] = new CFG_PSTN_PERSON_SERVER_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java
new file mode 100644
index 0000000..94a5f38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ABSOLUTELY_CAPS.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 支持的云台精确定位方式类型
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_ABSOLUTELY_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持归一化定位
+     */
+    public boolean bSupportNormal;
+    /**
+     * 是否支持实际参数值定位
+     */
+    public boolean bSupportReal;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[120];
+
+    @Override
+    public String toString() {
+        return "CFG_PTZ_ABSOLUTELY_CAPS{" +
+                "bSupportNormal=" + bSupportNormal +
+                ", bSupportReal=" + bSupportReal +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java
new file mode 100644
index 0000000..acc51af
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ACTION_CAPS.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 支持的云台动作类型
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_ACTION_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持水平移动
+     */
+    public boolean bSupportPan;
+    /**
+     * 是否支持垂直移动
+     */
+    public boolean bSupportTile;
+    /**
+     * 是否支持变倍
+     */
+    public boolean bSupportZoom;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[116];
+
+    @Override
+    public String toString() {
+        return "CFG_PTZ_ACTION_CAPS{" +
+                "bSupportPan=" + bSupportPan +
+                ", bSupportTile=" + bSupportTile +
+                ", bSupportZoom=" + bSupportZoom +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..9ac55b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_ALL_AUTOMOVE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.constant.SDKStructureFieldLenth;
+
+/**
+ * @创建人 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public class CFG_PTZ_ALL_AUTOMOVE_INFO extends SdkStructure{
+
+   /**
+    *  配置信息
+    */
+
+   public CFG_PTZ_PER_AUTOMOVE_INFO[]  stPTZPerInfo =
+           new CFG_PTZ_PER_AUTOMOVE_INFO[SDKStructureFieldLenth.MAX_CONFIG_NUM];
+   /**
+    * 获取到的配置个数
+    */
+   public   int	  nCfgNum;
+
+   public CFG_PTZ_ALL_AUTOMOVE_INFO(){
+      for(int i=0;i<stPTZPerInfo.length;i++){
+         stPTZPerInfo[i]=new CFG_PTZ_PER_AUTOMOVE_INFO();
+      }
+   }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AREA_SCAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AREA_SCAN.java
new file mode 100644
index 0000000..31a29e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AREA_SCAN.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 云台-区域扫描能力集
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_AREA_SCAN extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持区域扫描
+     */
+    public boolean bIsSupportAutoAreaScan;
+    /**
+     * 区域扫描的个数
+     */
+    public int wScanNum;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..8f02240
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_AUTOMOVE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public class CFG_PTZ_AUTOMOVE_INFO extends NetSDKLib.SdkStructure{
+
+    /**
+     *  云台的配置信息 CFG_PTZ_ALL_AUTOMOVE_INFO
+     */
+
+    public Pointer pstPTZAutoConfig;
+
+    /**
+     * 结构体申请的云台个数(对于多通道查询,申请不小于设备通数,对于单通道查询,一个就够了)
+     */
+    public  int	 nMaxPTZNum;
+
+    /**
+     * 设备返回的云台个数(一般为设备通道数)
+     */
+
+    public   int  nReturnPTZNum;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java
new file mode 100644
index 0000000..51dabea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_CONTINUOUSLY_TYPE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 连续移动方式类型
+ * @date 2020/11/11
+ */
+public class CFG_PTZ_CONTINUOUSLY_TYPE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持归一化值定位
+     */
+    public boolean bSupportNormal;
+    /**
+     * 是否支持非归一化值定位
+     */
+    public boolean bSupportExtra;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[120];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java
new file mode 100644
index 0000000..a005ed5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_LIGHTING_CONTROL.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_COMMON_STRING_32;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 云台转动角度范围,单位:度
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_LIGHTING_CONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 手动灯光控制模式
+     * "on-off":直接开关模式,
+     * "adjustLight":手动调节亮度模式
+     */
+    public byte[] szMode = new byte[CFG_COMMON_STRING_32];
+
+    /**
+     * 近光灯组数量
+     */
+    public int dwNearLightNumber;
+    /**
+     * 远光灯组数量
+     */
+    public int dwFarLightNumber;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java
new file mode 100644
index 0000000..18e3d51
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MEASURE_DISTANCE.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 图像测距能力集
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_MEASURE_DISTANCE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持图像测距
+     */
+    public boolean bSupport;
+    /**
+     * 是否将图像测距结果数据叠加至码流
+     */
+    public boolean bOsdEnable;
+    /**
+     * 图像测距信息的最小显示时长, 单位秒
+     */
+    public int nDisplayMin;
+    /**
+     * 图像测距信息的最大显示时长, 单位秒
+     */
+    public int nDisplayMax;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java
new file mode 100644
index 0000000..6491c86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOTION_RANGE.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 云台转动角度范围,单位:度
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_MOTION_RANGE extends NetSDKLib.SdkStructure {
+    /**
+     * 水平角度范围最小值,单位:度
+     */
+    public int nHorizontalAngleMin;
+    /**
+     * 水平角度范围最大值,单位:度
+     */
+    public int nHorizontalAngleMax;
+    /**
+     * 垂直角度范围最小值,单位:度
+     */
+    public int nVerticalAngleMin;
+    /**
+     * 垂直角度范围最大值,单位:度
+     */
+    public int nVerticalAngleMax;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java
new file mode 100644
index 0000000..46788f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_ABSOLUTELY_CAP.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 绝对控制云台能力
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_MOVE_ABSOLUTELY_CAP extends NetSDKLib.SdkStructure {
+    /**
+     * 支持的云台动作类型
+     */
+    public CFG_PTZ_ACTION_CAPS stuPTZ;
+    /**
+     * 支持的云台精确定位方式类型
+     */
+    public CFG_PTZ_ABSOLUTELY_CAPS stuType;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[768];
+
+    @Override
+    public String toString() {
+        return "CFG_PTZ_MOVE_ABSOLUTELY_CAP{" +
+                "stuPTZ=" + stuPTZ +
+                ", stuType=" + stuType +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java
new file mode 100644
index 0000000..15e9017
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_MOVE_CONTINUOUSLY_CAPS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 云台连续运动能力
+ * @date 2020/11/11
+ */
+public class CFG_PTZ_MOVE_CONTINUOUSLY_CAPS extends NetSDKLib.SdkStructure {
+
+    /**
+     * 支持的PTZ动作
+     */
+    public CFG_PTZ_ACTION_CAPS stuPTZ;
+    /**
+     *连续移动方式类型
+     */
+    public CFG_PTZ_CONTINUOUSLY_TYPE stuType;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java
new file mode 100644
index 0000000..bf47c24
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PER_AUTOMOVE_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @创建人 291189
+ * @创建时间 2021/5/28
+ * @描述
+ */
+public class CFG_PTZ_PER_AUTOMOVE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  定时动作开关标志 TRUE 开,FALSE 关
+     */
+    public int bEnable;
+
+    /**
+     * 时间表类型
+     */
+    public NetSDKLib.CFG_TIME_SCHEDULE stTimeSchedule=new NetSDKLib.CFG_TIME_SCHEDULE();
+
+
+    /**
+     * 定时功能 (link CFG_PTZ_FUNC_TYPE)
+     */
+    public int emFuncType;
+
+    /**
+     * 	巡航编号,		范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
+     */
+    public int nTourId;
+
+    /**
+     * 自动巡迹编号,	范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
+     */
+    public int	nPatternId;
+
+    /**
+     * 预置点编号,		范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
+     */
+
+    public int	nPresetId;
+
+    /**
+     * 自动线扫编号,	范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
+     */
+    public int nScanId;
+
+    /**
+     *自动归位,一段时间不操作云台,自动归位到该时间段内的动作
+     */
+   public  CFG_AUTO_HOMING stAutoHoming=new CFG_AUTO_HOMING();
+
+    /**
+     * 预置点快照使能,只有当emFuncType为FUNC_TYPE_PRE时才有效
+     */
+   public int bSnapshotEnable;
+
+    /**
+     * 预置点抓拍延时时间,单位秒,只有当emFuncType为FUNC_TYPE_PRE时才有效
+     */
+   public int	nSnapshortDelayTime;
+   
+   /**
+    * 是否启用szSpecialTime字段
+    */
+   public int	bEnableSpecialTime;
+   /**
+    * 指定日期的工作时间段数量
+    */   
+   public int	nSpecialTimeNum;	
+   /**
+    * 指定日期的工作时间 如:"2023-05-05 00:00:00-08:00:00"表示2023年5月5号0点到8点生效
+    */
+   public byte[]	SpecialTime = new byte[64*32];
+   /**
+    * 保留字节
+    */
+	public byte[]	szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java
new file mode 100644
index 0000000..3d191c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PRIVACY_MASKING.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;/**
+ * @author 47081
+ * @descriptio
+ * @date 2020/11/9
+ * @version 1.0
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_MASKTYPE_COUNT;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_MOSAICTYPE_COUNT;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 隐私遮挡能力集
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持隐私遮挡设置
+     */
+    public boolean bPrivacyMasking;
+    /**
+     * 是否支持遮挡块颜色设置
+     */
+    public boolean bSetColorSupport;
+    /**
+     * emMaskType是否有效
+     */
+    public boolean abMaskType;
+    /**
+     * 实际支持的遮挡块形状个数
+     */
+    public int nMaskTypeCount;
+    /**
+     * 支持的遮挡块形状,没有该项配置时默认支持矩形
+     * 枚举参考{@link com.netsdk.lib.enumeration.NET_EM_MASK_TYPE}
+     */
+    public int[] emMaskType = new int[MAX_MASKTYPE_COUNT];
+    /**
+     * 是否支持马赛克遮挡块设置
+     */
+    public boolean bSetMosaicSupport;
+    /**
+     * 是否支持遮挡块颜色相互独立(bSetColorSupport为true时该能力有效)
+     */
+    public boolean bSetColorIndependent;
+    /**
+     * emMosaicType是否有效
+     */
+    public boolean abMosaicType;
+    /**
+     * 实际支持的马赛克类型个数
+     */
+    public int nMosaicTypeCount;
+    /**
+     * 支持的马赛克类型(SetMosaicSupport为true时该能力有效,没有该项配置时默认支持24x24大小马赛克)
+     * 枚举值参考{@link com.netsdk.lib.enumeration.NET_EM_MOSAIC_TYPE}
+     */
+    public int[] emMosaicType = new int[MAX_MOSAICTYPE_COUNT];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java
new file mode 100644
index 0000000..067d510
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_PTZ_PROTOCOL_CAPS_INFO.java
@@ -0,0 +1,317 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.CFG_COMMON_STRING_32;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_PROTOCOL_NAME_LEN;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 获取云台能力集信息
+ * @date 2020/11/9
+ */
+public class CFG_PTZ_PROTOCOL_CAPS_INFO extends NetSDKLib.SdkStructure {
+    public int nStructSize;
+    /**
+     * 是否支持云台水平摆动
+     */
+    public boolean bPan;
+    /**
+     * 是否支持云台垂直摆动
+     */
+    public boolean bTile;
+    /**
+     * 是否支持云台变倍
+     */
+    public boolean bZoom;
+    /**
+     * 是否支持云台光圈调节
+     */
+    public boolean bIris;
+    /**
+     * 是否支持预置点
+     */
+    public boolean bPreset;
+    /**
+     * 是否支持清除预置点
+     */
+    public boolean bRemovePreset;
+    /**
+     * 是否支持自动巡航线路
+     */
+    public boolean bTour;
+    /**
+     * 是否支持清除巡航
+     */
+    public boolean bRemoveTour;
+    /**
+     * 是否支持轨迹线路
+     */
+    public boolean bPattern;
+    /**
+     * 是否支持自动水平摆动
+     */
+    public boolean bAutoPan;
+    /**
+     * 是否支持自动扫描
+     */
+    public boolean bAutoScan;
+    /**
+     * 是否支持辅助功能
+     */
+    public boolean bAux;
+    /**
+     * 是否支持报警功能
+     */
+    public boolean bAlarm;
+    /**
+     * 是否支持灯光, 内容见下面"stuPtzLightingControl",该字段已废除使用
+     */
+    public boolean bLight;
+    /**
+     * 是否支持雨刷
+     */
+    public boolean bWiper;
+    /**
+     * 是否支持镜头翻转
+     */
+    public boolean bFlip;
+    /**
+     * 是否支持云台内置菜单
+     */
+    public boolean bMenu;
+    /**
+     * 是否支持云台按相对坐标定位
+     */
+    public boolean bMoveRelatively;
+    /**
+     * 是否支持云台按绝对坐标定位
+     */
+    public boolean bMoveAbsolutely;
+    /**
+     * 是否支持云台按三维坐标定位
+     */
+    public boolean bMoveDirectly;
+    /**
+     * 是否支持云台复位
+     */
+    public boolean bReset;
+    /**
+     * 是否支持获取云台运动状态及方位坐标
+     */
+    public boolean bGetStatus;
+    /**
+     * 是否支持限位
+     */
+    public boolean bSupportLimit;
+    /**
+     * 是否支持云台设备
+     */
+    public boolean bPtzDevice;
+    /**
+     * 是否支持云台可视域
+     */
+    public boolean bIsSupportViewRange;
+
+    /**
+     * 通道地址的最小值
+     */
+    public short wCamAddrMin;
+    /**
+     * 通道地址的最大值
+     */
+    public short wCamAddrMax;
+    /**
+     * 预览地址的最小值
+     */
+    public short wMonAddrMin;
+    /**
+     * 预览地址的最大值
+     */
+    public short wMonAddrMax;
+    /**
+     * 预置点的最小值
+     */
+    public short wPresetMin;
+    /**
+     * 预置点的最大值
+     */
+    public short wPresetMax;
+    /**
+     * 自动巡航线路的最小值
+     */
+    public short wTourMin;
+    /**
+     * 自动巡航线路的最大值
+     */
+    public short wTourMax;
+    /**
+     * 轨迹线路的最小值
+     */
+    public short wPatternMin;
+    /**
+     * 轨迹线路的最大值
+     */
+    public short wPatternMax;
+    /**
+     * 垂直速度的最小值
+     */
+    public short wTileSpeedMin;
+    /**
+     * 垂直速度的最大值
+     */
+    public short wTileSpeedMax;
+    /**
+     * 水平速度的最小值
+     */
+    public short wPanSpeedMin;
+    /**
+     * 水平速度的最大值
+     */
+    public short wPanSpeedMax;
+    /**
+     * 自动扫描的最小值
+     */
+    public short wAutoScanMin;
+    /**
+     * 自动扫描的最大值
+     */
+    public short wAutoScanMax;
+    /**
+     * 辅助功能的最小值
+     */
+    public short wAuxMin;
+    /**
+     * 辅助功能的最大值
+     */
+    public short wAuxMax;
+
+    /**
+     * 发送命令的时间间隔
+     */
+    public int dwInterval;
+    /**
+     * 协议的类型,0-本地云台,1-远程云台
+     */
+    public int dwType;
+    /**
+     * 协议的报警长度
+     */
+    public int dwAlarmLen;
+    /**
+     * 近光灯组数量,0~4,为0时表示不支持
+     */
+    public int dwNearLightNumber;
+    /**
+     * 远光灯组数量,0~4,为0时表示不支持
+     */
+    public int dwFarLightNumber;
+
+    /**
+     * 支持的可视域数据获取方式掩码,从低位到高位依次数,目前支持,第1位:为1表示支持"ElectronicCompass" 电子罗盘方式
+     */
+    public int dwSupportViewRangeType;
+
+    /**
+     * 支持的支持的焦距模式掩码,从低位到高位依次数,见{@link com.netsdk.lib.enumeration.EM_SUPPORT_FOCUS_MODE}
+     */
+    public int dwSupportFocusMode;
+    /**
+     * 操作的协议名
+     */
+    public byte[] szName = new byte[MAX_PROTOCOL_NAME_LEN];
+    /**
+     * 云台辅助功能名称列表
+     */
+    public Auxs[] szAuxs = (Auxs[]) new Auxs().toArray(CFG_COMMON_STRING_32);
+
+    /**
+     * 云台转动角度范围,单位:度
+     */
+    public CFG_PTZ_MOTION_RANGE stuPtzMotionRange;
+    /**
+     * 灯光控制内容,该字段已废除使用
+     */
+    public CFG_PTZ_LIGHTING_CONTROL stuPtzLightingControl;
+    /**
+     * 是否支持预置点时间段配置的功能
+     */
+    public boolean bSupportPresetTimeSection;
+    /**
+     * 是否支持云台变焦
+     */
+    public boolean bFocus;
+    /**
+     * 区域扫描能力集
+     */
+    public CFG_PTZ_AREA_SCAN stuPtzAreaScan;
+    /**
+     * 隐私遮挡能力集
+     */
+    public CFG_PTZ_PRIVACY_MASKING stuPtzPrivacyMasking;
+    /**
+     * 图像测距能力集
+     */
+    public CFG_PTZ_MEASURE_DISTANCE stuPtzMeasureDistance;
+    /**
+     * 是否支持云台巡迹OSD叠加
+     */
+    public boolean bSupportPtzPatternOSD;
+    /**
+     * 是否支持云台RS485检测OSD叠加
+     */
+    public boolean bSupportPtzRS485DetectOSD;
+    /**
+     * 是否支持云台坐标叠加
+     */
+    public boolean bSupportPTZCoordinates;
+    /**
+     * 是否支持云台变倍叠加
+     */
+    public boolean bSupportPTZZoom;
+    /**
+     * 是否支持云台方向状态显示
+     */
+    public boolean bDirectionDisplay;
+    /**
+     * 变倍最大值
+     */
+    public int dwZoomMax;
+    /**
+     * 变倍最小值
+     */
+    public int dwZoomMin;
+    /**
+     * 绝对控制云台能力,bMoveAbsolutely==TRUE 时有效
+     */
+    public CFG_PTZ_MOVE_ABSOLUTELY_CAP stuMoveAbsolutely;
+
+    /**
+     * stuMoveContinuously 字段是否有效
+     */
+    public boolean bMoveContinuously;
+    /**
+     * 云台连续运动能力
+     */
+    public CFG_PTZ_MOVE_CONTINUOUSLY_CAPS stuMoveContinuously;
+    
+    /**
+     * 云台不支持的转动方向个数
+     */
+    public int nUnSupportDirections;
+    
+    /**
+     * 云台不支持的转动方向,参考枚举{ @link EM_PTZ_UNSUPPORT_DIRECTION}
+     */
+    public int[] emUnSupportDirections = new int[10];
+    
+    /**
+     * 是否支持电子云台联动
+     */
+    public int bSupportEptzLink;
+
+    public CFG_PTZ_PROTOCOL_CAPS_INFO() {
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..f28f701
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_QUEUEDETECTION_RULE_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 排队检测
+ * @date 2021/01/11
+ */
+public class CFG_QUEUEDETECTION_RULE_INFO  extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java
new file mode 100644
index 0000000..4f2b570
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RADIOMETRY_RULE_EX.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 测温规则扩展
+ * @date 2023/03/15 10:25:00
+ */
+public class CFG_RADIOMETRY_RULE_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 标定黑体温度,精度0.1,实际值扩大了10倍;比如显示是38度,实际该值获取的是380;如果需要设置39度,如该值需要传入390。
+	 */
+	public int nBlackBodyTemp;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[252];
+
+	public CFG_RADIOMETRY_RULE_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java
new file mode 100644
index 0000000..19529db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RAINBRUSH_TOUR_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description //雨刷巡航模式配置
+ * @date 2021/10/29 14:31
+ */
+public class CFG_RAINBRUSH_TOUR_INFO extends NetSDKLib.SdkStructure{
+   public int					nTimes;								// 雨刷执行次数:单位次
+   public int					nPeriod;							// 雨刷巡航周期:单位秒
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_EX_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_EX_INFO.java
new file mode 100644
index 0000000..faba256
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_EX_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 421657
+ * @description 录像存储点映射配置扩展信息
+ * @origin autoTool
+ * @date 2023/10/30 15:54:19
+ */
+public class CFG_RECORDTOSTORAGEPOINT_EX_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 最大录像通道配置个数
+     */
+    public int nMaxChannelRecord;
+    /**
+     * 实际返回通道配置个数
+     */
+    public int nRetChannelRecord;
+    /**
+     * 通道存储点配置信息, 由用户申请内存, 大小为sizeof(CFG_RECORDTOSTORAGEPOINT_INFO)*nMaxChannelRecord, refer to {@link CFG_RECORDTOSTORAGEPOINT_INFO}
+     */
+    public Pointer pstRecordStorage;
+
+    public CFG_RECORDTOSTORAGEPOINT_EX_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_INFO.java
new file mode 100644
index 0000000..b0641a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RECORDTOSTORAGEPOINT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 录像存储点映射配置信息
+ * @origin autoTool
+ * @date 2023/10/30 15:54:19
+ */
+public class CFG_RECORDTOSTORAGEPOINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 存储点数目
+     */
+    public int nStoragePointNum;
+    /**
+     * 存储点配置信息
+     */
+    public CFG_STORAGEPOINT_INFO[] stStoragePoints = new CFG_STORAGEPOINT_INFO[32];
+
+    public CFG_RECORDTOSTORAGEPOINT_INFO() {
+        for (int i = 0; i < stStoragePoints.length; i++) {
+            stStoragePoints[i] = new CFG_STORAGEPOINT_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java
new file mode 100644
index 0000000..27a8e1a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_REGULATOR_DETECT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  标准黑体源异常报警配置 
+* @date 2022/07/23 10:52:36
+*/
+public class CFG_REGULATOR_DETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+使能开关
+*/
+public			int					bEnable;
+/** 
+灵敏度, 1-100
+*/
+public			int					nSensitivity;
+/** 
+报警联动
+*/
+public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler=new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+
+public CFG_REGULATOR_DETECT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_IN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_IN.java
new file mode 100644
index 0000000..8745251
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_IN.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  RTSP的配置 
+* @date 2022/12/15 16:52:19
+*/
+public class CFG_RTSP_INFO_IN extends NetSDKLib.SdkStructure {
+
+public			int					nStructSize;
+/** 
+整个功能是否使能
+*/
+public			int					bEnable;
+/** 
+RTSP服务端口
+*/
+public			int					nPort;
+/** 
+RTP起始端口
+*/
+public			int					nRtpStartPort;
+/** 
+RTP结束端口
+*/
+public			int					nRtpEndPort;
+/** 
+RtspOverHttp使能
+*/
+public			int					bHttpEnable;
+/** 
+RtspOverHttp端口
+*/
+public			int					nHttpPort;
+
+    @Override
+    public String toString() {
+        return "CFG_RTSP_INFO_IN{" +
+                "nStructSize=" + nStructSize +
+                ", bEnable=" + bEnable +
+                ", nPort=" + nPort +
+                ", nRtpStartPort=" + nRtpStartPort +
+                ", nRtpEndPort=" + nRtpEndPort +
+                ", bHttpEnable=" + bHttpEnable +
+                ", nHttpPort=" + nHttpPort +
+                '}';
+    }
+
+    public CFG_RTSP_INFO_IN(){
+        this.nStructSize=size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_OUT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_OUT.java
new file mode 100644
index 0000000..eef975f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_RTSP_INFO_OUT.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  RTSP的配置 
+* @date 2022/12/15 17:00:18
+*/
+public class CFG_RTSP_INFO_OUT extends NetSDKLib.SdkStructure {
+
+public			int					nStructSize;
+/** 
+整个功能是否使能
+*/
+public			int					bEnable;
+/** 
+RTSP服务端口
+*/
+public			int					nPort;
+/** 
+RTP起始端口
+*/
+public			int					nRtpStartPort;
+/** 
+RTP结束端口
+*/
+public			int					nRtpEndPort;
+/** 
+RtspOverHttp使能
+*/
+public			int					bHttpEnable;
+/** 
+RtspOverHttp端口
+*/
+public			int					nHttpPort;
+
+    @Override
+    public String toString() {
+        return "CFG_RTSP_INFO_OUT{" +
+                "nStructSize=" + nStructSize +
+                ", bEnable=" + bEnable +
+                ", nPort=" + nPort +
+                ", nRtpStartPort=" + nRtpStartPort +
+                ", nRtpEndPort=" + nRtpEndPort +
+                ", bHttpEnable=" + bHttpEnable +
+                ", nHttpPort=" + nHttpPort +
+                '}';
+    }
+
+    public CFG_RTSP_INFO_OUT(){
+        this.nStructSize=size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SCENE_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SCENE_MODE_INFO.java
new file mode 100644
index 0000000..76fa6ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SCENE_MODE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 情景模式配置 (对应 CFG_CMD_SCENE_MODE)
+ * @date 2023/03/15 20:39:47
+ */
+public class CFG_SCENE_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 当前情景模式ID号
+	 */
+	public int nCurrentID;
+	/**
+	 * 情景模式个数
+	 */
+	public int nProfileCount;
+	/**
+	 * 情景模式信息
+	 */
+	public CFG_PROFILE_INFO[] stuProfiles = new CFG_PROFILE_INFO[54];
+
+	public CFG_SCENE_MODE_INFO() {
+		for (int i = 0; i < stuProfiles.length; i++) {
+			stuProfiles[i] = new CFG_PROFILE_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SPACE_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SPACE_MODE_INFO.java
new file mode 100644
index 0000000..c260965
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SPACE_MODE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车位信息
+ * @date 2022/07/22 14:43:48
+ */
+public class CFG_SPACE_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 车位编号
+	 */
+	public byte[] szParkNo = new byte[32];
+	/**
+	 * 车位中心点坐标
+	 */
+	public NetSDKLib.CFG_POLYGON stuCoordinate = new NetSDKLib.CFG_POLYGON();
+	/**
+	 * 车位类型: 0:未知, 1:小车车位, 2:大车车位, 3:危化品车位, 4:货车车位, 5:小客车车位, 6:大客车车位
+	 */
+	public int nSpaceType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[60];
+
+	public CFG_SPACE_MODE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java
new file mode 100644
index 0000000..33f0e28
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STEREO_BEHAVIOR_SCENE_CAPS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 立体行为场景能力特有字段
+ * @date 2021/01/11
+ */
+public class CFG_STEREO_BEHAVIOR_SCENE_CAPS extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 可查询事件的个数
+	 */
+	public int nEventListNum;
+	
+	/**
+	 * 该大类下支持哪些事件可查询当前点的上一次事件内容,事件详见-智能分析事件类型
+	 */
+	public int[] dwOnlyFindLastEventList = new int[32];
+	
+    /**
+     *  预留
+     */
+    public byte[] byReserved = new byte[892];	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STORAGEPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STORAGEPOINT_INFO.java
new file mode 100644
index 0000000..5080b33
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_STORAGEPOINT_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 存储点配置信息
+ * @origin autoTool
+ * @date 2023/10/30 15:54:18
+ */
+public class CFG_STORAGEPOINT_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 存储点类型 {@link com.netsdk.lib.enumeration.EM_STORAGEPOINT_TYPE}
+     */
+    public int emStoragePointType;
+    /**
+     * 本地工作目录组名称, 空表示不录到本地
+     */
+    public byte nLocalDir;
+    /**
+     * 实时压缩存储目录组,空表示不使用实时压缩存储。
+     */
+    public byte[] szCompressDir = new byte[256];
+    /**
+     * 冗余工作目录组名称,空表示没有冗余录像。
+     */
+    public byte[] szRedundantDir = new byte[256];
+    /**
+     * 远程工作目录组名称,空表示不录到远程。
+     */
+    public byte[] szRemoteDir = new byte[256];
+    /**
+     * 远程存储网络故障恢复后,是否自动将本地存储的数据同步到远程存储。
+     */
+    public int bAutoSync;
+    /**
+     * 从网络恢复的时刻开始,需要往前同步的数据时间范围,小时为单位,0表示同步所有数据。
+     */
+    public int nAutoSyncRange;
+    /**
+     * 远程目录无法访问时,是否保存到本地目录。
+     */
+    public int bLocalEmergency;
+    /**
+     * 设置将多少天之前的录像文件进行压缩。
+     */
+    public int nCompressBefore;
+
+    public CFG_STORAGEPOINT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java
new file mode 100644
index 0000000..7f186b9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUBSTITUTION_DRIVING.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 换人驾驶报警配置 SubstitutionDrivingCfg
+ * @date 2023/03/31 11:19:02
+ */
+public class CFG_SUBSTITUTION_DRIVING extends NetSDKLib.SdkStructure {
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 语音播报使能
+     */
+    public int bVoiceBroadcastEnable;
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public CFG_SUBSTITUTION_DRIVING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_COMP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_COMP.java
new file mode 100644
index 0000000..7fbe6e1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_COMP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 场景组合
+ * @date 2021/01/11
+ */
+public class CFG_SUPPORTED_COMP extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 场景组合项下支持的场景个数
+	 */
+	public int nSupportedData;
+	
+	/**
+	 * 场景组合项下支持的场景列表
+	 */
+	 public StringByteArrSixteen[] szSupportedData = (StringByteArrSixteen[])new StringByteArrSixteen().toArray(NetSDKLib.MAX_SUPPORTED_COMP_DATA);
+	 
+	 public CFG_SUPPORTED_COMP() {
+		 for (int i = 0; i < szSupportedData.length; i++) {
+			 szSupportedData[i] = new StringByteArrSixteen();
+			}
+	 }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java
new file mode 100644
index 0000000..7ff0297
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORTED_RULES_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 支持的规则
+ * @date 2021/01/11
+ */
+public class CFG_SUPPORTED_RULES_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 客流量统计规则
+	 */
+	public CFG_NUMBERSTAT_RULE_INFO stuNumberStat;
+	
+	/**
+	 * 排队检测规则
+	 */
+	public CFG_QUEUEDETECTION_RULE_INFO stuQueueDetection;
+	
+	/**
+	 * 区域内人数统计规则
+	 */
+	public CFG_MANNUMDETECTION_RULE_INFO stuManNumDetection;
+		
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java
new file mode 100644
index 0000000..7ed5a52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_SUPPORT_SCHEDULE_REPORT.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 定时上报以及上报周期
+ * @date 2021/11/07
+ */
+public class CFG_SUPPORT_SCHEDULE_REPORT extends NetSDKLib.SdkStructure{
+    /**
+     *  是否支持定时上报功能
+     */
+    public int bEnable;
+
+    /**
+     * 有效的上报周期个数
+     */
+    public int nSupportPeriodNum;
+
+    /**
+     *  设备支持的上报周期颗粒度数组,单位为分钟
+     */
+    public int[] nSupportPeriod = new int[16];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_THERMO_GAIN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_THERMO_GAIN.java
new file mode 100644
index 0000000..5a1bb82
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_THERMO_GAIN.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 增益设置
+ * @date 2021/2/22
+ */
+public class CFG_THERMO_GAIN extends NetSDKLib.SdkStructure {
+  /** 自动增益控制 [0-255]具体取值范围由能力决定 */
+  public int nAgc;
+  /** 最大自动增益 [0-255]具体取值范围由能力决定 */
+  public int nAgcMaxGain;
+  /** 增益均衡 具体取值范围由能力决定 */
+  public int nAgcPlateau;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java
new file mode 100644
index 0000000..9ca97ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_OVERSPEED_INFO.java
@@ -0,0 +1,125 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 事件类型 EVENT_IVS_TRAFFIC_OVERSPEED (交通违章-超速)对应的规则配置
+ * @date 2022/09/07 15:13:00
+ */
+public class CFG_TRAFFIC_OVERSPEED_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 规则名称,不同规则不能重名
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 规则使能
+	 */
+	public byte bRuleEnable;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved = new byte[3];
+	/**
+	 * 相应物体类型个数
+	 */
+	public int nObjectTypeNum;
+	/**
+	 * 相应物体类型列表
+	 */
+	public byte[] szObjectTypes = new byte[16 * 128];
+	/**
+	 * 云台预置点编号 0~65535
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 车道编号
+	 */
+	public int nLane;
+	/**
+	 * 速度上限
+	 */
+	public int nSpeedUpperLimit;
+	/**
+	 * 速度下限
+	 */
+	public int nSpeedLowerLimit;
+	/**
+	 * 最短触发时间 单位:秒
+	 */
+	public int nMinDuration;
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 事件响应时间段
+	 */
+	public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection = new NetSDKLib.CFG_TIME_SECTION[7 * 10];
+	/**
+	 * 是否启用大小车限速
+	 */
+	byte bSpeedLimitForSize;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved1 = new byte[3];
+	/**
+	 * 小型车速度上限
+	 */
+	public int nSmallCarSpeedUpperLimit;
+	/**
+	 * 小型车速度下限
+	 */
+	public int nSmallCarSpeedLowerLimit;
+	/**
+	 * 大车限低速宽限值
+	 */
+	public int nBigCarUnderSpeedMargin;
+	/**
+	 * 大车限高速宽限值
+	 */
+	public int nBigCarOverSpeedMargin;
+	/**
+	 * 小车限低速宽限值
+	 */
+	public int nUnderSpeedMargin;
+	/**
+	 * 小车限高速宽限值
+	 */
+	public int nOverSpeedMargin;
+	/**
+	 * 大车车速度上限
+	 */
+	public int nBigCarSpeedUpperLimit;
+	/**
+	 * 大车车速度下限
+	 */
+	public int nBigCarSpeedLowerLimit;
+	/**
+	 * 黄牌车限速上限
+	 */
+	public int nYellowSpeedUpperLimit;
+	/**
+	 * 黄牌车限速下限
+	 */
+	public int nYellowSpeedLowerLimit;
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public byte bSnapMotorcycle;
+	/**
+	 * 是否抓拍无牌机动车,0为不抓拍无牌机动车,1为抓拍无牌机动车,默认为0
+	 */
+	public byte bSnapNoPlateMotor;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved2 = new byte[2];
+
+	public CFG_TRAFFIC_OVERSPEED_INFO() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.CFG_TIME_SECTION();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java
new file mode 100644
index 0000000..a06f1ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_TRAFFIC_UNDERSPEED_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_UNDERSPEED (交通违章-欠速)对应的规则配置 
+* @date 2022/09/07 15:17:26
+*/
+public class CFG_TRAFFIC_UNDERSPEED_INFO extends NetSDKLib.SdkStructure {
+/** 
+规则名称,不同规则不能重名
+*/
+public			byte[]					szRuleName=new byte[128];
+/** 
+规则使能
+*/
+public			byte					bRuleEnable;
+/** 
+保留字段
+*/
+public			byte[]					bReserved=new byte[3];
+/** 
+相应物体类型个数
+*/
+public			int					nObjectTypeNum;
+/** 
+相应物体类型列表
+*/
+public			byte[]					szObjectTypes=new byte[16*128];
+/** 
+云台预置点编号	0~65535
+*/
+public			int					nPtzPresetId;
+/** 
+车道编号
+*/
+public			int					nLane;
+/** 
+速度上限
+*/
+public			int					nSpeedUpperLimit;
+/** 
+速度下限
+*/
+public			int					nSpeedLowerLimit;
+/** 
+最短触发时间	单位:秒
+*/
+public			int					nMinDuration;
+/** 
+报警联动
+*/
+public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler=new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+/** 
+事件响应时间段
+*/
+public			NetSDKLib.CFG_TIME_SECTION[]					stuTimeSection=new NetSDKLib.CFG_TIME_SECTION[7*10];
+
+public CFG_TRAFFIC_UNDERSPEED_INFO(){
+		for(int i=0;i<stuTimeSection.length;i++){
+			stuTimeSection[i]=new NetSDKLib.CFG_TIME_SECTION();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java
new file mode 100644
index 0000000..bf9e6db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VACAP_SUPPORTEDSCENES.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 场景列表
+ * @date 2021/01/11
+ */
+public class CFG_VACAP_SUPPORTEDSCENES extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 支持的场景个数
+	 */
+	public int nScenes;
+	
+	/**
+	 * 支持的场景列表
+	 */
+	public CFG_CAP_SCENE[] stScenes = (CFG_CAP_SCENE[])new CFG_CAP_SCENE().toArray(NetSDKLib.MAX_SCENE_LIST_SIZE);
+	
+	
+	/**
+	 * 人数统计大类场景
+	 */
+	public CFG_NUMBER_STAT_INFO stuNumberStat;
+	
+	public CFG_VACAP_SUPPORTEDSCENES() {		
+		for (int i = 0; i < stScenes.length; ++i) {
+			stScenes[i] = new CFG_CAP_SCENE();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOABNORMALDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOABNORMALDETECTION_INFO.java
new file mode 100644
index 0000000..a427386
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOABNORMALDETECTION_INFO.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置
+ * @origin autoTool
+ * @date 2023/10/31 09:24:33
+ */
+public class CFG_VIDEOABNORMALDETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * null
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 规则使能
+	 */
+	public byte bRuleEnable;
+	/**
+	 * 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
+	 */
+	public byte bSensitivity;
+	/**
+	 * 保留字段
+	 */
+	public byte[] bReserved = new byte[2];
+	/**
+	 * 相应物体类型个数
+	 */
+	public int nObjectTypeNum;
+	/**
+	 * 相应物体类型列表
+	 */
+	public byte[] szObjectTypes = new byte[16 * 128];
+	/**
+	 * 云台预置点编号 0~65535
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 检测类型数
+	 */
+	public int nDetectType;
+	/**
+	 * 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化 6-条纹检测 , 7-噪声检测 , 8-偏色检测 ,
+	 * 9-视频模糊检测 , 10-对比度异常检测 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测,
+	 * 16-场景巨变
+	 */
+	public byte[] bDetectType = new byte[32];
+	/**
+	 * null
+	 */
+	public int nMinDuration;
+	/**
+	 * 报警联动
+	 */
+	public NetSDKLib.CFG_ALARM_MSG_HANDLE stuEventHandler = new NetSDKLib.CFG_ALARM_MSG_HANDLE();
+	/**
+	 * 事件响应时间段
+	 */
+	public NetSDKLib.CFG_TIME_SECTION[] stuTimeSection = new NetSDKLib.CFG_TIME_SECTION[7 * 10];
+	/**
+	 * 检测区顶点数
+	 */
+	public int nDetectRegionPoint;
+	/**
+	 * 检测区
+	 */
+	public NetSDKLib.CFG_POLYGON[] stuDetectRegion = new NetSDKLib.CFG_POLYGON[20];
+	/**
+	 * 异常检测阈值数量
+	 */
+	public int nThresholdNum;
+	/**
+	 * 异常检测阈值,范围1~100
+	 */
+	public int[] nThreshold = new int[32];
+
+	public CFG_VIDEOABNORMALDETECTION_INFO() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.CFG_TIME_SECTION();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG.java
new file mode 100644
index 0000000..d953bc2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  透雾设置配置信息,对应结构体 CFG_VIDEOINDEFOG 
+* @origin autoTool
+* @date 2023/11/30 15:49:08
+*/
+public class CFG_VIDEOINDEFOG extends NetSDKLib.SdkStructure {
+/** 
+透雾模式 {@link com.netsdk.lib.enumeration.CFG_DEFOG_MODE}
+*/
+public			int					emDefogMode;
+/** 
+强度(0-100)
+*/
+public			int					nIntensity;
+/** 
+大气光模式 {@link com.netsdk.lib.enumeration.CFG_LIGHT_INTENSITY_MODE}
+*/
+public			int					emLightIntensityMode;
+/** 
+大气光强度(0-15)
+*/
+public			int					nLightIntensityLevel;
+/** 
+光学去雾使能 (TRUE使能,FALSE去使能)
+*/
+public			int					bCamDefogEnable;
+
+public CFG_VIDEOINDEFOG(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG_LIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG_LIST.java
new file mode 100644
index 0000000..cc84056
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOINDEFOG_LIST.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  单个通道对应的透雾配置信息 
+* @origin autoTool
+* @date 2023/11/30 15:52:11
+*/
+public class CFG_VIDEOINDEFOG_LIST extends NetSDKLib.SdkStructure {
+/** 
+每个通道实际透雾配置个数
+*/
+public			int					nVideoInDefogNum;
+/** 
+每个通道对应的透雾配置数组
+*/
+public			CFG_VIDEOINDEFOG[]					stVideoInDefog=new CFG_VIDEOINDEFOG[3];
+
+public CFG_VIDEOINDEFOG_LIST(){
+		for(int i=0;i<stVideoInDefog.length;i++){
+			stVideoInDefog[i]=new CFG_VIDEOINDEFOG();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_BASE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_BASE.java
new file mode 100644
index 0000000..de696fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_BASE.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  环境光线配置信息 
+* @origin autoTool
+* @date 2023/11/30 16:17:33
+*/
+public class CFG_VIDEOIN_BACKLIGHT_BASE extends NetSDKLib.SdkStructure {
+/** 
+背光模式 {@link com.netsdk.lib.enumeration.EM_VIDEOIN_BACKLIGHT_MODE}
+*/
+public			int					emMode;
+/** 
+背光补偿模式,当emMode == EM_BACKLIGHT_BACKLIGHT时有效 {@link com.netsdk.lib.enumeration.EM_BACKLIGHT_MODE}
+*/
+public			int					emBacklightMode;
+/** 
+背光补偿区域,当emBacklightMode == EM_BACKLIGHT_REGION时有效
+*/
+public NetSDKLib.CFG_RECT stuBacklightRegion=new NetSDKLib.CFG_RECT();
+/** 
+宽动态值,emMode == EM_BACKLIGHT_WIDEDYNAMIC时有效
+*/
+public			int					nWideDynamicRange;
+/** 
+强光抑制,emMode == EM_BACKLIGHT_GLAREINHIBITION时有效
+*/
+public			int					nGlareInhibition;
+/** 
+SSA对比度调节模式,emMode==EM_BACKLIGHT_SSA时有效 {@link com.netsdk.lib.enumeration.EM_INTENSITY_MODE}
+*/
+public			int					emInitensityMode;
+/** 
+SSA手动调整强度值,emInitensityMode==EM_INTENSITY_MANUAL时有效
+*/
+public			int					nIntensity;
+
+public			CFG_VIDEOIN_BACKLIGHT_BASE(){
+}
+
+    @Override
+    public String toString() {
+        return "CFG_VIDEOIN_BACKLIGHT_BASE{" +
+                "emMode=" + emMode +
+                ", emBacklightMode=" + emBacklightMode +
+                ", stuBacklightRegion=" + stuBacklightRegion +
+                ", nWideDynamicRange=" + nWideDynamicRange +
+                ", nGlareInhibition=" + nGlareInhibition +
+                ", emInitensityMode=" + emInitensityMode +
+                ", nIntensity=" + nIntensity +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_INFO.java
new file mode 100644
index 0000000..d634481
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOIN_BACKLIGHT_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  环境光线配置 
+* @origin autoTool
+* @date 2023/11/30 16:17:33
+*/
+public class CFG_VIDEOIN_BACKLIGHT_INFO extends NetSDKLib.SdkStructure {
+/**
+ *环境光线配置信息,0-白天1-夜晚 2-普通
+*/
+public			CFG_VIDEOIN_BACKLIGHT_BASE[]					stuVideoInBackLight=new CFG_VIDEOIN_BACKLIGHT_BASE[3];
+
+public			CFG_VIDEOIN_BACKLIGHT_INFO(){
+		for(int i=0;i<stuVideoInBackLight.length;i++){
+			stuVideoInBackLight[i]=new CFG_VIDEOIN_BACKLIGHT_BASE();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java
new file mode 100644
index 0000000..d308df2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEOSATA_SUMMARY_INFO.java
@@ -0,0 +1,179 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取视频统计摘要信息结构体
+ * @date 2022/12/19 09:10:21
+ */
+public class CFG_VIDEOSATA_SUMMARY_INFO extends NetSDKLib.SdkStructure {
+
+	public int nStructSize;
+	/**
+	 * 统计通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 规则名称
+	 */
+	public byte[] szRuleName = new byte[128];
+	/**
+	 * 统计时间,转换到UTC
+	 */
+	public CFG_NET_TIME_EX stuStatTime = new CFG_NET_TIME_EX();
+	/**
+	 * 进入总计
+	 */
+	public int nEnteredTotal;
+	/**
+	 * 今天进入总计
+	 */
+	public int nEnteredToday;
+	/**
+	 * 本月进入总计
+	 */
+	public int nEnteredMonth;
+	/**
+	 * 今年进入总计
+	 */
+	public int nEnteredYear;
+	/**
+	 * 每日最大进入总计
+	 */
+	public int nEnteredDaily;
+	/**
+	 * 出去总计
+	 */
+	public int nExitedTotal;
+	/**
+	 * 今天出去总计
+	 */
+	public int nExitedToday;
+	/**
+	 * 本月出去总计
+	 */
+	public int nExitedMonth;
+	/**
+	 * 今年出去总计
+	 */
+	public int nExitedYear;
+	/**
+	 * 每日最大出去总计
+	 */
+	public int nExitedDaily;
+	/**
+	 * 平均所有保有统计(除去零值)
+	 */
+	public int nAvgTotal;
+	/**
+	 * 平均今天保有统计
+	 */
+	public int nAvgToday;
+	/**
+	 * 平均本月保有统计
+	 */
+	public int nAvgMonth;
+	/**
+	 * 平均今年保有统计
+	 */
+	public int nAvgYear;
+	/**
+	 * 最大所有保有统计(除去零值)
+	 */
+	public int nMaxTotal;
+	/**
+	 * 最大今天保有统计
+	 */
+	public int nMaxToday;
+	/**
+	 * 最大本月保有统计
+	 */
+	public int nMaxMonth;
+	/**
+	 * 最大今年保有统计
+	 */
+	public int nMaxYear;
+	/**
+	 * 区域内人数
+	 */
+	public int nInsideSubTotal;
+	/**
+	 * 规则类型 {@link com.netsdk.lib.enumeration.EM_CFG_RULE_TYPE}
+	 */
+	public int emRuleType;
+	/**
+	 * 离开人员的数量
+	 */
+	public int nRetExitManNum;
+	/**
+	 * 离开人员的滞留时间信息
+	 */
+	public CFG_EXITMAN_STAY_STAT[] stuExitManStayInfo = new CFG_EXITMAN_STAY_STAT[32];
+	/**
+	 * 设备运行后猪只统计总数,重启后从上次总数开始继续累加
+	 */
+	public int nEnteredTotalPig;
+	/**
+	 * 小时内的总猪只数量
+	 */
+	public int nEnteredHourPig;
+	/**
+	 * 当天的总猪只数(自然天)
+	 */
+	public int nEnteredTodayPig;
+	/**
+	 * IPC专用,如果不执行clearSectionStat操作,等同于TodayPig猪只数
+	 */
+	public int nEnteredTotalPigInTimeSection;
+	/**
+	 * 设备运行后猪只统计总数,重启后从上次总数开始继续累加
+	 */
+	public int nExitedTotalPig;
+	/**
+	 * 小时内的总猪只数量
+	 */
+	public int nExitedHourPig;
+	/**
+	 * 当天的总猪只数(自然天)
+	 */
+	public int nExitedTodayPig;
+	/**
+	 * IPC专用,如果不执行clearSectionStat操作,等同于TodayPig猪只数
+	 */
+	public int nExitedTotalPigInTimeSection;
+	/**
+	 * 区域内猪只数
+	 */
+	public int nInsideTotalPig;
+	/**
+	 * 猪只离开滞留时间信息个数
+	 */
+	public int nInsidePigStayStatCount;
+	/**
+	 * 猪只离开滞留时间信息
+	 */
+	public CFG_PIG_STAY_STAT[] stuInsidePigStayStatInfo = new CFG_PIG_STAY_STAT[32];
+	/**
+	 * 当天的猪只数
+	 */
+	public int nInsideTodayPig;
+	/**
+	 * 自动清零时间段内的人数(IPC专用,如果不执行clearSectionStat操作,等同于Today人数)
+	 */
+	public int nEnteredTotalInTimeSection;
+	/**
+	 * 自动清零时间段内的人数(IPC专用,如果不执行clearSectionStat操作,等同于Today人数)
+	 */
+	public int nExitedTotalInTimeSection;
+
+	public CFG_VIDEOSATA_SUMMARY_INFO() {
+		this.nStructSize = this.size();
+		for (int i = 0; i < stuExitManStayInfo.length; i++) {
+			stuExitManStayInfo[i] = new CFG_EXITMAN_STAY_STAT();
+		}
+		for (int i = 0; i < stuInsidePigStayStatInfo.length; i++) {
+			stuInsidePigStayStatInfo[i] = new CFG_PIG_STAY_STAT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java
new file mode 100644
index 0000000..191368c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_ALGORITHM.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  算法百分占比,总100 
+* @date 2022/09/15 15:38:18
+*/
+public class CFG_VIDEO_ALGORITHMTYPE_ALGORITHM extends NetSDKLib.SdkStructure {
+/** 
+检测百分比
+*/
+public			int					nDetectionPercent;
+/** 
+识别百分比
+*/
+public			int					nRecognitionPercent;
+/** 
+属性百分比
+*/
+public			int					nAttributePercent;
+
+public CFG_VIDEO_ALGORITHMTYPE_ALGORITHM(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java
new file mode 100644
index 0000000..d49e04d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ALGORITHMTYPE_DETECTION.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  视频算法类型检测 
+* @date 2022/09/15 15:38:18
+*/
+public class CFG_VIDEO_ALGORITHMTYPE_DETECTION extends NetSDKLib.SdkStructure {
+/** 
+使能配置
+*/
+public			int					bEnable;
+/** 
+人脸算法阀值
+*/
+public			int					nFaceAlgorithmThreshold;
+/** 
+人脸算法百分占比,总100
+*/
+public			CFG_VIDEO_ALGORITHMTYPE_ALGORITHM					stuFaceAlgorithm=new CFG_VIDEO_ALGORITHMTYPE_ALGORITHM();
+/** 
+人体算法阀值
+*/
+public			int					nHumanBodyAlgorithmThreshold;
+/** 
+人体算法百分占比,总100
+*/
+public			CFG_VIDEO_ALGORITHMTYPE_ALGORITHM					stuHumanBodyAlgorithm=new CFG_VIDEO_ALGORITHMTYPE_ALGORITHM();
+/** 
+车辆算法阀值
+*/
+public			int					nVehicleAlgorithmThreshold;
+/** 
+车辆算法百分占比,总100
+*/
+public			CFG_VIDEO_ALGORITHMTYPE_ALGORITHM					stuVehicleAlgorithm=new CFG_VIDEO_ALGORITHMTYPE_ALGORITHM();
+/** 
+车牌算法阀值
+*/
+public			int					nPlateNumAlgorithmThreshold;
+/** 
+车牌算法百分占比,总100
+*/
+public			CFG_VIDEO_ALGORITHMTYPE_ALGORITHM					stuPlateNumAlgorithm=new CFG_VIDEO_ALGORITHMTYPE_ALGORITHM();
+
+public CFG_VIDEO_ALGORITHMTYPE_DETECTION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java
new file mode 100644
index 0000000..8e76ca6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_AVAILABILITY_DETECTION.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 视频完好率检测
+ * @date 2021/2/22
+ */
+public class CFG_VIDEO_AVAILABILITY_DETECTION extends NetSDKLib.SdkStructure {
+  /** 使能配置 */
+  public int bEnable;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ENCODECAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ENCODECAP.java
new file mode 100644
index 0000000..377aa02
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_ENCODECAP.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 视频输入前端能力集
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 22:26
+ */
+public class CFG_VIDEO_ENCODECAP extends NetSDKLib.SdkStructure {
+    /**
+     * CIF P帧最大值 单位Kbits, 默认值 40
+     */
+    public int nMaxCIFFrame;
+    /**
+     * IF P帧最小值 单位Kbits, 默认值 7
+     */
+    public int nMinCIFFrame;
+    /**
+     * 支持的最大编码音频数,用于双音频,默认 1
+     */
+    public int nMaxEncodeAudios;
+    /**
+     * 保留字节,用于字节对齐
+     */
+    public byte[] byReserved = new byte[4];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java
new file mode 100644
index 0000000..09c121c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_FILCKERING_DETECTION.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  闪频检测 
+* @date 2022/09/15 15:40:17
+*/
+public class CFG_VIDEO_FILCKERING_DETECTION extends NetSDKLib.SdkStructure {
+/** 
+使能配置
+*/
+public			int					bEnable;
+/** 
+预警阈值, 范围:1~100
+*/
+public			int					nWarnThreshold;
+/** 
+报警阈值, 范围:1~100
+*/
+public			int					nAlarmThreshold;
+/** 
+最短持续时间, 单位: 秒, 取值: 0~65535
+*/
+public			int					nMinDuration;
+/** 
+保留字节
+*/
+public			byte[]					szReserver=new byte[256];
+
+public CFG_VIDEO_FILCKERING_DETECTION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java
new file mode 100644
index 0000000..36c553a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  聚焦设置基本信息单元 
+* @date 2022/11/01 11:16:54
+*/
+public class CFG_VIDEO_IN_FOCUS extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelIndex;
+/** 
+配置使用个数
+*/
+public			int					nVideoInFocusRealNum;
+/** 
+通道聚焦配置单元信息
+*/
+public			CFG_VIDEO_IN_FOCUS_UNIT[]					stVideoInFocusUnit=new CFG_VIDEO_IN_FOCUS_UNIT[32];
+
+public			CFG_VIDEO_IN_FOCUS(){
+		for(int i=0;i<stVideoInFocusUnit.length;i++){
+			stVideoInFocusUnit[i]=new CFG_VIDEO_IN_FOCUS_UNIT();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java
new file mode 100644
index 0000000..a8216dd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_IN_FOCUS_UNIT.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  聚焦设置基本信息单元 
+* @date 2022/11/01 11:16:54
+*/
+public class CFG_VIDEO_IN_FOCUS_UNIT extends NetSDKLib.SdkStructure {
+/** 
+聚焦模式, 0-关闭, 1-辅助聚焦, 2-自动聚焦, 3-半自动聚焦, 4-手动聚焦
+*/
+public			int					nMode;
+/** 
+聚焦灵敏度, 0-高, 1-默认, 2-低
+*/
+public			int					nSensitivity;
+/** 
+红外光聚焦修正, 0-不修正, 1-修正, 2-自动修正
+*/
+public			int					nIRCorrection;
+/** 
+聚焦极限 {@link com.netsdk.lib.enumeration.EM_FOCUS_LIMIT_SELECT_MODE}
+*/
+public			int					emFocusMode;
+/** 
+聚焦极限值, 单位毫米
+*/
+public			int					nFocusLimit;
+
+public			CFG_VIDEO_IN_FOCUS_UNIT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java
new file mode 100644
index 0000000..f3a7252
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_LOSS_FRAME_DETECTION.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  丢帧检测 
+* @date 2022/09/15 15:41:32
+*/
+public class CFG_VIDEO_LOSS_FRAME_DETECTION extends NetSDKLib.SdkStructure {
+/** 
+使能配置
+*/
+public			int					bEnable;
+/** 
+预警阈值, 范围:1~100
+*/
+public			int					nWarnThreshold;
+/** 
+报警阈值, 范围:1~100
+*/
+public			int					nAlarmThreshold;
+/** 
+最短持续时间, 单位: 秒, 取值: 0~65535
+*/
+public			int					nMinDuration;
+/** 
+保留字节
+*/
+public			byte[]					szReserver=new byte[256];
+
+public CFG_VIDEO_LOSS_FRAME_DETECTION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java
new file mode 100644
index 0000000..a2498a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VIDEO_SNOWFLAKE_DETECTION.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 雪花屏检测
+ * @date 2021/2/22
+ */
+public class CFG_VIDEO_SNOWFLAKE_DETECTION extends NetSDKLib.SdkStructure {
+  /** 使能配置 */
+  public int bEnable;
+  /** 预警阈值, 范围:1~100 */
+  public int nWarnThreshold;
+  /** 报警阈值, 范围:1~100 */
+  public int nAlarmThreshold;
+  /** 最短持续时间, 单位:秒, 取值: 0~65535 */
+  public int nMinDuration;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java
new file mode 100644
index 0000000..1f53603
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VOICE_PLAY_PLAN.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 时间预案播放语音控制能力 CFG_VOICE_PLAY_PLAN dhconfig.h
+ * @date 2021/12/7 15:07
+ */
+public class CFG_VOICE_PLAY_PLAN extends NetSDKLib.SdkStructure{
+
+    public boolean           bSupport;			// 是否支持时间预案语音播报
+    public int            nVoiceTaskNum;		// 支持时间预案的语音个数
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java
new file mode 100644
index 0000000..b03d3e1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_ALARM_INFO.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @author 119178
+ * @description 报警相关信息
+ * @date 2021/4/21
+ */
+public class CFG_VSP_GAYS_ALARM_INFO extends SdkStructure{
+	public byte[]                            szId = new byte[NetSDKLib.CFG_COMMON_STRING_64];             // 通道编号	字符串(24位)
+	public int                             nAlarmLevel;                            // 报警级别[1,6]	整型
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java
new file mode 100644
index 0000000..36a0573
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_CHANNEL_INFO.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @author 119178
+ * @description 通道相关信息
+ * @date 2021/4/21
+ */
+public class CFG_VSP_GAYS_CHANNEL_INFO extends SdkStructure{
+	public byte[]                            szId = new byte[NetSDKLib.CFG_COMMON_STRING_64];             // 通道编号	字符串(24位)
+	public int                             nAlarmLevel;                            // 报警级别[1,6]	整型
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_INFO.java
new file mode 100644
index 0000000..2397d30
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_VSP_GAYS_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.EM_NEW_CONFIG;
+/**
+ * @author 119178
+ * @description 平台接入配置({@link EM_NEW_CONFIG#CFG_CMD_VSP_GAYS})
+ * @date 2021/4/21
+ */
+public class CFG_VSP_GAYS_INFO extends SdkStructure{
+	public int                            bEnable;                                // 是否使能,TRUE使能,FALSE不使能
+	public byte[]                         szSipSvrId = new byte[NetSDKLib.CFG_COMMON_STRING_64];       // SIP服务器编号	字符串(24位)
+	public byte[]                         szDomain = new byte[NetSDKLib.CFG_COMMON_STRING_256];        // SIP域	字符串(128位)
+	public byte[]                         szSipSvrIp = new byte[NetSDKLib.CFG_COMMON_STRING_32];       // SIP服务器IP	字符串(16位)
+	public byte[]                         szDeviceId = new byte[NetSDKLib.CFG_COMMON_STRING_64];       // 设备编号,也是注册用户名	字符串(24位)
+	public byte[]                         szPassword = new byte[NetSDKLib.CFG_COMMON_STRING_64];       // 注册密码,密文	字符串(24位)
+	public short                          nLocalSipPort;                          // 本地SIP服务端口	无符号短整型
+	public short                          nSipSvrPort;                            // SIP服务器端口	无符号短整型
+	public int                            nSipRegExpires;                         // 注册有效期	整型
+	public int                            nKeepAliveCircle;                       // 心跳周期	整型
+	public int                            nMaxTimeoutTimes;                       // 最大心跳超时次数	整型
+    public byte[]                         szCivilCode = new byte[NetSDKLib.CFG_COMMON_STRING_64];      // 行政区划代码	字符串(24位)
+    public byte[]                         szIntervideoID = new byte[NetSDKLib.CFG_COMMON_STRING_64];   // 接入模块识别码	字符串(24位)
+    public short                          nChannelSum;                            // 通道数	无符号短整型
+    public short                          nAlarmInSum;                            // 外部报警输入数	无符号短整型
+    public CFG_VSP_GAYS_CHANNEL_INFO[]    stuChannelInfo=(CFG_VSP_GAYS_CHANNEL_INFO[])new CFG_VSP_GAYS_CHANNEL_INFO().toArray(NetSDKLib.MAX_VIDEO_CHANNEL_NUM);  // 通道相关信息数组,有效个数同channelSum
+    public CFG_VSP_GAYS_ALARM_INFO[]      stuAlarmInfo=(CFG_VSP_GAYS_ALARM_INFO[])new CFG_VSP_GAYS_ALARM_INFO().toArray(32);    // 报警相关信息	数组,有效个数同alarmInSum
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WIRELESS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WIRELESS_INFO.java
new file mode 100644
index 0000000..5e193fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WIRELESS_INFO.java
@@ -0,0 +1,89 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 无线网络连接设置
+ * @date 2023/03/16 14:23:46
+ */
+public class CFG_WIRELESS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 2G网络使能
+	 */
+	public int bEnable;
+	/**
+	 * 保活时间, 单位为秒,0表示一直连接,不自动断开
+	 */
+	public int nKeepAlive;
+	/**
+	 * 接入的2G网络名称 {@link com.netsdk.lib.enumeration.EM_CFG_APN}
+	 */
+	public int emAPN;
+	/**
+	 * 用户名
+	 */
+	public byte[] szUseName = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * 每日流量控制策略 {@link com.netsdk.lib.enumeration.EM_CFG_DAY3GFLUXTACTIC}
+	 */
+	public int emDay3GFluxTactic;
+	/**
+	 * 每日流量使用上限, MB或者分钟
+	 */
+	public int dwDay3GFluxUp;
+	/**
+	 * 当日的已用流量, MB或者分钟
+	 */
+	public int dwDay3GFluxUse;
+	/**
+	 * 流量报警策略 {@link com.netsdk.lib.enumeration.EM_CFG_DAY3GFLUXACTION}
+	 */
+	public int emDay3GFluxAction;
+	/**
+	 * 拨号时间段
+	 */
+	public NetSDKLib.TIME_SECTION_WEEK_DAY_6[] stuTimeSection = new NetSDKLib.TIME_SECTION_WEEK_DAY_6[7];
+	/**
+	 * 鉴权模式 {@link com.netsdk.lib.enumeration.EM_CFG_AUTHMODE}
+	 */
+	public int emAuthMode;
+	/**
+	 * 接入网络名
+	 */
+	public byte[] szAPNName = new byte[32];
+	/**
+	 * 实际使用流量, [0,65535]MB或者分钟
+	 */
+	public int n3GFlux;
+	/**
+	 * 流量使用策略{@link com.netsdk.lib.enumeration.EM_CFG_3GFLUXTACTIC}
+	 */
+	public int em3GFluxTactic;
+	/**
+	 * 流量使用上限
+	 */
+	public int n3GFluxUp;
+	/**
+	 * 工作模式选择 {@link com.netsdk.lib.enumeration.EM_CFG_WORKMODE}
+	 */
+	public int emWorkMode;
+	/**
+	 * 拨号号码
+	 */
+	public byte[] szDailNumber = new byte[32];
+	/**
+	 * 是否已经被语音或短信激活
+	 */
+	public int bActivate;
+
+	public CFG_WIRELESS_INFO() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new NetSDKLib.TIME_SECTION_WEEK_DAY_6();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_EAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_EAP.java
new file mode 100644
index 0000000..6d602f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_EAP.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 单个WLAN配置EAP
+ * @date 2023/03/16 11:15:26
+ */
+public class CFG_WLAN_EAP extends NetSDKLib.SdkStructure {
+	/**
+	 * EAP方法 {@link com.netsdk.lib.enumeration.EM_CFG_EAP_METHOD}
+	 */
+	public int emMethod;
+	/**
+	 * EAP身份验证方法 {@link com.netsdk.lib.enumeration.EM_CFG_EAP_AUTH_TYPE}
+	 */
+	public int emAuthType;
+	/**
+	 * 身份
+	 */
+	public byte[] szIdentity = new byte[64];
+	/**
+	 * 匿名身份
+	 */
+	public byte[] szAnonymousID = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * CA证书
+	 */
+	public byte[] szCaCert = new byte[512];
+	/**
+	 * 用户证书
+	 */
+	public byte[] szUserCert = new byte[512];
+
+	public CFG_WLAN_EAP() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_INFO.java
new file mode 100644
index 0000000..5ff9276
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 单个WLAN配置
+ * @date 2023/03/16 11:15:26
+ */
+public class CFG_WLAN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * Wlan名称, 只能获取不能修改
+	 */
+	public byte[] szWlanName = new byte[32];
+	/**
+	 * WIFI网卡使能开关, TRUE打开, FALSE关闭
+	 */
+	public int bEnable;
+	/**
+	 * 网络名称(SSID)
+	 */
+	public byte[] szSSID = new byte[36];
+	/**
+	 * 手动连接开关, TRUE手动连接, FALSE手动断开
+	 */
+	public int bConnectEnable;
+	/**
+	 * 自动连接开关, TRUE不自动连接, FALSE自动连接, IPC无意义
+	 */
+	public int bLinkEnable;
+	/**
+	 * 连接模式, 0: auto, 1: adhoc, 2: Infrastructure
+	 */
+	public int nLinkMode;
+	/**
+	 * 加密模式, 0: off, 1: on, 2: WEP64, 3: WEP128, 4: WPA-PSK-TKIP, 5: WPA-PSK-AES, 6:
+	 * WPA2-PSK-TKIP, 7: WPA2-PSK-AES, 8: WPA-TKIP, 9: WPA-AES, 10: WPA2-TKIP, 11:
+	 * WPA2-AES, 12: AUTO
+	 * 
+	 *  二代byAuthMode  , byEncrAlgr  与三代映射关系
+	* Authentication认证方式	DataEncryption数据加密方式	Encryption加密模式						
+	* OPEN                    NONE                        "On" 							
+	* OPEN                    WEP                         "WEP-OPEN"							
+	* SHARD                   WEP                         "WEP-SHARED"						
+	* WPA                     TKIP                        "WPA-TKIP"							
+	* WPA-PSK                 TKIP                        "WPA-PSK-TKIP"						
+	* WPA2                    TKIP                        "WPA2-TKIP"							
+	* WPA2-PSK                TKIP                        "WPA2-PSK-TKIP"						
+	* WPA                     AES(CCMP)                   "WPA-AES"							
+	* WPA-PSK                 AES(CCMP)                   "WPA-PSK-AES"						
+	* WPA2                    AES(CCMP)                   "WPA2-AES"							
+	* WPA2-PSK                AES(CCMP)                   "WPA2-PSK-AES"					
+	* WPA                     TKIP+AES( mix Mode)         "WPA-TKIP"或者"WPA-AES"				
+	* WPA-PSK                 TKIP+AES( mix Mode)         "WPA-PSK-TKIP"或者"WPA-PSK-AES"		
+	* WPA2                    TKIP+AES( mix Mode)         "WPA2-TKIP"或者"WPA2-AES"			
+	* WPA2-PSK                TKIP+AES( mix Mode)         "WPA2-PSK-TKIP"或者"WPA2-PSK-AES"			
+	* WPA3-SAE				AES(CCMP)					"WPA3-SAE-CCMP"						
+	 */
+	public int nEncryption;
+	/**
+	 * 认证方式, 暂时没用 {@link com.netsdk.lib.enumeration.EM_CFG_WIRELESS_AUTHENTICATION}
+	 */
+	public int emAuthentication;
+	/**
+	 * 数据加密方式, 暂时没用 {@link com.netsdk.lib.enumeration.EM_CFG_WIRELESS_DATA_ENCRYPT}
+	 */
+	public int emDataEncryption;
+	/**
+	 * 密码类型, 0: Hex, 1: ASCII
+	 */
+	public int nKeyType;
+	/**
+	 * 秘钥索引, 取值0~3
+	 */
+	public int nKeyID;
+	/**
+	 * 四组密码
+	 */
+	public byte[] szKeys = new byte[4 * 128];
+	/**
+	 * 密码是否已经设置
+	 */
+	public int bKeyFlag;
+	/**
+	 * EAP
+	 */
+	public CFG_WLAN_EAP stuEap = new CFG_WLAN_EAP();
+	/**
+	 * Network
+	 */
+	public CFG_WLAN_NETWORK stuNetwork = new CFG_WLAN_NETWORK();
+
+	public CFG_WLAN_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_NETWORK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_NETWORK.java
new file mode 100644
index 0000000..b6be112
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CFG_WLAN_NETWORK.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 单个WLAN配置Network
+ * @date 2023/03/16 11:15:26
+ */
+public class CFG_WLAN_NETWORK extends NetSDKLib.SdkStructure {
+	/**
+	 * IP
+	 */
+	public byte[] szIPAddress = new byte[40];
+	/**
+	 * 子网掩码
+	 */
+	public byte[] szSubnetMask = new byte[40];
+	/**
+	 * 网关
+	 */
+	public byte[] szDefaultGateway = new byte[40];
+	/**
+	 * 是否开启DHCP
+	 */
+	public int bDhcpEnable;
+	/**
+	 * DNS服务器
+	 */
+	public BYTE_40[] szDnsServers = new BYTE_40[2];
+
+	public CFG_WLAN_NETWORK() {
+		for (int i = 0; i < szDnsServers.length; i++) {
+			szDnsServers[i] = new BYTE_40();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CGF_MASKING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CGF_MASKING_INFO.java
new file mode 100644
index 0000000..99a32ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CGF_MASKING_INFO.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.NET_CFG_Color;
+
+/**
+ * @author 251823
+ * @description
+ * @date 2022/07/21 14:56:20
+ */
+public class CGF_MASKING_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  隐私遮挡开关标志 true开,false关
+     */
+    public int bEnable;
+
+    /**
+     *  云台方向与放大倍数
+     */
+    public PTZ_SPEED stuPosition;
+
+    /**
+     *  形状类型,参考枚举{ @link EM_SHAPE_TYPE}
+     */
+    public int stuShapeType;
+
+    /**
+     *  矩形区域, 坐标取值0~8192
+     */
+    public DH_RECT_REGION stuRect;
+
+    /**
+     *  多边形顶点数
+     */
+    public int nPolygonPoint;
+
+    /**
+     *  多边形顶点坐标,坐标取值0~8192
+     */
+    public NetSDKLib.CFG_POLYGON[] stuPolygon = (NetSDKLib.CFG_POLYGON[]) new NetSDKLib.CFG_POLYGON().toArray(NetSDKLib.MAX_POLYGON_NUM);
+    /**
+     *  遮挡块色
+     */
+    public NetSDKLib.NET_CFG_Color stuColor;
+
+    /**
+     *  遮挡块马赛克类型,马赛克时遮挡块色字段无效,参考枚举{ @link EM_MOSAIC_TYPE}
+     */
+    public int stuMosaicType;
+
+    /**
+     *  球机水平视场角, 范围[0.0, 360.0],单位:度
+     */
+    public double dViewAngle;
+		
+	public CGF_MASKING_INFO() {
+		for (int i = 0; i < stuPolygon.length; i++) {
+			stuPolygon[i] = new NetSDKLib.CFG_POLYGON();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CROWD_CALIBRATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CROWD_CALIBRATION.java
new file mode 100644
index 0000000..eb423d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CROWD_CALIBRATION.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人群分布图的标定线段相关能力 
+ * @date 2021/01/11
+ */
+public class CROWD_CALIBRATION extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 水平线段数量
+	 */
+	public int nHorizontalLines;
+	
+	/**
+	 * 垂直线段数量
+	 */
+	public int nVerticalLines;	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java
new file mode 100644
index 0000000..a00aba8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警布撤防控制扩展(对应DH_CTRL_ARMED_EX)
+ * @date 2021/10/29
+ */
+public class CTRL_ARM_DISARM_PARAM_EX extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  报警布撤防控制输入
+     */
+    public CTRL_ARM_DISARM_PARAM_EX_IN stuIn = new CTRL_ARM_DISARM_PARAM_EX_IN();
+
+    /**
+     *  报警布撤防控制输出
+     */
+    public CTRL_ARM_DISARM_PARAM_EX_OUT stuOut = new CTRL_ARM_DISARM_PARAM_EX_OUT();
+
+    public CTRL_ARM_DISARM_PARAM_EX(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java
new file mode 100644
index 0000000..943486d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_IN.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 报警布撤防控制扩展输入参数
+ * @date 2021/10/29
+ */
+public class CTRL_ARM_DISARM_PARAM_EX_IN extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    
+    /**
+     * 布撤防状态,参考枚举 { @link com.netsdk.lib.NetSDKLib.NET_ALARM_MODE}
+     */
+    public int emState;
+    
+    /**
+     * 用户密码
+     */
+    public Pointer szDevPwd;
+        
+    /**
+     * 情景模式,参考枚举 { @link com.netsdk.lib.NetSDKLib.NET_SCENE_MODE}
+     */
+    public int emSceneMode;
+    
+    /**
+     * 转发目标设备ID,为NULL表示不转发
+     */
+    public Pointer szDevID;
+    
+    public CTRL_ARM_DISARM_PARAM_EX_IN(){
+        this.dwSize = this.size();
+    }
+    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java
new file mode 100644
index 0000000..0a43ecb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_ARM_DISARM_PARAM_EX_OUT.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 报警布撤防控制扩展输出参数
+ * @date 2021/10/29
+ */
+public class CTRL_ARM_DISARM_PARAM_EX_OUT extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  有报警源输入布防失败的防区个数
+     */
+    public int dwSourceNum;
+
+    /**
+     *  有报警源输入失败的防区号, 防区号从0开始
+     */
+    public int[] nSource = new int[NetSDKLib.ARM_DISARM_ZONE_MAX];
+
+    /**
+     *  有联动报警布防失败的防区个数
+     */
+    public int dwLinkNum;
+
+    /**
+     *  有联动报警失败的防区号, 防区号从0开始
+     */
+    public int[] nLink = new int[NetSDKLib.ARM_DISARM_ZONE_MAX];
+
+    public CTRL_ARM_DISARM_PARAM_EX_OUT(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_INFO.java
new file mode 100644
index 0000000..89fa945
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CTRL_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 控制信息
+ * @date 2021/09/01
+ */
+public class CTRL_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  按位表示:Bit0:车道 Bit1:进口匝道 Bit2:出口匝道 Bit3~Bit7:保留 取值1表示具有,0表示不具有 
+     */
+    public int nType;
+
+    /**
+     *  编号
+     */
+    public int nNo;
+
+    /**
+     *  方向 整数,以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nDir;
+
+    /**
+     *  车道/匝道信号 1:开放 2:关闭
+     */
+    public int nStatus;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUR_STEP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUR_STEP_INFO.java
new file mode 100644
index 0000000..216d02a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUR_STEP_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 当前信号方案色步信息
+ * @date 2021/09/01
+ */
+public class CUR_STEP_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  灯组总数量
+     */
+    public int nLampNumber;
+
+    /**
+     *  信号灯控制路口的进口数量
+     */
+    public int nEnterNumber;
+
+    /**
+     *  灯组色步信息个数
+     */
+    public int nStepInfoNum;
+
+    /**
+     *  灯组色步信息(0~8)包含1到N(进口数量)个灯组色步信息
+     */
+    public STEP_INFO[] stuStepInfo = (STEP_INFO[]) new STEP_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUSTOM_PERSON_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUSTOM_PERSON_INFO.java
new file mode 100644
index 0000000..bc936bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/CUSTOM_PERSON_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.DH_MAX_PERSON_INFO_LEN;
+
+/**
+ * className:CUSTOM_PERSON_INFO
+ * description:
+ * author:251589
+ * createTime:2020/12/28 11:08
+ *
+ * @version v1.0
+ */
+public class CUSTOM_PERSON_INFO extends NetSDKLib.SdkStructure {
+    public byte[]    szPersonInfo = new byte[DH_MAX_PERSON_INFO_LEN];    //人员扩展信息
+    public byte[]    byReserved = new byte[124];    // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java
new file mode 100644
index 0000000..0db5a9b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ACCESS_CTL_IMAGE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 图片信息
+* @date 2022/03/07 11:45:31
+*/
+public class DEV_ACCESS_CTL_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+图片类型  {@link com.netsdk.lib.NetSDKLib.EM_ACCESS_CTL_IMAGE_TYPE}
+*/
+public			int					emType;
+/** 
+二进制块偏移字节
+*/
+public			int					nOffSet;
+/** 
+图片大小
+*/
+public			int					nLength;
+/** 
+图片宽度(单位:像素)
+*/
+public			int					nWidth;
+/** 
+图片高度(单位:像素)
+*/
+public			int					nHeight;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[48];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ALRAM_SCENECHANGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ALRAM_SCENECHANGE_INFO.java
new file mode 100644
index 0000000..7677ebf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ALRAM_SCENECHANGE_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 场景变更事件,ReloadPicture(对应事件 EVENT_IVS_SCENE_CHANGE)
+ * @origin autoTool
+ * @date 2023/10/31 09:24:26
+ */
+public class DEV_ALRAM_SCENECHANGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * / 持续型事件动作, 1表示开始, 2表示停止
+	 */
+	public int nEventAction;
+	/**
+	 * / 时间戳(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * / 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * / 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * / 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+	/**
+	 * / 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+	 */
+	public byte byImageIndex;
+	/**
+	 * / 抓图标志(按位),具体见 NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+	/**
+	 * / 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * / 保留字节,留待扩展.
+	 */
+	public byte[] bReserved = new byte[1024];
+
+	public DEV_ALRAM_SCENECHANGE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java
new file mode 100644
index 0000000..e57b383
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_DAHUA_RADAR_CONFIG.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:DEV_DAHUA_RADAR_CONFIG
+ * description:
+ * author:251589
+ * createTime:2020/12/29 11:02
+ *
+ * @version v1.0
+ */
+public class DEV_DAHUA_RADAR_CONFIG extends NetSDKLib.SdkStructure {
+    /**
+     *  角度,用于修正雷达探头安装的角度造成的速度误差 单位度,范围0~45
+     */
+    public int    nAngle;
+
+    /**
+     *  是否启用低限速,为 TRUE NET_RADAR_CARSPEED_INFO 结构中各下限值有效
+     */
+    public boolean    bLowSpeed;
+
+    /**
+     *  是否启用大小车限速,为 FALSE 时仅小车速度配置(stuSmallCarSpeed)有效
+     */
+    public boolean    bSpeedForSize;
+
+    /**
+     *  小车速度配置,bSpeedForSize 为 TRUE 时 nTriggerLower 成员同时也代表中车和大车的触发值下限
+     */
+    public NET_RADAR_CARSPEED_INFO    stuSmallCarSpeed;
+
+    /**
+     *  中车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效
+     */
+    public NET_RADAR_CARSPEED_INFO    stuMediumCarSpeed;
+
+    /**
+     *  大车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效
+     */
+    public NET_RADAR_CARSPEED_INFO    stuBigCarSpeed;
+
+    /**
+     *  设备安装地址
+     */
+    public byte[]    szName = new byte[256];
+
+    /**
+     *  灵敏度 范围0~5,0最高
+     */
+    public int    nSensitivity;
+
+    /**
+     *  检测模式,取值:-1 无意义 0 前向来车 1 前向去车 2 后向来车 3 后向去车 4 前向双向 5 后向双向
+     */
+    public int    nDetectMode;
+
+    /**
+     *  保留字节
+     */
+    public byte[]    bReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_CFG.java
new file mode 100644
index 0000000..bcc2282
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_CFG.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 前端接入配置参数信息
+ * @date 2022/08/10
+ */
+public class DEV_ENCODER_CFG extends NetSDKLib.SdkStructure {
+    /**
+     *  数字通道个数
+     */
+    public int nChannels;
+
+    /**
+     *  各数字通道的前端编码器信息
+     */
+    public DEV_ENCODER_INFO[] stuDevInfo =  new DEV_ENCODER_INFO[32];
+    /**
+     *  数字通道中最多可支持高清视频个数(为0表示不支持高清设置)
+     *  注:如果支持高清设置,高清通道为0~N-1,若将N之后的数字通道设置为高清,有可能保存不成功
+     */
+    public byte byHDAbility;
+
+    /**
+     *  设备是否支持TV调节, 0:不支持 1:支持.
+     */
+    public byte bTVAdjust;
+
+    /**
+     *  设备是否支持解码轮巡, 0:不支持 大于0:表示前端支持轮巡最大设备数.
+     */
+    public byte bDecodeTour;
+
+    /**
+     *  指示是否支持远程云台控制。
+     */
+    public byte bRemotePTZCtl;
+
+    /**
+     * reserved
+     */
+    public byte[] reserved = new byte[12];
+    
+    public DEV_ENCODER_CFG() {
+    	for (int i = 0; i < stuDevInfo.length; i++) {
+    		stuDevInfo[i] = new DEV_ENCODER_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_INFO.java
new file mode 100644
index 0000000..186648d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_ENCODER_INFO.java
@@ -0,0 +1,138 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 连接的编码器信息
+ * @date 2022/08/10
+ */
+public class DEV_ENCODER_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  前端DVR的IP地址
+     */
+    public byte[] szDevIp = new byte[NetSDKLib.NET_MAX_IPADDR_LEN];
+
+    /**
+     *  前端DVR的端口号
+     */
+    public short wDevPort;
+
+    /**
+     *  解码通道使能
+     */
+    public byte bDevChnEnable;
+
+    /**
+     *  该字段已废弃,后续开发请用 dwDecoderID
+     */
+    public byte byDecoderID;
+
+    /**
+     *  用户名
+     */
+    public byte[] szDevUser = new byte[NetSDKLib.NET_USER_NAME_LENGTH_EX];
+
+    /**
+     *  密码
+     */
+    public byte[] szDevPwd = new byte[NetSDKLib.NET_USER_PSW_LENGTH_EX];
+
+    /**
+     *  通道号
+     */
+    public int nDevChannel;
+
+    /**
+     *  码流类型,0:主码流;1:辅码流1; 2:snap; 3: 辅码流2
+     */
+    public int nStreamType;
+
+    /**
+     *  -1: auto, 0:TCP;1:UDP;2:组播
+     */
+    public byte byConnType;
+
+    /**
+     *  0:直连;1:转发
+     */
+    public byte byWorkMode;
+
+    /**
+     *  指示侦听服务的端口,转发时有效
+     */
+    public short wListenPort;
+
+    /**
+     *  协议类型,
+     *  0:兼容以前
+     *  1:二代协议
+     *  2:集成协议
+     *  3:DSS协议
+     *  4:rtsp协议
+     */
+    public int dwProtoType;
+
+    /**
+     *  前端设备名称
+     */
+    public byte[] szDevName = new byte[64];
+
+    /**
+     *  该解码通道当前视频源类型:0-标清(SD),1-高清(HD),注:设备支持高清通道才有效 
+     */
+    public byte byVideoInType;
+
+    /**
+     *  szDevIp扩展,前端DVR的IP地址(可以输入域名)
+     */
+    public byte[] szDevIpEx = new byte[NetSDKLib.NET_MAX_IPADDR_OR_DOMAIN_LEN];
+
+    /**
+     *  抓图模式(nStreamType==2时有效) 0:表示请求一帧,1:表示定时发送请求
+     */
+    public byte bySnapMode;
+
+    /**
+     *  目标设备的生产商,具体参考EM_IPC_TYPE类
+     */
+    public byte byManuFactory;
+
+    /**
+     *  目标设备的设备类型,0:IPC
+     */
+    public byte byDeviceType;
+
+    /**
+     *  目标设备的解码策略,0:兼容以前
+     *  1:实时等级高 2:实时等级中
+     *  3:实时等级低 4:默认等级
+     *  5:流畅等级高 6:流畅等级中
+     *  7:流畅等级低
+     */
+    public byte byDecodePolicy;
+
+    /**
+     *  保留字节
+     */
+    public byte[] bReserved = new byte[3];
+
+    /**
+     *  Http端口号,0-65535
+     */
+    public int dwHttpPort;
+
+    /**
+     *  Rtsp端口号,0-65535
+     */
+    public int dwRtspPort;
+
+    /**
+     *  远程通道名称, 只有读取到的名称不为空时才可以修改该通道的名称
+     */
+    public byte[] szChnName = new byte[32];
+
+    /**
+     *  对应解码通道号
+     */
+    public int dwDecoderID;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ABNORMALRUNDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ABNORMALRUNDETECTION_INFO.java
new file mode 100644
index 0000000..2745038
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ABNORMALRUNDETECTION_INFO.java
@@ -0,0 +1,129 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_ABNORMALRUNDETECTION(异常奔跑事件)对应的数据块描述信息
+ * @date 2023/04/21 16:10:00
+ */
+public class DEV_EVENT_ABNORMALRUNDETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 物体运动速度,km/h
+     */
+    public double dbSpeed;
+    /**
+     * 触发速度,km/h
+     */
+    public double dbTriggerSpeed;
+    /**
+     * 规则检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 规则检测区域
+     */
+    public NetSDKLib.DH_POINT[] DetectRegion = new NetSDKLib.DH_POINT[20];
+    /**
+     * 物体运动轨迹顶点数
+     */
+    public int nTrackLineNum;
+    /**
+     * 物体运动轨迹
+     */
+    public NetSDKLib.DH_POINT[] TrackLine = new NetSDKLib.DH_POINT[20];
+    /**
+     * 事件对应文件信息
+     */
+    public NET_EVENT_FILE_INFO stuFileInfo = new NET_EVENT_FILE_INFO();
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     * 异常奔跑类型, 0-快速奔跑, 1-突然加速, 2-突然减速
+     */
+    public byte bRunType;
+
+    public byte[] byReserved = new byte[1];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件源设备上的index,-1表示数据无效
+     */
+    public int nSourceIndex;
+    /**
+     * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+     */
+    public byte[] szSourceDevice = new byte[260];
+    /**
+     * 事件触发累计次数
+     */
+    public int nOccurrenceCount;
+    /**
+     * 智能事件公共信息
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new NetSDKLib.EVENT_INTELLI_COMM_INFO();
+    /**
+     * 图片信息数组,{@link NET_IMAGE_INFO_EX2}
+     */
+    public Pointer pstuImageInfo;
+    /**
+     * 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[604];
+
+    public DEV_EVENT_ABNORMALRUNDETECTION_INFO() {
+        for (int i = 0; i < DetectRegion.length; i++) {
+            DetectRegion[i] = new NetSDKLib.DH_POINT();
+        }
+        for (int i = 0; i < TrackLine.length; i++) {
+            TrackLine[i] = new NetSDKLib.DH_POINT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java
new file mode 100644
index 0000000..d05ca8f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ALARM_ANALOGALRM_INFO.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 报警事件类型 EVENT_ALARM_ANALOGALARM(模拟量报警通道报警),
+ * @date 2023/01/10 19:44:57
+ */
+public class DEV_EVENT_ALARM_ANALOGALRM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * (视频)通道号
+     */
+    public int nChannelID;
+    /**
+     * 模拟量报警通道名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 保留字节对齐
+     */
+    public byte[] Reserved = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 模拟量报警通道号
+     */
+    public int nIndex;
+    /**
+     * 传感器类型 {@link com.netsdk.lib.enumeration.NET_SENSE_METHOD}
+     */
+    public int emSensor;
+    /**
+     * 数据状态, -1:未知,0:正常,1:数据无效(超过量程),
+     * 2:超过阈值1,3:超过阈值2,4:超过阈值3,5:超过阈值4,
+     * 6:低于阈值1,7:低于阈值2,8:低于阈值3,9:低于阈值4
+     */
+    public int nStatus;
+    /**
+     * null
+     */
+    public float fValue;
+    /**
+     * 数据采集时间(UTC)
+     */
+    public NET_TIME stuCollectTime = new NET_TIME();
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     * 传感器数值单位 {@link NetSDKLib.NET_TEMPERATURE_UNIT}
+     */
+    public int emTemperatureUnit;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节,留待扩展
+     */
+    public byte[] byReserved2 = new byte[1019];
+
+    public DEV_EVENT_ALARM_ANALOGALRM_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java
new file mode 100644
index 0000000..471b2d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANIMAL_DETECTION_INFO.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 事件类型EVENT_IVS_ANIMAL_DETECTION(动物检测事件)对应的数据块描述信息
+ * @since : Created in 2021/11/05 14:46
+ */
+
+public class DEV_EVENT_ANIMAL_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能事件规则编号,用于标示哪个规则触发的事件
+	 */
+	public int nRuleID;
+	/**
+	 * 帧序号
+	 */
+	public int nSequence;
+	/**
+	 * 全景广角图
+	 */
+	public NET_ANIMAL_SCENE_IMAGE_INFO stuSceneImage = new NET_ANIMAL_SCENE_IMAGE_INFO();
+	/**
+	 * 动物统计信息
+	 */
+	public NET_ANIMAL_OBJECTS_STATISTICS stuObjectsStatistics = new NET_ANIMAL_OBJECTS_STATISTICS();
+	/**
+	 * 智能事件所属大类,EM_CLASS_TYPE
+	 */
+	public int emClassType;
+	/**
+	 * 动物检测规则下的场景类型,EM_DETECTION_SCENE_TYPE
+	 */
+	public int emDetectionSceneType;
+
+	/**
+	 * 图片信息数组
+	 */
+	public NET_IMAGE_INFO_EX2[] stuImageInfo = (NET_IMAGE_INFO_EX2[]) new NET_IMAGE_INFO_EX2().toArray(32);
+
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	
+	/**
+	 * 区域内目标列表个数
+	 */	
+	public int nObjectListCount;
+	
+	/**
+	 * 区域内目标列表
+	 */			
+	public NET_ANIMAL_OBJECT_LIST_INFO[] stuObjectListInfo = (NET_ANIMAL_OBJECT_LIST_INFO[]) new NET_ANIMAL_OBJECT_LIST_INFO().toArray(64);
+
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java
new file mode 100644
index 0000000..b928ca2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ANYTHING_DETECT_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_ANYTHING_DETECT  全物体类型检测事件 对应的数据块描述信息 
+ * @date 2021/10/09
+ */
+public class DEV_EVENT_ANYTHING_DETECT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  0-脉冲 1-开始 2-结束
+     */
+    public int nAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位:毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  智能事件所属大类 {@link NetSDKLib.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+
+    /**
+     *  智能事件规则编号
+     */
+    public int nRuleId;
+
+    /**
+     *  事件触发的预置点号,从1开始
+     */
+    public int nPresetID;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+
+    /**
+     *  检测到的物体个数
+     */
+    public int nObjectNum;
+
+    /**
+     *  检测到的物体信息,对应结构体{@link NET_VAGEOBJECT_INFO},指针映射内存数据为NET_VAGEOBJECT_INFO[nObjectNum]数组
+     */
+    public Pointer pstuObjects;
+
+    /**
+     *  保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java
new file mode 100644
index 0000000..e4155ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BARELAND_DETECTION_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 事件类型 EVENT_IVS_BARELAND_DETECTION (裸土检测事件)对应的数据块描述信息
+ * @date 2021/10/13 10:50
+ */
+public class DEV_EVENT_BARELAND_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * GroupID事件组ID,同一物体抓拍过程内GroupID相同
+     */
+    public int nGroupID;
+    /**
+     * CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * IndexInGroup一个事件组内的抓拍序号,从1开始
+     */
+    public int nIndexInGroup;
+    /**
+     * 事件发生时间,带时区偏差的UTC时间,单位:秒
+     */
+    public int nUTC;
+    /**
+     * 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * 裸土实际占比,取值0~100
+     */
+    public int nRatio;
+    /**
+     * 全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[980];
+
+    public DEV_EVENT_BARELAND_DETECTION_INFO() {
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java
new file mode 100644
index 0000000..1ac270f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+事件类型 EVENT_IVS_BREAK_RULE_BUILDING_DETECTION (违章建筑检测事件)对应的数据块描述信息
+*/
+public class DEV_EVENT_BREAK_RULE_BUILDIING_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+智能事件所属大类
+*/
+public			int					emClassType;
+/** 
+全景广角图(当前事件只有:nOffSet、nLength有效)
+*/
+public NetSDKLib.SCENE_IMAGE_INFO stuSceneImageInfo=new NetSDKLib.SCENE_IMAGE_INFO();
+/** 
+事件ID
+*/
+public			int					dwEventID;
+/** 
+字节对齐
+*/
+public			byte[]					szreserved=new byte[4];
+/** 
+获取角度
+*/
+public			NET_CAMERA_PTZ_INFO					stuCameraPtz=new NET_CAMERA_PTZ_INFO();
+/** 
+目标矩形框
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+/** 
+检测到的物体个数
+*/
+public			int					nObjectNum;
+/** 
+检测到的物体信息
+*/
+public			NetSDKLib.DH_MSG_OBJECT[]					stuObjects=(NetSDKLib.DH_MSG_OBJECT[])new NetSDKLib.DH_MSG_OBJECT().toArray(128);
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[888];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java
new file mode 100644
index 0000000..085acf6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_BREED_DETECTION_INFO.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 事件类型EVENT_IVS_BREED_DETECTION(智慧养殖检测事件)对应的数据块描述信息
+* @date 2022/04/15 15:29:30
+*/
+public class DEV_EVENT_BREED_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+智能事件规则编号,用于标示哪个规则触发的事件
+*/
+public			int					nRuleID;
+/** 
+帧序号
+*/
+public			int					nSequence;
+/** 
+智能事件所属大类 {@link com.netsdk.lib.NetSDKLib.EM_CLASS_TYPE}
+*/
+public			int					emClassType;
+/** 
+全景广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+字节对齐
+*/
+public			byte[]					byReserved1=new byte[4];
+/** 
+检测到的物体个数
+*/
+public			int					nObjectNum;
+/** 
+检测到的物体信息
+*/
+public			NET_VAOBJECT_ANIMAL_INFO[]					stuObjects=(NET_VAOBJECT_ANIMAL_INFO[])new NET_VAOBJECT_ANIMAL_INFO().toArray(64);
+/** 
+栏位温度(单位:℃)
+*/
+public			double					dBreedStallTemp;
+/** 
+栏位号
+*/
+public			int					nBreedStallNum;
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[500];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java
new file mode 100644
index 0000000..abffe5c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_INFO.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.netsdk.lib.enumeration.EM_TRIGGER_TYPE;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/8/19 10:08
+ */
+public class DEV_EVENT_CAR_DRIVING_IN_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+    /**
+     * 检测到的车辆信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle;
+    /**
+     * 触发类型 {@link EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 标记抓拍帧
+     */
+    public int nMark;
+    /**
+     * 视频分析的数据源地址
+     */
+    public int nSource;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 车道号
+     */
+    public int nLaneID;
+    /**
+     * 车速(单位:km/h)
+     */
+    public int nSpeed;
+    /**
+     * 交通车辆的数据库记录
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+    /**
+     * 抓拍过程 {@link EM_CAPTURE_PROCESS_END_TYPE}
+     */
+    public int emCaptureProcess;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java
new file mode 100644
index 0000000..2bf8b24
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_IN_OUT_INFO.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_DRIVING_DIRECTION;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/8/19 10:30
+ */
+public class DEV_EVENT_CAR_DRIVING_IN_OUT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+    /**
+     * 车身信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 表示抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+     */
+    public int nSequence;
+    /**
+     * 帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 车辆行驶方向 {@link EM_DRIVING_DIRECTION}
+     */
+    public int emDrivingDirection;
+    /**
+     * 大图信息
+     */
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuGlobalScene;
+    /**
+     * 车位抠图信息
+     */
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuParkingImage;
+    /**
+     * 车位(地磁)编号
+     */
+    public byte[] szParkingNum = new byte[32];
+    /**
+     * 图片信息数组
+     */
+    public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);
+    /**
+     * 图片信息个数
+     */
+    public int                  nImageInfoNum;
+    /**
+     * 预留字节
+     */
+    public byte                 byReserved[] = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java
new file mode 100644
index 0000000..f73a333
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CAR_DRIVING_OUT_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.netsdk.lib.enumeration.EM_TRIGGER_TYPE;
+
+/**
+ * 事件类型 EVENT_IVS_CAR_DRIVING_OUT(车辆驶出事件)对应的数据块描述信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/20 11:30
+ */
+public class DEV_EVENT_CAR_DRIVING_OUT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+    /**
+     * 检测到的车辆信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle;
+    /**
+     * 触发类型 {@link EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 标记抓拍帧
+     */
+    public int nMark;
+    /**
+     * 视频分析的数据源地址
+     */
+    public int nSource;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 车道号
+     */
+    public int nLaneID;
+    /**
+     * 车速(单位:km/h)
+     */
+    public int nSpeed;
+    /**
+     * 交通车辆的数据库记录
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+    /**
+     * 抓拍过程 {@link EM_CAPTURE_PROCESS_END_TYPE}
+     */
+    public int emCaptureProcess;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java
new file mode 100644
index 0000000..afde8b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CONSUMPTION_EVENT_INFO.java
@@ -0,0 +1,169 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description DEV_EVENT_CONSUMPTION_EVENT_INFO
+* @date 2022/03/07 11:45:31
+*/
+public class DEV_EVENT_CONSUMPTION_EVENT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+RealUTC 是否有效,bRealUTC 为 TRUE 时,用 UTC,否则用 stuTime 字段
+*/
+public			int					bRealUTC;
+/** 
+事件发生的时间(标准UTC)
+*/
+public NET_TIME_EX RealUTC=new NET_TIME_EX();
+/** 
+记录集编号,只读
+*/
+public			int					nRecNo;
+/** 
+上报事件数据序列号从1开始自增
+*/
+public			int					nBlockId;
+/** 
+事件类型   {@link com.netsdk.lib.NetSDKLib.NET_ACCESS_CTL_EVENT_TYPE }
+*/
+public			int					emType;
+/** 
+消费结果   {@link com.netsdk.lib.enumeration.EM_CONSUMPTION_STATUS }
+*/
+public			int					emStatus;
+/** 
+卡类型  {@link com.netsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_TYPE }
+*/
+public			int					emCardType;
+/** 
+用户类型  {@link com.netsdk.lib.NetSDKLib.EM_USER_TYPE }
+*/
+public			int					emUserType;
+/** 
+卡状态   {@link com.netsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_STATE }
+*/
+public			int					emCardStatus;
+/** 
+开门方式      {@link com.netsdk.lib.NetSDKLib.NET_ACCESS_DOOROPEN_METHOD }
+*/
+public			int					emMethod;
+/** 
+卡号
+*/
+public			byte[]					szCardNo=new byte[16];
+/** 
+读卡器ID
+*/
+public			byte[]					szReaderID=new byte[32];
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[12];
+/** 
+消费失败的原因,配合 emStatus 使用
+ // 0x00 没有错误
+ // 0x10 未授权
+ // 0x11 卡挂失或注销
+ // 0x12 没有该门权限
+ // 0x13 开门模式错误
+ // 0x14 有效期错误
+ // 0x15 防反潜模式
+ // 0x16 胁迫报警未打开
+ // 0x17 门常闭状态
+ // 0x18 AB互锁状态
+ // 0x19 巡逻卡
+ // 0x1A 设备处于闯入报警状态
+ // 0x20 时间段错误
+ // 0x21 假期内开门时间段错误
+ // 0x30 需要先验证有首卡权限的卡片
+ // 0x40 卡片正确,输入密码错误
+ // 0x41 卡片正确,输入密码超时
+ // 0x42 卡片正确,输入信息错误
+ // 0x43 卡片正确,输入信息超时
+ // 0x44 信息正确,输入密码错误
+ // 0x45 信息正确,输入密码超时
+ // 0x50 组合开门顺序错误
+ // 0x51 组合开门需要继续验证
+ // 0x60 验证通过,控制台未授权
+ // 0x61 卡片正确,人脸错误
+ // 0x62 卡片正确,人脸超时
+ // 0x63 重复进入
+ // 0x64 未授权,需要后端平台识别
+ // 0x65 体温过高
+ // 0x66 未戴口罩
+ // 0x67 健康码获取失败
+ // 0x68 黄码禁止通行
+ // 0x69 红码禁止通行
+ // 0x6a 健康码无效
+ // 0x6b 绿码验证通过
+ // 0x70 获取健康码信息
+ // 0x71 校验证件信息(平台下发对应证件号的校验结果)
+*/
+public			int					nErrorCode;
+/** 
+抓拍照片存储地址
+*/
+public			byte[]					szSnapURL=new byte[128];
+/** 
+目标识别相似度,开门方式为人脸开门时有效
+*/
+public			int					nSimilarity;
+/** 
+记录类型  {@link com.netsdk.lib.enumeration.EM_CONSUMPTION_EVENT_TYPE }
+*/
+public			int					emEventType;
+/** 
+消费金额。单位(分)101 = 1.01 元
+*/
+public			int					nConsumptionAmount;
+/** 
+充值金额。单位(分)101 = 1.01 元
+*/
+public			int					nRechargeAmount;
+/** 
+交易流水号
+*/
+public			byte[]					szTransactionSerialNumber=new byte[128];
+/** 
+图片的数量
+*/
+public			int					nImageCount;
+/** 
+图片信息
+*/
+public			DEV_ACCESS_CTL_IMAGE_INFO[]					stuImageInfos=(DEV_ACCESS_CTL_IMAGE_INFO[])new DEV_ACCESS_CTL_IMAGE_INFO().toArray(6);
+/** 
+上一次交易流水号
+*/
+public			byte[]					szLastTransactionSerialNumber=new byte[128];
+/** 
+保留字节,留待扩展
+*/
+public			byte[]					szReserved=new byte[896];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java
new file mode 100644
index 0000000..c182c25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROSSLINE_INFO_EX.java
@@ -0,0 +1,187 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * 事件类型EVENT_IVS_CROSSLINEDETECTION_EX(拌线入侵事件)对应的数据块描述信息
+ */
+public class DEV_EVENT_CROSSLINE_INFO_EX extends NetSDKLib.SdkStructure {
+	/** 
+	
+	*/
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 字节对齐
+	 */
+	public byte[] bReserved1 = new byte[4];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public float PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 检测到的物体
+	 */
+	public NetSDKLib.NET_MSG_OBJECT_EX stuObject = new NetSDKLib.NET_MSG_OBJECT_EX();
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+	/**
+	 * 规则检测线
+	 */
+	public NetSDKLib.DH_POINT[] DetectLine = (NetSDKLib.DH_POINT[]) new NetSDKLib.DH_POINT().toArray(20);
+	/**
+	 * 规则检测线顶点数
+	 */
+	public int nDetectLineNum;
+	/**
+	 * 物体运动轨迹
+	 */
+	public NetSDKLib.DH_POINT[] TrackLine = (NetSDKLib.DH_POINT[]) new NetSDKLib.DH_POINT().toArray(20);
+	/**
+	 * 物体运动轨迹顶点数
+	 */
+	public int nTrackLineNum;
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public byte bEventAction;
+	/**
+	 * 表示入侵方向, 0-由左至右, 1-由右至左
+	 */
+	public byte bDirection;
+	/** 
+	
+	*/
+	public byte[] byReserved = new byte[1];
+	/**
+	 * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+	 */
+	public byte byImageIndex;
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+	/**
+	 * 事件源设备上的index,-1表示数据无效,-1表示数据无效
+	 */
+	public int nSourceIndex;
+	/**
+	 * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+	 */
+	public byte[] szSourceDevice = new byte[260];
+	/**
+	 * 事件触发累计次数
+	 */
+	public int nOccurrenceCount;
+	/**
+	 * 检测到的物体信息个数
+	 */
+	public int nMsgObjArrayCount;
+	/**
+	 * 检测到的物体信息数组指针
+	 */
+	public Pointer pMsgObjArray;
+	/**
+	 * 智能事件公共信息
+	 */
+	public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new NetSDKLib.EVENT_INTELLI_COMM_INFO();
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * 检测到人的数量
+	 */
+	public int nObjetcHumansNum;
+	/**
+	 * 检测的到人
+	 */
+	public NET_VAOBJECT_NUMMAN[] stuObjetcHumans = (NET_VAOBJECT_NUMMAN[]) new NET_VAOBJECT_NUMMAN().toArray(100);
+	/**
+	 * 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+	 */
+	public int nRuleID;
+	/**
+	 * 事件级别
+	 */
+	public int emEventType;
+	/**
+	 * 预置点的坐标和放大倍数
+	 */
+	public NET_PRESET_POSITION stPosition = new NET_PRESET_POSITION();
+	/**
+	 * 可见光横向视场角,单位度 实际角度乘以100
+	 */
+	public int nVisibleHFOV;
+	/**
+	 * 可见光纵向视场角,单位度 实际角度乘以100
+	 */
+	public int nVisibleVFOV;
+	/**
+	 * 当前报警通道的横向视场角,单位度,实际角度乘以100
+	 */
+	public int nCurChannelHFOV;
+	/**
+	 * 当前报警通道的纵向视场角,单位度,实际角度乘以100
+	 */
+	public int nCurChannelVFOV;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageNum;
+	/**
+	 * 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+	 */
+	public Pointer pImageArray;
+	/**
+	 * 车的后视镜状态,-1: 未知, 0: 正常, 1: 不正常(如数量缺失等)
+	 */
+	public int nCarMirrorStatus;
+	/**
+	 * 车的车灯状态,-1: 未知, 0: 正常, 1:不正常(如灯未亮等)
+	 */
+	public int nCarLightStatus;
+	/**
+	 * 船只物体个数
+	 */
+	public int nObjectBoatsNum;
+	/**
+	 * 船只物品信息
+	 */
+	public NET_BOAT_OBJECT[] stuBoatObjects = new NET_BOAT_OBJECT[100];
+	/**
+	 * 车道/航道方向, 0:未知, 1:上行, 2:下行
+	 */
+	public int nUpDownGoing;	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved1 = new byte[452];
+	public DEV_EVENT_CROSSLINE_INFO_EX() {
+		for (int i = 0; i < stuBoatObjects.length; i++) {
+			stuBoatObjects[i] = new NET_BOAT_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROWD_LEVEL_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROWD_LEVEL_DETECTION_INFO.java
new file mode 100644
index 0000000..e1fff09
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_CROWD_LEVEL_DETECTION_INFO.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_CROWD_LEVEL_DETECTION (拥挤程度检测事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/06/19 14:48:39
+ */
+public class DEV_EVENT_CROWD_LEVEL_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 相对事件时间戳,(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 规则区域
+	 */
+	public NetSDKLib.NET_POINT[] stuDetectRegion = new NetSDKLib.NET_POINT[20];
+	/**
+	 * 规则区域个数
+	 */
+	public int nDetectRegionNum;
+	/**
+	 * 事件触发的预置点号,从1开始
+	 */
+	public int nPresetID;
+	/**
+	 * 触发模式 {@link com.netsdk.lib.enumeration.EM_CROWD_LEVEL_DETECTION_TRIGGERMODE}
+	 */
+	public int emTriggerMode;
+	/**
+	 * 实际触发报警的人数
+	 */
+	public int nCrowdDetectNum;
+	/**
+	 * 检测到的拥挤程度等级
+	 */
+	public int nCrowdRankResult;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * 检测到的拥挤程度等级名称
+	 */
+	public byte[] szCrowdGroupName = new byte[128];
+	/**
+	 * 图片信息数组,{@link NET_IMAGE_INFO_EX3}
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 扩展协议字段
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1020 - NetSDKLib.POINTERSIZE];
+
+	public DEV_EVENT_CROWD_LEVEL_DETECTION_INFO() {
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NetSDKLib.NET_POINT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java
new file mode 100644
index 0000000..051c32a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DENSITYDETECTION_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.DH_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.sun.jna.Pointer;
+
+/**
+ * 事件类型EVENT_IVS_DENSITYDETECTION(人员密集度检测)对应的数据块描述信息
+ *
+ * @author 119178
+ */
+public class DEV_EVENT_DENSITYDETECTION_INFO extends NetSDKLib.SdkStructure {
+  /** 通道号 */
+  public int nChannelID;
+  /** 事件名称 */
+  public byte[] szName = new byte[128];
+  /** 字节对齐 */
+  public byte[] bReserved1 = new byte[4];
+  /** 时间戳(单位是毫秒) */
+  public double PTS;
+  /** 事件发生的时间 */
+  public NET_TIME_EX UTC;
+  /** 事件ID */
+  public int nEventID;
+  /** 检测到的物体个数 */
+  public int nObjectNum;
+  /** 检测到的物体列表 */
+  public DH_MSG_OBJECT[] stuObjectIDs = (DH_MSG_OBJECT[]) new DH_MSG_OBJECT().toArray(16);
+  /** 事件对应文件信息 */
+  public NET_EVENT_FILE_INFO stuFileInfo;
+  /** 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束; */
+  public byte bEventAction;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[2];
+  /** 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始 */
+  public byte byImageIndex;
+  /** 规则检测区域顶点数 */
+  public int nDetectRegionNum;
+  /** 规则检测区域 */
+  public com.netsdk.lib.structure.DH_POINT[] DetectRegion = (com.netsdk.lib.structure.DH_POINT[]) new DH_POINT().toArray(20);
+  /** 抓图标志(按位),具体见NET_RESERVED_COMMON */
+  public int dwSnapFlagMask;
+  /** 事件源设备上的index,-1表示数据无效 */
+  public int nSourceIndex;
+  /** 事件源设备唯一标识,字段不存在或者为空表示本地设备 */
+  public byte[] szSourceDevice = new byte[260];
+  /** 事件触发累计次数 */
+  public int nOccurrenceCount;
+  /** 智能事件公共信息 */
+  public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+  /** 密度检测数值单位(0-Level,1-Percent) */
+  public int nUnit;
+  /** 密度值,单位为Level时,取值0~3,分别表示(很稀疏,稀疏,密集,很密集)单位为Percent时,取值0~100 */
+  public int nValue;
+  /**图片信息数组  , refer to {@link NET_IMAGE_INFO_EX3}数组 */
+  public Pointer pstuImageInfo;
+  /**图片信息个数 */
+  public int nImageInfoNum;
+  /** 保留字节,留待扩展. */
+  public byte[] bReserved = new byte[608-NetSDKLib.POINTERSIZE];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java
new file mode 100644
index 0000000..5c37659
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DIALRECOGNITION_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 仪表检测事件, 对应事件类型 EVENT_IVS_DIALRECOGNITION
+ * @date 2022/06/28 19:24:08
+ */
+public class DEV_EVENT_DIALRECOGNITION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 视频通道号,从0开始
+	 */
+	public int nChannelID;
+	/**
+	 * 预置点ID,如果普通IPC则为0
+	 */
+	public int nPresetID;
+	/**
+	 * 任务ID.添加时设备端生成
+	 */
+	public byte[] szTaskID = new byte[64];
+	/**
+	 * 仪表类型 {@link com.netsdk.lib.enumeration.EM_INSTRUMENT_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 返回的图片信息个数
+	 */
+	public int nRetImageInfoNum;
+	/**
+	 * 图片信息
+	 */
+	public NET_IMAGE_INFO[] stuImgaeInfo = new NET_IMAGE_INFO[8];
+	/**
+	 * 检测结果,根据Type的不同,格式也不同
+	 */
+	public byte[] szDialResult = new byte[2048];
+	/**
+	 * 原始图片在二进制数据块中的偏移
+	 */
+	public int nOriginalImageOffset;
+	/**
+	 * 原始图片大小,单位:字节
+	 */
+	public int nOriginalImageLength;
+	/**
+	 * 告警类型:0-该字段无效;1-数值异常;2-定时上报; 3-高阀值报警; 4-低阀值报警
+	 */
+	public int nAlarmType;
+	
+	/**
+	 * 仪表检测具体子类型
+	 */
+	public byte[] szDialSubType = new byte[32];
+	/**
+	 * 报警上限阈值
+	 */
+	public float fUpperThreshold;
+	/**
+	 * 报警下限阈值
+	 */
+	public float fLowerThreshold;
+	/**
+	 * 包围盒
+	 */
+	public NET_RECT[] stuBoundingBox = new NET_RECT[128];
+	/**
+	 * 包围盒个数
+	 */
+	public int nRetBoundingBoxNum;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[968];
+
+	public DEV_EVENT_DIALRECOGNITION_INFO() {
+		for (int i = 0; i < stuImgaeInfo.length; i++) {
+			stuImgaeInfo[i] = new NET_IMAGE_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java
new file mode 100644
index 0000000..760dd89
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DISTANCE_DETECTION_INFO.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @description: (倒地报警事件)对应数据块描述信息
+ * @author: 251589
+ * @time: 2020/11/25 19:16
+ */
+public class DEV_EVENT_DISTANCE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+
+
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+
+    /**
+     * #define DH_MAX_DETECT_REGION_NUM 20 // 规则检测区域最大顶点数
+     */
+    public NetSDKLib.NET_POINT stuDetectRegion[] = new NetSDKLib.NET_POINT[20];
+
+    /**
+     * 智能事件公共信息;
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+    /**
+     * 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+     * 缺省时为空字符串,表示无此信息
+     * 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位
+     */
+    public byte[] szSourceID = new byte[32];
+
+    /**
+     * 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针  
+     */
+	public Pointer                pstuImageInfo;	
+    /**
+     * 图片信息个数
+     */
+	public int				      nImageInfoNum;
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[980];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java
new file mode 100644
index 0000000..0dd38ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_DREGS_UNCOVERED_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_DETECT_REGION_NUM;
+
+/**
+ * @author : 260611
+ * @description : 事件类型 EVENT_IVS_DREGS_UNCOVERED(渣土车未遮盖载货检测事件)对应的数据块描述信息
+ * @since : Created in 2022/01/18 14:34
+ */
+
+public class DEV_EVENT_DREGS_UNCOVERED_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件所属大类
+     */
+    public int emClassType;
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 检测区域,[0,8191]
+     */
+    public NetSDKLib.NET_POINT[] stuDetectRegion = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);
+    /**
+     * 车辆信息
+     */
+    public DREGS_UNCOVERED_VEHICLE_INFO stuVehicleInfo = new DREGS_UNCOVERED_VEHICLE_INFO();
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java
new file mode 100644
index 0000000..d79f2b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ELECTRICFAULTDETECT_INFO.java
@@ -0,0 +1,188 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  仪表类缺陷检测事件 
+* @date 2022/06/28 19:44:57
+*/
+public class DEV_EVENT_ELECTRICFAULTDETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+*/
+public			int					emClassType;
+/** 
+视频通道号
+*/
+public			int					nChannel;
+/** 
+智能事件规则编号,用于标示哪个规则触发的事件
+*/
+public			int					nRuleID;
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+预置点ID
+*/
+public			int					nPresetID;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+对应设备所使能的检测规则
+*/
+public			int[]					emEnableRules=new int[16];
+/** 
+设备所使能的检测规则个数
+*/
+public			int					nEnableRulesNum;
+/** 
+挂空悬浮物检测异常输出结果个数
+*/
+public			int					nAirborneDetectNum;
+/** 
+挂空悬浮物检测异常输出结果
+*/
+public			NET_AIRBORNE_DETECT[]					stuAirborneDetectInfo=new NET_AIRBORNE_DETECT[8];
+/** 
+鸟巢检测结果
+*/
+public			NET_NEST_DETECT[]					stuNestDetectInfo=new NET_NEST_DETECT[8];
+/** 
+鸟巢检测结果个数
+*/
+public			int					nNestDetectNum;
+/** 
+表盘检测结果个数
+*/
+public			int					nDialDetectNum;
+/** 
+表盘检测结果
+*/
+public			NET_DIAL_DETECT[]					stuDialDetectInfo=new NET_DIAL_DETECT[8];
+/** 
+渗漏检测结果
+*/
+public			NET_LEAKAGE_DETECT[]					stuLeakageDetectInfo=new NET_LEAKAGE_DETECT[8];
+/** 
+渗漏检测结果个数
+*/
+public			int					nLeakageDetectNum;
+/** 
+箱门检测结果个数
+*/
+public			int					nDoorDetectNum;
+/** 
+箱门检测结果
+*/
+public			NET_DOOR_DETECT[]					stuDoorDetectInfo=new NET_DOOR_DETECT[8];
+/** 
+呼吸器检测结果
+*/
+public			NET_RESPIRATOR_DETECT[]					stuRespiratorDetectInfo=new NET_RESPIRATOR_DETECT[8];
+/** 
+呼吸器检测个数
+*/
+public			int					nRespiratorDetectNum;
+/** 
+吸烟检测结果个数
+*/
+public			int					nSmokingDetectNum;
+/** 
+吸烟检测结果
+*/
+public			NET_SMOKING_DETECT[]					stuSmokingDetectInfo=new NET_SMOKING_DETECT[8];
+/** 
+大图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO stuSceneImageInfo=new NetSDKLib.SCENE_IMAGE_INFO();
+/** 
+绝缘子检测结果
+*/
+public			NET_INSULATOR_DETECT[]					stuInsulatorDetectInfo=new NET_INSULATOR_DETECT[8];
+/** 
+绝缘子检测结果个数
+*/
+public			int					nInsulatorDetectNum;
+/** 
+盖板检测结果个数
+*/
+public			int					nCoverPlateDetectNum;
+/** 
+盖板检测结果
+*/
+public			NET_COVER_PLATE_DETECT[]					stuCoverPlateDetectInfo=new NET_COVER_PLATE_DETECT[8];
+/** 
+压板检测结果
+*/
+public			NET_PRESSING_PLATE_DETECT[]					stuPressingPlateDetectInfo=new NET_PRESSING_PLATE_DETECT[8];
+/** 
+压板检测结果个数
+*/
+public			int					nPressingPlateDetectNum;
+/** 
+金属锈蚀结果个数
+*/
+public			int					nMetalCorrosionNum;
+/** 
+金属锈蚀结果
+*/
+public			NET_METAL_CORROSION[]					stuMetalCorrosionInfo=new NET_METAL_CORROSION[8];
+/** 
+预留字段
+*/
+public			byte[]					bReserved=new byte[1024];
+
+public DEV_EVENT_ELECTRICFAULTDETECT_INFO(){
+		for(int i=0;i<stuAirborneDetectInfo.length;i++){
+			stuAirborneDetectInfo[i]=new NET_AIRBORNE_DETECT();
+			}
+		for(int i=0;i<stuNestDetectInfo.length;i++){
+			stuNestDetectInfo[i]=new NET_NEST_DETECT();
+			}
+		for(int i=0;i<stuDialDetectInfo.length;i++){
+			stuDialDetectInfo[i]=new NET_DIAL_DETECT();
+			}
+		for(int i=0;i<stuLeakageDetectInfo.length;i++){
+			stuLeakageDetectInfo[i]=new NET_LEAKAGE_DETECT();
+			}
+		for(int i=0;i<stuDoorDetectInfo.length;i++){
+			stuDoorDetectInfo[i]=new NET_DOOR_DETECT();
+			}
+		for(int i=0;i<stuRespiratorDetectInfo.length;i++){
+			stuRespiratorDetectInfo[i]=new NET_RESPIRATOR_DETECT();
+			}
+		for(int i=0;i<stuSmokingDetectInfo.length;i++){
+			stuSmokingDetectInfo[i]=new NET_SMOKING_DETECT();
+			}
+		for(int i=0;i<stuInsulatorDetectInfo.length;i++){
+			stuInsulatorDetectInfo[i]=new NET_INSULATOR_DETECT();
+			}
+		for(int i=0;i<stuCoverPlateDetectInfo.length;i++){
+			stuCoverPlateDetectInfo[i]=new NET_COVER_PLATE_DETECT();
+			}
+		for(int i=0;i<stuPressingPlateDetectInfo.length;i++){
+			stuPressingPlateDetectInfo[i]=new NET_PRESSING_PLATE_DETECT();
+			}
+		for(int i=0;i<stuMetalCorrosionInfo.length;i++){
+			stuMetalCorrosionInfo[i]=new NET_METAL_CORROSION();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java
new file mode 100644
index 0000000..50109b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_ANALYSE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/24 17:10
+ */
+public class DEV_EVENT_FACEBODY_ANALYSE_INFO  extends NetSDKLib.SdkStructure {
+    public   int                 			nChannelID;                                 // 通道号
+    public int								nAction;									// 1:开始 2:停止
+    public byte[]                			szName=new byte[128];                                // 事件名称
+    public double              			PTS;                                        // 时间戳(单位是毫秒)
+    public NET_TIME_EX         			UTC=new NET_TIME_EX();                                        // 事件发生的时间
+    //参考枚举 EM_CLASS_TYPE
+    public int					emClassType;								// 智能事件所属大类
+    public int                			nEventID;                           		// 事件ID
+    public int							nObjectID;									// 物体ID
+    public int							nRuleID;									// 智能事件规则编号,用于标示哪个规则触发的事件
+    public int							nSequence;									// 帧序号
+    public int								nGroupID;									// 事件组ID,一次检测的多个nGroupID相同
+    public int								nCountInGroup;								// 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
+    public int 							nIndexInGroup;								// 一个事件组内的抓拍序号,从1开始
+    public byte[]							byReserved1=new byte[4];								// 字节对齐
+    public FACE_TRAIT						stuFaceTrait=new FACE_TRAIT();								// 人脸特征
+    public BODY_TRAIT						stuBodyTrait=new BODY_TRAIT();								// 人体特征
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO();								// 人体图片信息
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO(); 								// 人脸图片信息
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO();								// 全景图片信息
+    public OBJECT_RELATED_INFO				stuFaceObject=new OBJECT_RELATED_INFO();								// 人脸关联信息
+    public OBJECT_RELATED_INFO				stuBodyObject=new OBJECT_RELATED_INFO();								// 人体关联信息
+    public NetSDKLib.CANDIDATE_INFOEX[] stuCandidate=new  NetSDKLib.CANDIDATE_INFOEX[NetSDKLib.NET_MAX_CANDIDATE_NUM];			// 候选人脸列表
+   public int								nCandidateNum;								// 返回的候选人脸个数
+    public DEV_EVENT_FACEBODY_ANALYSE_INFO(){
+        for(int i=0;i<stuCandidate.length;i++){
+            stuCandidate[i] = new NetSDKLib.CANDIDATE_INFOEX();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "DEV_EVENT_FACEBODY_ANALYSE_INFO{" +
+                "nChannelID=" + nChannelID +
+                ", nAction=" + nAction +
+                ", szName=" + new String(szName) +
+                ", PTS=" + PTS +
+                ", UTC=" + UTC +
+                ", emClassType=" + emClassType +
+                ", nEventID=" + nEventID +
+                ", nObjectID=" + nObjectID +
+                ", nRuleID=" + nRuleID +
+                ", nSequence=" + nSequence +
+                ", nGroupID=" + nGroupID +
+                ", nCountInGroup=" + nCountInGroup +
+                ", nIndexInGroup=" + nIndexInGroup +
+
+                ", nCandidateNum=" + nCandidateNum +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java
new file mode 100644
index 0000000..f75bbae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACEBODY_DETECT_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 事件类型EVENT_IVS_FACEBODY_DETECT(人像检测事件)对应的数据块描述信息
+ * @date 2021/8/24 14:09
+ */
+public class DEV_EVENT_FACEBODY_DETECT_INFO extends NetSDKLib.SdkStructure {
+    public int                 			nChannelID;                                 // 通道号
+    public int								nAction;									// 1:开始 2:停止
+    public byte[] szName=new byte[128];                                // 事件名称
+    public double              			PTS;                                        // 时间戳(单位是毫秒)
+    public NET_TIME_EX         			UTC=new NET_TIME_EX();                                        // 事件发生的时间
+    /** {@link com.netsdk.lib.NetSDKLib.EM_CLASS_TYPE} */
+    public int emClassType;								// 智能事件所属大类
+    public int                			nEventID;                           		// 事件ID
+    public  int							nObjectID;									// 物体ID
+    public int							nRuleID;									// 智能事件规则编号,用于标示哪个规则触发的事件
+    public int							nSequence;									// 帧序号
+    public int								nGroupID;									// 事件组ID,一次检测的多个nGroupID相同
+    public int								nCountInGroup;								// 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
+    public int								nIndexInGroup;								// 一个事件组内的抓拍序号,从1开始
+    public  byte[]							byReserved1=new byte[4];								// 字节对齐
+    public FACE_TRAIT						stuFaceTrait=new FACE_TRAIT();								// 人脸特征
+    public   BODY_TRAIT						stuBodyTrait=new BODY_TRAIT();								// 人体特征
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuBodyImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO();								// 人体图片信息
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuFaceImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO(); 								// 人脸图片信息
+    public NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage=new NetSDKLib.NET_EVENT_IMAGE_OFFSET_INFO();								// 全景图片信息
+    public OBJECT_RELATED_INFO				stuFaceObject=new OBJECT_RELATED_INFO();								// 人脸关联信息
+    public OBJECT_RELATED_INFO				stuBodyObject=new OBJECT_RELATED_INFO();								// 人体关联信息
+
+    @Override
+    public String toString() {
+        return "DEV_EVENT_FACEBODY_DETECT_INFO{" +
+                "nChannelID=" + nChannelID +
+                ", nAction=" + nAction +
+                ", szName=" + new String(szName) +
+                ", PTS=" + PTS +
+                ", UTC=" + UTC +
+                ", emClassType=" + emClassType +
+                ", nEventID=" + nEventID +
+                ", nObjectID=" + nObjectID +
+                ", nRuleID=" + nRuleID +
+                ", nSequence=" + nSequence +
+                ", nGroupID=" + nGroupID +
+                ", nCountInGroup=" + nCountInGroup +
+                ", nIndexInGroup=" + nIndexInGroup +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java
new file mode 100644
index 0000000..66ffd14
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FACERECOGNITION_INFO_V1.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_FACE_DATA;
+import com.netsdk.lib.NetSDKLib.NET_FEATURE_VECTOR;
+import com.netsdk.lib.NetSDKLib.NET_GPS_INFO;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.NET_PASSERBY_INFO;
+import com.netsdk.lib.NetSDKLib.NET_PIC_INFO;
+import com.netsdk.lib.NetSDKLib.SCENE_IMAGE_INFO;
+import com.netsdk.lib.structure.NET_CUSTOM_PROJECTS_INFO;
+import com.netsdk.lib.structure.NET_IMAGE_INFO_EX2;
+import com.netsdk.lib.structure.NET_MSG_OBJECT_SUPPLEMENT;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_FACERECOGNITION(目标识别)对应的数据块描述信息,简化版本
+ * @date 2022/05/23
+ */
+public class DEV_EVENT_FACERECOGNITION_INFO_V1 extends NetSDKLib.SdkStructure{
+	   public int 						nChannelID;									// 通道号
+	    public byte[] 					szName = new byte[128]; 					// 事件名称
+	    public int 						nEventID;									// 事件ID
+	    public NET_TIME_EX UTC;										// 事件发生的时间
+	    public NET_MSG_OBJECT   		stuObject;									// 检测到的物体
+	    public int 						nCandidateNum;								// 当前人脸匹配到的候选对象数量
+	    public Pointer 		            stuCandidates;                              //当前人脸匹配到的候选对象信息,参考CANDIDATE_INFOEX数组
+	    public byte 					bEventAction;								// 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+	    public byte 					byImageIndex;								// 图片的序号,同一时间内(精确到秒)可能有多张图片,从0开始
+	    public byte[] 					byReserved1 = new byte[2];  				// 对齐
+	    public int 						bGlobalScenePic;							// 全景图是否存在, 类型为BOOL, 取值为0或者1
+	    public NET_PIC_INFO 			stuGlobalScenePicInfo;						// 全景图片信息
+	    public byte[] 					szSnapDevAddress = new byte[NetSDKLib.MAX_PATH];		// 抓拍当前人脸的设备地址,如:滨康路37号
+	    public int 						nOccurrenceCount;							// 事件触发累计次数, 类型为unsigned int
+	    public EVENT_INTELLI_COMM_INFO  stuIntelliCommInfo;							// 智能事件公共信息
+	    public NET_FACE_DATA 			stuFaceData;								// 人脸数据
+	    public byte[]					szUID = new byte[NetSDKLib.NET_COMMON_STRING_32];		// 抓拍人员写入数据库的唯一标识符
+	    public NET_FEATURE_VECTOR	    stuFeatureVector;							// 特征值信息
+	    public byte[]				    szFeatureVersion = new byte[32];			// 特征值算法版本
+	    public int 						emFaceDetectStatus;                       	// 人脸在摄像机画面中的状态,详见EM_FACE_DETECT_STATUS
+	    public byte[]					szSourceID = new byte[32];					// 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+	    public NET_PASSERBY_INFO		stuPasserbyInfo;							// 路人库信息
+	    public int						nStayTime;									// 路人逗留时间 单位:秒       
+	    public byte[]                	bReserved = new byte[432];                  // 保留字节,留待扩展.
+	    public NET_GPS_INFO             stuGPSInfo;                                 // GPS信息          
+	    public byte[]					szSerialUUID = new byte[22];				// 级联物体ID唯一标识
+	       																			// 格式如下:前2位%d%d:01-视频片段,02-图片,03-文件,99-其他;
+																					// 中间14位YYYYMMDDhhmmss:年月日时分秒;后5位%u%u%u%u%u:物体ID,如00001
+	    public byte[]                	byReserved = new byte[2];                   // 对齐
+	    public NET_CUSTOM_PROJECTS_INFO stuCustomProjects;						// 项目信息
+	    public boolean				bIsDuplicateRemove;							// 智慧零售,是否符合去重策略(TRUE:符合 FALSE:不符合)
+	    public byte[]				byReserved2=new byte[4];								// 字节对齐
+	    public NET_IMAGE_INFO_EX2[]       stuImageInfo = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);	// 图片信息数组
+
+	    public int					nImageInfoNum;								// 图片信息个数
+	    public NET_MSG_OBJECT_SUPPLEMENT    stuObjectSupplement;                // 检测到的物体补充字段
+	    public int					nMode;                                      //0-普通  1-开启陌生人模式
+	    public	SCENE_IMAGE_INFO					stuThumImageInfo=new SCENE_IMAGE_INFO();        //大图(全景图)的缩略图信息
+	    public	SCENE_IMAGE_INFO					stuHumanImageInfo=new SCENE_IMAGE_INFO();       //人体图片信息
+	    public	byte[]					szVideoPath=new byte[256];                  //违章关联视频FTP上传路径
+	    public	byte[]					byReserved3=new byte[316];                  //保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java
new file mode 100644
index 0000000..4131228
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灭火器检测事件, 对应事件类型 EVENT_IVS_FIRE_EXTINGUISHER_DETECTION
+ * @date 2021/12/27
+ */
+public class DEV_EVENT_FIRE_EXTINGUISHER_DETECTION_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX stuUTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  智能事件所属大类,EM_SCENE_CLASS_TYPE
+     */
+    public int emClassType;
+
+    /**
+     *  检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject;
+
+    /**
+     *  全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+
+    /**
+     *  目标区域内物体计数信息
+     */
+    public NET_FIRE_EXTINGUISHER_OBJECT_INFO stuObjectInfo;
+    
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_INFO.java
new file mode 100644
index 0000000..dd2420c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_INFO.java
@@ -0,0 +1,139 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.NET_POINT;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_FIREDETECTION(火警事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+public class DEV_EVENT_FIRE_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 通道号
+	 * */
+	public int nChannelID;
+	/**
+	 * 事件名称
+	 * */
+	public byte[] szName = new byte[128]; 
+	/**
+	 * 字节对齐
+	 * */
+	public byte[] bReserved1 = new byte[4]; 
+	/**
+	 * 时间戳(单位是毫秒)
+	 * */
+	public double PTS; 
+	/**
+	 * 事件发生的时间
+	 * */
+	public NetSDKLib.NET_TIME_EX UTC; 
+	/**
+	 * 事件ID
+	 * */
+	public int nEventID; 
+	/**
+	 * 检测到的物体
+	 * */
+	public NetSDKLib.NET_MSG_OBJECT stuObject; 
+	/**
+	 * 事件对应文件信息
+	 * */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo; 
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
+	 * */
+	public byte bEventAction;
+	/**
+	 * 保留字节
+	 * */
+	public byte[] byReserved = new byte[2]; 
+	/**
+	 * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+	 * */
+	public byte byImageIndex; 
+	/**
+	 * 规则检测区域顶点数
+	 * */
+	public int nDetectRegionNum; 
+	/**
+	 * 规则检测区域
+	 * */
+	public NET_POINT[] DetectRegion = (NET_POINT[]) new NET_POINT().toArray(NetSDKLib.NET_MAX_DETECT_REGION_NUM);
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 * */
+	public int dwSnapFlagMask; 
+	/**
+	 * 事件源设备上的index,-1表示数据无效
+	 * */
+	public int nSourceIndex; 
+	/**
+	 * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+	 * */
+	public byte[] szSourceDevice = new byte[NetSDKLib.MAX_PATH];
+	/**
+	 * 事件触发累计次数, unsigned int 类型
+	 * */
+	public int nOccurrenceCount; 
+	/**
+	 * 智能事件公共信息
+	 * */
+	public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo; 
+	/**
+	 * stuSceneImage 是否有效
+	 * */
+	public int bSceneImage; 
+	/**
+	 * 全景广角图 
+	 * */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage; 
+	/**
+	 * 车身信息
+	 * */
+	public NetSDKLib.NET_MSG_OBJECT stuVehicle; 
+	/**
+	 * 触发类型,参考EM_TRIGGER_TYPE
+	 * */
+	public int emTriggerType; 
+	/**
+	 * 抓拍过程,参考EM_CAPTURE_PROCESS_END_TYPE
+	 */
+	public int emCaptureProcess;
+	/**
+	 * 标记抓拍帧
+	 * */
+	public int nMark; 
+	/**
+	 * 视频分析的数据源地址
+	 * */
+	public int nSource;
+	/**
+	 * 视频分析帧序号
+	 * */
+	public int nFrameSequence; 
+	/**
+	 * 交通车辆信息
+	 * */
+	public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar; 
+	/**
+	 * 公共信息 
+	 * */
+	public NetSDKLib.EVENT_COMM_INFO stuCommInfo; 
+	/**
+	 * 图片信息数组  ,结构体NET_IMAGE_INFO_EX2数组指针  
+	 * */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数 
+	 * */
+	public int	nImageInfoNum;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java
new file mode 100644
index 0000000..9f1fe2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LANE_DETECTION_INFO.java
@@ -0,0 +1,117 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_FIRE_LANE_DETECTION (消防占道检测事件)对应的数据块描述信息
+ * @date 2021/03/12
+ */
+public class DEV_EVENT_FIRE_LANE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	 /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  1:开始,2:停止
+     */
+    public int nAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  帧序号
+     */
+    public int nSequence;
+
+    /**
+     *  规则编号
+     */
+    public int nRuleID;
+
+    /**
+     *  检测到的物体个数
+     */
+    public int nObjectNum;
+
+    /**
+     *  检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = (NetSDKLib.NET_MSG_OBJECT[]) new NetSDKLib.NET_MSG_OBJECT().toArray(64);
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  stuSceneImage 是否有效
+     */
+    public int bSceneImage;
+
+    /**
+     *  全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+
+    /**
+     *  表示物体进入还是离开
+     */
+    public int					emMoveState;
+
+    /**
+     *  表示加油口盖标示牌状态,参考枚举EM_FIRE_LANE_OILCAP_STATE
+     */
+    public int					emOilCapState;
+
+    /**
+     *  检测到的车辆信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle = new NetSDKLib.DH_MSG_OBJECT();
+
+    /**
+     *  图片信息数组
+     */
+    public NET_IMAGE_INFO_EX2					stuImageInfo[] = new NET_IMAGE_INFO_EX2[32];
+
+    /**
+     *  图片信息个数
+     */
+    public int					nImageInfoNum;
+    /**
+     *  是否有非机动车信息
+     */
+    public int					bNonMotorInfo;
+    /**
+     *  非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor = new NetSDKLib.VA_OBJECT_NONMOTOR();
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    /**
+     *  预留字段
+     */
+    public byte					byReserved[] = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LINE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LINE_DETECTION_INFO.java
new file mode 100644
index 0000000..09a427e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FIRE_LINE_DETECTION_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 事件类型 EVENT_IVS_FIRE_LINE_DETECTION 进入消防通道检测 对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/12/08 16:20:18
+ */
+public class DEV_EVENT_FIRE_LINE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * / 智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / 帧序号
+     */
+    public int nSequence;
+    /**
+     * / 规则编号
+     */
+    public int nRuleID;
+    /**
+     * / 检测到的物体个数
+     */
+    public int nObjectNum;
+    /**
+     * / 检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = new NetSDKLib.NET_MSG_OBJECT[32];
+    /**
+     * / 全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public DEV_EVENT_FIRE_LINE_DETECTION_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java
new file mode 100644
index 0000000..b96bef6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FISHING_DETECTION_INFO.java
@@ -0,0 +1,91 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+事件类型 EVENT_IVS_FISHING_DETECTION (钓鱼检测事件)对应的数据块描述信息
+*/
+public class DEV_EVENT_FISHING_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID 协议是uint32
+*/
+public			int					nEventID;
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+GroupID事件组ID,同一物体抓拍过程内GroupID相同
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+检测目标物体的个数
+*/
+public			int					nObjectCount;
+/** 
+检测目标的物体信息
+*/
+public			NetSDKLib.NET_MSG_OBJECT_EX2[]		stuObjects= new NetSDKLib.NET_MSG_OBJECT_EX2[100];
+/** 
+检测区个数
+*/
+public			int					nDetectRegionCount;
+/** 
+表示配置的规则区域
+*/
+public			NetSDKLib.NET_POINT[]					stuDetectRegion=(NetSDKLib.NET_POINT[])new NetSDKLib.NET_POINT().toArray(20);
+/** 
+事件触发的预置点号,从1开始
+*/
+public			int					nPresetID;
+/** 
+全景广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1020];
+
+        public DEV_EVENT_FISHING_DETECTION_INFO(){
+
+            for(int i=0;i<stuObjects.length;i++){
+                stuObjects[i]=new NetSDKLib.NET_MSG_OBJECT_EX2();
+            }
+
+        }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java
new file mode 100644
index 0000000..f015576
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_FOLLOW_CAR_ALARM_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_FOLLOW_CAR_ALARM 跟车报警事件 对应的数据块描述信息
+ * @date 2021/01/13
+ */
+public class DEV_EVENT_FOLLOW_CAR_ALARM_INFO extends NetSDKLib.SdkStructure {
+	
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int nAction;
+	
+	/**
+	 * 事件发生的时间
+	 */
+	public NetSDKLib.NET_TIME_EX UTC;
+	
+	/**
+	 * 跟车图片信息个数
+	 */
+	public int nImageInfoNum;
+	
+	/**
+	 * 跟车图片信息
+	 */
+	public NET_FOLLOW_CAR_ALARM_IMAGE_INFO[] stuImageInfo = new NET_FOLLOW_CAR_ALARM_IMAGE_INFO[8];
+	
+	/**
+	 * 自定义信息
+	 */
+	public NET_FOLLOW_CAR_ALARM_CUSTOM_INFO stuCustomInfo;
+	
+	/**
+	 * 交通车辆信息
+	 */
+	public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+				
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[1024];
+	
+	public DEV_EVENT_FOLLOW_CAR_ALARM_INFO() {
+		for (int i = 0; i < stuImageInfo.length; i++) {
+			stuImageInfo[i] = new  NET_FOLLOW_CAR_ALARM_IMAGE_INFO();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java
new file mode 100644
index 0000000..e411306
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_GENEAL_ATTITUDE_INFO.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_GENEAL_ATTITUDE (通用姿态行为事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/07/11 10:31:09
+ */
+public class DEV_EVENT_GENEAL_ATTITUDE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 检测目标的物体个数
+	 */
+	public int nObjectCount;
+	/**
+	 * 检测目标的物体信息
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[128];
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+	/**
+	 * 姿态类型 {@link com.netsdk.lib.enumeration.NET_EM_ATTITUDE_TYPE}
+	 */
+	public int emAttitudeType;
+	/**
+	 * 智能事件规则编号
+	 */
+	public int nRuleID;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 图片信息数组
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 保留字节,留待扩展
+	 */
+	public byte[] szReserved = new byte[1016-NetSDKLib.POINTERSIZE];
+
+	public DEV_EVENT_GENEAL_ATTITUDE_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java
new file mode 100644
index 0000000..0bf445e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HEAT_IMAGING_TEMPER_INFO.java
@@ -0,0 +1,77 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_HEAT_IMAGING_TEMPER对应的数据描述信息
+ * @date 2022/06/07 14:08:53
+ */
+public class DEV_EVENT_HEAT_IMAGING_TEMPER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 温度异常点名称 从测温规则配置项中选择
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 报警项编号
+	 */
+	public int nAlarmId;
+	/**
+	 * 报警结果值 fTemperatureValue 的类型
+	 * {@link com.netsdk.lib.enumeration.NET_RADIOMETRY_RESULT}
+	 */
+	public int emResult;
+	/**
+	 * 报警条件 {@link com.netsdk.lib.enumeration.NET_RADIOMETRY_ALARMCONTION}
+	 */
+	public int emAlarmContion;
+	/**
+	 * 报警温度值
+	 */
+	public float fTemperatureValue;
+	/**
+	 * 温度单位(当前配置的温度单位) {@link com.netsdk.lib.NetSDKLib.NET_TEMPERATURE_UNIT }
+	 */
+	public int emTemperatureUnit;
+	/**
+	 * 报警点的坐标 相对坐标体系,取值均为0~8191
+	 */
+	public NetSDKLib.NET_POINT stCoordinate = new NetSDKLib.NET_POINT();
+	/**
+	 * 预置点
+	 */
+	public int nPresetID;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 报警坐标, 其类型可以是点,线或多边形。替换stCoordinate字段
+	 */
+	public NetSDKLib.NET_POLY_POINTS stuAlarmCoordinates = new NetSDKLib.NET_POLY_POINTS();
+	/**
+	 * szNameEx 是否有效,为TRUE时,使用szNameEx字段
+	 */
+	public int bUseNameEx;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] reserved1 = new byte[4];
+	/**
+	 * 温度异常点名称扩展
+	 */
+	public byte[] szNameEx = new byte[128];
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+	public byte[] reserved = new byte[884];
+
+	public DEV_EVENT_HEAT_IMAGING_TEMPER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java
new file mode 100644
index 0000000..bb84381
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HELMET_DETECTION_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_HELMET_EVENT_TYPE;
+
+/**
+ * @author : 260611
+ * @description : 事件类型 EVENT_IVS_HELMET_DETECTION (安全帽检测事件) 对应的数据块描述信息
+ * @since : Created in 2022/03/08 15:25
+ */
+
+public class DEV_EVENT_HELMET_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 智能事件所属大类,{@link NetSDKLib.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 规则编号
+     */
+    public int nRuleID;
+    /**
+     * 目标ID
+     */
+    public int nObjectID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 触发事件类型,{@link EM_HELMET_EVENT_TYPE}
+     */
+    public int emHelmetEventType;
+    /**
+     * 人体图片
+     */
+    public NetSDKLib.HUMAN_IMAGE_INFO stuHumanImage = new NetSDKLib.HUMAN_IMAGE_INFO();
+    /**
+     * 全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HOTSPOT_WARNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HOTSPOT_WARNING_INFO.java
new file mode 100644
index 0000000..70e15f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HOTSPOT_WARNING_INFO.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_HOTSPOT_WARNING (热点异常报警事件) 对应的数据块描述信息
+ * @date 2023/05/24 10:24:54
+ */
+public class DEV_EVENT_HOTSPOT_WARNING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 热点的坐标,坐标值 0~8191
+	 */
+	public NetSDKLib.DH_POINT stuPoint = new NetSDKLib.DH_POINT();
+	/**
+	 * 热点温度值
+	 */
+	public float fHotSpotValue;
+	/**
+	 * 温度单位(当前配置的温度单位),{@link NetSDKLib.NET_TEMPERATURE_UNIT}
+	 */
+	public int nTemperatureUnit;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256];
+
+	public DEV_EVENT_HOTSPOT_WARNING_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java
new file mode 100644
index 0000000..b9d93f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUDDLE_MATERIAL_INFO.java
@@ -0,0 +1,135 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.NET_POINT;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_HUDDLE_MATERIAL (乱放物料检测事件)对应的数据块描述信息
+ * @date 2020/11/19
+ */
+public class DEV_EVENT_HUDDLE_MATERIAL_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[NetSDKLib.NET_COMMON_STRING_128];
+
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+	/**
+	 * 规则检测区域
+	 */
+	public NET_POINT[] DetectRegion = new NET_POINT[NetSDKLib.NET_MAX_DETECT_REGION_NUM];
+
+	/**
+	 * 规则检测区域顶点数
+	 */
+	public int nDetectRegionNum;
+
+	/**
+	 * 检测到的物体
+	 */
+	public NET_MSG_OBJECT[] stuObjects = new NET_MSG_OBJECT[NetSDKLib.HDBJ_MAX_OBJECTS_NUM];
+
+	/**
+	 * 检测到的物体个数
+	 */
+	public int nObjectNum;
+
+	/**
+	 * 智能事件公共信息
+	 */
+	public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+	/**
+	 * 事件触发的预置名称
+	 */
+	public byte[] szPresetName = new byte[NetSDKLib.NET_COMMON_STRING_64];
+
+	/**
+	 * 违法持续时长,单位:秒,缺省值0表示无意义
+	 */
+	public int nViolationDuration;
+
+	/**
+	 * 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+	 */
+	public byte[] szSourceID = new byte[NetSDKLib.NET_COMMON_STRING_32];
+
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+
+	/**
+	 * 全景图图片信息,事件前2~5s抓图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * 图片信息数组,指针对应NET_IMAGE_INFO_EX2数组
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 合成图,指针对应SCENE_IMAGE_INFO_EX数组
+	 */
+	public Pointer pstuMosaicImage;
+	/**
+	 * 合成图个数
+	 */
+	public int nMosaicImageNum;
+	/**
+	 * 事件发生前抓图,指针对应SCENE_IMAGE_INFO_EX数组
+	 */
+	public Pointer pstuAdvanceImage;
+	/**
+	 * 事件发生前抓图个数
+	 */
+	public int nAdvanceImageNum;
+	/**
+	 * 保留字节,留待扩展
+	 */
+	public byte[] byReserved = new byte[3292 - NetSDKLib.POINTERSIZE * 3];
+
+	public DEV_EVENT_HUDDLE_MATERIAL_INFO() {
+		for (int i = 0; i < stuObjects.length; ++i) {
+			stuObjects[i] = new NET_MSG_OBJECT();
+		}
+
+		for (int i = 0; i < DetectRegion.length; ++i) {
+			DetectRegion[i] = new NET_POINT();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java
new file mode 100644
index 0000000..51b9335
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_HUMAN_ANIMAL_COEXISTENCE (人和动物检测事件)对应的数据块描述信息
+ * @date 2022/12/19 11:22:21
+ */
+public class DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件动作, 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 智能事件所属大类 {EM_SCENE_CLASS_TYPE}
+	 */
+	public int emClassType;
+	/**
+	 * 规则ID, 用于标示哪个规则触发的事件
+	 */
+	public int nRuleID;
+	/**
+	 * 事件组ID,同一物体抓拍过程内GroupID相同
+	 */
+	public int nGroupID;
+	/**
+	 * 一个事件组内的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * 一个事件组内的抓拍序号, 从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件触发的预置点号,从1开始, 0 表示无效
+	 */
+	public int nPresetID;
+	/**
+	 * 事件报警类型 {@link com.netsdk.lib.enumeration.EM_HUMAN_ANIMAL_ALARM_TYPE}
+	 */
+	public int emAlarmType;
+	/**
+	 * 场景类型 {@link com.netsdk.lib.enumeration.EM_DETECTION_SCENE_TYPE}
+	 */
+	public int emDetectionSceneType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public DEV_EVENT_HUMAN_ANIMAL_COEXISTENCE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java
new file mode 100644
index 0000000..948dd09
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_INTELLI_SHELF_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_INTELLI_SHELF(智能补货事件)对应的数据块描述信息
+ * @date 2022/09/19 14:46:49
+ */
+public class DEV_EVENT_INTELLI_SHELF_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能事件所属大类 {@link com.netsdk.lib.NetSDKLib.EM_CLASS_TYPE}
+	 */
+	public int emClassType;
+	/**
+	 * 区域ID(从1开始), 0为单区域
+	 */
+	public int nAreaID;
+	/**
+	 * 事件触发的预置点号,从1开始
+	 */
+	public int nPresetID;
+	/**
+	 * 表示货架上剩余货物的百分比
+	 */
+	public int nPercent;
+	/**
+	 * 全景大图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * 预留字节用于字节对齐
+	 */
+	public byte[] byReserved1 = new byte[4];
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public DEV_EVENT_INTELLI_SHELF_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java
new file mode 100644
index 0000000..898d707
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NONMOTOR_ENTRYING_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:DEV_EVENT_NONMOTOR_ENTRYING_INFO
+ * description: 事件类型 EVENT_IVS_NONMOTOR_ENTRYING (非机动车进入电梯事件)对应的数据块描述信息
+ * author:251589
+ * createTime:2020/12/21 13:47
+ *
+ * @version v1.0
+ */
+public class DEV_EVENT_NONMOTOR_ENTRYING_INFO extends NetSDKLib.SdkStructure {
+    public 	int									nChannelID;				// 通道号
+    public 	int									nAction;				// 1:开始 2:停止
+    public 	byte[]szName		                = new byte[128];		// 事件名称
+    public 	double								PTS;					// 时间戳(单位是毫秒)
+    public 	NET_TIME_EX							UTC;					// 事件发生的时间
+    public 	int									nEventID;				// 事件ID
+    public 	int									nRuleID;				// 规则ID
+    public 	int									nSequence;				// 视频帧序号
+    public  int             emClassType;			// 智能事件所属大类
+    public 	int									nObjectNum;				// 目标个数
+    public  NetSDKLib.VA_OBJECT_NONMOTOR[] stuObjects = new NetSDKLib.VA_OBJECT_NONMOTOR[8];			// 非机动车目标
+    public  NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;			// 全景广角图
+    public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);    //图片信息数组
+    public int                  nImageInfoNum;                                  //图片信息个数
+    public byte                 byReserved[] = new byte[1024];                   //预留字节
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java
new file mode 100644
index 0000000..d7694ac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_NUMBERSTAT_INFO.java
@@ -0,0 +1,116 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_NUMBERSTAT(数量统计事件)对应的数据块描述信息
+ * @date 2022/07/04 10:11:30
+ */
+public class DEV_EVENT_NUMBERSTAT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved2 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 区域内物体的个数
+     */
+    public int nNumber;
+    /**
+     * 设置的上限
+     */
+    public int nUpperLimit;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[2];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 表示进入区域或者出入口的内物体的个数
+     */
+    public int nEnteredNumber;
+    /**
+     * 表示出来区域或者出入口的内物体的个数
+     */
+    public int nExitedNumber;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件触发累计次数
+     */
+    public int nOccurrenceCount;
+    /**
+     * 智能事件公共信息
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new NetSDKLib.EVENT_INTELLI_COMM_INFO();
+    /**
+     * 区域ID,一个预置点可以有多个区域ID
+     */
+    public int nAreaID;
+    /**
+     * 该场景下是否合规
+     */
+    public int bIsCompliant;
+    /**
+     * 表示人数越上限类型 {@link com.netsdk.lib.enumeration.EM_NUMBER_STAT_TYPE}
+     */
+    public int emType;
+    /**
+     * 图片信息数组
+     */
+    public Pointer pstuImageInfo;
+    /**
+     * 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * 经过区域物体的个数
+     */
+    public int nPassedNumber;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[800];
+
+    public DEV_EVENT_NUMBERSTAT_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java
new file mode 100644
index 0000000..753c7da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_ABNORMAL_INFO.java
@@ -0,0 +1,77 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_OBJECT_ABNORMAL 目标异常检测事件 对应的数据块描述信息
+ * @date 2022/12/19 11:30:59
+ */
+public class DEV_EVENT_OBJECT_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0-脉冲 1-开始 2-结束
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位:毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 全景大图信息
+	 */
+	public NET_EVENT_IMAGE_OFFSET_INFO stuSceneImage = new NET_EVENT_IMAGE_OFFSET_INFO();
+	/**
+	 * 智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+	 */
+	public int emClassType;
+	/**
+	 * 区域ID(一个预置点可以对应多个区域ID)
+	 */
+	public short nAreaID;
+	/**
+	 * 预置点编号,从1开始
+	 */
+	public short nPresetID;
+	/**
+	 * 目标信息
+	 */
+	public NET_OBJECT_INFO[] stuObjectInfo = new NET_OBJECT_INFO[64];
+	/**
+	 * 目标信息个数
+	 */
+	public int nObjectInfoNum;
+	/**
+	 * 目标类型 {@link com.netsdk.lib.enumeration.EM_ABNORMAL_OBJECT_TYPE}
+	 */
+	public int emObjectType;
+	/**
+	 * 异常行为 {@link com.netsdk.lib.enumeration.EM_OBJECT_ABNORMAL_TYPE}
+	 */
+	public int emAbnormalType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[1020];
+
+	public DEV_EVENT_OBJECT_ABNORMAL_INFO() {
+		for (int i = 0; i < stuObjectInfo.length; i++) {
+			stuObjectInfo[i] = new NET_OBJECT_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java
new file mode 100644
index 0000000..83032c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_NUM_DETECTION_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_OBJECT_NUM_DETECTION (区域内计数事件)对应的数据块描述信息( 注意该事件不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) 
+* @date 2023/02/06 15:58:41
+*/
+public class DEV_EVENT_OBJECT_NUM_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+区域ID, 没有该字段或者为0,为单区域
+*/
+public			int					nAreaID;
+/** 
+事件触发的预置点号,从1开始
+*/
+public			int					nPresetID;
+/** 
+表示区域内物体的个数
+*/
+public			int					nNumber;
+/** 
+全景广角图(仅nIndexInData, nOffSet, nLength字段有效)
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_OBJECT_NUM_DETECTION_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java
new file mode 100644
index 0000000..29be1c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_OBJECT_PLACEMENT_DETECTION(物品放置检测事件) 对应数据
+ * @date 2023/04/21 16:10:01
+ */
+public class DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * 智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+     */
+    public int nRuleID;
+    /**
+     * 预录时长, 单位秒
+     */
+    public int nPreRecord;
+    /**
+     * 物体信息数据
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 检测目标物体的个数
+     */
+    public int nObjectCount;
+    /**
+     * 表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据
+     */
+    public NetSDKLib.NET_MSG_OBJECT_EX2[] stuObjects = new NetSDKLib.NET_MSG_OBJECT_EX2[128];
+    /**
+     * 图片信息数组,{@link NET_IMAGE_INFO_EX2}
+     */
+    public Pointer pstuImageInfo;
+    /**
+     * 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节
+     */
+    public byte[] Reserved = new byte[1012];
+
+    public DEV_EVENT_OBJECT_PLACEMENT_DETECTION_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT_EX2();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java
new file mode 100644
index 0000000..58596c2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT_EX2;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_OBJECT_REMOVAL_DETECTION(物品拿取检测事件) 对应数据
+ * @date 2023/04/21 16:10:01
+ */
+public class DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * 智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+     */
+    public int nRuleID;
+    /**
+     * 预录时长, 单位秒
+     */
+    public int nPreRecord;
+    /**
+     * 物体信息数据
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 检测目标物体的个数
+     */
+    public int nObjectCount;
+    /**
+     * 表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据
+     */
+    public NET_MSG_OBJECT_EX2[] stuObjects = new NET_MSG_OBJECT_EX2[128];
+    /**
+     * 图片信息数组,{@link NET_IMAGE_INFO_EX2}
+     */
+    public Pointer pstuImageInfo;
+    /**
+     * 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 保留字节
+     */
+    public byte[] Reserved = new byte[1012];
+
+    public DEV_EVENT_OBJECT_REMOVAL_DETECTION_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NET_MSG_OBJECT_EX2();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java
new file mode 100644
index 0000000..c06eff0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OPEN_INTELLI_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_OPEN_INTELLI (开放智能事件)对应的数据块描述信息 
+* @date 2023/02/06 14:57:49
+*/
+public class DEV_EVENT_OPEN_INTELLI_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+所属开放算法的Id
+*/
+public			byte[]					szOpenCode=new byte[32];
+/** 
+所属开放算法的名称
+*/
+public			byte[]					szOpenName=new byte[128];
+/** 
+所属开放算法的规则类型, 仅支持: 拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION)、区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION)、滞留检测StayDetection(EVENT_IVS_STAYDETECTION)、数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION)、通用姿态行为事件 GenealAttitude(EVENT_IVS_GENEAL_ATTITUDE)
+*/
+public			byte[]					szRuleType=new byte[32];
+/** 
+与开放算法的规则类型支持的带图事件类型对应的结构体对应(只解析Event Data中的字段)
+拌线入侵CrossLineDetection(EVENT_IVS_CROSSLINEDETECTION) - DEV_EVENT_CROSSLINE_INFO
+区域入侵CrossRegionDetection(EVENT_IVS_CROSSREGIONDETECTION) - DEV_EVENT_CROSSREGION_INFO
+滞留检测StayDetection(EVENT_IVS_STAYDETECTION) - DEV_EVENT_STAY_INFO
+数量统计ObjectNumDetection(EVENT_IVS_OBJECT_NUM_DETECTION) - DEV_EVENT_OBJECT_NUM_DETECTION_INFO
+绊线计数事件 CrossLineStat(EVENT_IVS_CROSSLINE_STAT) - NET_DEV_EVENT_CROSSLINE_STAT_INFO
+域内计数事件 RegionNumStat(EVENT_IVS_REGIONNUM_STAT) - NET_DEV_EVENT_REGIONNUM_STAT_INFO
+全物体类型检测事件 AnythingDetect(EVENT_IVS_ANYTHING_DETECT) - DEV_EVENT_ANYTHING_DETECT_INFO
+通用姿态行为事件 GenealAttitude(EVENT_IVS_GENEAL_ATTITUDE) - DEV_EVENT_GENEAL_ATTITUDE_INFO
+*/
+public Pointer pstuOpenData;
+/** 
+检测到的目标属性信息列表的个数
+*/
+public			int					nObjectNums;
+/** 
+检测到的目标属性信息列表
+*/
+public			NET_OPEN_INTELLI_OBJECT_INFO[]					stuObjects=new NET_OPEN_INTELLI_OBJECT_INFO[100];
+/** 
+用户数据
+*/
+public			NET_OPEN_INTELLI_USER_DATA_INFO					stuUserData=new NET_OPEN_INTELLI_USER_DATA_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_OPEN_INTELLI_INFO(){
+		for(int i=0;i<stuObjects.length;i++){
+			stuObjects[i]=new NET_OPEN_INTELLI_OBJECT_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java
new file mode 100644
index 0000000..498f647
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.NET_POINT;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_OUTDOOR_ADVERTISEMENT (户外广告事件)对应的数据块描述信息
+ * @date 2020/11/19
+ */
+public class DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[NetSDKLib.NET_COMMON_STRING_128];
+
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+	/**
+	 * 规则检测区域
+	 */
+	public NET_POINT[] DetectRegion = new NET_POINT[NetSDKLib.NET_MAX_DETECT_REGION_NUM];
+
+	/**
+	 * 规则检测区域顶点数
+	 */
+	public int nDetectRegionNum;
+
+	/**
+	 * 检测到的物体
+	 */
+	public NET_MSG_OBJECT[] stuObjects = new NET_MSG_OBJECT[NetSDKLib.HDBJ_MAX_OBJECTS_NUM];
+
+	/**
+	 * 检测到的物体个数
+	 */
+	public int nObjectNum;
+
+	/**
+	 * 智能事件公共信息
+	 */
+	public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+	/**
+	 * 事件触发的预置名称
+	 */
+	public byte[] szPresetName = new byte[NetSDKLib.NET_COMMON_STRING_64];
+
+	/**
+	 * 违法持续时长,单位:秒,缺省值0表示无意义
+	 */
+	public int nViolationDuration;
+
+	/**
+	 * 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+	 */
+	public byte[] szSourceID = new byte[NetSDKLib.NET_COMMON_STRING_32];
+
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+
+	/**
+	 * 保留字节,留待扩展
+	 */
+	public byte[] byReserved = new byte[4092];
+
+	public DEV_EVENT_OUTDOOR_ADVERTISEMENT_INFO() {
+		for (int i = 0; i < stuObjects.length; ++i) {
+			stuObjects[i] = new NET_MSG_OBJECT();
+		}
+
+		for (int i = 0; i < DetectRegion.length; ++i) {
+			DetectRegion[i] = new NET_POINT();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java
new file mode 100644
index 0000000..1978c6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 事件 路侧停车位手动抓图
+ * 枚举 {@link NetSDKLib#EVENT_IVS_TRAFFIC_PARKINGSPACE_MANUALSNAP}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:25
+ */
+public class DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 表示交通车辆的数据库记录
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+    /**
+     * 和客户端请求的抓图序列号对应
+     */
+    public byte[] szSerialNo = new byte[128];
+    /**
+     * 有效停车个数
+     */
+    public int nParkingNum;
+    /**
+     * 停车信息
+     */
+    public NET_MANUALSNAP_PARKINGSPACE_INFO[] stuParkingInfo = new NET_MANUALSNAP_PARKINGSPACE_INFO[32];
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[516];
+
+    public DEV_EVENT_PARKINGSPACE_MANUALSNAP_INFO() {
+        for (int i = 0; i < stuParkingInfo.length; i++) {
+            stuParkingInfo[i] = new NET_MANUALSNAP_PARKINGSPACE_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java
new file mode 100644
index 0000000..50c42c2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 事件类型 EVENT_IVS_PARKING_LOT_STATUS_DETECTION(室外停车位状态检测)对应的数据块描述信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/14 18:56
+ */
+public class DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 智能事件所属大类 {@link NetSDKLib.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public int nRuleID;
+    /**
+     * 帧序号
+     */
+    public int nSequence;
+    /**
+     * 室外停车位个数
+     */
+    public int nParkingStatusNum;
+    /**
+     * 室外停车位状态
+     */
+    public NetSDKLib.NET_PARKING_STATUS[] stuParkingStatus = new NetSDKLib.NET_PARKING_STATUS[100];
+    /**
+     * 全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+    /**
+     * 图片信息数组
+     */
+    public NET_IMAGE_INFO_EX2   stuImageInfo[] = (NET_IMAGE_INFO_EX2[])new NET_IMAGE_INFO_EX2().toArray(32);
+    /**
+     * 图片信息个数
+     */
+    public int                  nImageInfoNum;
+    /**
+     * 预留字节
+     */
+    public byte                 byReserved[] = new byte[1024];
+
+    public DEV_EVENT_PARKING_LOT_STATUS_DETECTION_INFO() {
+        for (int i = 0; i < stuParkingStatus.length; i++) {
+            stuParkingStatus[i] = new NetSDKLib.NET_PARKING_STATUS();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java
new file mode 100644
index 0000000..68ecc56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PLAY_MOBILEPHONE_INFO.java
@@ -0,0 +1,133 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_PLAY_MOBILEPHONE(玩手机事件)对应的数据块描述信息
+ * @date 2021/09/27
+ */
+public class DEV_EVENT_PLAY_MOBILEPHONE_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  1:开始 2:停止
+     */
+    public int nAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public int nRuleID;
+
+    /**
+     *  智能事件所属大类,参考枚举 EM_CLASS_TYPE
+     */
+    public int emClassType;
+
+    /**
+     *  事件对应文件信息 
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  事件触发的预置点号,从1开始
+     */
+    public int nPresetID;
+
+    /**
+     *  检测区域顶点数
+     */
+    public int nDetectRegionNum;
+
+    /**
+     *  检测区域,[0,8191]
+     */
+    public NetSDKLib.NET_POINT[] stuDetectRegion = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(20);
+    /**
+     *  检测到的物体个数
+     */
+    public int nObjectNum;
+
+    /**
+     *  检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = (NetSDKLib.NET_MSG_OBJECT[]) new NetSDKLib.NET_MSG_OBJECT().toArray(128);
+    /**
+     *  stuSceneImage 是否有效
+     */
+    public int bSceneImage;
+
+    /**
+     *  全景广角图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+
+    /**
+     *  GPS信息
+     */
+    public NetSDKLib.NET_GPS_INFO stuGPSInfo = new NetSDKLib.NET_GPS_INFO();
+
+    /**
+     *  违章关联视频FTP上传路径
+     */
+    public byte					szVideoPath[] = new byte[256];
+    
+	/**
+	 * 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 违章关联的多个视频信息个数
+	 */
+	public int nRelatingVideoInfoNum;
+
+	/**
+	 * 违章关联的多个视频信息数组,最多支持16个视频
+	 */
+	public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];
+	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    /**
+     *  预留字段
+     */
+    public byte					byReserved[] = new byte[1012];
+    
+    public DEV_EVENT_PLAY_MOBILEPHONE_INFO() {
+    	for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+    		stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java
new file mode 100644
index 0000000..1250cc7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_PRESERVATION_INFO.java
@@ -0,0 +1,100 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 事件类型EVENT_IVS_PRESERVATION(物品保全事件)对应的数据块描述信息
+* @date 2022/04/07 19:26:34
+*/
+public class DEV_EVENT_PRESERVATION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+字节对齐
+*/
+public			byte[]					bReserved1=new byte[4];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+检测到的物体
+*/
+public NetSDKLib.DH_MSG_OBJECT stuObject=new NetSDKLib.DH_MSG_OBJECT();
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+*/
+public			byte					bEventAction;
+/** 
+
+*/
+public			byte[]					byReserved=new byte[2];
+/** 
+图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+*/
+public			byte					byImageIndex;
+/** 
+规则检测区域顶点数
+*/
+public			int					nDetectRegionNum;
+/** 
+规则检测区域
+*/
+public			NetSDKLib.DH_POINT[]					DetectRegion=(NetSDKLib.DH_POINT[])new NetSDKLib.DH_POINT().toArray(20);
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+事件源设备上的index,-1表示数据无效
+*/
+public			int					nSourceIndex;
+/** 
+事件源设备唯一标识,字段不存在或者为空表示本地设备
+*/
+public			byte[]					szSourceDevice=new byte[260];
+/** 
+事件触发累计次数
+*/
+public			int					nOccurrenceCount;
+/** 
+智能事件公共信息
+*/
+public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo=new NetSDKLib.EVENT_INTELLI_COMM_INFO();
+/** 
+广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO();
+/** 
+检测目标物体的个数
+*/
+public			int					nObjectCount;
+/** 
+表示检测到的物体信息 有Objects, 以Objects为准,无Objects, 以Object为准,为兼容老的客户端,有Objects的,Object也要填数据
+*/
+public			NetSDKLib.NET_MSG_OBJECT_EX2[]					stuObjects=(NetSDKLib.NET_MSG_OBJECT_EX2[])new NetSDKLib.NET_MSG_OBJECT_EX2().toArray(128);
+/** 
+保留字节,留待扩展.
+*/
+public			byte[]					szReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java
new file mode 100644
index 0000000..449a5bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_QSYTRAFFICCARWEIGHT (交通卡口称重事件)对应的数据块描述信息
+ * @date 2023/04/07 17:12:26
+ */
+public class DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 称重系统车辆信息
+	 */
+	public NET_CAR_WEIGHT_INFO stCarWeightInfo = new NET_CAR_WEIGHT_INFO();
+	/**
+	 * 交通卡口信息
+	 */
+	public NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO stJunctionInfo = new NetSDKLib.DEV_EVENT_TRAFFICJUNCTION_INFO();
+
+	public DEV_EVENT_QSYTRAFFICCARWEIGHT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java
new file mode 100644
index 0000000..e5cd0b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RADAR_REGION_DETECTION_INFO.java
@@ -0,0 +1,159 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_RADAR_REGION_DETECTION(雷达警戒区检测事件)对应的数据块描述信息 
+* @date 2022/09/01 20:07:33
+*/
+public class DEV_EVENT_RADAR_REGION_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+智能事件规则编号,用于标示哪个规则触发的事件
+*/
+public			int					nRuleID;
+/** 
+智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+*/
+public			int					emClassType;
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+检测到的对象个数
+*/
+public			int					nObjectNum;
+/** 
+雷达检测对象列表
+*/
+public			NET_RADAR_DETECT_OBJECT[]					stuObjects=new NET_RADAR_DETECT_OBJECT[100];
+/** 
+事件触发的预置点号
+*/
+public			int					nPresetID;
+/** 
+检测区域顶点数
+*/
+public			int					nDetectRegionNum;
+/** 
+检测区域,[0,8191]
+*/
+public			NetSDKLib.NET_POINT[]					stuDetectRegion=new NetSDKLib.NET_POINT[20];
+/** 
+全景广角图(当图片超过1张时 使用stuSceneImageEx)
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+报警类型 {@link com.netsdk.lib.enumeration.EM_RADAR_ALARM_TYPE}
+*/
+public			int					emAlarmType;
+/** 
+报警等级
+*/
+public			byte[]					szAlarmLevel=new byte[16];
+/** 
+报警输入通道号
+*/
+public			int					nAlarmChannel;
+/** 
+RFID卡片信息个数
+*/
+public			int					nRFIDCardIdNum;
+/** 
+RFID卡片信息,最多支持256张卡片信息
+*/
+public			NET_RFID_CARD_INFO[]					stuRFIDCardId=new NET_RFID_CARD_INFO[256];
+/** 
+全景广角图(扩展为10张)
+*/
+public			NetSDKLib.SCENE_IMAGE_INFO_EX[]					stuSceneImageEx=new NetSDKLib.SCENE_IMAGE_INFO_EX[10];
+/** 
+全景广角图个数
+*/
+public			int					nstuSceneImageExNum;
+/** 
+触发事件目标的速度,用整型传输,扩大100倍 单位m/s
+*/
+public			int					nSpeed;
+/** 
+触发事件目标的id,范围[0,63]
+*/
+public			int					nTrackID;
+/** 
+触发事件目标的类型的掩码: 0x00未识别目标 0x01目标为人 0x02目标为交通工具 0x03目标为树 0x04目标为建筑物 0x05目标为屏幕 0x06目标为动物 0x07目标为大船 0x08目标为中船 0x09目标为小船
+*/
+public			int					nObjectType;
+/** 
+报警标志位,第0bit位表示是否超速,第1bit位表示是否AIS匹配 第2bit位表示是否禁行 第3bit位表示是否逆行
+*/
+public			int					nAlarmFlag;
+/** 
+经度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐
+*/
+public			int					nLongitude;
+/** 
+纬度,用整型传输,1000000倍,小数点后6位有效,不足6位用0补齐
+*/
+public			int					nLatitude;
+/** 
+车道/航道方向 -1:未知 0:无效 1:上行 2:下行
+*/
+public			int					nUpDownGoing;
+/** 
+事件公共扩展字段结构体
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+当前触发事件目标的像素极坐标值--距离,扩大100倍的结果,单位米
+*/
+public			int					nDistance;
+/** 
+当前触发事件目标的极坐标值--角度,扩大100倍的结果,单位度
+*/
+public			int					nAngle;
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[988];
+
+public DEV_EVENT_RADAR_REGION_DETECTION_INFO(){
+		for(int i=0;i<stuObjects.length;i++){
+			stuObjects[i]=new NET_RADAR_DETECT_OBJECT();
+			}
+		for(int i=0;i<stuDetectRegion.length;i++){
+			stuDetectRegion[i]=new NetSDKLib.NET_POINT();
+			}
+		for(int i=0;i<stuRFIDCardId.length;i++){
+			stuRFIDCardId[i]=new NET_RFID_CARD_INFO();
+			}
+		for(int i=0;i<stuSceneImageEx.length;i++){
+			stuSceneImageEx[i]=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java
new file mode 100644
index 0000000..ebea5bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_RIDING_MOTOR_CYCLE_INFO.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_RIDING_MOTOR_CYCLE (摩托车骑跨检测事件)对应的数据块描述信息
+ * @date 2021/12/27
+ */
+public class DEV_EVENT_RIDING_MOTOR_CYCLE_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+
+    /**
+     *  事件名称 
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+
+    /**
+     *  GroupID事件组ID,同一物体抓拍过程内GroupID相同
+     */
+    public int nGroupID;
+
+    /**
+     *  CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+
+    /**
+     *  IndexInGroup一个事件组内的抓拍序号,从1开始
+     */
+    public int nIndexInGroup;
+
+    /**
+     *  事件时间毫秒数
+     */
+    public int nUTCMS;
+
+    /**
+     *  相对事件时间戳,(单位是毫秒)
+     */
+    public double dbPTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX stuUTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  检测到的物体信息个数
+     */
+    public int nObjectNum;
+
+    /**
+     *  表示检测到的物体信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT_EX2[] stuObjects = (NetSDKLib.NET_MSG_OBJECT_EX2[]) new NetSDKLib.NET_MSG_OBJECT_EX2().toArray(64);
+    /**
+     *  全景广角图,仅IndexInData字段有效
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO.java
new file mode 100644
index 0000000..047e5b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_ROAD_CONDITIONS_DETECTION (路面检测事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/06/16 10:02:53
+*/
+public class DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+路面状况等级 {@link com.netsdk.lib.enumeration.EM_ROAD_LEVEL}
+*/
+public			int					emRoadLevel;
+/** 
+GPS信息
+*/
+public NetSDKLib.NET_GPS_STATUS_INFO stuGPSStatus=new NetSDKLib.NET_GPS_STATUS_INFO();
+/** 
+违章关联视频FTP上传路径
+*/
+public			byte[]					szVideoPath=new byte[256];
+/** 
+路面病害面积,单位:平方米
+*/
+public			float					fDamageArea;
+/** 
+路面病害长度,单位:米
+*/
+public			float					fDamageLength;
+/** 
+桩号ID
+*/
+public			int					nPileID;
+/** 
+临近桩号距离,单位米,支持正负值
+*/
+public			int					nPileDistance;
+/** 
+桩号名称
+*/
+public			byte[]					szPileName=new byte[128];
+/** 
+路线名称
+*/
+public			byte[]					szLineName=new byte[128];
+/** 
+路面属性(如,"水泥路","柏油")
+*/
+public			byte[]					szRoadAttribute=new byte[128];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[368];
+
+public DEV_EVENT_ROAD_CONDITIONS_DETECTION_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java
new file mode 100644
index 0000000..05628da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SECURITYGATE_PERSONALARM_INFO.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:06 事件类型 EVENT_IVS_SECURITYGATE_PERSONALARM
+ *        (安全门人员报警事件)对应的数据块描述信息
+ */
+public class DEV_EVENT_SECURITYGATE_PERSONALARM_INFO extends NetSDKLib.SdkStructure {
+
+	public int nChannelID; // 通道号
+	public int nAction; // 0:脉冲 1:开始 2:停止
+	public byte[] szName = new byte[128]; // 事件名称
+	public double PTS; // 时间戳(单位是毫秒)
+	public NET_TIME_EX UTC = new NET_TIME_EX(); // 时间
+	public int nEventID; // 事件ID
+	/**
+	 * 人员通过方向枚举,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_PERSON_PASS_DIRECTION }
+	 */
+	public int emDirection; // 人员通过方向
+
+	/**
+	 * 报警级别,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_ALARM_LEVEL }
+	 */
+	public int emAlarmLevel; // 报警级别
+	public int nChannelIn; // 关联进入通道
+	public int ChannelOut; // 关联离开通道
+	public NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO stuImageInfo = new NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO(); // 人脸图片信息
+	public int nAlarmPositionNum; // 报警位置个数
+
+	/**
+	 * 报警位置,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_ALARM_POSITION }
+	 */
+	public int[] emAlarmPosition = new int[18]; // 报警位置
+	public NET_SECURITYGATE_ALARM_FACEIMAGE_INFO stuFaceImageInfo = new NET_SECURITYGATE_ALARM_FACEIMAGE_INFO(); // 人脸小图
+	public NET_SECURITYGATE_ALARM_FACE_INFO stuSecurityGateFaceInfo = new NET_SECURITYGATE_ALARM_FACE_INFO(); // 人脸信息
+	public byte[] byReserved = new byte[4]; // 保留字段
+	public int nCandidateNum; // 候选人个数, 最大支持50
+	public NET_SECURITYGATE_CANDIDATE[] stuCandidates = (NET_SECURITYGATE_CANDIDATE[]) new NET_SECURITYGATE_CANDIDATE()
+			.toArray(50); // 候选人信息
+
+	public int nDoorRegion; // 门体分区 0表示6分区 1表示12分区 2表示18分区
+	public int nAlaramPositionNum; // 报警位置个数
+	public int[] nAlaramPosition = new int[18]; // 报警位置数组 当nDoorRegion为0时,数组个数最多6个 0表示1区,1表示2区...5表示6区
+												// 当nDoorRegion为1时,数组个数最多12个 0表示左1,1表示右1,2表示左2,3表示右2...10表示左6,11表示右6
+												// 当nDoorRegion为2时,数组个数最多18个
+												// 0表示左1,1表示中1,2表示右2,3表示左1,4表示中1,5表示右2...15表示左6,16表示中6,17表示右6
+	public int nPositionNumEx;                              // 报警位置个数拓展
+	public int[] emAlarmPositionEx= new int[128];           // 报警位置拓展 ,参考枚举EM_SECURITYGATE_ALARM_POSITION 
+	public int nAlaramPositionNumEx;						// 报警位置个数拓展
+	public int[] nAlaramPositionEx = new int[128];			// 报警位置数组拓展 门体分区相关
+	public int											nAlarmInfoNum;								// 分类报警信息个数
+	public NET_SECURITYGATE_ALARM_INFO[]				stuAlarmInfo = new NET_SECURITYGATE_ALARM_INFO[32];	// 分类报警信息
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();  //事件公共扩展字段结构体
+    public int                                         nPartitionRow;              // DoorRegion门体分区对应的区位分布的行数
+    public int                                         nPartitionColumn;            // DoorRegion门体分区对应的区位分布的列数
+	public byte[]									   szResvered = new byte[1016];		// 保留字节
+	public DEV_EVENT_SECURITYGATE_PERSONALARM_INFO() {
+		for (int i = 0; i < stuAlarmInfo.length; i++) {
+			stuAlarmInfo[i] = new NET_SECURITYGATE_ALARM_INFO();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java
new file mode 100644
index 0000000..db406bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SEWAGE_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+事件类型 EVENT_IVS_SEWAGE_DETECTION (排污检测事件) 对应的数据描述信息
+*/
+public class DEV_EVENT_SEWAGE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+*/
+public			int					nAction;
+/** 
+智能事件所属大类 EM_CLASS_TYPE
+*/
+public			int					emClassType;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件组ID
+*/
+public			int					nGroupID;
+/** 
+一个事件组内应有的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号
+*/
+public			int					nIndexInGroup;
+/** 
+事件ID编号
+*/
+public			int					nEventID;
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间(单位是秒)
+*/
+public			int					UTC;
+/** 
+事件时间(单位是毫秒)
+*/
+public			int					UTCMS;
+/** 
+实际检测到区域个数
+*/
+public			int					nDetectRegionNum;
+/** 
+检测区域
+*/
+public			NetSDKLib.DH_POINT[]					stuDetectRegion=(NetSDKLib.DH_POINT[])new NetSDKLib.DH_POINT().toArray(20);
+/** 
+事件触发的预置点号,从1开始, 没有该字段,表示预置点未知
+*/
+public			int					nPresetID;
+/** 
+原始图
+*/
+public NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage=new NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO();
+/** 
+球机变到最小倍下的抓图
+*/
+public NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO stuSceneImage=new NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java
new file mode 100644
index 0000000..050eee2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.DH_MAX_DETECT_REGION_NUM;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.HDBJ_MAX_OBJECTS_NUM;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.netsdk.lib.enumeration.EM_EVENT_IVS_TYPE#EVENT_IVS_SHOP_SIGN_ABNORMAL}(店招异常事件)对应的数据块描述信息
+ * @date 2020/11/17
+ */
+public class DEV_EVENT_SHOP_SIGN_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public short nRuleID;
+    /**
+     * 智能事件所属大类,对应枚举
+     * {@link com.netsdk.lib.NetSDKLib.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 检测区域
+     */
+    public NetSDKLib.DH_POINT[] stuDetectRegion = (NetSDKLib.DH_POINT[]) new NetSDKLib.DH_POINT().toArray(DH_MAX_DETECT_REGION_NUM);
+    /**
+     * 检测到的物体个数
+     */
+    public int nObjectNum;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.DH_MSG_OBJECT[] stuObjects = (NetSDKLib.DH_MSG_OBJECT[]) new NetSDKLib.DH_MSG_OBJECT().toArray(HDBJ_MAX_OBJECTS_NUM);
+    /**
+     * 事件触发的预置点号,从1开始
+     */
+    public short nPresetID;
+    /**
+     * 事件触发的预置点名称
+     */
+    public byte[] szPresetName = new byte[64];
+    /**
+     * 商铺地址
+     */
+    public byte[] szShopAddress = new byte[256];
+    /**
+     * 违法持续时长,单位:秒,缺省值0表示无意义
+     */
+    public short nViolationDuration;
+    /**
+     * 抓图标志(按位),具体见 NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java
new file mode 100644
index 0000000..b141834
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SHOP_WINDOW_POST_INFO.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.HDBJ_MAX_OBJECTS_NUM;
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.SDK_MAX_DETECT_REGION_NUM;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.netsdk.lib.enumeration.EM_EVENT_IVS_TYPE#EVENT_IVS_SHOP_WINDOW_POST}(橱窗张贴事件)对应的数据块描述信息
+ * @date 2020/11/16
+ */
+public class DEV_EVENT_SHOP_WINDOW_POST_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public byte nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public short nRuleID;
+    /**
+     * EM_CLASS_TYPE,智能事件所属大类
+     */
+    public int emClassType;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 检测区域
+     */
+    public NetSDKLib.NET_POINT[] stuDetectRegion = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(SDK_MAX_DETECT_REGION_NUM);
+    /**
+     * 检测到的物体个数
+     */
+    public int nObjectNum;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = (NetSDKLib.NET_MSG_OBJECT[]) new NetSDKLib.NET_MSG_OBJECT().toArray(HDBJ_MAX_OBJECTS_NUM);
+    /**
+     * 事件触发的预置点号,从1开始
+     */
+    public short nPresetID;
+    /**
+     * 事件触发的预置点名称
+     */
+    public byte[] szPresetName = new byte[64];
+    /**
+     * 商铺地址
+     */
+    public byte[] szShopAddress = new byte[256];
+    /**
+     * 违法持续时长,单位:秒,缺省值0表示无意义
+     */
+    public short nViolationDuration;
+    /**
+     * 抓图标志(按位),具体见 NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java
new file mode 100644
index 0000000..013328d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SLEEP_DETECT_INFO.java
@@ -0,0 +1,120 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_SLEEP_DETECT(睡觉检测事件)对应的数据块描述信息
+ * @date 2021/09/27
+ */
+public class DEV_EVENT_SLEEP_DETECT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+
+	/**
+	 * 1:开始 2:停止
+	 */
+	public int nAction;
+
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+
+	/**
+	 * 智能事件规则编号,用于标示哪个规则触发的事件
+	 */
+	public int nRuleID;
+
+	/**
+	 * 智能事件所属大类,参考枚举 EM_CLASS_TYPE
+	 */
+	public int emClassType;
+
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+	/**
+	 * 事件触发的预置点号,从1开始
+	 */
+	public int nPresetID;
+
+	/**
+	 * 检测区域顶点数
+	 */
+	public int nDetectRegionNum;
+
+	/**
+	 * 检测区域,[0,8191]
+	 */
+	public NetSDKLib.NET_POINT[] stuDetectRegion = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(20);
+	/**
+	 * 检测到的物体个数
+	 */
+	public int nObjectNum;
+
+	/**
+	 * 检测到的物体
+	 */
+	public NetSDKLib.NET_MSG_OBJECT[] stuObjects = (NetSDKLib.NET_MSG_OBJECT[]) new NetSDKLib.NET_MSG_OBJECT()
+			.toArray(128);
+	/**
+	 * stuSceneImage 是否有效
+	 */
+	public int bSceneImage;
+
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+
+	/**
+	 * 规则个数
+	 */
+	public int nRuleCount;
+
+	/**
+	 * 规则类型:"Common":普通睡觉检测,默认值, "HeadCoveredSleep":蒙头睡觉检测
+	 */
+	public RuleTypeByteArr[] szRuleType = (RuleTypeByteArr[]) new RuleTypeByteArr().toArray(16);
+
+	/**
+	 * 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针
+	 */
+	public Pointer pstuImageInfo;
+
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[224];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_HUMAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_HUMAN_INFO.java
new file mode 100644
index 0000000..a101806
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_HUMAN_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_ALARM_SMARTMOTION_HUMAN(智能视频移动侦测事件(人))对应的数据块描述信息
+ * @date 2023/05/15 13:47:59
+ */
+public class DEV_EVENT_SMARTMOTION_HUMAN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能动检区域信息
+	 */
+	public NET_MOTIONDETECT_REGION_INFO[] stuSmartRegion = new NET_MOTIONDETECT_REGION_INFO[32];
+	/**
+	 * 智能动检区域个数
+	 */
+	public int nSmartRegionNum;
+	/**
+	 * 智能动检(人)对象个数
+	 */
+	public int nHumanObjectNum;
+	/**
+	 * 智能动检(人)对象信息
+	 */
+	public NET_SMARTDETECT_HUMAN_OBJECT[] stuHumanObject = new NET_SMARTDETECT_HUMAN_OBJECT[64];
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[1024];
+
+	public DEV_EVENT_SMARTMOTION_HUMAN_INFO() {
+		for (int i = 0; i < stuSmartRegion.length; i++) {
+			stuSmartRegion[i] = new NET_MOTIONDETECT_REGION_INFO();
+		}
+		for (int i = 0; i < stuHumanObject.length; i++) {
+			stuHumanObject[i] = new NET_SMARTDETECT_HUMAN_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_VEHICLE_INFO.java
new file mode 100644
index 0000000..4b22751
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMARTMOTION_VEHICLE_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_ALARM_SMARTMOTION_VEHICLE(智能视频移动侦测事件(车))对应的数据块描述信息
+ * @date 2023/05/15 13:49:36
+ */
+public class DEV_EVENT_SMARTMOTION_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能动检区域信息
+	 */
+	public NET_MOTIONDETECT_REGION_INFO[] stuSmartRegion = new NET_MOTIONDETECT_REGION_INFO[32];
+	/**
+	 * 智能动检区域个数
+	 */
+	public int nSmartRegionNum;
+	/**
+	 * 智能动检(车)对象个数
+	 */
+	public int nVehicleObjectNum;
+	/**
+	 * 智能动检(车)对象信息
+	 */
+	public NET_SMARTDETECT_VEHICLE_OBJECT[] stuVehicleObject = new NET_SMARTDETECT_VEHICLE_OBJECT[64];
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[1024];
+
+	public DEV_EVENT_SMARTMOTION_VEHICLE_INFO() {
+		for (int i = 0; i < stuSmartRegion.length; i++) {
+			stuSmartRegion[i] = new NET_MOTIONDETECT_REGION_INFO();
+		}
+		for (int i = 0; i < stuVehicleObject.length; i++) {
+			stuVehicleObject[i] = new NET_SMARTDETECT_VEHICLE_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java
new file mode 100644
index 0000000..da68901
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SMOKE_INFO.java
@@ -0,0 +1,158 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_SMOKEDETECTION(烟雾报警事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+public class DEV_EVENT_SMOKE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+	 */
+	public int nRuleID;
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NetSDKLib.NET_TIME_EX UTC;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 检测到的物体
+	 */
+	public NetSDKLib.NET_MSG_OBJECT stuObject;
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束
+	 */
+	public byte bEventAction;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[2];
+	/**
+	 * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+	 */
+	public byte byImageIndex;
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+	/**
+	 * 事件触发累计次数, unsigned int 类型
+	 */
+	public int nOccurrenceCount;
+	/**
+	 * 智能事件公共信息
+	 */
+	public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+	/**
+	 * 云台的坐标和放大倍数
+	 */
+	public NetSDKLib.PTZ_SPACE_UNIT stuPtzPosition;
+	/**
+	 * stuSceneImage 是否有效
+	 */
+	public int bSceneImage;
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage;
+	/**
+	 * 车身信息
+	 */
+	public NetSDKLib.NET_MSG_OBJECT stuVehicle;
+	/**
+	 * 触发类型,参考EM_TRIGGER_TYPE
+	 */
+	public int emTriggerType;
+	/**
+	 * 标记抓拍帧
+	 */
+	public int nMark;
+	/**
+	 * 视频分析的数据源地址
+	 */
+	public int nSource;
+	/**
+	 * 视频分析帧序号
+	 */
+	public int nFrameSequence;
+	/**
+	 * 交通车辆信息
+	 */
+	public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+	/**
+	 * 公共信息
+	 */
+	public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+	/**
+	 * 抓拍过程,参考EM_CAPTURE_PROCESS_END_TYPE
+	 */
+	public int emCaptureProcess;
+	/**
+	 * 当前报警通道的横向视场角,单位:度,实际角度乘以100
+	 */
+	public int nCurChannelHFOV;
+	/**
+	 * 当前报警通道的垂直视场角,单位:度,实际角度乘以100
+	 */
+	public int nCurChannelVFOV;
+	/**
+     *  设备的GPS坐标
+     */
+    public NET_GPS_INFO_EX stuGPS;
+
+    /**
+     *  烟雾检测点个数
+     */
+    public int nObjectCount;
+
+    /**
+     *  烟雾检测点信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT_EX2[] stuObjects = (NetSDKLib.NET_MSG_OBJECT_EX2[]) new NetSDKLib.NET_MSG_OBJECT_EX2().toArray(16);
+	/**
+	 * 烟雾颜色,参考EM_SMOKE_COLOR
+	 */
+    public int[]      emSmokeColor = new int[16];                
+    /**
+     *  烟雾颜色有效个数
+     */
+    public int                 nSmokeColorNum;                 
+    /**
+     *  图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针    
+     */
+    public Pointer  pstuImageInfo;				
+    /**
+     *  图片信息个数   
+     */
+    public int	nImageInfoNum;		
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     *  保留字段
+     */
+    public byte[] szReserved = new byte[944];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SNAPBYTIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SNAPBYTIME.java
new file mode 100644
index 0000000..96f315d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_SNAPBYTIME.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_SNAPBYTIME(定时抓图事件)对应数据块描述信息
+ * @origin autoTool
+ * @date 2023/10/26 19:39:31
+ */
+public class DEV_EVENT_SNAPBYTIME extends NetSDKLib.SdkStructure {
+	/**
+	 * / 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * / 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * / 字节对齐
+	 */
+	public byte[] bReserved1 = new byte[4];
+	/**
+	 * / 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * / 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * / 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * / 抓图时间
+	 */
+	public NET_TIME_EX stuSnapTime = new NET_TIME_EX();
+	/**
+	 * / 液位值,单位mm
+	 */
+	public int uLiquidLevel;
+	/**
+	 * / 测距值,单位mm
+	 */
+	public int uDistMeasure;
+	/**
+	 * / 温度值,单位℃
+	 */
+	public int nTemperature;
+	/**
+	 * / 湿度值,单位RH
+	 */
+	public int nHumidity;
+	/**
+	 * / 数据个数
+	 */
+	public int nDataNum;
+	/**
+	 * / 数据列表
+	 */
+	public EVENT_SNAPBYTIME_DATA[] stuDataList = new EVENT_SNAPBYTIME_DATA[20];
+	/**
+	 * / 图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * / 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * null
+	 */
+	public byte[] szReversed = new byte[744 - NetSDKLib.POINTERSIZE];
+
+	public DEV_EVENT_SNAPBYTIME() {
+		for (int i = 0; i < stuDataList.length; i++) {
+			stuDataList[i] = new EVENT_SNAPBYTIME_DATA();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java
new file mode 100644
index 0000000..9fba139
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_STREET_SUNCURE_INFO.java
@@ -0,0 +1,141 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_INTELLI_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.NET_POINT;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 DEV_EVENT_STREET_SUNCURE_INFO (沿街晾晒事件)对应的数据块描述信息
+ * @date 2020/11/06
+ */
+public class DEV_EVENT_STREET_SUNCURE_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[NetSDKLib.NET_COMMON_STRING_128];
+
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+	/**
+	 * 规则检测区域
+	 */
+	public NET_POINT[] DetectRegion = new NET_POINT[NetSDKLib.NET_MAX_DETECT_REGION_NUM];
+
+	/**
+	 * 规则检测区域顶点数
+	 */
+	public int nDetectRegionNum;
+
+	/**
+	 * 检测到的物体
+	 */
+	public NET_MSG_OBJECT[] stuObjects = new NET_MSG_OBJECT[NetSDKLib.HDBJ_MAX_OBJECTS_NUM];
+
+	/**
+	 * 检测到的物体个数
+	 */
+	public int nObjectNum;
+
+	/**
+	 * 智能事件公共信息
+	 */
+	public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+	/**
+	 * 事件触发的预置名称
+	 */
+	public byte[] szPresetName = new byte[NetSDKLib.NET_COMMON_STRING_64];
+
+	/**
+	 * 违法持续时长,单位:秒,缺省值0表示无意义
+	 */
+	public int nViolationDuration;
+
+	/**
+	 * 事件关联ID,同一个物体或图片生成多个事件时SourceID相同
+	 */
+	public byte[] szSourceID = new byte[NetSDKLib.NET_COMMON_STRING_32];
+
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+
+	/**
+	 * 商铺地址
+	 */
+	public byte[] szShopAddress = new byte[64];
+
+	/**
+	 * 全景图图片信息,事件前2~5s抓图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * 图片信息数组,指针对应NET_IMAGE_INFO_EX2数组
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 合成图,指针对应SCENE_IMAGE_INFO_EX数组
+	 */
+	public Pointer pstuMosaicImage;
+	/**
+	 * 合成图个数
+	 */
+	public int nMosaicImageNum;
+	/**
+	 * 事件发生前抓图,指针对应SCENE_IMAGE_INFO_EX数组
+	 */
+	public Pointer pstuAdvanceImage;
+	/**
+	 * 事件发生前抓图个数
+	 */
+	public int nAdvanceImageNum;
+
+	/**
+	 * 保留字节,留待扩展
+	 */
+	public byte[] byReserved = new byte[3228 - NetSDKLib.POINTERSIZE * 3];
+
+	public DEV_EVENT_STREET_SUNCURE_INFO() {
+		for (int i = 0; i < stuObjects.length; ++i) {
+			stuObjects[i] = new NET_MSG_OBJECT();
+		}
+
+		for (int i = 0; i < DetectRegion.length; ++i) {
+			DetectRegion[i] = new NET_POINT();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java
new file mode 100644
index 0000000..141da1c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICACCIDENT_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.EVENT_TRAFFIC_CAR_PART_INFO;
+import com.netsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.netsdk.lib.NetSDKLib.NET_MSG_OBJECT;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.NetSDKLib.POINTERSIZE;
+
+/**
+ * @author 119178
+ * @description 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+public class DEV_EVENT_TRAFFICACCIDENT_INFO extends SdkStructure{
+	/**
+	 * 通道号
+	 */
+	public int                 nChannelID;        
+	/**
+	 * 事件名称
+	 */
+	public byte[]                szName=new byte[128];   
+	/**
+	 * 字节对齐
+	 */
+	public byte[]                bReserved1=new byte[4];  
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double              PTS;   
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX         UTC;   
+	/**
+	 * 事件ID
+	 */
+	public int                 nEventID;             
+	/**
+	 * 检测到的物体个数
+	 */
+	public int                 nObjectNum;                   
+	/**
+	 * 检测到的物体列表
+	 */
+	public NET_MSG_OBJECT[]      stuObjectIDs=(NET_MSG_OBJECT[])new NET_MSG_OBJECT().toArray(16);  
+	/**
+	 * 事件对应文件信息
+	 */
+	public NET_EVENT_FILE_INFO  stuFileInfo;   
+	/**
+	 * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public byte                bEventAction;                              
+	public byte[]                byReserved=new byte[2];
+	/**
+	 * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+	 */
+	public byte               byImageIndex;  
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int               dwSnapFlagMask;     
+	/**
+	 * 交通车辆部分信息
+	 */
+	public EVENT_TRAFFIC_CAR_PART_INFO   stuTrafficCarPartInfo;  
+	/**
+	 * 车道号
+	 */
+	public int                nLane;
+	/**
+	 * 图片信息个数
+	 */
+	public int					nImageInfoNum;
+	/**
+	 * 图片信息数组 {@link com.netsdk.lib.structure.NET_IMAGE_INFO_EX3}
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 公共信息 {@link com.netsdk.lib.NetSDKLib.EVENT_COMM_INFO}
+	 */
+	public Pointer  pstuCommInfo;
+	/**
+	 * 保留字节,留待扩展.
+	 */
+	public byte[]             bReserved=new byte[456-2*POINTERSIZE];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java
new file mode 100644
index 0000000..762a2b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFICTRUCKFORBID_INFO.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.DH_MSG_OBJECT;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TRAFFIC_TRUCKFORBID(货车禁止事件)对应的数据块描述信息
+ * @date 2023/03/17 10:27:24
+ */
+public class DEV_EVENT_TRAFFICTRUCKFORBID_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件组ID,同一辆车抓拍过程内GroupID相同
+     */
+    public int nGroupID;
+    /**
+     * 一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * 一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * UTC时间对应的毫秒数
+     */
+    public int UTCMS;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 车牌信息
+     */
+    public DH_MSG_OBJECT stuObject = new DH_MSG_OBJECT();
+    /**
+     * 车身信息
+     */
+    public DH_MSG_OBJECT stuVehicle = new DH_MSG_OBJECT();
+    /**
+     * 车道号
+     */
+    public int nLane;
+    /**
+     * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+     */
+    public int nSequence;
+    /**
+     * 车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution = new NetSDKLib.NET_RESOLUTION_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1016];
+
+    public DEV_EVENT_TRAFFICTRUCKFORBID_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java
new file mode 100644
index 0000000..06e5bcb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_EVENT_NAME_LEN;
+
+/**
+ * 事件类型 (车间距过小报警事件)对应的数据块描述信息
+ * {@link NetSDKLib#EVENT_IVS_TRAFFIC_CARDISTANCESHORT}
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/12 11:46
+ */
+public class DEV_EVENT_TRAFFIC_CARDISTANCESHORT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 保留字节,为了对齐
+     */
+    public byte[] byReserved = new byte[4];
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[MAX_EVENT_NAME_LEN];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+    /**
+     * 车身信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle;
+    /**
+     * 车道号
+     */
+    public int nLane;
+    /**
+     * 表示抓拍序号,如 3,2,1/0  1 表示抓拍结束,0 表示异常结束
+     */
+    public int nSequence;
+    /**
+     * 车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved1 = new byte[1024];
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java
new file mode 100644
index 0000000..87aa03b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO.java
@@ -0,0 +1,139 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_CAR_MEASUREMENT(交通卡口测量(车辆长、宽、高度、重量等)事件) 对应数据 
+* @date 2022/06/07 09:46:05
+*/
+public class DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+车速,单位km/h
+*/
+public			int					nSpeed;
+/** 
+触发类型 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+*/
+public			int					emTriggerType;
+/** 
+触发时机 {@link com.netsdk.lib.enumeration.EM_TRIGGER_OCCUR_TYPE}
+*/
+public			int					emTriggerOccur;
+/** 
+标记抓拍帧
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+车道号
+*/
+public			int					nLaneID;
+/** 
+红灯开始的时间
+*/
+public NET_TIME_EX stuRedLightStartTime=new NET_TIME_EX();
+/** 
+抓拍过程 {@link com.netsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE}
+*/
+public			int					emCaptureProcess;
+/** 
+卡片信息
+*/
+public NetSDKLib.EVENT_CARD_INFO stuCardInfo=new NetSDKLib.EVENT_CARD_INFO();
+/** 
+车辆行驶方向(相对车道方向) {@link com.netsdk.lib.enumeration.EM_VEHICLE_DRIVING_DIRECTION}
+*/
+public			int					emDrivingDirection;
+/** 
+交通信号灯类型 {@link com.netsdk.lib.enumeration.EM_TRFAFFIC_LIGHT_TYPE}
+*/
+public			int					emLightState;
+/** 
+开闸状态 {@link NetSDKLib.EM_OPEN_STROBE_STATE}
+*/
+public			int					emOpenStrobeState;
+/** 
+抓拍车的位置 {@link NetSDKLib.EM_VEHICLE_DIRECTION}
+*/
+public			int					emVehicleDirection;
+/** 
+主驾驶座位安全带状态 {@link NetSDKLib.NET_SAFEBELT_STATE}
+*/
+public			int					emMainSeat;
+/** 
+副驶座位安全带状态 {@link NetSDKLib.NET_SAFEBELT_STATE}
+*/
+public			int					emSlaveSeat;
+/** 
+车辆信息,记录了车头、车尾车牌号和车牌颜色
+*/
+public EVENT_PLATE_INFO stuPlateInfo=new EVENT_PLATE_INFO();
+/** 
+称重系统车辆信息
+*/
+public			NET_CAR_WEIGHT_INFO					stuCarWeightInfo=new NET_CAR_WEIGHT_INFO();
+/** 
+雷达上报车辆信息
+*/
+public			RADAR_REPORTS_VEHICLE_INFO					stuRadarReportsVehicleInfo=new RADAR_REPORTS_VEHICLE_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+检测到的物体信息
+*/
+public NetSDKLib.DH_MSG_OBJECT stuObject=new NetSDKLib.DH_MSG_OBJECT();
+/** 
+检测到的车辆信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+交通车辆信息
+*/
+public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar=new NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+保留字节
+*/
+public			byte[]					byResersed=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_CAR_MEASUREMENT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO.java
new file mode 100644
index 0000000..cfa8546
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO.java
@@ -0,0 +1,116 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_TRAFFIC_CHANGE_LANE_CONTINUES (机动车连续变道违法事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/07 10:53:35
+*/
+public class DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+nGroupID事件组ID,同一物体抓拍过程内nGroupID相同
+*/
+public			int					nGroupID;
+/** 
+nCountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号
+*/
+public			int					nIndexInGroup;
+/** 
+事件类型掩码, bit0表示报警事件, bit1表示违章事件. 若bit0和bit1都置位则既是报警事件又是违章事件, 无该字段默认该事件是报警事件
+*/
+public			int					nEventType;
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车身信息
+*/
+public	NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+TriggerType:触发类型,0车检器,1雷达,2视频 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+*/
+public			int					emTriggerType;
+/** 
+底层产生的触发抓拍帧标记
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+车速,单位km/h
+*/
+public			int					nSpeed;
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+GPS信息
+*/
+public NetSDKLib.NET_GPS_INFO stuGPSInfo=new NetSDKLib.NET_GPS_INFO();
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+保留字节,留待扩展
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_CHANGE_LANE_CONTINUES_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java
new file mode 100644
index 0000000..2136488
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO.java
@@ -0,0 +1,26 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+  * @author 291189
+  * @version 1.0
+  * @description 事件类型 EVENT_IVS_TRAFFIC_DRIVER_ABNORMAL (驾驶员异常报警事件) 对应的数据块描述信息
+  * @date 2021/11/4
+  */
+
+ public class DEV_EVENT_TRAFFIC_DRIVER_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+/** 通道号*/
+public			int					nChannelID;
+/** 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束*/
+public			int					nAction;
+/** GPS信息*/
+public NetSDKLib.NET_GPS_STATUS_INFO stuGPSStatusInfo=new NetSDKLib.NET_GPS_STATUS_INFO();
+/** 事件发生的时间*/
+public			NET_TIME_EX					UTC=new NET_TIME_EX();
+/** 违章关联视频FTP上传路径*/
+public			byte[]					szVideoPath=new byte[256];
+/** 预留字节*/
+public			byte[]					bReserved=new byte[768];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java
new file mode 100644
index 0000000..d71c9eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ELETAGINFO_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_ELETAGINFO(RFID电子车牌标签事件)对应数据块描述信息 
+* @date 2022/10/13 14:39:18
+*/
+public class DEV_EVENT_TRAFFIC_ELETAGINFO_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+字节对齐
+*/
+public			byte[]					bReserved1=new byte[4];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+0:脉冲 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+RFID电子车牌标签信息
+*/
+public NET_RFIDELETAG_INFO stuRFIDEleTagInfo=new NET_RFIDELETAG_INFO();
+/** 
+返回通道数
+*/
+public			int					nRetChannelNum;
+/** 
+关联的相机通道,通道号从0开始
+*/
+public			int[]					nLinkChannel=new int[16];
+/** 
+保留字节,留待扩展.
+*/
+public			byte[]					bReserved=new byte[956];
+
+public			DEV_EVENT_TRAFFIC_ELETAGINFO_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java
new file mode 100644
index 0000000..d6f0c23
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO.java
@@ -0,0 +1,110 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE (非机动车占用机动车道)对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTORINMOTORROUTE_INFO extends NetSDKLib.SdkStructure{
+	  /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[NetSDKLib.NET_EVENT_NAME_LEN];
+
+    /**
+     *  事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+
+    /**
+     *  保留字节.
+     */
+    public byte[] bReserved1 = new byte[3];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  交通车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+
+    /**
+     *  检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject;
+
+    /**
+     *  车身信息 
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuVehicle;
+
+    /**
+     *  抓图标志(按位),具体见NET_RESERVED_COMMON 
+     */
+    public int dwSnapFlagMask;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  报警对应的原始录像文件信息
+     */
+    public byte[] szRecordFile = new byte[NetSDKLib.NET_COMMON_STRING_128];
+
+    /**
+     *  对应车道号
+     */
+    public int nLane;
+
+    /**
+     *  表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束 
+     */
+    public int nSequence;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+
+    /**
+     *  是否有非机动车对象
+     */
+    public int bHasNonMotor;
+
+    /**
+     *  非机动车对象
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java
new file mode 100644
index 0000000..beba110
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA (非机动车装载伞具事件) 对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  智能事件公共信息 
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+    /**
+     *  抓图标志(按位),具体见NET_RESERVED_COMMON 
+     */
+    public int dwSnapFlagMask;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject;
+
+    /**
+     *  非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  车道号
+     */
+    public int nLane;
+
+    /**
+     *  抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+     */
+    public int nSequence;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+
+    /**
+     *  交通车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+
+    /**
+     *  保留字节 
+     */
+    public byte[] byReserved = new byte[1368];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java
new file mode 100644
index 0000000..00ff4e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR (交通非机动车事件检测)对应的数据块描述信息
+ * @date 2022/07/29 11:20:49
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTOR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleId;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 触发类型 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 是否有非机动车信息
+     */
+    public int bNonMotorInfo;
+    /**
+     * 非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor = new NetSDKLib.VA_OBJECT_NONMOTOR();
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+
+    public DEV_EVENT_TRAFFIC_NONMOTOR_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java
new file mode 100644
index 0000000..4eb462c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD (非机动车超载事件) 对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTOR_OVERLOAD_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  智能事件公共信息 
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+    /**
+     *  抓图标志(按位),具体见 { @link NET_RESERVED_COMMON}
+     */
+    public int dwSnapFlagMask;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  车道号
+     */
+    public int nLane;
+
+    /**
+     *  抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+     */
+    public int nSequence;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+
+    /**
+     *  交通车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+
+    /**
+     *  保留字节 
+     */
+    public byte[] byReserved = new byte[2048];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java
new file mode 100644
index 0000000..10efd1e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_RUN_REDLIGHT (非机动车闯红灯事件)对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTOR_RUN_REDLIGHT_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  0:脉冲事件
+     */
+    public int nAction;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  视频帧序号
+     */
+    public int nSequence;
+
+    /**
+     *  车道号
+     */
+    public int nLane;
+
+    /**
+     *  非机动车
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  预留字段 
+     */
+    public byte[] byReserved = new byte[1016];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java
new file mode 100644
index 0000000..382f2c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT (非机动车未戴安全帽事件) 对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  智能事件公共信息 
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+
+    /**
+     *  抓图标志(按位),具体见NET_RESERVED_COMMON 
+     */
+    public int dwSnapFlagMask;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  车道号
+     */
+    public int nLane;
+
+    /**
+     *  抓拍序号,如3-2-1/0,1表示抓拍正常结束,0表示抓拍异常结束
+     */
+    public int nSequence;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+
+    /**
+     *  交通车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+
+    /**
+     *  保留字节 
+     */
+    public byte[] byReserved = new byte[2048];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java
new file mode 100644
index 0000000..8a9dfc7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO.java
@@ -0,0 +1,115 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_NON_MOTOR_RETROGRADE(非机动车逆行事件)对应的数据块描述信息
+ * @date 2021/10/23
+ */
+public class DEV_EVENT_TRAFFIC_NON_MOTOR_RETROGRADE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  0:脉冲事件
+     */
+    public int nAction;
+
+    /**
+     *  事件名称 
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID 
+     */
+    public int nEventID;
+
+    /**
+     *  规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+     */
+    public int nRuleID;
+
+    /**
+     *  触发类型
+     */
+    public int emTriggerLine;
+
+    /**
+     *  标记抓拍帧
+     */
+    public int nMark;
+
+    /**
+     *  视频分析的数据源地址
+     */
+    public int nSource;
+
+    /**
+     *  视频分析帧序号
+     */
+    public int nFrameSequence;
+
+    /**
+     *  车道号
+     */
+    public int nLaneID;
+
+    /**
+     *  车速(单位:km/h) 
+     */
+    public int nSpeed;
+
+    /**
+     *  抓拍过程
+     */
+    public int emCaptureProcess;
+
+    /**
+     *  公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo;
+
+    /**
+     *  是否有非机动车信息
+     */
+    public int bNonMotorInfoEx;
+
+    /**
+     *  非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor;
+
+    /**
+     *  抓图标志(按位),具体见NET_RESERVED_COMMON 
+     */
+    public int dwSnapFlagMask;
+
+    /**
+     *  对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved = new byte[1012];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO.java
new file mode 100644
index 0000000..c1d0906
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO.java
@@ -0,0 +1,100 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_OVERTAKE_ONRIGHT (右侧超车事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/07 10:58:33
+*/
+public class DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+GroupID事件组ID,同一物体抓拍过程内GroupID相同
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+字节对齐
+*/
+public			byte[]					szReserved1=new byte[4];
+/** 
+车牌信息
+*/
+public			NetSDKLib.NET_MSG_OBJECT					stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车身信息
+*/
+public			NetSDKLib.NET_MSG_OBJECT					stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public			NetSDKLib.EVENT_COMM_INFO	stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+事件对应文件信息
+*/
+public			NetSDKLib.NET_EVENT_FILE_INFO  stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_OVERTAKE_ONRIGHT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java
new file mode 100644
index 0000000..ca55854
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO.java
@@ -0,0 +1,53 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+ /**
+  * @author 291189
+  * @version 1.0
+  * @description 事件类型 EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE (车位压线事件)对应的数据块描述信息
+
+  * @date 2021/10/26
+  */
+ public class DEV_EVENT_TRAFFIC_PARKINGSPACEOVERLINE_INFO extends NetSDKLib.SdkStructure {
+  /** 通道号*/
+  public			int					nChannelID;
+  /** 事件名称*/
+  public			byte[]					szName=new byte[128];
+  /** 时间戳(单位是毫秒)*/
+  public			int					PTS;
+  /** 事件发生的时间*/
+  public			NET_TIME_EX			UTC=new NET_TIME_EX();
+  /** 事件ID*/
+  public			int					nEventID;
+  /** 对应车道号*/
+  public			int					nLane;
+  /** 检测到的物体*/
+  public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+  /** 车身信息*/
+  public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+  /** 事件对应文件信息*/
+  public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+  /** 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束*/
+  public			int					nSequence;
+  /** 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;*/
+  public			byte					byEventAction;
+  /** 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始*/
+  public			byte					byImageIndex;
+  /** */
+  public			byte[]					byReserved1=new byte[2];
+  /** 抓图标志(按位),具体见NET_RESERVED_COMMON*/
+  public			int					dwSnapFlagMask;
+  /** 对应图片的分辨率*/
+  public NetSDKLib.NET_RESOLUTION_INFO stuResolution=new NetSDKLib.NET_RESOLUTION_INFO();
+  /** 交通车辆信息*/
+  public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+  /** 停车场信息*/
+  public NetSDKLib.DEV_TRAFFIC_PARKING_INFO stTrafficParingInfo=new NetSDKLib.DEV_TRAFFIC_PARKING_INFO();
+  /** 保留字节*/
+  public			byte[]					byReserved=new byte[384];
+  /** 公共信息*/
+  public NetSDKLib.EVENT_COMM_INFO stCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+  /** 事件公共扩展字段结构体*/
+  public NET_EVENT_INFO_EXTEND  stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO.java
new file mode 100644
index 0000000..5396f62
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description  事件类型EVENT_IVS_TRAFFIC_PARKING_BACKING (出入口倒车驶离事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/11/21 08:54:17
+ */
+public class DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 0:脉冲
+     */
+    public int nAction;
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 事件ID
+     */
+    public int nEventID;
+    /**
+     * / nGroupID事件组ID,同一物体抓拍过程内nGroupID相同
+     */
+    public int nGroupID;
+    /**
+     * / nCountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * / IndexInGroup一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * / 车牌信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * / 车身信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuVehicle = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * / TriggerType:触发类型,0车检器,1雷达,2视频 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * / 底层产生的触发抓拍帧标记
+     */
+    public int nMark;
+    /**
+     * / 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * / 对应车道号
+     */
+    public int nLane;
+    /**
+     * / 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+     */
+    public int nSequence;
+    /**
+     * / 车速,单位km/h
+     */
+    public int nSpeed;
+    /**
+     * / 交通车辆信息
+     */
+    public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+    /**
+     * / 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * / 保留字节,留待扩展
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public DEV_EVENT_TRAFFIC_PARKING_BACKING_INFO() {
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java
new file mode 100644
index 0000000..9135c72
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_TRAFFIC_PARKING_STATISTICS(车位统计事件) 对应的数据描述信息
+ * @date 2021/12/18
+ */
+public class DEV_EVENT_TRAFFIC_PARKING_STATISTICS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  0:脉冲
+     */
+    public int nAction;
+
+    /**
+     *  通道号
+     */
+    public int nChannel;
+
+    /**
+     *  事件名称
+     */
+    public byte[] szName = new byte[128];
+
+    /**
+     *  时间戳(单位是毫秒)
+     */
+    public double PTS;
+
+    /**
+     *  事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  事件ID
+     */
+    public int nEventID;
+
+    /**
+     *  区域模式统计信息 区域;emStatisticsMode为 EM_STATISTICS_MODE_AREA 时有效
+     */
+    public NET_AREA_MODE_INFO[] stuAreaModeInfo = (NET_AREA_MODE_INFO[]) new NET_AREA_MODE_INFO().toArray(5);
+    /**
+     *  区域模式统计信息个数
+     */
+    public int nAreaModeInfoNum;
+
+    /**
+     *  车位模式统计信息,每个元素表示一个车位;emStatisticsMode为 EM_STATISTICS_MODE_SPACE 时有效
+     */
+    public NET_SPACE_MODE_INFO[] stuSpaceModeInfo = (NET_SPACE_MODE_INFO[]) new NET_SPACE_MODE_INFO().toArray(99);
+    /**
+     *  车位模式统计信息个数
+     */
+    public int nSpaceModeInfoNum;
+
+    /**
+     *  统计模式,参考{ @link EM_STATISTICS_MODE }
+     */
+    public int emStatisticsMode;
+    
+    /**
+     *  区域或车位更新信息
+     */
+    public NET_UPDATE_INFO[] stuUpdateInfo = (NET_UPDATE_INFO[]) new NET_UPDATE_INFO().toArray(99);
+    
+    /**
+     *  区域或车位更新信息个数
+     */
+    public int nUpdateInfoNum;
+  
+	/**
+	 * 图片信息数组 ,结构体NET_IMAGE_INFO_EX2数组指针
+	 */
+	public Pointer pstuImageInfo;
+
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND   stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1008];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java
new file mode 100644
index 0000000..8bf3470
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.text.NumberFormat;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 事件类型
+ * {@link com.netsdk.lib.enumeration.EM_EVENT_IVS_TYPE#EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT}
+ * (交通-行人闯红灯事件)对应的数据块描述信息
+ * @date 2020/10/14
+ */
+public class DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+
+    /**
+     * 对应车道号
+     */
+    public int nLane;
+    /**
+     * 行人信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+     */
+    public int nSequence;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    public byte[] byReserved = new byte[2];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 抓图标志(按位),具体见
+     * {@link NetSDKLib.NET_RESERVED_COMMON}
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+
+    @Override
+    public String toString() {
+        NumberFormat nf=NumberFormat.getInstance();
+        nf.setGroupingUsed(false);
+        return "行人闯红灯事件,DEV_EVENT_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO{" +
+                "通道号=" + nChannelID +
+                ", 事件名称=" + new String(szName).trim() +
+                ", 时间戳=" + nf.format(PTS) +
+                ", 事件发生的时间=" + UTC.toStringTime() +
+                ", 事件ID=" + nEventID +
+                ", 车道号=" + nLane +
+                ", 行人信息={ nAction:"+stuObject.nAction+",szObjectType=" + new String(stuObject.szObjectType).trim()+",szObjectSubType:"+new String(stuObject.szObjectSubType).trim() +
+                "}, 文件信息=" + stuFileInfo +
+                ", 抓拍序号=" + nSequence +
+                ", 事件动作=" + bEventAction +
+                ", 图片序号=" + byImageIndex +
+                ", 抓图标志=" + dwSnapFlagMask +
+                ", 图片的分辨率=" + stuResolution.toString() +
+                ", 公共信息= { emSnapCategory:" + stCommInfo.emSnapCategory +'}'+
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO.java
new file mode 100644
index 0000000..e0b9676
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO.java
@@ -0,0 +1,98 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_QUEUEJUMP (车辆加塞事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/07 10:27:58
+*/
+public class DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+保留字节对齐
+*/
+public			byte[]					Reserved=new byte[4];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车身信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+*/
+public			byte					byEventAction;
+/** 
+图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+*/
+public			byte					byImageIndex;
+
+public			byte[]					byReserved1=new byte[2];
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+对应图片的分辨率
+*/
+public NetSDKLib.NET_RESOLUTION_INFO stuResolution=new NetSDKLib.NET_RESOLUTION_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+事件类型掩码,bit0表示报警事件,bit1表示违章事件。若bit0和bit1都置位则既是报警事件又是违章事件,默认bit0置位,报警事件
+*/
+public			int					nEventType;
+/** 
+事件公共扩展字段结构体
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1020];
+
+public DEV_EVENT_TRAFFIC_QUEUEJUMP_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java
new file mode 100644
index 0000000..5c1f91c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO.java
@@ -0,0 +1,86 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 交通事故事件 EVENT_IVS_TRAFFIC_REAREND_ACCIDENT 对应数据
+ * @date 2022/07/29 11:20:55
+ */
+public class DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 标记抓拍帧
+     */
+    public int nMark;
+    /**
+     * 视频分析的数据源地址
+     */
+    public int nSource;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 车道号
+     */
+    public int nLaneID;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 抓拍过程 {@link com.netsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE}
+     */
+    public int emCaptureProcess;
+    /**
+     * 事件对应的文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 交通车辆信息
+     */
+    public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+    /**
+     * 检测到的物体信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = new NetSDKLib.NET_MSG_OBJECT[50];
+    /**
+     * 返回检测到的个数
+     */
+    public int nObjectNum;
+    /**
+     * 保留字节
+     */
+    public byte[] byResersed = new byte[1020];
+
+    public DEV_EVENT_TRAFFIC_REAREND_ACCIDENT_INFO() {
+       for (int i = 0; i < stuObjects.length; i++) {
+           stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT();
+       }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java
new file mode 100644
index 0000000..b96cd18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 事件类型(道路安全预警)对应的数据块描述信息
+ * {@link NetSDKLib#EVENT_IVS_TRAFFIC_ROAD_ALERT}
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/12 15:03
+ */
+public class DEV_EVENT_TRAFFIC_ROAD_ALERT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject;
+    /**
+     * 车身信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle;
+    /**
+     * 交通车辆信息
+     */
+    public NetSDKLib.DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+    /**
+     * 事件组ID,同一辆车抓拍过程内GroupID相同
+     */
+    public int nGroupID;
+    /**
+     * 一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * 一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * 对应车道号
+     */
+    public int nLane;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stFileInfo;
+    /**
+     * 表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束
+     */
+    public int nSequence;
+    /**
+     * 预留字段
+     */
+    public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java
new file mode 100644
index 0000000..271ddcf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO.java
@@ -0,0 +1,73 @@
+package com.netsdk.lib.structure;
+
+/**
+ * @author 119178
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+public class DEV_EVENT_TRAFFIC_ROAD_BLOCK_INFO extends SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 事件对应文件信息
+	 */
+	public NET_EVENT_FILE_INFO stuFileInfo;
+	/**
+	 * 物体包围盒
+	 */
+	public NET_RECT stuBoundingBox;
+	/**
+	 * 车道号
+	 */
+	public int nLane;
+	/**
+	 * 公共信息
+	 */
+	public EVENT_COMM_INFO stCommInfo;
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+
+	/**
+	 * 图片信息数组 ,指针对应结构体NET_IMAGE_INFO_EX2数组
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 预留字节
+	 */
+	public byte[] bReserved = new byte[4088 - NetSDKLib.POINTERSIZE];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java
new file mode 100644
index 0000000..ddf5fcd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO.java
@@ -0,0 +1,73 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.EVENT_COMM_INFO;
+import com.netsdk.lib.NetSDKLib.NET_EVENT_FILE_INFO;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 119178
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件)对应的数据块描述信息
+ * @date 2020/12/21
+ */
+
+public class DEV_EVENT_TRAFFIC_ROAD_CONSTRUCTION_INFO extends SdkStructure{
+	/**
+	 * 通道号
+	 */
+	public int                 nChannelID;    
+	/**
+	 * 事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束
+	 */
+	public int					nAction;							       
+	/**
+	 * 事件名称
+	 */
+	public byte[]                szName=new byte[128];      
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double              PTS;  
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX         UTC;      
+	/**
+	 * 事件ID
+	 */
+	public int                nEventID;     
+	/**
+	 * 事件对应文件信息
+	 */
+	public NET_EVENT_FILE_INFO	stuFileInfo;							   
+	/**
+	 * 物体包围盒
+	 */
+	public NET_RECT stuBoundingBox;
+	/**
+	 * 车道号
+	 */
+	public int                nLane;    
+	/**
+	 * 公共信息
+	 */
+	public EVENT_COMM_INFO     stCommInfo;    
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int               dwSnapFlagMask;   
+	/**
+	 * 图片信息数组,指针对应结构体NET_IMAGE_INFO_EX2数组
+	 */
+	public Pointer           pstuImageInfo; 
+	/**
+	 * 图片信息个数
+	 */
+	public int				nImageInfoNum;
+	/**
+	 * 预留字节
+	 */
+	public byte[]         bReserved = new byte[4088 - NetSDKLib.POINTERSIZE];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO.java
new file mode 100644
index 0000000..868ffb0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO.java
@@ -0,0 +1,120 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_SERPENTINE_CHANGE_LANE (蛇形变道事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/07 10:45:10
+*/
+public class DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件动作 0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+GroupID事件组ID,同一物体抓拍过程内GroupID相同
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件类型掩码,bit0表示报警事件,bit1表示违章事件。若bit0和bit1都置位则既是报警事件又是违章事件,默认bit0置位,报警事件
+*/
+public			int					nEventType;
+/** 
+触发类型 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+*/
+public			int					emTriggerType;
+/** 
+用于标记抓拍帧
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+车速,单位km/h
+*/
+public			int					nSpeed;
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车身信息
+*/
+public	NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+GPS位置信息
+*/
+public NetSDKLib.NET_GPS_INFO stuGPSInfo=new NetSDKLib.NET_GPS_INFO();
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_SERPENTINE_CHANGE_LANE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java
new file mode 100644
index 0000000..2e08a5f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TRAFFIC_SPECIAL_VEHICLE_DETECT (特殊车辆检测)对应的数据块描述信息
+ * @date 2022/11/29 14:55:30
+ */
+public class DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleId;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 检测到的车辆信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 触发类型 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1020];
+
+    public DEV_EVENT_TRAFFIC_SPECIAL_VEHICLE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java
new file mode 100644
index 0000000..b7f0ac9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_SPEED_DROP_SHARPLY (车辆速度骤减)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/02/18 11:13:44
+*/
+public class DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件组ID
+*/
+public			int					nGroupID;
+/** 
+一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号
+*/
+public			int					nIndexInGroup;
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车辆信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+非机动车信息
+*/
+public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor=new NetSDKLib.VA_OBJECT_NONMOTOR();
+/** 
+车道号
+*/
+public			int					nLane;
+/** 
+抓包序号
+*/
+public			int					nSequence;
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_SPEED_DROP_SHARPLY_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java
new file mode 100644
index 0000000..4983d78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_THROW_INFO.java
@@ -0,0 +1,91 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_EVENT_NAME_LEN;
+
+/**
+ * @author : 260611
+ * @description : 事件类型 EVENT_IVS_TRAFFIC_THROW(交通抛洒物品事件)对应数据块描述信息
+ * @since : Created in 2022/01/18 14:34
+ */
+
+public class DEV_EVENT_TRAFFIC_THROW_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[NET_EVENT_NAME_LEN];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[8];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public int PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 对应图片的分辨率
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO stuResolution = new NetSDKLib.NET_RESOLUTION_INFO();
+    /**
+     * 抓图标志(按位),0位:"*",1位:"Timing",2位:"Manual",3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     *
+     */
+    public byte[] bReserved2 = new byte[2];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 对应车道号
+     */
+    public int nLane;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 智能事件公共信息
+     */
+    public NetSDKLib.EVENT_INTELLI_COMM_INFO stuIntelliCommInfo = new NetSDKLib.EVENT_INTELLI_COMM_INFO();
+    /**
+     * 交通车辆部分信息
+     */
+    public NetSDKLib.EVENT_TRAFFIC_CAR_PART_INFO stuTrafficCarPartInfo = new NetSDKLib.EVENT_TRAFFIC_CAR_PART_INFO();
+    /**
+     * GPS信息 
+     */
+    public NetSDKLib.NET_GPS_INFO stuGPSInfo = new NetSDKLib.NET_GPS_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[340];
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java
new file mode 100644
index 0000000..db1c452
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.java
@@ -0,0 +1,289 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description TrafficCar 交通车辆信息
+ * @date 2022/07/29 11:20:55
+ */
+public class DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[32];
+    /**
+     * 号牌类型 "Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌
+     * "Police" 警牌;"SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌
+     * "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌
+     */
+    public byte[] szPlateType = new byte[32];
+    /**
+     * 车牌颜色    "Blue","Yellow", "White","Black","YellowbottomBlackText","BluebottomWhiteText","BlackBottomWhiteText","ShadowGreen","YellowGreen"
+     */
+    public byte[] szPlateColor = new byte[32];
+    /**
+     * 车身颜色    "White", "Black", "Red", "Yellow", "Gray", "Blue","Green"
+     */
+    public byte[] szVehicleColor = new byte[32];
+    /**
+     * 速度    单位Km/H
+     */
+    public int nSpeed;
+    /**
+     * 触发的相关事件    参见事件列表Event List,只包含交通相关事件。
+     */
+    public byte[] szEvent = new byte[64];
+    /**
+     * 违章代码    详见TrafficGlobal.ViolationCode
+     */
+    public byte[] szViolationCode = new byte[32];
+    /**
+     * 违章描述
+     */
+    public byte[] szViolationDesc = new byte[64];
+    /**
+     * 速度下限
+     */
+    public int nLowerSpeedLimit;
+    /**
+     * 速度上限
+     */
+    public int nUpperSpeedLimit;
+    /**
+     * 限高速宽限值    单位:km/h
+     */
+    public int nOverSpeedMargin;
+    /**
+     * 限低速宽限值    单位:km/h
+     */
+    public int nUnderSpeedMargin;
+    /**
+     * 车道    参见事件列表Event List中卡口和路口事件。
+     */
+    public int nLane;
+    /**
+     * 车辆大小,-1表示未知,否则按位
+     * 第0位:"Light-duty", 小型车
+     * 第1位:"Medium", 中型车
+     * 第2位:"Oversize", 大型车
+     * 第3位:"Minisize", 微型车
+     * 第4位:"Largesize", 长车
+     */
+    public int nVehicleSize;
+    /**
+     * 车辆长度    单位米
+     */
+    public float fVehicleLength;
+    /**
+     * 抓拍方式    0-未分类,1-全景,2-近景,4-同向抓拍,8-反向抓拍,16-号牌图像
+     */
+    public int nSnapshotMode;
+    /**
+     * 本地或远程的通道名称,可以是地点信息    来源于通道标题配置ChannelTitle.Name
+     */
+    public byte[] szChannelName = new byte[32];
+    /**
+     * 本地或远程设备名称    来源于普通配置General.MachineName
+     */
+    public byte[] szMachineName = new byte[256];
+    /**
+     * 机器分组或叫设备所属单位    默认为空,用户可以将不同的设备编为一组,便于管理,可重复。
+     */
+    public byte[] szMachineGroup = new byte[256];
+    /**
+     * 道路编号
+     */
+    public byte[] szRoadwayNo = new byte[64];
+    /**
+     * 行驶方向 , "DrivingDirection" : ["Approach", "", ""],
+     * "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,
+     * 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
+     * 下行的两个地点
+     */
+    public byte[] szDrivingDirection = new byte[3 * 256];
+    /**
+     * 设备地址,OSD叠加到图片上的,来源于配置TrafficSnapshot.DeviceAddress,'\0'结束
+     */
+    public Pointer szDeviceAddress;
+    /**
+     * 车辆标识, 例如 "Unknown"-未知, "Audi"-奥迪, "Honda"-本田 ...
+     */
+    public byte[] szVehicleSign = new byte[32];
+    /**
+     * 由车检器产生抓拍信号冗余信息
+     */
+    public DH_SIG_CARWAY_INFO_EX stuSigInfo = new DH_SIG_CARWAY_INFO_EX();
+    /**
+     * 设备部署地点
+     */
+    public Pointer szMachineAddr;
+    /**
+     * 当前图片曝光时间,单位为毫秒
+     */
+    public float fActualShutter;
+    /**
+     * 当前图片增益,范围为0~100
+     */
+    public byte byActualGain;
+    /**
+     * 车道方向,0-南向北 1-西南向东北 2-西向东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-未知 9-自定义
+     */
+    public byte byDirection;
+
+    public byte[] byReserved = new byte[2];
+    /**
+     * 详细地址, 作为szDeviceAddress的补充
+     */
+    public Pointer szDetailedAddress;
+    /**
+     * 图片防伪码
+     */
+    public byte[] szDefendCode = new byte[64];
+    /**
+     * 关联禁止名单数据库记录默认主键ID, 0,无效;> 0,禁止名单数据记录
+     */
+    public int nTrafficBlackListID;
+    /**
+     * 车身颜色RGBA
+     */
+    public NET_COLOR_RGBA stuRGBA = new NET_COLOR_RGBA();
+    /**
+     * 抓拍时间
+     */
+    public NET_TIME stSnapTime = new NET_TIME();
+    /**
+     * 记录编号
+     */
+    public int nRecNo;
+    /**
+     * 自定义车位号(停车场用)
+     */
+    public byte[] szCustomParkNo = new byte[33]; 
+
+    public byte[] byReserved1 = new byte[3];
+    /**
+     * 车板位号
+     */
+    public int nDeckNo;
+    /**
+     * 空闲车板数量
+     */
+    public int nFreeDeckCount;
+    /**
+     * 占用车板数量
+     */
+    public int nFullDeckCount;
+    /**
+     * 总共车板数量
+     */
+    public int nTotalDeckCount;
+    /**
+     * 违章名称
+     */
+    public byte[] szViolationName = new byte[64];
+    /**
+     * 车重(单位 Kg)
+     */
+    public int nWeight;
+    /**
+     * 自定义车道方向,byDirection为9时有效
+     */
+    public byte[] szCustomRoadwayDirection = new byte[32];
+    /**
+     * 物理车道号,取值0到5
+     */
+    public byte byPhysicalLane;
+
+    public byte[] byReserved2 = new byte[3];
+    /**
+     * 车辆行驶方向 {@link com.netsdk.lib.enumeration.EM_TRAFFICCAR_MOVE_DIRECTION}
+     */
+    public int emMovingDirection;
+    /**
+     * 对应电子车牌标签信息中的过车时间(ThroughTime)
+     */
+    public NET_TIME stuEleTagInfoUTC = new NET_TIME();
+    /**
+     * 车窗包围盒,0~8191
+     */
+    public NET_RECT stuCarWindowBoundingBox = new NET_RECT();
+    /**
+     * 允许名单信息
+     */
+    public NetSDKLib.NET_TRAFFICCAR_WHITE_LIST stuWhiteList = new NetSDKLib.NET_TRAFFICCAR_WHITE_LIST();
+    /**
+     * 车辆类型 {@link com.netsdk.lib.enumeration.EM_TRAFFICCAR_CAR_TYPE}
+     */
+    public int emCarType;
+    /**
+     * 车道类型 {@link com.netsdk.lib.enumeration.EM_TRAFFICCAR_LANE_TYPE}
+     */
+    public int emLaneType;
+    /**
+     * 车系年款翻译后文本内容
+     */
+    public byte[] szVehicleBrandYearText = new byte[64];
+    /**
+     * 车辆子类型
+     */
+    public byte[] szCategory = new byte[32];
+    /**
+     * 禁止名单信息
+     */
+    public NetSDKLib.NET_TRAFFICCAR_BLACK_LIST stuBlackList = new NetSDKLib.NET_TRAFFICCAR_BLACK_LIST();
+    /**
+     * 车流量方向 {@link NetSDKLib.EM_VEHICLE_DIRECTION}
+     */
+    public int emFlowDirection;
+    /**
+     * 收费公路车辆通行费车型分类 {@link com.netsdk.lib.enumeration.EM_TOLLS_VEHICLE_TYPE}
+     */
+    public int emTollsVehicleType;
+    /**
+     * 轴型代码,参考轴型国标 0代表其他
+     */
+    public int nAxleType;
+    /**
+     * 车轴数量
+     */
+    public int nAxleCount;
+    /**
+     * 车轮数量
+     */
+    public int nWheelNum;
+    /**
+     * 车身抠图
+     */
+    public NET_TRAFFICCAR_ORIGINAL_VEHICLE stuOriginalVehicle = new NET_TRAFFICCAR_ORIGINAL_VEHICLE();
+    /**
+     * 按功能划分的车辆类型 {@link NetSDKLib.EM_VEHICLE_TYPE_BY_FUNC}
+     */
+    public int emVehicleTypeByFunc;
+    /**
+     * 车辆子品牌
+     */
+    public short nSunBrand;
+    /**
+     * 车辆年款
+     */
+    public short nBrandYear;
+    /**
+     * 交通灯类型,仅在EVENT_IVS_TRAFFIC_RUNREDLIGHT中有效, 0;未知, 1:箭头灯, 2:圆形灯
+     */
+    public int nTrafficLightType;
+    /**
+     * 车牌属性 {@link com.netsdk.lib.enumeration.EM_PLATE_ATTRIBUTE}
+     */
+    public int emPlateAttribute;
+    /**
+     * 交通车辆信息扩展, refer to {@link com.netsdk.lib.structure.NET_TRAFFICCAR_INFO_EXTERN}
+     */
+    public Pointer pTrafficInfoExtern;
+    /**
+     * 保留字节,留待扩展
+     */
+    public byte[] bReserved = new byte[132 - NetSDKLib.POINTERSIZE];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO.java
new file mode 100644
index 0000000..6b86206
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO.java
@@ -0,0 +1,100 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_TRUCK_OCCUPIED (大车占道事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/07 11:04:00
+*/
+public class DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+GroupID事件组ID,同一物体抓拍过程内GroupID相同
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+字节对齐
+*/
+public			byte[]					szReserved1=new byte[4];
+/** 
+车牌信息
+*/
+public			NetSDKLib.NET_MSG_OBJECT					stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车身信息
+*/
+public			NetSDKLib.NET_MSG_OBJECT					stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public			NetSDKLib.EVENT_COMM_INFO					stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+事件对应文件信息
+*/
+public			NetSDKLib.NET_EVENT_FILE_INFO					stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+抓图标志(按位),具体见NET_RESERVED_COMMON
+*/
+public			int					dwSnapFlagMask;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public DEV_EVENT_TRAFFIC_TRUCK_OCCUPIED_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_BC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_BC.java
new file mode 100644
index 0000000..7e7aeb3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_BC.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.NetSDKLib.POINTERSIZE;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_TRAFFIC_VEHICLE_BC(飙车事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/09/06 18:56:07
+*/
+public class DEV_EVENT_TRAFFIC_VEHICLE_BC extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+车牌信息
+*/
+public NetSDKLib.DH_MSG_OBJECT stuObject=new NetSDKLib.DH_MSG_OBJECT();
+/** 
+车身信息
+*/
+public	NetSDKLib.DH_MSG_OBJECT	stuVehicle=new NetSDKLib.DH_MSG_OBJECT();
+/** 
+交通车辆信息
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+事件组ID,同一辆车抓拍过程内GroupID相同
+*/
+public			int					nGroupID;
+/** 
+一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号
+*/
+public			int					nIndexInGroup;
+/** 
+对应车道号
+*/
+public			int					nLane;
+/** 
+表示抓拍序号,如3,2,1. 1表示抓拍结束,0表示异常结束
+*/
+public			int					nSequence;
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}
+*/
+public Pointer pstuImageInfo;
+/** 
+图片信息个数
+*/
+public			int					nImageInfoNum;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[1020-POINTERSIZE];
+
+public DEV_EVENT_TRAFFIC_VEHICLE_BC(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java
new file mode 100644
index 0000000..3061c5c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_CLEANLINESS (交通车辆清洁度检测事件检测)对应的数据块描述信息
+ * @since : Created in 2022/01/18 14:34
+ */
+
+public class DEV_EVENT_TRAFFIC_VEHICLE_CLEANLINESS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleId;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 检测到的车辆信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuVehicle = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 触发类型
+     */
+    public int emTriggerType;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 清洁度阀值
+     */
+    public int nCleanValue;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java
new file mode 100644
index 0000000..dd2c2d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE (占用应急车道事件)对应的数据块描述信息
+ * @date 2022/11/29 15:05:17
+ */
+public class DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲事件
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public int PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 对应车道号
+     */
+    public int nLane;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuObject = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved1 = new byte[4];
+    /**
+     * 车身信息
+     */
+    public NetSDKLib.DH_MSG_OBJECT stuVehicle = new NetSDKLib.DH_MSG_OBJECT();
+    /**
+     * 交通车辆信息
+     */
+    public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved2 = new byte[4];
+    /**
+     * 非机动车对象
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor = new NetSDKLib.VA_OBJECT_NONMOTOR();
+    /**
+     * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+     */
+    public int nSequence;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 预留字段
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public DEV_EVENT_TRAFFIC_VEHICLE_IN_EMERGENCY_LANE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java
new file mode 100644
index 0000000..b7cf1d0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRAFFIC_VISIBILITY_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TRAFFIC_VISIBILITY (交通能见度事件检测)对应的数据块描述信息
+ * @date 2022/07/29 11:20:58
+ */
+public class DEV_EVENT_TRAFFIC_VISIBILITY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位:毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleId;
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+    /**
+     * 检测到的车牌信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 触发类型 {@link com.netsdk.lib.enumeration.EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 公共信息
+     */
+    public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+    /**
+     * 能见程度(表示距离范围)单位:米
+     */
+    public int nVisibility;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1020];
+
+    public DEV_EVENT_TRAFFIC_VISIBILITY_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO.java
new file mode 100644
index 0000000..5adc3fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO.java
@@ -0,0 +1,98 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_TRASH_WITHOUT_COVER_DETECTION
+ *              (垃圾桶未盖盖子检测事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/12/01 11:34:34
+ */
+public class DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * / 事件动作, 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * / 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * / 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * / 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * / 智能事件所属大类 {@link NetSDKLib.EM_SCENE_CLASS_TYPE}
+	 */
+	public int emClassType;
+	/**
+	 * / 规则ID, 用于标示哪个规则触发的事件
+	 */
+	public int nRuleID;
+	/**
+	 * / 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * / 事件组ID,同一物体抓拍过程内GroupID相同
+	 */
+	public int nGroupID;
+	/**
+	 * / 一个事件组内的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * / 一个事件组内的抓拍序号, 从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * / 事件触发的预置点号,从1开始, 0 表示无效
+	 */
+	public int nPresetID;
+	/**
+	 * / 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * / 检测到的物体个数
+	 */
+	public int nObjectNum;
+	/**
+	 * / 检测到的物体
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[128];
+	/**
+	 * / 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * / 图片信息数组
+	 */
+	public NET_IMAGE_INFO_EX2[] stuImageInfo = new NET_IMAGE_INFO_EX2[32];
+	/**
+	 * / 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * / 保留字节,留待扩展.
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public DEV_EVENT_TRASH_WITHOUT_COVER_DETECTION_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+		for (int i = 0; i < stuImageInfo.length; i++) {
+			stuImageInfo[i] = new NET_IMAGE_INFO_EX2();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java
new file mode 100644
index 0000000..23ce6fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRUCKNOTCLEAN_FOR_PRMA 工程车未清洗 对应的数据块描述信息 
+* @date 2022/12/20 14:23:14
+*/
+public class DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0-脉冲 1-开始 2-结束
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位:毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件对应文件信息
+*/
+public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo=new NetSDKLib.NET_EVENT_FILE_INFO();
+/** 
+智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+*/
+public			int					emClass;
+/** 
+帧序号
+*/
+public			int					nSequence;
+/** 
+检测到的车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+stuSceneImage 是否有效
+*/
+public			int					bSceneImage;
+/** 
+全景广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+保留字节
+*/
+public			byte[]					bReserved=new byte[1024];
+
+public DEV_EVENT_TRUCKNOTCLEAN_FOR_PRMA_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java
new file mode 100644
index 0000000..6cd1fa4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_TUMBLE_DETECTION_INFO.java
@@ -0,0 +1,125 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import java.util.Arrays;
+
+/**
+ * @description: (倒地报警事件)对应数据块描述信息
+ * @author: 251589
+ * @time: 2020/11/25 19:16
+ */
+public class DEV_EVENT_TUMBLE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+
+	/**
+	 * #define DH_EVENT_NAME_LEN 128 事件名称
+	 */
+	public byte[] szName = new byte[128];
+
+	/**
+	 * 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int nAction;
+
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC;
+
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * UTC时间对应的毫秒数
+	 */
+	public int UTCMS;
+
+	/**
+	 * 智能事件所属大类
+	 */
+	public int emClassType;
+
+	/**
+	 * 目标ID
+	 */
+	public int nObjectID;
+
+	/**
+	 * 物体类型,支持以下:"Unknown", "Human", "Vehicle", "Fire", "Smoke", "Plate",
+	 * "HumanFace", "Container", "Animal", "TrafficLight", "PastePaper",
+	 * "HumanHead", "BulletHole", "Entity" #define DH_COMMON_STRING_16 16 //
+	 * 通用字符串长度16
+	 */
+	public byte[] szObjectType = new byte[16];
+
+	/**
+	 * 物体包围盒
+	 */
+	public NetSDKLib.NET_RECT stuBoundingBox;
+
+	/**
+	 * 智能物体全局唯一物体标识 有效数据位21位,包含’\0’ 前2位%d%d:01-视频片段, 02-图片, 03-文件, 99-其他
+	 * 中间14位YYYYMMDDhhmmss:年月日时分秒 后5位%u%u%u%u%u:物体ID,如00001
+	 */
+	public byte[] szSerialUUID = new byte[22];
+
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage;
+
+	/**
+	 * 图片信息数组,结构体NET_IMAGE_INFO_EX2数组指针
+	 */
+	public Pointer pstuImageInfo;
+
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 检测区个数
+	 */
+	public int nDetectRegionNum;
+	/**
+	 * 检测区
+	 */
+	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[834];
+		
+	public DEV_EVENT_TUMBLE_DETECTION_INFO() {
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NET_POINT_EX();
+		}		
+	}
+
+	@Override
+	public String toString() {
+		return "(倒地报警事件)对应数据块描述信息 DEV_EVENT_TUMBLE_DETECTION_INFO{" + "通道号 =" + nChannelID + ", 事件名称 ="
+				+ Arrays.toString(szName) + ", 事件动作 =" + nAction + ", 时间戳(毫秒) =" + PTS + ", 事件发生的时间 =" + UTC
+				+ ", 事件ID =" + nEventID + ", UTC时间对应的毫秒数 =" + UTCMS + ", 智能事件所属大类 =" + emClassType + ", 目标ID ="
+				+ nObjectID + ", 物体类型 =" + Arrays.toString(szObjectType) + ", 物体包围盒 =" + stuBoundingBox + ", 保留字节 ="
+				+ Arrays.toString(bReserved) + '}';
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java
new file mode 100644
index 0000000..b12ec4f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO.java
@@ -0,0 +1,73 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_VEHICLE_DISTANCE_NEAR (安全驾驶车距过近报警事件) 对应的数据块描述信息
+ * @date 2021/09/27
+ */
+public class DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     事件动作, 0表示脉冲事件, 1表示持续性事件开始, 2表示持续性事件结束;
+     */
+    public			int					nAction;
+    /**
+     事件发生的时间
+     */
+    public			NET_TIME_EX					UTC=new NET_TIME_EX();
+    /**
+     GPS信息
+     */
+    public			NET_GPS_STATUS_INFO					stuGPSStatusInfo=new NET_GPS_STATUS_INFO();
+    /**
+     司机ID
+     */
+    public			byte[]					szDriverID=new byte[32];
+    /**
+     违章关联视频FTP上传路径
+     */
+    public			byte[]					szVideoPath=new byte[256];
+    /**
+     违章关联的多个视频信息个数
+     */
+    public			int					nRelatingVideoInfoNum;
+    /**
+     违章关联的多个视频信息数组,最多支持16个视频
+     */
+    public			NET_RELATING_VIDEO_INFO[]					stuRelatingVideoInfo=new NET_RELATING_VIDEO_INFO[16];
+    /**
+     横向距离, 单位米
+     */
+    public			float					fHorizontalDistance;
+    /**
+     纵向距离, 单位米
+     */
+    public			float					fParallelDistance;
+    /**
+     报警目标左上角坐标X
+     */
+    public			int					nTargetCoordsX;
+    /**
+     报警目标左上角坐标Y
+     */
+    public			int					nTargetCoordsY;
+    /**
+     报警目标坐标, 高
+     */
+    public			int					nTargetCoordsHeight;
+    /**
+     报警目标坐标, 宽
+     */
+    public			int					nTargetCoordsWidth;
+    /**
+     预留字节
+     */
+    public			byte[]					bReserved=new byte[712];
+
+    public			DEV_EVENT_VEHICLE_DISTANCE_NEAR_INFO(){
+        for(int i=0;i<stuRelatingVideoInfo.length;i++){
+            stuRelatingVideoInfo[i]=new NET_RELATING_VIDEO_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java
new file mode 100644
index 0000000..af25e69
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 视频正常事件,在视频诊断检测周期结束时,将未报错的诊断项上报正常事件
+* @date 2022/03/29 13:59:54
+*/
+public class DEV_EVENT_VIDEO_NORMAL_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲
+*/
+public			int					nAction;
+/** 
+事件编号,用来唯一标志一个事件
+*/
+public			int					nEventID;
+/** 
+事件发生的时间,单位秒
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+视频检测类型 {@link com.netsdk.lib.enumeration.EM_VIDEO_ABNORMAL_DETECT_TYPE}
+*/
+public			int					emDetectType;
+/** 
+保留字节
+*/
+public			byte[]					bReserved=new byte[260];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java
new file mode 100644
index 0000000..cfe1dee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WATERCOLOR_DETECTION_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+事件类型 EVENT_IVS_WATERCOLOR_DETECTION (水体颜色事件) 对应的数据描述信息
+*/
+public class DEV_EVENT_WATERCOLOR_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+*/
+public			int					nAction;
+/** 
+智能事件所属大类 EM_CLASS_TYPE
+*/
+public			int					emClassType;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件组ID
+*/
+public			int					nGroupID;
+/** 
+一个事件组内应有的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号
+*/
+public			int					nIndexInGroup;
+/** 
+事件ID编号
+*/
+public			int					nEventID;
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间(单位是秒)
+*/
+public			int					UTC;
+/** 
+事件时间(单位是毫秒)
+*/
+public			int					UTCMS;
+/** 
+实际检测到区域个数
+*/
+public			int					nDetectRegionNum;
+/** 
+检测区域
+*/
+public			NetSDKLib.DH_POINT[]					stuDetectRegion=(NetSDKLib.DH_POINT[])new NetSDKLib.DH_POINT().toArray(20);
+/** 
+事件触发的预置点号,从1开始, 没有该字段,表示预置点未知
+*/
+public			int					nPresetID;
+/** 
+污水颜色
+*/
+public			int					emWaterColor;
+/** 
+原始图
+*/
+public NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO stuOriginalImage=new NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO();
+/** 
+球机变到最小倍下的抓图
+*/
+public NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO stuSceneImage=new NetSDKLib.NET_INTELLIGENCE_IMAGE_INFO();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKCLOTHES_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKCLOTHES_DETECT_INFO.java
new file mode 100644
index 0000000..a938d5a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKCLOTHES_DETECT_INFO.java
@@ -0,0 +1,201 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型EVENT_IVS_WORKCLOTHES_DETECT(工装 ( 安全帽 / 工作服等)检测事件)对应的数据块描述信息
+ * @date 2023/04/21 16:09:59
+ */
+public class DEV_EVENT_WORKCLOTHES_DETECT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+    /**
+     * 智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public int nRuleID;
+    /**
+     * 物体ID
+     */
+    public int nObjectID;
+    /**
+     * 事件组ID,一次检测的多个nGroupID相同
+     */
+    public int nGroupID;
+    /**
+     * 一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
+     */
+    public int nCountInGroup;
+    /**
+     * 一个事件组内的抓拍序号,从1开始
+     */
+    public int nIndexInGroup;
+    /**
+     * 全景大图信息
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 小图信息
+     */
+    public NetSDKLib.HUMAN_IMAGE_INFO stuHumanImage = new NetSDKLib.HUMAN_IMAGE_INFO();
+    /**
+     * 安全帽属性
+     */
+    public NetSDKLib.NET_HELMET_ATTRIBUTE stuHelmetAttribute = new NetSDKLib.NET_HELMET_ATTRIBUTE();
+    /**
+     * 工作服属性
+     */
+    public NetSDKLib.NET_WORKCLOTHES_ATTRIBUTE stuWorkClothesAttribute = new NetSDKLib.NET_WORKCLOTHES_ATTRIBUTE();
+    /**
+     * 工作裤颜色
+     */
+    public NetSDKLib.NET_WORKPANTS_ATTRIBUTE stuWorkPantsAttribute = new NetSDKLib.NET_WORKPANTS_ATTRIBUTE();
+    /**
+     * 不规范报警类型 0-未知 1-防护服不规范 2: 工作服不规范3:安全帽不规范4:安全帽和工作服不规范
+     */
+    public int nAlarmType;
+    /**
+     * 事件关联ID。应用场景是同一个物体或者同一张图片做不同分析,产生的多个事件的SourceID相同
+     * 格式:类型+时间+序列号,其中类型2位,时间14位,序列号5位
+     * 类型:02-图像   时间:YYYYMMDDhhmmss   序列号:00001
+     */
+    public byte[] szSourceID = new byte[32];
+    /**
+     * null {@link com.netsdk.lib.enumeration.EM_EVENT_WORKCLOTHES_RULE_TYPE}
+     */
+    public int emRuleType;
+    /**
+     * 图片信息数组
+     */
+    public NET_IMAGE_INFO_EX2[] stuImageInfo = new NET_IMAGE_INFO_EX2[32];
+    /**
+     * 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * 普通帽子相关属性状态信息
+     */
+    public NET_NORMALHAT_ATTRIBUTE stuNormalHat = new NET_NORMALHAT_ATTRIBUTE();
+    /**
+     * 口罩相关属性状态信息
+     */
+    public NET_MASK_ATTRIBUTE stuMask = new NET_MASK_ATTRIBUTE();
+    /**
+     * 围裙相关属性状态信息
+     */
+    public NET_APRON_ATTRIBUTE stuApron = new NET_APRON_ATTRIBUTE();
+    /**
+     * 手套相关属性状态信息
+     */
+    public NET_GLOVE_ATTRIBUTE stuGlove = new NET_GLOVE_ATTRIBUTE();
+    /**
+     * 靴子相关属性状态信息
+     */
+    public NET_BOOT_ATTRIBUTE stuBoot = new NET_BOOT_ATTRIBUTE();
+    /**
+     * 鞋套相关属性状态信息
+     */
+    public NET_SHOESCOVER_ATTRIBUTE stuShoesCover = new NET_SHOESCOVER_ATTRIBUTE();
+    /**
+     * 无帽子相关属性状态信息
+     */
+    public NET_NOHAT_ATTRIBUTE stuNoHat = new NET_NOHAT_ATTRIBUTE();
+    /**
+     * 防护面罩相关属性状态信息
+     */
+    public NET_PROHELMET_ATTRIBUTE stuProhelmet = new NET_PROHELMET_ATTRIBUTE();
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 防火衣相关属性状态信息
+     */
+    public NET_FIREPROOF_CLOTHES stuFireProofClothes = new NET_FIREPROOF_CLOTHES();
+    /**
+     * 物体信息数据,{@link NetSDKLib.NET_MSG_OBJECT_EX2}
+     */
+    public Pointer pstObjectInfo;
+    /**
+     * 物体信息数
+     */
+    public int nObjectNum;
+    /**
+     * 眼镜相关属性状态信息
+     */
+    public NET_GLASSES_RELATED_INFO stuGlassesInfo = new NET_GLASSES_RELATED_INFO();
+    /**
+     * 呼吸面罩相关属性状态信息
+     */
+    public NET_BREATHING_MASK_INFO stuBreathingMaskInfo = new NET_BREATHING_MASK_INFO();
+    /**
+     * 防护服相关属性状态信息
+     */
+    public NET_PROTECTIVE_SUIT_INFO stuProtectiveSuitInfo = new NET_PROTECTIVE_SUIT_INFO();
+    /**
+     * 制服相关属性状态信息
+     */
+    public NET_UNIFORM_INFO stuUniformInfo = new NET_UNIFORM_INFO();
+    /**
+     * 安全绳相关属性状态信息
+     */
+    public NET_SAFETY_ROPE_INFO stuSafetyRopeInfo = new NET_SAFETY_ROPE_INFO();
+    /**
+     * 安全带相关属性状态信息
+     */
+    public NET_SAFE_BELT_INFO stuSafeBeltInfo = new NET_SAFE_BELT_INFO();
+    /**
+     * 反光背心相关属性状态信息
+     */
+    public NET_VEST_INFO stuVestInfo = new NET_VEST_INFO();
+    /**
+     * 劳保鞋相关属性状态信息
+     */
+    public NET_SAFETY_SHOES_INFO stuSafetyShoesInfo = new NET_SAFETY_SHOES_INFO();
+    /**
+     * 防割护腕相关属性状态信息
+     */
+    public NET_WRIST_GUARD_INFO stuWristGuardInfo = new NET_WRIST_GUARD_INFO();
+    /**
+     * 报警方式, 0:未知, 1:有不合规项即报警 2:所有合规才报警
+     */
+    public int nLegalAlarmType;
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[328 - NetSDKLib.POINTERSIZE];
+
+    public DEV_EVENT_WORKCLOTHES_DETECT_INFO() {
+        for (int i = 0; i < stuImageInfo.length; i++) {
+            stuImageInfo[i] = new NET_IMAGE_INFO_EX2();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java
new file mode 100644
index 0000000..c14df3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_WORKSTATDETECTION_INFO.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_WORKACTION_STATE;
+import com.netsdk.lib.enumeration.EM_WORKSTATDETECTION_TYPE;
+import com.sun.jna.Pointer;
+
+/**
+ * @author : 260611
+ * @description : 事件类型EVENT_IVS_WORKSTATDETECTION(作业统计事件)对应的数据块描述信息
+ * @since : Created in 2022/03/08 15:25
+ */
+
+public class DEV_EVENT_WORKSTATDETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲 1:开始 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double PTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能事件所属大类,{@link NetSDKLib.EM_CLASS_TYPE}
+	 */
+	public int emClassType;
+	/**
+	 * 智能事件规则编号,用于标示哪个规则触发的事件
+	 */
+	public int nRuleID;
+	/**
+	 * 物体ID
+	 */
+	public int nObjectID;
+	/**
+	 * 作业行为状态个数
+	 */
+	public int nWorkActionNum;
+	/**
+	 * 作业行为状态信息,{@link EM_WORKACTION_STATE}
+	 */
+	public int[] emWorkAction = new int[32];
+	/**
+	 * 全景大图信息
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+	/**
+	 * 报警规则类型,{@link EM_WORKSTATDETECTION_TYPE}
+	 */
+	public int emRuleType;
+	/**
+	 * 物体信息数据 ,参考结构体NET_MSG_OBJECT_EX2
+	 */
+	public Pointer pstObjectInfo;
+	/**
+	 * 物体信息数
+	 */
+	public int nObjectNum;
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[1016 - NetSDKLib.POINTERSIZE];
+
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java
new file mode 100644
index 0000000..c60f614
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_DETECTION_INFO.java
@@ -0,0 +1,159 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.NetSDKLib.MAX_INSIDEOBJECT_NUM;
+
+
+/**
+ * X光机关联图片类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 14:46
+ */
+public class DEV_EVENT_XRAY_DETECTION_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte szName[] = new byte[128];
+
+    /**
+     * 保留字节对齐
+     */
+    public byte Reserved[] = new byte[4];
+
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC = new NET_TIME_EX();
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+     */
+    public int emClassType;
+
+    /**
+     * 包裹信息
+     */
+    public NET_PACKAGE_INFO stuPacketInfo = new NET_PACKAGE_INFO();
+
+    /**
+     * 保留字节对齐
+     */
+    public byte Reserved1[] = new byte[4];
+
+    /**
+     * 主视角包裹内物品个数
+     */
+    public int nObjectNum;
+    /**
+     * 主视角包裹内物品信息
+     */
+    public NET_INSIDE_OBJECT stuInsideObj[] = (NET_INSIDE_OBJECT[]) new NET_INSIDE_OBJECT().toArray(MAX_INSIDEOBJECT_NUM);
+
+    /**
+     * 从视角包裹内物品个数
+     */
+    public int nSlaveViewObjectNum;
+    /**
+     * 从视角包裹内物品信息
+     */
+    public NET_INSIDE_OBJECT stuSlaveViewInsideObj[] = (NET_INSIDE_OBJECT[]) new NET_INSIDE_OBJECT().toArray(MAX_INSIDEOBJECT_NUM);
+
+    /**
+     * 图片数量
+     */
+    public int nImageCount;
+    /**
+     * 图片信息
+     */
+    public NET_XRAY_IMAGE_INFO stuImageInfo[] = (NET_XRAY_IMAGE_INFO[]) new NET_XRAY_IMAGE_INFO().toArray(8);
+
+    /**
+     * 客户自定义信息个数
+     */
+    public int nViewCustomInfoNum;
+    /**
+     * 客户自定义信息, X光机专用
+     */
+    public NetSDKLib.NET_XRAY_CUSTOM_INFO stuViewCustomInfo[] = (NetSDKLib.NET_XRAY_CUSTOM_INFO[]) new NetSDKLib.NET_XRAY_CUSTOM_INFO().toArray(4);
+
+    /**
+     * 包裹标识, 用来唯一标识一个包裹
+     */
+    public byte szPackageTag[] = new byte[32];
+
+    /**
+     * 包裹产生方式 {@link com.netsdk.lib.enumeration.EM_XRAY_PACKAGE_MODE}
+     */
+    public int emPackageMode;
+
+    /**
+     * 关联图片数量
+     */
+    public int nRelatedImageNum;
+    /**
+     * 关联图片
+     */
+    public NET_XRAY_RELATED_IMAGE_INFO stuRelatedImageInfo[] = new NET_XRAY_RELATED_IMAGE_INFO[8];
+
+    /**
+     * 与包裹关联的单号的个数
+     */
+    public int nBarCodeCount;
+    /**
+     * 与包裹关联的单号的内容
+     */
+    public NET_BAR_CODE_INFO stuBarCodeInfo[] = new NET_BAR_CODE_INFO[32];
+    /**
+     * 事件公共扩展字段结构体
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+
+    /**
+     * 是否使用远程判图 {@link com.netsdk.lib.enumeration.EM_XRAY_DETECTION_JUDGE_REMOTELY}
+     */
+    public int emJudgeRemotely;
+
+    /**
+     * / 图片信息个数
+     */
+    public int nImageInfoNum;
+    /**
+     * / 图片信息数组, refer to {@link NET_IMAGE_INFO_EX3}
+     */
+    public Pointer pstuImageInfo;
+    /**
+     * / 切包信息
+     */
+    public NET_XRAY_CUT_INFO stuCutInfo = new NET_XRAY_CUT_INFO();
+
+    /**
+     * 保留字节,留待扩展
+     */
+    public byte byReserved[] = new byte[300 - NetSDKLib.POINTERSIZE];
+
+    public DEV_EVENT_XRAY_DETECTION_INFO() {
+        for (int i = 0; i < stuRelatedImageInfo.length; i++) {
+            stuRelatedImageInfo[i] = new NET_XRAY_RELATED_IMAGE_INFO();
+        }
+
+        for (int i = 0; i < stuBarCodeInfo.length; i++) {
+            stuBarCodeInfo[i] = new NET_BAR_CODE_INFO();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..5f8ea3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_EVENT_XRAY_UNPACKING_CHECK_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  事件类型 EVENT_IVS_XRAY_UNPACKING_CHECK (X光开包检查事件)对应的数据块描述信息
+ * @date 2021/9/9
+ */
+
+public class DEV_EVENT_XRAY_UNPACKING_CHECK_INFO extends NetSDKLib.SdkStructure {
+ /** 通道号*/
+ public			int					nChannelID;
+ /** 事件动作,0表示脉冲事件*/
+ public			int					nAction;
+ /** 事件名称*/
+ public			byte[]					szName=new byte[NetSDKLib.NET_EVENT_NAME_LEN];
+ /** 智能事件所属大类*/
+ public			byte[]					szClass=new byte[16];
+ /** 相对事件时间戳(单位是毫秒)*/
+ public			double					PTS;
+ /** 开包检查信息*/
+ public UNPACKING_CHECK_INFO stuCheckInfo=new UNPACKING_CHECK_INFO();
+ /** 事件ID*/
+ public			int					nEventID;
+ /** 预留字节*/
+ public			byte[]					szReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_RADAR_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_RADAR_CONFIG.java
new file mode 100644
index 0000000..b16bc97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_RADAR_CONFIG.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:DEV_RADAR_CONFIG
+ * description:
+ * author:251589
+ * createTime:2020/12/29 10:54
+ *
+ * @version v1.0
+ */
+public class DEV_RADAR_CONFIG extends NetSDKLib.SdkStructure {
+    public int    dwSize;    // 结构体大小
+    public boolean    bEnable;    // 是否开启功能
+    public int    nPort;    // 串口端口号
+    public NET_COMM_PROP    stuCommAttr;    // 串口属性
+    public int    nAddress;    // 设备地址,如果串口上挂了多个串口设备,通过地址区分
+    public int    nPreSpeedWait;    // 速度先来情况下等待时间,速度来时尚未抓拍 范围 (1 -- 5000ms)
+    public int    nDelaySpeedWait;    // 速度后来情况下等待时间,抓拍时还没有来速度 范围 (1 -- 5000ms)
+    public boolean    bDahuaRadarEnable;    // DH雷达配置是否可用
+    public DEV_DAHUA_RADAR_CONFIG    stuDhRadarConfig;    // DH雷达参数配置
+    public boolean    bSTJ77D5RadarEnable;    // 森思泰克77Ghz网络雷达配置是否可用
+    public NET_STJ77D5_RADAR_CONFIG    stuSTJ77D5RadarConfig;    // 森思泰克77Ghz网络雷达配置
+
+    public DEV_RADAR_CONFIG(){
+        this.dwSize = size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_SCADA_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..650a527
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DEV_SCADA_DATA_INFO.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 遥测数据信息
+ * @date 2022/12/13 10:24:15
+ */
+public class DEV_SCADA_DATA_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 点位ID
+     */
+    public byte[] szID = new byte[32];
+    /**
+     * 遥测数据采集时间,utc
+     */
+    public NET_TIME_EX stuTime = new NET_TIME_EX();
+    /**
+     * 点位状态,0:无告警,1:一级告警, -1为未收到报警状态
+     */
+    public int nStatus;
+    /**
+     * 点位类型,YC:遥测
+     */
+    public byte[] szType = new byte[8];
+    /**
+     * 遥测数据单位,如m/s,℃
+     */
+    public byte[] szUnit = new byte[8];
+    /**
+     * 遥调值
+     */
+    public float fSetupVal;
+    /**
+     * 点位遥测值
+     */
+    public float fMeasuredVal;
+    /**
+     * 电力104点号,当启用电力104协议时存在
+     */
+    public byte[] szAddress = new byte[16];
+    /**
+     * 保留字节
+     */
+    public byte[] szResvered = new byte[256];
+
+    public DEV_SCADA_DATA_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEVTIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEVTIME.java
new file mode 100644
index 0000000..5246adb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEVTIME.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息里的时间定义
+ * @author 47081
+ */
+public class DHDEVTIME extends NetSDKLib.SdkStructure {
+    /**
+     * 秒    1-60
+     *//*
+    public int                second;
+    *//**
+     * 分    1-60
+     *//*
+    public int                minute;
+    *//**
+     * 时    1-24
+     *//*
+    public int                hour;
+    *//**
+     * 日    1-31
+     *//*
+    public int                day;
+    *//**
+     * 月    1-12
+     *//*
+    public int                month;
+    *//**
+     * 年    2000-2063
+     *//*
+    public int                year;*/
+    public int                date;
+
+
+/**
+ *second:6;                // 秒    1-60
+ *minute:6;                // 分    1-60
+ *hour:5;                  // 时    1-24
+ *day:5;                   // 日    1-31
+ *month:4;                 // 月    1-12
+ *year:6;                  // 年    2000-2063
+ *
+ */
+public int getSecond(){
+    return getAnd(date,0,6);
+}
+public int getMinute(){
+    return getAnd(date,6,6+6);
+}
+public int getHour(){return getAnd(date,6+6,6+6+5);}
+public int getDay(){return getAnd(date,6+6+5,6+6+5+5);}
+public int getMonth(){return getAnd(date,6+6+5+5,6+6+5+5+4);}
+public int getYear(){return 2000+getAnd(date,6+6+5+5+4,6+6+5+5+4+6);}
+
+    /**
+     * c层处理后的原始年份信息
+     * @return
+     */
+    public int getOriginalYear(){return getAnd(date,6+6+5+5+4,6+6+5+5+4+6);};
+public String getDate(){
+    return getYear()+"-"+getMonth()+"-"+getDay()+" "+getHour()+":"+getMinute()+":"+getSecond();
+}
+
+    /**
+     * 按位与
+     * @param date 原始数据
+     * @param start 需要偏移的位数
+     * @param end 与的位数
+     * @return
+     */
+    private int getAnd(int date,int start,int end){
+        return date>>start&getOr(start,end);
+    }
+
+    /**
+     * 按位与的位数
+     * @param start 开始与的位数
+     * @param end 结束与的位数
+     * @return
+     */
+    private int getOr(int start,int end){
+        int result=0;
+        for (int i = 0; i < end-start; i++) {
+            result|=(1<<i);
+        }
+        return result;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_DEVICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_DEVICE_INFO.java
new file mode 100644
index 0000000..6da8753
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_DEVICE_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 表示硬盘的基本信息
+ * @date 2022/05/16 11:16:17
+ */
+public class DHDEV_DEVICE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 型号
+	 */
+	public byte[] byModle = new byte[32];
+	/**
+	 * 序列号
+	 */
+	public byte[] bySerialNumber = new byte[32];
+	/**
+	 * 固件号
+	 */
+	public byte[] byFirmWare = new byte[32];
+	/**
+	 * ATA协议版本号
+	 */
+	public int nAtaVersion;
+	/**
+	 * smart 信息数
+	 */
+	public int nSmartNum;
+
+	public long Sectors;
+	/**
+	 * 磁盘状态 0-正常 1-异常
+	 */
+	public int nStatus;
+	/**
+	 * 保留字节
+	 */
+	public int[] nReserved = new int[33];
+
+	public DHDEV_DEVICE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_HARDDISK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_HARDDISK.java
new file mode 100644
index 0000000..779b4ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_HARDDISK.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 表示硬盘的基本信息
+ * @date 2022/05/16 11:16:17
+ */
+public class DHDEV_SMART_HARDDISK extends NetSDKLib.SdkStructure {
+	/**
+	 * 硬盘号
+	 */
+	public byte nDiskNum;
+	/**
+	 * Raid子盘,0表示单盘
+	 */
+	public byte byRaidNO;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[2];
+	/**
+	 * 表示硬盘的基本信息
+	 */
+	public DHDEV_DEVICE_INFO deviceInfo = new DHDEV_DEVICE_INFO();
+	/**
+	 * 硬盘的smart信息,可能会有很多条,最多不超过30个
+	 */
+	public DHDEV_SMART_VALUE[] smartValue = new DHDEV_SMART_VALUE[NetSDKLib.MAX_SMART_VALUE_NUM];
+
+	public DHDEV_SMART_HARDDISK() {
+		for (int i = 0; i < smartValue.length; i++) {
+			smartValue[i] = new DHDEV_SMART_VALUE();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_VALUE.java
new file mode 100644
index 0000000..c10009e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DHDEV_SMART_VALUE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 表示硬盘的基本信息
+ * @date 2022/05/16 11:16:17
+ */
+public class DHDEV_SMART_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * ID
+	 */
+	public byte byId;
+	/**
+	 * 属性值
+	 */
+	public byte byCurrent;
+	/**
+	 * 最大出错值
+	 */
+	public byte byWorst;
+	/**
+	 * 阈值
+	 */
+	public byte byThreshold;
+	/**
+	 * 属性名
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 实际值
+	 */
+	public byte[] szRaw = new byte[8];
+	/**
+	 * 状态
+	 */
+	public int nPredict;
+
+	public byte[] reserved = new byte[128];
+
+	public DHDEV_SMART_VALUE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM.java
new file mode 100644
index 0000000..3065ab6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息,对应接口CLIENT_QueryDeviceLog接口
+ * @author 47081
+ */
+public class DH_DEVICE_LOG_ITEM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 日志类型
+     */
+    public int                 nLogType;
+    /**
+     * 日期
+     */
+    public DHDEVTIME           stuOperateTime;
+    /**
+     * 操作者
+     */
+    public byte[]                szOperator=new byte[16];
+    public byte[]                bReserved=new byte[3];
+    /**
+     * union结构类型对应NET_STU_LOG结构体,
+     * 0:szLogContext;
+     * 1:stuOldLog,在NET_STU_LOG结构体内
+     */
+    public byte                bUnionType;
+    //public NET_STU_LOG         stuLog;
+   /**
+    * 日志备注信息
+    */
+    public byte[]            szLogContext=new byte[64];
+    public byte[]                reserved=new byte[16];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java
new file mode 100644
index 0000000..fc1b6d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_DEVICE_LOG_ITEM_EX.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.nio.charset.Charset;
+
+/**
+ * 新日志信息结构,对应接口CLIENT_QueryDeviceLog接口
+ * @author 47081
+ */
+public class DH_DEVICE_LOG_ITEM_EX extends NetSDKLib.SdkStructure {
+    /**
+     * 日志类型
+     */
+    public int                 nLogType;
+    /**
+     * 日期
+     */
+    public DHDEVTIME           stuOperateTime;
+    /**
+     * 操作者
+     */
+    public byte[]              szOperator=new byte[16];
+    public byte[]              bReserved=new byte[3];
+    /**
+     *  union结构类型对应结构体NET_STU_LOG,
+     * 0:stuLog.szLogContext;
+     * 1:stuLog.stuOldLog。
+     */
+    public byte                bUnionType;
+    /**
+     * 具体的操作内容
+     *//*
+    public NET_STU_LOG         stuLog;*/
+    public byte[]              szLogContext=new byte[64];
+    public byte[]              szOperation=new byte[32];
+    /**
+     * 详细日志信息描述
+     */
+    public byte[]              szDetailContext=new byte[4*1024];
+
+    /**
+     * 操作者,默认编码集UTF-8
+     * @return 操作者名称
+     */
+    public String getOperator(){return getOperator(Charset.forName("UTF_8"));}
+    public String getOperator(Charset charset){
+        return new String(szOperation,charset);
+    }
+
+    /**
+     * 操作日期
+     * @return
+     */
+    public String getDate(){
+        return stuOperateTime.getDate();
+    }
+
+    /**
+     * 操作
+     * @return
+     */
+    public String getOperation(){ return getOperation(Charset.forName("UTF_8"));}
+    public String getOperation(Charset charset){return new String(szOperation,charset);}
+    /**
+     * 具体操作内容
+     * @return
+     */
+    public String getLog(){return getLog(Charset.forName("UTF_8"));}
+    public String getLog(Charset charset){
+        return new String(szLogContext,charset);
+    }
+
+    /**
+     * 详细日志信息描述
+     * @return
+     */
+    public String getDetailLog(){return getDetailLog(Charset.forName("UTF_8"));}
+    public String getDetailLog(Charset charset){
+        return new String(szDetailContext,charset);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_GET_RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_GET_RECT.java
new file mode 100644
index 0000000..d94124e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_GET_RECT.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSplitWindowRect接口输入参数(获取窗口位置)
+ * @date 2023/06/13 14:09:42
+ */
+public class DH_IN_SPLIT_GET_RECT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 通道号(屏号)
+	 */
+	public int nChannel;
+	/**
+	 * 窗口序号
+	 */
+	public int nWindowID;
+
+	public DH_IN_SPLIT_GET_RECT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_RECT.java
new file mode 100644
index 0000000..9515a41
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_RECT.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetSplitWindowRect输入参数(设置窗口位置)
+ * @date 2023/06/13 14:11:13
+ */
+public class DH_IN_SPLIT_SET_RECT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 通道号(屏号)
+	 */
+	public int nChannel;
+	/**
+	 * 窗口序号
+	 */
+	public int nWindowID;
+	/**
+	 * 窗口位置, 0~8191
+	 */
+	public NetSDKLib.DH_RECT stuRect = new NetSDKLib.DH_RECT();
+	/**
+	 * 坐标是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域
+	 */
+	public int bDirectable;
+
+	public DH_IN_SPLIT_SET_RECT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_TOP_WINDOW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_TOP_WINDOW.java
new file mode 100644
index 0000000..20caa2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_IN_SPLIT_SET_TOP_WINDOW.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetSplitTopWindow接口输入参数(设置窗口次序)
+ * @date 2023/06/13 14:12:53
+ */
+public class DH_IN_SPLIT_SET_TOP_WINDOW extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 通道号(屏号)
+	 */
+	public int nChannel;
+	/**
+	 * 窗口序号
+	 */
+	public int nWindowID;
+
+	public DH_IN_SPLIT_SET_TOP_WINDOW() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_LOG_ITEM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_LOG_ITEM.java
new file mode 100644
index 0000000..a521f72
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_LOG_ITEM.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息,对应接口CLIENT_QueryLog接口
+ * @author 47081
+ */
+public class DH_LOG_ITEM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 日期
+     */
+    public DHDEVTIME           time;
+    /**
+     * 日志类型,对应结构体 DH_LOG_TYPE
+     */
+    public short               type;
+    /**
+     * 保留
+     */
+    public byte                reserved;
+    /**
+     * 数据
+     */
+    public byte                data;
+    /**
+     * 内容
+     */
+    public byte[]              context=new byte[8];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java
new file mode 100644
index 0000000..8e617cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_PTZ_VIEW_RANGE_STATUS.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 云台可视域状态结构
+ * @date 2022/10/13 16:01:59
+ */
+public class DH_OUT_PTZ_VIEW_RANGE_STATUS extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 可视距离, 单位:米
+     */
+    public double dbDistance;
+    /**
+     * 水平可视角度, 0~1800, 单位:十分之一度
+     */
+    public int nAngelH;
+    /**
+     * 水平方位角度, 0~3600, 单位:十分之一度
+     */
+    public int nAzimuthH;
+    /**
+     * 水平倾斜角度, -900~900, 单位:十分之一度
+     */
+    public int nInclinationH;
+    /**
+     * 垂直可视角度, 0~1800, 单位:十分之一度
+     */
+    public int nAngelV;
+    /**
+     * 垂直方位角度, 0~3600, 单位:十分之一度
+     */
+    public int nAzimuthV;
+    /**
+     * 水平角度,扩大100倍值,[0-36000]
+     */
+    public int nPan;
+    /**
+     * 垂直角度,扩大100倍值,[-18000-18000]
+     */
+    public int nTilt;
+    /**
+     * 显示放大倍数,扩大100倍值,[0-MaxZoom*100]
+     */
+    public int nZoom;
+
+    public DH_OUT_PTZ_VIEW_RANGE_STATUS() {
+        this.dwSize = this.size();
+    }
+
+    @Override
+    public String toString() {
+        return "DH_OUT_PTZ_VIEW_RANGE_STATUS{" +
+                "dwSize=" + dwSize +
+                ", dbDistance=" + dbDistance +
+                ", nAngelH=" + nAngelH +
+                ", nAzimuthH=" + nAzimuthH +
+                ", nInclinationH=" + nInclinationH +
+                ", nAngelV=" + nAngelV +
+                ", nAzimuthV=" + nAzimuthV +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_GET_RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_GET_RECT.java
new file mode 100644
index 0000000..b4f562a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_GET_RECT.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSplitWindowRect接口输出参数(获取窗口位置)
+ * @date 2023/06/13 14:09:53
+ */
+public class DH_OUT_SPLIT_GET_RECT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 窗口位置, 0~8191
+	 */
+	public NetSDKLib.DH_RECT stuRect = new NetSDKLib.DH_RECT();
+
+	public DH_OUT_SPLIT_GET_RECT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_RECT.java
new file mode 100644
index 0000000..a1b0ce0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_RECT.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetSplitWindowRect接口输出参数(设置窗口位置)
+ * @date 2023/06/13 14:11:27
+ */
+public class DH_OUT_SPLIT_SET_RECT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+
+	public DH_OUT_SPLIT_SET_RECT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_TOP_WINDOW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_TOP_WINDOW.java
new file mode 100644
index 0000000..5778c10
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_OUT_SPLIT_SET_TOP_WINDOW.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetSplitTopWindow接口输出参数(设置窗口次序)
+ * @date 2023/06/13 14:13:08
+ */
+public class DH_OUT_SPLIT_SET_TOP_WINDOW extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 窗口次序数组,由用户申请内存,大小为sizeof(DH_WND_ZORDER)*nMaxWndCount
+	 */
+	public Pointer pZOders;
+	/**
+	 * 窗口次序数组大小
+	 */
+	public int nMaxWndCount;
+	/**
+	 * 返回的窗口数量
+	 */
+	public int nWndCount;
+
+	public DH_OUT_SPLIT_SET_TOP_WINDOW() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POINT.java
new file mode 100644
index 0000000..f5cd356
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POINT.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  二维空间点 
+* @origin autoTool
+* @date 2023/05/29 11:40:40
+*/
+public class DH_POINT extends NetSDKLib.SdkStructure {
+
+public			short					nx;
+
+public			short					ny;
+
+public DH_POINT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POLY_POINTS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POLY_POINTS.java
new file mode 100644
index 0000000..4a570c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_POLY_POINTS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  二维空间点 
+* @origin autoTool
+* @date 2023/05/29 11:40:40
+*/
+public class DH_POLY_POINTS extends NetSDKLib.SdkStructure {
+/** 
+顶点数
+*/
+public			int					nPointNum;
+/** 
+顶点信息
+*/
+public			DH_POINT[]					stuPoints=new DH_POINT[20];
+
+public DH_POLY_POINTS(){
+		for(int i=0;i<stuPoints.length;i++){
+			stuPoints[i]=new DH_POINT();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_RECT_REGION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_RECT_REGION.java
new file mode 100644
index 0000000..9423a1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_RECT_REGION.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.NativeLong;
+
+/** 
+* @author 251823
+* @description 区域;各边距按整长8192的比例
+* @date 2022/07/21 15:15:27
+*/
+public class DH_RECT_REGION extends NetSDKLib.SdkStructure {
+    public NativeLong  	left;
+    public NativeLong  	top;
+    public NativeLong  	right;
+    public NativeLong  	bottom;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java
new file mode 100644
index 0000000..2020312
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_SIG_CARWAY_INFO_EX.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 260611
+* @description  视频分析物体信息扩展结构体,扩展版本2 
+* @date 2022/07/29 11:20:53
+*/
+public class DH_SIG_CARWAY_INFO_EX extends NetSDKLib.SdkStructure {
+/** 
+由车检器产生抓拍信号冗余信息
+*/
+public			byte[]					byRedundance=new byte[8];
+/** 
+保留字段
+*/
+public			byte[]					bReserved=new byte[120];
+
+public DH_SIG_CARWAY_INFO_EX(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT.java
new file mode 100644
index 0000000..60c2aad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 流量统计记录
+ * @date 2022/05/07 10:07:05
+ */
+public class DH_TRAFFICFLOWSTAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineGroup
+	 */
+	public byte[] szMachineAddress = new byte[256];
+	/**
+	 * 同DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO.MachineName
+	 */
+	public byte[] szMachineName = new byte[256];
+	/**
+	 * 行驶方向"Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和下行的两个地点,UTF-8编码
+	 */
+	public byte[] szDrivingDirection = new byte[3 * 32];
+	/**
+	 * 车道号 使用用户配置的车道编号
+	 */
+	public int nLane;
+	/**
+	 * 统计时间,转换到UTC
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 统计周期,单位分钟
+	 */
+	public int nPeriod;
+	/**
+	 * 通过车辆总数
+	 */
+	public int nVehicles;
+	/**
+	 * 平均车速,单位km/h
+	 */
+	public float fAverageSpeed;
+	/**
+	 * 平均车长,单位米
+	 */
+	public float fAverageLength;
+	/**
+	 * 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
+	 */
+	public float fTimeOccupyRatio;
+	/**
+	 * 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+	 */
+	public float fSpaceOccupyRatio;
+	/**
+	 * 车头间距,相邻车辆之间的距离,单位米/辆
+	 */
+	public float fSpaceHeadway;
+	/**
+	 * 车头时距,单位秒/辆
+	 */
+	public float fTimeHeadway;
+	/**
+	 * 车辆密度,每公里的车辆数,单位辆/km
+	 */
+	public float fDensity;
+	/**
+	 * 超速车辆数
+	 */
+	public int nOverSpeedVehicles;
+	/**
+	 * 低速车辆数
+	 */
+	public int nUnderSpeedVehicles;
+	/**
+	 * 大车数量 车辆类型判断标准参见TrafficSnapshot配置表
+	 */
+	public int nLargeVehicles;
+	/**
+	 * 中型车数量
+	 */
+	public int nMediumVehicles;
+	/**
+	 * 小车数量
+	 */
+	public int nSmallVehicles;
+	/**
+	 * 摩托车数量
+	 */
+	public int nMotoVehicles;
+	/**
+	 * 超长车数量
+	 */
+	public int nLongVehicles;
+	/**
+	 * 流量数据所属通道号
+	 */
+	public byte[]	szChannel = new byte[64];
+	/**
+	 * 保留字段
+	 */
+	public byte[]	zResvered = new byte[1024];
+
+	public DH_TRAFFICFLOWSTAT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java
new file mode 100644
index 0000000..8585ce4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_TRAFFICFLOWSTAT_OUT.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  接口(CLIENT_DoFindFluxStat)输入参数 
+* @date 2022/05/07 10:04:12
+*/
+public class DH_TRAFFICFLOWSTAT_OUT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+统计信息个数
+*/
+public			int					nStatInfo;
+/** 
+统计信息指针,由用户申请内存,大小为sizeof(DH_TRAFFICFLOWSTAT)*nStatInfo
+*/
+public Pointer pStatInfo;
+
+public DH_TRAFFICFLOWSTAT_OUT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_WND_ZORDER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_WND_ZORDER.java
new file mode 100644
index 0000000..0e900c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DH_WND_ZORDER.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 窗口层叠次序
+ * @date 2023/06/13 14:14:47
+ */
+public class DH_WND_ZORDER extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 窗口序号
+	 */
+	public int nWindowID;
+	/**
+	 * Z次序
+	 */
+	public int nZOrder;
+
+	public DH_WND_ZORDER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DISKCTRL_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DISKCTRL_PARAM.java
new file mode 100644
index 0000000..133521d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DISKCTRL_PARAM.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 硬盘操作
+ * @date 2021/1/27
+ */
+public class DISKCTRL_PARAM extends NetSDKLib.SdkStructure {
+  /** 结构体大小,版本控制用 */
+  public int dwSize;
+  /** 为硬盘信息结构体DH_HARDDISK_STATE里的数组stDisks下标,从0开始 */
+  public int nIndex;
+  /** 操作类型, 0 - 清除数据,1 - 设为读写盘, 2 - 设为只读盘,3 - 设为冗余盘, 4 - 恢复错误, 5 - 设为快照盘,7 - 弹出SD卡(对SD卡操作有效) */
+  public int ctrlType; //
+  /** 磁盘信息, 由于磁盘顺序可能改变导致下标不准, 用来代替下标 */
+  public NetSDKLib.NET_DEV_DISKSTATE stuDisk;
+
+  public DISKCTRL_PARAM() {
+    this.dwSize = this.size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java
new file mode 100644
index 0000000..af3cc5a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/DREGS_UNCOVERED_VEHICLE_INFO.java
@@ -0,0 +1,25 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+ * @author : 260611
+ * @description : 车辆信息
+ * @since : Created in 2022/01/18 14:34
+ */
+
+public class DREGS_UNCOVERED_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+     /** 
+      * 车牌号码
+      */
+     public			byte[]					szPlateNumber=new byte[64];
+     /** 
+      * 包围盒
+      */
+     public			NET_RECT					stuBoundingBox=new NET_RECT();
+     /** 
+      * 预留字节
+      */
+     public			byte[]					byReserved=new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_INFO.java
new file mode 100644
index 0000000..37188d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 进口灯色状态信息
+ * @date 2021/09/01
+ */
+public class ENTER_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口方向
+     */
+    public int nEnterDir;
+
+    /**
+     *  进口灯组数量(0~48)
+     */
+    public int nLampNumber;
+
+    /**
+     *  灯组灯色信息个数
+     */
+    public int nLampGroupNum;
+
+    /**
+     *  灯组灯色信息,包含1到M(进口灯组数量)个灯组灯色信息
+     */
+    public LAMP_GROUP_INFO[] stuLampGroupInfo = (LAMP_GROUP_INFO[]) new LAMP_GROUP_INFO().toArray(48);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[64];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_LANE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_LANE_STATE.java
new file mode 100644
index 0000000..350632b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_LANE_STATE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 进口车道功能状态信息
+ * @date 2021/09/01
+ */
+public class ENTER_LANE_STATE extends NetSDKLib.SdkStructure{
+	/**
+     *  进口方向(0~359)以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nEnterDir;
+
+    /**
+     *  进口车道总数该进口车道总数,包含该进口所有车道
+     */
+    public int nLaneNumber;
+
+    /**
+     *  车道信息个数
+     */
+    public int nLaneInfoNum;
+
+    /**
+     *  车道交通运行状态信息(0~8), 包含1到N(车道数量)个车道交通运行状态信息
+     */
+    public LANE_STATE_INFO_EX[] stuLaneInfo = (LANE_STATE_INFO_EX[]) new LANE_STATE_INFO_EX().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_STATE_INFO.java
new file mode 100644
index 0000000..3cf6f75
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_STATE_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 进口交通运行状态信息
+ * @date 2021/09/01
+ */
+public class ENTER_STATE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口方向以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nEnterDir;
+
+    /**
+     *  车道数量
+     */
+    public int nLaneNumber;
+
+    /**
+     *  车道交通运行状态信息个数
+     */
+    public int nLaneStateInfoNum;
+
+    /**
+     *  车道交通运行状态信息(0~8), 包含1到N(车道数量)个车道交通运行状态信息
+     */
+    public LANE_STATE_INFO[] stuLaneStateInfo = (LANE_STATE_INFO[]) new LANE_STATE_INFO().toArray(8);
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_TRAFFIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_TRAFFIC_INFO.java
new file mode 100644
index 0000000..5ea4744
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ENTER_TRAFFIC_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 进口方向交通流信息
+ * @date 2021/09/01
+ */
+public class ENTER_TRAFFIC_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口方向以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nEnterDir;
+
+    /**
+     *  进口车道数量
+     */
+    public int nEnterLaneNumbner;
+
+    /**
+     *  车道交通流信息个数
+     */
+    public int nLanTrafficInfoNum;
+
+    /**
+     *  车道交通流信息(0~8),包含1到M(进口车道数量)个车道交通流信息
+     */
+    public LAN_TRAFFIC_INFO[] stuLanTrafficInfo = (LAN_TRAFFIC_INFO[]) new LAN_TRAFFIC_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java
new file mode 100644
index 0000000..af76116
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_MANUALSNAP_PARKING_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 停车位数据信息
+ * @date 2023/01/11 15:02:23
+ */
+public class EVENT_MANUALSNAP_PARKING_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号,从0开始, -1表示未知通道
+     */
+    public int nChannel;
+    /**
+     * 车位是否有车标记:0:未知 1:有车 2:无车
+     */
+    public int nStatus;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 车牌号码
+     */
+    public byte[] szParkingNo = new byte[32];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[128];
+
+    public EVENT_MANUALSNAP_PARKING_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_PLATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_PLATE_INFO.java
new file mode 100644
index 0000000..10b0e19
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_PLATE_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 车牌颜色
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 18:23
+ */
+public class EVENT_PLATE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  车头车牌号码
+     */
+    public byte					szFrontPlateNumber[] = new byte[64];
+    /**
+     *  车头车牌颜色 EM_PLATE_COLOR_TYPE
+     */
+    public int					emFrontPlateColor;
+    /**
+     *  车尾车牌号码
+     */
+    public byte					szBackPlateNumber[] = new byte[64];
+    /**
+     *  车尾车牌颜色 EM_PLATE_COLOR_TYPE
+     */
+    public int					emBackPlateColor;
+    /**
+     *  保留
+     */
+    public byte					reversed[] = new byte[128];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_SNAPBYTIME_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_SNAPBYTIME_DATA.java
new file mode 100644
index 0000000..99b9207
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_SNAPBYTIME_DATA.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 用户数据
+ * @origin autoTool
+ * @date 2023/10/26 19:39:30
+ */
+public class EVENT_SNAPBYTIME_DATA extends NetSDKLib.SdkStructure {
+	/**
+	 * / 液位值,单位mm
+	 */
+	public int dwLiquidLevel;
+	/**
+	 * / 测距值,单位mm
+	 */
+	public int dwDistMeasure;
+	/**
+	 * / 温度值,单位℃
+	 */
+	public int nTemperature;
+	/**
+	 * / 湿度值,单位RH
+	 */
+	public int nHumidity;
+	/**
+	 * / 流量值,单位m^3
+	 */
+	public int dwWaterFlow;
+	/**
+	 * / 报警状态: 正常 FALSE, 报警 TRUE
+	 */
+	public int bAlarmFlag;
+	/**
+	 * / 保留字节
+	 */
+	public byte[] szReversed = new byte[40];
+
+	public EVENT_SNAPBYTIME_DATA() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_VEHICLE_INFO.java
new file mode 100644
index 0000000..1a5fa5e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EVENT_VEHICLE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 行人信息
+ * @origin autoTool
+ * @date 2023/08/01 13:57:45
+ */
+public class EVENT_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 物体类型,Passerby表示行人
+	 */
+	public byte[] szCategory = new byte[64];
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[64];
+
+	public EVENT_VEHICLE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EmptyStructure.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EmptyStructure.java
new file mode 100644
index 0000000..c0f8213
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/EmptyStructure.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 空结构体, 代替一些只有长度的出参结构体
+ * @date 2020/9/21
+ */
+public class EmptyStructure extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public EmptyStructure() {
+        this.dwSize = size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java
new file mode 100644
index 0000000..0bf4206
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_ANALYSE_CAPS.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体识别能力集
+ * @date 2021/01/11
+ */
+public class FACEBODY_ANALYSE_CAPS extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持检测的人脸属性,参考枚举CFG_EM_FACE_TRAIT
+	 */
+	public int[] szFaceFeatureList = new int[32];
+	
+	/**
+	 * 返回的人脸属性个数
+	 */
+	public int nFaceFeature;
+		
+	/**
+	 * 支持检测的人体属性,参考枚举CFG_EM_BODY_TRAIT
+	 */
+	public int[] szBodyFeatureList = new int[32];
+	
+	/**
+	 * 返回的人体属性个数
+	 */
+	public int nBodyFeature;
+	
+	/**
+	 * 支持抓拍属性,参考枚举CFG_EM_FACE_SNAP_POLICY
+	 */
+	public int[] szSnapPolicyList = new int[16];
+	
+	/**
+	 * 返回的抓拍属性个数
+	 */
+	public int nSnapPolicy;
+	
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_DETECT_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_DETECT_CAPS.java
new file mode 100644
index 0000000..4ebb6ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACEBODY_DETECT_CAPS.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体检测能力集
+ * @date 2021/01/11
+ */
+public class FACEBODY_DETECT_CAPS extends NetSDKLib.SdkStructure{
+	/**
+	 * 支持检测的人脸属性,参考枚举CFG_EM_FACE_TRAIT
+	 */
+	public int[] szFaceFeatureList = new int[32];
+	
+	/**
+	 * 返回的人脸属性个数
+	 */
+	public int nFaceFeature;
+		
+	/**
+	 * 支持检测的人体属性,参考枚举CFG_EM_BODY_TRAIT
+	 */
+	public int[] szBodyFeatureList = new int[32];
+	
+	/**
+	 * 返回的人体属性个数
+	 */
+	public int nBodyFeature;
+	
+	/**
+	 * 支持抓拍属性,参考枚举CFG_EM_FACE_SNAP_POLICY
+	 */
+	public int[] szSnapPolicyList = new int[16];
+	
+	/**
+	 * 返回的抓拍属性个数
+	 */
+	public int nSnapPolicy;
+	
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[256];
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java
new file mode 100644
index 0000000..fb1c46b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACERECOGNITION_PERSON_INFOEX.java
@@ -0,0 +1,108 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_PERSON_FEATURE_ERRCODE;
+
+import static com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * className:FACERECOGNITION_PERSON_INFOEX description: 人员信息扩展结构体 author:251589
+ * createTime:2020/12/28 10:47
+ *
+ * @version v1.0
+ */
+public class FACERECOGNITION_PERSON_INFOEX extends NetSDKLib.SdkStructure {
+  /** 姓名 */
+  public byte[] szPersonName = new byte[NET_MAX_PERSON_NAME_LEN];
+  /** 出生年,作为查询条件时,此参数填0,则表示此参数无效 */
+  public short wYear;
+  /** 出生月,作为查询条件时,此参数填0,则表示此参数无效 */
+  public byte byMonth;
+  /** 出生日,作为查询条件时,此参数填0,则表示此参数无效 */
+  public byte byDay;
+  /** 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效 */
+  public byte bImportantRank;
+  /** 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效 */
+  public byte bySex;
+  /** 人员唯一标示(证件号码,工号,或其他编号) */
+  public byte[] szID = new byte[NET_MAX_PERSON_ID_LEN];
+  /** 图片张数 */
+  public short wFacePicNum;
+  /** 当前人员对应的图片信息 */
+  public Net_PIC_INFO[] szFacePicInfo = new Net_PIC_INFO[NET_MAX_PERSON_IMAGE_NUM];
+  /** 人员类型,详见 EM_PERSON_TYPE */
+  public byte byType;
+  /** 证件类型,详见 EM_CERTIFICATE_TYPE */
+  public byte byIDType;
+  /** 是否戴眼镜,0-未知 1-不戴 2-戴 */
+  public byte byGlasses;
+  /** 年龄,0表示未知 */
+  public byte byAge;
+  /** 省份 */
+  public byte[] szProvince = new byte[NET_MAX_PROVINCE_NAME_LEN];
+  /** 城市 */
+  public byte[] szCity = new byte[NET_MAX_CITY_NAME_LEN];
+  /** 人员唯一标识符,首次由服务端生成,区别于ID字段 */
+  public byte[] szUID = new byte[NET_MAX_PERSON_ID_LEN];
+  /** 国籍,符合ISO3166规范 */
+  public byte[] szCountry = new byte[NET_COUNTRY_LENGTH];
+  /** 人员类型是否为自定义: 0 使用Type规定的类型 1 自定义,使用szCustomType字段 */
+  public byte byIsCustomType;
+  /** 人员自定义类型 */
+  public byte[] szCustomType = new byte[NET_COMMON_STRING_16];
+  /** 备注信息 */
+  public byte[] szComment = new byte[NET_COMMENT_LENGTH];
+  /** 人员所属组ID */
+  public byte[] szGroupID = new byte[NET_GROUPID_LENGTH];
+  /** 人员所属组名, 用户自己申请内存的情况时, */
+  public byte[] szGroupName = new byte[NET_GROUPNAME_LENGTH];
+  /** 表情,对应{@link EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE} */
+  public int emEmotion;
+  /** 注册人员家庭地址 */
+  public byte[] szHomeAddress = new byte[NET_COMMON_STRING_128];
+  /** 眼镜类型 */
+  public int emGlassesType;
+  /**  */
+  public byte[] szReserved1 = new byte[4];
+  /** 眼睛状态,对应{@link EM_EYE_STATE_TYPE} */
+  public int emEye;
+  /** 嘴巴状态,对应{@link EM_MOUTH_STATE_TYPE} */
+  public int emMouth;
+  /** 口罩状态,对应{@link EM_MASK_STATE_TYPE} */
+  public int emMask;
+  /** 胡子状态,对应{@link EM_BEARD_STATE_TYPE} */
+  public int emBeard;
+  /** 魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高,对应{@link EM_PERSON_FEATURE_STATE} */
+  public int nAttractive;
+  /** 人员建模状态,对应{@link EM_PERSON_FEATURE_STATE} */
+  public int emFeatureState;
+  /** 是否指定年龄段 */
+  public int bAgeEnable;
+  /** 年龄范围 */
+  public int[] nAgeRange = new int[2];
+  /** 人脸特征数组有效个数,与 emFeature 结合使用, 如果为0则表示查询所有表情 */
+  public int nEmotionValidNum;
+  /** 人脸特征数组,与 byFeatureValidNum 结合使用 设置查询条件的时候使用 */
+  public int[] emEmotions = new int[NET_MAX_FACEDETECT_FEATURE_NUM];
+  /** 注册人员信息扩展个数 */
+  public int nCustomPersonInfoNum;
+  /** 注册人员信息扩展 */
+  public CUSTOM_PERSON_INFO[] szCustomPersonInfo =
+      new CUSTOM_PERSON_INFO[NET_MAX_CUSTOM_PERSON_INFO_NUM];
+  /** 注册库类型,对应{@link EM_REGISTER_DB_TYPE} */
+  public int emRegisterDbType;
+  /** 有效期时间 */
+  public NET_TIME stuEffectiveTime;
+  /** 建模失败原因,对应{@link EM_PERSON_FEATURE_ERRCODE} */
+  public int emFeatureErrCode;
+  /** 人脸图片张数 */
+  public int wFacePicNumEx;
+  /** 当前人员对应的图片信息 */
+  public NET_FACE_PIC_INFO[] szFacePicInfoEx = new NET_FACE_PIC_INFO[6];
+  /** 人员特征信息 */
+  public NET_PERSON_FEATURE_VALUE_INFO stuPersonFeatureValue;
+  /** 人员冻结状态 */
+  public boolean bFrozenStatus;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[392];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_FEATURE_ABSTRACT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_FEATURE_ABSTRACT_INFO.java
new file mode 100644
index 0000000..ad48423
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_FEATURE_ABSTRACT_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 目标特征向量重建结果信息
+ * @origin autoTool
+ * @date 2023/06/28 10:00:12
+ */
+public class FACE_FEATURE_ABSTRACT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 计算特征向量结果 {@link com.netsdk.lib.enumeration.EM_ABSTRACT_STATE}
+     */
+    public int emAbstractState;
+    /**
+     * 人员组重建进度,百分比
+     */
+    public int nProcess;
+    /**
+     * 重建完成的人员编号, IVSS支持
+     */
+    public byte[] szUID = new byte[32];
+    /**
+     * 重建完成的人员组ID, IPC支持
+     */
+    public byte[] szGroupId = new byte[64];
+    /**
+     * 人员组建模成功的个数,IPC支持
+     */
+    public int nSucceedCnt;
+    /**
+     * 人员组建模失败的个数,IPC支持
+     */
+    public int nFailedCnt;
+    /**
+     * 建模失败记录的错误原因(当FailedCnt大于0时有效);IPC支持
+     * {@link com.netsdk.lib.enumeration.EM_FEATURE_ERROR_CODE}
+     */
+    public int emFeatureError;
+    /**
+     * 该次建模的token值,建模时提供原样返回,IPC支持
+     */
+    public int nToken;
+    /**
+     * 保留扩展字节
+     */
+    public byte[] byReserved = new byte[496];
+
+    public FACE_FEATURE_ABSTRACT_INFO() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_TRAIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_TRAIT.java
new file mode 100644
index 0000000..78a91b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FACE_TRAIT.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 人脸属性
+ * @date 2021/8/24 14:14
+ */
+public class FACE_TRAIT extends NetSDKLib.SdkStructure{
+    /**参考枚举 EM_SEX_TYPE */
+    public int					emSex;				// 性别
+    public int						nAge;				// 年龄
+   /**参考枚举 EM_HAS_GLASS */
+    public int			emGlass;			// 眼镜
+    /**参考枚举  EM_BEARD_STATE_TYPE */
+    public int			emBeard;			// 胡子
+    /** */
+    public byte[]       szReserved = new byte[4];
+    /**参考枚举 EM_MASK_STATE_TYPE */
+    public	int		emMask;				// 口罩
+    /**参考枚举 EM_FACE_TRAIT_EMOTION_TYPE */
+    public int	emEmotion;			// 表情
+    public NET_TIME_EX					stuSnapTime=new NET_TIME_EX();		// 抓拍时间
+    /**参考枚举  EM_FACE_TRAIT_ALIVE_TYPE*/
+    public int	emAlive;			// 活体信息
+
+    public byte[]						byReserved=new  byte[1020];	// 预留字段
+
+    @Override
+    public String toString() {
+        return "FACE_TRAIT{" +
+                "emSex=" + emSex +
+                ", nAge=" + nAge +
+                ", emGlass=" + emGlass +
+                ", emBeard=" + emBeard +
+                ", emMask=" + emMask +
+                ", emEmotion=" + emEmotion +
+                ", stuSnapTime=" + stuSnapTime +
+                ", emAlive=" + emAlive +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java
new file mode 100644
index 0000000..f6b0cd5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 消费记录查询条件
+* @date 2022/03/08 17:30:31
+*/
+public class FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+启用用户查询
+*/
+public			int					bUserIDEnable;
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[256];
+/** 
+启用卡号查询
+*/
+public			int					bCardNoEnable;
+/** 
+卡号
+*/
+public			byte[]					szCardNo=new byte[32];
+/** 
+启用时间段查询
+*/
+public			int					bTimeEnable;
+/** 
+起始时间
+*/
+public NET_TIME stStartTime=new NET_TIME();
+/** 
+结束时间
+*/
+public NET_TIME stEndTime=new NET_TIME();
+
+public FIND_RECORD_ACCESS_CTL_CONSUMPTION_INFO_CONDITION(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/GLOBAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/GLOBAL_INFO.java
new file mode 100644
index 0000000..5b4fbfd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/GLOBAL_INFO.java
@@ -0,0 +1,142 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 全局参数信息
+ * @date 2021/09/28
+ */
+public class GLOBAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 灯组故障等级。参考枚举{ @link EM_LIGHTGROUP_FAULT_LEVEL }
+	 */
+	public int emLightGroupFault;
+
+	/**
+	 * 倒计时方式。参考枚举{ @link EM_COUNTDOWN_TYPE }
+	 */
+	public int emCountDownType;
+
+	/**
+	 * 脉冲式倒计时脉冲宽度(单位ms)
+	 */
+	public int nPulseWidth;
+
+	/**
+	 * 脉冲式倒计时倒计时时间(单位s)
+	 */
+	public int nPulseTime;
+
+	/**
+	 * 485倒计时波特率 INTEGER(2400 4800 9600 19200 38400)
+	 */
+	public int nBaudRault;
+
+	/**
+	 * 485倒计时使用协议(0:GAT208-2004 1:GAT208-2014)
+	 */
+	public int nGatType;
+
+	/**
+	 * 半程485倒计时时间(单位秒)
+	 */
+	public int nHalfTime;
+
+	/**
+	 * 未配置相位运行模式1:全红 2:关灯 3:黄闪 4:红闪 -1不设置
+	 */
+	public int nDefaultRunModel;
+
+	/**
+	 * 可变车道通讯方式选择 0:供电式 1:通讯式 -1不设置
+	 */
+	public int nVarLaneCommunicationType;
+
+	/**
+	 * 自动维护使能:0-不启用,1-启用 -1不设置
+	 */
+	public int nAutoProtectEnable;
+
+	/**
+	 * 自动维护星期。参考枚举{ @link EM_AUTO_PROTECT_WEEK }
+	 */
+	public int emAutoProtectWeek;
+
+	/**
+	 * 自动维护小时
+	 */
+	public int nAutoProtectHour;
+
+	/**
+	 * 自动维护分钟
+	 */
+	public int nAutoProtectMinute;
+
+	/**
+	 * 通道自动解锁时间(0-65535)
+	 */
+	public int nControlUnlockTime;
+
+	/**
+	 * 故障是否推送(按位表示,置0表示开启上报,置1表示关闭上报.bit0:灯组故障bit1:检测器故障bit2:绿冲突故障bit3:外围板故障bit4:
+	 */
+	public int nFaultReport;
+
+	/**
+	 * 额定电压值
+	 */
+	public int nRatedVoltage;
+
+	/**
+	 * 百分比值个数
+	 */
+	public int nPercentageValNum;
+
+	/**
+	 * 百分比值;array[0]:百分比1(关机电压比)/ array[1]:百分比2(闪烁启动电压比)/array[2]:百分比3
+	 */
+	public int[] nPercentageVal = new int[4];
+
+	/**
+	 * 开机启动灯色个数
+	 */
+	public int nStartUpLampNum;
+
+	/**
+	 * 开机启动灯色 1:红灯 2:黄灯 4: 红闪 5: 黄闪 ; array[n]:阶段n灯色,n <3
+	 */
+	public int[] nStartUpLamp = new int[3];
+
+	/**
+	 * 开机启动时间个数
+	 */
+	public int nStartUpTimeNum;
+
+	/**
+	 * 开机启动时间 array[n]:阶段n时间,n <3
+	 */
+	public int[] nStartUpTime = new int[3];
+
+	/**
+	 * 平台下发临时控制: 1-阶段切换 2-阶段驻留 3-阶段锁相 4-通道锁定 5-还原
+	 */
+	public int nPlatformCtrl;
+	
+	/**
+	 * 平台下发控制详细值个数
+	 */
+	public int nPlatformCtrlValNum;
+	
+	/**
+	 * 平台下发控制详细值
+	 * 当ctrl等于3-阶段锁相时,该数组代表需要锁定的相位集合,且每个相位占用两个字节,低字节代表相位编号,高字节代表重复出现的次数,例如锁定相位为A1,B2,则内容值为[1,1,2,2]
+	 * 当ctrl等于4-通道锁定时,该数组代表需要锁定通道的集合,其余为0
+	 */
+	public int[] nPlatformCtrlVal = new int[16];
+
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[952];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java
new file mode 100644
index 0000000..01901b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO.java
@@ -0,0 +1,176 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否与其他目标关联
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class HUMAN_ATTRIBUTES_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  上衣颜色
+     */
+    public int					emCoatColor;
+
+    /**
+     *  上衣类型
+     */
+    public int					emCoatType;
+
+    /**
+     *  裤子颜色
+     */
+    public int					emTrousersColor;
+
+    /**
+     *  裤子类型
+     */
+    public int					emTrousersType;
+
+    /**
+     *  是否戴帽子
+     */
+    public int					emHasHat;
+
+    /**
+     *  是否带包
+     */
+    public int					emHasBag;
+
+    /**
+     *  包围盒(8192坐标系)
+     */
+    public NET_RECT					stuBoundingBox = new NET_RECT();
+
+    /**
+     *  年龄
+     */
+    public int					nAge;
+    /**
+     *  性别
+     */
+    public int					emSex;
+
+    /**
+     *  角度
+     */
+    public int					emAngle;
+
+    /**
+     *  是否打伞
+     */
+    public int					emHasUmbrella;
+
+    /**
+     *  包类型
+     */
+    public int					emBag;
+
+    /**
+     *  上半身衣服图案
+     */
+    public int					emUpperPattern;
+
+    /**
+     *  头发样式
+     */
+    public int					emHairStyle;
+
+    /**
+     *  帽类型
+     */
+    public int					emCap;
+
+    /**
+     *  人体型心(不是包围盒中心), 0-8191相对坐标, 相对于大图
+     */
+    public NetSDKLib.NET_POINT stuHumanCenter = new NetSDKLib.NET_POINT();
+
+    /**
+     *  是否有反光背心;
+     */
+    public int					emHasVest;
+
+    /**
+     *  是否佩戴工牌
+     */
+    public int					emHasBadge;
+
+    /**
+     *  是否推婴儿车
+     */
+    public int					emHasBabyCarriage;
+
+    /**
+     *  是否虚检(背景误检,仅头,仅下半身都会判定为虚检)
+     */
+    public int					emIsErrorDetect;
+
+    /**
+     *  人体部位是否有头
+     */
+    public int					emHasHead;
+
+    /**
+     *  人体部位是否有下半身
+     */
+    public int					emHasDownBody;
+
+    /**
+     *  姿态置信度,质量评估总分0到100
+     */
+    public int					nAngleConf;
+    /**
+     *  上衣颜色置信度,质量评估总分0到100
+     */
+    public int					nUpColorConf;
+    /**
+     *  下衣颜色置信度,质量评估总分0到100
+     */
+    public int					nDownColorConf;
+    /**
+     *  性别置信度,质量评估总分0到100
+     */
+    public int					nGenderConf;
+    /**
+     *  年龄段置信度,质量评估总分0到100
+     */
+    public int					nAgeConf;
+    /**
+     *  帽子类型置信度,质量评估总分0到100
+     */
+    public int					nHatTypeConf;
+    /**
+     *  上衣种类置信度,质量评估总分0到100
+     */
+    public int					nUpTypeConf;
+    /**
+     *  下衣种类置信度,质量评估总分0到100
+     */
+    public int					nDownTypeConf;
+    /**
+     *  发型种类置信度,质量评估总分0到100
+     */
+    public int					nHairTypeConf;
+    /**
+     *  人体部位是否有头的置信度,质量评估总分0到100
+     */
+    public int					nHasHeadConf;
+    /**
+     *  人体部位是否有下半身置信度,质量评估总分0到100
+     */
+    public int					nHasDownBodyConf;
+    /**
+     *  制服类型置信度,质量评估总分0到100
+     */
+    public int					nUniformStyleConf;
+    /**
+     *  预留字节
+     */
+    public byte					byReserved[] = new byte[4];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java
new file mode 100644
index 0000000..f0b7889
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/HUMAN_ATTRIBUTES_INFO_EX.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 是否与其他目标关联
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class HUMAN_ATTRIBUTES_INFO_EX extends NetSDKLib.SdkStructure {
+
+    /**
+     *  是否戴帽子
+     */
+    public int					emHasRainCoat;
+
+    /**
+     *  口罩颜色
+     */
+    public int					emMaskColor;
+
+    /**
+     *  人体优选分数
+     */
+    public int					nQeScore;
+    /**
+     *  目标完整性,0-完整,非0-不完整,视频流时值有效。
+     */
+    public int					nIntegrality;
+    /**
+     *  是否与其他目标关联
+     */
+    public int					emExtRecordSource;
+
+    /**
+     *  预留字节
+     */
+    public byte					byReserved[] = new byte[1024];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/IDENTITY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/IDENTITY_INFO.java
new file mode 100644
index 0000000..02f21ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/IDENTITY_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  身份信息
+ * @date 2021/9/9
+ */
+
+public class IDENTITY_INFO extends NetSDKLib.SdkStructure {
+ /** 法定姓名*/
+ public			byte[]					szCitizenName=new byte[128];
+ /** 性别 ,参考枚举{@link NetSDKLib.EM_SEX_TYPE } */
+ public			int					emSex;
+ /** 证件号18位*/
+ public			byte[]					szCitizenIDNo=new byte[20];
+ /** 年龄*/
+ public			int					nAge;
+
+ public byte[] szReserved=new byte[512];          // 预留字节
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_GROUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_GROUP_INFO.java
new file mode 100644
index 0000000..19a7a06
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_GROUP_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯组灯色信息
+ * @date 2021/09/01
+ */
+public class LAMP_GROUP_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  灯组编号
+     */
+    public int nLampNo;
+
+    /**
+     *  灯组类型,参考{ @link EM_LAMP_TYPE }
+     */
+    public int emLampType;
+
+    /**
+     *  信号灯组灯色剩余时间,整数,单位为秒(s)
+     */
+    public int nRemainTime;
+
+    /**
+     *  灯组灯色个数
+     */
+    public int nLampColorCount;
+
+    /**
+     *  灯组灯色 0:无灯1:灭灯2:亮灯3:闪烁 ,参考{ @link EM_LAMP_COLOR}
+     */
+    public int[] nLampColor = new int[4];
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_INFO.java
new file mode 100644
index 0000000..33b50fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯组/灯色公共信息
+ * @date 2021/09/01
+ */
+public class LAMP_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  灯组类型,参考{ @link EM_LAMP_TYPE }
+     */
+    public int emLampType;
+
+    /**
+     *  灯组编号 
+     */
+    public int nLampNo;
+
+    /**
+     *  色步数
+     */
+    public int nStepNumber;
+
+    /**
+     *  色步时间序列信息个数
+     */
+    public int nStepSequenceInfoNum;
+
+    /**
+     *  色步时间序列信息 
+     */
+    public STEP_SEQUENCE_INFO[] stuStepSequenceInfo = (STEP_SEQUENCE_INFO[]) new STEP_SEQUENCE_INFO().toArray(10);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_STATE.java
new file mode 100644
index 0000000..b3bdf45
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAMP_STATE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯色状态信息
+ * @date 2021/09/01
+ */
+public class LAMP_STATE extends NetSDKLib.SdkStructure{
+	 /**
+     *  信号灯控制路口的进口数量(0~8)
+     */
+    public int nEnterNumber;
+
+    /**
+     *  进口灯色状态信息个数
+     */
+    public int nEnterInfoNum;
+
+    /**
+     *  进口灯色状态信息,包含1到N(路口进口数量)个进口灯色状态信息
+     */
+    public ENTER_INFO[] stuEnterInfo = (ENTER_INFO[]) new ENTER_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_CTRL_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_CTRL_STATE.java
new file mode 100644
index 0000000..6956742
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_CTRL_STATE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车道/匝道控制状态
+ * @date 2021/09/01
+ */
+public class LANE_CTRL_STATE extends NetSDKLib.SdkStructure{
+	 /**
+     *  车道/匝道数量
+     */
+    public int nNumber;
+
+    /**
+     *  控制信息个数
+     */
+    public int nCtrlNum;
+
+    /**
+     *  控制信息(0-64) 
+     */
+    public CTRL_INFO[] stuCtrlInfo = (CTRL_INFO[]) new CTRL_INFO().toArray(64);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE.java
new file mode 100644
index 0000000..c454654
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车道功能状态
+ * @date 2021/09/01
+ */
+public class LANE_STATE extends NetSDKLib.SdkStructure{
+	/**
+     *  功能可变车道进口数量路口具有功能可变车道进口的数量
+     */
+    public int nEnterNumber;
+
+    /**
+     *  进口车道功能状态信息个数
+     */
+    public int nEnterLaneStateNum;
+
+    /**
+     *  进口车道功能状态信息(0~8)包含1到N(功能可变车道进口数量)个进口车道功能状态信息
+     */
+    public ENTER_LANE_STATE[] stuEnterLaneStateInfo = (ENTER_LANE_STATE[]) new ENTER_LANE_STATE().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO.java
new file mode 100644
index 0000000..9013704
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车道交通运行状态信息
+ * @date 2021/09/01
+ */
+public class LANE_STATE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  车道类型 
+     *  车道类型 按位表示,Bit0~Bit15分别为: Bit0:直行 Bit1:左转 Bit2:右转 Bit3:掉头 Bit4:可变功能 Bit5:潮汐 Bit6:非机动 Bit7:公交专用 Bit8:有轨电车 Bit9~ Bit15保留 取值1表示具有,0表示不具有 
+     */
+    public int nType;
+    
+    /**
+     * 车道交通运行状态,参考枚举{ @link EM_LANE_RUNING_STATE}
+     */
+    public int emLaneRunState;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO_EX.java
new file mode 100644
index 0000000..c736854
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LANE_STATE_INFO_EX.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车道信息(0~8)
+ * @date 2021/09/14
+ */
+public class LANE_STATE_INFO_EX extends NetSDKLib.SdkStructure{
+	
+	 /**
+     *  车道类型 
+     *  按位表示,Bit0~Bit15分别为: Bit0:直行 Bit1:左转 Bit2:右转 Bit3:掉头 Bit4:可变功能 Bit5:潮汐 Bit6:非机动 Bit7:公交专用 Bit8:有轨电车 Bit9~ Bit15保留 取值1表示具有,0表示不具有
+     */
+    public int nType;   
+
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAN_TRAFFIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAN_TRAFFIC_INFO.java
new file mode 100644
index 0000000..b733023
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LAN_TRAFFIC_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车道交通流信息
+ * @date 2021/09/01
+ */
+public class LAN_TRAFFIC_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  统计周期(秒)
+     */
+    public int nPeriod;
+
+    /**
+     *  车道类型
+     */
+    public int nLaneType;
+
+    /**
+     *  交通流量统计周期内通过的车辆数
+     */
+    public int nTrafficFlux;
+
+    /**
+     *  断面车辆平均速度单位为千米每小时(km/h)
+     */
+    public int nAverageSpeed;
+
+    /**
+     *  区间车辆平均速度单位为千米每小时(km/h)
+     */
+    public int nIntervalAverageSpeed;
+
+    /**
+     *  时间占有率(0-100)
+     */
+    public int nTimeOccupyRatio;
+
+    /**
+     *  空间占有率(0-100)
+     */
+    public int nSpaceOccupyRatio;
+
+    /**
+     *  排队长度 单位为米
+     */
+    public int nQueueLen;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LIGHT_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LIGHT_COLOR_INFO.java
new file mode 100644
index 0000000..4b33a64
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LIGHT_COLOR_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯色信息
+ * @date 2021/09/01
+ */
+public class LIGHT_COLOR_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  灯组/灯色公共信息
+     */
+    public LAMP_INFO stuLampInfo;
+
+    /**
+     *  色步数
+     */
+    public int nStepNumber;
+
+    /**
+     *  色步时间序列信息个数
+     */
+    public int nStepSequenceInfoNum;
+
+    /**
+     *  色步时间序列信息 
+     */
+    public STEP_SEQUENCE_INFO[] stuStepSequenceInfo = (STEP_SEQUENCE_INFO[]) new STEP_SEQUENCE_INFO().toArray(10);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LPNET_RECORDFILE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LPNET_RECORDFILE_INFO.java
new file mode 100644
index 0000000..032fb3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/LPNET_RECORDFILE_INFO.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录像文件信息
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 15:47
+ */
+public class LPNET_RECORDFILE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int ch;
+    /**
+     * 文件名
+     */
+    public byte[] filename = new byte[124];
+    /**
+     * 文件总帧数
+     */
+    public int framenum;
+    /**
+     * 文件长度, 单位为 Kbyte
+     */
+    public int size;
+    /**
+     * 开始时间
+     */
+    public NET_TIME starttime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME endtime;
+    /**
+     * 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像)
+     */
+    public int driveno;
+    /**
+     * 起始簇号
+     */
+    public int startcluster;
+    /**
+     * 录象文件类型  0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片, 5: 智能录像, 19: POS录像, 255:所有录像
+     */
+    public byte nRecordFileType;
+    /**
+     * 0:普通录像 1:重要录像
+     */
+    public byte bImportantRecID;
+    /**
+     * 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 )
+     */
+    public byte bHint;
+    /**
+     * 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像
+     */
+    public byte bRecType;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MANUAL_SNAP_PARAMETER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MANUAL_SNAP_PARAMETER.java
new file mode 100644
index 0000000..9828eab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MANUAL_SNAP_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 手动抓拍参数
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/29 19:53
+ */
+public class MANUAL_SNAP_PARAMETER extends NetSDKLib.SdkStructure {
+    /**
+     * 抓图通道, 从0开始
+     */
+    public int nChannel;
+    /**
+     * 抓图序列号字符串
+     */
+    public byte[] bySequence = new byte[64];
+    /**
+     * 保留字段
+     */
+    public byte[] byReserved = new byte[60];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java
new file mode 100644
index 0000000..46d3a62
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 测温查询候选人信息
+ * @date 2021/02/22
+ */
+public class MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  相似度,值越大,越相似
+     */
+    public int nSimilarity;
+
+    /**
+     *  人信息 
+     */
+    public NetSDKLib.FACERECOGNITION_PERSON_INFOEX stuPersonInfo;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved = new byte[2048];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java
new file mode 100644
index 0000000..e557d10
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 目标检测信息
+ * @date 2021/02/22
+ */
+public class MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT extends NetSDKLib.SdkStructure{
+	 /**
+     *  性别,参考枚举{@link NetSDKLib.EM_SEX_TYPE }
+     */
+    public int emSex;
+
+    /**
+     *  年龄
+     */
+    public int nAge;
+
+    /**
+     *  人脸表情,参考枚举{@link NetSDKLib.EM_DEV_EVENT_FACEDETECT_FEATURE_TYPE }
+     */
+    public int emEmotion;
+
+    /**
+     * 
+     */
+    public byte[] szReserved1 = new byte[4];
+
+    /**
+     *  眼睛状态,参考枚举{@link NetSDKLib.EM_EYE_STATE_TYPE }
+     */
+    public int emEye;
+
+    /**
+     *  嘴巴状态,参考枚举{@link NetSDKLib.EM_MOUTH_STATE_TYPE }
+     */
+    public int emMouth;
+
+    /**
+     *  口罩状态,参考枚举{@link NetSDKLib.EM_MASK_STATE_TYPE }
+     */
+    public int emMask;
+
+    /**
+     *  胡子状态,参考枚举{@link NetSDKLib.EM_BEARD_STATE_TYPE }
+     */
+    public int emBeard;
+
+    /**
+     *  魅力值, -1表示无效, 0未识别,识别时范围1-100,得分高魅力高
+     */
+    public int nAttractive;
+
+    /**
+     *  
+     */
+    public byte[] byReserved1 = new byte[4];
+
+    /**
+     *  眼镜类型,参考枚举{@link NetSDKLib.EM_FACEDETECT_GLASSES_TYPE } 
+     */
+    public int emGlasses;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved = new byte[1020];
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java
new file mode 100644
index 0000000..585933f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 目标识别信息
+ * @date 2021/02/22
+ */
+public class MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT extends NetSDKLib.SdkStructure {
+	/**
+     *  全景图是否存在
+     */
+    public int bGlobalScenePic;
+
+    /**
+     *  全景图片文件路径
+     */
+    public NetSDKLib.NET_PIC_INFO_EX stuGlobalScenePic;
+
+    /**
+     *  当前人脸匹配到的候选对象数量
+     */
+    public int nCandidateNum;
+
+    /**
+     *  当前人脸匹配到的候选对象信息, 实际返回个数为 nCandidateNum
+     */
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO[] stuCandidates = (MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO[]) new MEDIAFILE_ANATOMY_TEMP_DETECT_CANDIDATE_INFO().toArray(NetSDKLib.NET_MAX_CANDIDATE_NUM);
+      /**
+     *  人脸小图信息
+     */
+    public NetSDKLib.FACE_INFO_OBJECT stuFaceInfo;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved = new byte[1024];
+    
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT() {
+    	
+    }
+    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java
new file mode 100644
index 0000000..2c12465
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_INFO.java
@@ -0,0 +1,148 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 热成像人体测温查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_ANATOMY_TEMP_DETECT )
+ * @date 2021/02/22
+ */
+public class MEDIAFILE_ANATOMY_TEMP_DETECT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小 
+     */
+    public int dwSize;
+
+    /**
+     *  通道号从0开始,-1表示查询所有通道
+     */
+    public int nChannelID;
+
+    /**
+     *  开始时间 
+     */
+    public NET_TIME stuBeginTime;
+
+    /**
+     *  结束时间 
+     */
+    public NET_TIME stuEndTime;
+
+    /**
+     *  事件发生时间
+     */
+    public NET_TIME stuEventTime;
+
+    /**
+     *  文件长度
+     */
+    public long nFileSize;
+
+    /**
+     *  文件类型,查考枚举{ @link EM_FILE_TYPE}
+     */
+    public int emFileType;
+
+    /**
+     *  文件路径 
+     */
+    public byte[] szFilePath = new byte[NetSDKLib.MAX_PATH];
+
+    /**
+     *  关联的事件列表,事件类型列表,参见智能分析事件类型
+     */
+    public int[] nEventList = new int[NetSDKLib.MAX_IVS_EVENT_NUM];
+
+    /**
+     *  事件总数
+     */
+    public int nEventCount;
+
+    /**
+     *  分区号
+     */
+    public int nPartition;
+
+    /**
+     *  磁盘号
+     */
+    public int nDriveNo;
+
+    /**
+     *  簇号
+     */
+    public int nCluster;
+
+    /**
+     *  表示在簇中的图片序号
+     *  对于同一个簇中打包多张图片,提供索引方式定位图片
+     */
+    public int nPicIndex;
+
+    /**
+     *  温度信息(低、正常、超温有效),查考枚举{ @link EM_QUERY_TEMPERATURE_TYPE}
+     */
+    public int emTempType;
+
+    /**
+     *  温度值 
+     */
+    public double dbTemperature;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved1 = new byte[4];
+
+    /**
+     *  关联的智能事件码: EVENT_IVS_ANATOMY_TEMP_DETECT,EVENT_IVS_FACEDETECT,EVENT_IVS_FACERECOGNITION 
+     */
+    public int nEventType;
+
+    /**
+     *  nEventType 为 EVENT_IVS_ANATOMY_TEMP_DETECT 时,有效
+     */
+    public NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT stuAnatomyDetectResult;
+
+    /**
+     *  nEventType 为 EVENT_IVS_FACEDETECT 时,有效
+     */
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_FACEDETECT_RESULT stuFaceDetectResult;
+
+    /**
+     *  nEventType 为 EVENT_IVS_FACERECOGNITION 时,有效 
+     */
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_FACERECOGNITION_RESULT stuFaceRecognitionResult;
+
+    /**
+     *  目标图路径
+     */    
+    public ObjectPath[] szObjectPath = (ObjectPath[])new ObjectPath().toArray(8);   
+
+    /**
+     *  szObjectPath 的个数
+     */
+    public int nObjectPathNum;
+
+    /**
+     *  人脸图路径
+     */
+    public byte[] szFacePicturePath = new byte[NetSDKLib.MAX_PATH];
+    /**
+     * 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime)
+     */
+	public int	bRealUTC;	
+	/**
+	 * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+	 */
+	public NET_TIME	stuStartTimeRealUTC;
+	/**
+	 * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+	 */
+	public NET_TIME	stuEndTimeRealUTC;
+
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_INFO(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java
new file mode 100644
index 0000000..ed0faef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 热成像人体测温查询条件( CLIENT_FindFileEx + DH_FILE_QUERY_ANATOMY_TEMP_DETECT )
+ * @date 2021/02/22
+ */
+public class MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小 
+     */
+    public int dwSize;
+
+    /**
+     *  通道号,从0开始,-1表示查询所有通道
+     */
+    public int nChannelID;
+
+    /**
+     *  开始时间 
+     */
+    public NET_TIME stuBeginTime;
+
+    /**
+     *  结束时间 
+     */
+    public NET_TIME stuEndTime;
+
+    /**
+     *  过滤信息
+     */
+    public NET_ANATOMY_TEMP_DETECT_FILTER stuFilter;
+    
+	/**
+	 * 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime),
+	 * 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+	 */
+	public int bOnlySupportRealUTC;
+
+	/**
+	 * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+	 */
+	public NET_TIME stuStartTimeRealUTC;
+
+	/**
+	 * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+	 */
+	public NET_TIME stuEndTimeRealUTC;
+
+    public MEDIAFILE_ANATOMY_TEMP_DETECT_PARAM(){
+        this.dwSize = this.size();
+    }		
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_INFO.java
new file mode 100644
index 0000000..1da7c86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421557
+ * @description 消控室值班行为检测事件查询结果 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_CONTROL_MONITOR )
+ * @origin autoTool
+ * @date 2023/10/23 11:00:18
+ */
+public class MEDIAFILE_FIRE_CONTROL_MONITOR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 开始时间
+     */
+    public NET_TIME stuBeginTime = new NET_TIME();
+    /**
+     * / 结束时间
+     */
+    public NET_TIME stuEndTime = new NET_TIME();
+    /**
+     * / 文件路径
+     */
+    public byte[] szGlobalSceneFilePath = new byte[260];
+    /**
+     * / 文件长度
+     */
+    public int nGlobalSceneFileSize;
+    /**
+     * / 规则
+     */
+    public byte[] szRule = new byte[64];
+    /**
+     * / 包围盒,8192坐标系
+     */
+    public NET_RECT stuBoundingBox = new NET_RECT();
+    /**
+     * / 小图信息
+     */
+    public NET_EVENT_IMAGE_INFO stuImageInfo = new NET_EVENT_IMAGE_INFO();
+    /**
+     * / 文件类型,1:jpg, 2:dav,默认:jpg
+     */
+    public int nFileType;
+    /**
+     * / 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuBeginTime和stuEndTime有效(仅使用stuBeginTime和stuEndTime)
+     */
+    public int bRealUTC;
+    /**
+     * / UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+     */
+    public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+    /**
+     * / UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+     */
+    public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+
+    public MEDIAFILE_FIRE_CONTROL_MONITOR_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM.java
new file mode 100644
index 0000000..22bd225
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421557
+ * @description 消控室值班行为检测事件查询条件 ( CLIENT_FindFileEx + DH_FILE_QUERY_FIRE_CONTROL_MONITOR )
+ * @origin autoTool
+ * @date 2023/10/23 10:56:04
+ */
+public class MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 文件类型,0:查询任意类型,1:查询jpg图片,2:查询dav
+     */
+    public int nFileType;
+    /**
+     * / 通道号从0开始,-1表示查询所有通道
+     */
+    public int nChannelID;
+    /**
+     * / 开始时间
+     */
+    public NET_TIME stuBeginTime = new NET_TIME();
+    /**
+     * / 结束时间
+     */
+    public NET_TIME stuEndTime = new NET_TIME();
+    /**
+     * / 事件类型列表,参见智能分析事件类型,如EVENT_IVS_ALL、EVENT_IVS_SLEEP_DETECT
+     */
+    public int[] nEventList = new int[256];
+    /**
+     * / 事件总数
+     */
+    public int nEventCount;
+    /**
+     * / 过滤规则
+     */
+    public NET_FIRE_CONTROL_MONITOR_FILTER stuFilter = new NET_FIRE_CONTROL_MONITOR_FILTER();
+    /**
+     * / 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+     */
+    public int bOnlySupportRealUTC;
+    /**
+     * / UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+     */
+    public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+    /**
+     * / UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+     */
+    public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+
+    public MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java
new file mode 100644
index 0000000..0309b52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_INFO.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_MOBILE_ENFORCE_FILE_TYPE;
+import com.netsdk.lib.enumeration.EM_MOBILE_ENFORCE_FORMAT;
+
+/**
+ * 采集站和手持终端文件信息查询结果
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 12:09
+ */
+public class MEDIAFILE_MOBILE_ENFORCE_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号从0开始,-1表示查询所有通道
+	 */
+	public int nChannelID;
+	/**
+	 * 开始时间
+	 */
+	public NET_TIME stuStartTime;
+	/**
+	 * 结束时间
+	 */
+	public NET_TIME stuEndTime;
+	/**
+	 * 文件路径
+	 */
+	public byte[] szFilePath = new byte[260];
+	/**
+	 * 如果查询条件中指定的时间在文件内,此处Length表示整个文件长度,而不表示指定时间段的长度,单位字节
+	 */
+	public int nLength;
+	/**
+	 * 对应文件的唯一标示
+	 */
+	public byte[] szUniqueID = new byte[128];
+	/**
+	 * 表示原始文件创建设备的序列号ID
+	 */
+	public byte[] szOriginalDeviceID = new byte[128];
+	/**
+	 * 文件的真实类型 枚举值 {@link EM_MOBILE_ENFORCE_FORMAT}
+	 */
+	public int emFormat;
+	/**
+	 * 文件后缀类型 枚举值 {@link EM_MOBILE_ENFORCE_FILE_TYPE}
+	 */
+	public int emFileType;
+	/**
+	 * 文件名称
+	 */
+	public byte[] szFileName = new byte[256];
+	/**
+	 * 录像文件附加信息
+	 */
+	public byte[] szExtraInfos = new byte[256];
+
+	/**
+	 * 文件采集时间
+	 */
+	public NET_TIME stuCollectTime;
+
+	/**
+	 * 文件完整性校验ID
+	 */
+	public byte[] szIntegrityCheckID = new byte[128];
+
+	/**
+	 * 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC),
+	 * 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime)
+	 */
+	public int bRealUTC;
+
+	/**
+	 * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+	 */
+	public NET_TIME stuStartTimeRealUTC;
+
+	/**
+	 * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+	 */
+	public NET_TIME stuEndTimeRealUTC;
+
+	/**
+	 * 文件UTC采集时间(标准UTC时间)
+	 */
+	public NET_TIME stuCollectTimeRealUTC;
+	/**
+	 * 录像或抓图文件标志, 不设置标志表示查询所有文件,参考枚举{@link EM_RECORD_SNAP_FLAG_TYPE}
+	 */
+	public int[] emFlagList = new int[64];
+	/**
+	 * 标志总数
+	 */
+	public int nFlagNum;
+
+	public MEDIAFILE_MOBILE_ENFORCE_INFO() {
+		dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java
new file mode 100644
index 0000000..9161d19
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_MOBILE_ENFORCE_PARAM.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_MOBILE_ENFORCE_UPLOAD_FLAG;
+
+/**
+ * 采集站和手持终端文件信息查询条件 入参
+ * 接口 {@link NetSDKLib#CLIENT_FindFileEx}
+ * 枚举 {@link NetSDKLib.EM_FILE_QUERY_TYPE#NET_FILE_QUERY_MOBILE_ENFORCE}
+ *
+ * @author 47040
+ * @since Created at 2021/5/31 10:07
+ */
+public class MEDIAFILE_MOBILE_ENFORCE_PARAM extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号从 0 开始, -1 表示查询所有通道
+     */
+    public int nChannelID;
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuBeginTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * 文件上传标志 枚举值 {@link EM_MOBILE_ENFORCE_UPLOAD_FLAG}
+     */
+    public int emUploadFlag;
+    
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[66348];
+
+    public MEDIAFILE_MOBILE_ENFORCE_PARAM() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java
new file mode 100644
index 0000000..aa6ec78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 智慧厨房查询结果 ( CLIENT_FindFileEx + NET_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION )
+ * @date 2021/7/26 16:00
+ */
+public class MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO extends NetSDKLib.SdkStructure{
+    public  int                           dwSize;                 // 结构体大小
+    public 	int                             nChannelID;             // 通道号从0开始,-1表示查询所有通道
+    public  NetSDKLib.NET_TIME                        stuStartTime;           // 开始时间
+    public 	NetSDKLib.NET_TIME                        stuEndTime;             // 结束时间
+    public  int emHasMask;               /** 厨师口罩状态 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	int	emHasChefHat;           /** 厨师帽状态 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	int  emHasChefClothes;   /** 厨师服状态 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public  int emChefClothesColor;      /**厨师服颜色 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_COLOUR} */
+    public 	byte[]                            szFaceImagePath=new byte[260];			// 人脸小图路径
+    public 	int							nFaceImageLength;				// 人脸小图图片大小,单位字节
+    public  byte[]                            szHumanImagePath=new byte[260];			// 人体小图路径
+	public  int							nHumanImageLength;				// 人体小图图片大小,单位字节
+    public  byte[]                            szSceneImagePath=new byte[260];			// 人体小图对应的全景图路径
+	public 	int						nSceneImageLength;				// 人体小图对应的全景图图片大小,单位字节
+	public  int						bRealUTC;				// 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC), 为FALSE表示仅stuStartTime和stuEndTime有效(仅使用stuStartTime和stuEndTime)
+	public  NetSDKLib.NET_TIME		stuStartTimeRealUTC;	// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+	public  NetSDKLib.NET_TIME		stuEndTimeRealUTC;		// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+    public MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java
new file mode 100644
index 0000000..2ecfd9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  智慧厨房查询条件 ( CLIENT_FindFileEx + NET_FILE_QUERY_SMART_KITCHEN_CLOTHES_DETECTION )
+ * @date 2021/7/26 15:35
+ */
+public class MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM extends NetSDKLib.SdkStructure{
+    public int														dwSize;							// 结构体大小
+    public 	int														nChannelID;						// 通道号从0开始,-1表示查询所有通道
+    public 	NetSDKLib.NET_TIME												stuBeginTime;					// 开始时间
+    public 	NetSDKLib.NET_TIME												stuEndTime;						// 结束时间
+	public  NET_SMART_KITCHEN_CLOTHES_CHEF_MASK						stuChefMask=new NET_SMART_KITCHEN_CLOTHES_CHEF_MASK();					// 口罩相关属性状态信息
+    public  NET_SMART_KITCHEN_CLOTHES_CHEF_HAT						stuChefHat=new NET_SMART_KITCHEN_CLOTHES_CHEF_HAT();						// 厨师帽相关属性状态信息
+    public 	NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES					stuChefClothes=new NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES();					// 厨师服相关属性状态信息
+    public int													bOnlySupportRealUTC;			// 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stuBeginTime, stuEndTime), 为FALSE表示仅下发stuBeginTime, stuEndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+	public NET_TIME												stuStartTimeRealUTC;			// UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+	public NET_TIME												stuEndTimeRealUTC;				// UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(stuBeginTime, stuEndTime)互斥
+
+    public MEDIAFILE_SMART_KITCHEN_CLOTHES_DETECTION_PARAM() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java
new file mode 100644
index 0000000..fe267ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MONITORWALL_COLLECTION_SCHEDULE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_DEVICE_NAME_LEN;
+import static com.netsdk.lib.NetSDKLib.NET_TSCHE_DAY_NUM;
+
+/**
+ * 电视墙预案时间表
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:40
+ */
+public class MONITORWALL_COLLECTION_SCHEDULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 预案名称
+     */
+    public byte[] szName = new byte[NET_DEVICE_NAME_LEN];
+    /**
+     * 时间表
+     */
+    public NET_TSECT_DAY[] stuSchedules = new NET_TSECT_DAY[NET_TSCHE_DAY_NUM];
+
+    public MONITORWALL_COLLECTION_SCHEDULE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuSchedules.length; i++) {
+            stuSchedules[i] = new NET_TSECT_DAY();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxNameByteArrInfo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxNameByteArrInfo.java
new file mode 100644
index 0000000..c4c1b54
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxNameByteArrInfo.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通用名字字符串字节数组对象
+ * @date 2021/01/13
+ */
+public class MaxNameByteArrInfo extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 二维数组内字符串对应字节数组
+	 */
+	public byte[] name = new byte[NetSDKLib.MAX_NAME_LEN];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java
new file mode 100644
index 0000000..3791989
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/MaxSceneSupTypeByteArrInfo.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 场景子类型字符串字节数组对象
+ * @date 2021/01/13
+ */
+public class MaxSceneSupTypeByteArrInfo extends NetSDKLib.SdkStructure{
+	/**
+	 * 二维数组内字符串对应字节数组
+	 */
+	public byte[] sceneSupType = new byte[NetSDKLib.MAX_SCENE_SUBTYPE_LEN];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java
new file mode 100644
index 0000000..f2153e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NAS_DIRECTORY_CFG_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  存储组件全局配置 
+* @date 2022/09/22 17:24:07
+*/
+public class NAS_DIRECTORY_CFG_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+名称 用于NASDirectory组件实例化的参数name
+*/
+public			byte[]					szName=new byte[16];
+/** 
+存储池名称
+*/
+public			byte[]					szGroupName=new byte[32];
+/** 
+共享用户名
+*/
+public			BYTE_32[]				szUserName=new BYTE_32[64];
+/** 
+共享用户的读写权限, 是一个数组, 下标与用户名对应:1 可读, 2 可新建, 4 可删除
+*/
+public			int[]					nUserAuth=new int[64];
+/** 
+说明
+*/
+public			byte[]					szMemo=new byte[1024];
+/** 
+有效IP
+*/
+public			byte[]					szValidIP=new byte[16];
+/** 
+共享用户名数组实际有效数量
+*/
+public			int					nUserNameRealNum;
+/** 
+共享用户的读写权限实际有效数量
+*/
+public			int					nUserAuthRealNum;
+/** 
+总容量(单位M), 总容量, 创建卷时要用到. 只在新增时可以添加, 后续不允许修改
+*/
+public			int					nTotalSpace;
+/** 
+设置虚拟磁盘最小的块大小, 仅限于IPSAN使用, 单位字节.默认4096字节,必须是512的整数倍
+*/
+public			int					nBlockSize;
+/** 
+共享类型 {@link com.netsdk.lib.enumeration.EM_CFG_NAS_DIRECTORY_PROTOCAL}
+*/
+public			int					emProtocal;
+/** 
+缓存类型 {@link com.netsdk.lib.enumeration.EM_CFG_NAS_DIRECTORY_CACHE_TYPE}
+*/
+public			int					emCacheType;
+
+public NAS_DIRECTORY_CFG_INFO(){
+	for(int i=0;i<szUserName.length;i++){
+		szUserName[i]=new BYTE_32();
+	}
+	this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java
new file mode 100644
index 0000000..6480fb0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_NETINTERFACE_INFO.java
@@ -0,0 +1,97 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 网络接口,最大支持DH_MAX_NETINTERFACE_NUM个网卡
+ * @date 2021/9/17
+ */
+public class NETDEV_NETINTERFACE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  是否有效
+     */
+    public boolean bValid;
+
+    /**
+     *  是否虚拟网卡
+     */
+    public boolean bVirtual;
+
+    /**
+     *  网卡理论速度(Mbps)
+     */
+    public int nSpeed;
+
+    /**
+     *  0-未使能, 1-正在获取, 2-获取成功
+     */
+    public int nDHCPState;
+
+    /**
+     *  网口名称
+     */
+    public byte[] szName = new byte[NetSDKLib.NET_NETINTERFACE_NAME_LEN];
+
+    /**
+     *  网络类型
+     */
+    public byte[] szType = new byte[NetSDKLib.NET_NETINTERFACE_TYPE_LEN];
+
+    /**
+     *  MAC地址
+     */
+    public byte[] szMAC = new byte[NetSDKLib.NET_MACADDR_LEN];
+
+    /**
+     *  SSID, 只对无线网络有效(szType == "Wireless")
+     */
+    public byte[] szSSID = new byte[NetSDKLib.NET_MAX_SSID_LEN];
+
+    /**
+     *  Wifi、3G的连接状态,"Inexistence" : 网络不存在 "Down":关闭 "Disconn":未连接 "Connecting":正连接 "Connected": 已连接
+     */
+    public byte[] szConnStatus = new byte[NetSDKLib.NET_MAX_CONNECT_STATUS_LEN];
+
+    /**
+     *  实际3G支持的网络模式个数
+     */
+    public int nSupportedModeNum;
+
+    /**
+     *  3G支持的网络模式 "TD-SCDMA", "WCDMA", "CDMA1x", "EDGE", "EVDO"
+     */
+    public SupportedModeByteArr[] szSupportedModes = (SupportedModeByteArr[])new SupportedModeByteArr().toArray(NetSDKLib.NET_MAX_MODE_NUM); 
+    
+    /**
+     *  是否支持长距离POE速度协商,需要网卡和交换机协商后才能确定
+     */
+    public boolean bSupportLongPoE;
+
+    /**
+     *  真实网卡名
+     */
+    public byte[] szNetCardName = new byte[8];
+
+    /**
+     *  模块名称
+     */
+    public byte[] szModuleName = new byte[32];
+
+    /**
+     *  国际移动用户识别码
+     */
+    public byte[] szIMEI = new byte[16];
+
+    /**
+     *  集成电路卡识别码即SIM卡卡号,20位数字组成
+     */
+    public byte[] szICCID = new byte[24];
+
+    public NETDEV_NETINTERFACE_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java
new file mode 100644
index 0000000..9b5dbbe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NETDEV_VIRTUALCAMERA_STATE_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/8/27 16:35
+ */
+public class NETDEV_VIRTUALCAMERA_STATE_INFO  extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int                  nStructSize;
+    /**
+     * 通道号
+     */
+    public int                  nChannelID;
+    /**
+     * 连接状态 {@link NetSDKLib.CONNECT_STATE}
+     */
+    public int                  emConnectState;
+    /**
+     * 此虚拟摄像头所连接的POE端口号,0表示不是POE连接
+     */
+    public int                  uiPOEPort;
+    /**
+     * 设备名称
+     */
+    public byte[]               szDeviceName = new byte[64];
+    /**
+     * 设备类型
+     */
+    public byte[]               szDeviceType = new byte[128];
+    /**
+     * 系统版本
+     */
+    public byte[]               szSystemType = new byte[128];
+    /**
+     * 序列号
+     */
+    public byte[]               szSerialNo = new byte[48];
+    /**
+     * 视频输入
+     */
+    public int                  nVideoInput;
+    /**
+     * 音频输入
+     */
+    public int                  nAudioInput;
+    /**
+     * 外部报警
+     */
+    public int                  nAlarmOutput;
+
+    public NETDEV_VIRTUALCAMERA_STATE_INFO(){
+        nStructSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POINT.java
new file mode 100644
index 0000000..03e1733
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POINT.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 三维空间点类型
+ * @origin autoTool
+ * @date 2023/02/14 20:02:01
+ */
+public class NET_3DFLOAT_POINT extends NetSDKLib.SdkStructure {
+	/**
+	 * x坐标
+	 */
+	public float fXPosition;
+	/**
+	 * y坐标
+	 */
+	public float fYPosition;
+	/**
+	 * z坐标
+	 */
+	public float fZPosition;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[28];
+
+	public NET_3DFLOAT_POINT() {
+	}
+
+	@Override
+	public String toString() {
+		return "{" + "fXPosition=" + fXPosition + ", fYPosition=" + fYPosition + ", fZPosition=" + fZPosition + '}';
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POSTURE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POSTURE.java
new file mode 100644
index 0000000..9f13eff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_POSTURE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/** 
+* @author 291189
+* @description  3D姿态 
+* @origin autoTool
+* @date 2023/02/14 20:02:01
+*/
+public class NET_3DFLOAT_POSTURE extends NetSDKLib.SdkStructure {
+/** 
+偏航角,单位度
+*/
+public			float					fYaw;
+/** 
+俯仰角,单位度
+*/
+public			float					fPitch;
+/** 
+翻滚角,单位度
+*/
+public			float					fRool;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[28];
+
+public			NET_3DFLOAT_POSTURE(){
+}
+
+    @Override
+    public String toString() {
+        return "{" +
+                "fYaw=" + fYaw +
+                ", fPitch=" + fPitch +
+                ", fRool=" + fRool +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_SIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_SIZE.java
new file mode 100644
index 0000000..dfa3e3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_3DFLOAT_SIZE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/** 
+* @author 291189
+* @description  三维尺寸类型 
+* @origin autoTool
+* @date 2023/02/14 20:02:01
+*/
+public class NET_3DFLOAT_SIZE extends NetSDKLib.SdkStructure {
+/** 
+长度,单位米
+*/
+public			float					fLength;
+/** 
+宽度,单位米
+*/
+public			float					fWidth;
+/** 
+高度,单位米
+*/
+public			float					fHeigth;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[28];
+
+public			NET_3DFLOAT_SIZE(){
+}
+
+    @Override
+    public String toString() {
+        return "{" +
+                "fLength=" + fLength +
+                ", fWidth=" + fWidth +
+                ", fHeigth=" + fHeigth +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java
new file mode 100644
index 0000000..ddd04bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESSCTL_SPECIALDAY_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 假日信息
+ * @date 2020/10/19
+ */
+public class NET_ACCESSCTL_SPECIALDAY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 组名称
+     */
+    public byte[] szDayName = new byte[32];
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    public byte[] byReserved = new byte[256];
+
+    @Override
+    public String toString() {
+        return "假日信息,NET_ACCESSCTL_SPECIALDAY_INFO{" +
+                "szDayName=" + new String(szDayName).trim() +
+                ", stuStartTime=" + stuStartTime.toStringTime() +
+                ", stuEndTime=" + stuEndTime.toStringTime() +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_CARD_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_CARD_CAPS.java
new file mode 100644
index 0000000..6161691
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_CARD_CAPS.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  card操作能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_ACCESS_CARD_CAPS extends NetSDKLib.SdkStructure {
+/** 
+每次下发的最大数量
+*/
+public			int					nMaxInsertRate;
+/** 
+卡片数量上限
+*/
+public			int					nMaxCards;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[512];
+
+public			NET_ACCESS_CARD_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FACE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FACE_CAPS.java
new file mode 100644
index 0000000..f8e211e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FACE_CAPS.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  face操作能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_ACCESS_FACE_CAPS extends NetSDKLib.SdkStructure {
+/** 
+每次下发的最大数量
+*/
+public			int					nMaxInsertRate;
+/** 
+目标存储上限
+*/
+public			int					nMaxFace;
+/** 
+目标识别类型,0:白光 1:红外
+*/
+public			int					nRecognitionType;
+/** 
+目标识别算法,0:未知1:华2:商3:依4:汉5:火
+*/
+public			int					nRecognitionAlgorithm;
+/** 
+目标识别算法(模型)版本号,0x00010502 为1.5.2
+*/
+public			int					dwRecognitionVersion;
+/** 
+白光目标照片的最小尺寸 ,单位 KB
+*/
+public			int					nMinPhotoSize;
+/** 
+白光目标照片的最大尺寸 ,单位 KB
+*/
+public			int					nMaxPhotoSize;
+/** 
+批量获取白光目标的最大数量
+*/
+public			int					nMaxGetPhotoNumber;
+/** 
+是否支持获取白光照片
+*/
+public			int					bIsSupportGetPhoto;
+/** 
+是否支持只下发目标特征值, 该字段已废弃
+*/
+public			int					bIsSupportOnlyIssueFaceEigen;
+/** 
+是否支持只下发目标特征值
+*/
+public			int					bIsSupportOnlyImportFaceEigen;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[496];
+
+public			NET_ACCESS_FACE_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java
new file mode 100644
index 0000000..8bbe3ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_FINGERPRINT_CAPS.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  fingerprint操作能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_ACCESS_FINGERPRINT_CAPS extends NetSDKLib.SdkStructure {
+/** 
+每次下发的最大数量
+*/
+public			int					nMaxInsertRate;
+/** 
+单信息数据的最大字节数
+*/
+public			int					nMaxFingerprintSize;
+/** 
+信息数量上限
+*/
+public			int					nMaxFingerprint;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[512];
+
+public			NET_ACCESS_FINGERPRINT_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java
new file mode 100644
index 0000000..acd3e1e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_IRIS_CAPS.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  lris操作能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_ACCESS_IRIS_CAPS extends NetSDKLib.SdkStructure {
+/** 
+每次最大插入量
+*/
+public			int					nMaxInsertRate;
+/** 
+眼睛信息图片最小尺寸,单位KB
+*/
+public			int					nMinIrisPhotoSize;
+/** 
+眼睛信息图片最大尺寸,单位KB
+*/
+public			int					nMaxIrisPhotoSize;
+/** 
+每个用户最多支持多少组
+*/
+public			int					nMaxIrisGroup;
+/** 
+眼睛识别算法提供标识,0未知,1DH
+*/
+public			int					nRecognitionAlgorithmVender;
+/** 
+算法(模型)版本号,如果版本号有多位,按Major/Minor从高到低每8bit表示一个版本 如1.5.2表示成0x00010502
+*/
+public			int					nRecognitionVersion;
+/** 
+眼睛信息存储上限
+*/
+public			int					nMaxIrisesCount;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[500];
+
+public			NET_ACCESS_IRIS_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_CAPS.java
new file mode 100644
index 0000000..d5f1139
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_CAPS.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  user操作能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_ACCESS_USER_CAPS extends NetSDKLib.SdkStructure {
+/** 
+每次下发的最大数量
+*/
+public			int					nMaxInsertRate;
+/** 
+用户数量上限
+*/
+public			int					nMaxUsers;
+/** 
+每个用户可以记录的最大信息数量
+*/
+public			int					nMaxFingerPrintsPerUser;
+/** 
+每个用户可以记录的最大卡片数量
+*/
+public			int					nMaxCardsPerUser;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[512];
+
+public			NET_ACCESS_USER_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java
new file mode 100644
index 0000000..e559aba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 用户信息
+* @date 2022/03/08 11:34:32
+*/
+public class NET_ACCESS_USER_INFO_EX extends NetSDKLib.SdkStructure {
+/** 
+消费时间段
+ // 每天最多6个时间段,每6个元素对应一天。一共7天。
+ // 每个时段格式为"星期 时:分:秒-时:分:秒 消费类型 可消费次数 可消费金额",
+ // 星期从0开始,表示周日,前6个时段前面都是0,表示周日的6个时段,
+ // 剩下依次周一,周二... 一共42个时段。消费类型包括:0为定额消费,
+ // 1为非定额消费;可消费次数最大上限200次;可消费金额最高999900,也就是9999元
+*/
+public			byte[]					szConsumptionTimeSections=new byte[42*34];
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX2.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX2.java
new file mode 100644
index 0000000..4b7b149
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ACCESS_USER_INFO_EX2.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 扩展用户信息V2
+ * @origin autoTool
+ * @date 2023/09/07 19:26:38
+ */
+public class NET_ACCESS_USER_INFO_EX2 extends NetSDKLib.SdkStructure {
+	/**
+	 * 平台下发的当前设备的配置信息
+	 */
+	public byte[] szProjects = new byte[30 * 64];
+	/**
+	 *配置信息数量
+	 */
+	public int nProjectNum;
+	/**
+	 * 时间段方案数量
+	 */
+	public int nMultiTimeSectionNum;
+	/**
+	 * 消费时间段
+	 */
+	public NET_MULTI_TIMESECTION_INFO[] stuMultiTimeSection = new NET_MULTI_TIMESECTION_INFO[128];	
+	/**
+	 * 是否使用szProjectsEx
+	 */
+    public int bIsUsingProjectsEx;
+    /**
+     * 平台下发的当前设备的配置信息(拓展)
+     */
+    public byte[] szProjectsEx = new byte[512*64];
+	
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[2048];
+
+	public NET_ACCESS_USER_INFO_EX2() {
+		for (int i = 0; i < stuMultiTimeSection.length; i++) {
+			stuMultiTimeSection[i] = new NET_MULTI_TIMESECTION_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AC_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AC_CAPS.java
new file mode 100644
index 0000000..672dc8a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AC_CAPS.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  AC服务能力集 
+* @origin autoTool
+* @date 2023/02/10 14:34:21
+*/
+public class NET_AC_CAPS extends NetSDKLib.SdkStructure {
+/** 
+支持的门禁通道数量
+*/
+public			int					nChannels;
+/** 
+是否支持门禁报警日志记录在记录集中
+*/
+public			int					bSupAccessControlAlarmRecord;
+/** 
+AccessControlCustomPassword记录集中密码的保存方式,0:明文,默认值0, 1:MD5
+*/
+public			int					nCustomPasswordEncryption;
+/** 
+是否支持信息功能,0:未知,默认,1:不支持, 2:支持
+*/
+public			int					nSupportFingerPrint;
+/** 
+是否支持卡片鉴权
+*/
+public			int					bHasCardAuth;
+/** 
+是否支持目标识别鉴权
+*/
+public			int					bHasFaceAuth;
+/** 
+是否只支持单门授权(发卡)
+*/
+public			int					bOnlySingleDoorAuth;
+/** 
+是否支持授权异步返回
+*/
+public			int					bAsynAuth;
+/** 
+是否支持人卡分离方案
+*/
+public			int					bUserlsoLate;
+/** 
+机器数据下发插入最大数量
+*/
+public			int					nMaxInsertRate;
+/** 
+假日计划能力
+*/
+public			NET_SPECIAL_DAYS_SCHEDULE_CAPS					stuSpecialDaysSchedule=new NET_SPECIAL_DAYS_SCHEDULE_CAPS();
+/** 
+设备支持的开锁模式组合数量
+*/
+public			int					nUnlockModes;
+/** 
+设备支持的开锁模式组合
+*/
+public			int[]					emUnlockModes=new int[128];
+/** 
+支持安全帽功能 {@link com.netsdk.lib.enumeration.EM_SUPPORT_HELMET_TYPE}
+*/
+public			int					emSupportHelmetType;
+/** 
+支持人名长度限制
+*/
+public			int					nUserNameMaxLen;
+/** 
+支持闸机业务组件(以前闸机是挂在门禁设备作为子设备存在,闸机相关配置写在门禁里面。现在将闸机业务从门禁业务划分出来。)
+*/
+public			int					bSupportASGManager;
+/** 
+是否支持眼睛识别鉴权
+*/
+public			int					bHasIrisAuth;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[240];
+
+public NET_AC_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AIRBORNE_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AIRBORNE_DETECT.java
new file mode 100644
index 0000000..82ed913
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AIRBORNE_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  挂空悬浮物检测异常输出结果 
+* @date 2022/06/28 19:44:54
+*/
+public class NET_AIRBORNE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+挂空悬浮物具体类型 {@link com.netsdk.lib.enumeration.EM_AIRBORNE_TYPE}
+*/
+public			int					emAirborneType;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_AIRBORNE_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java
new file mode 100644
index 0000000..12e195b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARC_OFFLINE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 报警接收中心离线报警上报事件 (对应 NET_ALARM_ARC_OFFLINE)
+ * @date 2022/7/19 11:31
+ */
+/**
+ * @author 291189
+ * @description  报警接收中心离线上报事件 (对应 DH_ALARM_ARC_OFFLINE)
+ * @date 2022/07/25 15:31:01
+ */
+public class NET_ALARM_ARC_OFFLINE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     事件动作, 1:开始 2:停止
+     */
+    public			int					nAction;
+    /**
+     通道号
+     */
+    public			int					nChannel;
+    /**
+     事件发生的时间,标准的(不带时区偏差的)UTC时间
+     */
+    public			NET_TIME_EX					stuUTC=new NET_TIME_EX();
+    /**
+     ARC通讯异常描述信息
+     */
+    public			byte[]					szDetail=new byte[128];
+    /**
+     保留字节
+     */
+    public			byte[]					szReserved=new byte[1024];
+
+    public			NET_ALARM_ARC_OFFLINE_INFO(){
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java
new file mode 100644
index 0000000..ad4d507
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ARMING_FAILURE_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/7/19 10:51
+ */
+public class NET_ALARM_ARMING_FAILURE_INFO extends NetSDKLib.SdkStructure{
+  public    int						nAction;				// 事件动作 0:脉冲
+  public 	int                     nChannel;				// 通道号
+  public 	NET_TIME_EX				stuUTC=new NET_TIME_EX();// 事件发生的时间,标准的(不带时区偏差的)UTC时间
+  /**
+   * {@link com.netsdk.lib.enumeration.EM_ARM_TYPE}
+   */
+  public    int emMode;				    // 布撤防模式
+  public 	byte[]					szReserved=new byte[1024];      	// 保留字节
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java
new file mode 100644
index 0000000..0e76ad1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_ATS_FAULT_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description  报警传输系统故障上报事件 (对应 DH_ALARM_ATS_FAULT)
+ * @date 2022/07/25 15:31:47
+ */
+public class NET_ALARM_ATS_FAULT_INFO extends NetSDKLib.SdkStructure {
+  /**
+   事件动作, 1:开始 2:停止
+   */
+  public			int					nAction;
+  /**
+   通道号
+   */
+  public			int					nChannel;
+  /**
+   事件发生的时间,标准的(不带时区偏差的)UTC时间
+   */
+  public			NET_TIME_EX					stuUTC=new NET_TIME_EX();
+  /**
+   保留字节
+   */
+  public			byte[]					szReserved=new byte[1024];
+
+  public			NET_ALARM_ATS_FAULT_INFO(){
+  }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java
new file mode 100644
index 0000000..1e13254
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_CHANNEL_COUNT.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警通道数
+ * @date 2021/11/04
+ */
+public class NET_ALARM_CHANNEL_COUNT extends NetSDKLib.SdkStructure{
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  本地报警输入通道数
+     */
+    public int nLocalAlarmIn;
+
+    /**
+     *  本地报警输出通道数
+     */
+    public int nLocalAlarmOut;
+
+    /**
+     *  远程报警输入通道数
+     */
+    public int nRemoteAlarmIn;
+
+    /**
+     *  远程报警输出通道数
+     */
+    public int nRemoteAlarmOut;
+
+    public NET_ALARM_CHANNEL_COUNT (){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java
new file mode 100644
index 0000000..0101f34
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DEVICE_MODIFIED_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 设备设息修改(增加、删除、修改)报警上报事件 (对应 NET_ALARM_DEVICE_MODIFIED)
+ * @date 2022/7/19 11:17
+ */
+public class NET_ALARM_DEVICE_MODIFIED_INFO extends NetSDKLib.SdkStructure{
+    public  int									nAction;         // 事件动作 0:脉冲
+    public	int                     			nChannel;        // 通道号
+    public	NET_TIME_EX							stuUTC=new NET_TIME_EX();          // 事件发生的时间,标准的(不带时区偏差的)UTC时间
+    public	byte[]								szUser=new byte[32];	 // 用户名称
+    /**
+     * {@link  com.netsdk.lib.enumeration.NET_EVENT_OPERATE_TYPE}
+     */
+	public  int emOpType;        // 操作类型
+    /**
+     * {@link  com.netsdk.lib.enumeration.NET_EVENT_DEVICE_TYPE}
+     */
+    public  int emDeviceType;    // 设备类型
+	public byte[]					szReserved=new byte[1024];// 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java
new file mode 100644
index 0000000..67c6d8e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  密码锁上报随机码事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_UPLOAD_RANDOMCODE) 
+* @date 2022/06/23 09:56:06
+*/
+public class NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件动作, 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件发生的时间,单位秒
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+UTC时间对应的毫秒数
+*/
+public			int					nUTCMS;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+锁设备开锁请求随机数
+*/
+public			byte[]					szRandCode=new byte[512];
+/** 
+开锁密钥版本
+*/
+public			byte[]					szOpenKeyVer=new byte[64];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_ALARM_DYNAMIC_LOCK_UPLOAD_RANDOMCODE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java
new file mode 100644
index 0000000..dee3fa3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  密码锁闭锁事件 (对应 DH_ALARM_DYNAMIC_PWDLOCK_CLOSE) 
+* @date 2022/06/23 10:03:38
+*/
+public class NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+事件动作, 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件发生的时间,单位秒
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+UTC时间对应的毫秒数
+*/
+public			int					nUTCMS;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+闭锁码
+*/
+public			byte[]					szCloseCode=new byte[512];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[576];
+
+public NET_ALARM_DYNAMIC_PWDLOCK_CLOSE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INFO.java
new file mode 100644
index 0000000..d45ab34
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_CHANNEL_ID_LEN;
+
+/**
+ * 报警相关信息
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 9:21
+ */
+public class NET_ALARM_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道编号
+     */
+    public byte[] szID = new byte[MAX_CHANNEL_ID_LEN];
+    /**
+     * 报警级别,范围 [1,6]
+     */
+    public int nAlarmLevel;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO.java
new file mode 100644
index 0000000..0d5628d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 智能模块温度异常事件(对应 DH_ALARM_INTELLI_MODULE_HIGH_TEMP)
+ * @origin autoTool
+ * @date 2023/11/27 20:25:48
+ */
+public class NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 事件类型 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 由模块类型和芯片ID组成,模块芯片ID即槽位号
+     */
+    public byte[] szChip = new byte[16];
+    /**
+     * / CPU当前温度
+     */
+    public int nCPUTemperature;
+    /**
+     * / GPU当前温度
+     */
+    public int nGPUTemperature;
+    /**
+     * / 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_ALARM_INTELLI_MODULE_HIGH_TEMP_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_OFFLINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_OFFLINE_INFO.java
new file mode 100644
index 0000000..299f6cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_INTELLI_MODULE_OFFLINE_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 智能模块断线事件(对应 DH_ALARM_INTELLI_MODULE_OFFLINE)
+ * @origin autoTool
+ * @date 2023/11/27 20:26:57
+ */
+public class NET_ALARM_INTELLI_MODULE_OFFLINE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 事件类型 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 由模块类型和芯片ID组成,模块芯片ID即槽位号
+     */
+    public byte[] szChip = new byte[16];
+    /**
+     * / 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_ALARM_INTELLI_MODULE_OFFLINE_INFO() {
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_IN_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_IN_CHANNEL.java
new file mode 100644
index 0000000..b3aabcf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_IN_CHANNEL.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警输入通道信息
+ * @date 2021/11/04
+ */
+public class NET_ALARM_IN_CHANNEL extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  是否有效, FALSE表示该报警通道没有使用
+     */
+    public boolean bValid;
+
+    /**
+     *  报警通道号
+     */
+    public int nChannel;
+
+    /**
+     *  设备ID, 本地报警通道: "Local", 远程设备: 使用uuid表示
+     */
+    public byte[] szDeviceID = new byte[NetSDKLib.NET_DEV_ID_LEN];
+
+    /**
+     *  报警通道名称
+     */
+    public byte[] szName = new byte[NetSDKLib.NET_DEV_NAME_LEN];
+
+    public NET_ALARM_IN_CHANNEL(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java
new file mode 100644
index 0000000..c0465ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MANUAL_TEST_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description  手动测试上报事件 (对应 DH_ALARM_MANUAL_TEST)
+ * @date 2022/07/25 15:32:25
+ */
+public class NET_ALARM_MANUAL_TEST_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 事件动作 0:脉冲
+	 */
+	public			int					nAction;
+	/**
+	 通道号
+	 */
+	public			int					nChannel;
+	/**
+	 事件发生的时间,标准的(不带时区偏差的)UTC时间
+	 */
+	public			NET_TIME_EX					stuUTC=new NET_TIME_EX();
+	/**
+	 配件序列号
+	 */
+	public			byte[]					szSN=new byte[32];
+	/**
+	 配件名称
+	 */
+	public			byte[]					szName=new byte[32];
+	/**
+	 配件所属区域名称
+	 */
+	public			byte[]					szAreaName=new byte[128];
+	/**
+	 保留字节
+	 */
+	public			byte[]					szReserved=new byte[1024];
+
+	public			NET_ALARM_MANUAL_TEST_INFO(){
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java
new file mode 100644
index 0000000..e0a20bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达报警事件(对应 DH_ALARM_MINIINDOOR_RADAR_ALARM)
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件动作, 1:开始 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件所属大类
+     */
+    public byte[] szClass = new byte[128];
+    /**
+     * 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * 事件发生的时间,单位秒
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * UTC时间对应的毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 呼吸异常(生命体征雷达使用)
+     */
+    public int bBreatheAbnormal;
+    /**
+     * 心跳异常(生命体征雷达使用)
+     */
+    public int bHeartBeatAbnormal;
+    /**
+     * 在离床异常(生命体征雷达使用)
+     */
+    public int bAFBStatusAbnormal;
+    /**
+     * 跌倒报警(室内雷达)
+     */
+    public int bFallAlarm;
+    /**
+     * 人数异常(室内雷达)
+     */
+    public int bNumAbnormal;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_ALARM_MINIINDOOR_RADAR_ALARM_INFO() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..21417a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_OVER_TEMPERATURE_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 291189
+ * @description  超温上报事件 (对应 DH_ALARM_OVER_TEMPERATURE)
+ * @date 2022/07/25 15:28:37
+ */
+public class NET_ALARM_OVER_TEMPERATURE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     事件动作 0:脉冲
+     */
+    public			int					nAction;
+    /**
+     通道号
+     */
+    public			int					nChannel;
+    /**
+     事件发生的时间,标准的(不带时区偏差的)UTC时间
+     */
+    public			NET_TIME_EX					stuUTC=new NET_TIME_EX();
+    /**
+     配件序列号
+     */
+    public			byte[]					szSN=new byte[32];
+    /**
+     配件名称
+     */
+    public			byte[]					szName=new byte[64];
+    /**
+     超温类型 0:温度恢复正常;1:温度超过下限;2:温度超过上限
+     */
+    public			int					nTemperatureType;
+    /**
+     所属区域信息个数
+     */
+    public			int					nAreaInfoNum;
+    /**
+     所属区域信息
+     */
+    public			NET_EVENT_AREAR_INFO[]					stuAreaInfo=new NET_EVENT_AREAR_INFO[64];
+    /**
+     保留字节
+     */
+    public			byte[]					szReserved=new byte[1024];
+
+    public			NET_ALARM_OVER_TEMPERATURE_INFO(){
+        for(int i=0;i<stuAreaInfo.length;i++){
+            stuAreaInfo[i]=new NET_EVENT_AREAR_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..081fb80
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_REID_CLUSTER_STATE_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型DH_ALARM_REID_CLUSTER_STATE (聚档状态事件)对应的数据块描述信息
+ * @date 2022/10/09 14:30:33
+ */
+public class NET_ALARM_REID_CLUSTER_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件动作,1表示持续性事件开始,2表示持续性事件结束;
+	 */
+	public int nAction;
+	/**
+	 * 事件公共扩展字段结构体
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 当前聚档状态 1.已完成. 2.进行中 3.聚档失败
+	 */
+	public int nClusterState;
+	/**
+	 * 上次聚档触发时间,按照年月日记录,作为聚档的唯一key,单设备每日只有一条聚档记录.如20220530则表示在20220530当日已经聚档
+	 */
+	public int nClusterDate;
+	/**
+	 * 上次聚档类型: 1.自动每日聚档 2.平台下发手动聚档 3.手动测试触发 4.聚档主动失败重试
+	 */
+	public int nClusterType;
+	/**
+	 * 记录更新时间,已设备本地时间为准
+	 */
+	public NET_TIME_EX stuDealTime = new NET_TIME_EX();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1020];
+
+	public NET_ALARM_REID_CLUSTER_STATE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java
new file mode 100644
index 0000000..5572ad1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_RF_JAMMING_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  RF干扰报警上报事件 (对应 NET_ALARM_RF_JAMMING)
+ * @date 2022/7/19 10:45
+ */
+public class NET_ALARM_RF_JAMMING_INFO extends NetSDKLib.SdkStructure{
+  public   int						nAction;				                // 事件动作 0:脉冲
+  public 	int                     nChannel;								// 通道号
+  public 	NET_TIME_EX				stuUTC=new NET_TIME_EX();								    // 事件发生的时间,标准的(不带时区偏差的)UTC时间
+  public 	byte[]					szDeviceName=new byte[256];						// 设备名称
+  public 	byte[]					szReserved=new byte[1024];      					// 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER.java
new file mode 100644
index 0000000..15873bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER.java
@@ -0,0 +1,93 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 报警产品本地用户信息
+ * @date 2023/03/16 09:04:50
+ */
+public class NET_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 用户编号
+	 */
+	public byte[] szID = new byte[32];
+	/**
+	 * 用户状态 {@link com.netsdk.lib.enumeration.EM_GETUSERINFOBYCONDITION_USER_STATUS}
+	 */
+	public int emUserStatus;
+	/**
+	 * 用户名
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[64];
+	/**
+	 * 用户的权限列表个数
+	 */
+	public int nAuthorityListNum;
+	/**
+	 * 用户的权限列表,数组值参考{@link com.netsdk.lib.enumeration.EM_ALARM_USERAUTHORITY}
+	 */
+	public int[] emAuthorityList = new int[32];
+	/**
+	 * 用户所在组 {@link com.netsdk.lib.enumeration.EM_ALARM_USER_GROUP}
+	 */
+	public int emGroup;
+	/**
+	 * 是否为保留用户,保留用户不可删除
+	 */
+	public int bReserved;
+	/**
+	 * 用户类型 {@link com.netsdk.lib.enumeration.EM_GETUSERINFOBYCONDITION_USER_TYPE}
+	 */
+	public int emUserType;
+	/**
+	 * 相同短信时间间隔,间隔时间内若有连续相同的报告触发,则不上传。(当用户类型为Key时有效)单位:秒
+	 */
+	public int nInterval;
+	/**
+	 * 允许访问的时间 开始时间
+	 */
+	public NET_TIME stuAccessAllowTimeStart = new NET_TIME();
+	/**
+	 * 允许访问的时间 结束时间
+	 */
+	public NET_TIME stuAccessAllowTimeEnd = new NET_TIME();
+	/**
+	 * 用户备注信息
+	 */
+	public byte[] szMemo = new byte[32];
+	/**
+	 * 关联的子系统对应子系统号的个数
+	 */
+	public int nSubSystemNum;
+	/**
+	 * 关联的子系统,对应子系统号,用户只能操作其关联的子系统
+	 */
+	public int[] nSubSystems = new int[64];
+	/**
+	 * 关联防区的个数
+	 */
+	public int nZoneNum;
+	/**
+	 * 关联防区,当emUserType=EM_GETUSERINFOBYCONDITION_USER_TYPE_KEY时用来关联Key防区。不同的Key防区可以关联不同的Key用户。
+	 */
+	public int[] nZones = new int[256];
+	/**
+	 * 一键布防配置
+	 */
+	public NET_ALARM_USER_ONECLICKARMING stuOneClickArming = new NET_ALARM_USER_ONECLICKARMING();
+	/**
+	 * 用户信息扩展数据,需要用户申请内存,参考结构体{@link NET_ALARM_USER_EXTERN }
+	 */
+	public Pointer pstuAlarmUserExtern;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256 - NetSDKLib.POINTERSIZE];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_EXTERN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_EXTERN.java
new file mode 100644
index 0000000..63427f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_EXTERN.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警产品本地用户扩展信息
+ * @date 2023/03/16 10:46:38
+ */
+public class NET_ALARM_USER_EXTERN extends NetSDKLib.SdkStructure {
+	/**
+	 * 胁迫密码
+	 */
+	public byte[] szDuressPassword = new byte[64];
+	/**
+	 * 关联卡片
+	 */
+	public StringByteArr32[] szCard = new StringByteArr32[64];
+	/**
+	 * 关联卡片数量
+	 */
+	public int nCardNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1020];
+
+	public NET_ALARM_USER_EXTERN() {
+		for (int i = 0; i < szCard.length; i++) {
+			szCard[i] = new StringByteArr32();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java
new file mode 100644
index 0000000..0cfab08
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_MODIFIED_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description用户信息被修改(增加、删除、修改)报警上报事件 (对应 NET_ALARM_USER_MODIFIED)
+ * @date 2022/7/19 10:59
+ */
+public class NET_ALARM_USER_MODIFIED_INFO extends NetSDKLib.SdkStructure{
+    public 	int								nAction;				                // 事件动作 0:脉冲
+    public 	int                     		nChannel;								// 通道号
+    public byte[]							szUser=new byte[128];							// 用户名称
+    /**
+     * {@link com.netsdk.lib.enumeration.NET_EVENT_OPERATE_TYPE;}
+     */
+	public int emOpType;								// 操作类型
+    /**
+     * {@link com.netsdk.lib.enumeration.NET_EVENT_USER_TYPE;}
+     */
+	public int emUserType;								// 用户类型
+	public byte[]							szReserved=new byte[1024];      					// 保留字节
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java
new file mode 100644
index 0000000..a53d370
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_ONECLICKARMING.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 一键布防配置
+ * @date 2023/03/16 09:04:50
+ */
+public class NET_ALARM_USER_ONECLICKARMING extends NetSDKLib.SdkStructure {
+	/**
+	 * 一键布防使能
+	 */
+	public int bEnable;
+	/**
+	 * 布防功能 {@link com.netsdk.lib.enumeration.EM_ALARM_ONECLICKARMING_FUNCTION}
+	 */
+	public int emFunction;
+	/**
+	 * 触发类型 {@link com.netsdk.lib.enumeration.EM_ALARM_ONECLICKARMING_TRIGGEROPTION}
+	 */
+	public int emTriggerOption;
+	/**
+	 * 一键布防类型 {@link com.netsdk.lib.enumeration.NET_EM_SCENE_MODE}
+	 */
+	public int emArmProfile;
+	/**
+	 * 布撤防模式 {@link com.netsdk.lib.enumeration.EM_ARM_TYPE}
+	 */
+	public int emArmMode;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256];
+
+	public NET_ALARM_USER_ONECLICKARMING() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java
new file mode 100644
index 0000000..fe393a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_USER_PASS_CONFIRM_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 事件类型NET_ALARM_USER_PASS_CONFIRM (用户通过闸机进入或离开事件)对应的数据块描述信息
+ * @date 2022/5/26 16:43
+ */
+
+public class NET_ALARM_USER_PASS_CONFIRM_INFO extends NetSDKLib.SdkStructure{
+    /**
+     * 事件动作,0 就是表示 pause, 1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public int nAction;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuTime=new NET_TIME_EX();
+    /**
+     * stuRealUTC 是否有效,bRealUTC 为 1 时,用 stuRealUTC,否则用 stuTime 字段
+     */
+    public int			bRealUTC;
+    /**
+     *  事件发生的时间(标准UTC时间)
+     */
+    public NET_TIME_EX	stuRealUTC=new NET_TIME_EX();
+    /**
+     * 仅用于字节对齐
+     */
+    public byte[]      byReserved=new byte[4];
+    /**
+     * 通过人数数量
+     */
+    public int		nCount;
+    /**
+     * 进出方向(事件类型) {@link com.netsdk.lib.enumeration.EM_USER_PASS_TYPE}
+     */
+    public int				emType;
+    /**
+     * 保留字节
+     */
+    public byte[]           szReserved=new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java
new file mode 100644
index 0000000..a6a3c4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALARM_WIFI_FAILURE_INFO.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description  wifi故障上报事件 (对应 DH_ALARM_WIFI_FAILURE)
+ * @date 2022/07/25 15:29:53
+ */
+public class NET_ALARM_WIFI_FAILURE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     事件动作, 1:开始 2:停止
+     */
+    public			int					nAction;
+    /**
+     事件发生的时间,标准的(不带时区偏差的)UTC时间
+     */
+    public			NET_TIME_EX					stuUTC=new NET_TIME_EX();
+    /**
+     配件序列号
+     */
+    public			byte[]					szSN=new byte[32];
+    /**
+     配件名称
+     */
+    public			byte[]					szName=new byte[64];
+    /**
+     wifi故障错误码 1:未知错误;2:无效的网络名称;3:无效的网络口令;4:网络故障
+     */
+    public			int					nErrorCode;
+    /**
+     所属区域信息个数
+     */
+    public			int					nAreaInfoNum;
+    /**
+     所属区域信息
+     */
+    public			NET_EVENT_AREAR_INFO[]					stuAreaInfo=new NET_EVENT_AREAR_INFO[64];
+    /**
+     保留字节
+     */
+    public			byte[]					szReserved=new byte[1024];
+
+    public			NET_ALARM_WIFI_FAILURE_INFO(){
+        for(int i=0;i<stuAreaInfo.length;i++){
+            stuAreaInfo[i]=new NET_EVENT_AREAR_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java
new file mode 100644
index 0000000..a2115c2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_BUILD_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 算法构建信息
+ * @date 2021/2/20
+ */
+public class NET_ALGORITHM_BUILD_INFO extends NetSDKLib.SdkStructure {
+  public NET_ALGORITHM_SVN_INFO stuSvnInfo; // 算法SVN信息
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java
new file mode 100644
index 0000000..9c18c60
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_DEV_STORAGE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_ALGORITHM_PARTITION_TYPE;
+import com.netsdk.lib.enumeration.EM_STORAGE_PACKET_TYPE;
+
+/**
+ * @author 47081
+ * @description 设备分区信息
+ * @date 2021/2/20
+ * @version 1.0
+ */
+public class NET_ALGORITHM_DEV_STORAGE_INFO extends NetSDKLib.SdkStructure {
+  /** 分区打包方式,对应枚举类型为{@link EM_STORAGE_PACKET_TYPE} */
+  public int emPakcetType; // 分区打包方式
+  /*以下信息当emPakcetType 为EM_STORAGE_PACKET_PARTITION 时有效*/
+
+  /** 分区起始地址 */
+  public int nAddr;
+  /** 分区大小,单位byte */
+  public int nSize;
+  /** 分区类型,对应枚举类型为{@link EM_ALGORITHM_PARTITION_TYPE} */
+  public int emPartitionType;
+  /** 分区块大小,单位KB */
+  public int nBlock;
+  /*以上信息当emPakcetType 为EM_STORAGE_PACKET_PARTITION 时有效*/
+  /** 预留字节 */
+  public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java
new file mode 100644
index 0000000..c3b339f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SDK_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 算法sdk信息
+ * @date 2021/2/20
+ */
+public class NET_ALGORITHM_SDK_INFO extends NetSDKLib.SdkStructure {
+  /** 算法 api 头文件版本 */
+  public int nApiVersion;
+  /** 编译平台代号 */
+  public int nCompiler;
+  /** 算法sdk名称 */
+  public byte[] szSdkName = new byte[128];
+  /** 算法sdk版本信息 */
+  public byte[] szSdkVersion = new byte[64];
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java
new file mode 100644
index 0000000..af9b611
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_SVN_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 算法构建svn信息
+ * @date 2021/2/20
+ */
+public class NET_ALGORITHM_SVN_INFO extends NetSDKLib.SdkStructure {
+  /** svn地址 */
+  public byte[] szAddr = new byte[512];
+  /** svn版本号 */
+  public int nRevision;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java
new file mode 100644
index 0000000..4e84aa8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ALGORITHM_UPGRADE_AI_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 独立算法升级支持的AI方案信息
+ * @date 2021/2/20
+ */
+public class NET_ALGORITHM_UPGRADE_AI_INFO extends NetSDKLib.SdkStructure {
+  /** 算法SDK信息 */
+  public NET_ALGORITHM_SDK_INFO[] stuSdkInfo =
+      (NET_ALGORITHM_SDK_INFO[]) new NET_ALGORITHM_SDK_INFO().toArray(32);
+  /** 实际返回的算法sdk个数, 即stuSdkInfo数组的有效元素个数 */
+  public int nRetSdkNum;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1020];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java
new file mode 100644
index 0000000..6e30b20
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 任务全局配置
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_ANALYSE_TASK_GLOBAL extends SdkStructure{
+	/**
+	 * 车道信息数量
+	 */
+	public int										nLanesNum;                      
+	/**
+	 * 车道信息 每个车道两条边界线
+	 */
+	public	NET_ANALYSE_TASK_GLOBAL_LANES[]			stuLanes=new NET_ANALYSE_TASK_GLOBAL_LANES[8];
+	/**
+	 * 标定区域个数
+	 */
+	public int										nCalibrateArea;					
+	/**
+	 * 标定区域
+	 */
+	public	NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA[]	stuCalibrateArea = new NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA[32];
+	/**
+	 * 保留字节
+	 */
+	public	byte[]									byReserved=new byte[1024];
+
+	public  NET_ANALYSE_TASK_GLOBAL(){
+		for(int i=0;i<stuLanes.length;i++){
+			stuLanes[i]=new NET_ANALYSE_TASK_GLOBAL_LANES();
+		}
+
+		for(int i=0;i<stuCalibrateArea.length;i++){
+			stuCalibrateArea[i]=new NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA();
+		}
+
+	}
+
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java
new file mode 100644
index 0000000..46db2ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 标定区域
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA extends SdkStructure{
+	/**
+	 * 标尺线个数
+	 */
+	public int							nStaffs;														
+	/**
+	 * 标尺线  
+	 */
+	public	NET_STAFF_INFO[]		    stuStaffs= new NET_STAFF_INFO[32];
+	/**
+	 * 标定多边形区域
+	 */
+	public	com.netsdk.lib.structure.DH_POINT[]					stuCalibratePloygonArea=new com.netsdk.lib.structure.DH_POINT[20];
+	/**
+	 * 标定多边形区域顶点个数
+	 */
+	public	int							nCalibratePloygonAreaNum;  
+	/**
+	 * 保留字节
+	 */
+	public	byte[]                        byReserved = new byte[1024];
+
+
+	public  NET_ANALYSE_TASK_GLOBAL_CALIBRATEAREA(){
+		for(int i=0;i<stuStaffs.length;i++){
+			stuStaffs[i]=new NET_STAFF_INFO();
+		}
+
+		for(int i=0;i<stuCalibratePloygonArea.length;i++){
+			stuCalibratePloygonArea[i]=new DH_POINT();
+		}
+
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java
new file mode 100644
index 0000000..01794ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_GLOBAL_LANES.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.EM_GLOBAL_LANES_LINE_TYPE;
+/**
+ * @description 车道信息,每个车道两条边界线
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_ANALYSE_TASK_GLOBAL_LANES extends SdkStructure{
+	/**
+	 * 车道使能  
+	 * 本车道规则只有在车道使能情况下才可能生效,实际应对用户在一段时期内某车道施工引起的误检
+	 * 该字段缺省时默认该车道使能
+	 */
+	public	int						bEnable;	
+	/**
+	 * 车道编号
+	 */
+	public	int							nNumber;
+	/**
+	 * 左车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间
+	 */
+	public	com.netsdk.lib.structure.DH_POINT[]					stuLeftLinePoint= new com.netsdk.lib.structure.DH_POINT[20];
+	/**
+	 * 左车道线点个数
+	 */
+	public	int							nLeftLinePointNum;	
+	/**
+	 * 左车道线的属性
+	 * {@link EM_GLOBAL_LANES_LINE_TYPE}
+	 */
+	public	int                     	emLeftLineType;	
+	/**
+	 * 右车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线点的坐标坐标归一化到[0,8192)区间
+	 */
+	public	com.netsdk.lib.structure.DH_POINT[]					stuRightLinePoint= new com.netsdk.lib.structure.DH_POINT[20];
+	/**
+	 * 右车道线点个数
+	 */
+	public	int							nRightLinePointNum;		
+	/**
+	 * 右车道线的属性
+	 * {@link EM_GLOBAL_LANES_LINE_TYPE}
+	 */
+	public	int                       	emRightLineType;
+	/**
+	 * 保留字节
+	 */
+	public	byte[]                      byReserved = new byte[1024];
+
+	public NET_ANALYSE_TASK_GLOBAL_LANES(){
+		for(int i=0;i<stuLeftLinePoint.length;i++){
+			stuLeftLinePoint[i]=new com.netsdk.lib.structure.DH_POINT();
+		}
+
+		for(int i=0;i<stuRightLinePoint.length;i++){
+			stuRightLinePoint[i]=new DH_POINT();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java
new file mode 100644
index 0000000..815f71c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANALYSE_TASK_MODULE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.NET_POLY_POINTS;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 任务模块配置
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_ANALYSE_TASK_MODULE extends SdkStructure{
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public	NET_CFG_SIZEFILTER_INFO 				stuSizeFileter=new NET_CFG_SIZEFILTER_INFO();
+	/**
+	 * 排除区域
+	 */
+	public	NET_POLY_POINTS[]						stuExcludeRegion=new NET_POLY_POINTS[10];
+	/**
+	 * 排除区域数
+	 */
+	public	int										nExcludeRegionNum;	
+	/**
+	 * 保留字节
+	 */
+	public	byte[]									byReserved = new byte[1020];
+
+	public NET_ANALYSE_TASK_MODULE(){
+
+		for(int i=0;i<stuExcludeRegion.length;i++){
+			stuExcludeRegion[i]=new NET_POLY_POINTS();
+		}
+
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java
new file mode 100644
index 0000000..1231e56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description MEDIAFILE_ANATOMY_TEMP_DETECT_INFO 中 nEventType 为 EVENT_IVS_ANATOMY_TEMP_DETECT 时,pEventData 类型
+ * @date 2021/02/22
+ */
+public class NET_ANATOMY_TEMP_DETECT_ANATOMYTEMPDETECT_RESULT extends NetSDKLib.SdkStructure {
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java
new file mode 100644
index 0000000..064dc70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANATOMY_TEMP_DETECT_FILTER.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体测温过滤条件
+ * @date 2021/02/22
+ */
+public class NET_ANATOMY_TEMP_DETECT_FILTER extends NetSDKLib.SdkStructure{
+	 /**
+     *  温度类型 ,参考{ @link EM_QUERY_TEMPERATURE_TYPE}
+     */
+    public int emTempType;
+
+    /**
+     *  预留字段
+     */
+    public byte[] byReserved1 = new byte[4];
+
+    /**
+     *  温度值,当 emTempType 取值为全部、正常、高时有效
+     */
+    public double dbTemperature;
+
+    /**
+     *  人员信息
+     */
+    public ANATOMY_TEMP_DETECT_PERSON_FILTER stuPersonInfo;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java
new file mode 100644
index 0000000..40e4013
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECTS_STATISTICS.java
@@ -0,0 +1,25 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+ * @author : 260611
+ * @description : 动物统计信息
+ * @since : Created in 2021/11/05 14:46
+ */
+public class NET_ANIMAL_OBJECTS_STATISTICS extends NetSDKLib.SdkStructure {
+     /** 
+      * 动物总数
+      */
+     public			int					nAnimalsAmount;
+     
+ 	/**
+ 	 * 动物类型
+ 	 */
+ 	 public VA_OBJECT_ANIMAL[] stuAnimalTypes = (VA_OBJECT_ANIMAL[]) new VA_OBJECT_ANIMAL().toArray(32);
+     /** 
+      * 保留字节
+      */
+     public			byte[]					bReserved=new byte[132];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java
new file mode 100644
index 0000000..f28f9d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_OBJECT_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author :251823
+ * @description :区域内目标列表
+ * @since : Created in 2022/05/09 14:46
+ */
+public class NET_ANIMAL_OBJECT_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  目标包围盒,8192坐标系
+     */
+    public NET_RECT stuBoundingBox;
+
+    /**
+     *  目标中心点
+     */
+    public NetSDKLib.NET_POINT stuPoint;
+
+    /**
+     *  目标ID
+     */
+    public int nObjectID;
+
+    /**
+     *  目标编号
+     */
+    public int nObjectNumber;
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java
new file mode 100644
index 0000000..e797947
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANIMAL_SCENE_IMAGE_INFO.java
@@ -0,0 +1,32 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+ * @author : 260611
+ * @description : 动物检测的大图信息
+ * @since : Created in 2021/11/05 14:46
+ */
+
+public class NET_ANIMAL_SCENE_IMAGE_INFO extends NetSDKLib.SdkStructure {
+     /**
+      在二进制数据块中的偏移
+      */
+     public			int					nOffSet;
+     /**
+      图片大小,单位字节
+      */
+     public			int					nLength;
+     /**
+      在上传图片数据中的图片序号
+      */
+     public			int					nIndexInData;
+     /**
+      保留字节
+      */
+     public			byte[]					bReserved=new byte[252];
+
+     public			NET_ANIMAL_SCENE_IMAGE_INFO(){
+     }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTIGEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTIGEN_INFO.java
new file mode 100644
index 0000000..25615f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTIGEN_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 抗原检测信息
+ * @date 2022/05/21 15:04:32
+ */
+public class NET_ANTIGEN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 抗原检测报告日期
+	 */
+	public byte[] szAntigenReportDate = new byte[32];
+	/**
+	 * 抗原检测报告结果
+	 */
+	public int nAntigenStatus;
+	/**
+	 * 抗原检测报告有效期(单位:天)
+	 */
+	public int nAntigenExpiresIn;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[256];
+
+	public NET_ANTIGEN_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java
new file mode 100644
index 0000000..ed2ea5d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ANTI_SUBMARINE_CAPS.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 反潜回能力集
+ * @date 2023/04/18 19:40:08
+ */
+public class NET_ANTI_SUBMARINE_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 支持反潜回能力掩码,支持位或 bit0-本地反潜;bit1-网络反潜主控;bit2-网络反潜分控
+	 */
+	public int nTypes;
+	/**
+	 * 最大反潜规则组(路线)数量, nTypes bit1=1时有效
+	 */
+	public int nMaxRouteRule;
+	/**
+	 * 每个反潜路线最大多少个节点, nTypes bit1=1时有效
+	 */
+	public int nOneRouteMaxNode;
+	/**
+	 * 每个节点最多包含的读头数量, nTypes bit1=1时有效
+	 */
+	public int nOneNodeMaxReaderID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public NET_ANTI_SUBMARINE_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_APRON_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_APRON_ATTRIBUTE.java
new file mode 100644
index 0000000..7ef36c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_APRON_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 围裙相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_APRON_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有穿围裙,{@link EM_WEARING_STATE}
+     */
+    public int emHasApron;
+    /**
+     * 围裙检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalApron;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREAS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREAS_INFO.java
new file mode 100644
index 0000000..2133185
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREAS_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description Area状态信息
+ * @date 2023/03/15 21:47:17
+ */
+public class NET_AREAS_INFO extends NetSDKLib.SdkStructure {
+	/** 
+	子系统当前的布撤防模式
+	"T" : Total布防/外出布防模式
+	"p1" : Partial1布防/在家布防模式
+	"p2" : Partial2布防/自定义模式
+	"P" : Partial1+2布防
+	"t" : 强制布防
+	"D" : 撤防
+	*/
+	public byte[] szMode = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[32];
+
+	public NET_AREAS_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_ABNORMAL_INFO.java
new file mode 100644
index 0000000..c5434d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_ABNORMAL_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 失败详情
+ * @origin autoTool
+ * @date 2023/08/10 09:52:29
+ */
+public class NET_AREA_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 布防失败的Area,1-64
+	 */
+	public int nArea;
+	/**
+	 * Area下包含的有源输入的防区数组有效个数
+	 */
+	public int nAlarmSourceNum;
+	/**
+	 * Area下包含的有源输入的防区
+	 */
+	public int[] nAlarmSource = new int[256];
+	/**
+	 * 异常防区信息数组有效个数
+	 */
+	public int nZoneAbnormalNum;
+	/**
+	 * 异常防区信息
+	 */
+	public NET_ARM_MODE_ZONE_ABNORMAL_INFO[] stuZoneAbnormal = new NET_ARM_MODE_ZONE_ABNORMAL_INFO[1024];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[128];
+
+	public NET_AREA_ABNORMAL_INFO() {
+		for (int i = 0; i < stuZoneAbnormal.length; i++) {
+			stuZoneAbnormal[i] = new NET_ARM_MODE_ZONE_ABNORMAL_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_MODE_INFO.java
new file mode 100644
index 0000000..588ea8e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AREA_MODE_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域模式统计信息
+ * @date 2021/12/18
+ */
+public class NET_AREA_MODE_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  区域名称
+     */
+    public byte[] szName = new byte[32];
+
+    /**
+     *  该区域的总车位个数
+     */
+    public int nCount;
+
+    /**
+     *  车位类型,参考{ @link EM_SPACE_TYPE}
+     */
+    public int emSpaceType;
+
+    /**
+     *  区域剩余可用车位个数
+     */
+    public int nRemainCnt;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[252];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARMMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARMMODE_INFO.java
new file mode 100644
index 0000000..6d8f695
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARMMODE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 布撤防信息
+ * @date 2021/11/08
+ */
+public class NET_ARMMODE_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  布撤防状态,参考枚举{ @link EM_ARM_STATE}
+     */
+    public int emArmState;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_DETAIL_OPTIONS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_DETAIL_OPTIONS.java
new file mode 100644
index 0000000..dcad094
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_DETAIL_OPTIONS.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 布撤防详细信息
+ * @origin autoTool
+ * @date 2023/08/10 09:52:28
+ */
+public class NET_ARM_DETAIL_OPTIONS extends NetSDKLib.SdkStructure {
+	/**
+	 * 情景模式 {@link com.netsdk.lib.enumeration.NET_EM_SCENE_MODE}
+	 */
+	public int emProfile;
+	/**
+	 * 触发方式 {@link com.netsdk.lib.enumeration.EM_AREAARM_TRIGGERMODE}
+	 */
+	public int emTriggerMode;
+	/**
+	 * 触发者名称,如用户名称,键盘名称等
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 网络用户IP地址或网络地址,对于TriggerMode为Remote时,需要填写此项
+	 */
+	public byte[] szClientAddress = new byte[64];
+	/**
+	 * 触发者编号,如用户编号、键盘地址、遥控器编号、定时器编号或key类型防区号
+	 */
+	public int nID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[1020];
+
+	public NET_ARM_DETAIL_OPTIONS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_MODE_ZONE_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_MODE_ZONE_ABNORMAL_INFO.java
new file mode 100644
index 0000000..e7b6ed9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_MODE_ZONE_ABNORMAL_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 异常防区信息
+ * @origin autoTool
+ * @date 2023/08/10 09:52:29
+ */
+public class NET_ARM_MODE_ZONE_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 防区名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 异常原因
+	 */
+	public byte[] szReason = new byte[32];
+	/**
+	 * 防区号
+	 */
+	public int nIndex;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[1020];
+
+	public NET_ARM_MODE_ZONE_ABNORMAL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_OPTIONS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_OPTIONS.java
new file mode 100644
index 0000000..7ae92a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ARM_OPTIONS.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 布撤防详细信息
+ * @date 2023/03/15 16:05:03
+ */
+public class NET_ARM_OPTIONS extends NetSDKLib.SdkStructure {
+	/**
+	 * 情景模式 {@link com.netsdk.lib.enumeration.NET_EM_SCENE_MODE}
+	 */
+	public int emSceneMode;
+	/**
+	 * 触发方式 {@link com.netsdk.lib.enumeration.EM_AREAARM_TRIGGERMODE}
+	 */
+	public int emAreaarmTriggerMode;
+	/**
+	 * 触发者编号,如用户编号、键盘地址、遥控器编号、定时器编号或key类型防区号
+	 */
+	public int nId;
+	/**
+	 * 触发者名称,如用户名称,键盘名称等
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 网络用户IP地址或网络地址,对于TriggerMode为Remote时,需要填写此项
+	 */
+	public byte[] szClientAddress = new byte[64];
+	/**
+	 * 预留字节
+	 */
+	public byte[] bReserved = new byte[132];
+
+	public NET_ARM_OPTIONS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO.java
new file mode 100644
index 0000000..63f007a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  过滤器 
+* @origin autoTool
+* @date 2023/12/02 10:25:56
+*/
+public class NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO extends NetSDKLib.SdkStructure {
+/** 
+/ 订阅通道号;-1代表订阅全通道;
+*/
+public			int					nChannel;
+/** 
+/ 保留字节
+*/
+public			byte[]					szResvered=new byte[252];
+
+public			NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTRIBUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..410a458
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ATTRIBUTE_INFO.java
@@ -0,0 +1,115 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+public class NET_ATTRIBUTE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  点位名称
+     */
+    public byte[] szSignalName = new byte[128];
+
+    /**
+     *  单位
+     */
+    public byte[] szUnit = new byte[20];
+
+    /**
+     *  待查询的点位类型
+     */
+    public int emPointType;
+
+    /**
+     *  信号点ID
+     */
+    public byte[] szID = new byte[32];
+
+    /**
+     *  告警开始延时,单位:秒
+     */
+    public int nStartDelay;
+
+    /**
+     *  告警结束延时,单位:秒
+     */
+    public int nStopDelay;
+
+    /**
+     *  存储、上报周期,单位:秒
+     */
+    public int nPeriod;
+
+    /**
+     *  告警门限
+     */
+    public float fThreshold;
+
+    /**
+     *  告警回差(当告警恢复时需超过回差范围,告警才恢复,与告警延时不同时起效)
+     */
+    public float fAlarmWaveVal;
+
+    /**
+     *  绝对阈值(针对连续数据点(AI、AO)存储、上报)
+     */
+    public float fAbsoluteVal;
+
+    /**
+     *  百分比阈值(针对连续数据点(AI、AO)存储、上报,当绝对阈值不启用或者为"0"时使用)
+     */
+    public float fRelativeVal;
+
+    /**
+     *  信号点数据状态
+     */
+    public int emStatus;
+
+    /**
+     *  数据显示选项
+     */
+    public NET_DISPLAY_OPTIONS_INFO stuDisplayOptions;
+
+    /**
+     *  是否有效信号点 TRUE:有效 FALSE:无效
+     */
+    public int bIsValid;
+
+    /**
+     *  告警延时, 单位:秒
+     */
+    public int nDelay;
+
+    /**
+     *  点位信息描述
+     */
+    public byte[] szDescription = new byte[120];
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[136];
+
+    @Override
+    public String toString() {
+        return "NET_ATTRIBUTE_INFO{" +
+                "szSignalName=" + Arrays.toString(szSignalName) +
+                ", szUnit=" + Arrays.toString(szUnit) +
+                ", emPointType=" + emPointType +
+                ", szID=" + Arrays.toString(szID) +
+                ", nStartDelay=" + nStartDelay +
+                ", nStopDelay=" + nStopDelay +
+                ", nPeriod=" + nPeriod +
+                ", fThreshold=" + fThreshold +
+                ", fAlarmWaveVal=" + fAlarmWaveVal +
+                ", fAbsoluteVal=" + fAbsoluteVal +
+                ", fRelativeVal=" + fRelativeVal +
+                ", emStatus=" + emStatus +
+                ", stuDisplayOptions=" + stuDisplayOptions +
+                ", bIsValid=" + bIsValid +
+                ", nDelay=" + nDelay +
+                ", szDescription=" + Arrays.toString(szDescription) +
+                ", byReserved=" + Arrays.toString(byReserved) +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java
new file mode 100644
index 0000000..a5e41c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIOOUT_VOLUME_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 音频输出音量配置
+ * @date 2022/05/09
+ */
+public class NET_AUDIOOUT_VOLUME_INFO extends NetSDKLib.SdkStructure{
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  音频输出音量
+     */
+    public int nVolume;
+
+    public NET_AUDIOOUT_VOLUME_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java
new file mode 100644
index 0000000..7fa8816
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DATA_CB_INFO.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description fAudioDataCallBackEx 回调音频信息
+ * @date 2021/12/29
+ */
+public class NET_AUDIO_DATA_CB_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  带音频头的音频数据
+     */
+    public Pointer pBuf;
+
+    /**
+     *  带音频头的音频数据长度
+     */
+    public int dwBufSize;
+
+    /**
+     *  音频编码格式,参考枚举{ @link NET_TALK_CODING_TYPE }
+     */
+    public int emAudioCode;
+
+    /**
+     *  不带音频头的音频裸数据
+     */
+    public Pointer pRawBuf;
+
+    /**
+     *  不带音频头的音频数据长度
+     */
+    public int dwRawBufSize;
+
+    /**
+     *  位数,如8或16等
+     */
+    public int nAudioBit;
+
+    /**
+     *  采样率,如8000或16000等
+     */
+    public int dwSampleRate;
+
+    /**
+     *  预留字节
+     */
+    public byte[] bReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java
new file mode 100644
index 0000000..7700207
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_DECODE_FORMAT.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 音频解码格式信息	
+ * @date 2021/01/06
+ */
+public class NET_AUDIO_DECODE_FORMAT extends NetSDKLib.SdkStructure{
+	
+	
+	/**
+	 * 音频编码格式   NetSDKLib.NET_EM_AUDIO_FORMAT
+	 * */
+	public int emCompression;
+	
+	/**
+	 * 音频采样频率:8K ~ 192K
+	 * */
+	public int nFrequency;
+	
+	/**
+	 * 音频采样深度:8,16,24
+	 * */
+	public int nDepth;
+	
+	/**
+	 * 音频打包周期, [10, 250], ms
+	 * */
+	public int nPacketPeriod;
+	
+	/**
+	 * 保留字段
+	 * */
+	public byte[] szReserved =new byte[512];
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java
new file mode 100644
index 0000000..0f1b334
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_AUDIO_OUTPUT_CHANNEL_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_CHANNEL_ID_LEN;
+
+/**
+ * 音频输出通道相关信息
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 9:24
+ */
+public class NET_AUDIO_OUTPUT_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道编号
+     */
+    public byte[] szID = new byte[MAX_CHANNEL_ID_LEN];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_SOURCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_SOURCE.java
new file mode 100644
index 0000000..51bd2aa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_SOURCE.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 
+ * @author 119178
+ *  备份源
+ */
+public class NET_BACKUP_SOURCE extends SdkStructure{
+	public int       		    emSourceType;		        //  源类型(EM_BACKUP_SOURCE_TYPE)
+	public byte[]				Reserved=new byte[4];		//  字节对齐
+	public byte[]				szPath=new byte[256];		//  源路径,emSourceType为EM_BACKUP_SOURCE_TYPE_REALTIME时,对应格式"通道号/码流类型"。例:"1/Main"
+	                                                        //	码流类型:Main、Extra1、Extra2、Extra3
+	public byte[]				szRename=new byte[256];		//  备份后的文件名
+	public byte[]				byReserved=new byte[1024];	//  保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_STATES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_STATES_INFO.java
new file mode 100644
index 0000000..c5633b7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_STATES_INFO.java
@@ -0,0 +1,10 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_BACKUP_STATES_INFO extends SdkStructure{
+	public int        nProgress;						// 备份进度
+	public int        emState;						// 备份状态值(EM_BACKUP_STATES)
+	public byte[]	  szDeviceName = new byte[64];               // 备份的设备名称
+	public byte[]	  byReserved= new byte[256];				// 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_TARGET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_TARGET.java
new file mode 100644
index 0000000..f6e8d9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BACKUP_TARGET.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * 备份目的
+ */
+public class NET_BACKUP_TARGET extends SdkStructure{
+	public int       		    emTargetType;		//  目标类型(EM_BACKUP_TARGET_TYPE)
+	public byte[]				Reserved=new byte[4];		//  字节对齐
+	public byte[]				szPath=new byte[256];		//  备份的目标路径
+	public byte[]				szRename=new byte[256];		//  备份后的文件名,如果无该字段,保留原文件名
+	public byte[]				byReserved=new byte[1024];	//  保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAND_SPEED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAND_SPEED_INFO.java
new file mode 100644
index 0000000..30f6e1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAND_SPEED_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 网卡信息
+ * @date 2022/05/30 14:45:57
+ */
+public class NET_BAND_SPEED_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 网卡名称
+	 */
+	public byte[] szEthName = new byte[16];
+	/**
+	 * 网卡接收速率,单位 Mb/s
+	 */
+	public double dbReceivedBytes;
+	/**
+	 * 网卡发送速率,单位 Mb/s
+	 */
+	public double dbTransmittedBytes;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[512];
+
+	public NET_BAND_SPEED_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIERS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIERS_INFO.java
new file mode 100644
index 0000000..eea2dc7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIERS_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 栅栏信息配置
+ * @date 2021/09/28
+ */
+public class NET_BARRIERS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  栅栏编号,从1开始
+     */
+    public int nBarrierNo;
+
+    /**
+     *  相位列表个数
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位列表
+     */
+    public NET_PHASES_INFO[] stuPhaseInfo = (NET_PHASES_INFO[]) new NET_PHASES_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIER_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIER_LIST_INFO.java
new file mode 100644
index 0000000..368d221
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BARRIER_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.NET_PHASES_INFO;
+
+/**
+ * @author 251823
+ * @description 栅栏列表信息
+ * @date 2021/09/02
+ */
+public class NET_BARRIER_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  栅栏编号
+     */
+    public int nBarrierNo;
+
+    /**
+     *  相位列表个数
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位列表
+     */
+    public NET_PHASES_INFO[] stuPhaseInfo = (NET_PHASES_INFO[]) new NET_PHASES_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_IMAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_IMAGE.java
new file mode 100644
index 0000000..8425869
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_IMAGE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 条码可见光图
+ * @date 2022/10/31 09:30:19
+ */
+public class NET_BAR_CODE_IMAGE extends NetSDKLib.SdkStructure {
+	/**
+	 * 在二进制数据块中的偏移
+	 */
+	public int nOffset;
+	/**
+	 * 图片大小,单位:字节
+	 */
+	public int nLength;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[248];
+
+	public NET_BAR_CODE_IMAGE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_INFO.java
new file mode 100644
index 0000000..13c89d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BAR_CODE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 与包裹关联的单号的内容
+ * @date 2022/10/31 09:30:19
+ */
+public class NET_BAR_CODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 条码个数
+	 */
+	public int nCodeCount;
+	/**
+	 * 条码信息
+	 */
+	public byte[] szCode = new byte[32 * 128];
+	/**
+	 * 条码可见光图
+	 */
+	public NET_BAR_CODE_IMAGE stuImage = new NET_BAR_CODE_IMAGE();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_BAR_CODE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BATTERY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BATTERY_INFO.java
new file mode 100644
index 0000000..fef7660
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BATTERY_INFO.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_BATTERY_INFO
+ * description:
+ * author:251589
+ * createTime:2021/2/25 15:51
+ *
+ * @version v1.0
+ */
+
+public class NET_BATTERY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  电池容量百分比
+     */
+    public int nPercent;
+
+    /**
+     *  是否正在充电
+     */
+    public int bCharging;
+
+    /**
+     *  电池在位状态
+     */
+    public int emExistState;
+
+    /**
+     *  电池电量状态
+     */
+    public int emState;
+
+    /**
+     *  电池电压
+     */
+    public float fVoltage;
+    
+    /**
+     *  电池温度状态,参考枚举{ @link EM_BATTERY_TEMPER_STATE}
+     */
+    public int emTemperState;
+
+    public NET_BATTERY_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java
new file mode 100644
index 0000000..1061c01
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BLACK_WHITE_DETECTIONRESULT.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  对应检测类型(NET_DIAGNOSIS_BLACK_WHITE) 黑白图像检测结果 
+* @date 2022/08/03 14:32:07
+*/
+public class NET_BLACK_WHITE_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+检测结果量化值
+*/
+public			int					nValue;
+/** 
+检测结果状态 {@link NetSDKLib.NET_STATE_TYPE}
+*/
+public			int					emState;
+/** 
+状态持续时间
+*/
+public			int					nDuration;
+/** 
+异常检测结果图片地址
+*/
+public			byte[]					szPicUrl=new byte[256];
+
+public NET_BLACK_WHITE_DETECTIONRESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_OBJECT.java
new file mode 100644
index 0000000..ab0a54e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_OBJECT.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 船只物体信息
+ * @date 2022/06/16 11:14:19
+ */
+public class NET_BOAT_OBJECT extends NetSDKLib.SdkStructure {
+	/**
+	 * 物体ID,每个ID表示一个唯一的物体,不同的物体不能共用一个ID,已经使用过的ID也不能再次使用。
+	 */
+	public int nObjectID;
+	/**
+	 * 船身体到相机的距离,单位米 取值范围0-65535
+	 */
+	public int nDistance;
+	/**
+	 * 船的高度,单位米 取值范围0-255
+	 */
+	public int nHeight;
+	/**
+	 * 船的长度,单位米 取值范围0-2000
+	 */
+	public int nWidth;
+	/**
+	 * 船的速度,单位米/秒 取值范围0-255
+	 */
+	public int nSpeed;
+	/**
+	 * 物体动作支持类型 {@link com.netsdk.lib.enumeration.EM_ACTION}
+	 */
+	public int emActionType;
+	/**
+	 * 矩形范围,点的坐标归一化到[0,8191]区间
+	 */
+	public NetSDKLib.NET_RECT stuBoundingBox = new NetSDKLib.NET_RECT();
+	/**
+	 * 包围盒(绝对坐标)
+	 */
+	public NetSDKLib.NET_RECT stuOriginalBoundingBox = new NetSDKLib.NET_RECT();
+	/**
+	 * 行驶方向 {@link com.netsdk.lib.enumeration.EM_BOAT_DIRECTION}
+	 */
+	public int emDirection;
+	/**
+	 * 船名或船舷号
+	 */
+	public byte[] szBoatCode = new byte[64];
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[60];
+
+	public NET_BOAT_OBJECT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_TYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_TYPE_INFO.java
new file mode 100644
index 0000000..cd8e183
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOAT_TYPE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  船只类型过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:47
+*/
+public class NET_BOAT_TYPE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用, 为TRUE则下发船只类型过滤配置,为FALSE则不下发船只类型过滤配置
+*/
+public			int					bEnable;
+/** 
+船只类型的个数,最大值是64
+*/
+public			int					nShowListNums;
+/** 
+船只类型
+*/
+public			int[]					emBoatTypeShowList=new int[64];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_BOAT_TYPE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOOT_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOOT_ATTRIBUTE.java
new file mode 100644
index 0000000..b9b118e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BOOT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 靴子相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_BOOT_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有穿靴子,{@link EM_WEARING_STATE}
+     */
+    public int emHasBoot;
+    /**
+     * 靴子检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalBoot;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BREATHING_MASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BREATHING_MASK_INFO.java
new file mode 100644
index 0000000..12136d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BREATHING_MASK_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 呼吸面罩相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_BREATHING_MASK_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 呼吸面罩检测结果, 0:未知,1:不合规,2:合规
+     */
+    public int nHasLegalBreathingMask;
+    /**
+     * 是否有穿着呼吸面罩, 0: 未知 1: 没有 2: 有
+     */
+    public int nHasBreathingMask;
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[56];
+
+    public NET_BREATHING_MASK_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BROADCAST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BROADCAST_INFO.java
new file mode 100644
index 0000000..498512a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BROADCAST_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_BROADCAST_INFO  extends SdkStructure{
+	/**
+	 * 语音文本
+	 */
+	public byte[]					szText = new byte[256];			
+	/**
+	 * 文本类型EM_BROADCAST_TEXT_TYPE
+	 */
+	public int	emTextType;				
+	/**
+	 * 保留字节
+	 */
+	public byte[]					byReserved = new byte[252];		 
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BURN_PARAM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BURN_PARAM_INFO.java
new file mode 100644
index 0000000..2d05228
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_BURN_PARAM_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 刻录参数配置
+ * 对应枚举{@link com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_BURN_PARAM}
+ * @date 2020/11/10
+ */
+public class NET_BURN_PARAM_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    /**
+     * 有效刻录通道个数
+     */
+    public int nChannelCount;
+    /**
+     * 刻录通道
+     */
+    public int[] nChannels = new int[64];
+    /**
+     * 刻录模式,对应枚举{@link NetSDKLib.NET_BURN_MODE}
+     */
+    public int emMode;
+    /**
+     * 刻录格式,对应枚举{@link NetSDKLib.NET_BURN_RECORD_PACK}
+     */
+    public int emFormat;
+    /**
+     * 刻录文件长度,单位为MB
+     */
+    public short nBurnFileLength;
+
+    public NET_BURN_PARAM_INFO() {
+        this.dwSize = size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_INFO.java
new file mode 100644
index 0000000..b047f20
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 标定详细信息
+ * @date 2023/05/24 10:24:53
+ */
+public class NET_CALIBRATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 标定点基本信息
+	 */
+	public NET_CALIBRATE_UNIT_INFO[] stuCalibrateUnitInfo = new NET_CALIBRATE_UNIT_INFO[5 * 2];
+	/**
+	 * 基本信息数量
+	 */
+	public int nInfoNum;
+
+	public NET_CALIBRATE_INFO() {
+		for (int i = 0; i < stuCalibrateUnitInfo.length; i++) {
+			stuCalibrateUnitInfo[i] = new NET_CALIBRATE_UNIT_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_UNIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_UNIT_INFO.java
new file mode 100644
index 0000000..53daf8c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CALIBRATE_UNIT_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 标定基本信息
+ * @date 2023/05/24 10:24:53
+ */
+public class NET_CALIBRATE_UNIT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 分辨率高
+	 */
+	public int nHeight;
+	/**
+	 * 分辨率宽
+	 */
+	public int nWidth;
+	/**
+	 * 云台位置(P/T/Z 归一化)
+	 */
+	public float[] nPosition = new float[3];
+	/**
+	 * 标定点坐标
+	 */
+	public int[] nLocation = new int[2];
+	/**
+	 * 横向视场角(单位:0.01度)
+	 */
+	public int nHFOV;
+	/**
+	 * 纵向视场角(单位:0.01度)
+	 */
+	public int nVFOV;
+
+	public NET_CALIBRATE_UNIT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_CFG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_CFG_INFO.java
new file mode 100644
index 0000000..512be15
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_CFG_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 相机的信息
+ * @date 2020/11/06
+ */
+public class NET_CAMERA_CFG_INFO extends NetSDKLib.SdkStructure{
+	
+	//IP地址
+    public byte[] szIP=new byte[32];	  
+    
+	//端口
+	public int nPort;
+	
+	// 登陆用户名
+	public byte[] szLoginName=new byte[32];		   
+	
+	// 登陆密码,设置的时候不填表示不修改密码
+	public byte[] szLoginPwd=new byte[32];	
+	
+	// 保留字节
+	public byte[] byReserved = new byte[1024];	  
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_PTZ_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_PTZ_INFO.java
new file mode 100644
index 0000000..26a92a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAMERA_PTZ_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+获取角度
+*/
+public class NET_CAMERA_PTZ_INFO extends NetSDKLib.SdkStructure {
+/** 
+预置点的坐标和放大倍数
+*/
+public PTZ_SPACE_UNIT stuPosition=new PTZ_SPACE_UNIT();
+/** 
+热成像横向视场角,单位度,实际角度乘以100
+*/
+public			int					nAngelH;
+/** 
+热成像纵向视场角,单位度,实际角度乘以100
+*/
+public			int					nAngelV;
+/** 
+预留字段
+*/
+public			byte[]					szreserved=new byte[60];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CANDIDATE_INFOEX2.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CANDIDATE_INFOEX2.java
new file mode 100644
index 0000000..9b4aa52
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CANDIDATE_INFOEX2.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 候选人员信息列表
+ * @date 2022/11/24 17:12:01
+ */
+public class NET_CANDIDATE_INFOEX2 extends NetSDKLib.SdkStructure {
+    /**
+     * 当前人脸匹配到的候选对象信息扩展
+     */
+    public NetSDKLib.CANDIDATE_INFOEX stuCandidatesEx = new NetSDKLib.CANDIDATE_INFOEX();
+    /**
+     * 以图搜图业务,输入图片的相似度,万分比 1~10000
+     */
+    public int nSimilarity2;
+    /**
+     * 任务流ID, 任务流以图搜图时, 表示候选人来自哪个分析任务
+     */
+    public int nTaskID;
+    /**
+     * 非机动车信息, 非机动车以图搜图时返回的非机动车属性
+     */
+    public NET_HISTORY_NON_MOTOR_INFO stuHistoryNonMotorInfo = new NET_HISTORY_NON_MOTOR_INFO();
+    /**
+     * 机动车信息, 机动车以图搜图时返回的机动车属性
+     */
+    public NET_HISTORY_TRAFFIC_CAR_INFO stuHistoryTrafficCarInfo = new NET_HISTORY_TRAFFIC_CAR_INFO();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_CANDIDATE_INFOEX2() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CARDNOARRAY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CARDNOARRAY_INFO.java
new file mode 100644
index 0000000..cfade0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CARDNOARRAY_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 卡号数组信息
+ * @date 2021/2/22
+ */
+public class NET_CARDNOARRAY_INFO extends NetSDKLib.SdkStructure {
+  /** 卡号个数 */
+  public int nCardNum;
+  /** 卡号信息 */
+  public byte[] szCardInfo = new byte[5 * 64];
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAR_WEIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAR_WEIGHT_INFO.java
new file mode 100644
index 0000000..e78f286
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CAR_WEIGHT_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 称重系统车辆信息
+ * @date 2023/04/07 17:11:22
+ */
+public class NET_CAR_WEIGHT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 车轴数
+	 */
+	public int nAxleNum;
+	/**
+	 * 最大轴距, 单位是毫米
+	 */
+	public int nMaxAxleDistance;
+	/**
+	 * 每根车轴的重量, 单位Kg, 第一个元素表示第一个车轴重, 依次类推
+	 */
+	public int[] nAxleWeightInfo = new int[8];
+	/**
+	 * 轴与轴的间隔, 单位毫米, 第一个元素表示一二轴间距, 第二个元素表示二三轴间距, 依次类推
+	 */
+	public int[] nAxleDistanceInfo = new int[8 - 1];
+	/**
+	 * 超重信息, 单位千克
+	 */
+	public int nOverWeight;
+	/**
+	 * 总重信息, 单位千克
+	 */
+	public int nTotalWeight;
+	/**
+	 * 平板称重器提供的轴型信息
+	 */
+	public int nAxisType;
+	/**
+	 * 称重卡口测量上报的速度, 单位km/h
+	 */
+	public int nSpeed;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[500];
+
+	public NET_CAR_WEIGHT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_OUTV_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_OUTV_INFO.java
new file mode 100644
index 0000000..cdecd7f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_OUTV_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 输出电压状态
+ * @date 2023/05/11 16:00:20
+ */
+public class NET_CASEABNORMAL_OUTV_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * DC12v1状态,00异常01正常
+	 */
+	public byte[] szDc12v1 = new byte[32];
+	/**
+	 * DC12v2状态,00异常01正常
+	 */
+	public byte[] szDc12v2 = new byte[32];
+	/**
+	 * AC24V1状态,00异常01正常
+	 */
+	public byte[] szAc24v1 = new byte[32];
+	/**
+	 * AC24V2状态,00异常01正常
+	 */
+	public byte[] szAc24v2 = new byte[32];
+	/**
+	 * AC220V1状态,00异常01正常
+	 */
+	public byte[] szAc220v1 = new byte[32];
+	/**
+	 * AC220V2状态,00异常01正常
+	 */
+	public byte[] szAc220v2 = new byte[32];
+	/**
+	 * AC220V3状态,00异常01正常
+	 */
+	public byte[] szAc220v3 = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CASEABNORMAL_OUTV_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_STATE_INFO.java
new file mode 100644
index 0000000..96ad586
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_STATE_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能终端箱的异常状态信息
+ * @date 2023/05/11 16:00:20
+ */
+public class NET_CASEABNORMAL_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 水浸状态,00异常01正常
+	 */
+	public byte[] szWater = new byte[32];
+	/**
+	 * 温湿度状态,00异常01正常
+	 */
+	public byte[] szEnv = new byte[32];
+	/**
+	 * tf卡状态,00异常01正常
+	 */
+	public byte[] szTf = new byte[32];
+	/**
+	 * 暴力开箱,00异常01正常
+	 */
+	public byte[] szIllegalOpen = new byte[32];
+	/**
+	 * 交换机状态,00异常01正常
+	 */
+	public byte[] szSwitchStatus = new byte[32];
+	/**
+	 * 风扇状态,00异常01正常
+	 */
+	public byte[] szFan = new byte[32];
+	/**
+	 * 有线网络状态,00异常01正常
+	 */
+	public byte[] szLan = new byte[32];
+	/**
+	 * 4G网络状态,00异常01正常
+	 */
+	public byte[] szMobileNetwork = new byte[32];
+	/**
+	 * 输出电压状态
+	 */
+	public NET_CASEABNORMAL_OUTV_INFO stuOutV = new NET_CASEABNORMAL_OUTV_INFO();
+	/**
+	 * 输入电压状态对应取值及含义:过压:1 <<0欠压:1 <<1过流:1 <<2漏电:1 <<3断电:1<<4, 可以组合,比如过压+欠压:11
+	 */
+	public byte[] szInV = new byte[32];
+	/**
+	 * 箱内相机状态,00异常01正常
+	 */
+	public byte[] szIpcStatus = new byte[32];
+	/**
+	 * 智慧空开状态,长度最大32,对应取值及含义:过压:1<<0欠压:1<<1过流:1<<2漏电:1<<3断电:1<<4过温:1<<5打火:1<<6过载:1<<7,可以组合,比如过压+欠压:11
+	 */
+	public byte[] szAirSwitch = new byte[32];
+	/**
+	 * 湿度状态,00异常01正常
+	 */
+	public byte[] szIsWet = new byte[32];
+	/**
+	 * 光衰状态,00异常01正常
+	 */
+	public byte[] szLightDecay = new byte[32];
+	/**
+	 * 交换机异常信息
+	 */
+	public NET_CASEABNORMAL_SWITCHWARN_INFO stuSwitchWarn = new NET_CASEABNORMAL_SWITCHWARN_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CASEABNORMAL_STATE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_SWITCHWARN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_SWITCHWARN_INFO.java
new file mode 100644
index 0000000..b1516ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASEABNORMAL_SWITCHWARN_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 交换机异常信息
+ * @date 2023/05/11 16:00:20
+ */
+public class NET_CASEABNORMAL_SWITCHWARN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 告警类型
+	 */
+	public byte[] szAlarmType = new byte[32];
+	/**
+	 * 告警内容
+	 */
+	public byte[] szAlarmInfo = new byte[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_CASEABNORMAL_SWITCHWARN_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_AIRSWITCH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_AIRSWITCH_INFO.java
new file mode 100644
index 0000000..f5f2959
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_AIRSWITCH_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智慧空开状态信息
+ * @date 2023/05/11 16:03:12
+ */
+public class NET_CASERUNNING_AIRSWITCH_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 电压,单位:v
+	 */
+	public byte[] szVol = new byte[32];
+	/**
+	 * 电流,单位:a
+	 */
+	public byte[] szECurrent = new byte[32];
+	/**
+	 * 功率,单位:w
+	 */
+	public byte[] szPower = new byte[32];
+	/**
+	 * 在位检测状态,01 在位状态 ,00 不在位状态
+	 */
+	public byte[] szOnPosition = new byte[32];
+	/**
+	 * 开关状态,01 打开状态,00 关闭状态
+	 */
+	public byte[] szState = new byte[32];
+	/**
+	 * 版本
+	 */
+	public byte[] szVersion = new byte[32];
+	/**
+	 * mac地址
+	 */
+	public byte[] szMac = new byte[32];
+	/**
+	 * 序列号
+	 */
+	public byte[] szSn = new byte[32];
+	/**
+	 * 编号
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CASERUNNING_AIRSWITCH_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_COMM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_COMM_INFO.java
new file mode 100644
index 0000000..73cefa1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_COMM_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 动环(串口)状态
+ * @date 2023/05/11 16:03:12
+ */
+public class NET_CASERUNNING_COMM_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 动环设备序列号
+	 */
+	public byte[] szPortSN = new byte[32];
+	/**
+	 * 设备序列号
+	 */
+	public byte[] szSn = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CASERUNNING_COMM_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_OUTV_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_OUTV_INFO.java
new file mode 100644
index 0000000..9479ab6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_OUTV_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 输出电压状态
+ * @date 2023/05/11 16:03:11
+ */
+public class NET_CASERUNNING_OUTV_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * DC12v1电压值,具体值,单位:v
+	 */
+	public byte[] szDc12v1 = new byte[32];
+	/**
+	 * DC12v2电压值,具体值,单位:w
+	 */
+	public byte[] szDc12v2 = new byte[32];
+	/**
+	 * DC12v1电压开关,开关状态,00关01开
+	 */
+	public byte[] szDc12v1State = new byte[32];
+	/**
+	 * DC12v2电压开关,开关状态,00关01开
+	 */
+	public byte[] szDc12v2State = new byte[32];
+	/**
+	 * AC24V1电压开关,开关状态,00关01开
+	 */
+	public byte[] szAc24v1State = new byte[32];
+	/**
+	 * AC24V2电压开关,开关状态,00关01开
+	 */
+	public byte[] szAc24v2State = new byte[32];
+	/**
+	 * AC220V1电压开关,开关状态,00关01开
+	 */
+	public byte[] szAc220v1State = new byte[32];
+	/**
+	 * AC220V2电压开关,开关状态,00关01开
+	 */
+	public byte[] szAc220v2State = new byte[32];
+	/**
+	 * AC220V3电压开关,开关状态,00关01开
+	 */
+	public byte[] szAc220v3State = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CASERUNNING_OUTV_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_STATE_INFO.java
new file mode 100644
index 0000000..c93c499
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_STATE_INFO.java
@@ -0,0 +1,136 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能机箱的日常运行信息
+ * @date 2023/05/11 16:03:12
+ */
+public class NET_CASERUNNING_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 输入电压状态
+	 */
+	public NET_STATEMANAGER_V_INFO stuInV = new NET_STATEMANAGER_V_INFO();
+	/**
+	 * 输出电压状态
+	 */
+	public NET_CASERUNNING_OUTV_INFO stuOutV = new NET_CASERUNNING_OUTV_INFO();
+	/**
+	 * AC220V1输出的电压、电流、功率、能耗
+	 */
+	public NET_STATEMANAGER_V_INFO stuAc220v1Value = new NET_STATEMANAGER_V_INFO();
+	/**
+	 * AC220V2输出的电压、电流、功率、能耗
+	 */
+	public NET_STATEMANAGER_V_INFO stuAc220v2Value = new NET_STATEMANAGER_V_INFO();
+	/**
+	 * AC220V3输出的电压、电流、功率、能耗
+	 */
+	public NET_STATEMANAGER_V_INFO stuAc220v3Value = new NET_STATEMANAGER_V_INFO();
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * POE输出功率数量
+	 */
+	public int nPoewNum;
+	/**
+	 * POE输出功率
+	 */
+	public byte[] szPoe_w = new byte[4 * 32];
+	/**
+	 * 水浸状态,00异常01正常
+	 */
+	public byte[] szWater = new byte[32];
+	/**
+	 * 是否有IPC相机,00 无 01 有
+	 */
+	public byte[] szHasIPC = new byte[32];
+	/**
+	 * 是否有4G,00 无 01 有
+	 */
+	public byte[] szHasFourG = new byte[32];
+	/**
+	 * SIM卡iccid
+	 */
+	public byte[] szIccid = new byte[32];
+	/**
+	 * 照明状态,00关 01开
+	 */
+	public byte[] szLight = new byte[32];
+	/**
+	 * 温度
+	 */
+	public byte[] szTemp = new byte[32];
+	/**
+	 * 湿度
+	 */
+	public byte[] szHumidity = new byte[32];
+	/**
+	 * 经度
+	 */
+	public byte[] szLon = new byte[32];
+	/**
+	 * 维度
+	 */
+	public byte[] szLat = new byte[32];
+	/**
+	 * 软件版本
+	 */
+	public byte[] szRom = new byte[32];
+	/**
+	 * 单片机版本
+	 */
+	public byte[] szScm = new byte[32];
+	/**
+	 * 重合闸
+	 */
+	public byte[] szReclosing = new byte[32];
+	/**
+	 * 是否有重合闸,00 无 01 有
+	 */
+	public byte[] szHasReclosing = new byte[32];
+	/**
+	 * 设备IP
+	 */
+	public byte[] szBordIp = new byte[32];
+	/**
+	 * 设备名称
+	 */
+	public byte[] szDevName = new byte[32];
+	/**
+	 * tf卡状态
+	 */
+	public NET_CASERUNNING_TF_INFO stuTf = new NET_CASERUNNING_TF_INFO();
+	/**
+	 * 智慧空开状态信息数量
+	 */
+	public int nAirSwitchNum;
+	/**
+	 * 动环(串口)状态数量
+	 */
+	public int nCommNum;
+	/**
+	 * 智慧空开状态信息
+	 */
+	public NET_CASERUNNING_AIRSWITCH_INFO[] stuAirSwitch = new NET_CASERUNNING_AIRSWITCH_INFO[16];
+	/**
+	 * 动环(串口)状态
+	 */
+	public NET_CASERUNNING_COMM_INFO[] stuComm = new NET_CASERUNNING_COMM_INFO[16];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_CASERUNNING_STATE_INFO() {
+		for (int i = 0; i < stuAirSwitch.length; i++) {
+			stuAirSwitch[i] = new NET_CASERUNNING_AIRSWITCH_INFO();
+		}
+		for (int i = 0; i < stuComm.length; i++) {
+			stuComm[i] = new NET_CASERUNNING_COMM_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_TF_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_TF_INFO.java
new file mode 100644
index 0000000..0f55352
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CASERUNNING_TF_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description tf卡状态
+ * @date 2023/05/11 16:03:12
+ */
+public class NET_CASERUNNING_TF_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 总用量,单位:M
+	 */
+	public byte[] szTotal = new byte[32];
+	/**
+	 * 已用,单位:M
+	 */
+	public byte[] szUsed = new byte[32];
+	/**
+	 * 剩余,单位:M
+	 */
+	public byte[] szRemaining = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_CASERUNNING_TF_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java
new file mode 100644
index 0000000..32a2983
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_BACKUPTASK_STATE.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ *
+ */
+public class NET_CB_BACKUPTASK_STATE extends SdkStructure{
+	public NET_BACKUP_STATES_INFO[]		stuStates =(NET_BACKUP_STATES_INFO[])new NET_BACKUP_STATES_INFO().toArray(1024);				// 备份状态信息
+	public int					nStatesNum;						// 备份状态信息个数
+	//public NET_CB_STATES[]		stuStates =(NET_CB_STATES[])new NET_CB_STATES().toArray(1024);				// 备份状态信息
+	public byte[]                bReserved = new byte[1020];				// 预留字节数
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CAMERASTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CAMERASTATE.java
new file mode 100644
index 0000000..f5ce86e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CAMERASTATE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设备状态回调结果
+ * {@link NetSDKLib.fCameraStateCallBack}
+ *
+ * @author : 47040
+ * @since : Created in 2021/1/15 14:14
+ */
+public class NET_CB_CAMERASTATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 所在通道
+     */
+    public int nChannel;
+    /**
+     * 连接状态
+     * {@link NetSDKLib.CONNECT_STATE emConnectState}
+     */
+    public int emConnectState;
+
+    public NET_CB_CAMERASTATE() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java
new file mode 100644
index 0000000..3833c0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CROWD_DISTRI_STREAM_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 订阅人群分布图实时统回调信息
+ * @date 2022/01/07
+ */
+public class NET_CB_CROWD_DISTRI_STREAM_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  检测区个数
+     */
+    public int nCrowStatNum;
+
+    /**
+     *  检测区统计信息
+     */
+    public NET_CROWD_STAT_DATA[] stuCrowdStatData = (NET_CROWD_STAT_DATA[]) new NET_CROWD_STAT_DATA().toArray(8);
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[2048];	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..2f78521
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description 图片文件订阅回调信息
+* @date 2022/03/31 14:04:19
+*/
+public class NET_CB_CUSTOM_SNAP_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+抓图时间
+*/
+public NET_TIME stuSnapTime=new NET_TIME();
+/** 
+自定义抓图类型 {@link com.netsdk.lib.enumeration.EM_CUSTOM_SNAP_TYPE}
+*/
+public			int					emCustomSnapType;
+/** 
+图片包含数据, 根据emCustomSnapType值来确定具体的结构体类型
+*/
+public Pointer pDetailInfo;
+/** 
+保留字节
+*/
+public			byte[]					byReserve=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE.java
new file mode 100644
index 0000000..737f66c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 订阅大图检测小图进度回调结构体
+ * @date 2023/04/20 15:11:18
+ */
+public class NET_CB_MULTIFACE_DETECT_STATE extends NetSDKLib.SdkStructure {
+	/**
+	 * 检测进度
+	 */
+	public int nProgress;
+	/**
+	 * 大图检测小图的检测结果
+	 */
+	public NET_IMAGE_RELATION stuImageRelation = new NET_IMAGE_RELATION();
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public NET_CB_MULTIFACE_DETECT_STATE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE_EX.java
new file mode 100644
index 0000000..b83b59d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_MULTIFACE_DETECT_STATE_EX.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 订阅大图检测小图进度回调结构体
+ * @date 2023/04/20 15:18:00
+ */
+public class NET_CB_MULTIFACE_DETECT_STATE_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 检测进度
+	 */
+	public int nProgress;
+	/**
+	 * 大图检测小图的检测结果
+	 */
+	public NET_IMAGE_RELATION_EX stuImageRelation = new NET_IMAGE_RELATION_EX();
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public NET_CB_MULTIFACE_DETECT_STATE_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java
new file mode 100644
index 0000000..b7ff213
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_REDIRECT_SERVER_CALLBACK_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description fRedirectServerCallBackEx输入参数
+ * @date 2021/3/13
+ */
+public class NET_CB_REDIRECT_SERVER_CALLBACK_INFO extends NetSDKLib.SdkStructure {
+  /** 主动注册重定向服务器接收到的设备IP */
+  public String szIP;
+  /** 主动注册重定向服务器接收到的设备端口 */
+  public int nPort;
+  /** 主动注册重定向服务器接收到的设备ID */
+  public byte[] szDeviceID = new byte[256];
+  /** 预留字节 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_STATES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_STATES.java
new file mode 100644
index 0000000..6bbce9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_STATES.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ *
+ */
+public class NET_CB_STATES extends SdkStructure{
+	public int        nProgress;						// 备份进度
+	public int        emState;						// 备份状态值EM_CB_STATES
+	public byte[]				szDeviceName = new byte[64];               // 备份的设备名称
+	public byte[]				byReserved = new byte[256];				// 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_INFO.java
new file mode 100644
index 0000000..db80ba5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_INFO.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 物模型属性订阅回调信息
+ * @date 2022/04/20 11:36:49
+ */
+public class NET_CB_THINGS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 订阅类型 {@link com.netsdk.lib.enumeration.EM_ATTACH_TOPICS}
+     */
+    public int emTopics;
+    /**
+     * sid
+     */
+    public int nSID;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[128];
+    /**
+     * 当Topics为events时,必须携带, 具体内容由物模型定义决定
+     */
+    public byte[] szEventID = new byte[64];
+    /**
+     * 事件触发时间
+     */
+    public NET_TIME_EX stuEventTime = new NET_TIME_EX();
+    /**
+     * 物模型属性信息或事件参数数组, 内存由sdk 内部申请和释放,参考{@link NET_CB_THINGS_PROPER_INFO}数组
+     */
+    public Pointer pstuProperInfo;
+    /**
+     * 实际返回的物模型属性信息数量, 即pstuProperInfo 数组中有效的元素个数
+     */
+    public int nRetProperInfoNum;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java
new file mode 100644
index 0000000..23f7426
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_THINGS_PROPER_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 物模型属性信息
+ * @date 2022/04/20 11:36:49
+ */
+public class NET_CB_THINGS_PROPER_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * DQZT、FHZYY、Action等
+     */
+    public byte[] szKey = new byte[64];
+    /**
+     * 1,true,"normal"等
+     */
+    public byte[] szValue = new byte[256];
+    /**
+     * szValue对应的类型;有int,bool,string类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+     */
+    public int emValueType;
+    /**
+     * stuIntArrayValue实际个数
+     */
+    public int nIntArrayValueNum;
+    /**
+     * int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY
+     */
+    public NET_PROPERTIES_INTARRAY_VALUE[] stuIntArrayValue = (NET_PROPERTIES_INTARRAY_VALUE[]) new NET_PROPERTIES_INTARRAY_VALUE().toArray(64);
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_TRANSMIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_TRANSMIT_INFO.java
new file mode 100644
index 0000000..0136120
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_TRANSMIT_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_AttachTransmitInfo 上报信息回调
+ * @date 2022/02/14
+ */
+public class NET_CB_TRANSMIT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  数据缓冲地址,SDK内部申请空间
+     */
+    public Pointer pBuffer;
+
+    /**
+     *  数据缓冲总长度
+     */
+    public int dwBufferSize;
+
+    /**
+     *  Json数据长度
+     */
+    public int dwJsonLen;
+
+    /**
+     *  二进制数据长度
+     */
+    public int dwBinLen;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[512];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VEHICLES_DISTRIBUTION_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VEHICLES_DISTRIBUTION_DATA.java
new file mode 100644
index 0000000..10bbdbf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VEHICLES_DISTRIBUTION_DATA.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_AttachVehiclesDistributionData回调信息 
+* @origin autoTool
+* @date 2023/07/03 14:46:48
+*/
+public class NET_CB_VEHICLES_DISTRIBUTION_DATA extends NetSDKLib.SdkStructure {
+/** 
+服务器订阅ID号
+*/
+public			int					nSID;
+/** 
+通道号
+*/
+public			int					nChannel;
+/** 
+统计区数据个数
+*/
+public			int					nVehiclesDataNums;
+/** 
+统计区数据
+*/
+public			NET_VEHICLES_DISTRIBUTION_DATA[]					stuVehiclesData=new NET_VEHICLES_DISTRIBUTION_DATA[16];
+
+public			NET_CB_VEHICLES_DISTRIBUTION_DATA(){
+		for(int i=0;i<stuVehiclesData.length;i++){
+			stuVehiclesData[i]=new NET_VEHICLES_DISTRIBUTION_DATA();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..6978a7b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 热度图数据信息
+ * @date 2020/9/21
+ */
+public class NET_CB_VIDEOSTAT_HEATMAP extends NetSDKLib.SdkStructure {
+    public int nToken;
+    /**
+     * 热度图类型,对应枚举类型{@link com.netsdk.lib.enumeration.EM_HEATMAP_TYPE}
+     */
+    public int emHeatMapType;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..3f1a767
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CB_VIDEOSTAT_STREAM.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 统计通道数据信息
+ * @date 2022/12/12 13:43:42
+ */
+public class NET_CB_VIDEOSTAT_STREAM extends NetSDKLib.SdkStructure {
+	/**
+	 * 统计通道号
+	 */
+	public int nChannel;
+	/**
+	 * 预置点编号默认值为0,球机必填,范围1~PtzPresetMax,IPC可不填。
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 规则名称
+	 */
+	public byte[] szRuleNanme = new byte[128];
+	/**
+	 * 当前这一统计周期的开始时间
+	 */
+	public byte[] szStartTime = new byte[20];
+	/**
+	 * "NumberStat":人数统计
+	 */
+	public byte[] szRuleType = new byte[32];
+	/**
+	 * 粒度 {@link com.netsdk.lib.enumeration.EM_STAT_GRANULARITY}
+	 */
+	public int emStatGranularity;
+	/**
+	 * 与Granularity结合使用,如emGranularity为 EM_GRANULARITY_MINUTE, Cycle
+	 * 值为5,表示以5分钟统计周期上报数据
+	 */
+	public short nCycle;
+	/**
+	 * 区域ID,没有该字段或者为0,为单区域
+	 */
+	public short nAreaID;
+	/**
+	 * 本周期内进入人数小计
+	 */
+	public int nEnteredSubtotal;
+	/**
+	 * 本周期内离开人数小计
+	 */
+	public int nExitedSubtotal;
+	/**
+	 * 本周期内经过人数小计
+	 */
+	public int nPassedSubtotal;	
+	/**
+	 * 本周期区域内滞留人员统计信息, bIsSendMinStayTime为TRUE时有效
+	 */
+	public NET_INSIDE_SUB_TOTAL_INFO stuInsideSubtotal = new NET_INSIDE_SUB_TOTAL_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[940];
+
+	public NET_CB_VIDEOSTAT_STREAM() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java
new file mode 100644
index 0000000..e2b5cd2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 门禁测温配置
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public class NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	/**
+	 * 测温功能是否启用
+	 */
+	public int bEnable;
+
+	/**
+	 * 仅测温模式是否启用
+	 */
+	public int bOnlyTempMode;
+
+	/**
+	 * 温度值是否在提示结果中显示
+	 */
+	public int bDisplayTemp;
+
+	/**
+	 * 测温类型,参考枚举{ @link EM_MASK_DETECT_MODE }
+	 */
+	public int emMaskDetectMode;
+
+	/**
+	 * 测温类型,参考枚举{ @link EM_TEMP_MEASURE_TYPE }
+	 */
+	public int emMeasureType;
+
+	/**
+	 * 红外测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_INFRARED 时有效
+	 */
+	public NET_INFRARED_MEASURE_MODE_PARAM stuInfraredTempParam = new NET_INFRARED_MEASURE_MODE_PARAM();
+
+	/**
+	 * 热成像测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_THERMAL_IMAGE 时有效
+	 */
+	public NET_THERMAL_IMAGE_MEASURE_MODE_PARAM stuThermalImageTempParam = new NET_THERMAL_IMAGE_MEASURE_MODE_PARAM();
+
+	/**
+	 * 高德模块测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_GUIDE_MODULE 时有效
+	 */
+	public NET_GUIDE_MODULE_MEASURE_MODE_PARAM stuGuideModuleTempParam = new NET_GUIDE_MODULE_MEASURE_MODE_PARAM();
+
+	/**
+	 * 手腕单点测温模式参数, emMeasureType 为 EM_TEMP_MEASURE_TYPE_WRIST 时有效
+	 */
+	public NET_WRIST_MEASURE_MODE_PARAM stuWristTempParam = new NET_WRIST_MEASURE_MODE_PARAM();
+
+	public NET_CFG_ACCESSCONTROL_MEASURE_TEMP_INFO() {
+		dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java
new file mode 100644
index 0000000..5a12b68
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁假日计划配置
+ * 对应枚举类型{@link com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE}
+ * @date 2020/10/19
+ */
+public class NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    /**
+     * 假日计划名称
+     */
+    public byte[] szSchduleName = new byte[64];
+    /**
+     * 假日计划使能
+     */
+    public boolean bSchdule;
+    /**
+     * {@link com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP} 配置的下标
+     */
+    public int nGroupNo;
+    /**
+     * 一天的时间段个数
+     */
+    public int nTimeSection;
+    /**
+     * 时间段
+     */
+    public SDK_TSECT[] stuTimeSection = (SDK_TSECT[]) new SDK_TSECT().toArray(6);
+    /**
+     * 有效的门数量
+     */
+    public int nDoorNum;
+    /**
+     * 生效的门通道号
+     */
+    public int[] nDoors = new int[64];
+
+    public NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO() {
+        this.dwSize = this.size();
+    }
+
+    @Override
+    public String toString() {
+        return "NET_CFG_ACCESSCTL_SPECIALDAYS_SCHEDULE_INFO{" +
+                "szSchduleName=" + new String(szSchduleName).trim() +
+                ", bSchdule=" + bSchdule +
+                ", nGroupNo=" + nGroupNo +
+                ", nTimeSection=" + nTimeSection +
+                ", stuTimeSection=" + Arrays.toString(stuTimeSection) +
+                ", nDoorNum=" + nDoorNum +
+                ", nDoors=" + Arrays.toString(nDoors) +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java
new file mode 100644
index 0000000..4e8157a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁假日组配置,对应枚举 {@link
+ *     com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_ACCESSCTL_SPECIALDAY_GROUP}
+ * @date 2020/10/19
+ */
+public class NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO extends NetSDKLib.SdkStructure {
+
+  public int dwSize;
+  /** 组使能 */
+  public boolean bGroupEnable;
+  /** 组名称 */
+  public byte[] szGroupName = new byte[32];
+  /** 有效的节假日数量 */
+  public int nSpeciaday;
+  /** 假日信息 */
+  public NET_ACCESSCTL_SPECIALDAY_INFO[] stuSpeciaday =
+      (NET_ACCESSCTL_SPECIALDAY_INFO[]) new NET_ACCESSCTL_SPECIALDAY_INFO().toArray(16);
+
+  public NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO() {
+    this.dwSize = this.size();
+  }
+
+  @Override
+  public String toString() {
+    return "假日组,NET_CFG_ACCESSCTL_SPECIALDAY_GROUP_INFO{"
+        + "bGroupEnable="
+        + bGroupEnable
+        + ", szGroupName="
+        + new String(szGroupName).trim()
+        + ", nSpeciaday="
+        + nSpeciaday
+        + ", stuSpeciaday="
+        + Arrays.toString(stuSpeciaday)
+        + '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java
new file mode 100644
index 0000000..eaf0927
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AC_GZYD_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 二维码对接、人员开门时间配置、二维码密钥卡号 对应枚举 NET_EM_CFG_AC_GZYD
+ * @since : Created in 2021/11/24 14:19
+ */
+
+public class NET_CFG_AC_GZYD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public			int					dwSize;
+    /**
+     * 使能
+     */
+    public			int					bEnable;
+    /**
+     * 时间间隔
+     */
+    public			int					nInterval;
+    /**
+     * 二维码有效时间
+     */
+    public			int					nQRLastTime;
+    /**
+     * 请求地址,注册地址
+     */
+    public			byte[]					szUrl0=new byte[256];
+    /**
+     * 请求地址,心跳地址
+     */
+    public			byte[]					szUrl1=new byte[256];
+    /**
+     * 设备编号
+     */
+    public			byte[]					szDeviceID=new byte[32];
+    /**
+     * 二维码内容
+     */
+    public			byte[]					szQRCONTENT=new byte[256];
+    /**
+     * 预留字节
+     */
+    public			byte[]					szReserved=new byte[1024];
+
+    public NET_CFG_AC_GZYD_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java
new file mode 100644
index 0000000..a97b1aa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AREA_ARM_MODE_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description Area布撤防配置, 对应 NET_EM_CFG_AREA_ARM_MODE
+ * @date 2023/03/15 21:47:18
+ */
+public class NET_CFG_AREA_ARM_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * Area状态信息数量,数组最大64个
+	 */
+	public int nAreasNum;
+	/**
+	 * Area状态信息数组
+	 */
+	public NET_AREAS_INFO[] stuAreas = new NET_AREAS_INFO[64];
+	/**
+	 * 系统检测状态
+	 */
+	public NET_SYSTEM_STATUS_CHECK_INFO stuSystemStatusCheck = new NET_SYSTEM_STATUS_CHECK_INFO();
+
+	public NET_CFG_AREA_ARM_MODE_INFO() {
+		for (int i = 0; i < stuAreas.length; i++) {
+			stuAreas[i] = new NET_AREAS_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java
new file mode 100644
index 0000000..e8a2c0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PLAY_PATH.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/6/9
+ */
+public class NET_CFG_AUDIO_PLAY_PATH extends NetSDKLib.SdkStructure {
+    /**
+     * 文件路径
+     */
+    public byte[]           szPath=new byte[256];
+    /**
+     * 是否支持上传
+     */
+    public boolean        bSupportUpload;
+    /**
+     * 支持最大上传个数, 支持上传才有效
+     */
+    public int            nMaxFileUploadNum;
+    /**
+     * 最大上传文件大小,单位字节, 支持上传才有效
+     */
+    public int            nMaxUploadFileSize;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java
new file mode 100644
index 0000000..0fa1908
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUDIO_PROPERTY.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 音频属性
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/6/9
+ */
+public class NET_CFG_AUDIO_PROPERTY extends NetSDKLib.SdkStructure {
+    /**
+     * 码流大小,单位:kbps,比如192kbps
+     */
+    public int            nBitRate;
+    /**
+     * 采样的位深,如8或16
+     */
+    public int            nSampleBit;
+    /**
+     * 采样率,单位:Hz,比如44100Hz
+     */
+    public int            nSampleRate;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUTO_PAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUTO_PAN_INFO.java
new file mode 100644
index 0000000..1e82b12
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_AUTO_PAN_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 水平旋转设置配置, 对应枚举 NET_EM_CFG_AUTO_PAN
+ * @origin autoTool
+ * @date 2023/10/16 19:21:33
+ */
+public class NET_CFG_AUTO_PAN_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小, 必须赋值
+     */
+    public int dwSize;
+    /**
+     * / 水平旋转速度,0~7
+     */
+    public int nPanSpeed;
+
+    public NET_CFG_AUTO_PAN_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java
new file mode 100644
index 0000000..911b89b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BGY_CUSTOMERCFG.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.enumeration.EM_PLAY_WITH_MODE;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 门禁设备当前模式配置 对应枚举值{@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_BGY_CUSTOMERCFG}
+ * @date 2020/9/10
+ */
+public class NET_CFG_BGY_CUSTOMERCFG extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 模式类别,对应枚举{@link EM_PLAY_WITH_MODE}
+     */
+    public int emModeType;
+
+    public NET_CFG_BGY_CUSTOMERCFG() {
+        this.dwSize = this.size();
+    }
+
+    @Override
+    public String toString() {
+        return "NET_CFG_BGY_CUSTOMERCFG{" +
+                "dwSize=" + dwSize +
+                ", emModeType=" + emModeType +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BSCCUSTOM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BSCCUSTOM.java
new file mode 100644
index 0000000..aa03efe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_BSCCUSTOM.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_MAIN_PAGE_STATE;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 门禁配置结构体
+ * 枚举见 {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_BSCCUSTOM}
+ *
+ * @author 47040
+ * @since Created in 2021/4/27 19:15
+ */
+public class NET_CFG_BSCCUSTOM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 间隔时间.在 n 秒内,相同人员不能连续开门.(0 表示无需限制)
+     */
+    public int nSamePersonInterval;
+    /**
+     * 枚举值 设备界面图片所表示的状态
+     * {@link EM_MAIN_PAGE_STATE}
+     */
+    public int emMainPageState;
+    /**
+     * 字节对齐
+     */
+    public byte[] szReserved = new byte[4];
+
+    public NET_CFG_BSCCUSTOM() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java
new file mode 100644
index 0000000..cd3ee54
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CALIBRATEBOX_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 校准框信息
+ */
+public class NET_CFG_CALIBRATEBOX_INFO extends SdkStructure {
+    /**
+     * 校准框中心点坐标(点的坐标归一化到[0,8191]区间)
+     */
+    public com.netsdk.lib.structure.POINTCOORDINATE stuCenterPoint=new POINTCOORDINATE();
+    /**
+     * 相对基准校准框的比率(比如1表示基准框大小,0.5表示基准框大小的一半)
+     */
+    public float               fRatio;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java
new file mode 100644
index 0000000..e27349a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_ACCESSCONTROL.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 门禁能力集的结构体
+ */
+public class NET_CFG_CAP_ACCESSCONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 门禁组数
+     */
+    public int                                nAccessGroups;
+    /**
+     * 是否支持门禁报警日志记录在记录集中
+     */
+    public boolean                            bSupAccessControlAlarmRecord;
+    /**
+     * AccessControlCustomPassword记录集中密码的保存方式
+     */
+    public int                                emCustomPasswordEncryption;
+    /**
+     *是否支持信息功能
+     */
+    public int                                emSupportFingerPrint;
+    /**
+     * 是否只支持单门授权(发卡)
+     */
+    public boolean	                          bOnlySingleDoorAuth;
+    /**
+     * 是否支持授权异步返回
+     */
+    public boolean	                          bAsynAuth;
+    /**
+     * 假日计划
+     */
+    public NET_SPECIAL_DAYS_SCHEDULE          stSpecialDaysSchedule;
+    /**
+     * 是否支持多人多类型组合开门
+     */
+    public boolean                            bSupportMultiUserMultiTypeAuth;
+    /**
+     * 是否支持门禁快速导入功能
+     */
+    public int                                bSupportFastImport;
+    /**
+     * 是否支持门禁快速复核功能
+     */
+    public int                                bSupportFastCheck;
+    /**
+     * 是否支持梯控功能
+     */
+    public boolean	                          bSupportCallLift;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java
new file mode 100644
index 0000000..6849f43
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_AUDIO_FORMAT.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 支持的音频格式
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/6/9
+ */
+public class NET_CFG_CAP_AUDIO_FORMAT extends NetSDKLib.SdkStructure {
+    /**
+     * 音频压缩格式,具体见枚举EM_TALK_AUDIO_TYPE
+     */
+    public int                      emCompression;
+    /**
+     * 音频属性个数
+     */
+    public int		                 nPropertyNum;
+    /**
+     * 音频属性
+     */
+    public NET_CFG_AUDIO_PROPERTY[]  stuProperty=(NET_CFG_AUDIO_PROPERTY[]) new NET_CFG_AUDIO_PROPERTY().toArray(32);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_SPEAK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_SPEAK.java
new file mode 100644
index 0000000..65e1d0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CAP_SPEAK.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 扬声器能力 对应的dhconfig.h CFG_CAP_SPEAK
+ * @date 2020/6/9
+ */
+public class NET_CFG_CAP_SPEAK extends NetSDKLib.SdkStructure {
+    /**
+     * 支持的音频格式个数
+     */
+    public int						     nAudioCapNum;
+    /**
+     * 支持的音频格式
+     */
+    public NET_CFG_CAP_AUDIO_FORMAT[]	 stuAudioCap=(NET_CFG_CAP_AUDIO_FORMAT[])new NET_CFG_CAP_AUDIO_FORMAT().toArray(16);
+    /**
+     * 音频播放路径个数
+     */
+    public int                           nAudioPlayPathNum;
+    /**
+     * 音频播放路径
+     */
+    public NET_CFG_AUDIO_PLAY_PATH[]         stuAudioPlayPath=(NET_CFG_AUDIO_PLAY_PATH[])new NET_CFG_AUDIO_PLAY_PATH().toArray(8);
+    /**
+     * 时间预案播放语音控制能力
+     */
+    public CFG_VOICE_PLAY_PLAN		stuVoicePlayPlan=new CFG_VOICE_PLAY_PLAN();
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java
new file mode 100644
index 0000000..1ac126a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CARD_MNG_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+单片机兼容cpu卡和ic卡功能切换  对应枚举 NET_EM_CFG_CARD_MNG
+*/
+public class NET_CFG_CARD_MNG_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+CPU卡 = 1, IC卡 = 2,
+*/
+public			int					nType;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_CFG_CARD_MNG_INFO(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java
new file mode 100644
index 0000000..5298f18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONSUMPTION_STRATEGY_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 消费相关策略,   对应配置项 NET_EM_CFG_CONSUMPTION_STRATEGY
+* @date 2022/03/07 10:54:03
+*/
+public class NET_CFG_CONSUMPTION_STRATEGY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+消费模式 {@link com.netsdk.lib.enumeration.EM_NET_CONSUMPTION_MODE}
+*/
+public			int					emMode;
+/** 
+离线消费使能, TRUE:支持离线消费 FALSE:不支持离线消费
+*/
+public			boolean					bOfflineEnable;
+/** 
+同一个人消费间隔, 单位:秒,取值范围[1,600]
+*/
+public			int					nConsumptionInterval;
+
+public NET_CFG_CONSUMPTION_STRATEGY_INFO(){
+    this.dwSize=this.size();
+}
+
+    @Override
+    public String toString() {
+        return "NET_CFG_CONSUMPTION_STRATEGY_INFO{" +
+                "dwSize=" + dwSize +
+                ", emMode=" + emMode +
+                ", bOfflineEnable=" + bOfflineEnable +
+                ", nConsumptionInterval=" + nConsumptionInterval +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONTROL_CASE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONTROL_CASE_INFO.java
new file mode 100644
index 0000000..8332472
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CONTROL_CASE_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 控制智能机箱开关配置, 对应 NET_EM_CFG_CONTROL_CASE
+ * @date 2023/05/11 13:59:24
+ */
+public class NET_CFG_CONTROL_CASE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 交互机电源
+	 */
+	public int bSwitcherPower;
+	/**
+	 * 相机电源
+	 */
+	public int bIpc;
+	/**
+	 * 风扇
+	 */
+	public int bFan;
+	/**
+	 * 照明开关
+	 */
+	public int bLight;
+	/**
+	 * 智慧空开
+	 */
+	public int bAirSwitch;
+	/**
+	 * 锁空开
+	 */
+	public int bLockStatus;
+	/**
+	 * 4G_5G 使能
+	 */
+	public int b4G_5G;
+	/**
+	 * 输出电压控制开关
+	 */
+	public NET_CONTROL_CASE_OUTV_INFO stuOutV = new NET_CONTROL_CASE_OUTV_INFO();
+	/**
+	 * ZIGBEE开关
+	 */
+	public NET_CONTROL_CASE_ZIGBEE_INFO stuZigBee = new NET_CONTROL_CASE_ZIGBEE_INFO();
+
+	public NET_CFG_CONTROL_CASE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java
new file mode 100644
index 0000000..321a159
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_COURSE_RECORD_DEFAULT_CONFIG.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CAN_START_STREAM;
+import com.netsdk.lib.enumeration.EM_COMPOSIT_CHANNEL_BIND_MODE;
+import com.netsdk.lib.enumeration.EM_IS_RECORD;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/9/27 15:16
+ */
+public class NET_CFG_COURSE_RECORD_DEFAULT_CONFIG extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 组合通道默认模式; 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, 小于0: 自定义模式
+     */
+    public int nCompositChannelMode;
+    /**
+     * 能否被拉流逻辑通道数
+     */
+    public int nCanStartStreamNum;
+    /**
+     * 是否要录像逻辑通道号数
+     */
+    public int nIsRecordNum;
+    /**
+     * 能否被拉流 {@link EM_CAN_START_STREAM}
+     */
+    public int[] emCanStartStream = new int[64];
+    /**
+     * 是否要录像 {@link EM_IS_RECORD}
+     */
+    public int[] emIsRecord = new int[64];
+    /**
+     * 默认组合通道绑定模式 {@link EM_COMPOSIT_CHANNEL_BIND_MODE}
+     */
+    public int emCompositChannelBindMode;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[4];
+
+    public NET_CFG_COURSE_RECORD_DEFAULT_CONFIG() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java
new file mode 100644
index 0000000..b9e0fdd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_CUSTOMER_DEV_SETTING_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 门禁提供客户的"系统设置"配置
+ * @date 2022/06/02 10:15:21
+ */
+public class NET_CFG_CUSTOMER_DEV_SETTING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 开门方式 {@link com.netsdk.lib.enumeration.EM_CUSTOMER_DEV_SETTING_DOOR_METHOD}
+	 */
+	public int emDoorMethod;
+	/**
+	 * 国密加密算法密钥:加密密钥的密文及校验码,字符串
+	 */
+	public byte[] szEnckeycipher = new byte[1024];
+
+	public NET_CFG_CUSTOMER_DEV_SETTING_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java
new file mode 100644
index 0000000..6bba7fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_BEEP_LINKAGE_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 防蜂鸣联动项使能配置信息, 对应 NET_EM_CFG_DISABLE_BEEP_LINKAGE
+ * @date 2023/03/15 20:59:42
+ */
+public class NET_CFG_DISABLE_BEEP_LINKAGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 开启撤防联动项功能总开关(DisableLinkage)后,是否撤防蜂鸣联动项
+	 */
+	public int bEnable;
+	/**
+	 * 联动项配置名
+	 */
+	public byte[] szName = new byte[32];
+
+	public NET_CFG_DISABLE_BEEP_LINKAGE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java
new file mode 100644
index 0000000..27c4b18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周期撤防联动项功能总开关
+ * @date 2022/10/14 13:46:58
+ */
+public class NET_CFG_DISABLE_LINKAGE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 撤防联动项功能总开关
+	 */
+	public int bEnable;
+
+	public NET_CFG_DISABLE_LINKAGE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java
new file mode 100644
index 0000000..2132774
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_DISABLE_LINKAGE_TIME_SECTION.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周期撤防联动项功能总开关
+ * @date 2022/10/14 13:53:01
+ */
+public class NET_CFG_DISABLE_LINKAGE_TIME_SECTION extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 周期撤防联动项功能总开关
+	 */
+	public int bEnable;
+	/**
+	 * 时间段周期设置, 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段
+	 */
+	public TIME_SECTION_6[] stuTimeSection = new TIME_SECTION_6[NetSDKLib.NET_N_SCHEDULE_TSECT];
+	public NET_CFG_DISABLE_LINKAGE_TIME_SECTION() {
+		for (int i = 0; i < stuTimeSection.length; i++) {
+			stuTimeSection[i] = new TIME_SECTION_6();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java
new file mode 100644
index 0000000..f4567bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_ENVIRONMENT_THERM_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  环境温度信息配置(热成像内部配置,只可读,不可设),对应的枚举 NET_EM_CFG_ENVIRONMENT_THERM_INFO 
+* @date 2022/08/30 17:09:25
+*/
+public class NET_CFG_ENVIRONMENT_THERM_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+环境温度,精度0.01,实际值扩大100倍,只可读,不可设
+*/
+public			int					nEnvironmentTemp;
+/** 
+环境温度最后一次保存的时间,只可读,不可设
+*/
+public NET_TIME stuLastEnvSaveTime=new NET_TIME();
+/** 
+环境温度保存的次数,只可读,不可设
+*/
+public			int					nEnvSaveCnt;
+/** 
+字节对齐
+*/
+public			byte[]					byReserved=new byte[4];
+
+public NET_CFG_ENVIRONMENT_THERM_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java
new file mode 100644
index 0000000..b500f0d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FILE_HOLD_DAYS_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 录像保存天数配置 (对应枚举 {@link NET_EM_CFG_FILE_HOLD_DAYS} )
+ * @author 29779
+ */
+public class NET_CFG_FILE_HOLD_DAYS_INFO extends SdkStructure {
+	public int               dwSize;
+	
+	/**
+	 * 设置文件的保留天数,超过时间的将被删除,单位:天,取值范围0-65535,0表示没有天数限制
+	 */
+	public int               nDays;
+	
+	public NET_CFG_FILE_HOLD_DAYS_INFO() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java
new file mode 100644
index 0000000..76695b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FINANCIAL_CABINET_CONFIG_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  金融业务库配置 对应枚举 NET_EM_CFG_FINANCIAL_CABINET_CONFIG 
+* @date 2022/08/10 13:54:52
+*/
+public class NET_CFG_FINANCIAL_CABINET_CONFIG_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+舱位数量
+*/
+public			int					nCabinNum;
+/** 
+金库门设置
+*/
+public			NET_FINANCIAL_CABINET_VAULTDOOR					stuVaultDoor=new NET_FINANCIAL_CABINET_VAULTDOOR();
+/** 
+是否开启远程审批
+*/
+public			int					bRemoteApprovalEnable;
+/** 
+排班时间
+*/
+public			NET_FINANCIAL_CABINET_WORKTIME					stuWorkTime=new NET_FINANCIAL_CABINET_WORKTIME();
+/** 
+验证模式 0: 人脸或信息 1: 人脸+信息
+*/
+public			int					nIdentifyMode;
+/** 
+自动布撤防
+*/
+public			NET_FINANCIAL_CABINET_AUTOARM					stuAutoArm=new NET_FINANCIAL_CABINET_AUTOARM();
+/** 
+短信推送
+*/
+public			NET_FINANCIAL_CABINET_MESSAGE					stuMobileMessage=new NET_FINANCIAL_CABINET_MESSAGE();
+/** 
+互锁使能
+*/
+public			int					bABLockEnable;
+/** 
+现金数额使能
+*/
+public			int					bCashAmountEnable;
+/** 
+多舱位权限使能
+*/
+public			int					bCabinsEnable;
+/** 
+录屏使能
+*/
+public			int					bRecordScreenEnable;
+/** 
+冻结业务库使能
+*/
+public			int					bFreezeEnable;
+
+public NET_CFG_FINANCIAL_CABINET_CONFIG_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java
new file mode 100644
index 0000000..305aacf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+
+import java.util.Arrays;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 广告禁用时段配置
+ * 对应的枚举值{@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_FORBIDDEN_ADVERT_PLAY}
+ * * 调用的接口 {@link NetSDKLib#CLIENT_GetConfig(NetSDKLib.LLong, int, int, Pointer, int, int, Pointer)}和
+ * * {@link NetSDKLib#CLIENT_SetConfig(NetSDKLib.LLong, int, int, Pointer, int, int, IntByReference, Pointer)}
+ * @date 2020/9/10
+ */
+public class NET_CFG_FORBIDDEN_ADVERT_PLAY extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 广告配置时间段个数
+     */
+    public int nAdvertNum;
+    /**
+     * 广告禁用时段配置信息
+     */
+    public NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO[] stuAdvertInfo = (NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO[]) new NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO().toArray(8);
+
+    public NET_CFG_FORBIDDEN_ADVERT_PLAY() {
+        this.dwSize = this.size();
+    }
+
+    @Override
+    public String toString() {
+        return "NET_CFG_FORBIDDEN_ADVERT_PLAY{" +
+                "dwSize=" + dwSize +
+                ", nAdvertNum=" + nAdvertNum +
+                ", stuAdvertInfo=" + Arrays.toString(stuAdvertInfo) +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java
new file mode 100644
index 0000000..8474808
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 广告禁用时段配置信息
+ * @date 2020/9/10
+ */
+public class NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 时间段使能
+     */
+    public boolean bEnable;
+    /**
+     * 广告禁用开始时间
+     */
+    public NET_TIME_EX1 stuBeginTime;
+    /**
+     * 广告结束开始时间
+     */
+    public NET_TIME_EX1 stuEndTime;
+    /**
+     * 保留字节
+     */
+    public byte[] reserved = new byte[256];
+
+    @Override
+    public String toString() {
+        return "NET_CFG_FORBIDDEN_ADVERT_PLAY_INFO{" +
+                "bEnable=" + bEnable +
+                ", stuBeginTime=" + stuBeginTime.toTime() +
+                ", stuEndTime=" + stuEndTime.toTime() +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java
new file mode 100644
index 0000000..9719741
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_HEALTH_CODE_INFO.java
@@ -0,0 +1,94 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 健康码使能,
+ * 对应枚举类型{@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_HEALTH_CODE}
+ * @date 2020/9/10
+ */
+public class NET_CFG_HEALTH_CODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 健康码使能,1:使能;0:未使能
+	 */
+	public int bEnable;
+	/**
+	 * 健康码离线使能,1:使能;0:未使能
+	 */
+	public int bOfflineEnable;
+	/**
+	 * 核验健康码功能使能
+	 */
+	public int bCheckHealthCode;
+	/**
+	 * 核酸显示使能
+	 */
+	public int bHSVisible;
+	/**
+	 * 核验核酸功能使能
+	 */
+	public int bHSCheckEnable;
+	/**
+	 * 核酸结果超时时间(小时) 0 默认不处理
+	 */
+	public int nHSTimeout;
+	/**
+	 * 核酸采集超时时间(小时) 0 默认不处理
+	 */
+	public int nHSCollectTimeout;
+	/**
+	 * 疫苗显示使能
+	 */
+	public int bVaccineVisible;
+	/**
+	 * 疫苗校验使能
+	 */
+	public int bVaccineCheckEnable;
+	/**
+	 * 行程码显示使能
+	 */
+	public int bTravelCodeVisible;
+	/**
+	 * 行程码校验使能
+	 */
+	public int bTravelCodeCheck;
+	/**
+	 * 加强针状态显示
+	 */
+	public int bVaccineIntensifyVisible;
+	/**
+	 * 健康码鉴权方式组合 0:无组合方式 1:健康码单独存在 2:与现有鉴权方式组合,健康码鉴权优先
+	 */
+	public int nOFFLineGreenCodeMethod;
+	/**
+	 * 二维码过期时间(秒)
+	 */
+	public int nCodeFlushTimeout;
+	/**
+	 * 健康码请求超时时间(秒); 默认2秒
+	 */
+	public int nHealthQueryTimeout;
+	/**
+	 * 红码禁止通行使能
+	 */
+	public int bRedPermit;
+	/**
+	 * 黄码禁止通行使能
+	 */
+	public int bYellowPermit;
+	/**
+	 * 健康码请求超时禁止通行使能
+	 */
+	public int bQueryTimeoutPermit;
+
+	public NET_CFG_HEALTH_CODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_LAMP_EXTERNAL_DEVICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_LAMP_EXTERNAL_DEVICE_INFO.java
new file mode 100644
index 0000000..1323af2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_LAMP_EXTERNAL_DEVICE_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智慧灯杆项外设配置, 对应 NET_EM_CFG_LAMP_EXTERNAL_DEVICE
+ * @date 2023/05/11 14:09:05
+ */
+public class NET_CFG_LAMP_EXTERNAL_DEVICE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 照明灯设备数量
+	 */
+	public int nLightNum;
+	/**
+	 * LED广告屏数量
+	 */
+	public int nScreenNum;
+	/**
+	 * 动环设备数量
+	 */
+	public int nEnvironmentNum;
+	/**
+	 * 摄像头设备数量
+	 */
+	public int nCameraNum;
+	/**
+	 * 可视对讲设备数量
+	 */
+	public int nAlarmNum;
+	/**
+	 * 音柱设备数量
+	 */
+	public int nSpeakerNum;
+	/**
+	 * WifiAp设备数量
+	 */
+	public int nWifiApNum;
+	/**
+	 * 照明灯设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO[] stuLight = new NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO[16];
+	/**
+	 * LED广告屏
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO[] stuScreen = new NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO[16];
+	/**
+	 * 动环设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO[] stuEnvironment = new NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO[16];
+	/**
+	 * 摄像头设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO[] stuCamera = new NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO[16];
+	/**
+	 * 可视对讲设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO[] stuAlarm = new NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO[16];
+	/**
+	 * 音柱设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO[] stuSpeaker = new NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO[16];
+	/**
+	 * WifiAp设备
+	 */
+	public NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO[] stuWifiAp = new NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO[16];
+
+	public NET_CFG_LAMP_EXTERNAL_DEVICE_INFO() {
+		for (int i = 0; i < stuLight.length; i++) {
+			stuLight[i] = new NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO();
+		}
+		for (int i = 0; i < stuScreen.length; i++) {
+			stuScreen[i] = new NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO();
+		}
+		for (int i = 0; i < stuEnvironment.length; i++) {
+			stuEnvironment[i] = new NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO();
+		}
+		for (int i = 0; i < stuCamera.length; i++) {
+			stuCamera[i] = new NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO();
+		}
+		for (int i = 0; i < stuAlarm.length; i++) {
+			stuAlarm[i] = new NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO();
+		}
+		for (int i = 0; i < stuSpeaker.length; i++) {
+			stuSpeaker[i] = new NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO();
+		}
+		for (int i = 0; i < stuWifiAp.length; i++) {
+			stuWifiAp[i] = new NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java
new file mode 100644
index 0000000..2b139a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_AFBSTATUS.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 在/离床报警
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_AFBSTATUS extends NetSDKLib.SdkStructure {
+    /**
+     * 使能开关
+     */
+    public int bEnable;
+    /**
+     * 0表示离床报警  1表示在床报警
+     */
+    public int nAFBFlag;
+    /**
+     * 单位秒, 报警延迟时间
+     */
+    public int nDelay;
+    /**
+     * 关联报警输出端口,每一bit代表一路报警输出
+     */
+    public int nAlarmOutMask;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_CFG_MINIRADAR_AFBSTATUS() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java
new file mode 100644
index 0000000..85f871c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_BREATHE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 呼吸异常报警配置
+ * @date 2022/08/04 10:13:29
+ */
+public class NET_CFG_MINIRADAR_BREATHE extends NetSDKLib.SdkStructure {
+    /**
+     * 使能开关
+     */
+    public int bEnable;
+    /**
+     * 合理范围的上限值,大于这个值报警
+     */
+    public int nMax;
+    /**
+     * 合理范围的下限值,小于这个值报警
+     */
+    public int nMin;
+    /**
+     * 单位秒,报警延迟时间
+     */
+    public int nDelay;
+    /**
+     * 关联报警输出端口,每一bit代表一路报警输出
+     */
+    public int nAlarmOutMask;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_CFG_MINIRADAR_BREATHE() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java
new file mode 100644
index 0000000..5655c78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_COMP_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达角度补偿配置, 对应配置项 NET_EM_CFG_MINIRADAR_COMP_INFO
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_COMP_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 横滚角,单位度,扩大100倍
+     */
+    public int nRollAngle;
+    /**
+     * 俯仰角,单位度,扩大100倍
+     */
+    public int nPitchAngle;
+    /**
+     * 横滚角,单位度,扩大100倍
+     */
+    public int nYawAngle;
+
+    public NET_CFG_MINIRADAR_COMP_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java
new file mode 100644
index 0000000..c1cd770
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_DECT_PARAM_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达探测参数配置, 对应配置项 NET_EM_CFG_MINIRADAR_DECT_PARAM
+ * @date 2022/08/04 10:13:29
+ */
+public class NET_CFG_MINIRADAR_DECT_PARAM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 灵敏度
+     */
+    public int nSensitivity;
+    /**
+     * 上报间隔,单位秒
+     */
+    public int nReportInterval;
+
+    public NET_CFG_MINIRADAR_DECT_PARAM_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java
new file mode 100644
index 0000000..12a8f4f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_FALLALARM.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 跌倒异常报警
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_FALLALARM extends NetSDKLib.SdkStructure {
+    /**
+     * 使能开关
+     */
+    public int bEnable;
+    /**
+     * 单位秒, 报警延迟时间
+     */
+    public int nDelay;
+    /**
+     * 关联报警输出端口,每一bit代表一路报警输出
+     */
+    public int nAlarmOutMask;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_CFG_MINIRADAR_FALLALARM() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java
new file mode 100644
index 0000000..fcb37cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_HEATERATE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 心率呼吸异常报警
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_HEATERATE extends NetSDKLib.SdkStructure {
+    /**
+     * 使能开关
+     */
+    public int bEnable;
+    /**
+     * 合理范围的上限值,大于这个值报警
+     */
+    public int nMax;
+    /**
+     * 合理范围的下限值,小于这个值报警
+     */
+    public int nMin;
+    /**
+     * 单位秒, 报警延迟时间
+     */
+    public int nDelay;
+    /**
+     * 关联报警输出端口,每一bit代表一路报警输出
+     */
+    public int nAlarmOutMask;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_CFG_MINIRADAR_HEATERATE() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java
new file mode 100644
index 0000000..77c5f29
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INDOOR_ALARM_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达报警配置, 对应配置项 NET_EM_CFG_MINIRADAR_INDOOR_ALARM
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_INDOOR_ALARM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 呼吸异常报警配置
+     */
+    public NET_CFG_MINIRADAR_BREATHE stuBreathe = new NET_CFG_MINIRADAR_BREATHE();
+    /**
+     * 心率呼吸异常报警
+     */
+    public NET_CFG_MINIRADAR_HEATERATE stuHeateRate = new NET_CFG_MINIRADAR_HEATERATE();
+    /**
+     * 在/离床报警
+     */
+    public NET_CFG_MINIRADAR_AFBSTATUS stuAFBStatus = new NET_CFG_MINIRADAR_AFBSTATUS();
+    /**
+     * 跌倒异常报警
+     */
+    public NET_CFG_MINIRADAR_FALLALARM stuFallAlarm = new NET_CFG_MINIRADAR_FALLALARM();
+    /**
+     * 人数异常报警
+     */
+    public NET_CFG_MINIRADAR_NUMALARM stuNumAlarm = new NET_CFG_MINIRADAR_NUMALARM();
+    /**
+     * 驻留报警
+     */
+    public NET_CFG_MINIRADAR_RESIDENTALARM stuResidentAlarm = new NET_CFG_MINIRADAR_RESIDENTALARM();
+
+    public NET_CFG_MINIRADAR_INDOOR_ALARM_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java
new file mode 100644
index 0000000..c5f78fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_INSTALL_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达安装信息配置, 对应配置项 NET_EM_CFG_MINIRADAR_INSTALL_INFO
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_INSTALL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 安装方式(室内雷达使用) 0:未知, 1:壁装, 2:墙角装
+     */
+    public int nInstallType;
+    /**
+     * 安装高度;单位米,扩大100倍
+     */
+    public int nInstallHeigh;
+    /**
+     * 安装角度;单位度,扩大100倍
+     */
+    public int nInstallAngle;
+
+    public NET_CFG_MINIRADAR_INSTALL_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java
new file mode 100644
index 0000000..063147c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_NUMALARM.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 人数异常报警
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_NUMALARM extends NetSDKLib.SdkStructure {
+    /**
+     * 使能开关
+     */
+    public int bEnable;
+    /**
+     * 合理范围的上限值,大于这个值报警
+     */
+    public int nMax;
+    /**
+     * 合理范围的下限值,小于这个值报警
+     */
+    public int nMin;
+    /**
+     * 单位秒,报警延迟时间
+     */
+    public int nDelay;
+    /**
+     * 关联报警输出端口,每一bit代表一路报警输出
+     */
+    public int nAlarmOutMask;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_CFG_MINIRADAR_NUMALARM() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java
new file mode 100644
index 0000000..99c7f3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_REGION_DETECT_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description Mini雷达探测区域配置, 对应配置项 NET_EM_CFG_MINIRADAR_REGION_DETECT
+ * @date 2022/08/04 10:13:30
+ */
+public class NET_CFG_MINIRADAR_REGION_DETECT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 前方探测距离,单位米,扩大100倍
+     */
+    public int nFrontDecDis;
+    /**
+     * 前方探测距离,单位米,扩大100倍
+     */
+    public int nBehindDecDis;
+    /**
+     * 左侧探测距离,单位米,扩大100倍
+     */
+    public int nLeftDecDis;
+    /**
+     * 右侧探测距离,单位米,扩大100倍
+     */
+    public int nRightDecDis;
+
+    public NET_CFG_MINIRADAR_REGION_DETECT_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java
new file mode 100644
index 0000000..6d9b162
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_MINIRADAR_RESIDENTALARM.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 驻留报警
+ * @date 2023/01/10 21:09:08
+ */
+public class NET_CFG_MINIRADAR_RESIDENTALARM extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能开关
+	 */
+	public int bEnable;
+	/**
+	 * 单位秒,驻留时间,超过该时间就报警
+	 */
+	public int nTime;
+	/**
+	 * 单位秒,报警输出延迟时间
+	 */
+	public int nDelay;
+	/**
+	 * 关联报警输出端口,每一bit代表一路报警输出
+	 */
+	public int nAlarmOutMask;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_CFG_MINIRADAR_RESIDENTALARM() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java
new file mode 100644
index 0000000..a213983
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_NAS_DIRECTORY.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  存储组件全局配置 
+* @date 2022/09/22 17:25:41
+*/
+public class NET_CFG_NAS_DIRECTORY extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+字节对齐
+*/
+public			byte[]					szReserved=new byte[4];
+/** 
+需要获取到的NAS配置数量
+*/
+public			int					nNeedNASDirectoryInfoNum;
+/** 
+实际获取到的NAS共享目录配置数量
+*/
+public			int					nNASCfgRealNum;
+/** 
+获取到的配置信息指针, 需用户申请内存   {@link com.netsdk.lib.structure.NAS_DIRECTORY_CFG_INFO}
+*/
+public Pointer pNASDirectoryInfo;
+
+public NET_CFG_NAS_DIRECTORY(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java
new file mode 100644
index 0000000..d3ef191
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_OBJECT_FILTER_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 物体过滤器
+ * @date 2021/07/06
+ */
+public class NET_CFG_OBJECT_FILTER_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  物体过滤类型个数
+     */
+    public int nObjectFilterTypeNum;
+
+    /**
+     *  物体过滤类型,参考{@link EM_CFG_OBJECT_FILTER_TYPE }
+     */
+    public int[] emObjectFilterType = new int[16];
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_PTZ_MOVEMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_PTZ_MOVEMENT_INFO.java
new file mode 100644
index 0000000..3284e28
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_PTZ_MOVEMENT_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 云台动作配置, 对应枚举 NET_EM_CFG_PTZ_MOVEMENT
+ * @origin autoTool
+ * @date 2023/10/16 19:23:11
+ */
+public class NET_CFG_PTZ_MOVEMENT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小, 必须赋值
+     */
+    public int dwSize;
+    /**
+     * / 云台功能 {@link com.netsdk.lib.enumeration.EM_PTZ_FUNCTION}
+     */
+    public int emFunction;
+    /**
+     * / 功能编号,当"Function"为"HeatMap"时, Index为热度图计划号
+     */
+    public int nIndex;
+    /**
+     * / 任务名称 {@link com.netsdk.lib.enumeration.EM_PTZ_TASK_NAME}
+     */
+    public int emTaskName;
+
+    public NET_CFG_PTZ_MOVEMENT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_QR_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_QR_CODE_INFO.java
new file mode 100644
index 0000000..923d1ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_QR_CODE_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 119178
+ * @version 1.0
+ * @description 配置二维码有效时间
+ * 对应枚举{@link com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_QR_CODE}
+ * @date 2020/12/11
+ */
+public class NET_CFG_QR_CODE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 结构体大小
+	 */
+	public int							dwSize;							
+	/**
+	 * 业主二维码有效时间,单位分钟
+	 */
+	public int 							nValidTime;						 
+	
+	public NET_CFG_QR_CODE_INFO() {
+		 this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java
new file mode 100644
index 0000000..8275464
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_DEVLIST_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 雷达设备列表配置, 对应配置项NET_EM_CFG_RADAR_DEVLIST
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_CFG_RADAR_DEVLIST_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 雷达设备个数, 即stuRadarDevList 数组有效元素个数
+     */
+    public int nRadarDevNum;
+    /**
+     * 雷达设备列表信息
+     */
+    public NET_RADAR_DEVICE_INFO[] stuRadarDevList = (NET_RADAR_DEVICE_INFO[]) new NET_RADAR_DEVICE_INFO().toArray(10);
+
+    public NET_CFG_RADAR_DEVLIST_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..9a65359
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 雷达RFID卡片信息配置
+ * @since : Created in 2022/02/16 14:42
+ */
+
+public class NET_CFG_RADAR_RFIDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * RFID卡片数量
+     */
+    public int nCardNum;
+    /**
+     * RFID卡片配置信息
+     */
+    public NET_RADAR_RFIDCARD_CONFIG[] stuCardInfo = (NET_RADAR_RFIDCARD_CONFIG[]) new NET_RADAR_RFIDCARD_CONFIG().toArray(256);
+
+    public NET_CFG_RADAR_RFIDCARD_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java
new file mode 100644
index 0000000..476cd96
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RADAR_SCREEN_RULE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 雷达屏幕显示规则配置, 对应配置项NET_EM_CFG_RADAR_SCREEN_RULE
+ * @date 2022/06/13 19:27:38
+ */
+public class NET_CFG_RADAR_SCREEN_RULE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 雷达屏幕显示规则个数, stuScreenRule 数组的有效元素个数
+	 */
+	public int nScreenRuleNum;
+	/**
+	 * 雷达屏幕显示规则
+	 */
+	public NET_RADAR_SCREEN_RULE[] stuScreenRule = new NET_RADAR_SCREEN_RULE[10];
+
+	public NET_CFG_RADAR_SCREEN_RULE_INFO() {
+		for (int i = 0; i < stuScreenRule.length; i++) {
+			stuScreenRule[i] = new NET_RADAR_SCREEN_RULE();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java
new file mode 100644
index 0000000..733ea70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 远程通道是否同步本地端"周期一键布撤防"配置,对应配置枚举
+ *              NET_EM_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC
+ * @date 2022/10/14 14:10:58
+ */
+public class NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 远程通道是否同步本地端"周期一键布撤防"配置功能总开关
+	 */
+	public int bEnable;
+	/**
+	 * 需要同步的通道号,由用户分配内存,指针对应int[]数组
+	 */
+	public Pointer pRemoteChannels;
+	/**
+	 * pRemoteChannels指向的有效通道个数
+	 */
+	public int nRemoteChannelsCnt;
+	/**
+	 * 获取配置时,返回的有效通道号个数
+	 */
+	public int nRetRemoteChannelsCnt;
+
+	public NET_CFG_REMOTE_DISABLE_LINKAGE_TIME_SECTION_SYNC_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java
new file mode 100644
index 0000000..7f526c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CHANNELS_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通道表, 对应配置项NET_EM_CFG_RTSC_SCH_CHANNELS
+ * @date 2021/09/02
+ */
+public class NET_CFG_RTSC_SCH_CHANNELS_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  最大通道个数,只读
+     */
+    public int nMaxChannels;
+
+    /**
+     *  通道列表个数
+     */
+    public int nChannelsInfoNum;
+
+    /**
+     *  通道列表
+     */
+    public NET_CHANNELS_INFO[] stuChannelsInfo = (NET_CHANNELS_INFO[]) new NET_CHANNELS_INFO().toArray(36);
+    public NET_CFG_RTSC_SCH_CHANNELS_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java
new file mode 100644
index 0000000..330d33a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_CROSSLIST_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 路口数据列表配置,对应配置项NET_EM_CFG_RTSC_SCH_CROSSLIST
+ * @date 2021/09/02
+ */
+public class NET_CFG_RTSC_SCH_CROSSLIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  路口数据列表信息个数
+     */
+    public int nCrossListInfoNum;
+
+    /**
+     *  路口数据列表信息
+     */
+    public NET_CROSS_LIST_INFO[] stuCrossListInfo = (NET_CROSS_LIST_INFO[]) new NET_CROSS_LIST_INFO().toArray(2);
+    
+    public NET_CFG_RTSC_SCH_CROSSLIST_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java
new file mode 100644
index 0000000..8fc011a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_MANAGE_INFO.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 红绿灯调度计划列表,对应配置项NET_EM_CFG_RTSC_SCH_MANAGE
+ * @date 2021/09/14
+ */
+public class NET_CFG_RTSC_SCH_MANAGE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  最大日方案数
+     */
+    public int nMaxDayPlans;
+
+    /**
+     *  最大时段数
+     */
+    public int nMaxDayActions;
+
+    /**
+     *  最大周计划数
+     */
+    public int nMaxWeekPlans;
+
+    /**
+     *  最大日常调度方案个数
+     */
+    public int nMaxCommonDatePlans;
+
+    /**
+     *  最大特殊调度方案个数
+     */
+    public int nMaxSpecialDatePlans;
+
+    /**
+     *  日计划方案个数
+     */
+    public int nDayplansNum;
+
+    /**
+     *  日计划方案  
+     */
+    public NET_DAY_PLAN_INFO[] stuDayPlanInfo = (NET_DAY_PLAN_INFO[]) new NET_DAY_PLAN_INFO().toArray(56);
+    /**
+     *  周计划列表个数
+     */
+    public int nWeekPlansNum;
+
+    /**
+     *  周计划列表
+     */
+    public NET_WEEKS_PLAN_INFO[] stuWeeksPlanInfo = (NET_WEEKS_PLAN_INFO[]) new NET_WEEKS_PLAN_INFO().toArray(20);
+    /**
+     *  日常调度列表个数
+     */
+    public int nCommonDatePlanNum;
+
+    /**
+     *  日常调度列表
+     */
+    public NET_COMMON_DATE_PLAN_INFO[] stuCommonDatePlanInfo = (NET_COMMON_DATE_PLAN_INFO[]) new NET_COMMON_DATE_PLAN_INFO().toArray(16);
+    /**
+     *  特殊调度列表个数
+     */
+    public int nSpecialDateNum;
+
+    /**
+     *  特殊调度列表
+     */
+    public NET_SPECIAL_DATE_PLAN_INFO[] stuSpecialDatePlan = (NET_SPECIAL_DATE_PLAN_INFO[]) new NET_SPECIAL_DATE_PLAN_INFO().toArray(16);
+    public NET_CFG_RTSC_SCH_MANAGE_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java
new file mode 100644
index 0000000..6afc8ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_NIGHTASK_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 夜间请求,对应配置项NET_EM_CFG_RTSC_SCH_NIGHTASK
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_SCH_NIGHTASK_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  夜间请求智能化配置列表个数
+     */
+    public int nNightAskNum;
+
+    /**
+     *  夜间请求智能化配置列表
+     */
+    public NET_NIGHT_ASK_INFO[] stuNightAskInfo = (NET_NIGHT_ASK_INFO[]) new NET_NIGHT_ASK_INFO().toArray(20);
+    public NET_CFG_RTSC_SCH_NIGHTASK_INFO(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java
new file mode 100644
index 0000000..2f908fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OPTIMIZES_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 饱和度与单点自适应智能化配置,对应配置项NET_EM_CFG_RTSC_SCH_OPTIMIZES
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_SCH_OPTIMIZES_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小 
+     */
+    public int dwSize;
+
+    /**
+     *  能度与单点完成配置表个数
+     */
+    public int nOptimizeInfoNum;
+
+    /**
+     *  能度与单点完成配置表
+     */
+    public NET_OPTIMIZES_INFO[] stuOptimizeInfo = (NET_OPTIMIZES_INFO[]) new NET_OPTIMIZES_INFO().toArray(20);
+    public NET_CFG_RTSC_SCH_OPTIMIZES_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java
new file mode 100644
index 0000000..944ad39
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 溢出控制列表,对应配置项NET_EM_CFG_RTSC_SCH_OVERFLOW_CONTROL
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小 
+     */
+    public int dwSize;
+
+    /**
+     *  溢出控制智能化配置列表个数
+     */
+    public int nOverflowControlNum;
+
+    /**
+     *  溢出控制智能化配置列表
+     */
+    public NET_OVER_FLOW_CONTROL_INFO[] stuOverFlowControlInfo = (NET_OVER_FLOW_CONTROL_INFO[]) new NET_OVER_FLOW_CONTROL_INFO().toArray(20);
+    public NET_CFG_RTSC_SCH_OVERFLOW_CONTROL_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java
new file mode 100644
index 0000000..38e4db2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 行人优先智能化配置,对应配置项NET_EM_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY
+ * @date 2021/09/27
+ */
+public class NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  行人优先智能化配置列表个数
+     */
+    public int nPedestrainPriorityNum;
+
+    /**
+     *  行人优先智能化配置列表
+     */
+    public NET_PEDESTRAIN_PRIORITY_INFO[] stupedestrainPriorityInfo = (NET_PEDESTRAIN_PRIORITY_INFO[]) new NET_PEDESTRAIN_PRIORITY_INFO().toArray(20);
+    public NET_CFG_RTSC_SCH_PEDDESTRAIN_PRIORITY_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java
new file mode 100644
index 0000000..3eeb2b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 行人检测器列表, 对应配置项NET_EM_CFG_RTSC_SCH_PEDDETECTOR_LIST
+ * @date 2021/09/27
+ */
+public class NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  最大行人检测器数
+     */
+    public int nMaxPedestrianDetectors;
+
+    /**
+     *  行人检测器列表个数
+     */
+    public int nPedDetectorNum;
+
+    /**
+     *  行人检测器列表
+     */
+    public NET_PED_DETECTOR_INFO[] stuPedDetectorInfo = (NET_PED_DETECTOR_INFO[]) new NET_PED_DETECTOR_INFO().toArray(16);
+    public NET_CFG_RTSC_SCH_PEDDETECTOR_LIST_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java
new file mode 100644
index 0000000..124a984
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周期方案表, 对应配置项NET_EM_CFG_RTSC_SCH_PLANS
+ * @date 2021/09/02
+ */
+public class NET_CFG_RTSC_SCH_PLANS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  最大方案个数 只读
+     */
+    public int nMaxCyclePlans;
+
+    /**
+     *  周期方案列表个数
+     */
+    public int nCyclePalnNum;
+
+    /**
+     *  周期方案列表
+     */
+    public NET_CYCLE_PLAN_INFO[] stuCyclePlan = (NET_CYCLE_PLAN_INFO[]) new NET_CYCLE_PLAN_INFO().toArray(20);
+    
+    public NET_CFG_RTSC_SCH_PLANS_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java
new file mode 100644
index 0000000..a390843
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANELIST_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道列表,对应配置项NET_EM_CFG_RTSC_SCH_VARLANELIST
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_SCH_VARLANELIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  可变车道列表个数
+     */
+    public int nVarlaneListNum;
+
+    /**
+     *  可变车道列表
+     */
+    public NET_VAR_LANE_LIST_INFO[] stuVarLaneListInfo = (NET_VAR_LANE_LIST_INFO[]) new NET_VAR_LANE_LIST_INFO().toArray(8);
+    
+    /**
+     *  可变车道计划表个数
+     */
+    public int nVarlanePlanListNum;
+
+    /**
+     *  可变车道计划表
+     */
+    public NET_VARLANE_PLAN_LIST_INFO[] stuVarlanePlanInfo = (NET_VARLANE_PLAN_LIST_INFO[]) new NET_VARLANE_PLAN_LIST_INFO().toArray(8);
+    public NET_CFG_RTSC_SCH_VARLANELIST_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java
new file mode 100644
index 0000000..73dc330
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道调度计划列表,对应配置项NET_EM_CFG_RTSC_SCH_VARLANE_MANAGEMENT
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小 
+     */
+    public int dwSize;
+
+    /**
+     *  可变车道日方案列表个数
+     */
+    public int nDayPlansNum;
+
+    /**
+     *  可变车道日方案列表
+     */
+    public NET_DAY_PLANS_INFO[] stuDayPlansInfo = (NET_DAY_PLANS_INFO[]) new NET_DAY_PLANS_INFO().toArray(20);
+    /**
+     *  周计划列表个数
+     */
+    public int nWeekPlansNum;
+
+    /**
+     *  周计划列表
+     */
+    public NET_WEEK_PLANS_INFO[] stuWeekPlansInfo = (NET_WEEK_PLANS_INFO[]) new NET_WEEK_PLANS_INFO().toArray(10);
+    /**
+     *  日常调度列表个数
+     */
+    public int nCommonDatePlanNum;
+
+    /**
+     *  日常调度列表 
+     */
+    public NET_COMMON_DATE_PLAN_INFO[] stuCommonDatePlanInfo = (NET_COMMON_DATE_PLAN_INFO[]) new NET_COMMON_DATE_PLAN_INFO().toArray(8);
+    /**
+     *  特殊调度列表个数
+     */
+    public int nSpecialDatePlanNum;
+
+    /**
+     *  特殊调度列表
+     */
+    public NET_SPECIAL_DATE_PLANS_INFO[] stuSpecialDatePlanInfo = (NET_SPECIAL_DATE_PLANS_INFO[]) new NET_SPECIAL_DATE_PLANS_INFO().toArray(8);
+    public NET_CFG_RTSC_SCH_VARLANE_MANAGEMENT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java
new file mode 100644
index 0000000..7171bd7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测器列表,对应配置项NET_EM_CFG_RTSC_SCH_VEHICLE_DETECTORLIST
+ * @date 2021/09/27
+ */
+public class NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  最大车辆检测器数
+     */
+    public int nMaxVehicleDetectors;
+
+    /**
+     *  检测器列表个数
+     */
+    public int nVehicleDetectorNum;
+
+    /**
+     *  检测器列表
+     */
+    public NET_SIGNAL_VEHICLE_DETECTOR_INFO[] stuVehicleDetectorInfo = (NET_SIGNAL_VEHICLE_DETECTOR_INFO[]) new NET_SIGNAL_VEHICLE_DETECTOR_INFO().toArray(32);
+    
+    public NET_CFG_RTSC_SCH_VEHICLE_DETECTORLIST_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java
new file mode 100644
index 0000000..caeef31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_RTSC_TEMP_SCH_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 临时方案配置,对应配置项NET_EM_CFG_RTSC_TEMP_SCH
+ * @date 2021/09/28
+ */
+public class NET_CFG_RTSC_TEMP_SCH_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  临时方案开始时间个数
+     */
+    public int nStartTimeNum;
+
+    /**
+     *  临时方案开始时间   int[0]时       Int[1]分  后两位预留
+     */
+    public int[] nStartTime = new int[4];
+
+    /**
+     *  临时方案结束时间个数
+     */
+    public int nEndTimeNum;
+
+    /**
+     *  临时方案结束时间   int[0]时      Int[1]分  后两位预留
+     */
+    public int[] nEndTime = new int[4];
+
+    /**
+     *  环信息个数
+     */
+    public int nRingsNum;
+
+    /**
+     *  环信息
+     */
+    public NET_RINGS_INFO[] stuRingsInfo = (NET_RINGS_INFO[]) new NET_RINGS_INFO().toArray(4);
+    /**
+     *  跟随相位列表个数
+     */
+    public int nOverLapsNum;
+
+    /**
+     *  跟随相位列表
+     */
+    public NET_OVER_LAPS_INFO[] stuOverLapsInfo = (NET_OVER_LAPS_INFO[]) new NET_OVER_LAPS_INFO().toArray(16);
+    public NET_CFG_RTSC_TEMP_SCH_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE.java
new file mode 100644
index 0000000..c0cba85
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 物体尺寸
+ */
+public class NET_CFG_SIZE extends SdkStructure {
+    /**
+     * 针对使用的不同,该字段有两种含义:宽,面积
+     * 使用哪种含义由配置的是宽高还是面积决定
+     */
+    public float nWide;
+
+    /**
+     * 高
+     */
+    public float             nHeight;
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java
new file mode 100644
index 0000000..020d15c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZEFILTER_INFO.java
@@ -0,0 +1,95 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/** 尺寸过滤器 */
+public class NET_CFG_SIZEFILTER_INFO extends SdkStructure {
+  /** 校准框个数 */
+  public int nCalibrateBoxNum;
+  /** 校准框(远端近端标定模式下有效) */
+  public NET_CFG_CALIBRATEBOX_INFO[] stuCalibrateBoxs =
+      new NET_CFG_CALIBRATEBOX_INFO[10];
+  /** 计量方式参数是否有效 */
+  public byte bMeasureModeEnable;
+  /** 计量方式,0-像素,不需要远端、近端标定, 1-实际长度,单位:米, 2-远端近端标定后的像素 */
+  public byte bMeasureMode;
+  /** 过滤类型参数是否有效 */
+  public byte bFilterTypeEnable;
+  // ByArea,ByRatio仅作兼容,使用独立的ByArea和ByRatio选项代替 2012/03/06
+  /** 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight" */
+  public byte bFilterType;
+  /** 物体最小尺寸参数是否有效 */
+  public byte bFilterMinSizeEnable;
+  /** 物体最大尺寸参数是否有效 */
+  public byte bFilterMaxSizeEnable;
+
+  public byte abByArea;
+  public byte abMinArea;
+  public byte abMaxArea;
+  public byte abMinAreaSize;
+  public byte abMaxAreaSize;
+  /** 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用 */
+  public byte bByArea;
+  /** 物体最小尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。 */
+  public NET_CFG_SIZE stuFilterMinSize=new NET_CFG_SIZE();
+  /** 物体最大尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。 */
+  public NET_CFG_SIZE stuFilterMaxSize=new NET_CFG_SIZE();
+  /** 最小面积 */
+  public float nMinArea;
+  /** 最大面积 */
+  public float nMaxArea;
+  /** 最小面积矩形框尺寸 "计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸; */
+  public NET_CFG_SIZE stuMinAreaSize=new NET_CFG_SIZE();
+  /** 最大面积矩形框尺寸, 同上 */
+  public NET_CFG_SIZE stuMaxAreaSize=new NET_CFG_SIZE();
+
+  public byte abByRatio;
+  public byte abMinRatio;
+  public byte abMaxRatio;
+  public byte abMinRatioSize;
+  public byte abMaxRatioSize;
+  /** 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用 */
+  public byte bByRatio;
+
+  public byte[] bReserved1 = new byte[2];
+  /** 最小宽高比 */
+  public double dMinRatio;
+  /** 最大宽高比 */
+  public double dMaxRatio;
+  /** 最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。 */
+  public NET_CFG_SIZE stuMinRatioSize=new NET_CFG_SIZE();
+  /** 最大宽高比矩形框尺寸,同上 */
+  public NET_CFG_SIZE stuMaxRatioSize=new NET_CFG_SIZE();
+  /** 面积校准框个数 */
+  public int nAreaCalibrateBoxNum;
+  /** 面积校准框 */
+  public NET_CFG_CALIBRATEBOX_INFO[] stuAreaCalibrateBoxs =
+     new NET_CFG_CALIBRATEBOX_INFO[10];
+  /** 宽高校准框个数 */
+  public int nRatioCalibrateBoxs;
+  /** 宽高校准框 */
+  public NET_CFG_CALIBRATEBOX_INFO[] stuRatioCalibrateBoxs =
+     new NET_CFG_CALIBRATEBOX_INFO[10];
+  /** 长宽过滤使能参数是否有效 */
+  public byte abBySize;
+  /** 长宽过滤使能 */
+  public byte bBySize;
+  /** 保留字段 */
+  public byte[] bReserved = new byte[518];
+
+  public NET_CFG_SIZEFILTER_INFO(){
+
+    for(int i=0;i<stuCalibrateBoxs.length;i++){
+      stuCalibrateBoxs[i]=new  NET_CFG_CALIBRATEBOX_INFO();
+
+    }
+
+    for(int i=0;i<stuAreaCalibrateBoxs.length;i++){
+      stuAreaCalibrateBoxs[i]=new NET_CFG_CALIBRATEBOX_INFO();
+    }
+
+    for (int i=0;i<stuRatioCalibrateBoxs.length;i++){
+      stuRatioCalibrateBoxs[i]=new NET_CFG_CALIBRATEBOX_INFO();
+    }
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE_WIDE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE_WIDE.java
new file mode 100644
index 0000000..00bf6d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_SIZE_WIDE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.sun.jna.Union;
+
+/**
+ * 物体尺寸宽度
+ */
+public class NET_CFG_SIZE_WIDE extends Union {
+    /**
+     * 宽
+     */
+    public float nWidth;
+    /**
+     * 面积
+     */
+    public float nArea;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java
new file mode 100644
index 0000000..10a3d6a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_THERMOMETRY_SHIELD_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  屏蔽区的测温屏蔽区配置信息 
+* @date 2022/11/07 10:53:23
+*/
+public class NET_CFG_THERMOMETRY_SHIELD_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小, 必填项
+*/
+public			int					dwSize;
+/** 
+1 获取配置时,每个通道实际返回的测温屏蔽区配置个数
+2 设置配置时,设置的配置个数
+*/
+public			int					nRealInfoNumOfEachChennel;
+/**
+ 每个通道的测温屏蔽区配置信息,每个通道最多支持12个屏蔽区
+*/
+public			THERMOMETRY_SHIELD_INFO[]					stuThermometryShieldInfo=new THERMOMETRY_SHIELD_INFO[12];
+
+public NET_CFG_THERMOMETRY_SHIELD_INFO(){
+		for(int i=0;i<stuThermometryShieldInfo.length;i++){
+			stuThermometryShieldInfo[i]=new THERMOMETRY_SHIELD_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java
new file mode 100644
index 0000000..68fc8d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO  extends NetSDKLib.SdkStructure{
+	public int                               dwSize;                  // 结构体大小
+	public int                               bEnable;            // 使能开关,未使能,全天可备份
+	public int                               nProcessTimeCount;  // 备份任务处理时间有效个数
+	public NET_RECORDBACKUP_PROCESSTIME[]    stuProcessTime=(NET_RECORDBACKUP_PROCESSTIME[])new NET_RECORDBACKUP_PROCESSTIME().toArray(4); // 备份任务处理时间
+	public int                               nTaskCount;         // 任务有效个数
+	public NET_TIME_RECORDBACKUP_TASK[]      stuTask =(NET_TIME_RECORDBACKUP_TASK[])new NET_TIME_RECORDBACKUP_TASK().toArray(512);       // 任务信息, 最大支持个;
+
+	public NET_CFG_TIME_RECORDBACKUP_RESTORE_INFO()
+    {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java
new file mode 100644
index 0000000..f2d3c39
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_TRAFFIC_LAMP_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  时间间隔配置, 对应 NET_EM_TRAFFIC_LAMP_CONFIG 
+* @origin autoTool
+* @date 2023/02/15 10:09:20
+*/
+public class NET_CFG_TRAFFIC_LAMP_CONFIG_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+DH_ALARM_TRAFFIC_LAMP_WORK_STATE报警事件的通知周期, 单位是秒, 默认600, 范围300~86400
+*/
+public			int					nNotifyPeriod;
+
+public NET_CFG_TRAFFIC_LAMP_CONFIG_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java
new file mode 100644
index 0000000..717d9e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIDEOTALK_SIGNLIGHT.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可视对讲签名灯设置
+ * @date 2020/11/06
+ */
+public class NET_CFG_VIDEOTALK_SIGNLIGHT extends NetSDKLib.SdkStructure{
+	 /**
+     * 结构体大小
+     */
+    public int dwSize;
+    
+    /**
+     * 签名灯个数
+     * */
+    public int nSignLightNum;
+    
+    /**
+     * 签名灯信息
+     * */
+    public NET_VIDEOTALK_SIGNLIGHT_INFO[] stuSignLightInfo = new NET_VIDEOTALK_SIGNLIGHT_INFO[16];
+    
+    
+    public NET_CFG_VIDEOTALK_SIGNLIGHT() {
+        dwSize = this.size();
+        for (int i = 0; i < stuSignLightInfo.length; i++) {
+        	stuSignLightInfo[i] = new NET_VIDEOTALK_SIGNLIGHT_INFO();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java
new file mode 100644
index 0000000..fdb209a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VIOLATIONTYPE_NORMAL.java
@@ -0,0 +1,15 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ public class NET_CFG_VIOLATIONTYPE_NORMAL extends NetSDKLib.SdkStructure {
+/** 使能*/
+public			int					bEnable;
+/** 文本颜色 NET_EM_LXSJ_FONTCOLOR */
+public			int					emTextColor;
+/** 违法内容*/
+public			byte[]					szText=new byte[128];
+/** 预留*/
+public			byte[]					byReserved=new byte[376];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java
new file mode 100644
index 0000000..8ce1e97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAVI_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @author 119178
+ * @description 公安视频图像信息应用系统接入配置(对应枚举值 {@link NET_EM_CFG_OPERATE_TYPE})
+ * @date 2020/6/9
+ */
+public class NET_CFG_VSP_GAVI_INFO extends SdkStructure{
+	/**
+	 *  结构体大小
+	 */
+	public int						dwSize;		
+	/**
+	 *  注册平台个数
+	 */
+	public int							nGaviInfoCount;         		
+	/**
+	 * 注册平台信息
+	 */
+	public NET_VSP_GAVI_INFO[]			stuGaviInfo=(NET_VSP_GAVI_INFO[])new NET_VSP_GAVI_INFO().toArray(16); 
+	/**
+	 * stuPlatformInfo个数
+	 */
+	public int							nPlatformCount;		
+	/**
+	 * 接入平台范围信息,不允许修改
+	 */
+	public NET_VSP_GAVI_PLATFORM_INFO[]  stuPlatformInfo =(NET_VSP_GAVI_PLATFORM_INFO[])new NET_VSP_GAVI_PLATFORM_INFO().toArray(64);				
+	
+	public NET_CFG_VSP_GAVI_INFO()
+    {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java
new file mode 100644
index 0000000..157c5c0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_GAYS_SERVER_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_SIP_SERVER_NUM;
+
+/**
+ * 平台接入配置信息
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_VSP_GAYS_SERVER}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 9:31
+ */
+public class NET_CFG_VSP_GAYS_SERVER_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 下发 SIP 服务器信息的个数,不超过 MAX_SIP_SERVER_NUM
+     */
+    public int nSipServerInfoNum;
+    /**
+     * SIP服务器信息
+     */
+    public NET_SIP_SERVER_INFO[] stuSipServerInfo = new NET_SIP_SERVER_INFO[MAX_SIP_SERVER_NUM];
+    /**
+     * 获取到的实际返回SIP服务器信息个数
+     */
+    public int nRetSipServerInfoNum;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[4];
+
+    public NET_CFG_VSP_GAYS_SERVER_INFO() {
+        dwSize = this.size();
+        for (int i = 0; i < stuSipServerInfo.length; i++) {
+            stuSipServerInfo[i] = new NET_SIP_SERVER_INFO();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java
new file mode 100644
index 0000000..d5d70dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_ELEMENT.java
@@ -0,0 +1,19 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+ /** 叠加元素 */
+ public class NET_CFG_VSP_LXSJ_ELEMENT extends NetSDKLib.SdkStructure {
+/** 名称类型 NET_EM_LXSJ_ELEM_NAMETYPE*/
+public			int					emNameType;
+/** 名称*/
+public			byte[]					szName=new byte[32];
+/** 前缀字符串*/
+public			byte[]					szPrefix=new byte[64];
+/** 后缀字符串*/
+public			byte[]					szPostfix=new byte[64];
+/** 后面添加分隔符个数*/
+public			int					nSeperaterCount;
+/** 预留*/
+public			byte[]					byReserved=new byte[856];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java
new file mode 100644
index 0000000..5728c97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_LEDCONFIG.java
@@ -0,0 +1,10 @@
+ package com.netsdk.lib.structure;
+ import com.netsdk.lib.NetSDKLib;
+
+ /**LED屏幕配置  */
+ public class NET_CFG_VSP_LXSJ_LEDCONFIG extends NetSDKLib.SdkStructure {
+/** 车位个数*/
+public			int					nParkingNum;
+/** 车位配置*/
+public			NET_CFG_VSP_LXSJ_PARKING[]					stuParking=(NET_CFG_VSP_LXSJ_PARKING[])new NET_CFG_VSP_LXSJ_PARKING().toArray(256);
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java
new file mode 100644
index 0000000..9ce22bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_NOPLATE.java
@@ -0,0 +1,13 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ public class NET_CFG_VSP_LXSJ_NOPLATE extends NetSDKLib.SdkStructure {
+/** 使能*/
+public			int					bEnable;
+/** 无牌车内容*/
+public			byte[]					szText=new byte[128];
+/** 预留*/
+public			byte[]					byReserved=new byte[380];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java
new file mode 100644
index 0000000..6697ec9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_PARKING.java
@@ -0,0 +1,11 @@
+ package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+ /**
+  * 车位配置
+  */
+ public class NET_CFG_VSP_LXSJ_PARKING extends NetSDKLib.SdkStructure {
+/** 倒计时目标值*/
+public			int					nCountDownTime;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java
new file mode 100644
index 0000000..3c6c4f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_VSP_LXSJ_VIOLATIONTYPE.java
@@ -0,0 +1,35 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ public class NET_CFG_VSP_LXSJ_VIOLATIONTYPE extends NetSDKLib.SdkStructure {
+/** 超速*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficOverSpeed=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 违法变道*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficCrossLane=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 违法停车*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficParking=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 违法倒车*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficBacking=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 逆行*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficRetrograde=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 违停预警*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuParkingWarning=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 卡口*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficJunction=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 礼让行人*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficPedestrainPriority=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 闯红灯*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficRunRedLight=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 不按车道行驶*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficWrongRoute=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 车辆拥堵禁入*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficJamForbidInto=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 压白线*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficOverLine=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 有车占道*/
+public			NET_CFG_VIOLATIONTYPE_NORMAL					stuTrafficVehicleInRoute=new NET_CFG_VIOLATIONTYPE_NORMAL();
+/** 预留*/
+public			byte[]					byReserved=new byte[13824];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_WIEGAND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_WIEGAND_INFO.java
new file mode 100644
index 0000000..c476426
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CFG_WIEGAND_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 韦根配置,   对应配置项 NET_EM_CFG_WIEGAND
+* @date 2022/03/08 09:56:03
+*/
+public class NET_CFG_WIEGAND_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+stuWiegandInfos的有效元素
+*/
+public			int					nCount;
+/** 
+韦根配置信息
+*/
+public			NET_WIEGAND_INFO[]					stuWiegandInfos=new NET_WIEGAND_INFO[8];
+
+public NET_CFG_WIEGAND_INFO(){
+
+    for(int i=0;i<stuWiegandInfos.length;i++){
+        stuWiegandInfos[i]=new NET_WIEGAND_INFO();
+    }
+
+   this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_INFO.java
new file mode 100644
index 0000000..bbe7b25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通道列表信息
+ * @date 2021/09/02
+ */
+public class NET_CHANNELS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道编号
+     */
+    public int nChannelNumber;
+
+    /**
+     *  通道关联的相位或跟随相位,相位编号从1开始
+     */
+    public int nChannelPhase;
+
+    /**
+     *  通道所接灯组的类型 | 16 圆盘灯 | 17 左转箭头灯 | 18 直行箭头灯 | 19 右转箭头灯 | 20 掉头箭头灯 | 21 单个行人灯| 22 左转非机动车灯 | 23 直行非机动车灯 | 24 公交信号灯 | 25 入口行人灯,进口为实线有箭头线的斑马线区 | 26 出口行人灯,出口为虚线无箭头线的斑马线区 |
+     */
+    public int nLampType;
+
+    /**
+     *  通道所接灯组的所在路口;0-单路口,1-短连接路口1,2-短连接路口
+     */
+    public int nCrossType;
+
+    /**
+     *  进口方向 | 0 北 | 1 东北 | 2 东| 3 东南 | 4 南 | 5 西南 | 6 西 | 7 西北 |
+     */
+    public int nRoadSectionDir;
+
+    /**
+     *  通道类型;1-其他,2-机动车,3-行人
+     */
+    public int nChannelControlType;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE.java
new file mode 100644
index 0000000..f68077d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  通道状态
+* @date 2022/10/09 11:24:36
+*/
+public class NET_CHANNELS_STATE extends NetSDKLib.SdkStructure {
+/** 
+通道类型 {@link com.netsdk.lib.enumeration.EM_CHANNELS_STATE_TYPE}
+*/
+public			int					emType;
+/** 
+通道号
+*/
+public			int					nIndex;
+/** 
+在线状态 {@link com.netsdk.lib.enumeration.EM_DEV_STATUS}
+*/
+public			int					emOnlineState;
+/** 
+报警状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMIN时有效 {@link com.netsdk.lib.enumeration.EM_ZONE_STATUS}
+*/
+public			int					emAlarmState;
+/** 
+输出状态,当emType为EM_CHANNELS_STATE_TYPE_ALARMOUT,EM_CHANNELS_STATE_TYPE_SIREN时有效 {@link com.netsdk.lib.enumeration.EM_OUTPUT_STATE}
+*/
+public			int					emOutputState;
+/** 
+通道对应名称
+*/
+public			byte[]					szName=new byte[64];
+/** 
+通道对应SN号
+*/
+public			byte[]					szSN=new byte[32];
+/** 
+探测器状态信息
+*/
+public			NET_SENSOR_STATE					stuSensorState=new NET_SENSOR_STATE();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[60];
+
+public NET_CHANNELS_STATE(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java
new file mode 100644
index 0000000..55bdfd8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNELS_STATE_CONDITION.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取通道状态查询条件 
+* @date 2022/10/09 11:22:21
+*/
+public class NET_CHANNELS_STATE_CONDITION extends NetSDKLib.SdkStructure {
+/** 
+通道类型 {@link com.netsdk.lib.enumeration.EM_CHANNELS_STATE_TYPE}
+*/
+public			int					emType;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1020];
+
+public NET_CHANNELS_STATE_CONDITION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_CFG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_CFG_INFO.java
new file mode 100644
index 0000000..a1b6d3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_CFG_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_ENTRY_DIRECTION;
+import com.netsdk.lib.enumeration.EM_ENTRY_TYPE;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 通道信息
+ * @date 2020/11/06
+ */
+public class NET_CHANNEL_CFG_INFO extends NetSDKLib.SdkStructure {
+  /** 上报的相机编号 */
+  public int nCameraNo;
+
+  /** 进口方向{@link EM_ENTRY_DIRECTION} */
+  public int emEntryDirection;
+
+  /** 进口类型{@link EM_ENTRY_TYPE} */
+  public int[] emEntryType = new int[16];
+  /** 进口类型个数 */
+  public int nRetEntryTypeNum;
+
+  /** 车道号 */
+  public int nLaneNo;
+  /** 上报的相机编号,用户分配内存,int类型 */
+  public Pointer pCameraNo;
+  /** pCameraNo 个数 */
+  public int nCameraCount;
+  /** 返回的 pCameraNo 个数,获取时有效,设置时无效 */
+  public int nCameraCountRet;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[940];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_INFO.java
new file mode 100644
index 0000000..f2f9bdc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_CHANNEL_ID_LEN;
+
+/**
+ * 通道相关信息
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 9:16
+ */
+public class NET_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道编号
+     */
+    public byte[] szID = new byte[MAX_CHANNEL_ID_LEN];
+    /**
+     * 报警级别,范围 [1,6]
+     */
+    public int nAlarmLevel;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO.java
new file mode 100644
index 0000000..1e7de32
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 智能业务状态信息
+ * @date 2022/07/04 14:04:51
+ */
+public class NET_CHANNEL_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 已开启的智能规则信息个数
+	 */
+	public int nIntelliInfoNum;
+	/**
+	 * 已开启的智能规则信息
+	 */
+	public NET_INTELLI_INFO[] stuIntelliInfo = new NET_INTELLI_INFO[16];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[512];
+
+	public NET_CHANNEL_STATE_INFO() {
+		for (int i = 0; i < stuIntelliInfo.length; i++) {
+			stuIntelliInfo[i] = new NET_INTELLI_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java
new file mode 100644
index 0000000..d89cd9c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CHANNEL_STATE_INFO_EX.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 关闭的智能规则信息
+ * @date 2022/10/31 19:28:33
+ */
+public class NET_CHANNEL_STATE_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 已开启的智能规则信息个数
+	 */
+	public int nIntelliInfoNum;
+	/**
+	 * 已开启的智能规则信息
+	 */
+	public NET_INTELLI_INFO[] stuIntelliInfo = new NET_INTELLI_INFO[16];
+	/**
+	 * 已关闭的智能规则信息个数
+	 */
+	public int nClosedIntelliInfoNum;
+	/**
+	 * 已关闭的智能规则信息
+	 */
+	public NET_INTELLI_INFO[] stuClosedIntelliInfo = new NET_INTELLI_INFO[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[512];
+
+	public NET_CHANNEL_STATE_INFO_EX() {
+		for (int i = 0; i < stuIntelliInfo.length; i++) {
+			stuIntelliInfo[i] = new NET_INTELLI_INFO();
+		}
+		for (int i = 0; i < stuClosedIntelliInfo.length; i++) {
+			stuClosedIntelliInfo[i] = new NET_INTELLI_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java
new file mode 100644
index 0000000..ded13b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CIGARETTE_CASE_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  销售香烟信息 
+* @date 2022/12/14 14:33:00
+*/
+public class NET_CIGARETTE_CASE_INFO extends NetSDKLib.SdkStructure {
+/** 
+销售烟盒种类,目前支持的类型如下
+0	"GuiYan-Yinghuangjingpin"	贵烟(硬黄精品)
+1	"HuangGuoShu-Lanjiapin"	黄果树(蓝佳品)
+2	"GuiYan-Yinggaozun"	贵烟(硬高遵)
+3	"GuiYan-Xi"	贵烟(喜)
+4	"YunYan-Ruanzhenpin"	云烟(软珍品)
+5	"YunYan-Zi"	云烟(紫)
+6	"GuiYan-Fu"	贵烟(福)
+7	"GuiYan-Cui"	贵烟(萃)
+8	"GuiYan-Jinbaihe"	贵烟(金百合)
+9	"YuXi-Ruan"	玉溪(软)
+10	"GuiYan-Kuayue"	贵烟(跨越)
+11	"ZhongHua-Ying"	中华(硬)
+12	"HuangHeLou-Ruanlan"	黄鹤楼(软蓝)
+13	"GuiYan-Ruangaozun"	贵烟(软高遵)
+14	"GuiYan-Guojiuxiang30"	贵烟(国酒香30)
+15	"GuiYan-Hongzhongzhi"	贵烟(红中支)
+16	"YunYan-Ruandazhongjiu"	云烟(软大重九)
+17	"YunYan-Zhongzhijinyaodai"	云烟(中支金腰带)
+18	"HuangHeLou-Tianxiaminglou"	黄鹤楼(天下名楼)
+19	"GuiYan-Xizhiguojiuxiang30"	贵烟(细支国酒香30)
+20	"NanJing-Xuanhemen"	南京(炫赫门)
+21	"ZhongHua-Ruan"	中华(软)
+22	"HuangGuoShu-Changzhenghongxingzhaoyao"	黄果树(长征红星照耀)
+23	"FuRongWang-Ying"	芙蓉王(硬)
+24	"TianZi-Jin"	天子(金)
+25	"BaiSha-Hetianxia"	白沙(和天下)
+26	"NanJing-Shierchaibohe"	南京(十二钗薄荷)
+27	"GuiYan-Shengxiao"	贵烟(生肖)
+28	"TianZi-ZhongZhi"	天子(中支)
+29	"YunYan-Ruanyinxiangyanzhuang"	云烟(软印象烟庄)
+30	"ZhongHua-Shuangzhongzhi"	中华(双中支)
+31	"GuiYan-Xingzhe"	贵烟(行者)
+32	"GuiYan-Guizhongzhi"	贵烟(贵中支)
+33	"YuXi-Zhongzhijingjie"	玉溪(中支境界)
+34	"ZhongHua-Jinzhongzhi"	中华(金中支)
+35	"YunYan-Heijingangyinxiang"	云烟(黑金刚印象)
+36	"YunYan-Xiaoxiongmaojiayuan"	云烟(小熊猫家园)
+37	"GuiYan-Fuzhongzhi"	贵烟(福中支)
+38	"GuiYan-Xigui"	贵烟(喜贵)
+39	"JiaoZi-Kuanzhaihaoyunxizhi"	娇子(宽窄好运细支)
+40	"GuiYan-Xizhixingzhe"	贵烟(细支行者)
+41	"BaiSha-Ruanhetianxia"	白沙(软和天下)
+42	"GuiYan-Yingxiaoguojiuxiang"	贵烟(硬小国酒香)
+43	"YunYan-Xizhizhenpin"	云烟(细支珍品)
+44	"YunYan-Xizhiyunlong"	云烟(细支云龙)
+45	"ChangBaiShan-777"	长白山(777)
+46	“LiQun-Xinbon”	利群(新版)
+47	“HuangHeLou-Yingxiagurouqing”	黄鹤楼(硬峡谷柔情)
+48	“Huangshan-Xinzhiwanyan”	黄山(新制皖烟)
+49	“QiPiLang-Hong”	七匹狼(红)
+50	“BaiSha-Yingxizhihetianxia”	白沙(硬细支和天下)
+*/
+public			byte[]					szCigaretteType=new byte[128];
+/**
+ 销售烟盒数量,单位为盒
+*/
+public			int					CigaretteNum;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1020];
+
+public NET_CIGARETTE_CASE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java
new file mode 100644
index 0000000..5202a41
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLASSIFY_RESULT_STATISTICS_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 分类检测结果人数统计信息
+ * @date 2022/06/30 17:13:22
+ */
+public class NET_CLASSIFY_RESULT_STATISTICS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 分类检结果物品类型, 0:未分类, 1:手机类, 2:刀枪工具类, 3:易拉罐类, 4:马口铁类
+	 */
+	public int nObjectType;
+	/**
+	 * 进入方向包含该报警物品类型的人数
+	 */
+	public int nInCount;
+	/**
+	 * 离开方向包含该报警物品类型的人数
+	 */
+	public int nOutCount;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[244];
+
+	public NET_CLASSIFY_RESULT_STATISTICS_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java
new file mode 100644
index 0000000..dda98c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLOSURE_SETTING_INFO.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位所属配置表
+ * @date 2021/09/28
+ */
+public class NET_CLOSURE_SETTING_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位所属环编号
+     */
+    public int nRingNo;
+
+    /**
+     *  相位所属栅栏编号
+     */
+    public int nBarrierNo;
+
+    /**
+     *  相位所属栅栏内的位置
+     */
+    public int nGridNo;
+
+    /**
+     *  相位编号
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  参照设备id
+     */
+    public byte[] szReferDeviceId = new byte[72];
+
+    /**
+     *  参照设备名称
+     */
+    public byte[] szReferDeviceName = new byte[72];
+
+    /**
+     *  参照方案编号
+     */
+    public int nReferPlanNum;
+
+    /**
+     *  参照方案名称
+     */
+    public byte[] szReferPlanName = new byte[72];
+
+    /**
+     *  参照相位
+     */
+    public int nReferPhaseNum;
+
+    /**
+     *  参照相位重复出现的次数
+     */
+    public int nReferPhaseOrder;
+
+    /**
+     *  绿信比/时间
+     */
+    public double dbSplitTime;
+
+    /**
+     *  类型,1绿信比/2时间
+     */
+    public int nReferType;
+
+    /**
+     *  字节对齐
+     */
+    public byte[] szReserved1 = new byte[4];
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java
new file mode 100644
index 0000000..1930302
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_CONDITION.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 查询条件
+ * @date 2022/10/09 14:06:13
+ */
+public class NET_CLUSTER_DETAIL_CONDITION extends NetSDKLib.SdkStructure {
+	/**
+	 * 聚档周期Key, 一次只能查询一个聚档周期内的数据,必填.与开始结束时间取交集
+	 */
+	public int nClusterDate;
+	/**
+	 * 是否需要过滤ProfileID
+	 */
+	public int bIsNeedProfileID;
+	/**
+	 * 聚档结果ID,如果不带该字段或为空,则默认不过滤ProfileID
+	 */
+	public int nProfileID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CLUSTER_DETAIL_CONDITION() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java
new file mode 100644
index 0000000..702a307
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CLUSTER_DETAIL_FIND_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 查询返回的记录信息
+ * @date 2022/10/09 14:08:24
+ */
+public class NET_CLUSTER_DETAIL_FIND_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备端数据库ID
+	 */
+	public long nRcNo;
+	/**
+	 * 人员记录的唯一Key, 取32位uuid, 实际有效长度32, 由于最后一位取'\0', 数组长度扩展为40
+	 */
+	public byte[] szTrackID = new byte[40];
+	/**
+	 * 聚档结果ID, 对应平台的sessionID, -1及小于0的代表无效记录
+	 */
+	public long nProfileID;
+	/**
+	 * 抓拍通道号
+	 */
+	public long nChannel;
+	/**
+	 * 年龄, 参照人体按照年龄段上报, 0.unknow 未知, 1.child 儿童, 2.young 青年, 3.adult 成年, 4.old 老年
+	 */
+	public int nAge;
+	/**
+	 * 性别 0.Unknow 未知, 1.male 男, 2.female 女, 3.other 其他
+	 */
+	public int nGender;
+	/**
+	 * 是否为员工类,算法上报, -1 非该类, 0 未知, 1 是员工类
+	 */
+	public int nStaffType;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuEventTime = new NET_TIME_EX();
+	/**
+	 * 人员的经过属性, 0 进, 1 出, 2 过
+	 */
+	public int nHumanState;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[64];
+
+	public NET_CLUSTER_DETAIL_FIND_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_MASKING_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_MASKING_CAPS.java
new file mode 100644
index 0000000..031e4e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 纯色隐私遮挡块的能力集
+ * @date 2022/07/21 13:40:56
+ */
+public class NET_COLOR_MASKING_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持纯色隐私遮挡块
+	 */
+	public int bSupport;
+	/**
+	 * 系统支持的最大纯色块个数
+	 */
+	public int nMaxNum;
+	/**
+	 * 支持的遮挡块形状个数
+	 */
+	public int nSupportTypeNum;
+	/**
+	 * 支持的遮挡块形状,数组int值,参考枚举{@link EM_PRIVACY_MASKING_TYPE}
+	 */
+	public int[] emSupportType = new int[8];
+	/**
+	 * 系统支持的多边形遮挡块最大顶点数(SupportType支持"Polygon"时该能力有效)
+	 */
+	public int nMaxPolygonPoints;
+	/**
+	 * 是否支持遮挡块颜色设置
+	 */
+	public int bSetColorSupport;
+	/**
+	 * 是否支持遮挡块颜色相互独立
+	 */
+	public int bSetColorIndependent;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_COLOR_MASKING_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_RGBA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_RGBA.java
new file mode 100644
index 0000000..e2dcea9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COLOR_RGBA.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 颜色RGBA
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:11
+ */
+public class NET_COLOR_RGBA extends NetSDKLib.SdkStructure {
+    /**
+     * 红
+     */
+    public int nRed;
+    /**
+     * 绿
+     */
+    public int nGreen;
+    /**
+     * 蓝
+     */
+    public int nBlue;
+    /**
+     * 透明
+     */
+    public int nAlpha;
+
+    public void setRGBA(int R, int G, int B, int A) {
+        nRed = R;
+        nGreen = G;
+        nBlue = B;
+        nAlpha = A;
+    }
+    @Override
+    public String toString() {
+        return String.format("RGBN ( %03d, %03d, %03d, %03d )", nRed, nGreen, nBlue, nAlpha);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_CONFIG_INFO.java
new file mode 100644
index 0000000..ccc11df
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_CONFIG_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通用配置信息
+ * @date 2021/09/28
+ */
+public class NET_COMMON_CONFIG_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  溢出控制占有率阈值
+     */
+    public float fRatioLimit;
+
+    /**
+     *  进入溢出控制占有率满足次数
+     */
+    public int nInOCTimes;
+
+    /**
+     *  跌出溢出控制占有率满足次数
+     */
+    public int nOutOCTimes;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java
new file mode 100644
index 0000000..7066da0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMMON_DATE_PLAN_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 日常调度列表信息
+ * @date 2021/09/27
+ */
+public class NET_COMMON_DATE_PLAN_INFO extends NetSDKLib.SdkStructure{
+	  /**
+     *  日常调度编号
+     */
+    public int nDatePlanNumber;
+
+    /**
+     *  日期开始月份
+     */
+    public int nBeginMonth;
+
+    /**
+     *  日期开始日
+     */
+    public int nBeginDay;
+
+    /**
+     *  日期结束月份
+     */
+    public int nEndMonth;
+
+    /**
+     *  日期结束日
+     */
+    public int nEndDay;
+
+    /**
+     *  周调度编号
+     */
+    public int nWeekPlanNumber;
+
+    /**
+     *  周调度名称
+     */
+    public byte[] szWeekPlanName = new byte[64];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMM_PROP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMM_PROP.java
new file mode 100644
index 0000000..3277911
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMM_PROP.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_COMM_PROP
+ * description: 串口基本属性
+ * author:251589
+ * createTime:2020/12/29 10:58
+ *
+ * @version v1.0
+ */
+public class NET_COMM_PROP extends NetSDKLib.SdkStructure {
+    public byte    byDataBit;    // 数据位;0:5,1:6,2:7,3:8
+    public byte    byStopBit;    // 停止位;0:1位,1:1.5位,2:2位
+    public byte    byParity;     // 校验位;0:无校验,1:奇校验;2:偶校验; 3:标志校验; 4:空校验
+    public byte    byBaudRate;   // 波特率;0:300,1:600,2:1200,3:2400,4:4800,
+                                 // 5:9600,6:19200,7:38400,8:57600,9:115200
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_BOAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_BOAT_INFO.java
new file mode 100644
index 0000000..5ff32c6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_BOAT_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  船只合规报警过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:47
+*/
+public class NET_COMPLIANT_BOAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+船只类型过滤配置
+*/
+public			NET_BOAT_TYPE_INFO					stuBoatType=new NET_BOAT_TYPE_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_COMPLIANT_BOAT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_FORMAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_FORMAT_INFO.java
new file mode 100644
index 0000000..4eea853
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_FORMAT_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  合规报警属性过滤规则 
+* @origin autoTool
+* @date 2023/05/29 11:40:47
+*/
+public class NET_COMPLIANT_FORMAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+为TRUE: 下发人体过滤配置, 为FALSE: 不下发人体过滤配置
+*/
+public			int					bSupportHuman;
+/** 
+人体过滤配置,包括人体和目标的属性
+*/
+public			NET_COMPLIANT_HUMAN_INFO					stuHuman=new NET_COMPLIANT_HUMAN_INFO();
+/** 
+为TRUE: 下发机动车合规报警过滤配置, 为FALSE: 不下发机动车合规报警过滤配置
+*/
+public			int					bSupportVehicle;
+/** 
+机动车合规报警过滤配置
+*/
+public			NET_COMPLIANT_VEHICLE_INFO					stuVehicle=new NET_COMPLIANT_VEHICLE_INFO();
+/** 
+为TRUE: 下发非机动车过滤配置, 为FALSE: 不下发非机动车过滤配置
+*/
+public			int					bSupportNonMotor;
+/** 
+非机动车过滤配置
+*/
+public			NET_COMPLIANT_NONMOTOR_INFO					stuNonMotor=new NET_COMPLIANT_NONMOTOR_INFO();
+/** 
+船只合规报警过滤配置
+*/
+public			NET_COMPLIANT_BOAT_INFO					stuBoat=new NET_COMPLIANT_BOAT_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_COMPLIANT_FORMAT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_HUMAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_HUMAN_INFO.java
new file mode 100644
index 0000000..2d7ccb8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_HUMAN_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  人体过滤配置,包括人体和目标的属性 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_COMPLIANT_HUMAN_INFO extends NetSDKLib.SdkStructure {
+/** 
+年龄过滤条件
+*/
+public			NET_HUMAN_AGE_INFO					stuHumanAge=new NET_HUMAN_AGE_INFO();
+/** 
+性别过滤条件
+*/
+public			NET_HUMAN_SEX_INFO					stuHumanSex=new NET_HUMAN_SEX_INFO();
+/** 
+表情过滤条件
+*/
+public			NET_HUMAN_EMOTION_INFO					stuHumanEmotion=new NET_HUMAN_EMOTION_INFO();
+/** 
+眼镜佩戴过滤条件
+*/
+public			NET_HUMAN_GLASSES_INFO					stuHumanGlasses=new NET_HUMAN_GLASSES_INFO();
+/** 
+口罩佩戴过滤条件
+*/
+public			NET_HUMAN_MASK_INFO					stuHumanMask=new NET_HUMAN_MASK_INFO();
+/** 
+胡子过滤条件
+*/
+public			NET_HUMAN_BEARD_INFO					stuHumanBeard=new NET_HUMAN_BEARD_INFO();
+/** 
+上衣类型过滤条件
+*/
+public			NET_HUMAN_COAT_TYPE_INFO					stuHumanCoatType=new NET_HUMAN_COAT_TYPE_INFO();
+/** 
+上衣颜色过滤条件
+*/
+public			NET_HUMAN_COAT_COLOR_INFO					stuHumanCoatColor=new NET_HUMAN_COAT_COLOR_INFO();
+/** 
+裤子类型过滤条件
+*/
+public			NET_HUMAN_TROUSERS_TYPE_INFO					stuHumanTrousersType=new NET_HUMAN_TROUSERS_TYPE_INFO();
+/** 
+裤子颜色过滤条件
+*/
+public			NET_HUMAN_TROUSERS_COLOR_INFO					stuHumanTrousersColor=new NET_HUMAN_TROUSERS_COLOR_INFO();
+/** 
+背包过滤条件
+*/
+public			NET_HUMAN_HAS_BAG_INFO					stuHumanHasBag=new NET_HUMAN_HAS_BAG_INFO();
+/** 
+雨伞过滤条件
+*/
+public			NET_HUMAN_HAS_UMBRELLA_INFO					stuHumanHasUmbrella=new NET_HUMAN_HAS_UMBRELLA_INFO();
+/** 
+穿戴雨披
+*/
+public			NET_HUMAN_RAIN_COAT_INFO					stuHumanRainCoat=new NET_HUMAN_RAIN_COAT_INFO();
+/** 
+帽子过滤条件
+*/
+public			NET_HUMAN_HAS_HAT_INFO					stuHumanHasHat=new NET_HUMAN_HAS_HAT_INFO();
+/** 
+安全帽合规性检测信息
+*/
+public			NET_HUMAN_HELMET_INFO					stuHumanHelmet=new NET_HUMAN_HELMET_INFO();
+/** 
+安全背心合规性检测信息
+*/
+public			NET_HUMAN_VEST_INFO					stuHumanVest=new NET_HUMAN_VEST_INFO();
+/** 
+发型过滤条件
+*/
+public			NET_HUMAN_HAIR_STYLE_INFO					stuHumanHairStyle=new NET_HUMAN_HAIR_STYLE_INFO();
+/** 
+人体拍摄角度
+*/
+public			NET_HUMAN_ANGLE_INFO					stuHumanAngle=new NET_HUMAN_ANGLE_INFO();
+/** 
+抱小孩
+*/
+public			NET_HUMAN_HOLD_BABY_INFO					stuHumanHoldBaby=new NET_HUMAN_HOLD_BABY_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_COMPLIANT_HUMAN_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_INFO.java
new file mode 100644
index 0000000..5fe2aad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  合规报警规则 
+* @origin autoTool
+* @date 2023/05/29 11:40:47
+*/
+public class NET_COMPLIANT_INFO extends NetSDKLib.SdkStructure {
+/** 
+合规报警报警类型,0:不合规,1-合规, 2-不限(IVSS专用)
+*/
+public			int					nCompliantType;
+/** 
+合规条件使能, TRUE: 开启, FALSE-关闭,如果使能为TRUE上报合规相关属性
+*/
+public			int					bCompliantEnable;
+/** 
+合规报警属性过滤规则
+*/
+public			NET_COMPLIANT_FORMAT_INFO					stuCompliantFormat=new NET_COMPLIANT_FORMAT_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_COMPLIANT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_NONMOTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_NONMOTOR_INFO.java
new file mode 100644
index 0000000..5442365
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_NONMOTOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  非机动车过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_COMPLIANT_NONMOTOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+非机动车颜色过滤条件
+*/
+public			NET_NONMOTOR_COLOR_INFO					stuNonMotorColor=new NET_NONMOTOR_COLOR_INFO();
+/** 
+车上人数过滤条件
+*/
+public			NET_NONMOTOR_CYCLING_NUM_INFO					stuNumOfCycling=new NET_NONMOTOR_CYCLING_NUM_INFO();
+/** 
+非机动车类型过滤条件
+*/
+public			NET_NONMOTOR_CATEGORY_INFO					stuCategory=new NET_NONMOTOR_CATEGORY_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public			NET_COMPLIANT_NONMOTOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_VEHICLE_INFO.java
new file mode 100644
index 0000000..74d0a9e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPLIANT_VEHICLE_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  机动车合规报警过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_COMPLIANT_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+/** 
+机动车车色过滤配置
+*/
+public			NET_VEHICLE_COLOR_INFO					stuVehicleColor=new NET_VEHICLE_COLOR_INFO();
+/** 
+车标过滤配置
+*/
+public			NET_VEHICLE_BRAND_INFO					stuVehicleBrand=new NET_VEHICLE_BRAND_INFO();
+/** 
+机动车车型过滤配置
+*/
+public			NET_VEHICLE_TYPE_INFO					stuVehicleType=new NET_VEHICLE_TYPE_INFO();
+/** 
+车牌颜色过滤配置
+*/
+public			NET_VEHICLE_PLATE_COLOR_INFO					stuVehiclePlateColor=new NET_VEHICLE_PLATE_COLOR_INFO();
+/** 
+打电话过滤配置
+*/
+public			NET_VEHICLE_CALLING_INFO					stuVehicleCalling=new NET_VEHICLE_CALLING_INFO();
+/** 
+安全带过滤配置
+*/
+public			NET_VEHICLE_SAFE_BELT_INFO					stuVehicleSafeBelt=new NET_VEHICLE_SAFE_BELT_INFO();
+/** 
+车上挂件过滤条件
+*/
+public			NET_VEHICLE_ATTACHMENT_INFO					stuVehicleAttachment=new NET_VEHICLE_ATTACHMENT_INFO();
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public			NET_COMPLIANT_VEHICLE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java
new file mode 100644
index 0000000..22198c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_CHANNEL_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.constant.SDKStructureFieldLenth;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/11/12
+ */
+public class NET_COMPOSE_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    // 分割模式
+    public int emSplitMode;
+    // 割模式下的各子窗口显示内容
+    public int[] nChannelCombination = new int[
+            SDKStructureFieldLenth.CFG_MAX_VIDEO_CHANNEL_NUM];
+    // 分割窗口数量
+    public int nChannelCount;
+    public NET_COMPOSE_CHANNEL_INFO(){
+        this.dwSize=size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java
new file mode 100644
index 0000000..8df99bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_DETAIL_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.NET_SPLIT_MODE;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 
+ * @author 119178
+ *
+ */
+public class NET_COMPOSE_PLAN_DETAIL_INFO  extends SdkStructure {
+	/**
+	 * 预案名称, 用户自定义
+	 */
+	public byte[]              szName=new byte[64];                 
+	/**
+	 * 分割模式(参考NET_SPLIT_MODE)
+	 */
+	public int                 emSplitMode;			                
+	/**
+	 * 分割模式下的各子窗口有效个数
+	 */
+	public int                 nChannelCombinationNum;              
+	/**
+	 * 分割模式下的各子窗口显示内容; 
+	 */
+	public int[]               nChannelCombination=new int[64];     
+	/**
+	 * 输出音频通道个数
+	 */
+	public int                 nAudioOutNum;                        
+	/**
+	 * 输出音频通道信息
+	 */
+	public int[]               nAudioOutChn=new int[4];             
+	/**
+	 * 保留字节
+	 */
+	public byte[]              bReserved=new byte[676];             
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java
new file mode 100644
index 0000000..0dd708d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSE_PLAN_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * 合成通道的预案分割配置 ( NET_EM_CFG_COMPOSE_PLAN )
+ */
+public class NET_COMPOSE_PLAN_INFO  extends SdkStructure {
+	
+	public int				               dwSize;
+	/**
+	 * 预案配置是否开启
+	 */
+	public int                             bEnable;  
+	/**
+	 * 合成通道预案有效个数
+	 */
+	public int                             nPlansNum;          
+	/**
+	 * 合成通道预案信息
+	 */
+	public NET_COMPOSE_PLAN_DETAIL_INFO[]  stuPlans=(NET_COMPOSE_PLAN_DETAIL_INFO[])new NET_COMPOSE_PLAN_DETAIL_INFO().toArray(4);        
+	
+	public NET_COMPOSE_PLAN_INFO() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java
new file mode 100644
index 0000000..8a916a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_WINDOWS_NUMBER;
+
+/**
+ * 录播主机模式信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:35
+ */
+public class NET_COMPOSITECHANNELMODE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 模式名称
+     */
+    public byte[] szName = new byte[NET_COMMON_STRING_128];
+    /**
+     * 实际窗口个数
+     */
+    public int nWindowNum;
+    /**
+     * 窗口信息
+     */
+    public NET_COMPOSITECHANNELMODE_WINDOWS[] stWindows = new NET_COMPOSITECHANNELMODE_WINDOWS[NET_MAX_WINDOWS_NUMBER];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[64];
+
+    public NET_COMPOSITECHANNELMODE_INFO() {
+        for (int i = 0; i < stWindows.length; i++) {
+            stWindows[i] = new NET_COMPOSITECHANNELMODE_WINDOWS();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java
new file mode 100644
index 0000000..6898390
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNELMODE_WINDOWS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录播主机窗口信息
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:37
+ */
+public class NET_COMPOSITECHANNELMODE_WINDOWS extends NetSDKLib.SdkStructure {
+    /**
+     * 窗口坐标, 采用8192坐标体系
+     */
+    public NetSDKLib.DH_RECT stRect;
+    /**
+     * 逻辑通道号, 为-1表示此窗口没有绑定通道
+     */
+    public int nLogicChannel;
+    /**
+     * Z序
+     */
+    public int nZOrder;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java
new file mode 100644
index 0000000..feef9f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COMPOSITECHANNEL_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 组合通道信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:24
+ */
+public class NET_COMPOSITECHANNEL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 课程名称
+     */
+    public byte[] szCourseName = new byte[NET_COMMON_STRING_128];
+    /**
+     * 教师名称
+     */
+    public byte[] szTeacherName = new byte[NET_COMMON_STRING_64];
+    /**
+     * 录制模式; 0:无效;1:电影模式; 2:常态模式; 3:精品模式; <0:用户自定义模式
+     * 你在合成通道组合配置里自定义的那些都属于 用户自定义 模式,这也是为什么它们的编号是负的
+     */
+    public int nCompositeChannelMode;
+    /**
+     * 逻辑通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 是否能拉流,下标对应为逻辑通道号
+     */
+    public int[] bCanStream = new int[MAX_COURSE_LOGIC_CHANNEL];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java
new file mode 100644
index 0000000..c3dc7b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_OPENSSL_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description openssl库信息配置
+ * @date 2021/3/2
+ */
+public class NET_CONFIG_OPENSSL_INFO extends NetSDKLib.SdkStructure {
+  public byte[] szSsleay = new byte[MAX_PATH]; // openssl协议库
+  // windows下 为ssleay32.dll库全路径,当路径为空时默认从当前NetSDK.dll路径下查找加载
+  // linux下	为libssl.so	  库全路径,当路径为空时默认从系统路径下查找加载
+  public byte[] szLibeay = new byte[MAX_PATH]; // openssl加密库
+  // windows下 为libeay32.dll库全路径,当路径为空时默认从当前NetSDK.dll路径下查找加载
+  // linux下	为libcrypto.so库全路径,当路径为空时默认从系统路径下查找加载
+  /** 保留字节 */
+  public byte[] bReserved = new byte[504];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java
new file mode 100644
index 0000000..919a5a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONFIG_STREAMCONVERTOR_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description StreamConvertor转码库信息配置
+ * @date 2021/3/2
+ */
+public class NET_CONFIG_STREAMCONVERTOR_INFO extends NetSDKLib.SdkStructure {
+  /**
+   * StreamConvertor转码库 Windows: 为StreamConvertor.dll 库全路径,当路径为空时默认从当前NetSDK.dll路径下查找加载 Linux:
+   * 为libStreamConvertor.so 库全路径,当路径为空时默认从系统路径下查找加载 Mac OS:
+   * 为libStreamConvertor.so/libStreamConvertor.dylib 库全路径,当路径为空时默认从系统路径下查找加载 Mac
+   * OS中先默认转码库是libStreamConvertor.so,尝试加载失败时候,则认为转码库是libStreamConvertor.dylib
+   */
+  public byte[] szStreamConvertor = new byte[MAX_PATH];
+  /** 保留字节 */
+  public byte[] bReserved = new byte[764];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_OUTV_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_OUTV_INFO.java
new file mode 100644
index 0000000..62458a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_OUTV_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 输出电压控制开关
+ * @date 2023/05/11 13:59:24
+ */
+public class NET_CONTROL_CASE_OUTV_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * DC12v1电压开关
+	 */
+	public int bDc12v1;
+	/**
+	 * DC12v2电压开关
+	 */
+	public int bDc12v2;
+	/**
+	 * Ac24v1电压开关
+	 */
+	public int bAc24v1;
+	/**
+	 * Ac24v2电压开关
+	 */
+	public int bAc24v2;
+	/**
+	 * Ac220v1电压开关
+	 */
+	public int bAc220v1;
+	/**
+	 * Ac220v2电压开关
+	 */
+	public int bAc220v2;
+	/**
+	 * Ac220v3电压开关
+	 */
+	public int bAc220v3;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * AC220v1 输出别名设置
+	 */
+	public byte[] szAc220v1Title = new byte[64];
+	/**
+	 * AC220v2 输出别名设置
+	 */
+	public byte[] szAc220v2Title = new byte[64];
+	/**
+	 * AC220v3 输出别名设置
+	 */
+	public byte[] szAc220v3Title = new byte[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CONTROL_CASE_OUTV_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_ZIGBEE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_ZIGBEE_INFO.java
new file mode 100644
index 0000000..d9acf9d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CONTROL_CASE_ZIGBEE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description ZIGBEE开关
+ * @date 2023/05/11 13:59:24
+ */
+public class NET_CONTROL_CASE_ZIGBEE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能开关
+	 */
+	public int bEnable;
+	/**
+	 * 信道
+	 */
+	public int nChannel;
+	/**
+	 * 节点号
+	 */
+	public byte[] szPanID = new byte[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_CONTROL_CASE_ZIGBEE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CORRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CORRECTION.java
new file mode 100644
index 0000000..d8a683f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CORRECTION.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光补偿信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:54
+ */
+public class NET_CORRECTION extends NetSDKLib.SdkStructure {
+    /**
+     * /是否支持灯光补偿
+     */
+    public int bSupported;
+    /**
+     * /补偿范围最大值
+     */
+    public int nRange;
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_CORRECTION() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COUNT_DETAIL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COUNT_DETAIL_INFO.java
new file mode 100644
index 0000000..380ca05
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COUNT_DETAIL_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 结果详细信息
+ * @date 2022/11/21 17:53:18
+ */
+public class NET_COUNT_DETAIL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 图片的编号(0开始)
+     */
+    public int nPictureID;
+    /**
+     * 该图片的结果数量
+     */
+    public int nCount;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_COUNT_DETAIL_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE.java
new file mode 100644
index 0000000..028c6b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CAN_START_STREAM;
+import com.netsdk.lib.enumeration.EM_COURSE_STATE;
+import com.netsdk.lib.enumeration.EM_IS_RECORD;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_64;
+
+/**
+ * 课程信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 15:46
+ */
+public class NET_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * 课程名称
+     */
+    public byte[] szCourseName = new byte[NET_COMMON_STRING_64];
+    /**
+     * 教师姓名
+     */
+    public byte[] szTeacherName = new byte[NET_COMMON_STRING_64];
+    /**
+     * 课程简介
+     */
+    public byte[] szIntroduction = new byte[NET_COMMON_STRING_128];
+    /**
+     * 能否被拉流逻辑通道数
+     */
+    public int nCanStartStreamNum;
+    /**
+     * 是否要录像逻辑通道号数
+     */
+    public int nIsRecordNum;
+    /**
+     * 能否被拉流 {@link EM_CAN_START_STREAM}
+     */
+    public int[] emCanStartStream = new int[64];
+    /**
+     * 是否要录像 {@link EM_IS_RECORD}
+     */
+    public int[] emIsRecord = new int[64];
+    /**
+     * 组合通道模式; 0: 无效, 1: 电影模式, 2: 常态模式, 3: 精品模式, <0:自定义模式
+     */
+    public int nCompositeChannelMode;
+    /**
+     * 课程状态 {@link EM_COURSE_STATE}
+     */
+    public int emCourseState;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java
new file mode 100644
index 0000000..42f006d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录播主机添加模式返回信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:55
+ */
+public class NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT extends NetSDKLib.SdkStructure {
+    /**
+     * 模式, 0 无效, 1 电影模式, 2 常态模式, 3 精品模式, 小于0 自定义模式
+     */
+    public int nMode;
+    /**
+     * 返回码, 1 成功, 2 失败, 3 已满, 4 资源不足
+     */
+    public int nReturnCode;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java
new file mode 100644
index 0000000..17b246b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSEMEDIA_FILE_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:51
+ */
+public class NET_COURSEMEDIA_FILE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 视频信息ID,-1表示无此记录
+     */
+    public int nID;
+    /**
+     * 课程信息
+     */
+    public NET_COURSE_INFO stuCourseInfo;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 对应通道的录像分段数
+     */
+    public int[] nRecordNum = new int[64];
+    /**
+     * 录像信息,第一维下标为映射通道号(stuRecordInfo_1), 第二维为录像分段数(stuRecordInfo_1.stuRecordInfo_2)
+     */
+    public NET_RECORD_INFO_ARRAY[] stuRecordInfo_1 = new NET_RECORD_INFO_ARRAY[64];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_COURSEMEDIA_FILE_INFO() {
+        for (int i = 0; i < stuRecordInfo_1.length; i++) {
+            stuRecordInfo_1[i] = new NET_RECORD_INFO_ARRAY();
+        }
+    }
+
+    @Override
+    public int fieldOffset(String name) {
+        return super.fieldOffset(name);
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_INFO.java
new file mode 100644
index 0000000..4fed582
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_64;
+
+/**
+ * 课程信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 18:39
+ */
+public class NET_COURSE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 课程名称
+     */
+    public byte[] szCourseName = new byte[NET_COMMON_STRING_64];
+    /**
+     * 教师姓名
+     */
+    public byte[] szTeacherName = new byte[NET_COMMON_STRING_64];
+    /**
+     * 视频简介
+     */
+    public byte[] szIntroduction = new byte[NET_COMMON_STRING_128];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_RESULT.java
new file mode 100644
index 0000000..f5c3e0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COURSE_RESULT.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 课程信息和ID
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 21:13
+ */
+public class NET_COURSE_RESULT extends NetSDKLib.SdkStructure {
+    /**
+     * 课程信息
+     */
+    public NET_COURSE stuCourseInfo;
+    /**
+     * 课程 ID
+     */
+    public int nId;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[4];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COVER_PLATE_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COVER_PLATE_DETECT.java
new file mode 100644
index 0000000..57dbdf3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_COVER_PLATE_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  盖板检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_COVER_PLATE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+盖板状态 {@link com.netsdk.lib.enumeration.EM_COVER_PLATE_STATE}
+*/
+public			int					emCoverPlateState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public			NET_COVER_PLATE_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_INFO.java
new file mode 100644
index 0000000..0f03517
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_CPU_INFO
+ * description:CPU信息
+ * author:251589
+ * createTime:2021/2/25 12:02
+ *
+ * @version v1.0
+ */
+
+public class NET_CPU_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  CPU利用率
+     */
+    public int nUsage;
+
+    public NET_CPU_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_STATUS.java
new file mode 100644
index 0000000..33762ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CPU_STATUS.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_CPU_NUM;
+
+/**
+ * className:NET_CPU_STATUS
+ * description:
+ * author:251589
+ * createTime:2021/2/25 12:01
+ *
+ * @version v1.0
+ */
+
+public class NET_CPU_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  查询是否成功
+     */
+    public int bEnable;
+
+    /**
+     *  CPU数量
+     */
+    public int nCount;
+
+    /**
+     *  CPU信息
+     */
+    public NET_CPU_INFO[] stuCPUs = (NET_CPU_INFO[]) new NET_CPU_INFO().toArray(NET_MAX_CPU_NUM);
+
+    public NET_CPU_STATUS(){
+        this.dwSize = this.size();
+        for (int i = 0; i < stuCPUs.length; i++) {
+        	stuCPUs[i] = new NET_CPU_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java
new file mode 100644
index 0000000..45199ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSSREGION_RULE_INFO.java
@@ -0,0 +1,83 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.NetSDKLib.EM_CATEGORY_TYPE;
+
+/**
+ * @description 事件类型EVENT_IVS_CROSSREGIONDETECTION(区域入侵事件)对应的规则配置
+ * @author 119178
+ * @date 2021/3/17
+ */
+public class NET_CROSSREGION_RULE_INFO extends SdkStructure{
+	/**
+	 * 结构体大小
+	 */
+	public int                   dwSize;    
+	/**
+	 * 检测方向:0:Enter;1:Leave;2:Both
+	 */
+	public int						nDirection;				
+	/**
+	 * 警戒区顶点数
+	 */
+	public int						nDetectRegionPoint;	
+	/**
+	 * 警戒区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]			stuDetectRegion= (com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 规则特定的尺寸过滤器是否有效
+	 */
+	public int                	bSizeFileter;     
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public NET_CFG_SIZEFILTER_INFO stuSizeFileter;   
+	/**
+	 * 检测动作个数
+	 */
+	public int                 	nActionType;  
+	/**
+	 * 检测动作列表,0-出现 1-消失 2-在区域内 3-穿越区域
+	 */
+	public byte[]                	bActionType=new byte[4];          
+	/**
+	 * 最小目标个数(当bActionType中包含"2-在区域内"时有效)
+	 */
+	public int                 	nMinTargets;         
+	/**
+	 * 最大目标个数(当bActionType中包含"2-在区域内"时有效)
+	 */
+	public int                 	nMaxTargets; 
+	/**
+	 * 最短持续时间, 单位秒(当bActionType中包含"2-在区域内"时有效)
+	 */
+	public int                 	nMinDuration; 
+	/**
+	 * 报告时间间隔, 单位秒(当bActionType中包含"2-在区域内"时有效)
+	 */
+	public int                 	nReportInterval;     
+	/**
+	 * 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
+	 */
+	public int						nTrackDuration;	
+	/**
+	 * 检测的车辆子类型个数
+	 */
+	public int					nVehicleSubTypeNum;	
+	/**
+	 * 检测的车辆子类型列表
+	 * {@link EM_CATEGORY_TYPE}
+	 */
+	public int[]		emVehicleSubType=new int[128];
+			
+	/**
+	 *  保留字节
+	 */
+	public byte[]       byReserved = new byte[1104];
+
+	public NET_CROSSREGION_RULE_INFO()
+    {
+        this.dwSize = this.size();
+    }// 此结构体大小
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSS_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSS_LIST_INFO.java
new file mode 100644
index 0000000..95f8a2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROSS_LIST_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 路口数据列表信息
+ * @date 2021/09/02
+ */
+public class NET_CROSS_LIST_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  路口类型
+     */
+    public int nCrossType;
+
+    /**
+     *  路段数据列表个数
+     */
+    public int nRoadListInfoNum;
+
+    /**
+     *  路段数据列表
+     */
+    public NET_SIGNAL_ROAD_LIST_INFO[] stuRoadListInfo = (NET_SIGNAL_ROAD_LIST_INFO[]) new NET_SIGNAL_ROAD_LIST_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROWD_STAT_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROWD_STAT_DATA.java
new file mode 100644
index 0000000..a68024d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CROWD_STAT_DATA.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测区统计信息
+ * @date 2022/01/07
+ */
+public class NET_CROWD_STAT_DATA extends NetSDKLib.SdkStructure{
+    /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  检测区内总人数
+     */
+    public int nGloabalPeopleNum;
+
+    /**
+     *  检测区内区域个数
+     */
+    public int nRegionNum;
+
+    /**
+     *  检测区内区域人数统计信息
+     */
+    public NET_REGION_PEOPLE_STAT_INFO[] stuRegionPeople = (NET_REGION_PEOPLE_STAT_INFO[]) new NET_REGION_PEOPLE_STAT_INFO().toArray(8);
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java
new file mode 100644
index 0000000..5fe39fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ACCESS_CALL_LIFT.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  门禁控制-呼梯(对应CLIENT_ControlDevice接口的 DH_CTRL_ACCESS_CALL_LIFT 命令) 
+* @date 2022/10/19 14:01:08
+*/
+public class NET_CTRL_ACCESS_CALL_LIFT extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+起始地址(楼层+房间号)
+*/
+public			byte[]					szSrcFloor=new byte[16];
+/** 
+目标地址(楼层+房间号)
+*/
+public			byte[]					szDestFloor=new byte[16];
+/** 
+呼叫电梯命令 {@link com.netsdk.lib.enumeration.EM_CALLLIFT_CMD}
+*/
+public			int					emCallLiftCmd;
+/** 
+呼叫电梯的方式 {@link com.netsdk.lib.enumeration.EM_CALLLIFT_ACTION}
+*/
+public			int					emCallLiftAction;
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[16];
+/** 
+呼叫电梯个数
+*/
+public			int					nCallLiftCount;
+/** 
+呼叫电梯号
+*/
+public			int[]					nCallLiftNo=new int[16];
+/** 
+呼梯类型 {@link com.netsdk.lib.enumeration.EM_LIFT_CALLER_TYPE}
+*/
+public			int					emLiftCaller;
+
+public NET_CTRL_ACCESS_CALL_LIFT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ECK_GUIDINGPANEL_CONTENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ECK_GUIDINGPANEL_CONTENT.java
new file mode 100644
index 0000000..decb2ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_ECK_GUIDINGPANEL_CONTENT.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  设置诱导屏显示内容(DH_CTRL_ECK_GUIDINGPANEL_CONTENT) 
+* @origin autoTool
+* @date 2023/06/27 16:54:42
+*/
+public class NET_CTRL_ECK_GUIDINGPANEL_CONTENT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+显示内容数量
+*/
+public			int					nPanelNum;
+/** 
+显示内容
+*/
+public			NET_ECK_PANEL_CONTENT[]					stuContentInfo=new NET_ECK_PANEL_CONTENT[12];
+
+public			NET_CTRL_ECK_GUIDINGPANEL_CONTENT(){
+		for(int i=0;i<stuContentInfo.length;i++){
+			stuContentInfo[i]=new NET_ECK_PANEL_CONTENT();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java
new file mode 100644
index 0000000..6657052
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_ADD.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 增加对码信息
+ * @date 2023/03/16 14:52:53
+ */
+public class NET_CTRL_LOWRATEWPAN_ADD extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 对码数据
+	 */
+	public NetSDKLib.NET_CODEID_INFO stuCodeIDInfo = new NetSDKLib.NET_CODEID_INFO();
+
+	public NET_CTRL_LOWRATEWPAN_ADD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java
new file mode 100644
index 0000000..cd575e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 删除指定无线设备 CLIENT_ControlDevice 接口的 DH_CTRL_LOWRATEWPAN_REMOVE命令参数
+ * @date 2023/03/16 15:38:18
+ */
+public class NET_CTRL_LOWRATEWPAN_REMOVE extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 无线设备ID
+	 */
+	public long nWirelessId;
+	/**
+	 * 无线设备序列号 无线对码后续采用序列号的方式
+	 */
+	public byte[] szSerialNumber = new byte[32];
+
+	public NET_CTRL_LOWRATEWPAN_REMOVE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java
new file mode 100644
index 0000000..817f32d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_LOWRATEWPAN_REMOVEALL.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 删除全部无线设备 CLIENT_ControlDevice接口的
+ *              DH_CTRL_LOWRATEWPAN_REMOVEALL命令参数
+ * @date 2023/03/16 15:39:22
+ */
+public class NET_CTRL_LOWRATEWPAN_REMOVEALL extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+
+	public NET_CTRL_LOWRATEWPAN_REMOVEALL() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_SET_BYPASS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_SET_BYPASS.java
new file mode 100644
index 0000000..df934f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CTRL_SET_BYPASS.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_ControlDevice接口的 DH_CTRL_SET_BYPASS 命令参数
+ * @date 2021/10/29
+ */
+public class NET_CTRL_SET_BYPASS extends NetSDKLib.SdkStructure{
+	
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    
+    /**
+     * 登入设备的密码
+     */
+    public Pointer szDevPwd;
+    
+	/**
+     * 通道状态,参考枚举 { @link com.netsdk.lib.NetSDKLib.NET_BYPASS_MODE}
+     */
+    public int emMode;
+    
+    /**
+     * 本地报警输入通道个数
+     */
+    public int nLocalCount;
+    
+    /**
+     * 本地报警输入通道号 ,int数组转化为指针,数组长度为本地报警输入通道个数nLocalCount
+     */
+    public Pointer pnLocal;
+    
+    
+    /**
+     * 扩展模块报警输入通道个数
+     */
+    public int nExtendedCount;
+    
+    /**
+     * 扩展模块报警输入通道号 ,int数组转化为指针,数组长度为扩展模块报警输入通道个数nExtendedCount
+     */
+    public Pointer pnExtended;
+    
+    public NET_CTRL_SET_BYPASS(){
+        this.dwSize = this.size();
+    }
+    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java
new file mode 100644
index 0000000..a4df030
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_DEV_VIDEO_INPUTS.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_VIDEOINPUTS_SERVICE_TYPE;
+
+/**
+ * 视频输入信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/13 10:29 EM_VIDEOINPUTS_SERVICE_TYPE
+ */
+public class NET_CUSTOM_DEV_VIDEO_INPUTS extends NetSDKLib.SdkStructure {
+
+  /** 主码流URL地址(注:接入设备协议类型为General时有效,此时主辅码流URL不能同时为空) */
+  public byte[] szMainStreamUrl = new byte[256];
+  /** 辅码流URL地址(注:接入设备协议类型为General时有效,此时主辅码流URL不能同时为空) */
+  public byte[] szExtraStreamUrl = new byte[256];
+  /** 服务类型,对应枚举{@link EM_VIDEOINPUTS_SERVICE_TYPE} */
+  public int emServiceType;
+  /** 预留字节 */
+  public byte[] byReserved = new byte[508];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java
new file mode 100644
index 0000000..88b2f7b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_MEASURE_TEMPER.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 测温信息
+ * @date 2021/2/23
+ */
+public class NET_CUSTOM_MEASURE_TEMPER extends NetSDKLib.SdkStructure {
+  /** 车辆左侧温度值 */
+  public float fLeft;
+  /** 车辆右侧温度值 */
+  public float fRight;
+  /** 车辆发动机位置温度值 (车头) */
+  public float fHead;
+  /** 温度单位,对应枚举{@link NetSDKLib.EM_TEMPERATURE_UNIT} */
+  public int emUnit;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java
new file mode 100644
index 0000000..fbf8333
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CUSTOM_PROJECTS_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 项目信息
+ * @date 2021/2/22
+ */
+public class NET_CUSTOM_PROJECTS_INFO extends NetSDKLib.SdkStructure {
+  /** GPS位置信息 */
+  public NetSDKLib.NET_GPS_INFO stuGPSInfo;
+  /** 人脸比对事件触发对应球机信息 */
+  public NET_FACECOMPARISON_PTZ_INFO stuFaceComparisonPTZInfo;
+  /** 人脸比对时车牌信息 */
+  public byte[] szPlateNumber = new byte[64];
+  /** 是否报警 */
+  public boolean bIsAlarm;
+  /** 滞留类型 0-未知 1-基础滞留 2-异常滞留 */
+  public int nStayEvent;
+  /** 徘徊类型 0-未知 1-基础徘徊 2-异常徘徊 */
+  public int nWanderEvent;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1012];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_PLAN_INFO.java
new file mode 100644
index 0000000..3a71037
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_PLAN_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周期方案列表信息
+ * @date 2021/09/02
+ */
+public class NET_CYCLE_PLAN_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  周期时长
+     */
+    public int nCycle;
+
+    /**
+     *  周期方案编号
+     */
+    public int nCyclePlanNum;
+
+    /**
+     *  周期方案名称
+     */
+    public byte[] szCyclePlanName = new byte[32];
+
+    /**
+     *  相位差时间
+     */
+    public int nOffSet;
+
+    /**
+     *  是否相位差协调
+     */
+    public boolean bCoordEnable;
+
+    /**
+     *  环列表个数
+     */
+    public int nRingNum;
+
+    /**
+     *  字节对齐
+     */
+    public byte[] szReserved1 = new byte[4];
+
+    /**
+     *  环列表
+     */
+    public NET_RINGS_LIST_INFO[] stuRingInfo = (NET_RINGS_LIST_INFO[]) new NET_RINGS_LIST_INFO().toArray(4);
+    /**
+     *  跟随相位列表个数
+     */
+    public int nOverLapsNum;
+
+    /**
+     *  字节对齐
+     */
+    public byte[] szReserved2 = new byte[4];
+
+    /**
+     *  跟随相位列表
+     */
+    public NET_OVER_LAPS_INFO[] stuOverLapsInfo = (NET_OVER_LAPS_INFO[]) new NET_OVER_LAPS_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java
new file mode 100644
index 0000000..17a4397
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_CYCLE_SETTINGS_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周期设置信息
+ * @date 2021/09/28
+ */
+public class NET_CYCLE_SETTINGS_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+     *  周期上限,最大饱和度对应的周期值nMaxCyc(30 ~ 240)
+     */
+    public int nCycleMax;
+
+    /**
+     *  周期下限,最小饱和度对应的周期值nMinCyc(30 ~ 240)
+     */
+    public int nCycleMin;
+
+    /**
+     *  饱和度约束上限(0.000~1.000)
+     */
+    public float fSaturitionUpLimit;
+
+    /**
+     *  饱和度约束下限(0.000~1.000)
+     */
+    public float fSaturitionDnLimit;
+
+    /**
+     *  周期锁定约束上限(30 ~ 240)
+     */
+    public int nCycleUpLimit;
+
+    /**
+     *  周期锁定约束下限(30 ~ 240)
+     */
+    public int nCycleDnLimit;
+
+    /**
+     *  周期上升最大步长(1 ~ 20)
+     */
+    public int nCycleUpStep;
+
+    /**
+     *  周期下降最大步长(1 ~ 20)
+     */
+    public int nCycleDnStep;
+
+    /**
+     *  平滑周期饱和度个数(1 ~ 5)
+     */
+    public int nSmoothCycNum;
+
+    /**
+     *  是否允许双周期:0不允许 1允许
+     */
+    public int nPermitDoubleCyc;
+
+    /**
+     *  触发双周期的阈值(60 ~ 240)
+     */
+    public int nDoubleCycThreshold;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTIONS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTIONS_INFO.java
new file mode 100644
index 0000000..0bb7190
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTIONS_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 日计划时段表内容
+ * @date 2021/09/27
+ */
+public class NET_DAY_ACTIONS_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  时段编号,从1开始
+     */
+    public int nActionNumber;
+
+    /**
+     *  时段的起始小时
+     */
+    public int nBeginHour;
+
+    /**
+     *  时段的起始分钟
+     */
+    public int nBeginMinute;
+
+    /**
+     *  时段模式
+     */
+    public int nCyclePlanControlMode;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTION_INFO.java
new file mode 100644
index 0000000..672244c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_ACTION_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 时段计划列表信息
+ * @date 2021/09/27
+ */
+public class NET_DAY_ACTION_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  时段编号
+     */
+    public int nActionNumber;
+
+    /**
+     *  时段的起始小时
+     */
+    public int nBeginHour;
+
+    /**
+     *  时段的起始分钟
+     */
+    public int nBeginMinute;
+
+    /**
+     *  周期方案编号
+     */
+    public int nCyclePlanNum;
+
+    /**
+     *  时段模式| 1定时控制 | 242单点自适应模式 | 246实时控制模式 | 247灭灯模式 | 224行人优先控制模式 | 225 拥堵溢出控制模式 | 226 夜间请求模式 | 250手动控制 | 252全红控制 | 254感应控制 | 255黄闪控制 |
+     */
+    public int nCyclePlanControlMode;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLANS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLANS_INFO.java
new file mode 100644
index 0000000..df63f98
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道日方案列表信息
+ * @date 2021/09/28
+ */
+public class NET_DAY_PLANS_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  日方案个数
+     */
+    public int nDayPlanNumber;
+
+    /**
+     *  日方案编号,从1开始
+     */
+    public byte[] szDayPlanName = new byte[64];
+
+    /**
+     *  日计划时段表名称
+     */
+    public int nDayActionNum;
+
+    /**
+     *  日计划时段表 
+     */
+    public NET_DAY_ACTIONS_INFO[] stuDayActionInfo = (NET_DAY_ACTIONS_INFO[]) new NET_DAY_ACTIONS_INFO().toArray(24);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLAN_INFO.java
new file mode 100644
index 0000000..8858611
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DAY_PLAN_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道日方案列表信息
+ * @date 2021/09/27
+ */
+public class NET_DAY_PLAN_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  日计划编号,从1开始
+     */
+    public int nDayPlanNumber;
+
+    /**
+     *  日计划名称
+     */
+    public byte[] szDayPlanName = new byte[32];
+
+    /**
+     *  字节对齐
+     */
+    public byte[] szReserved1 = new byte[4];
+
+    /**
+     *  时段计划列表个数
+     */
+    public int nDayActionNum;
+
+    /**
+     *  时段计划列表
+     */
+    public NET_DAY_ACTION_INFO[] stuDayActionInfo = (NET_DAY_ACTION_INFO[]) new NET_DAY_ACTION_INFO().toArray(24);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java
new file mode 100644
index 0000000..8e27419
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DELETE_VEHICLE_CONDITION_INFO.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 删除车牌库中的车辆 过滤条件
+* @date 2022/02/25 15:03:27
+*/
+public class NET_DELETE_VEHICLE_CONDITION_INFO extends NetSDKLib.SdkStructure {
+/** 
+车辆所在国家,2字节,符合ISO3166规范
+*/
+public			byte[]					szPlateCountry=new byte[4];
+/** 
+车牌号码
+*/
+public			byte[]					szPlateNumber=new byte[64];
+/** 
+车型(轿车、卡车等)
+ // 001  巡逻车
+ // 002  交警车辆
+ // 003  消防车
+ // 004  单兵
+ // 005  其他警车
+ // 006  其他设备
+ // 020  政府车辆
+ // 031  校车
+ // 032  运钞车
+ // 033  客运车辆
+ // 034  公交车
+ // 035  出租车
+ // 036  危险品车辆
+*/
+public			int					nVehicleType;
+/** 
+车辆车标,需要通过映射表得到真正的车标.同卡口事件的CarLogoIndex
+*/
+public			int					nBrand;
+/** 
+车色 第一个元素表示红色分量值; 第二个元素表示绿色分量值; 第三个元素表示蓝色分量值;
+ 注意:第四个元素不再表示透明度分量,而用来表示车色字段是否是一个有效的过滤条件,0 - 无效的过滤条件,非0 - 有效的过滤条件
+*/
+public NET_COLOR_RGBA stuVehicleColor=new NET_COLOR_RGBA();
+/** 
+车主名称
+*/
+public			byte[]					szOwnerName=new byte[64];
+/** 
+车主证件号码,工号,或其他编号
+*/
+public			byte[]					szPersonID=new byte[32];
+/** 
+车主电话号码
+*/
+public			byte[]					szPhoneNo=new byte[128];
+/** 
+车主电子邮箱
+*/
+public			byte[]					szEmail=new byte[32];
+/** 
+车主家庭地址(IVSS需求)
+*/
+public			byte[]					szHomeAddress=new byte[128];
+/** 
+
+*/
+public			byte[]					bReserved=new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETAIL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETAIL_INFO.java
new file mode 100644
index 0000000..7ed8ceb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETAIL_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 执行布撤防时的附加信息
+ * @date 2023/03/15 16:05:04
+ */
+public class NET_DETAIL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 布撤防详细信息
+	 */
+	public NET_ARM_OPTIONS stuArmOption = new NET_ARM_OPTIONS();
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_DETAIL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java
new file mode 100644
index 0000000..ec7cded
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测器配置信息
+ * @date 2021/09/28
+ */
+public class NET_DETECTOR_CONFIG_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  检测器id
+     */
+    public int nDetectorId;
+
+    /**
+     *  是否启用
+     */
+    public boolean bEnable;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java
new file mode 100644
index 0000000..c501ca0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECTOR_SETTING_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测器配置表
+ * @date 2021/09/28
+ */
+public class NET_DETECTOR_SETTING_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  检测器编号
+     */
+    public int nDetectorNum;
+
+    /**
+     *  车道编号
+     */
+    public int nDetectorRoadNum;
+
+    /**
+     *  进口方向
+     */
+    public int nDetectorentryDir;
+
+    /**
+     *  进口类型
+     */
+    public int nDetectorentryType;
+
+    /**
+     *  参与相位饱和度计算
+     */
+    public boolean bJoinPhaseSplit;
+
+    /**
+     *  参与周期饱和度计算
+     */
+    public boolean bJoinCycleSplit;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java
new file mode 100644
index 0000000..759fccd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 大图信息(大图抠小图功能)
+ * @date 2022/11/21 17:53:12
+ */
+public class NET_DETECT_BIG_PIC_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 大图ID
+     */
+    public int nPicID;
+    /**
+     * 文件在二进制数据块中的偏移位置, 单位:字节
+     */
+    public int dwOffSet;
+    /**
+     * 文件大小, 单位:字节
+     */
+    public int dwFileLenth;
+    /**
+     * 图片宽度, 单位:像素
+     */
+    public int dwWidth;
+    /**
+     * 图片高度, 单位:像素
+     */
+    public int dwHeight;
+    /**
+     * 规则检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 规则检测区域
+     */
+    public NetSDKLib.NET_POINT[] stuDetectRegion = new NetSDKLib.NET_POINT[20];
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[44];
+
+    public NET_DETECT_BIG_PIC_INFO() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new NetSDKLib.NET_POINT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java
new file mode 100644
index 0000000..81168b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DETECT_BIG_PIC_INFO_EX.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 大图信息(大图抠小图功能)
+ * @date 2022/11/21 17:53:13
+ */
+public class NET_DETECT_BIG_PIC_INFO_EX extends NetSDKLib.SdkStructure {
+    /**
+     * 大图ID
+     */
+    public int nPicID;
+    /**
+     * 文件在二进制数据块中的偏移位置, 单位:字节
+     */
+    public int dwOffSet;
+    /**
+     * 文件大小, 单位:字节
+     */
+    public int dwFileLenth;
+    /**
+     * 图片宽度, 单位:像素
+     */
+    public int dwWidth;
+    /**
+     * 图片高度, 单位:像素
+     */
+    public int dwHeight;
+    /**
+     * 规则检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 规则检测区域
+     */
+    public NetSDKLib.NET_POINT[] stuDetectRegion = new NetSDKLib.NET_POINT[20];
+    /**
+     * 请求图片ID
+     */
+    public byte[] szRequestID = new byte[64];
+    /**
+     * 通过URL下载图片
+     */
+    public byte[] szPath = new byte[256];
+    /**
+     * 坐标系类型 {@link com.netsdk.lib.enumeration.EM_COORDINATE_TYPE}
+     */
+    public int emCoordinateType;
+    /**
+     * 目标类型 {@link com.netsdk.lib.enumeration.EM_DETECT_OBJECT_TYPE}
+     */
+    public int emObjectType;
+    /**
+     * 按位组合,全1表示全检测,1表示人脸,2表示人体,4表示机动车,8表示非机动整体, 16表示非机动车
+     */
+    public int nTargetType;
+    /**
+     * 处理类型个数
+     */
+    public int nProcessTypeNum;
+    /**
+     * 处理类型
+     */
+    public int[] emProcessType = new int[8];
+    /**
+     * 全景大图数据,经过Base64后的字符串 无该字段或该字段为空则使用二进制图片数据
+     */
+    public Pointer szData;
+    /**
+     * 全景大图数据长度
+     */
+    public int nDataLen;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1016];
+
+    public NET_DETECT_BIG_PIC_INFO_EX() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new NetSDKLib.NET_POINT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_CHANNEL_INFO.java
new file mode 100644
index 0000000..bce2e2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_CHANNEL_INFO.java
@@ -0,0 +1,134 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通道信息
+ * @date 2023/04/20 08:58:40
+ */
+public class NET_DEVICE_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 远程通道号
+	 */
+	public int nRemoteChannel;
+	/**
+	 * 分配的逻辑通道, -1表示未分配
+	 */
+	public int nLogicChannel;
+	/**
+	 * 通道编码
+	 */
+	public byte[] szChannelID = new byte[32];
+	/**
+	 * 通道国标编码
+	 */
+	public byte[] szGbCode = new byte[32];
+	/**
+	 * 显示在设备树的名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 设备详细信息
+	 */
+	public byte[] szDetail = new byte[512];
+	/**
+	 * 设备型号
+	 */
+	public byte[] szDeviceType = new byte[64];
+	/**
+	 * 设备大类
+	 */
+	public byte[] szDeviceClass = new byte[16];
+	/**
+	 * 通道是否在线, 0:离线 1:在线
+	 */
+	public int nOnline;
+	/**
+	 * 该通道是否被本地设备使用 0:未使用 1:使用
+	 */
+	public int nUsed;
+	/**
+	 * ip地址
+	 */
+	public byte[] szIP = new byte[40];
+	/**
+	 * mac地址
+	 */
+	public byte[] szMac = new byte[18];
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[6];
+	/**
+	 * 序列号
+	 */
+	public byte[] szSN = new byte[32];
+	/**
+	 * 软件版本
+	 */
+	public byte[] szSoftwareVersion = new byte[128];
+	/**
+	 * 视频输入通道数
+	 */
+	public int nVideoInChannels;
+	/**
+	 * 视频输出通道数
+	 */
+	public int nVideoOutChannels;
+	/**
+	 * 音频输入通道数
+	 */
+	public int nAudioInChannels;
+	/**
+	 * 音频输出通道数
+	 */
+	public int nAudioOutChannels;
+	/**
+	 * 报警输入通道数
+	 */
+	public int nAlarmInChannels;
+	/**
+	 * 报警输出通道数
+	 */
+	public int nAlarmOutChannels;
+	/**
+	 * 支持最大辅码流路数(0~3路)
+	 */
+	public int nMaxExtraStream;
+	/**
+	 * 设备接入网络服务类型 {@link com.netsdk.lib.enumeration.EM_NET_SERVER_TYPE}
+	 */
+	public int emNetServerType;
+	/**
+	 * 跟设备对接时的拉流协议类型 {@link com.netsdk.lib.enumeration.EM_CHANNEL_PROTOCOL_TYPE}
+	 */
+	public int emProtocolType;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved2 = new byte[4];
+	/**
+	 * 温度值,摄氏度
+	 */
+	public double dbTemperature;
+	/**
+	 * 通道在离线状态改变时的时间
+	 */
+	public NET_TIME stuStateChangeTime = new NET_TIME();
+	/**
+	 * 视图库通道编码
+	 */
+	public byte[] szVideoImageChannelID = new byte[32];
+	/**
+	 * 平台对接编号
+	 */
+	public byte[] szPlatformDoID = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_DEVICE_CHANNEL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_FAULT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_FAULT_INFO.java
new file mode 100644
index 0000000..ceb404a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_FAULT_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设备异常信息
+ * @date 2023/03/15 16:26:00
+ */
+public class NET_DEVICE_FAULT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 异常原因,平台直接取值做显示即可
+	 */
+	public byte[] szReason = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public NET_DEVICE_FAULT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java
new file mode 100644
index 0000000..50f4f9c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVICE_STORAGE_INFO.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设备存储信息
+ * @date 2021/01/20
+ */
+public class NET_DEVICE_STORAGE_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 设备名称
+	 */
+	public byte[] szNmae = new byte[32];
+	
+	/**
+	 * 存储设备能否热插拔
+	 */
+	public int bSupportHotPlug;
+	
+	/**
+	 * 寿命长度标识
+	 */
+	public float fLifePercent;
+	
+	/**
+	 * SD卡加锁状态,参考枚举{ @link EM_SD_LOCK_STATE }
+	 */
+	public int emLockState;
+	
+	/**
+	 * SD卡加密功能标识,参考枚举{ @link EM_SD_ENCRYPT_FLAG }
+	 */
+	public int emSDEncryptFlag;
+	
+	/**
+	 * 健康状态标识,参考枚举{ @link EM_STORAGE_HEALTH_TYPE }
+	 */
+	public int emHealthType;
+	
+	/**
+	 * 存储设备状态,参考枚举{ @link EM_STORAGE_DEVICE_STATUS }
+	 */
+	public int emState;
+	
+	/**
+	 * 分区的具体信息 
+	 */
+	public NET_STORAGE_PARTITION_INFO[] stuPartitionInfo = new NET_STORAGE_PARTITION_INFO[12];
+		
+	/**
+	 * 分区数量
+	 */
+	public int nPartition;
+	
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[516];
+	
+	public NET_DEVICE_STORAGE_INFO() {
+		for (int i = 0; i < stuPartitionInfo.length; i++) {
+			stuPartitionInfo[i] = new NET_STORAGE_PARTITION_INFO();
+		}
+		
+	}
+	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVLOCATION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVLOCATION_INFO.java
new file mode 100644
index 0000000..9aec488
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVLOCATION_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description GPS信息
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_DEVLOCATION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 经度 单位百万分之一度,范围0-360度
+	 */
+	public int unLongitude;
+	/**
+	 * 纬度 单位百万分之一度,范围0-360度
+	 */
+	public int unLatitude;
+	/**
+	 * 海拔 单位米
+	 */
+	public double dbAltitude;
+	/**
+	 * true:GPS信息按照配置上报
+	 */
+	public int bConfigEnable;
+	/**
+	 * 设备高度 单位米
+	 */
+	public float fHeight;
+
+	public NET_DEVLOCATION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java
new file mode 100644
index 0000000..1f280dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_NET_INFO.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_GATEWAY_MAX_SIM_NUM;
+
+/** 
+* @author 291189
+* @description   网络相关信息 
+* @date 2022/08/31 14:35:19
+*/
+public class NET_DEVSTATUS_NET_INFO extends NetSDKLib.SdkStructure {
+/** 
+wifi信号强度等级,0~5,0表示没有信号
+*/
+public			int					nWifiIntensity;
+/** 
+wifi信号强度,单位dbm, 0~100,0表示没有信号
+*/
+public			int					nWifiSignal;
+/** 
+2g/3g/4g信号强度,单位dbm. 0~100, 0表示没有信号
+*/
+public			int					nCellulSignal;
+/** 
+2g/3g/4g信号强度等级,0~5, 0表示没有信号
+*/
+public			int					nCellulIntensity;
+/** 
+有线网连接状态 {@link com.netsdk.lib.enumeration.NET_EM_ETH_STATE}
+*/
+public			int					emEthState;
+/** 
+蜂窝网络实际使用流量,单位:MB
+*/
+public			int					n3Gflux;
+/** 
+网络实际使用时长,单位:分钟
+*/
+public			int					n3GfluxByTime;
+/** 
+网络连接状态 {@link com.netsdk.lib.enumeration.NET_EM_ETH_STATE}
+*/
+public			int					emWifiState;
+/** 
+蜂窝网络连接状态 {@link com.netsdk.lib.enumeration.NET_EM_ETH_STATE}
+*/
+public			int					emCellularstate;
+/** 
+SIM卡数量
+*/
+public			int					nSimNum;
+/** 
+SIM卡状态信息
+*/
+public			NET_DEVSTATUS_SIM_INFO[]					stuSimInfo=new NET_DEVSTATUS_SIM_INFO[NET_GATEWAY_MAX_SIM_NUM];
+
+public			NET_DEVSTATUS_NET_INFO(){
+		for(int i=0;i<stuSimInfo.length;i++){
+			stuSimInfo[i]=new NET_DEVSTATUS_SIM_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java
new file mode 100644
index 0000000..4be0298
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_POWER_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   电源电池相关信息 
+* @date 2022/09/01 15:11:24
+*/
+public class NET_DEVSTATUS_POWER_INFO extends NetSDKLib.SdkStructure {
+/** 
+电池电量百分比,0~100
+*/
+public			int					nBatteryPercent;
+/** 
+供电类型 {@link com.netsdk.lib.enumeration.NET_EM_POWER_TYPE}
+*/
+public			int					emPowerType;
+
+public NET_DEVSTATUS_POWER_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java
new file mode 100644
index 0000000..5c9b96a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEVSTATUS_SIM_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   sim卡状态信息 
+* @date 2022/08/31 14:35:19
+*/
+public class NET_DEVSTATUS_SIM_INFO extends NetSDKLib.SdkStructure {
+/** 
+SIM卡状态 {@link com.netsdk.lib.enumeration.NET_EM_SIM_STATE}
+*/
+public			int					emStatus;
+/** 
+SIM卡编号
+*/
+public			byte					byIndex;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[31];
+
+public			NET_DEVSTATUS_SIM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ACTION_COUNT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ACTION_COUNT_INFO.java
new file mode 100644
index 0000000..15aa6aa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ACTION_COUNT_INFO.java
@@ -0,0 +1,86 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_ACTION_COUNT (行为自定义行为计数事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/07/11 10:31:10
+ */
+public class NET_DEV_EVENT_ACTION_COUNT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲, 1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 扩展协议字段
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 事件发生时间, 带时区偏差的UTC时间, 单位秒
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件编号
+	 */
+	public int nEventID;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 相对事件时间戳,单位毫秒
+	 */
+	public double dbPTS;
+	/**
+	 * 智能事件规则编号
+	 */
+	public int nRuleID;
+	/**
+	 * 检测到的物体信息个数
+	 */
+	public int nObjectsNum;
+	/**
+	 * 检测到的物体信息
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[100];
+	/**
+	 * 全景广角图
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+	/**
+	 * 算法名称
+	 */
+	public byte[] szAlgorithmName = new byte[64];
+	/**
+	 * 自定义报警id
+	 */
+	public byte[] szAlarmID = new byte[32];
+	/**
+	 * 自定义行为计数
+	 */
+	public byte[] szActionName = new byte[64];
+	/**
+	 * 自定义行为分析行为名称
+	 */
+	public int nActionCount;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1020];
+
+	public NET_DEV_EVENT_ACTION_COUNT_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java
new file mode 100644
index 0000000..b14fa39
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO.java
@@ -0,0 +1,114 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_ANTI_COUNTERFEIT(防造假检测事件)对应的数据块描述信息 
+* @date 2022/08/24 15:23:14
+*/
+public class NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲 1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+智能事件规则编号
+*/
+public			int					nRuleID;
+/** 
+GroupID事件组ID
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+IndexInGroup一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+帧序号
+*/
+public			int					nSequence;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+规则区域个数
+*/
+public			int					nDetectRegionNum;
+/** 
+规则区域
+*/
+public			NET_UINT_POINT[]					stuDetectRegion=new NET_UINT_POINT[20];
+/** 
+Direction表示入侵方向, 参见警戒区配置
+*/
+public			byte[]					szDirection=new byte[16];
+/** 
+Action表示动作,参见警戒区配置
+*/
+public			byte[]					szAction=new byte[16];
+/** 
+全景广角图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage=new NetSDKLib.SCENE_IMAGE_INFO();
+/** 
+检测到的物体信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+用于标记抓拍帧
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+事件序列号
+*/
+public			int					nEventSeq;
+/** 
+预留字段
+*/
+public			byte[]					szReserved=new byte[1020];
+
+public NET_DEV_EVENT_ANTI_COUNTERFEIT_INFO(){
+		for(int i=0;i<stuDetectRegion.length;i++){
+			stuDetectRegion[i]=new NET_UINT_POINT();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java
new file mode 100644
index 0000000..7dcae32
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_CIGARETTE_CASE_DETECTION (烟盒检测事件)对应的数据块描述信息 
+* @date 2022/12/14 14:33:00
+*/
+public class NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+智能事件所属大类 {@link com.netsdk.lib.enumeration.EM_CLASS_TYPE}
+*/
+public			int					emClassType;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件组ID,一次检测的多个nGroupID相同
+*/
+public			int					nGroupID;
+/** 
+一个事件组内的抓拍张数,一次检测的多个nCountInGroup相同
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+销售香烟信息数量
+*/
+public			int					nCigaretteCaseNum;
+/** 
+销售香烟信息
+*/
+public			NET_CIGARETTE_CASE_INFO[]	stuCigaretteCaseInfo=new NET_CIGARETTE_CASE_INFO[50];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_DEV_EVENT_CIGARETTE_CASE_DETECTION_INFO(){
+		for(int i=0;i<stuCigaretteCaseInfo.length;i++){
+			stuCigaretteCaseInfo[i]=new NET_CIGARETTE_CASE_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java
new file mode 100644
index 0000000..b48ab2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_COLLISION_CONFLICT_INFO.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_COLLISION_CONFLICT (碰撞冲突事件)对应的数据块描述信息
+ * @date 2023/02/21 14:39:29
+ */
+public class NET_DEV_EVENT_COLLISION_CONFLICT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * 碰撞位置
+     */
+    public NET_3DFLOAT_POINT stuPosition = new NET_3DFLOAT_POINT();
+    /**
+     * 碰撞点GPS坐标
+     */
+    public NET_GPS_POSITION stuGPSPosition = new NET_GPS_POSITION();
+    /**
+     * 参与碰撞的目标信息
+     */
+    public NET_VEHICLE_FUSED_OBJECT[] stuObjects = new NET_VEHICLE_FUSED_OBJECT[4];
+    /**
+     * 参与碰撞的目标个数
+     */
+    public int nObjectsCount;
+    /**
+     * 碰撞剩余时间TTC,单位s,0表示已经碰撞
+     */
+    public int nLeftTime;
+    /**
+     * 碰撞类型: 0-未知 1-交叉 2-追尾 3-合流
+     */
+    public int nType;
+    /**
+     * 冲突程度,取值范围0-1,值越大越严重,<=0.5一般冲突, >0.5严重冲突
+     */
+    public float fConflictLevel;
+    /**
+     * 置信度
+     */
+    public float fConfidence;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_DEV_EVENT_COLLISION_CONFLICT_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NET_VEHICLE_FUSED_OBJECT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java
new file mode 100644
index 0000000..0149a84
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_CROSSLINE_STAT_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_CROSSLINE_STAT (绊线计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) 
+* @date 2023/02/06 16:07:27
+*/
+public class NET_DEV_EVENT_CROSSLINE_STAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+智能事件规则编号
+*/
+public			int					nRuleID;
+/** 
+区域ID
+*/
+public			int					nAreaID;
+/** 
+绊线方向 {@link com.netsdk.lib.enumeration.EM_STAT_DIRECTION}
+*/
+public			int					emDirection;
+/** 
+目标绊线总数
+*/
+public			int					nNumber;
+/** 
+详细计数信息个数
+*/
+public			int					nStatDetailNum;
+/** 
+详细计数信息
+*/
+public			NET_STAT_DETAIL[]	stuStatDetail=new NET_STAT_DETAIL[16];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_DEV_EVENT_CROSSLINE_STAT_INFO(){
+		for(int i=0;i<stuStatDetail.length;i++){
+			stuStatDetail[i]=new NET_STAT_DETAIL();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_DROP_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_DROP_DETECTION_INFO.java
new file mode 100644
index 0000000..66be287
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_DROP_DETECTION_INFO.java
@@ -0,0 +1,77 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.NetSDKLib.POINTERSIZE;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_DROP_DETECTION(滴漏检测事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/07/14 15:01:21
+ */
+public class NET_DEV_EVENT_DROP_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件类型 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 相对事件时间戳,(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 检测目标个数
+	 */
+	public int nObjectsNum;
+	/**
+	 * 检测目标的物体信息
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[128];
+	/**
+	 * 全景广角图,仅 nIndexInData字段有效
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+	/**
+	 * 图片信息数组, refer to {@link NET_IMAGE_INFO_EX2}
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * null
+	 */
+	public byte[] szReserved = new byte[508 - POINTERSIZE];
+
+	public NET_DEV_EVENT_DROP_DETECTION_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java
new file mode 100644
index 0000000..f7e1cca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_GARBAGE_PLASTICBAG (打包垃圾检测事件)对应的数据块描述信息
+ * @date 2023/02/17 19:39:19
+ */
+public class NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 扩展协议字段
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * GroupID事件组ID,同一物体抓拍过程内GroupID相同
+	 */
+	public int nGroupID;
+	/**
+	 * CountInGroup一个事件组内的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * IndexInGroup一个事件组内的抓拍序号,从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * 相对事件时间戳,(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 检测到的物体个数
+	 */
+	public int nObjectCount;
+	/**
+	 * 检测到的物体信息
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[64];
+	/**
+	 * 规则检测区域
+	 */
+	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+	/**
+	 * 规则检测区域顶点数
+	 */
+	public int nDetectRegionCount;
+	/**
+	 * 事件触发的预置点号,从1开始
+	 */
+	public int nPresetID;
+	/**
+	 * 事件触发的预置点名称
+	 */
+	public byte[] szPresetName = new byte[64];
+	/**
+	 * 事件关联ID
+	 */
+	public byte[] szSourceID = new byte[32];
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_DEV_EVENT_GARBAGE_PLASTICBAG_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NET_POINT_EX();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO.java
new file mode 100644
index 0000000..ace88da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 事件类型 EVENT_IVS_GRANARY_TRANS_ACTION_DETECTION(粮面异动检测事件上报)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/12/13 09:51:51
+ */
+public class NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO extends NetSDKLib.SdkStructure{
+
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * / 事件触发的预置点号,从1开始
+     */
+    public int nPresetID;
+    /**
+     * / 物体信息列表实际数量
+     */
+    public int nObjectsCount;
+    /**
+     * / 物体信息列表
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = new NetSDKLib.NET_MSG_OBJECT[128];
+    /**
+     * / 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * / 全景图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+    /**
+     * / 检测区域
+     */
+    public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+    /**
+     * / 检测区域个数
+     */
+    public int nDetectRegionCount;
+    /**
+     * / 预留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    public NET_DEV_EVENT_GRANARY_TRANS_ACTION_DETECTION_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT();
+        }
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new NET_POINT_EX();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_HUMIDITY_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_HUMIDITY_ALARM_INFO.java
new file mode 100644
index 0000000..2e78d32
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_HUMIDITY_ALARM_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_HUMIDITY_ALARM(湿度报警事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/12/02 10:36:53
+*/
+public class NET_DEV_EVENT_HUMIDITY_ALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+/ 通道号
+*/
+public			int					nChannelID;
+/** 
+/ 事件类型 0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+/ 事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+/ 当前湿度值
+*/
+public			float					fCurrentValue;
+/** 
+/ 报警阈值
+*/
+public			float					fLimitValue;
+/** 
+/ GPS信息
+*/
+public NET_GPS_STATUS_INFO stuGPS=new NET_GPS_STATUS_INFO();
+/** 
+/ 检测正常范围
+*/
+public			int[]					nRange=new int[2];
+
+/**
+ * RealUTC 是否有效,bRealUTC 为 TRUE 时,用 stuRealUTC,否则 stuRealUTC 字段无效(用原事件结构体中的 事件发生时间/事件触发时间(UTC) 字段)
+ */
+public	int 						bRealUTC;
+
+/**
+ * 事件发生的时间(标准UTC时间(不带时区夏令时偏差)), 由于事件的UTC时间在产品线之间使用的差异性, 故增加RealUTC作为标准UTC时间, 平台在收到事件解析首优先级是RealUTC, 其次是UTC.
+*/
+public	NET_TIME_EX		stuRealUTC=new NET_TIME_EX();
+
+/** 
+/ 预留字节
+*/
+public			byte[]					szReserved=new byte[984];
+
+public NET_DEV_EVENT_HUMIDITY_ALARM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java
new file mode 100644
index 0000000..f59d7a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO.java
@@ -0,0 +1,120 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 事件类型 EVENT_IVS_ILLEGAL_CARRIAGE(非法运输事件)对应的数据块描述信息
+ * @date 2023/02/17 19:37:30
+ */
+public class NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 事件类型 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[128];
+	/**
+	 * GroupID事件组ID,同一物体抓拍过程内GroupID相同
+	 */
+	public int nGroupID;
+	/**
+	 * CountInGroup一个事件组内的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * IndexInGroup一个事件组内的抓拍序号,从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * 相对事件时间戳,(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 仅用于字节对齐,无实际意义
+	 */
+	public byte[] byReserved = new byte[4];
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 车辆信息
+	 */
+	public NetSDKLib.NET_MSG_OBJECT_EX2[] stuVehicles = new NetSDKLib.NET_MSG_OBJECT_EX2[10];
+	/**
+	 * 检测到的车辆信息个数(配合stuVehicles使用)
+	 */
+	public int nVehiclesNum;
+	/**
+	 * 检测到的车牌信息个数(配合stuObjects使用)
+	 */
+	public int nObjectsNum;
+	/**
+	 * 车牌信息
+	 */
+	public NetSDKLib.NET_MSG_OBJECT_EX2[] stuObjects = new NetSDKLib.NET_MSG_OBJECT_EX2[10];
+	/**
+	 * 全景广角图, 仅nIndexInData字段有效
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+	/**
+	 * 大客车周身门的状态(比如车门, 行李箱门是否打开), 0-未知, 1-是, 2-不是
+	 */
+	public int nBusDoorStatus;
+	/**
+	 * 附近是否存在行李箱, 0-没有行李箱, 1-有行李箱
+	 */
+	public int nIsTrunk;
+	/**
+	 * 图片信息数组,指针对应结构体NET_IMAGE_INFO_EX2数组
+	 */
+	public Pointer pstuImageInfo;
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 检测区个数
+	 */
+	public int nDetectRegionNum;
+	/**
+	 * 检测区
+	 */
+	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1936 - NetSDKLib.POINTERSIZE];
+
+	public NET_DEV_EVENT_ILLEGAL_CARRIAGE_INFO() {
+		for (int i = 0; i < stuVehicles.length; i++) {
+			stuVehicles[i] = new NetSDKLib.NET_MSG_OBJECT_EX2();
+		}
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT_EX2();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NET_POINT_EX();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO.java
new file mode 100644
index 0000000..e97948a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO.java
@@ -0,0 +1,92 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_OBJECT_APPEAR_DETECTION (目标出现事件)对应的数据块描述信息
+ * @date 2023/04/21 16:10:02
+ */
+public class NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * 事件发生时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleID;
+    /**
+     * 事件编号
+     */
+    public int nEventID;
+    /**
+     * 帧序号
+     */
+    public int nSequence;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * GroupID事件组ID
+     */
+    public int nGroupID;
+    /**
+     * CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * IndexInGroup一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * 字节对齐
+     */
+    public byte[] szReserved1 = new byte[4];
+    /**
+     * 检测目标的物体信息个数
+     */
+    public int nObjectCount;
+    /**
+     * 检测目标的物体信息,{@link NetSDKLib.DH_MSG_OBJECT}
+     */
+    public Pointer pstuObjects;
+    /**
+     * 全景图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_DEV_EVENT_OBJECT_APPEAR_DETECTION_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO.java
new file mode 100644
index 0000000..a7482e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_OBJECT_DISAPPEAR_DETECTION (目标出现事件)对应的数据块描述信息
+ * @date 2023/04/21 16:10:02
+ */
+public class NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * 事件发生时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleID;
+    /**
+     * GroupID事件组ID
+     */
+    public int nGroupID;
+    /**
+     * CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * IndexInGroup一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * 事件编号
+     */
+    public int nEventID;
+    /**
+     * 帧序号
+     */
+    public int nSequence;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 规则区域
+     */
+    public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+    /**
+     * 规则区域个数
+     */
+    public int nDetectRegionCount;
+    /**
+     * 检测目标的物体信息个数
+     */
+    public int nObjectCount;
+    /**
+     * 检测目标的物体信息,{@link NetSDKLib.DH_MSG_OBJECT}
+     */
+    public Pointer pstuObjects;
+    /**
+     * 全景图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_DEV_EVENT_OBJECT_DISAPPEAR_DETECTION_INFO() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new NET_POINT_EX();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO.java
new file mode 100644
index 0000000..d429590
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO.java
@@ -0,0 +1,103 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_OBJECT_STATE_DETECTION (目标状态事件)对应的数据块描述信息
+ * @date 2023/04/23 11:01:23
+ */
+public class NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * 事件发生时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 智能事件规则编号
+     */
+    public int nRuleID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * GroupID事件组ID
+     */
+    public int nGroupID;
+    /**
+     * CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * IndexInGroup一个事件组内的抓拍序号
+     */
+    public int nIndexInGroup;
+    /**
+     * 事件编号
+     */
+    public int nEventID;
+    /**
+     * 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * 帧序号
+     */
+    public int nSequence;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 规则区域
+     */
+    public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+    /**
+     * 规则区域个数
+     */
+    public int nDetectRegionCount;
+    /**
+     * 检测目标的物体信息个数
+     */
+    public int nObjectCount;
+    /**
+     * 检测目标的物体信息,{@link NetSDKLib.DH_MSG_OBJECT}
+     */
+    public Pointer pstuObjects;
+    /**
+     * 全景图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO();
+    /**
+     * 目标状态, 1:正常, 2:异常, 0:未知
+     */
+    public int nObjectStatus;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_DEV_EVENT_OBJECT_STATE_DETECTION_INFO() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new NET_POINT_EX();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java
new file mode 100644
index 0000000..a591f15
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_POSITION_SNAP_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_POSITION_SNAP (按位置抓图事件)对应的数据块描述信息 
+* @date 2022/11/15 09:31:15
+*/
+public class NET_DEV_EVENT_POSITION_SNAP_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+按位置抓图的类型, 目前仅有"PresetSnap"
+*/
+public			byte[]					szType=new byte[64];
+/** 
+预置点序号
+*/
+public			int					nPresetID;
+/** 
+预置点名称
+*/
+public			byte[]					szPresetName=new byte[64];
+/** 
+GPS信息
+*/
+public NetSDKLib.NET_GPS_INFO stuGPSInfo=new NetSDKLib.NET_GPS_INFO();
+/** 
+云台方向与放大倍数,显示值,扩大100倍值, 该数组固定为3,第一个元素为水平角度,0-36000; 第二个元素为垂直角度,(-18000)-(18000); 第三个元素为显示放大倍数,0-100。
+*/
+public			int[]					nAbsposition=new int[3];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_DEV_EVENT_POSITION_SNAP_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java
new file mode 100644
index 0000000..5e11dd1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGIONNUM_STAT_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_REGIONNUM_STAT (域内计数事件)对应的数据块描述信息( 注意该事件暂时不支持单独使用,仅配合“开放智能事件(EVENT_IVS_OPEN_INTELLI)”使用) 
+* @date 2023/02/06 16:15:08
+*/
+public class NET_DEV_EVENT_REGIONNUM_STAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+智能事件所属大类
+*/
+public			byte[]					szClass=new byte[16];
+/** 
+相对事件时间戳,(单位是毫秒)
+*/
+public			double					dbPTS;
+/** 
+事件时间毫秒数
+*/
+public			int					nUTCMS;
+/** 
+智能事件规则编号
+*/
+public			int					nRuleID;
+/** 
+区域ID
+*/
+public			int					nAreaID;
+/** 
+绊线方向 {@link com.netsdk.lib.enumeration.EM_STAT_DIRECTION}
+*/
+public			int					emDirection;
+/** 
+目标绊线总数
+*/
+public			int					nNumber;
+/** 
+详细计数信息个数
+*/
+public			int					nStatDetailNum;
+/** 
+详细计数信息
+*/
+public			NET_STAT_DETAIL[]					stuStatDetail=new NET_STAT_DETAIL[16];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_DEV_EVENT_REGIONNUM_STAT_INFO(){
+		for(int i=0;i<stuStatDetail.length;i++){
+			stuStatDetail[i]=new NET_STAT_DETAIL();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO.java
new file mode 100644
index 0000000..bdc8439
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 事件类型 EVENT_IVS_REGION_PROPORTION_DETECTION(区域占比检测事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/12/13 09:51:51
+ */
+public class NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO extends NetSDKLib.SdkStructure{
+
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * / 物体信息列表实际数量
+     */
+    public int nObjectsCount;
+    /**
+     * / 物体信息列表
+     */
+    public NetSDKLib.NET_MSG_OBJECT[] stuObjects = new NetSDKLib.NET_MSG_OBJECT[32];
+    /**
+     * / 全景图
+     */
+    public NetSDKLib.SCENE_IMAGE_INFO_EX stuSceneImage = new NetSDKLib.SCENE_IMAGE_INFO_EX();
+    /**
+     * / 实际占比,取值0~100
+     */
+    public int nRatio;
+    /**
+     * / 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * / 预留字节
+     */
+    public byte[] szReserverd = new byte[1024];
+
+    public NET_DEV_EVENT_REGION_PROPORTION_DETECTION_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NetSDKLib.NET_MSG_OBJECT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java
new file mode 100644
index 0000000..a0c7161
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_REMOTE_APPROVAL_ALARM(金融远程审批事件)对应的数据块描述信息 
+* @date 2022/08/10 10:37:46
+*/
+public class NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+1:开始 2:停止
+*/
+public			int					nAction;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+时间戳(单位是毫秒)
+*/
+public			double					PTS;
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX UTC=new NET_TIME_EX();
+/** 
+事件ID
+*/
+public			int					nEventID;
+/** 
+审批单号
+*/
+public			int					nApprovalNo;
+/** 
+操作类型,-1:未知,0:存箱, 1:取箱
+*/
+public			int					nType;
+/** 
+审批超时时间,单位秒
+*/
+public			int					nTimeout;
+/** 
+存取的舱位下标数量
+*/
+public			int					nCabinListNum;
+/** 
+存取的舱位下标数组
+*/
+public			int[]					nCabinList=new int[32];
+/** 
+存取人ID
+*/
+public			byte[]					szAccessorID=new byte[64];
+/** 
+存取人名称
+*/
+public			byte[]					szAccessorName=new byte[64];
+/** 
+复核人ID
+*/
+public			byte[]					szReviewerID=new byte[64];
+/** 
+复核人名称
+*/
+public			byte[]					szReviewerName=new byte[64];
+/** 
+图片信息数组
+*/
+public			NET_IMAGE_INFO_EX2[]					stuImageInfo=new NET_IMAGE_INFO_EX2[32];
+/** 
+图片信息个数
+*/
+public			int					nImageInfoNum;
+/** 
+预留字段
+*/
+public			byte[]					szReserved=new byte[508];
+
+public NET_DEV_EVENT_REMOTE_APPROVAL_ALARM_INFO(){
+		for(int i=0;i<stuImageInfo.length;i++){
+			stuImageInfo[i]=new NET_IMAGE_INFO_EX2();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO.java
new file mode 100644
index 0000000..fd44a61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO.java
@@ -0,0 +1,108 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * @author 421657
+ * @description 事件类型 EVENT_IVS_SAME_OBJECT_SEARCH_COUNT(按图索骥物品计数事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/10/30 10:46:13
+ */
+public class NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * / 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * / 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * / 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * / 事件编号,用来唯一标志一个事件
+     */
+    public int nEventID;
+    /**
+     * / GroupID事件组ID,同一物体抓拍过程内GroupID相同
+     */
+    public int nGroupID;
+    /**
+     * / CountInGroup一个事件组内的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * / IndexInGroup一个事件组内的抓拍序号,从1开始
+     */
+    public int nIndexInGroup;
+    /**
+     * / 物体信息列表实际数量
+     */
+    public int nObjectsNum;
+    /**
+     * / 物体信息列表,最大支持64个物体
+     */
+    public NET_MSG_OBJECT_EX2[] stObjects = new NET_MSG_OBJECT_EX2[64];
+    /**
+     * / 算法名称
+     */
+    public byte[] szAlgName = new byte[128];
+    /**
+     * / 物品类型
+     */
+    public byte[] szObjectType = new byte[32];
+    /**
+     * / ObjectType物品类型id
+     */
+    public int nObjectTypeID;
+    /**
+     * / 自定义报警ID,事件上报平台时使用
+     */
+    public int nAlarmId;
+    /**
+     * / 全景图
+     */
+    public SCENE_IMAGE_INFO stImage = new SCENE_IMAGE_INFO();
+    /**
+     * / 规则使用的按图索骥算法id
+     */
+    public int nAlgId;
+    /**
+     * / 物体个数
+     */
+    public int nCount;
+    /**
+     * / 预留字节
+     */
+    public byte[] szReserverd = new byte[1020];
+
+    public NET_DEV_EVENT_SAME_OBJECT_SEARCH_COUNT_INFO() {
+        for (int i = 0; i < stObjects.length; i++) {
+            stObjects[i] = new NET_MSG_OBJECT_EX2();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO.java
new file mode 100644
index 0000000..c0872a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO.java
@@ -0,0 +1,100 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * @author 421657
+ * @description 事件类型 EVENT_IVS_SAME_OBJECT_SEARCH_DETECT (按图索骥物品检测事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/10/30 10:58:12
+ */
+public class NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 通道号
+     */
+    public int nChannelID;
+    /**
+     * / 0:脉冲, 1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * / 扩展协议字段
+     */
+    public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+    /**
+     * / 事件发生时间, 带时区偏差的UTC时间, 单位秒
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * / 事件编号
+     */
+    public int nEventID;
+    /**
+     * / 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * / 智能事件所属大类
+     */
+    public byte[] szClass = new byte[16];
+    /**
+     * / 相对事件时间戳,单位毫秒
+     */
+    public double dbPTS;
+    /**
+     * / 事件组ID,同一辆车抓拍过程内GroupID相同。
+     */
+    public int nGroupID;
+    /**
+     * / CountInGroup一个事件组内应有的抓拍张数
+     */
+    public int nCountInGroup;
+    /**
+     * / 一个事件组内的抓拍序号,从1开始
+     */
+    public int nIndexInGroup;
+    /**
+     * / 物体信息列表数组有效个数
+     */
+    public int nObjectsNum;
+    /**
+     * / 物体信息列表
+     */
+    public NET_MSG_OBJECT[] stuObjects = new NET_MSG_OBJECT[64];
+    /**
+     * / 算法名称
+     */
+    public byte[] szAlgName = new byte[128];
+    /**
+     * / 物品类型
+     */
+    public byte[] szObjectType = new byte[32];
+    /**
+     * / 全景图
+     */
+    public SCENE_IMAGE_INFO stuImageInfo = new SCENE_IMAGE_INFO();
+    /**
+     * / 自定义报警ID
+     */
+    public int nAlarmId;
+    /**
+     * / ObjectType物品类型id
+     */
+    public int nObjectTypeID;
+    /**
+     * / 规则使用的按图索骥算法id
+     */
+    public int nAlgId;
+    /**
+     * / 字节对齐
+     */
+    public byte[] szReserved = new byte[1020];
+
+    public NET_DEV_EVENT_SAME_OBJECT_SEARCH_DETECT_INFO() {
+        for (int i = 0; i < stuObjects.length; i++) {
+            stuObjects[i] = new NET_MSG_OBJECT();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java
new file mode 100644
index 0000000..c88248b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TEMPERATURE_ALARM_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_TEMPERATURE_ALARM(温度报警事件)对应的数据块描述信息
+ * @date 2023/01/12 10:19:13
+ */
+public class NET_DEV_EVENT_TEMPERATURE_ALARM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件类型 0:脉冲,1:开始, 2:停止
+     */
+    public int nAction;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 当前温度
+     */
+    public float fCurrent;
+    /**
+     * 正常范围
+     */
+    public int[] nRange = new int[2];
+    /**
+     * GPS信息
+     */
+    public NetSDKLib.NET_GPS_STATUS_INFO stuGPS = new NetSDKLib.NET_GPS_STATUS_INFO();
+    /**
+     *  RealUTC 是否有效,bRealUTC 为 TRUE 时,用 stuRealUTC,否则 stuRealUTC 字段无效(用原事件结构体中的 事件发生时间/事件触发时间(UTC) 字段)
+     */
+    public  int		bRealUTC;
+
+    /**
+     * 事件发生的时间(标准UTC时间(不带时区夏令时偏差)), 由于事件的UTC时间在产品线之间使用的差异性, 故增加RealUTC作为标准UTC时间, 平台在收到事件解析首优先级是RealUTC, 其次是UTC.
+     */
+    public	NET_TIME_EX		stuRealUTC=new NET_TIME_EX();
+
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[984];
+
+    public NET_DEV_EVENT_TEMPERATURE_ALARM_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java
new file mode 100644
index 0000000..f600949
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO.java
@@ -0,0 +1,116 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_ACCELERATION_RAPID (急加速事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/02/14 20:19:38
+*/
+public class NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件编号,用来唯一标志一个事件
+*/
+public			int					nEventID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件组ID,同一辆车抓拍过程内GroupID相同。
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内应有的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+表示对应车道号
+*/
+public			int					nLane;
+/** 
+相对事件时间戳,单位毫秒
+*/
+public			double					dbPTS;
+/** 
+车辆信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+表示交通车辆的数据库记录
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+非机动车信息
+*/
+public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor=new NetSDKLib.VA_OBJECT_NONMOTOR();
+/** 
+是否有非机动车对象
+*/
+public			int					bHasNonMotor;
+/** 
+抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束
+*/
+public			int					nSequence;
+/** 
+车速,单位km/h
+*/
+public			int					nSpeed;
+/** 
+触发类型
+*/
+public			int					nTriggerType;
+/** 
+用于标记抓拍帧
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+事件类型掩码, bit0表示报警事件, bit1表示违章事件, 若bit0和bit1都置位则既是报警事件又是违章事件
+*/
+public			int					nEventType;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_DEV_EVENT_TRAFFIC_ACCELERATION_RAPID_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java
new file mode 100644
index 0000000..acfe96c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO.java
@@ -0,0 +1,112 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型 EVENT_IVS_TRAFFIC_TURN_SHARP (急转弯事件)对应的数据块描述信息 
+* @origin autoTool
+* @date 2023/02/14 20:27:40
+*/
+public class NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+0:脉冲,1:开始, 2:停止
+*/
+public			int					nAction;
+/** 
+扩展协议字段
+*/
+public NET_EVENT_INFO_EXTEND stuEventInfoEx=new NET_EVENT_INFO_EXTEND();
+/** 
+事件发生的时间
+*/
+public NET_TIME_EX stuUTC=new NET_TIME_EX();
+/** 
+事件编号,用来唯一标志一个事件
+*/
+public			int					nEventID;
+/** 
+事件名称
+*/
+public			byte[]					szName=new byte[128];
+/** 
+事件组ID,同一辆车抓拍过程内GroupID相同。
+*/
+public			int					nGroupID;
+/** 
+CountInGroup一个事件组内应有的抓拍张数
+*/
+public			int					nCountInGroup;
+/** 
+一个事件组内的抓拍序号,从1开始
+*/
+public			int					nIndexInGroup;
+/** 
+表示对应车道号
+*/
+public			int					nLane;
+/** 
+相对事件时间戳,单位毫秒
+*/
+public			double					dbPTS;
+/** 
+车辆信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuVehicle=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+车牌信息
+*/
+public NetSDKLib.NET_MSG_OBJECT stuObject=new NetSDKLib.NET_MSG_OBJECT();
+/** 
+表示交通车辆的数据库记录
+*/
+public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar=new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+/** 
+公共信息
+*/
+public NetSDKLib.EVENT_COMM_INFO stuCommInfo=new NetSDKLib.EVENT_COMM_INFO();
+/** 
+非机动车信息
+*/
+public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor=new NetSDKLib.VA_OBJECT_NONMOTOR();
+/** 
+是否有非机动车对象
+*/
+public			int					bHasNonMotor;
+/** 
+抓拍序号,如/0,1表示抓拍正常结束,0表示抓拍异常结束
+*/
+public			int					nSequence;
+/** 
+车速,单位km/h
+*/
+public			int					nSpeed;
+/** 
+触发类型
+*/
+public			int					nTriggerType;
+/** 
+用于标记抓拍帧
+*/
+public			int					nMark;
+/** 
+视频分析的数据源地址
+*/
+public			int					nSource;
+/** 
+视频分析帧序号
+*/
+public			int					nFrameSequence;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[1020];
+
+public NET_DEV_EVENT_TRAFFIC_TURN_SHARP_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO.java
new file mode 100644
index 0000000..0038fcc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO.java
@@ -0,0 +1,174 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 事件类型 EVENT_IVS_USERMANAGER_FOR_TWSDK (用户信息上报事件)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/07/28 14:34:03
+ */
+public class NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO extends
+		NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲
+	 */
+	public int nAction;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 扩展协议字段
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 用户ID
+	 */
+	public byte[] szUserID = new byte[9];
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[7];
+	/**
+	 * 用户名
+	 */
+	public byte[] szUserName = new byte[64];
+	/**
+	 * 用户类型
+	 * 0: 为普通用户
+	 * 1: 为黑名单用户(黑名单会报黑名单事件AccessControlBlacklist)
+	 * 2: 为来宾用户
+	 * 3: 为巡逻用户
+	 * 4: 为VIP用户
+	 * 5: 伤障用户
+	 */
+	public int nUserType;
+	/**
+	 * 使用次数
+	 */
+	public int nUseTime;
+	/**
+	 * 用户权限 0:未知 1: 管理员 2: 普通用户
+	 */
+	public int nAuthority;
+	/**
+	 * 有效的的时间段数目
+	 */
+	public int nTimeSectionNum;
+	/**
+	 * 时段
+	 */
+	public int[] nTimeSections = new int[64];
+	/**
+	 * 有效期
+	 */
+	public NET_TIME stuValidTo = new NET_TIME();
+	/**
+	 * 假日计划
+	 */
+	public int[] nSpecialDaysSchedule = new int[64];
+	/**
+	 * 假日计划表示数量
+	 */
+	public int nSpecialDaysScheduleNum;
+	/**
+	 * 消息类型 0: 未知 1: 人员新增消息 2: 人员修改消息 3:人员删除消息(删除时仅UserID有效)
+	 */
+	public int nType;
+	/**
+	 * 密码
+	 */
+	public byte[] szPassword = new byte[9];
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved2 = new byte[7];
+	/**
+	 * 特征值
+	 */
+	public BYTE_2048[] szFaceList = new BYTE_2048[5];
+	/**
+	 * 特征值数量
+	 */
+	public int nFaceListNum;
+	/**
+	 * 卡片数量
+	 */
+	public int nCardListNum;
+	/**
+	 * 卡片
+	 */
+	public BYTE_32[] szCardList = new BYTE_32[5];
+	/**
+	 * 信息
+	 */
+	public BYTE_256[] szFingerList = new BYTE_256[5];
+	/**
+	 * 信息数量
+	 */
+	public int nFingerListNum;
+	/**
+	 * 是否删除所有用户(true:删除所有用户数据,其余字段无效)
+	 */
+	public int bDelAllUser;
+	/**
+	 * 有效期开始时间
+	 */
+	public NET_TIME stuValidFrom = new NET_TIME();
+	/**
+	 * 设备序列号
+	 */
+	public byte[] szSN = new byte[32];
+	/**
+	 * 用户总数量
+	 */
+	public int nUserCount;
+	/**
+	 * 信息总数量
+	 */
+	public int nFingerCount;
+	/**
+	 * 目标总数量
+	 */
+	public int nFaceCount;
+	/**
+	 * 卡片总数量
+	 */
+	public int nCardCount;
+	/**
+	 * 用户信息图片信息
+	 */
+	public NET_USERMANAGER_IMAGE_INFO[] stuImageInfo = new NET_USERMANAGER_IMAGE_INFO[5];
+	/**
+	 * 用户信息图片信息个数
+	 */
+	public int nImageInfoCount;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[572];
+
+	public NET_DEV_EVENT_USERMANAGER_FOR_TWSDK_INFO() {
+		for (int i = 0; i < stuImageInfo.length; i++) {
+			stuImageInfo[i] = new NET_USERMANAGER_IMAGE_INFO();
+		}
+
+		for(int i=0;i<szFaceList.length;i++){
+			szFaceList[i]=new BYTE_2048();
+		}
+
+		for(int i=0;i<szCardList.length;i++){
+			szCardList[i]=new BYTE_32();
+		}
+
+		for(int i=0;i<szFingerList.length;i++){
+			szFingerList[i]=new BYTE_256();
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_WADING_DETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_WADING_DETECTION_INFO.java
new file mode 100644
index 0000000..2e383c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_EVENT_WADING_DETECTION_INFO.java
@@ -0,0 +1,85 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 事件类型 EVENT_IVS_WADING_DETECTION (涉水安全检测、水域监测报警)对应的数据块描述信息
+ * @origin autoTool
+ * @date 2023/07/21 15:56:23
+ */
+public class NET_DEV_EVENT_WADING_DETECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲, 1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 扩展协议字段
+	 */
+	public NET_EVENT_INFO_EXTEND stuEventInfoEx = new NET_EVENT_INFO_EXTEND();
+	/**
+	 * 事件发生时间, 带时区偏差的UTC时间, 单位秒
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件编号
+	 */
+	public int nEventID;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 相对事件时间戳,单位毫秒
+	 */
+	public double dbPTS;
+	/**
+	 * 事件组ID,同一辆车抓拍过程内GroupID相同。
+	 */
+	public int nGroupID;
+	/**
+	 * CountInGroup一个事件组内应有的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * 一个事件组内的抓拍序号,从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * 检测到的物体信息个数
+	 */
+	public int nObjectsNum;
+	/**
+	 * 检测到的物体信息
+	 */
+	public NetSDKLib.DH_MSG_OBJECT[] stuObjects = new NetSDKLib.DH_MSG_OBJECT[32];
+	/**
+	 * 检测区域
+	 */
+	public NET_POINT_EX[] stuDetectRegion = new NET_POINT_EX[20];
+	/**
+	 * 实际检测到区域个数
+	 */
+	public int nDetectRegionNum;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1020];
+
+	public NET_DEV_EVENT_WADING_DETECTION_INFO() {
+		for (int i = 0; i < stuObjects.length; i++) {
+			stuObjects[i] = new NetSDKLib.DH_MSG_OBJECT();
+		}
+		for (int i = 0; i < stuDetectRegion.length; i++) {
+			stuDetectRegion[i] = new NET_POINT_EX();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_IO_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_IO_STAT_INFO.java
new file mode 100644
index 0000000..70273d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_IO_STAT_INFO.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 存储设备io信息
+ * @date 2021/07/09
+ */
+public class NET_DEV_IO_STAT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  存储设备名称
+     */
+    public byte[] szDeviceName = new byte[32];
+
+    /**
+     *  每秒完成的读次数
+     */
+    public int nReadIos;
+
+    /**
+     *  每秒对该设备的读请求被合并次数
+     */
+    public int nReadMerges;
+
+    /**
+     *  每秒读数据量(kB为单位)
+     */
+    public long nReadSectors;
+
+    /**
+     *  每秒完成的写次数
+     */
+    public int nWriteIos;
+
+    /**
+     *  每秒对该设备的写请求被合并次数
+     */
+    public int nWriteMerges;
+
+    /**
+     *  每秒写数据量(kB为单位)
+     */
+    public long nWriteSectors;
+
+    /**
+     *  平均每次IO操作的数据量(扇区数为单位)
+     */
+    public int nSize;
+
+    /**
+     *  平均等待处理的IO请求队列长度
+     */
+    public int nQueue;
+
+    /**
+     *  平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
+     */
+    public int nWait;
+
+    /**
+     *  平均每次IO请求的处理时间(毫秒为单位)
+     */
+    public int nSvctm;
+
+    /**
+     *  采用周期内用于IO操作的时间比率,即IO队列非空的时间比率,范围[0,100]
+     */
+    public int nUtil;
+
+    /**
+     *  字节对齐
+     */
+    public byte[] szReserved1 = new byte[4];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_NETWORK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_NETWORK_INFO.java
new file mode 100644
index 0000000..8ef86b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DEV_NETWORK_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+设备网络信息
+*/
+public class NET_DEV_NETWORK_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 设备IP
+*/
+public			byte[]					szDevIP=new byte[64];
+/** 
+/< 设备端口号
+*/
+public			int					nDevPort;
+/** 
+/< 保留字节
+*/
+public			byte[]					szReserved=new byte[516];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java
new file mode 100644
index 0000000..ad350e0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  对应检测类型(NET_DIAGNOSIS_DRAMATIC_CHANGE) 场景剧变检测结果 
+* @date 2022/08/03 14:36:15
+*/
+public class NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+检测结果量化值
+*/
+public			int					nValue;
+/** 
+检测结果状态 {@link NetSDKLib.NET_STATE_TYPE}
+*/
+public			int					emState;
+/** 
+状态持续时间
+*/
+public			int					nDuration;
+/**
+ * 异常检测结果图片地址
+ */
+public byte[] szPicUrl = new byte[256];  
+
+public NET_DIAGNOSIS_DRAMATIC_DETECTIONRESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAL_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAL_DETECT.java
new file mode 100644
index 0000000..9fbd657
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DIAL_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  表盘检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_DIAL_DETECT extends NetSDKLib.SdkStructure {
+/** 
+表盘状态 {@link com.netsdk.lib.enumeration.EM_DIAL_STATE}
+*/
+public			int					emDialState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_DIAL_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java
new file mode 100644
index 0000000..84cfdcb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DISPLAY_OPTIONS_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @description: 数据显示选项
+ */
+
+public class NET_DISPLAY_OPTIONS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  是否显示开关 TRUE:是 FALSE:否
+     */
+    public int bIsSwitchDisplayed;
+
+    /**
+     *  是否显示滚动开关 TRUE:是 FALSE:否
+     */
+    public int bIsScrollDisplaySwitch;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[120];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOOR_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOOR_DETECT.java
new file mode 100644
index 0000000..30bb4ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  箱门检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_DOOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+箱门状态 {@link com.netsdk.lib.enumeration.EM_DOOR_STATE}
+*/
+public			int					emDoorState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_DOOR_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_INFO.java
new file mode 100644
index 0000000..56d446a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * CLIENT_DownLoadMultiFile 接口参数
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 15:36
+ */
+public class NET_DOWNLOADFILE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 文件ID, 由用户自己分配
+     */
+    public int dwFileID;
+    /**
+     * 查询到的文件大小
+     */
+    public int nFileSize;
+    /**
+     * 查询到的文件路径
+     */
+    public byte[] szSourceFilePath = new byte[MAX_PATH];
+    /**
+     * 文件保存路径
+     */
+    public byte[] szSavedFileName = new byte[MAX_PATH];
+
+    public NET_DOWNLOADFILE_INFO() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java
new file mode 100644
index 0000000..b455914
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOADFILE_OPTIONS_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 文件方式下载选项
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 16:09
+ */
+public class NET_DOWNLOADFILE_OPTIONS_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 预留字段
+     */
+    public byte[] byReserved = new byte[508];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java
new file mode 100644
index 0000000..2e337e3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DOWNLOAD_CONDITION_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/12/28 15:58
+ */
+public class NET_DOWNLOAD_CONDITION_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 条件ID, 由用户自己分配
+     */
+    public int dwConditionID;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * {link EM_DOWNLOAD_TIME_TYPE} 时间类型
+     */
+    public int emTimeType;
+    /**
+     * {link EM_DOWNLOAD_DATA_TYPE} 数据类型
+     */
+    public int emDataType;
+    /**
+     * 文件保存路径
+     */
+    public byte[] szSavedFileName = new byte[MAX_PATH];
+
+    public NET_DOWNLOAD_CONDITION_INFO() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOITEM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOITEM.java
new file mode 100644
index 0000000..44e1ef7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOITEM.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description OSD信息
+ * @date 2022/06/17 11:14:35
+ */
+public class NET_DVR_VIDEOITEM extends NetSDKLib.SdkStructure {
+	/**
+	 * OSD叠加的位置和背景色
+	 */
+	public NET_DVR_VIDEO_WIDGET StOSD_POS = new NET_DVR_VIDEO_WIDGET();
+	/**
+	 * OSD叠加的名称
+	 */
+	public byte[] SzOSD_Name = new byte[64];
+
+	public NET_DVR_VIDEOITEM() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java
new file mode 100644
index 0000000..0dd3096
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEOOSD_CFG.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 每个通道的OSD信息
+ * @date 2022/06/17 11:09:14
+ */
+public class NET_DVR_VIDEOOSD_CFG extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 每个通道的OSD信息
+	 */
+	public NET_DVR_VIDEOITEM[] StOSDTitleOpt = new NET_DVR_VIDEOITEM[8];
+	/**
+	 * 保留
+	 */
+	public byte[] bReserved = new byte[16];
+
+	public NET_DVR_VIDEOOSD_CFG() {
+		for (int i = 0; i < StOSDTitleOpt.length; i++) {
+			StOSDTitleOpt[i] = new NET_DVR_VIDEOITEM();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java
new file mode 100644
index 0000000..02f0478
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_DVR_VIDEO_WIDGET.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 视频OSD叠加配置
+ * @date 2022/06/17 11:14:34
+ */
+public class NET_DVR_VIDEO_WIDGET extends NetSDKLib.SdkStructure {
+	/**
+	 * 物件的前景;按字节表示,分别为红、绿、蓝和透明度
+	 */
+	public int rgbaFrontground;
+	/**
+	 * 物件的背景;按字节表示,分别为红、绿、蓝和透明度
+	 */
+	public int rgbaBackground;
+	/**
+	 * 位置,物件边距与整长的比例*8191
+	 */
+	public RECT rcRelativePos = new RECT();
+	/**
+	 * 预览叠加使能
+	 */
+	public int bPreviewBlend;
+	/**
+	 * 编码叠加使能
+	 */
+	public int bEncodeBlend;
+	/**
+	 * 保留
+	 */
+	public byte[] bReserved = new byte[4];
+
+	public NET_DVR_VIDEO_WIDGET() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ECK_PANEL_CONTENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ECK_PANEL_CONTENT.java
new file mode 100644
index 0000000..0f32c81
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ECK_PANEL_CONTENT.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 显示内容
+ * @origin autoTool
+ * @date 2023/06/27 16:54:41
+ */
+public class NET_ECK_PANEL_CONTENT extends NetSDKLib.SdkStructure {
+	/**
+	 * 显示内容的类型,必选 {@link com.netsdk.lib.enumeration.EM_NET_ECK_PANEL_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 是否加粗,必选 {@link com.netsdk.lib.enumeration.EM_NET_ECK_PANEL_ISBOLD}
+	 */
+	public int emBold;
+	/**
+	 * 显示颜色,必选 {@link com.netsdk.lib.enumeration.EM_NET_ECK_PANEL_COLOR}
+	 */
+	public int emColor;
+	/**
+	 * 箭头指向,箭头专用,可选,Type为2时有效
+	 * {@link com.netsdk.lib.enumeration.EM_NET_ECK_PANEL_DIRECTION}
+	 */
+	public int emDirection;
+	/**
+	 * 图标,图标专用,可选,Type为1时有效 {@link com.netsdk.lib.enumeration.EM_NET_ECK_PANEL_ICON}
+	 */
+	public int emIcon;
+	/**
+	 * 文本,当前只支持一个字符,限Unicode编码,字符限为:数字、字母、空格(不支持汉字),可选,Type为0时有效
+	 */
+	public short nText;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[2]; 
+	/**
+	 * 是否使用szIcon字段下发
+	 */
+	public int bUserIcon; 
+	/**
+	 * 图标,图标专用 Type为1时有效
+	 */
+	public byte[] szIcon = new byte[16];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[1000];
+
+	public NET_ECK_PANEL_CONTENT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java
new file mode 100644
index 0000000..9c6d397
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 定期通行人数清除功能配置
+ * @date 2022/5/27 9:51
+ */
+public class NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO extends NetSDKLib.SdkStructure{
+    /**
+     * 结构体大小
+     */
+    public int 									dwSize;
+    /**
+     * 是否开启定期通行人数清除功能使能
+     */
+   public int                                    bEnable;
+    /**
+     * 定期人数清除周期 {@link com.netsdk.lib.enumeration.EM_USER_PASS_DATA_COUNT_CLEAR_PERIOD}
+     */
+    public int    emPeriod;
+
+    public NET_EM_CFG_USER_PASS_DATA_COUNT_CLEAR_INFO(){
+    this.dwSize=this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java
new file mode 100644
index 0000000..7bb3cfe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_COMPRESSION_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/4 14:24
+ */
+public class NET_ENCODE_AUDIO_COMPRESSION_INFO extends NetSDKLib.SdkStructure {
+
+    public int						dwSize;
+    public int						bAudioEnable;			// 音频使能
+    /** 参考{@link com.netsdk.lib.enumeration.NET_EM_FORMAT_TYPE}*/
+    public int emFormatType;			// 码流类型,设置和获取时都需要设置值
+
+    /** 参考{@link NetSDKLib.NET_EM_AUDIO_FORMAT} */
+    public   int emCompression;			// 音频压缩模式
+
+    public NET_ENCODE_AUDIO_COMPRESSION_INFO( ) {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java
new file mode 100644
index 0000000..be02a04
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_AUDIO_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/4 9:46
+ */
+public class NET_ENCODE_AUDIO_INFO extends NetSDKLib.SdkStructure{
+  public   int						dwSize;
+    /**  参考{@link com.netsdk.lib.enumeration.NET_EM_FORMAT_TYPE}*/
+  public   int      emFormatType;			// 码流类型,设置和获取时都需要设置值
+  public   int							nDepth;					// 音频采样深度
+  public   int							nFrequency;				// 音频采样频率
+  public   int							nMode;					// 编码码率,不同编码类型定义不同:
+                                                       /* "AMR"编码码率
+                                                            0: 4.75kbps,
+                                                            1: 5.15 kbps,
+                                                            2: 5.9 kbps,
+                                                            3: 6.7 kbps,
+                                                            4: 7.4 kbps,
+                                                            5: 7.95 kbps,
+                                                            6: 10.2 kbps,
+                                                            7: 12.2 kbps,
+                                                        G726编码码率
+                                                            0: 40kbps(默认)
+                                                            1: 16kbps
+                                                            2: 24kbps
+                                                            3: 32kbps
+                                                        其他: 暂无定义*/
+
+  public   int							nFrameType;				// 音频打包模式, 0-DHAV, 1-PS
+  public int							nPacketPeriod;			// 音频打包周期, ms
+
+    public NET_ENCODE_AUDIO_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java
new file mode 100644
index 0000000..7f57c36
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ENCODE_VIDEO_INFO.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_FORMAT_TYPE;
+import com.netsdk.lib.enumeration.NET_EM_IMAGE_QUALITY;
+import com.netsdk.lib.enumeration.NET_EM_VIDEO_COMPRESSION;
+
+/**
+ * 主(辅)码流视频格式(f6/f5/bin)
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 22:08
+ */
+public class NET_ENCODE_VIDEO_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 码流类型枚举值,设置和获取时都需要设置值 {@link NET_EM_FORMAT_TYPE}
+     */
+    public int emFormatType;
+    /**
+     * 视频使能
+     */
+    public int bVideoEnable;
+    /**
+     * 视频压缩格式 枚举值 {@link NET_EM_VIDEO_COMPRESSION}
+     */
+    public int emCompression;
+    /**
+     * 视频宽度
+     */
+    public int nWidth;
+    /**
+     * 视频高度
+     */
+    public int nHeight;
+    /**
+     * 码流控制模式 枚举值 {@link NetSDKLib.NET_EM_BITRATE_CONTROL}
+     */
+    public int emBitRateControl;
+    /**
+     * 视频码流(kbps)
+     */
+    public int nBitRate;
+    /**
+     * 视频帧率
+     */
+    public float nFrameRate;
+    /**
+     * I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。
+     */
+    public int nIFrameInterval;
+    /**
+     * 图像质量 枚举值 {@link NET_EM_IMAGE_QUALITY}
+     */
+    public int emImageQuality;
+
+    public NET_ENCODE_VIDEO_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java
new file mode 100644
index 0000000..aabfc84
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EPIDEMIC_AREA_EXPERIENCE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 疫区经历信息
+ */
+public class NET_EPIDEMIC_AREA_EXPERIENCE extends NetSDKLib.SdkStructure {
+    /**
+     * 疫区地址
+     */
+    public byte[]									szAddress=new byte[128];
+    /**
+     * 在疫区时间
+     */
+    public NET_TIME								    stuTime;
+    /**
+     * 预留字段
+     */
+    public byte[]									byReserved=new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_AREAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_AREAR_INFO.java
new file mode 100644
index 0000000..0163ff9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_AREAR_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/7/19 11:37
+ */
+public class NET_EVENT_AREAR_INFO extends NetSDKLib.SdkStructure{
+   public byte[]					szName=new byte[128];	// 所属区域名称
+   public 	int 					nIndex;			// 所属区域编号
+   public byte[]					szRsd=new byte[64];     // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_GPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_GPS_INFO.java
new file mode 100644
index 0000000..89780ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_GPS_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  触发事件时物体的GPS信息 
+* @date 2022/05/30 14:16:15
+*/
+public class NET_EVENT_GPS_INFO extends NetSDKLib.SdkStructure {
+/** 
+经度,单位:度,正为东经,负为西经,取值范围[-180,180]
+*/
+public			double					dLongitude;
+/** 
+纬度,单位:度,正为北纬,负为南纬,取值范围[-90,90]
+*/
+public			double					dLatitude;
+/** 
+预留字节
+*/
+public			byte[]					bReserved=new byte[24];
+
+public			NET_EVENT_GPS_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java
new file mode 100644
index 0000000..4780a3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_HANDLER_VOICE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  联动语音配置 
+* @date 2022/12/01 16:27:09
+*/
+public class NET_EVENT_HANDLER_VOICE extends NetSDKLib.SdkStructure {
+/** 
+联动语音文件绝对路径,为空播放系统默认报警联动音
+*/
+public			byte[]					szAudioFileName=new byte[256];
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_EVENT_HANDLER_VOICE(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_INFO.java
new file mode 100644
index 0000000..4454147
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421557
+ * @description 事件抠图信息
+ * @origin autoTool
+ * @date 2023/10/23 11:00:18
+ */
+public class NET_EVENT_IMAGE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 图片长度
+     */
+    public int nImageLength;
+    /**
+     * / 图片路径
+     */
+    public byte[] szImagePath = new byte[128];
+    /**
+     * / 保留字段
+     */
+    public byte[] bReserved = new byte[256];
+
+    public NET_EVENT_IMAGE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java
new file mode 100644
index 0000000..bd3b79e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_IMAGE_OFFSET_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件图片偏移信息
+ * @date 2022/12/19 11:30:58
+ */
+public class NET_EVENT_IMAGE_OFFSET_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 偏移
+	 */
+	public int nOffSet;
+	/**
+	 * 图片大小,单位字节
+	 */
+	public int nLength;
+	/**
+	 * 图片宽度
+	 */
+	public int nWidth;
+	/**
+	 * 图片高度
+	 */
+	public int nHeight;
+	/**
+	 * 图片路径
+	 */
+	public byte[] szPath = new byte[260];
+	/**
+	 * 在上传图片数据中的图片序号
+	 */
+	public int nIndexInData;
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[248];
+
+	public NET_EVENT_IMAGE_OFFSET_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_INFO_EXTEND.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_INFO_EXTEND.java
new file mode 100644
index 0000000..bea84da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_INFO_EXTEND.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件公共字段扩展结构体: 该结构体仅用于 普通报警事件类型(不带图报警事件类型) 和 智能报警事件类型(带图报警事件类型)
+ * 的公共字段扩展使用
+ * @date 2022/07/22 09:37:13
+ */
+public class NET_EVENT_INFO_EXTEND extends NetSDKLib.SdkStructure {
+    /**
+     * RealUTC 是否有效,bRealUTC 为 TRUE 时,用 stuRealUTC,否则 stuRealUTC 字段无效(用原事件结构体中的 事件发生时间/事件触发时间(UTC) 字段)
+     */
+    public int bRealUTC;
+    /**
+     * 仅用于字节对齐
+     */
+    public byte[] byReserved = new byte[4];
+    /**
+     * 事件发生的时间(标准UTC时间(不带时区夏令时偏差)), 由于事件的UTC时间在产品线之间使用的差异性, 故增加RealUTC作为标准UTC时间, 平台在收到事件解析首优先级是RealUTC, 其次是UTC.
+     */
+    public NET_TIME_EX stuRealUTC = new NET_TIME_EX();
+    /**
+     * 事件类型是否有效
+     */
+    public int bIsEventsTypeValid;
+    /**
+     * 事件类型, bIsEventsTypeValid为TRUE时有效, 0:正常抓图事件, 1:邮件联动抓图事件(图片通过第二路抓图码流上来,和正常抓图的图片可以不一样)
+     */
+    public int szEventsType;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1012];
+
+    public NET_EVENT_INFO_EXTEND() {
+    }
+
+    @Override
+    public String toString() {
+        return "NET_EVENT_INFO_EXTEND{" +
+                "bRealUTC=" + bRealUTC +
+                ", stuRealUTC=" + stuRealUTC +
+                ", bIsEventsTypeValid=" + bIsEventsTypeValid +
+                ", szEventsType=" + szEventsType +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_RADAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_RADAR_INFO.java
new file mode 100644
index 0000000..73e70d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_RADAR_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  物体在雷达坐标系中的信息 
+* @date 2022/05/30 14:16:15
+*/
+public class NET_EVENT_RADAR_INFO extends NetSDKLib.SdkStructure {
+/** 
+X轴坐标(横向距离),单位:米
+*/
+public			float					fCoordinateX;
+/** 
+Y轴坐标(纵向距离),单位:米
+*/
+public			float					fCoordinateY;
+/** 
+预留字节
+*/
+public			byte[]					bReserved=new byte[24];
+
+public			NET_EVENT_RADAR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java
new file mode 100644
index 0000000..c2344eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO.java
@@ -0,0 +1,102 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 事件类型 EVENT_IVS_TRAFFIC_OCCUPYING_THEPATH (占道事件)对应的数据块描述信息
+ * @date 2022/10/21 09:31:02
+ */
+public class NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 0:脉冲,1:开始, 2:停止
+	 */
+	public int nAction;
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 智能事件所属大类
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * GroupID事件组ID,同一物体抓拍过程内GroupID相同
+	 */
+	public int nGroupID;
+	/**
+	 * CountInGroup一个事件组内的抓拍张数
+	 */
+	public int nCountInGroup;
+	/**
+	 * IndexInGroup一个事件组内的抓拍序号,从1开始
+	 */
+	public int nIndexInGroup;
+	/**
+	 * 事件时间毫秒数
+	 */
+	public int nUTCMS;
+	/**
+	 * 相对事件时间戳,(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 事件发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 智能事件规则编号
+	 */
+	public int nRuleID;
+	/**
+	 * 对应车道号
+	 */
+	public int nLane;
+	/**
+	 * 表示抓拍序号,如3,2,1,1表示抓拍结束,0表示异常结束
+	 */
+	public int nSequence;
+	/**
+	 * 车牌信息
+	 */
+	public NetSDKLib.NET_MSG_OBJECT stuObject = new NetSDKLib.NET_MSG_OBJECT();
+	/**
+	 * 车身信息
+	 */
+	public NetSDKLib.NET_MSG_OBJECT stuVehicle = new NetSDKLib.NET_MSG_OBJECT();
+	/**
+	 * 交通车辆信息
+	 */
+	public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stuTrafficCar = new DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO();
+	/**
+	 * 公共信息
+	 */
+	public NetSDKLib.EVENT_COMM_INFO stuCommInfo = new NetSDKLib.EVENT_COMM_INFO();
+	/**
+	 * 事件对应文件信息
+	 */
+	public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo = new NetSDKLib.NET_EVENT_FILE_INFO();
+	/**
+	 * 抓图标志(按位),具体见NET_RESERVED_COMMON
+	 */
+	public int dwSnapFlagMask;
+	/**
+	 * 车速,单位km/h
+	 */
+	public int nSpeed;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[1020];
+
+	public NET_EVENT_TRAFFIC_OCCUPYING_THEPATH_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java
new file mode 100644
index 0000000..7a35a3e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXAM_RECORDING_PLAN_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  考试计划 
+* @date 2022/05/16 20:41:47
+*/
+public class NET_EXAM_RECORDING_PLAN_INFO extends NetSDKLib.SdkStructure {
+/** 
+考生姓名,采用UTF8编码
+*/
+public			byte[]					szName=new byte[64];
+/** 
+考号
+*/
+public			byte[]					szNumber=new byte[64];
+/** 
+摄像头IP个数
+*/
+public			int					nCameraIPNum;
+/** 
+摄像头IP数组
+*/
+public			byte[]					szCameraIP=new byte[8*32];
+/** 
+开始时间
+*/
+public NetSDKLib.NET_TIME stuStartTime=new NetSDKLib.NET_TIME();
+/** 
+结束时间
+*/
+public NetSDKLib.NET_TIME stuEndTime=new NetSDKLib.NET_TIME();
+/** 
+保留字节
+*/
+public			byte[]					szResvered=new byte[256];
+
+public NET_EXAM_RECORDING_PLAN_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXTRA_PLATES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXTRA_PLATES.java
new file mode 100644
index 0000000..970076b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_EXTRA_PLATES.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  辅车牌信息 
+* @date 2022/05/30 14:16:16
+*/
+public class NET_EXTRA_PLATES extends NetSDKLib.SdkStructure {
+/** 
+车牌图片在二进制数据内偏移,单位字节
+*/
+public			int					nOffset;
+/** 
+车牌图片长度,单位字节
+*/
+public			int					nLength;
+/** 
+辅车牌号码,UTF8格式
+*/
+public			byte[]					szText=new byte[64];
+/** 
+车牌类型 {@link com.netsdk.lib.enumeration.EM_NET_PLATE_TYPE}
+*/
+public			int					emCategory;
+/** 
+车牌颜色 {@link com.netsdk.lib.enumeration.EM_NET_PLATE_COLOR_TYPE}
+*/
+public			int					emColor;
+/** 
+辅车牌的包围盒,坐标已算上黑边高度车牌矩形框,绝对坐标,即真正的像素点坐标
+*/
+public NET_RECT stuArea=new NET_RECT();
+/** 
+预留字节
+*/
+public			byte[]					bReserved=new byte[32];
+
+public			NET_EXTRA_PLATES(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEBOXCOLOR_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEBOXCOLOR_CAPS.java
new file mode 100644
index 0000000..4226a34
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEBOXCOLOR_CAPS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 目标检测框颜色
+ * @origin autoTool
+ * @date 2023/07/31 09:25:34
+ */
+public class NET_FACEBOXCOLOR_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持目标检测框颜色上报
+	 */
+	public int bSupport;
+	/**
+	 * 默认颜色
+	 */
+	public NET_COLOR_RGBA stuDefaultColor = new NET_COLOR_RGBA();
+	/**
+	 * 保留
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public NET_FACEBOXCOLOR_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java
new file mode 100644
index 0000000..986654e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACECOMPARISON_PTZ_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 人脸比对事件触发对应球机信息
+ * @date 2021/2/22
+ */
+public class NET_FACECOMPARISON_PTZ_INFO extends NetSDKLib.SdkStructure {
+  /** 球机抓拍到人脸时预置点名称 */
+  public byte[] szPresetName = new byte[64];
+  /** 球机抓拍到人脸时预置点编号 */
+  public int dwPresetNumber;
+  /** 字节对齐 */
+  public byte[] byReserved1 = new byte[4];
+  /** 保留字节 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java
new file mode 100644
index 0000000..7b157d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACEDETECT_IMAGE_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 目标检测记录大图信息
+ * @date 2021/2/22
+ */
+public class NET_FACEDETECT_IMAGE_INFO extends NetSDKLib.SdkStructure {
+  /** 文件大小 */
+  public int nLength;
+  /** 文件路径 */
+  public byte[] szFilePath = new byte[260];
+  /** 保留字段 */
+  public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java
new file mode 100644
index 0000000..9dcc2b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACERECOGNITION_PERSON_INFOEX2.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 目标信息,包括以图搜图的图片数据和属性等
+ * @date 2022/11/21 17:53:18
+ */
+public class NET_FACERECOGNITION_PERSON_INFOEX2 extends NetSDKLib.SdkStructure {
+    /**
+     * 人员信息查询条件字段stPersonInfoEx是否有效, 并使用人员信息扩展结构体
+     */
+    public int bPersonExEnable;
+    /**
+     * 人员信息扩展
+     */
+    public NetSDKLib.FACERECOGNITION_PERSON_INFOEX stPersonInfoEx = new NetSDKLib.FACERECOGNITION_PERSON_INFOEX();
+    /**
+     * 目标图片数据信息的个数, 最大值为48
+     */
+    public int nFacePicNumEx;
+    /**
+     * 目标图片数据信息
+     */
+    public NET_FACE_PIC_INFO[] stuFacePicInfoEx = new NET_FACE_PIC_INFO[48];
+    /**
+     * 目标区域信息的个数, 最大值为48
+     */
+    public int nBoundingBoxNum;
+    /**
+     * 目标区域信息, 若字段不存在或均为0则表示为全图区域, 若有该字段则与stuFacePicInfoEx[48]通过数组下标匹配
+     */
+    public NET_RECT[] stuBoundingBox = new NET_RECT[48];
+    /**
+     * 车辆以图搜图时可选择的属性过滤条件的个数, 最大值为48
+     */
+    public int nTrafficCarAttributeNum;
+    /**
+     * 车辆以图搜图时可选择的属性过滤条件, 若有该字段则与stuFacePicInfoEx[48]通过数组下标匹配
+     */
+    public NET_TRAFFIC_CAR_ATTRIBUTE_INFO[] stuTrafficCarAttribute = new NET_TRAFFIC_CAR_ATTRIBUTE_INFO[48];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_FACERECOGNITION_PERSON_INFOEX2() {
+        for (int i = 0; i < stuFacePicInfoEx.length; i++) {
+            stuFacePicInfoEx[i] = new NET_FACE_PIC_INFO();
+        }
+        for (int i = 0; i < stuBoundingBox.length; i++) {
+            stuBoundingBox[i] = new NET_RECT();
+        }
+        for (int i = 0; i < stuTrafficCarAttribute.length; i++) {
+            stuTrafficCarAttribute[i] = new NET_TRAFFIC_CAR_ATTRIBUTE_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java
new file mode 100644
index 0000000..4d7b288
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_FEATURE_VECTOR_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 斜视状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class NET_FACE_FEATURE_VECTOR_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  人脸特征值在二进制数据中的偏移, 单位:字节
+     */
+    public int					nOffset;
+    /**
+     *  人脸特征值数据长度, 单位:字节
+     */
+    public int					nLength;
+    /**
+     *  用于标识特征值是否加密
+     */
+    public int					bFeatureEnc;
+    /**
+     *  保留字节
+     */
+    public byte					byReserved[] = new byte[28];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java
new file mode 100644
index 0000000..27c6a37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_ORIGINAL_SIZE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  算法人脸分析时的实际人脸图片尺寸 
+* @date 2022/09/28 10:26:44
+*/
+public class NET_FACE_ORIGINAL_SIZE extends NetSDKLib.SdkStructure {
+/** 
+人脸图片宽度
+*/
+public			int					nWidth;
+/** 
+人脸图片高
+*/
+public			int					nHeight;
+
+public NET_FACE_ORIGINAL_SIZE(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_PIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_PIC_INFO.java
new file mode 100644
index 0000000..9be49fa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FACE_PIC_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * className:NET_FACE_PIC_INFO
+ * description: 人脸图片信息
+ * author:251589
+ * createTime:2020/12/28 11:14
+ *
+ * @version v1.0
+ */
+public class NET_FACE_PIC_INFO extends NetSDKLib.SdkStructure {
+    public int    dwOffSet;    // 文件在二进制数据块中的偏移位置, 单位:字节
+    public int    dwFileLenth;    // 文件大小, 单位:字节
+    public int    dwWidth;    // 图片宽度, 单位:像素
+    public int    dwHeight;    // 图片高度, 单位:像素
+    public int    bIsDetected;    // 图片是否算法检测出来的检测过的提交识别服务器时,
+    public int    nFilePathLen;    // 文件路径长度 既pszFilePath 的大小
+    public Pointer pszFilePath;    // 文件路径, 由用户申请空间, 作为输入条件时不需要
+    public byte[]    szPictureID = new byte[32];    // 图片ID, 针对一人多人脸的情况, 用于区分不同人脸
+    public int    emFeatureState;    // 图片建模状态
+    public int    emFeatureErrCode;    // 建模失败原因
+    public int    emPicOperate;    // 图片操作类型
+    public byte[]    bReserved = new byte[20];    // 预留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_INFO.java
new file mode 100644
index 0000000..09d7c03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_DEVICE_NAME_LEN;
+
+/**
+ * className:NET_FAN_INFO
+ * description:风扇信息
+ * author:251589
+ * createTime:2021/2/25 13:40
+ *
+ * @version v1.0
+ */
+
+public class NET_FAN_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  名称
+     */
+    public byte[] szName = new byte[NET_DEVICE_NAME_LEN];
+
+    /**
+     *  速度
+     */
+    public int nSpeed;
+
+    public NET_FAN_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_STATUS.java
new file mode 100644
index 0000000..df9098f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FAN_STATUS.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_FAN_NUM;
+
+/**
+ * className:NET_FAN_STATUS
+ * description:风扇状态
+ * author:251589
+ * createTime:2021/2/25 14:05
+ *
+ * @version v1.0
+ */
+
+public class NET_FAN_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  查询是否成功
+     */
+    public int bEnable;
+
+    /**
+     *  风扇数量
+     */
+    public int nCount;
+
+    /**
+     *  风扇状态
+     */
+    public NET_FAN_INFO[] stuFans = (NET_FAN_INFO[]) new NET_FAN_INFO().toArray(NET_MAX_FAN_NUM);
+    public NET_FAN_STATUS(){
+        this.dwSize = this.size();
+        for (int i = 0; i < stuFans.length; i++) {
+        	stuFans[i] = new NET_FAN_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FFCPERIOD_RANGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FFCPERIOD_RANGE.java
new file mode 100644
index 0000000..2b89e0c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FFCPERIOD_RANGE.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 平场自动校正周期范围
+ * @date 2021/2/22
+ */
+public class NET_FFCPERIOD_RANGE extends NetSDKLib.SdkStructure {
+  /** 最大值(NTSC制式) */
+  public int nMaxN;
+  /** 最大值(PAL制式) */
+  public int nMaxP;
+  /** 最小值 */
+  public int nMin;
+  /** 步长 */
+  public int nStep;
+  /** 保留字节 */
+  public byte[] reserved = new byte[16];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILCKER_LIGHTING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILCKER_LIGHTING.java
new file mode 100644
index 0000000..4b1e91d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILCKER_LIGHTING.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光闪烁相关信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:53
+ */
+public class NET_FILCKER_LIGHTING extends NetSDKLib.SdkStructure {
+    /**
+     * /是否支持灯光闪烁
+     */
+    public int bSupported;
+    /**
+     * /支持灯光联动能力集
+     */
+    public NET_LINKING_ABILITY stuAbility = new NET_LINKING_ABILITY();
+    /**
+     * /闪烁灯光类型
+     */
+    public int[] anLightType = new int[3];
+    /**
+     * /闪烁灯光数量
+     */
+    public int nLightTypeLen;
+    /**
+     * /闪烁间隔时间范围
+     */
+    public int[] anFilckerIntevalTime = new int[2];
+    /**
+     * /闪烁可配置次数
+     */
+    public int[] anFilckerTimes = new int[2];
+    /**
+     * /保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_FILCKER_LIGHTING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILE_PROCESS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILE_PROCESS_INFO.java
new file mode 100644
index 0000000..62900ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FILE_PROCESS_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 图片与智能事件信息
+ * @date 2021/12/28
+ */
+public class NET_FILE_PROCESS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 图片信息数组
+	 */
+	public NET_IMAGE_INFO_EX2[] stuImageInfo = (NET_IMAGE_INFO_EX2[]) new NET_IMAGE_INFO_EX2().toArray(32);
+	/**
+	 * 图片信息个数
+	 */
+	public int nImageInfoNum;
+	/**
+	 * 违章关联的多个视频信息个数
+	 */
+	public int nRelatingVideoInfoNum;
+
+	/**
+	 * 违章关联的多个视频信息数组,最多支持16个视频
+	 */
+	public NET_RELATING_VIDEO_INFO[] stuRelatingVideoInfo = new NET_RELATING_VIDEO_INFO[16];
+
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_FILE_PROCESS_INFO() {
+		for (int i = 0; i < stuImageInfo.length; i++) {
+			stuImageInfo[i] = new NET_IMAGE_INFO_EX2();
+		}
+		for (int i = 0; i < stuRelatingVideoInfo.length; i++) {
+			stuRelatingVideoInfo[i] = new NET_RELATING_VIDEO_INFO();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java
new file mode 100644
index 0000000..274ec94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_AUTOARM.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  自动布撤防 
+* @date 2022/08/10 13:54:51
+*/
+public class NET_FINANCIAL_CABINET_AUTOARM extends NetSDKLib.SdkStructure {
+/** 
+使能
+*/
+public			int					bEnable;
+/** 
+撤防开始时间(自动布防结束时间)
+*/
+public			byte[]					szDisarmStartTime=new byte[16];
+/** 
+撤防结束时间(自动布防开始时间)
+*/
+public			byte[]					szDisarmEndTime=new byte[16];
+/** 
+星期天数
+*/
+public			int					nWeekDayNum;
+/** 
+星期 0:周日,1:周一,…,6:周六
+*/
+public			int[]					nWeekDay=new int[7];
+/** 
+预留字节
+*/
+public			byte[]					szReserverd=new byte[252];
+
+public			NET_FINANCIAL_CABINET_AUTOARM(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java
new file mode 100644
index 0000000..71650e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_MESSAGE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  短信推送 
+* @date 2022/08/10 13:54:51
+*/
+public class NET_FINANCIAL_CABINET_MESSAGE extends NetSDKLib.SdkStructure {
+/** 
+使能
+*/
+public			int					bEnable;
+/** 
+推送手机号个数
+*/
+public			int					nPhoneNumberNum;
+/** 
+推送手机号
+*/
+public			ByteSize16[]					szPhoneNumber=new ByteSize16[8];
+/** 
+预留字节
+*/
+public			byte[]					szReserverd=new byte[256];
+
+public			NET_FINANCIAL_CABINET_MESSAGE(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java
new file mode 100644
index 0000000..e3320d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_VAULTDOOR.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  金库门设置 
+* @date 2022/08/10 13:54:51
+*/
+public class NET_FINANCIAL_CABINET_VAULTDOOR extends NetSDKLib.SdkStructure {
+/** 
+金库门开锁时需要开锁的动态密码锁数量
+*/
+public			int					nDynamicPasswordLockNum;
+/** 
+金库门开锁时需要开锁的电控锁数量
+*/
+public			int					nElectronicLockNum;
+/** 
+机械锁数量
+*/
+public			int					nMechanicalLockNum;
+/** 
+总开锁数量
+*/
+public			int					nTotalLockNum;
+/** 
+闭锁时间, 单位秒
+*/
+public			int					nCloseTime;
+/** 
+预留字节
+*/
+public			byte[]					szReserverd=new byte[252];
+
+public			NET_FINANCIAL_CABINET_VAULTDOOR(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java
new file mode 100644
index 0000000..bea9268
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABINET_WORKTIME.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  排班时间 
+* @date 2022/08/10 13:54:51
+*/
+public class NET_FINANCIAL_CABINET_WORKTIME extends NetSDKLib.SdkStructure {
+/** 
+使能 不使能则不校验排班时间
+*/
+public			int					bEnable;
+/** 
+排班起始时间
+*/
+public			byte[]					szStartTime=new byte[16];
+/** 
+排班结束时间
+*/
+public			byte[]					szEndTime=new byte[16];
+/** 
+星期天数
+*/
+public			int					nWeekDayNum;
+/** 
+星期 0:周日,1:周一,…,6:周六
+*/
+public			int[]					nWeekDay=new int[7];
+/** 
+预留字节
+*/
+public			byte[]					szReserverd=new byte[252];
+
+public			NET_FINANCIAL_CABINET_WORKTIME(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..7e72eee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  舱位信息 
+* @date 2022/08/01 14:13:48
+*/
+public class NET_FINANCIAL_CABIN_INFO extends NetSDKLib.SdkStructure {
+/** 
+舱位读取到尾箱RFID卡编号
+*/
+public			byte[]					szRFIDNo=new byte[128];
+/** 
+舱位绑定的尾箱RFID卡编号,为空时表示未绑定尾箱
+*/
+public			byte[]					szBindRFIDNo=new byte[128];
+/** 
+舱位类型,"Cash"-现金柜,"Bill"-票据柜
+*/
+public			byte[]					szType=new byte[32];
+/** 
+舱位门状态,"IsClosed"-关门,"IsOpened"-开门
+*/
+public			byte[]					szDoorState=new byte[32];
+/** 
+舱位现金金额,尾箱类型为"Cash"时有效, 单位:人民币
+*/
+public			float					fAmount;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[124];
+
+public NET_FINANCIAL_CABIN_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java
new file mode 100644
index 0000000..5481162
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIND_VEHICLE_CONDITION.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 车辆查询条件
+ * @date 2022/10/22 10:49
+ */
+public class NET_FIND_VEHICLE_CONDITION extends NetSDKLib.SdkStructure{
+    public int											nToken;						// 查询令牌
+    public 	int											nBeginNumber;			// 查询起始序号 表示从beginNumber条记录开始,取count条记录返回;0<=beginNumber<= totalCount-1
+    public 	int											nCount;						// 每次获取的条数
+    public 	byte[]									szReserved=new byte[128];			// 保留字段
+
+    @Override
+    public String toString() {
+        return "NET_FIND_VEHICLE_CONDITION{" +
+                "nToken=" + nToken +
+                ", nBeginNumber=" + nBeginNumber +
+                ", nCount=" + nCount +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINGERPRINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINGERPRINT_INFO.java
new file mode 100644
index 0000000..92c4fb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FINGERPRINT_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 信息数组信息
+ * @date 2021/2/22
+ */
+public class NET_FINGERPRINT_INFO extends NetSDKLib.SdkStructure {
+  /** 信息个数 */
+  public int nFingerNum;
+  /** 信息信息 */
+  public byte[] szFingerInfo = new byte[8 * 2048];
+  /** 保留字节 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIREPROOF_CLOTHES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIREPROOF_CLOTHES.java
new file mode 100644
index 0000000..2e6023c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIREPROOF_CLOTHES.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 防火衣相关属性状态信息
+ * @date 2022/11/01 19:47:04
+ */
+public class NET_FIREPROOF_CLOTHES extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否穿着防火衣 {@link com.netsdk.lib.enumeration.EM_FIREPROOF_CLOTHES_STATE}
+	 */
+	public int emHasFireProofClothes;
+	/**
+	 * 防火衣颜色 {@link com.netsdk.lib.enumeration.EM_CLOTHES_COLOR}
+	 */
+	public int emFireProofClothesColor;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_FIREPROOF_CLOTHES() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_CONTROL_MONITOR_FILTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_CONTROL_MONITOR_FILTER.java
new file mode 100644
index 0000000..79bb016
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_CONTROL_MONITOR_FILTER.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421557
+ * @description 烟火检测查询过滤条件
+ * @origin autoTool
+ * @date 2023/10/23 10:56:03
+ */
+public class NET_FIRE_CONTROL_MONITOR_FILTER extends NetSDKLib.SdkStructure {
+    /**
+     * / 智能分析规则,当szRule不为""时,MEDIAFILE_FIRE_CONTROL_MONITOR_PARAM 中 nEventList 无效
+     * / 通配符"*"代表任意规则、"SleepDetect"、"PlayMobilephone"、"PhoneCallDetect"
+     */
+    public byte[] szRule = new byte[64];
+    /**
+     * null
+     */
+    public byte[] byReserved = new byte[1024];
+
+    public NET_FIRE_CONTROL_MONITOR_FILTER() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java
new file mode 100644
index 0000000..7a6f180
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_POSITION_PARAM.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description IPC的Web需求,火焰定位参数
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_FIRE_DETECTION_POSITION_PARAM extends SdkStructure{
+	/**
+	 * 是否支持火焰定位 false时web页面隐藏火焰定位参数
+	 */
+	public int						bEnable;	
+	/**
+	 * 字节对齐
+	 */
+	public byte[]                        byReserved1 = new byte[4];	
+	/**
+	 * 画面中心点离X轴3/4点地面距离,单位:米
+	 */
+	public float						fAB;	
+    /**
+     * 画面X轴3/4点离底部垂直点地面距离,单位:米
+     */
+	public float						fBC;
+	/**
+	 * 画面底部3/4点点到底部中心点地面距离,单位:米
+	 */
+	public float						fCD;								
+	/**
+	 * 底部中心点到画面中心点地面距离,单位:米
+	 */
+	public float						fDA;					
+	/**
+	 * 底部中心点离相机水平点距离,单位:米
+	 */
+	public float						fOD;			
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[464];                        
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..b61190e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_DETECTION_RULE_INFO.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.NET_EM_SCENEDETECTION_TYPE;
+
+/**
+ * @description 事件类型EVENT_IVS_FIREDETECTION(火焰检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_FIRE_DETECTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;
+	/**
+	 * 字节对齐
+	 */
+	public byte[]                        byReserved1=new byte[4];	
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 最短持续时间,单位:秒 0~65535
+	 */
+	public int						nMinDuration;	
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity;            
+	/**
+	 * 火焰定位参数
+	 */
+	public NET_FIRE_DETECTION_POSITION_PARAM stuPositionParam;	
+	/**
+	 * 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理
+	 */
+	public int						nRepeatAlarmTime;	
+	/**
+	 * 场景类型
+	 * {@link NET_EM_SCENEDETECTION_TYPE}
+	 */
+	public int  emSceneType;			
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved=new byte[4096];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java
new file mode 100644
index 0000000..9003b0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_CATEGORY_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 目标区域内物体计数信息
+ * @date 2021/12/27
+ */
+public class NET_FIRE_EXTINGUISHER_CATEGORY_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  目标物体子类型,参考{ @link EM_FIRE_EXTINGUISHER_CATEGORY_TYPE}
+     */
+    public int emCategory;
+
+    /**
+     *  目标物体子类型对应计数
+     */
+    public int nNum;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java
new file mode 100644
index 0000000..1b7b1c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRE_EXTINGUISHER_OBJECT_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 目标区域内物体计数信息
+ * @date 2021/12/27
+ */
+public class NET_FIRE_EXTINGUISHER_OBJECT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  区域内目标总数
+     */
+    public int nAlertNum;
+
+    /**
+     *  区域内目标物体子类型信息个数
+     */
+    public int nCategoryInfoNum;
+
+    /**
+     *  区域内目标物体子类型信息
+     */
+    public NET_FIRE_EXTINGUISHER_CATEGORY_INFO[] stuCategoryInfo = (NET_FIRE_EXTINGUISHER_CATEGORY_INFO[]) new NET_FIRE_EXTINGUISHER_CATEGORY_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRING_GPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRING_GPS_INFO.java
new file mode 100644
index 0000000..3fb53a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FIRING_GPS_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 着火点的GPS坐标
+ * @date 2021/2/22
+ */
+public class NET_FIRING_GPS_INFO extends NetSDKLib.SdkStructure {
+  /** 经度(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274 */
+  public int dwLongitude;
+  /** 纬度(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 */
+  public int dwLatidude;
+  /** 高度, 单位为米 */
+  public double dbAltitude;
+  /** 预留32字节 */
+  public byte[] szReserve = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_EX.java
new file mode 100644
index 0000000..52755fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_EX.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 楼层号,不要超过999
+ * @date 2021/2/8
+ */
+public class NET_FLOORS_EX extends NetSDKLib.SdkStructure {
+  public byte[] szFloorEx = new byte[8];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_INFO.java
new file mode 100644
index 0000000..b2cf260
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FLOORS_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 楼层号(梯控需求)
+ * @date 2021/2/8
+ */
+public class NET_FLOORS_INFO extends NetSDKLib.SdkStructure {
+  /** 有效的楼层数量再次扩展 */
+  public int nFloorNumEx2;
+  /** 楼层号(梯控需求)最多不超过256个,楼层号不超过999 */
+  public NET_FLOORS_EX[] szFloorEx = (NET_FLOORS_EX[]) new NET_FLOORS_EX().toArray(256);
+  /** 保留字节 */
+  public byte[] byReserved = new byte[512];
+
+  public NET_FLOORS_INFO(){
+      for(int i=0;i<szFloorEx.length;i++){
+        szFloorEx[i]=new NET_FLOORS_EX();
+      }
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..643a713
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOG_DETECTION_RULE_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+/**
+ * @description 事件类型EVENT_IVS_FOG_DETECTION(起雾检测) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+
+import com.netsdk.lib.NetSDKLib.EM_FOG_LEVEL;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_FOG_DETECTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 报警阈值。当雾情达到什么程度时,进行报警
+	 * {@link EM_FOG_LEVEL}
+	 */
+	public	int				emAlarmFogLevel;	
+	/**
+	 * 报警时间间隔,单位秒,取值范围为[60,86400]
+	 */
+	public	int						nAlarmInterval;	
+	/**
+	 * 是否上报实时数据
+	 */
+	public	int						bRealDataUpload;	
+	/**
+	 * 实时数据上报间隔,单位秒,取值范围为[60,86400]
+	 */
+	public	int						nRealUpdateInterval;	
+	/**
+	 *  保留字节
+	 */
+	public	byte[]                        byReserved=new byte[4096];                      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java
new file mode 100644
index 0000000..21d89bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_CUSTOM_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 跟随车辆报警自定义信息
+ * @date 2021/01/13
+ */
+public class NET_FOLLOW_CAR_ALARM_CUSTOM_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * GPS信息
+	 */
+	public NetSDKLib.NET_GPS_STATUS_INFO stuGPS;
+	
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java
new file mode 100644
index 0000000..bf26455
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FOLLOW_CAR_ALARM_IMAGE_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 跟随车辆报警自定义信息
+ * @date 2021/01/13
+ */
+public class NET_FOLLOW_CAR_ALARM_IMAGE_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 同一组大小图片内GroupID相同
+	 */
+	public int nGroupID;
+	
+	/**
+	 * 图片类型,参考{ @link EM_FOLLOW_CAR_ALARM_IMAGE_TYPE}
+	 */
+	public int emImageType;
+	
+	/**
+	 * 在二进制数据块中的偏移,单位:字节
+	 */
+	public int dwoffset;
+	
+	/**
+	 * 图片大小,单位:字节
+	 */
+	public int dwLength;
+	
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java
new file mode 100644
index 0000000..63449d1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_FUEL_DISPENSER_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 从加油机获取的信息
+ * @date 2022/04/11
+ */
+public class NET_FUEL_DISPENSER_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  开始加油时间,带时区偏差的UTC时间,单位秒
+     */
+    public int nFuelingStartTime;
+
+    /**
+     *  结束加油时间,带时区偏差的UTC时间,单位秒
+     */
+    public int nFuelingEndTime;
+
+    /**
+     *  加油金额,单位分
+     */
+    public int nMoney;
+
+    /**
+     *  加油升数,单位0.01升
+     */
+    public int nLitre;
+
+    /**
+     *  加油类型,加油油号
+     */
+    public byte[] szOilType = new byte[8];
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java
new file mode 100644
index 0000000..6438d60
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_LIST_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 拥挤人群列表
+ * @date 2022/01/07
+ */
+public class NET_GETSUMMARY_CROWD_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  拥挤人群中心点坐标
+     */
+    public NetSDKLib.NET_POINT stuCenter;
+
+    /**
+     *  半径
+     */
+    public int nRadius;
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java
new file mode 100644
index 0000000..e5e5cf7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_CROWD_STAT_DATA.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测区信息
+ * @date 2022/01/07
+ */
+public class NET_GETSUMMARY_CROWD_STAT_DATA extends NetSDKLib.SdkStructure{
+    /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  检测区内总人数
+     */
+    public int nGloabalPeopleNum;
+
+    /**
+     *  检测区内区域个数
+     */
+    public int nRegionNum;
+
+    /**
+     *  区域人数统计列表
+     */
+    public NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO[] stuRegionPeopleList = (NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO[]) new NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO().toArray(16);
+    /**
+     *  全局拥挤人群报警个数
+     */
+    public int nCrowdEventNum;
+
+    /**
+     *  拥挤人群列表
+     */
+    public NET_GETSUMMARY_CROWD_LIST_INFO[] stuCrowdList = (NET_GETSUMMARY_CROWD_LIST_INFO[]) new NET_GETSUMMARY_CROWD_LIST_INFO().toArray(5);
+    /**
+     *  报警区域个数
+     */
+    public int nRegionEventNum;
+
+    /**
+     *  报警区域列表
+     */
+    public NET_GETSUMMARY_REGION_LIST_INFO[] stuRegionList = (NET_GETSUMMARY_REGION_LIST_INFO[]) new NET_GETSUMMARY_REGION_LIST_INFO().toArray(8);
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java
new file mode 100644
index 0000000..4e87bb8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 报警区域列表
+ * @date 2022/01/07
+ */
+public class NET_GETSUMMARY_REGION_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  区域ID
+     */
+    public int nRegionID;
+
+    /**
+     *  区域内人数统计值
+     */
+    public int nPeopleNum;
+
+    /**
+     *  区域坐标个数
+     */
+    public int nRegionPointNum;
+
+    /**
+     *  区域坐标
+     */
+    public NetSDKLib.NET_POINT[] stuRegionPoint = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(20);
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java
new file mode 100644
index 0000000..ea92730
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 区域人数统计列表
+ * @date 2022/01/07
+ */
+public class NET_GETSUMMARY_REGION_PEOPLE_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  区域ID
+     */
+    public int nRegionID;
+
+    /**
+     *  区域人数
+     */
+    public int nRegionPeopleNum;
+
+    /**
+     *  区域顶点个数
+     */
+    public int nRegionPointNum;
+
+    /**
+     *  区域顶点坐标
+     */
+    public NetSDKLib.NET_POINT[] stuRegionPoint = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(20);
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_ACCESSORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_ACCESSORY_INFO.java
new file mode 100644
index 0000000..54ada20
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_ACCESSORY_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  获取配件信息(对应DH_DEVSTATE_GET_ACCESSORY_INFO) 
+* @date 2022/08/31 20:25:40
+*/
+public class NET_GET_ACCESSORY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+配件序列号数组个数(当个数为0时,返回主机下所有配件状态)
+*/
+public			int					nSNNum;
+/** 
+配件序列号数组
+*/
+public			BYTE_32[]					szSN=new BYTE_32[56];
+/** 
+申请的配件个数
+*/
+public			int					nMaxInfoNum;
+/** 
+配件信息指针,由调用者分配内存,分配的大小为 nMaxAccessoryInfo*sizeof(NET_WPAN_ACCESSORY_INFO)
+*/
+public Pointer pstuInfo;
+/** 
+返回的配件数
+*/
+public			int					nInfoNum;
+
+public NET_GET_ACCESSORY_INFO(){
+
+	for(int i=0;i<szSN.length;i++){
+		szSN[i]=new BYTE_32();
+	}
+	this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_CALCINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_CALCINFO_INFO.java
new file mode 100644
index 0000000..63ddfe1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_CALCINFO_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 标定点位置信息
+ * @date 2023/05/24 10:24:51
+ */
+public class NET_GET_CALIBRATEINFO_CALCINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 标定点坐标及倍率
+	 */
+	public float[] fPosition = new float[3];
+	/**
+	 * 标定点在图像中坐标
+	 */
+	public int[] nLocation = new int[2];
+
+	public NET_GET_CALIBRATEINFO_CALCINFO_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_POINT_INFO.java
new file mode 100644
index 0000000..ed86e81
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CALIBRATEINFO_POINT_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 标定点参数信息
+ * @date 2023/05/24 10:24:51
+ */
+public class NET_GET_CALIBRATEINFO_POINT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 标定点编号
+	 */
+	public int nID;
+	/**
+	 * 标定点名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	/**
+	 * 经度
+	 */
+	public int nLongitude;
+	/**
+	 * 纬度
+	 */
+	public int nLatitude;
+	/**
+	 * 海拔
+	 */
+	public double fAltitude;
+	/**
+	 * 标定点坐标 第一维表示不同位置, 第二位表示可见光或热成像
+	 */
+	public NET_GET_CALIBRATEINFO_CALCINFO_INFO[] stuCalcInfo = new NET_GET_CALIBRATEINFO_CALCINFO_INFO[5 * 2];
+	/**
+	 * 标定点个数
+	 */
+	public int nPointNum;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved = new byte[4];
+
+	public NET_GET_CALIBRATEINFO_POINT_INFO() {
+		for (int i = 0; i < stuCalcInfo.length; i++) {
+			stuCalcInfo[i] = new NET_GET_CALIBRATEINFO_CALCINFO_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CONDITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CONDITION_INFO.java
new file mode 100644
index 0000000..f868b93
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_CONDITION_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取设备点位信息 入参
+ */
+
+public class NET_GET_CONDITION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  设备ID
+     */
+    public byte[] szDeviceID = new byte[32];
+
+    /**
+     *  是否发生ID,TRUE:发送 FALSE:不发送(如无此节点则返回该DeviceId下所有ID)
+     */
+    public int bIsSendID;
+
+    /**
+     *  相应的监控点ID号
+     */
+    public byte[] szID = new byte[256*256];
+
+    /**
+     *  下发个数
+     */
+    public int nIDNum;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[256];
+
+    public NET_GET_CONDITION_INFO(){
+
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_DEVICE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_DEVICE_INFO_EX.java
new file mode 100644
index 0000000..9243188
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GET_DEVICE_INFO_EX.java
@@ -0,0 +1,166 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 已添加设备的结果信息
+ * @date 2023/04/19 18:56:54
+ */
+public class NET_GET_DEVICE_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备ID
+	 */
+	public byte[] szDeviceID = new byte[128];
+	/**
+	 * url
+	 */
+	public byte[] szUrl = new byte[512];
+	/**
+	 * 设备序列号
+	 */
+	public byte[] szSerialNo = new byte[64];
+	/**
+	 * 设备国标编码
+	 */
+	public byte[] szGBCode = new byte[32];
+	/**
+	 * 设备所属组织编码
+	 */
+	public byte[] szOrgCode = new byte[64];
+	/**
+	 * 设备类型
+	 */
+	public byte[] szDeviceType = new byte[64];
+	/**
+	 * 设备大类
+	 */
+	public byte[] szDeviceClass = new byte[16];
+	/**
+	 * 设备mac个数
+	 */
+	public int nMacCount;
+	/**
+	 * 设备mac地址组
+	 */	
+	public BYTE_18[] szMacs = new BYTE_18[8];
+	/**
+	 * 设备软件版本号
+	 */
+	public byte[] szDevSoftVersion = new byte[128];
+	/**
+	 * 设备名称
+	 */
+	public byte[] szDeviceName = new byte[128];
+	/**
+	 * 设备详细信息
+	 */
+	public byte[] szDetail = new byte[512];
+	/**
+	 * 视频输入通道数
+	 */
+	public int nVideoInChannel;
+	/**
+	 * 视频输出通道数
+	 */
+	public int nVideoOutChannel;
+	/**
+	 * 音频输入通道数
+	 */
+	public int nAudioInChannel;
+	/**
+	 * 音频输出通道数
+	 */
+	public int nAudioOutChannel;
+	/**
+	 * 报警输入通道数
+	 */
+	public int nAlarmIn;
+	/**
+	 * 报警输出通道数
+	 */
+	public int nAlarmOut;
+	/**
+	 * 设备是否在线 0:离线 1:在线
+	 */
+	public int nOnline;
+	/**
+	 * 设备离线错误码
+	 */
+	public int nErrorCode;
+	/**
+	 * 门禁设备可控制的门的总数
+	 */
+	public int nVtoDoors;
+	/**
+	 * 是否是POE设备, 0不是, 1是POE设备
+	 */
+	public int nIsPoeDevice;
+	/**
+	 * Poe端口号, 取值范围>= 0; isPoeDevice字段为真时有效
+	 */
+	public int nPoePort;
+	/**
+	 * 是否支持目标比对
+	 */
+	public int bSupportedFR;
+	/**
+	 * 是否支持语音联动
+	 */
+	public int bControlSpeaker;
+	/**
+	 * 设备属性 {@link com.netsdk.lib.enumeration.EM_DEVICE_ATTRIBUTE}
+	 */
+	public int emDeviceAttribute;
+	/**
+	 * 是否具备统计功能
+	 */
+	public int bSupportedStatistic;
+	/**
+	 * 主协议是否存在
+	 */
+	public int bIsMainProtocolExist;
+	/**
+	 * 视图库是否使能
+	 */
+	public int bIsVideoImageEnable;
+	/**
+	 * 视图库是否在线 0:离线 1:在线
+	 */
+	public int nVideoImageOnline;
+	/**
+	 * 视图库离线错误码
+	 */
+	public int nVideoImageErrorCode;
+	/**
+	 * 视图库注册编号
+	 */
+	public byte[] szVideoImageRegID = new byte[32];
+	/**
+	 * 用户申请的通道个数
+	 */
+	public int nMaxChannelCount;
+	/**
+	 * 实际返回的通道个数
+	 */
+	public int nRetChannelCount;
+	/**
+	 * 通道信息, 由用户申请和释放内存, 申请大小为sizeof(NET_DEVICE_CHANNEL_INFO)*nMaxChannelCount,结构体参考{@link NET_DEVICE_CHANNEL_INFO}数组
+	 */
+	public Pointer pstuChannelsInfo;
+	/**
+	 * 是否支持白光灯控制
+	 */
+	public int bControlLighter;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_GET_DEVICE_INFO_EX() {
+		for (int i = 0; i < szMacs.length; i++) {
+			szMacs[0] = new BYTE_18();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLASSES_RELATED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLASSES_RELATED_INFO.java
new file mode 100644
index 0000000..2cf70bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLASSES_RELATED_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 眼镜相关属性状态信息
+ * @date 2022/11/01 19:47:17
+ */
+public class NET_GLASSES_RELATED_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 眼镜检测规则中报警类型 {@link com.netsdk.lib.enumeration.EM_GLASSES_RULE_TYPE}
+	 */
+	public int emGlassesType;
+	/**
+	 * 眼镜检测结果, 0-合规 1-不合规 2-未知
+	 */
+	public int nGlassesLegalMask;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[64];
+
+	public NET_GLASSES_RELATED_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java
new file mode 100644
index 0000000..fee8946
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GLOVE_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 手套相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_GLOVE_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有戴手套,{@link EM_WEARING_STATE}
+     */
+    public int emHasGlove;
+    /**
+     * 手套检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalGlove;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_INFO_EX.java
new file mode 100644
index 0000000..edea776
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_INFO_EX.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 事件类型EVENT_IVS_SMOKEDETECTION(烟雾报警事件)对应的数据块描述信息
+ * @date 2021/12/15
+ */
+public class NET_GPS_INFO_EX extends NetSDKLib.SdkStructure{
+	 /**
+     *  经度(单位是百万分之一度)
+     *  // 西经:0 - 180000000				实际值应为: 180*1000000 – dwLongitude
+     *  // 东经:180000000 - 360000000		实际值应为: dwLongitude – 180*1000000
+	    // 如: 300168866应为(300168866 - 180*1000000)/1000000 即东经120.168866度
+     */
+    public int nLongitude;
+
+    /**
+     *  纬度(单位是百万分之一度)
+     *  // 南纬:0 - 90000000				实际值应为: 90*1000000 – dwLatidude
+	    // 北纬:90000000 – 180000000		实际值应为: dwLatidude – 90*1000000
+	    // 如: 120186268应为 (120186268 - 90*1000000)/1000000 即北纬30. 186268度
+     */
+    public int nLatidude;
+
+    /**
+     *  高度,单位为米
+     */
+    public int nAltitude;
+
+    /**
+     *  保留字段
+     */
+    public byte[] szReserved = new byte[52];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_POSITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_POSITION.java
new file mode 100644
index 0000000..8ebf95d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_POSITION.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description GPS坐标
+ * @origin autoTool
+ * @date 2023/02/14 20:02:02
+ */
+public class NET_GPS_POSITION extends NetSDKLib.SdkStructure {
+	/**
+	 * 经度(单位是百万分之度,范围0-360度)
+	 */
+	public double dbLongitude;
+	/**
+	 * 纬度(单位是百万分之度,范围0-180度)
+	 */
+	public double dbLatitude;
+	/**
+	 * 海拔(单位:米)
+	 */
+	public double dbAltitude;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_GPS_POSITION() {
+	}
+
+	@Override
+	public String toString() {
+		return "{" + "dbLongitude=" + dbLongitude + ", dbLatitude=" + dbLatitude + ", dbAltitude=" + dbAltitude + '}';
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_STATUS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_STATUS_INFO.java
new file mode 100644
index 0000000..0fd9887
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GPS_STATUS_INFO.java
@@ -0,0 +1,114 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description GPS状态信息
+ * @origin autoTool
+ * @date 2023/09/06 15:55:03
+ */
+public class NET_GPS_STATUS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 定位时间
+     */
+    public NET_TIME revTime = new NET_TIME();
+    /**
+     * 设备序列号
+     */
+    public byte[] DvrSerial = new byte[50];
+    /**
+     * 对齐字节
+     */
+    public byte[] byRserved1 = new byte[6];
+    /**
+     * 经度(单位是百万分之度,范围0-360度)
+     */
+    public double longitude;
+    /**
+     * 纬度(单位是百万分之度,范围0-180度)
+     */
+    public double latidude;
+    /**
+     * 高度(米)
+     */
+    public double height;
+    /**
+     * 方向角(正北方向为原点,顺时针为正)
+     */
+    public double angle;
+    /**
+     * 速度(单位km/H)
+     */
+    public double speed;
+    /**
+     * 定位星数, emDateSource为 EM_DATE_SOURCE_GPS时有效
+     */
+    public short starCount;
+    /**
+     * 对齐字节
+     */
+    public byte[] byRserved2 = new byte[2];
+    /**
+     * 天线状态, emDateSource为 EM_DATE_SOURCE_GPS时有效 {@link com.netsdk.lib.enumeration.NET_THREE_STATUS_BOOL}
+     */
+
+    public int antennaState;
+    /**
+     * 定位状态  {@link com.netsdk.lib.enumeration.NET_THREE_STATUS_BOOL}
+     */
+    public int orientationState;
+    /**
+     * 工作状态(0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算
+     * emDateSource为 EM_DATE_SOURCE_GPS时有效
+     */
+    public int workStae;
+    /**
+     * 发生的报警位置个数
+     */
+    public int nAlarmCount;
+    /**
+     * 发生的报警位置,值可能多个, emDateSource为 EM_DATE_SOURCE_GPS时有效
+     */
+    public int[] nAlarmState = new int[128];
+    /**
+     * 0-实时 1-补传
+     */
+    public byte bOffline;
+    /**
+     * GPS信噪比,表示GPS信号强度,值越大,信号越强 范围:0~100,0表示不可用
+     */
+    public byte bSNR;
+    /**
+     * 对齐字节
+     */
+    public byte[] byRserved3 = new byte[2];
+    /**
+     * 数据来源 {@link com.netsdk.lib.enumeration.EM_DATE_SOURCE}
+     */
+    public int emDateSource;
+    /**
+     * 在当前工作模式下(GPS或北斗等系统)的信号强度
+     */
+    public int nSignalStrength;
+    /**
+     * 水平精度因子惯性导航时无效
+     */
+    public float fHdop;
+    /**
+     * 位置精度因子,惯性导航时无效
+     */
+    public float fPdop;
+    /**
+     * 总里程, 单位 米
+     */
+    public int nMileage;
+    /**
+     * 保留字节
+     */
+    public byte[] byRserved = new byte[96];
+
+    public NET_GPS_STATUS_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..980c3f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_GUIDE_MODULE_MEASURE_MODE_PARAM.java
@@ -0,0 +1,78 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 高德测温模块使用参数
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public class NET_GUIDE_MODULE_MEASURE_MODE_PARAM extends NetSDKLib.SdkStructure {
+
+    /**
+     *  测温区域框显示使能(在视频流界面显示测试区域框)	
+     */
+    public int					bRectEnable;
+
+    /**
+     *  允许的最远测温距离(cm)
+     */
+    public int					nMaxDistance;
+
+    /**
+     *  温度阈值(摄氏度)
+     */
+    public double					dbTempThreshold;
+
+    /**
+     *  温度矫正值(摄氏度)
+     */
+    public double					dbCorrectTemp;
+
+    /**
+     *  有效温度下限,低于此值的温度为无效温度(摄氏度)	
+     */
+    public double					dbValidTempLowerLimit;
+
+    /**
+     *  温度随机替换阈值(低于此阈值的温度会被随机替换为一个有效温度,用于兼容错误情况。阈值为0时表示此功能不开启)。
+     */
+    public double					dbTempRandReplaceThreshold;
+
+    /**
+     *  是否开启测温调试模式(在人脸框顶部显示测温数据)
+     */
+    public int					bDebugModelEnable;
+
+    /**
+     *  热成像标定模式,不同标定模式下的标定参数不一样
+     */
+    public int					emCalibrationMode;
+
+    /**
+     *  是否显示热图
+     */
+    public int					bHeatDisplayEnbale;
+
+    /**
+     *  预留字段
+     */
+    public byte[]					byReserved = new byte[1020];
+
+    @Override
+    public String toString() {
+        return "NET_GUIDE_MODULE_MEASURE_MODE_PARAM{" +
+                "bRectEnable=" + bRectEnable +
+                ", nMaxDistance=" + nMaxDistance +
+                ", dbTempThreshold=" + dbTempThreshold +
+                ", dbCorrectTemp=" + dbCorrectTemp +
+                ", dbValidTempLowerLimit=" + dbValidTempLowerLimit +
+                ", dbTempRandReplaceThreshold=" + dbTempRandReplaceThreshold +
+                ", bDebugModelEnable=" + bDebugModelEnable +
+                ", emCalibrationMode=" + emCalibrationMode +
+                ", bHeatDisplayEnbale=" + bHeatDisplayEnbale +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HEALTH_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HEALTH_CODE_INFO.java
new file mode 100644
index 0000000..c491acd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HEALTH_CODE_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_HEALTH_CODE_STATUS;
+/**
+ * 健康码信息
+ */
+public class NET_HEALTH_CODE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 证件号
+     */
+    public byte[]							        szCitizenID=new byte[32];
+    /**
+     * 证件姓名
+     */
+    public byte[]									szCitizenName=new byte[128];
+    /**
+     * 常驻地
+     */
+    public byte[]									szPermanentAddr=new byte[128];
+    /**
+     * 当前地址
+     */
+    public byte[]									szCurrentAddr=new byte[128];
+    /**
+     * 健康码状态,对应状态{@link EM_HEALTH_CODE_STATUS}
+     */
+    public int                                      emHealthCodeStatus;
+    /**
+     * 手机号
+     */
+    public byte[]									szPhoneNumber= new byte[32];
+    /**
+     * 异常原因
+     */
+    public byte[]									szAbnormalCodeReason=new byte[256];
+    /**
+     * 查询时间戳
+     */
+    public NET_TIME								    stuQueryTime;
+    /**
+     * 疫区经历(stuEpidemicAreaExperience)的个数
+     */
+    public int										nEpidemicAreaExperience;
+    /**
+     * 疫区经历
+     */
+    public NET_EPIDEMIC_AREA_EXPERIENCE[]			stuEpidemicAreaExperience=(NET_EPIDEMIC_AREA_EXPERIENCE[]) new NET_EPIDEMIC_AREA_EXPERIENCE().toArray(10);
+    /**
+     * 预留字段
+     */
+    public byte[]									byReserved=new byte[512];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java
new file mode 100644
index 0000000..29a9aeb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_NON_MOTOR_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 非机动车信息
+ * @date 2022/11/24 17:12:01
+ */
+public class NET_HISTORY_NON_MOTOR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 非机动车唯一标识符
+     */
+    public byte[] szUID = new byte[64];
+    /**
+     * 包围盒(8192坐标系)
+     */
+    public NET_RECT stuBoundingBox = new NET_RECT();
+    /**
+     * 车上人员头盔状态 0-未知 1-没有 2-有
+     */
+    public int nHelmet;
+    /**
+     * 帽子颜色
+     */
+    public byte[] szCapColor = new byte[16];
+    /**
+     * 非机动车子类型
+     */
+    public byte[] szCategory = new byte[32];
+    /**
+     * 非机动车颜色
+     */
+    public byte[] szColor = new byte[16];
+    /**
+     * 非机动车车篮  0-未知 1-否 2-有
+     */
+    public int nBasket;
+    /**
+     * 非机动车后备箱 0: 未知 1: 无后备箱 2: 非机动车自带箱 3: 非机动车自装箱 4: 非机动车自带自装箱都有
+     */
+    public int nStoragebox;
+    /**
+     * 骑车人数, 0xff表示未知
+     */
+    public int nNumOfCycling;
+    /**
+     * 非机动车图片信息
+     */
+    public SDK_PIC_INFO_EX stuImage = new SDK_PIC_INFO_EX();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_HISTORY_NON_MOTOR_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java
new file mode 100644
index 0000000..2eb8e03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HISTORY_TRAFFIC_CAR_INFO.java
@@ -0,0 +1,159 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 机动车信息
+ * @date 2022/11/24 17:12:01
+ */
+public class NET_HISTORY_TRAFFIC_CAR_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 非机动车唯一标识符
+     */
+    public byte[] szUID = new byte[64];
+    /**
+     * 包围盒(8192坐标系)
+     */
+    public NET_RECT stuBoundingBox = new NET_RECT();
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[32];
+    /**
+     * 车牌类型
+     */
+    public byte[] szPlateType = new byte[32];
+    /**
+     * 车牌颜色
+     */
+    public byte[] szPlateColor = new byte[32];
+    /**
+     * 车身颜色
+     */
+    public byte[] szVehicleColor = new byte[32];
+    /**
+     * 车辆类型
+     */
+    public byte[] szCategory = new byte[32];
+    /**
+     * 特种车辆
+     */
+    public byte[] szSpecialCar = new byte[32];
+    /**
+     * 车辆标识
+     */
+    public byte[] szVehicleSign = new byte[64];
+    /**
+     * 车辆子品牌
+     */
+    public int nSubBrand;
+    /**
+     * 车辆年款
+     */
+    public int nBrandYear;
+    /**
+     * 摆件数量
+     */
+    public int nFurnitureCount;
+    /**
+     * 挂件数量
+     */
+    public int nPendantCount;
+    /**
+     * 年检标数量
+     */
+    public int nAnnualInspectionCount;
+    /**
+     * 年检标顺序, 0: 未知  1: 乱排  2: 横排  3: 竖排
+     */
+    public int nAnnualInspectionShape;
+    /**
+     * 主驾驶遮阳板状态 {@link com.netsdk.lib.enumeration.NET_SUNSHADE_STATE}
+     */
+    public int emSunShade;
+    /**
+     * 副驾驶遮阳板状态 {@link com.netsdk.lib.enumeration.NET_SUNSHADE_STATE}
+     */
+    public int emSubSeatSunShade;
+    /**
+     * 卡片数量
+     */
+    public int nCardCount;
+    /**
+     * 主驾驶安全带 {@link com.netsdk.lib.enumeration.NET_SAFEBELT_STATE}
+     */
+    public int emSafeBelt;
+    /**
+     * 是否在打电话, 0: 未知 1: 否 2: 是
+     */
+    public int nCalling;
+    /**
+     * 是否在玩手机, 0: 未知 1: 否 2: 是
+     */
+    public int nPlayPhone;
+    /**
+     * 是否在抽烟, 0: 未知 1: 否 2: 是
+     */
+    public int nSmoking;
+    /**
+     * 副驾驶是否有人, 0: 未知 1: 否 2: 是
+     */
+    public int nSubSeatPeople;
+    /**
+     * 副驾驶安全带 {@link com.netsdk.lib.enumeration.NET_SAFEBELT_STATE}
+     */
+    public int emSubSeatSafeBelt;
+    /**
+     * 是否抱小孩, 0: 未知 1: 否 2: 是
+     */
+    public int nHoldBaby;
+    /**
+     * 是否有天窗, 0: 未知 1: 否 2: 是
+     */
+    public int nSunroof;
+    /**
+     * 是否有行李架, 0: 未知 1: 否 2: 是
+     */
+    public int nLuggageRack;
+    /**
+     * 是否有车辆撞损, 0: 未知 1: 否 2: 是
+     */
+    public int nVehicleCollision;
+    /**
+     * 是否有喷绘, 0: 未知 1: 否 2: 是
+     */
+    public int nVehiclePrint;
+    /**
+     * 是否有备胎, 0: 未知 1: 否 2: 是
+     */
+    public int nBackupTire;
+    /**
+     * 后备箱状态, 0: 未知 1: 关闭 2: 打开
+     */
+    public int nTrunk;
+    /**
+     * 车牌污损状态, 0: 未知 1: 正常 2: 无牌 3: 部分遮挡/污损  4: 完全遮挡/污损
+     */
+    public int nPlateAttribute;
+    /**
+     * 渣土车遮盖状态, 0: 未知 1: 有遮盖 2: 无遮盖空载 3: 无遮盖满载
+     */
+    public int nMuskHide;
+    /**
+     * 机动车图片信息
+     */
+    public SDK_PIC_INFO_EX stuImage = new SDK_PIC_INFO_EX();
+    /**
+     * 车辆停车是否压线, 0: 未知  1: 未压线停车 2: 压线停车
+     */
+    public int nPressParkingStatus;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_HISTORY_TRAFFIC_CAR_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HKIMAGESERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HKIMAGESERVER_INFO.java
new file mode 100644
index 0000000..da36c43
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HKIMAGESERVER_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @author 119178
+ * @description 视图云存储服务器鉴权密钥
+ * @date 2021/4/20
+ */
+public class NET_HKIMAGESERVER_INFO extends SdkStructure{
+	/**
+	 * 接入码
+	 */
+	public byte[]						szAccessKey = new byte[136];	
+	/**
+	 * 鉴权密钥
+	 */
+	public byte[]						szSecretKey = new byte[136];
+	/**
+	 * 预留字段
+	 */
+	public byte[]						szReserved = new byte[512];				
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HSJC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HSJC_INFO.java
new file mode 100644
index 0000000..7efabca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HSJC_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description  核酸检测信息
+ * @date 2021/08/15
+ */
+public class NET_HSJC_INFO extends  NetSDKLib.SdkStructure{
+	 /**
+     *  核酸检测报告日期 (yyyy-MM-dd)
+     */
+    public byte[] szHSJCReportDate = new byte[32];
+
+    /**
+     *  核酸检测报告有效期(天)
+     */
+    public int nHSJCExpiresIn;
+
+    /**
+     *  核酸检测报告结果
+     */
+    public int nHSJCResult;
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_AGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_AGE_INFO.java
new file mode 100644
index 0000000..815bc7d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_AGE_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  年龄过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:41
+*/
+public class NET_HUMAN_AGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的年龄段的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+过滤显示的年龄段
+*/
+public			int[]					emHumanAgeShowList=new int[16];
+/** 
+年龄段信息的描述信息, 内存由用户申请和释放, 申请大小sizeof(NET_HUMAN_DESC_INFO)*nShowListNums
+*/
+public Pointer pstuHumanDesc;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_AGE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_ANGLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_ANGLE_INFO.java
new file mode 100644
index 0000000..d62ba1c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_ANGLE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  人体拍摄角度 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_HUMAN_ANGLE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的拍摄角度类型的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的拍摄角度类型
+*/
+public			int[]					emHumanAngleShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_ANGLE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_BEARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_BEARD_INFO.java
new file mode 100644
index 0000000..c064df9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_BEARD_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  胡子过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:42
+*/
+public class NET_HUMAN_BEARD_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的胡子情况的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+胡子情况
+*/
+public			int[]					emHumanBeardShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_BEARD_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_COLOR_INFO.java
new file mode 100644
index 0000000..f882f2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_COLOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  上衣颜色过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:42
+*/
+public class NET_HUMAN_COAT_COLOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤出对应的上衣颜色的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+上衣颜色
+*/
+public			int[]					emHumanCoatColorShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_COAT_COLOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_TYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_TYPE_INFO.java
new file mode 100644
index 0000000..b42dedd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_COAT_TYPE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  上衣类型过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:42
+*/
+public class NET_HUMAN_COAT_TYPE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的上衣类型的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的上衣类型
+*/
+public			int[]					emHumanCoatTypeShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_COAT_TYPE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_EMOTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_EMOTION_INFO.java
new file mode 100644
index 0000000..d2e5daa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_EMOTION_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  表情过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:41
+*/
+public class NET_HUMAN_EMOTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的表情的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+过滤显示的表情
+*/
+public			int[]					emHumanEmotionShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_EMOTION_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java
new file mode 100644
index 0000000..4c6214a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_FEATURE_VECTOR_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 斜视状态
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class NET_HUMAN_FEATURE_VECTOR_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  人体特征值在二进制数据中的偏移, 单位:字节
+     */
+    public int					nOffset;
+    /**
+     *  人体特征值数据长度, 单位:字节
+     */
+    public int					nLength;
+    /**
+     *  用于标识特征值是否加密
+     */
+    public int					bFeatureEnc;
+    /**
+     *  保留字节
+     */
+    public byte					byReserved[] = new byte[28];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_GLASSES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_GLASSES_INFO.java
new file mode 100644
index 0000000..b05eba3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_GLASSES_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  眼镜佩戴过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:41
+*/
+public class NET_HUMAN_GLASSES_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的眼镜佩戴情况的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+过滤显示的眼镜佩戴情况
+*/
+public			int[]					emHumanGlassesShowList=new int[16];
+/** 
+是否戴眼镜,TRUE-有,FALSE-无
+*/
+public			int					bHasGlasses;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_GLASSES_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAIR_STYLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAIR_STYLE_INFO.java
new file mode 100644
index 0000000..cfaacc9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAIR_STYLE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  发型过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_HUMAN_HAIR_STYLE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的发型类型的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的发型类型
+*/
+public			int[]					emHumanHairStyleShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HAIR_STYLE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_BAG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_BAG_INFO.java
new file mode 100644
index 0000000..c6f0d4e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_BAG_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  背包过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:43
+*/
+public class NET_HUMAN_HAS_BAG_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的背包情况的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+背包情况
+*/
+public			int[]					emHumanHasBagShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HAS_BAG_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_HAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_HAT_INFO.java
new file mode 100644
index 0000000..12950ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_HAT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  帽子过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:43
+*/
+public class NET_HUMAN_HAS_HAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的帽子情况的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的帽子情况
+*/
+public			int[]					emHumanHasHatShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HAS_HAT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_UMBRELLA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_UMBRELLA_INFO.java
new file mode 100644
index 0000000..5a4a478
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HAS_UMBRELLA_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  雨伞过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:43
+*/
+public class NET_HUMAN_HAS_UMBRELLA_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+雨伞检测情况的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+雨伞检测情况
+*/
+public			int[]					emHumanHasUmbrellaShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HAS_UMBRELLA_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HELMET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HELMET_INFO.java
new file mode 100644
index 0000000..a1dfedb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HELMET_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  安全帽合规性检测信息 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_HUMAN_HELMET_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+是否有戴安全帽,TRUE-有,FALSE-无
+*/
+public			int					bHasHelmet;
+/** 
+安全帽颜色的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+安全帽颜色
+*/
+public			int[]					emHumanHelmetColorShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HELMET_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HOLD_BABY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HOLD_BABY_INFO.java
new file mode 100644
index 0000000..aa8c66d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_HOLD_BABY_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  抱小孩 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_HUMAN_HOLD_BABY_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+抱小孩类型的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+抱小孩类型
+*/
+public			int[]					emHumanHoldBabyShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_HOLD_BABY_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_MASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_MASK_INFO.java
new file mode 100644
index 0000000..7a11c7a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_MASK_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  口罩佩戴过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:41
+*/
+public class NET_HUMAN_MASK_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的口罩佩戴情况的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+过滤显示的口罩佩戴情况
+*/
+public			int[]					emHumanMaskShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_MASK_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_RAIN_COAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_RAIN_COAT_INFO.java
new file mode 100644
index 0000000..5982df5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_RAIN_COAT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  穿戴雨披 
+* @origin autoTool
+* @date 2023/05/29 11:40:43
+*/
+public class NET_HUMAN_RAIN_COAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+穿戴雨披类型的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+穿戴雨披类型
+*/
+public			int[]					emHumanRainCoatShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_RAIN_COAT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_SEX_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_SEX_INFO.java
new file mode 100644
index 0000000..47c2d6a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_SEX_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  性别过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:41
+*/
+public class NET_HUMAN_SEX_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+过滤显示的性别的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+过滤显示的性别
+*/
+public			int[]					emHumanSexShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_SEX_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..1ef6cda
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TEMPERATURE_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人体温信息
+ * @date 2022/11/24 21:06:12
+ */
+public class NET_HUMAN_TEMPERATURE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 温度
+	 */
+	public double dbTemperature;
+	/**
+	 * 温度单位 { @link EM_HUMAN_TEMPERATURE_UNIT}
+	 */
+	public int emTemperatureUnit;
+	/**
+	 * 是否超温
+	 */
+	public int bIsOverTemp;
+	/**
+	 * 是否低的温度
+	 */
+	public int bIsUnderTemp;
+	/**
+	 * 预留字段
+	 */
+	public byte[] bReserved = new byte[132];
+
+	public NET_HUMAN_TEMPERATURE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_COLOR_INFO.java
new file mode 100644
index 0000000..d8795ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_COLOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  裤子颜色过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:42
+*/
+public class NET_HUMAN_TROUSERS_COLOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的裤子颜色颜色类型的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的裤子颜色类型
+*/
+public			int[]					emHumanTrousersColorShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_TROUSERS_COLOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_TYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_TYPE_INFO.java
new file mode 100644
index 0000000..b0b75ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_TROUSERS_TYPE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  裤子类型过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:42
+*/
+public class NET_HUMAN_TROUSERS_TYPE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+需要过滤的裤子类型的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+需要过滤的裤子类型
+*/
+public			int[]					emHumanTrousersTypeShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_TROUSERS_TYPE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_VEST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_VEST_INFO.java
new file mode 100644
index 0000000..a045f4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HUMAN_VEST_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  安全背心合规性检测信息 
+* @origin autoTool
+* @date 2023/05/29 11:40:44
+*/
+public class NET_HUMAN_VEST_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+是否有穿反光背心的类型的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+是否有穿反光背心的类型
+*/
+public			int[]					emHumanVestShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_HUMAN_VEST_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HYGROTHERMOGRAPH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HYGROTHERMOGRAPH_INFO.java
new file mode 100644
index 0000000..3553400
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_HYGROTHERMOGRAPH_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  回调的温湿度信息 
+* @origin autoTool
+* @date 2023/12/02 10:25:56
+*/
+public class NET_HYGROTHERMOGRAPH_INFO extends NetSDKLib.SdkStructure {
+/** 
+/ 温度, 单位: ℃
+*/
+public			float					fTemperature;
+/** 
+/ 湿度  单位: %rh
+*/
+public			float					fHumidity;
+/** 
+/ 上报通道号
+*/
+public			int					nChannel;
+/** 
+/ 保留字节
+*/
+public			byte[]					szResvered=new byte[1020];
+
+public			NET_HYGROTHERMOGRAPH_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IDCARD_INFO.java
new file mode 100644
index 0000000..30a3f30
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IDCARD_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_IDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 证件消息类型,请参考EM_IDCARD_MSG_TYPE
+     */
+    public  int emIDCardMsgType;
+    // EM_IDCARD_MSG_TYP_QUERY:除 nEventGroupID 和 szRoomNo (在上一层)字段不用填,其余必填
+    // EM_IDCARD_MSG_TYPE_ISSUE_PERMISSION:nEventGroupID 、szRoomNo(在上一层)及 szCitizenName 字段必填,其余可为空
+    /**
+     * 姓名
+     */
+    public byte[]								szCitizenName=new byte[32];
+    /**
+     * 性别,请参考EM_CITIZENIDCARD_SEX_TYPE
+     */
+    public  int emSexType;
+
+    public  int	nMZ;
+    /**
+     * 生日(年月日有效)
+     */
+    public NET_TIME                             stuBirthday;
+    /**
+     * 地址
+     */
+    public byte[]								szAddress=new byte[128];
+    /**
+     * 证件号
+     */
+    public byte[]								szCitizenID=new byte[32];
+    /**
+     * 签发机关
+     */
+    public byte[]								szAuthority=new byte[48];
+    /**
+     * 有效期限起始日期(年月日有效)
+     */
+    public NET_TIME                             stuBeginValidTime;
+    /**
+     * 有效期限截止日期(年月日有效)
+     */
+    public NET_TIME                             stuEndValidTime;
+    /**
+     * 事件组ID,用于标示不同事件的对同一动作的关联
+     */
+    public int									nEventGroupID;
+    /**
+     * 预留字段
+     */
+    public byte[]								byReserved=new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java
new file mode 100644
index 0000000..66ff5c6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_COMPARE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 人脸图片比较信息
+ * @date 2020/10/19
+ */
+public class NET_IMAGE_COMPARE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 在二进制数据块中的偏移,单位:字节
+     */
+    public int dwoffset;
+    /**
+     * 图片大小,单位:字节
+     */
+    public int dwLength;
+    /**
+     * 图片宽度
+     */
+    public int dwWidth;
+    /**
+     * 图片高度
+     */
+    public int dwHeight;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO.java
new file mode 100644
index 0000000..4da8b87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  图片信息 
+* @date 2022/06/28 19:24:08
+*/
+public class NET_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+图片类型 {@link com.netsdk.lib.enumeration.EM_PIC_TYPE}
+*/
+public			int					emPicType;
+/** 
+在二进制数据块中的偏移
+*/
+public			int					nOffset;
+/** 
+图片大小,单位:字节
+*/
+public			int					nLength;
+/** 
+图片路径
+*/
+public			byte[]					szFilePath=new byte[256];
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+
+public NET_IMAGE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX.java
new file mode 100644
index 0000000..dd2ec3a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 图片类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 18:54
+ */
+public class NET_IMAGE_INFO_EX extends NetSDKLib.SdkStructure {
+
+    /**
+     *  在上传图片数据中的图片序号
+     */
+    public int					nIndexInData;
+    /**
+     *  在二进制数据块中的偏移
+     */
+    public int					nOffset;
+    /**
+     *  图片大小,单位:字节
+     */
+    public int					nLength;
+    /**
+     *  图片大小,单位:字节,参考{ @link EM_IMAGE_TYPE}
+     */
+    public int					emType;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX2.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX2.java
new file mode 100644
index 0000000..80c5bb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX2.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 图片类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 18:04
+ */
+public class NET_IMAGE_INFO_EX2 extends NetSDKLib.SdkStructure {
+
+    public int					emType;			// 图片类型
+    /**
+     *  在二进制数据块中的偏移
+     */
+    public int					nOffset;
+    /**
+     *  图片大小,单位:字节
+     */
+    public int					nLength;
+    /**
+     *  用于字节对齐
+     */
+    public byte					byReserverd[] = new byte[4];
+
+    /**
+     *  图片存储位置
+     */
+    public byte					szPath[] = new byte[256];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX3.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX3.java
new file mode 100644
index 0000000..2f3cda3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_INFO_EX3.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 图片扩展信息
+ * @origin autoTool
+ * @date 2023/06/19 14:53:51
+ */
+public class NET_IMAGE_INFO_EX3 extends NetSDKLib.SdkStructure {
+	/**
+	 * 图片类型 {@link com.netsdk.lib.enumeration.EM_IMAGE_TYPE_EX2}
+	 */
+	public int emType;
+	/**
+	 * 在二进制数据块中的偏移
+	 */
+	public int nOffset;
+	/**
+	 * 图片大小,单位:字节
+	 */
+	public int nLength;
+	/**
+	 * 加密密钥标记, 区分使用哪种长度密钥, 0: 使用 szEncryptKey, 1: 使用 szEncryptLKey
+	 */
+	public int nEncryptFlag;
+	/**
+	 * 图片存储位置
+	 */
+	public byte[] szPath = new byte[256];
+	/**
+	 * 二进制图片加密秘钥,设备传过来的是Base64编码之后的,SDK不做解码处理
+	 */
+	public byte[] szEncryptKey = new byte[128];
+	/**
+	 * 二进制图片加密秘钥,设备传过来的是Base64编码之后的,SDK不做解码处理
+	 */
+	public byte[] szEncryptLKey = new byte[256];
+	/**
+	 * 用于字节对齐
+	 */
+	public byte[] byReserverd2 = new byte[768];
+
+	public NET_IMAGE_INFO_EX3() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION.java
new file mode 100644
index 0000000..4ed1440
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 小图信息
+ * @date 2023/04/20 15:11:18
+ */
+public class NET_IMAGE_RELATION extends NetSDKLib.SdkStructure {
+	/**
+	 * 大图ID
+	 */
+	public int nBigPicId;
+	/**
+	 * 大图中小图张数
+	 */
+	public int nSmallPicNum;
+	/**
+	 * 大图中小图的信息
+	 */
+	public NET_SMALL_PIC_INFO[] stuSmallPicInfo = new NET_SMALL_PIC_INFO[32];
+	/**
+	 * 大图检测小图结果错误码 {@link com.netsdk.lib.enumeration.EM_MULTIFACE_DETECT_ERRCODE}
+	 */
+	public int emDetectErrCode;
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[124];
+
+	public NET_IMAGE_RELATION() {
+		for (int i = 0; i < stuSmallPicInfo.length; i++) {
+			stuSmallPicInfo[i] = new NET_SMALL_PIC_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX.java
new file mode 100644
index 0000000..dd127f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX.java
@@ -0,0 +1,72 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 一张大图检测到小图的结果
+ * @date 2023/04/20 15:18:00
+ */
+public class NET_IMAGE_RELATION_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 图片的请求ID
+	 */
+	public byte[] szRequestID = new byte[64];
+	/**
+	 * 大图ID
+	 */
+	public int nBigPicId;
+	/**
+	 * 大图中小图张数
+	 */
+	public int nSmallPicNum;
+	/**
+	 * 大图中小图的信息
+	 */
+	public NET_SMALL_PIC_INFO[] stuSmallPicInfo = new NET_SMALL_PIC_INFO[32];
+	/**
+	 * 大图检测小图结果错误码 {@link com.netsdk.lib.enumeration.EM_MULTIFACE_DETECT_ERRCODE}
+	 */
+	public int emDetectErrCode;
+	/**
+	 * 大图检测结果列表
+	 */
+	public NET_IMAGE_RELATION_LIST[] stuImageRelation = new NET_IMAGE_RELATION_LIST[32];
+	/**
+	 * 大图检测结果列表个数
+	 */
+	public int nstuImageRelationNum;
+	/**
+	 * 查询令牌
+	 */
+	public int nToken;
+	/**
+	 * 小图信息
+	 */
+	public NET_IMAGE_RELATION_EX_IMAGEINFO[] stuImageInfo = new NET_IMAGE_RELATION_EX_IMAGEINFO[32];
+	/**
+	 * 小图信息个数
+	 */
+	public int nImageNum;
+	/**
+	 * 小图图片数据
+	 */
+	public Pointer pData;
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[248];
+
+	public NET_IMAGE_RELATION_EX() {
+		for (int i = 0; i < stuSmallPicInfo.length; i++) {
+			stuSmallPicInfo[i] = new NET_SMALL_PIC_INFO();
+		}
+		for (int i = 0; i < stuImageRelation.length; i++) {
+			stuImageRelation[i] = new NET_IMAGE_RELATION_LIST();
+		}
+		for (int i = 0; i < stuImageInfo.length; i++) {
+			stuImageInfo[i] = new NET_IMAGE_RELATION_EX_IMAGEINFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX_IMAGEINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX_IMAGEINFO.java
new file mode 100644
index 0000000..8b89dbb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_EX_IMAGEINFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 小图信息
+ * @date 2023/04/20 15:18:00
+ */
+public class NET_IMAGE_RELATION_EX_IMAGEINFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 在二进制数据块中的偏移
+	 */
+	public int nOffset;
+	/**
+	 * 图片大小,单位字节
+	 */
+	public int nLength;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[16];
+
+	public NET_IMAGE_RELATION_EX_IMAGEINFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_LIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_LIST.java
new file mode 100644
index 0000000..66dc6e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IMAGE_RELATION_LIST.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 一张大图检测结果列表
+ * @date 2023/04/20 15:18:00
+ */
+public class NET_IMAGE_RELATION_LIST extends NetSDKLib.SdkStructure {
+	/**
+	 * base64特征值
+	 */
+	public Pointer pszFeature;
+	/**
+	 * base64特征值长度
+	 */
+	public int nFeatureLen;
+	/**
+	 * 特征ID
+	 */
+	public byte[] szFeatureID = new byte[64];
+	/**
+	 * 目标数据
+	 */
+	public NetSDKLib.NET_FACE_DATA stuFaceData = new NetSDKLib.NET_FACE_DATA();
+	/**
+	 * 人体属性
+	 */
+	public HUMAN_ATTRIBUTES_INFO stuHumanAttributes = new HUMAN_ATTRIBUTES_INFO();
+	/**
+	 * 非机动车信息
+	 */
+	public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor = new NetSDKLib.VA_OBJECT_NONMOTOR();
+	/**
+	 * 特征版本号
+	 */
+	public byte[] szAlgorithmVersion = new byte[32];
+	/**
+	 * 厂商
+	 */
+	public byte[] szVendor = new byte[32];
+	/**
+	 * 目标类型 {@link EM_OBJECT_TYPE}
+	 */
+	public int emObjectType;
+	/**
+	 * 矩形区域
+	 */
+	public NetSDKLib.DH_POINT[] stuRectPoint = new NetSDKLib.DH_POINT[2];
+	/**
+	 * 机动车属性
+	 */
+	public NET_HISTORY_TRAFFIC_CAR_INFO stuHistoryTrafficCar = new NET_HISTORY_TRAFFIC_CAR_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[1024];
+
+	public NET_IMAGE_RELATION_LIST() {
+		for (int i = 0; i < stuRectPoint.length; i++) {
+			stuRectPoint[i] = new NetSDKLib.DH_POINT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..55157a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INFRARED_MEASURE_MODE_PARAM.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+
+/**
+ * 单片机红外测温模式参数
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public class NET_INFRARED_MEASURE_MODE_PARAM extends NetSDKLib.SdkStructure {
+
+    /**
+     *  最远测试距离,单位: cm
+     */
+    public int					nMaxDistance;
+
+    /**
+     *  红外温度保存时间(ms)	(人员在设备鉴权时,从红外设备取温度的有效倒退时间)
+     */
+    public int					nRetentionTime;
+
+    /**
+     *  温度阈值,单位: 摄氏度
+     */
+    public double					dbTempThreshold;
+
+    /**
+     *  温度矫正值,单位: 摄氏度	
+     */
+    public double					dbCorrectTemp;
+
+    /**
+     *  有效温度下限,低于此值的温度为无效温度(摄氏度) 
+     */
+    public double					dbValidTempLowerLimit;
+
+    /**
+     *  是否开启测温调试模式(在屏幕上显示测温调试数据) 	
+     */
+    public int					bDebugModelEnable;
+
+    /**
+     *  测温区域框显示使能(在视频流界面显示测试区域框)
+     */
+    public int					bRectEnable;
+
+    /**
+     *  测温模块传感器类型
+     */
+    public byte					szSensorType[] = new byte[64];
+
+    /**
+     *  预留字段
+     */
+    public byte[]					byReserved = new byte[1024];
+
+    @Override
+    public String toString() {
+        return "NET_INFRARED_MEASURE_MODE_PARAM{" +
+                "nMaxDistance=" + nMaxDistance +
+                ", nRetentionTime=" + nRetentionTime +
+                ", dbTempThreshold=" + dbTempThreshold +
+                ", dbCorrectTemp=" + dbCorrectTemp +
+                ", dbValidTempLowerLimit=" + dbValidTempLowerLimit +
+                ", bDebugModelEnable=" + bDebugModelEnable +
+                ", bRectEnable=" + bRectEnable +
+                ", szSensorType=" + Arrays.toString(szSensorType) +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_OBJECT.java
new file mode 100644
index 0000000..4d74d91
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_OBJECT.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 物品类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 09:19
+ */
+public class NET_INSIDE_OBJECT extends NetSDKLib.SdkStructure {
+
+    /**
+     *  物品危险等级 {@link com.netsdk.lib.NetSDKLib.EM_DANGER_GRADE_TYPE }
+     */
+    public int					emDangerGrade;
+
+    /**
+     *  物品类型  {@link com.netsdk.lib.enumeration.EM_INSIDE_OBJECT_TYPE}
+     */
+    public int					emObjType;
+
+    /**
+     *  相似度
+     */
+    public int					nSimilarity;
+
+    /**
+     *  包围盒
+     */
+    public NetSDKLib.NET_RECT stuBoundingBox = new NetSDKLib.NET_RECT();
+
+    /**
+     * 自定义物品类型,emObjType为 EM_INSIDE_OBJECT_UNKNOWN 时使用
+     */
+    public byte[]     szObjectType=new byte[32];
+
+    /**
+     *  保留字节,留待扩展
+     */
+    public byte					byReserved[] = new byte[76];
+
+
+
+    @Override
+    public String toString() {
+        return "NET_INSIDE_OBJECT{" +
+                "emDangerGrade=" + emDangerGrade +
+                ", emObjType=" + emObjType +
+                ", nSimilarity=" + nSimilarity +
+                ", stuBoundingBox=" + stuBoundingBox.toString() +
+                ", szObjectType=" + new String(szObjectType)+
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java
new file mode 100644
index 0000000..7a9471e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSIDE_SUB_TOTAL_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 本周期区域内滞留人员统计信息
+ * @date 2023/03/19 16:19:34
+ */
+public class NET_INSIDE_SUB_TOTAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 本周期上报的区域内总人数
+	 */
+	public int nTotal;
+	/**
+	 * 当前周期,所有人的总滞留时长
+	 */
+	public int nTotalStayTime;
+	/**
+	 * 人次数据有效个数
+	 */
+	public int nManStaySummaryValidNum;
+	/**
+	 * 人次数据,
+	 * 例此处下发的规则为滞留时间大于3,5,10,300秒的规则.此处结果就是滞留时间大于3秒共10人次,大于5秒的6人次,10秒的3人次,300秒的0人次
+	 */
+	public int[] nManStaySummary = new int[8];
+	/**
+	 * 总滞留时长有效个数
+	 */
+	public int nTotalStayTimeSummaryValidNum;
+	/**
+	 * 总滞留时长,单位秒,
+	 * 例此处下发的规则为滞留时间大于3,5,10,300秒的规则,此处结果就是滞留时间大于3秒的人员的总滞留时长50秒,大于5秒的48秒,10秒的30秒,300秒的0秒
+	 */
+	public int[] nTotalStayTimeSummary = new int[8];
+
+	public NET_INSIDE_SUB_TOTAL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSULATOR_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSULATOR_DETECT.java
new file mode 100644
index 0000000..4a7d0f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INSULATOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  绝缘子检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_INSULATOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+绝缘子状态 {@link com.netsdk.lib.enumeration.EM_INSULATOR_STATE}
+*/
+public			int					emInsulatorState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public			NET_INSULATOR_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java
new file mode 100644
index 0000000..8274846
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_OPENAREA_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 规划式停车场车位信息统计
+ * @date 2022/10/28 11:30:56
+ */
+public class NET_INTELLIPARKING_OPENAREA_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 车位对应的ID
+	 */
+	public int nID;
+	/**
+	 * 停车场中停车数
+	 */
+	public int nParkingNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[512];
+
+	public NET_INTELLIPARKING_OPENAREA_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java
new file mode 100644
index 0000000..8ad1b47
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_IDINFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 251823
+* @description  当前时间点上报车位ID的使用情况 
+* @date 2022/10/28 11:30:56
+*/
+public class NET_INTELLIPARKING_PLANAREA_IDINFO extends NetSDKLib.SdkStructure {
+/** 
+车位对应的ID
+*/
+public			int					nID;
+/** 
+车位ID对应的使用情况
+*/
+public			int					nIsUsed;
+/** 
+保留字节
+*/
+public			byte[]					reserved=new byte[512];
+
+public			NET_INTELLIPARKING_PLANAREA_IDINFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java
new file mode 100644
index 0000000..6b5cd27
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLIPARKING_PLANAREA_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 规划式停车场车位信息统计
+ * @date 2022/10/28 11:30:56
+ */
+public class NET_INTELLIPARKING_PLANAREA_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 当前时间点上报车位ID的使用情况个数
+	 */
+	public int nIDInfoNum;
+	/**
+	 * 当前时间点上报车位ID的使用情况集
+	 */
+	public NET_INTELLIPARKING_PLANAREA_IDINFO[] stIDInfo = new NET_INTELLIPARKING_PLANAREA_IDINFO[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[512];
+
+	public NET_INTELLIPARKING_PLANAREA_INFO() {
+		for (int i = 0; i < stIDInfo.length; i++) {
+			stIDInfo[i] = new NET_INTELLIPARKING_PLANAREA_IDINFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLI_INFO.java
new file mode 100644
index 0000000..a4d4ece
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTELLI_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 视频通道上的智能信息
+ * @date 2022/07/04 14:04:51
+ */
+public class NET_INTELLI_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 智能规则类型个数
+	 */
+	public int nTypeNum;
+	/**
+	 * 智能规则类型
+	 */
+	public Byte64Arr[] szType = new Byte64Arr[16];
+	/**
+	 * 智能场景类型
+	 */
+	public byte[] szClass = new byte[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[516];
+
+	public NET_INTELLI_INFO() {
+		for (int i = 0; i < szType.length; i++) {
+			szType[i] = new Byte64Arr();
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTER_LOCK_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTER_LOCK_CAPS.java
new file mode 100644
index 0000000..f4811d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_INTER_LOCK_CAPS.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 门禁互锁相关能力
+ * @date 2023/04/18 19:40:08
+ */
+public class NET_INTER_LOCK_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 支持互锁回能力掩码,支持位或 bit0-本地反潜;bit1-网络反潜主控;bit2-网络反潜分控
+	 */
+	public int nTypes;
+	/**
+	 * 最大规则组数量, nTypes bit1=1时有效
+	 */
+	public int nMaxRule;
+	/**
+	 * 组内每个组最大支持多少个门, nTypes bit1=1时有效
+	 */
+	public int nWithinMaxDoors;
+	/**
+	 * 组间每个组最大支持多少个门, nTypes bit1=1时有效
+	 */
+	public int nBetweenMaxDoors;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[512];
+
+	public NET_INTER_LOCK_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java
new file mode 100644
index 0000000..280c4b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_CMD.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AccessControlCaptureCmd 输入结构体
+ * @date 2022/12/30 10:55:59
+ */
+public class NET_IN_ACCESSCONTROL_CAPTURE_CMD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 采集类型 (EM_COLLECTION_TYPE已被使用)
+	 * {@link com.netsdk.lib.enumeration.EM_GATHER_TYPE}
+	 */
+	public int emGathertype;
+	/**
+	 * 用户ID(智能楼宇需求,可选)
+	 */
+	public byte[] szUserID = new byte[12];
+
+	public NET_IN_ACCESSCONTROL_CAPTURE_CMD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java
new file mode 100644
index 0000000..7918bd1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AccessControlCaptureNewCard 输入结构体
+ * @date 2022/12/30 10:55:15
+ */
+public class NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 授权时间,单位秒,0表示由服务端控制时间
+	 */
+	public int nAllowTime;
+
+	public NET_IN_ACCESSCONTROL_CAPTURE_NEWCARD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AC_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AC_CAPS.java
new file mode 100644
index 0000000..a7650f9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AC_CAPS.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  门禁AC服务协议能力获取入参 
+* @origin autoTool
+* @date 2023/02/10 14:33:29
+*/
+public class NET_IN_AC_CAPS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_IN_AC_CAPS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java
new file mode 100644
index 0000000..068b05e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME.java
@@ -0,0 +1,99 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_REAL_DATA_TYPE;
+import com.sun.jna.Pointer;
+
+/**
+ * 自适应下载录像 按时间 {@link NetSDKLib#CLIENT_AdaptiveDownloadByTime} 入参 出参
+ * {@link NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME}
+ *
+ * @author 47040
+ * @since Created at 2021/6/19 18:35
+ */
+public class NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 录像类型枚举值 {@link NetSDKLib.EM_QUERY_RECORD_TYPE}
+	 */
+	public int emRecordType;
+	/**
+	 * 下载的文件路径
+	 */
+	public Pointer szSavedFileName;
+	/**
+	 * 开始时间
+	 */
+	public NetSDKLib.NET_TIME stStartTime;
+	/**
+	 * 结束时间
+	 */
+	public NetSDKLib.NET_TIME stStopTime;
+	/**
+	 * 进度回调
+	 */
+	public NetSDKLib.fTimeDownLoadPosCallBack cbDownLoadPos;
+	/**
+	 * 进度回调用户信息
+	 */
+	public Pointer dwPosUser;
+	/**
+	 * 数据回调
+	 */
+	public NetSDKLib.fDataCallBack fDownLoadDataCallBack;
+	/**
+	 * 回调的数据类型 枚举值 {@link EM_REAL_DATA_TYPE}
+	 */
+	public int emDataType;
+	/**
+	 * 数据回调用户信息
+	 */
+	public Pointer dwDataUser;
+	/**
+	 * 加密录像密码,密码长度不小于8
+	 */
+	public byte[] szEncryptPasswd = new byte[64];
+
+	/**
+	 * 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发stStartTime, stStopTime),
+	 * 为FALSE表示仅下发stStartTime, stStopTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+	 */
+	public int bOnlySupportRealUTC;
+	/**
+	 * 录像的起始UTC时间(标准UTC时间)
+	 */
+	public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+	/**
+	 * 录像的结束UTC时间(标准UTC时间)
+	 */
+	public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+	/**
+	 * 进度回调的扩展(若使用标准UTC时间进行下载,则使用该回调)
+	 */
+	public NetSDKLib.fTimeDownLoadPosCallBackEx cbDownLoadPosEx;
+	/**
+	 * VK信息回调
+	 */
+	public NetSDKLib.fVKInfoCallBack pVKInfoCallBack;
+	/**
+	 * VK信息回调用户信息
+	 */
+	public Pointer dwVKInfoUser;
+	/**
+	 * 是否同步返回错误码
+	 */
+	public int bWait;
+
+	public NET_IN_ADAPTIVE_DOWNLOAD_BY_TIME() {
+		dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_ALARM_USER.java
new file mode 100644
index 0000000..c1b3411
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_ALARM_USER.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AddAlarmUser 接口输入参数
+ * @date 2023/03/16 09:04:51
+ */
+public class NET_IN_ADD_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 添加的用户信息
+	 */
+	public NET_ALARM_USER stuAlarmUser = new NET_ALARM_USER();
+
+	public NET_IN_ADD_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_COURSE.java
new file mode 100644
index 0000000..8e13e15
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_COURSE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 添加新的课程记录 入参指针 {@link NetSDKLib#CLIENT_AddCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 15:36
+ */
+public class NET_IN_ADD_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程数量
+     */
+    public int nCourseNum;
+    /**
+     * 课程信息
+     */
+    public NET_COURSE[] stuCourseInfo = new NET_COURSE[64];
+
+    public NET_IN_ADD_COURSE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCourseInfo.length; i++) {
+            stuCourseInfo[i] = new NET_COURSE();
+        }
+    }
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java
new file mode 100644
index 0000000..e69db50
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_REC_BAK_RST_REMOTE_TASK.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * 远程录像任务接口 入参
+ * 接口 {@link NetSDKLib#CLIENT_AddRecordBackupRestoreRemoteTask}
+ * 出参 {@link NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK}
+ *
+ * @author 47040
+ * @since Created at 2021/5/27 20:18
+ */
+public class NET_IN_ADD_REC_BAK_RST_REMOTE_TASK extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 任务有效个数, 最大支持 16个
+     */
+    public int nTaskCount;
+    /**
+     * 任务信息 -> {@link NET_RECORDBACKUP_REMOTE_TASK} 数组
+     * 数组长度为 nTaskCount 由用户申请内存
+     * 大小为 ( size of NET_RECORDBACKUP_REMOTE_TASK )*nTaskCount
+     */
+    public Pointer pStuTask;
+
+    public NET_IN_ADD_REC_BAK_RST_REMOTE_TASK() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_SOFT_TOUR_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_SOFT_TOUR_POINT_INFO.java
new file mode 100644
index 0000000..cd86e57
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ADD_SOFT_TOUR_POINT_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 接口 CLIENT_AddSoftTourPoint 的输入参数
+ * @origin autoTool
+ * @date 2023/10/16 20:15:22
+ */
+public class NET_IN_ADD_SOFT_TOUR_POINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+    /**
+     * /云台通道号
+     */
+    public int nChannel;
+    /**
+     * /巡航线路编号
+     */
+    public int nIndex;
+    /**
+     * / 线路上点的序号,从0开始, 如果为 -1, 追加到线路上最后位置,否则为指定序号
+     */
+    public int nPoint;
+    /**
+     * / 预置点编号,编号从1开始
+     */
+    public int nPresetIndex;
+    /**
+     * / 在该预置点停留时间,时间单位为秒
+     */
+    public int nDuration;
+    /**
+     * / 转动到预置点的速度, 归一化到0~1
+     */
+    public float fSpeed;
+
+    public NET_IN_ADD_SOFT_TOUR_POINT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java
new file mode 100644
index 0000000..76d007b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ASYNC_ADD_CUSTOM_DEVICE.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.EM_CUSTOM_DEV_PROTOCOL_TYPE;
+
+/**
+ * CLIENT_AsyncAddCustomDevice 接口输入参数
+ *
+ * @author 119178
+ */
+public class NET_IN_ASYNC_ADD_CUSTOM_DEVICE extends SdkStructure {
+
+  public int dwSize;
+  /** 端口号 */
+  public int nPort;
+  /** 设备地址或者域名 */
+  public byte[] szAddress = new byte[128];
+  /** 用户名 */
+  public byte[] szUserName = new byte[128];
+  /** 密码 */
+  public byte[] szPassword = new byte[128];
+  /** 接入设备协议类型,对应枚举{@link EM_CUSTOM_DEV_PROTOCOL_TYPE} */
+  public int emProtocolType;
+  /** 上述列表实际填写的有效通道数 */
+  public int nRemoteChannelNum;
+  /** 远程通道号数组,如果是IPC就数组大小为1 */
+  public int[] nRemoteChannels = new int[512];
+  /** 是否设置逻辑起始通道,FALSE代表随机通道作为起始通道 */
+  public int bSetLogicChannelStart;
+  /** 逻辑通道起始通道,设置bSetLogicChannelStart为TRUE时生效 */
+  public int nLogicChannelStart;
+  /** 视频输入信息 */
+  public NET_CUSTOM_DEV_VIDEO_INPUTS stuVideoInput;
+
+  public NET_IN_ASYNC_ADD_CUSTOM_DEVICE() {
+    this.dwSize = this.size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java
new file mode 100644
index 0000000..c45b52d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_BACKUP_STATE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+import com.netsdk.lib.NetSDKLib.LLong;;
+/**
+ * 
+ * @author 119178
+ * CLIENT_AttachBackupTaskState接口输入参数
+ * {@link NetSDKLib#CLIENT_AttachBackupTaskState}
+ */
+public class NET_IN_ATTACH_BACKUP_STATE extends SdkStructure{
+	public int						dwSize;						// 结构体大小
+	public int				        nGroupID;					// 任务组ID
+	public Callback                 cbAttachState;              // 订阅备份状态回调
+	public Pointer				    dwUser;                     // 用户数据
+	public byte[]					bReserved=new byte[4];		// 字节对齐
+	
+	public NET_IN_ATTACH_BACKUP_STATE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..1207595
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_AttachCrowdDistriMap 接口输入参数
+ * @date 2022/01/07
+ */
+public class NET_IN_ATTACH_CROWDDISTRI_MAP_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    /**
+     *  订阅人群分布图实时统计信息回调函数
+     */
+    public NetSDKLib.fCrowdDistriStream cbCrowdDistriStream;
+
+    /**
+     *  用户数据
+     */
+    public Pointer dwUser;
+
+    public NET_IN_ATTACH_CROWDDISTRI_MAP_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..6f3ca86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description CLIENT_AttachCustomSnapInfo 接口输入参数
+* @date 2022/03/31 11:28:46
+*/
+public class NET_IN_ATTACH_CUSTOM_SNAP_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+订阅通道号
+*/
+public			int					nChannelID;
+/** 
+自定义定时抓图订阅回调函数
+*/
+public			NetSDKLib.fAttachCustomSnapInfo		cbCustomSnapInfo;
+/** 
+用户数据
+*/
+public Pointer dwUser;
+
+public NET_IN_ATTACH_CUSTOM_SNAP_INFO(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..c932fc5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.callback.securityCheck.fNotifyPopulationStatisticsInfo;
+import com.sun.jna.Pointer;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5
+ *接口 CLIENT_AttachPopulationStatistics 的输入参数
+ */
+public class NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO extends NetSDKLib.SdkStructure{
+    public int                            dwSize;                     	// 结构体大小
+    public fNotifyPopulationStatisticsInfo cbNotifyPopulationStatisticsInfo;   // 回调函数,有人数变化信息时,回调给上层
+    public Pointer dwUser;								// 用户自定义参数
+
+
+    public NET_IN_ATTACH_GATE_POPULATION_STATISTICS_INFO() {
+        this.dwSize=this.size();
+    }
+
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GYRO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GYRO.java
new file mode 100644
index 0000000..123839f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_GYRO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  CLIENT_AttachGyro接口入参 
+* @date 2022/10/26 15:21:25
+*/
+public class NET_IN_ATTACH_GYRO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+回调函数
+*/
+public NetSDKLib.fNotifyGyroData cbNotifyGyroData;
+/** 
+用户自定义参数
+*/
+public Pointer dwUser;
+
+public NET_IN_ATTACH_GYRO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_HYGROTHERMOGRAPH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_HYGROTHERMOGRAPH.java
new file mode 100644
index 0000000..721d4e0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_HYGROTHERMOGRAPH.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_AttachHygrothermograph 的输入参数 
+* @origin autoTool
+* @date 2023/12/02 10:25:56
+*/
+public class NET_IN_ATTACH_HYGROTHERMOGRAPH extends NetSDKLib.SdkStructure {
+/** 
+/ 此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+/ 回调函数,通知温湿度信息
+*/
+public			NetSDKLib.fNotifyHygrothermograph					cbNotifyHygrothermograph;
+/** 
+/ 用户自定义参数
+*/
+public Pointer dwUser;
+/** 
+/ 过滤器个数
+*/
+public			int					nFilterCount;
+/** 
+/ 过滤器
+*/
+public			NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO[]					stuFilter=new NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO[256];
+
+public			NET_IN_ATTACH_HYGROTHERMOGRAPH(){
+		for(int i=0;i<stuFilter.length;i++){
+			stuFilter[i]=new NET_ATTACH_HYGROTHERMOGRAPH_FILTER_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java
new file mode 100644
index 0000000..efe7565
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_LOWRATEWPAN.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_AttachLowRateWPAN()输入参数
+ * @date 2023/03/16 16:17:02
+ */
+public class NET_IN_ATTACH_LOWRATEWPAN extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 对码数据回调
+	 */
+	public NetSDKLib.fAttachLowRateWPANCB cbAttachLowRateWPANCB;
+	/**
+	 * 用户数据
+	 */
+	public Pointer dwUser;
+
+	public NET_IN_ATTACH_LOWRATEWPAN() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..56e7ac2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_AttachRadarRFIDCardInfo接口入参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_IN_ATTACH_RADAR_RFIDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 雷达RFIDCard信息回调
+     */
+    public NetSDKLib.fRadarRFIDCardInfoCallBack cbRFIDCardInfo;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+
+    public NET_IN_ATTACH_RADAR_RFIDCARD_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..0fdee79
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_SCADA_DATA_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachSCADAData 接口入参
+ * @date 2022/12/13 10:20:50
+ */
+public class NET_IN_ATTACH_SCADA_DATA_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小,必须赋值
+     */
+    public int dwSize;
+    /**
+     * 回调函数, 设备传回的遥测数据
+     */
+    public NetSDKLib.fNotifySCADAData cbfNotifySCADAData;
+    /**
+     * 用户自定义参数
+     */
+    public Pointer dwUser;
+
+    public NET_IN_ATTACH_SCADA_DATA_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..93e7924
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_IN_ATTACH_TRAFFICLIGHT_INFO
+ * description:CLIENT_AttachTrafficLightState 接口入参
+ * author:251589
+ * createTime:2021/1/19 14:30
+ *
+ * @version v1.0
+ */
+public class NET_IN_ATTACH_TRAFFICLIGHT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  回调函数
+     */
+    public NetSDKLib.fTrafficLightState cbState;
+
+    /**
+     *  用户信息
+     */
+    public long dwUser;
+
+    public NET_IN_ATTACH_TRAFFICLIGHT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java
new file mode 100644
index 0000000..2e0b888
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachTrafficFlowStatRealFlow 输入参数
+ * @origin autoTool
+ * @date 2023/08/31 14:21:53
+ */
+public class NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 回调函数
+	 */
+	public NetSDKLib.fVehicleInOutAnalyseProc cbVehicleInOutAnalyseProc;
+	/**
+	 * 用户信息
+	 */
+	public Pointer dwUser;
+
+	public NET_IN_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..d9e104a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_TRANSMIT_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_AttachTransmitInfo输入参数
+ * @date 2022/02/14
+ */
+public class NET_IN_ATTACH_TRANSMIT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  用户使用该结构体时,dwSize需赋值为sizeof(NET_IN_ATTACH_TRANSMIT_INFO)
+     */
+    public int dwSize;
+
+    /**
+     *  回调函数
+     */
+    public  NetSDKLib.AsyncTransmitInfoCallBack cbTransmitInfo;
+
+    /**
+     *  用户数据
+     */
+    public Pointer dwUser;
+
+    /**
+     *  Json请求数据,用户申请空间
+     */
+    public Pointer szInJsonBuffer;
+
+    /**
+     *  Json请求数据长度 `
+     */
+    public int dwInJsonBufferSize;
+
+    /**
+     *  TRUE-当设备支持时,使用子连接方式接收订阅数据 FALSE-只在主连接接收订阅数据
+     */
+    public boolean bSubConnFirst;
+
+    public NET_IN_ATTACH_TRANSMIT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA.java
new file mode 100644
index 0000000..bf332b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_AttachVehiclesDistributionData 的输入参数 
+* @origin autoTool
+* @date 2023/07/03 14:05:42
+*/
+public class NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+接口超时等待时间
+*/
+public			int					dwWaitTime;
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+回调函数
+*/
+public			NetSDKLib.fNotifyVehiclesDistributionData					cbNotifySnapData;
+/** 
+用户自定义参数
+*/
+public Pointer dwUser;
+
+public NET_IN_ATTACH_VEHICLES_DISTRIBUTION_DATA(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..a7b0354
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.callback.fVideoStatHeatMapCallBack;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 订阅热度图信息入参
+ * @date 2020/9/21
+ */
+public class NET_IN_ATTACH_VIDEOSTAT_HEATMAP extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小
+     */
+    public int                   dwSize;
+    /**
+     * 视频通道号
+     */
+    public int                     nChannel;
+    /**
+     * 热图数据回调
+     */
+    public fVideoStatHeatMapCallBack cbVideoStatHeatMap;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+    public NET_IN_ATTACH_VIDEOSTAT_HEATMAP(){
+        this.dwSize=size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..3c7bb24
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEOSTAT_STREAM.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 订阅统计通道数据入参
+ * @date 2022/12/12 11:41:07
+ */
+public class NET_IN_ATTACH_VIDEOSTAT_STREAM extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 视频通道号
+	 */
+	public int nVideoChannel;
+	/**
+	 * 粒度 {@link com.netsdk.lib.enumeration.EM_STAT_GRANULARITY}
+	 */
+	public int emGranularity;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * "NumberStat":人数统计,统计进入离开数量
+	 */
+	public byte[] szRuleType = new byte[32];
+	/**
+	 * 开始时间,表示从什么时间开始统计上报,开始时间,需按周期取整。如推送周期是10分钟一次,那么开始时间,只能为,每个小时的
+	 * 第0分,10分、20分、30分、40、分、50分。
+	 */
+	public byte[] szStartTime = new byte[20];
+	/**
+	 * 统计通道数据回调
+	 */
+	public NetSDKLib.fVideoStatStreamCallBack cbVideoStatStream;
+	/**
+	 * 用户数据
+	 */
+	public Pointer dwUser;
+	/**
+	 * 与Granularity结合使用,如emGranularity为 EM_GRANULARITY_MINUTE, Cycle
+	 * 值为5,表示以5分钟统计周期上报数据
+	 */
+	public short nCycle;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved2 = new byte[2];
+	/**
+	 * 滞留情况数组大小,如填0则不下发该字段
+	 */
+	public int nSendMinStayTimeValidNum;
+
+	/**
+	 * 上报时间段内区域人员滞留情况, 表示统计的间隔结果中返回滞留时间大于3秒,大于5秒,大于10秒的记录,单位秒, 不下发时回调仅返回总人数和总滞留时长
+	 */
+	public int[] nMinStayTime = new int[8];
+
+	public NET_IN_ATTACH_VIDEOSTAT_STREAM() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..1537c26
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachVideoAnalyseAnalyseProc 输入参数
+ * @date 2023/02/21 14:39:21
+ */
+public class NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小,必须赋值
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannelId;
+    /**
+     * 回调函数
+     */
+    public NetSDKLib.fVideoAnalyseAnalyseProc cbVideoAnalyseAnalyseProc;
+    /**
+     * 用户信息
+     */
+    public Pointer dwUser;
+
+    public NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java
new file mode 100644
index 0000000..6d841b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  CLIENT_AttachVideoAnalyseTrackProc 输入参数 
+* @origin autoTool
+* @date 2023/09/22 13:56:25
+*/
+public class NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC extends NetSDKLib.SdkStructure {
+/** 
+/ 此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+/ 通道号
+*/
+public			int					nChannelId;
+/** 
+/ 回调函数
+*/
+public			NetSDKLib.fVideoAnalyseTrackProc					cbVideoAnalyseTrackProc;
+/** 
+/ 用户信息
+*/
+public Pointer dwUser;
+
+public			NET_IN_ATTACH_VIDEO_ANALYSE_TRACK_PROC(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java
new file mode 100644
index 0000000..a78bc9e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ATTACH_VIDEO_STATISTICS.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_AttachVideoStatistics 输入参数
+ * @date 2022/10/28 10:46:07
+ */
+public class NET_IN_ATTACH_VIDEO_STATISTICS extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 用户回调函数
+	 */
+	public NetSDKLib.fVideoStatisticsInfoCallBack cbCallBack;
+	/**
+	 * 用户数据
+	 */
+	public Pointer dwUser;
+	/**
+	 * 业务类型 {@link com.netsdk.lib.enumeration.NET_EM_VS_TYPE}
+	 */
+	public int emType;
+
+	public NET_IN_ATTACH_VIDEO_STATISTICS() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java
new file mode 100644
index 0000000..34e2b7c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_AUDIO_DECODE_CAPS.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取音频解码能力集入参
+ * @date 2021/01/06
+ */
+public class NET_IN_AUDIO_DECODE_CAPS extends NetSDKLib.SdkStructure{
+	
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    
+    /**
+     * 通道号
+     * */
+    public int nChannel;
+    
+    
+    /**
+     * 数据流源类型 { @link EM_AUDIO_DATA_SOURCE_TYPE}
+     * */
+    public int emSourceType;
+    
+    
+    public NET_IN_AUDIO_DECODE_CAPS(){
+        this.dwSize=size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CAMERASTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CAMERASTATE.java
new file mode 100644
index 0000000..183f882
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CAMERASTATE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * {@link NetSDKLib#CLIENT_AttachCameraState} 输入参数
+ * {@link NET_OUT_CAMERASTATE} 对应接口出参
+ *
+ * @author : 47040
+ * @since : Created in 2021/1/15 14:03
+ */
+public class NET_IN_CAMERASTATE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * int*[]
+     * 由用户申请内存,大小为sizeof(int)*nChannels
+     * 观察的通道号,数组元素中,有一个是-1,则观察所有通道
+     */
+    public Pointer pChannels;
+    /**
+     * pChannels指针长度
+     */
+    public int nChannels;
+    /**
+     * 状态回调函数
+     */
+    public NetSDKLib.fCameraStateCallBack cbCamera;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+
+    public NET_IN_CAMERASTATE() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java
new file mode 100644
index 0000000..a9c4c9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CLEAR_PRIVACY_MASKING.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ClearPrivacyMasking 输入参数
+ * @date 2022/07/21 17:20:39
+ */
+public class NET_IN_CLEAR_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_CLEAR_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
new file mode 100644
index 0000000..27294a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机添加模式入参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:32
+ */
+public class NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 要添加的模式数目
+     */
+    public int nCount;
+    /**
+     * 模式信息
+     */
+    public NET_COMPOSITECHANNELMODE_INFO[] stModeInfo = new NET_COMPOSITECHANNELMODE_INFO[NET_MAX_MODE_NUMBER];
+
+    public NET_IN_COURSECOMPOSITE_CHANNEL_MODE_ADD() {
+        dwSize = this.size();
+        for (int i = 0; i < stModeInfo.length; i++) {
+            stModeInfo[i] = new NET_COMPOSITECHANNELMODE_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
new file mode 100644
index 0000000..333a64d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机删除模式入参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:01
+ */
+public class NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 删除的模式个数
+     */
+    public int nModeNum;
+    /**
+     * 删除的模式编号
+     */
+    public int[] nMode = new int[NET_MAX_MODE_NUMBER];
+
+    public NET_IN_COURSECOMPOSITE_CHANNEL_MODE_DELETE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java
new file mode 100644
index 0000000..31d0f4e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录播主机获取模式入参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:24
+ */
+public class NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 要获取的模式个数
+     */
+    public int nCount;
+
+    public NET_IN_COURSECOMPOSITE_CHANNEL_MODE_GET() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
new file mode 100644
index 0000000..d87a91f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机修改模式入参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:15
+ */
+public class NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 修改的模式个数
+     */
+    public int nModeNum;
+    /**
+     * 模式编号
+     */
+    public int[] nMode = new int[NET_MAX_MODE_NUMBER];
+    /**
+     * 模式信息
+     */
+    public NET_COMPOSITECHANNELMODE_INFO[] stModeInfo = new NET_COMPOSITECHANNELMODE_INFO[NET_MAX_MODE_NUMBER];
+
+    public NET_IN_COURSECOMPOSITE_CHANNEL_MODE_MODIFY() {
+        dwSize = this.size();
+        for (int i = 0; i < stModeInfo.length; i++) {
+            stModeInfo[i] = new NET_COMPOSITECHANNELMODE_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java
new file mode 100644
index 0000000..323312f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取组合通道信息入参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:03
+ */
+public class NET_IN_COURSECOMPOSITE_GET_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID号
+     */
+    public int nClassRoomId;
+
+    public NET_IN_COURSECOMPOSITE_GET_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java
new file mode 100644
index 0000000..6e3f7d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_GET_LOCKINFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取锁定状态入参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:58
+ */
+public class NET_IN_COURSECOMPOSITE_GET_LOCKINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID号
+     */
+    public int nClassRoomID;
+    /**
+     * 逻辑通道号
+     */
+    public int nLogicChannel;
+
+    public NET_IN_COURSECOMPOSITE_GET_LOCKINFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java
new file mode 100644
index 0000000..9b75733
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_LOCK_CONTROL.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 锁定和解锁组合通道和逻辑通道入参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:53
+ */
+public class NET_IN_COURSECOMPOSITE_LOCK_CONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 1 TRUE锁定,0 FALSE 解锁
+     */
+    public int bLock;
+    /**
+     * 教室ID号
+     */
+    public int nClassRoomID;
+    /**
+     * 逻辑通道号
+     */
+    public int nLogicChannel;
+
+    public NET_IN_COURSECOMPOSITE_LOCK_CONTROL() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java
new file mode 100644
index 0000000..e5d156b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_SET_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置组合通道信息入参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:51
+ */
+public class NET_IN_COURSECOMPOSITE_SET_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID号
+     */
+    public int nClassRoomId;
+    /**
+     * 组合通道信息
+     */
+    public NET_COMPOSITECHANNEL_INFO stuChannelInfo;
+
+    public NET_IN_COURSECOMPOSITE_SET_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java
new file mode 100644
index 0000000..601842a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSECOMPOSITE_UPDATE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 组合通道信息更新到time入参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 21:00
+ */
+public class NET_IN_COURSECOMPOSITE_UPDATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID号
+     */
+    public int nClassRoomId;
+    /**
+     * 查询时间
+     */
+    public NET_TIME stuTime;
+
+    public NET_IN_COURSECOMPOSITE_UPDATE_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java
new file mode 100644
index 0000000..aa68a78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GETINFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取指定教室的录像信息入参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:21
+ */
+public class NET_IN_COURSERECORD_GETINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID,0为默认教室
+     */
+    public int nClassRoomID;
+
+    public NET_IN_COURSERECORD_GETINFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java
new file mode 100644
index 0000000..832cb0a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_GET_TIME.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取当前课程已录制时间入参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:42
+ */
+public class NET_IN_COURSERECORD_GET_TIME extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID,0为默认教室
+     */
+    public int nClassRoomID;
+
+    public NET_IN_COURSERECORD_GET_TIME() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java
new file mode 100644
index 0000000..9ca736e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_SETINFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_COURSE_LOGIC_CHANNEL;
+
+/**
+ * 设置指定教室的录像信息入参  {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:28
+ */
+public class NET_IN_COURSERECORD_SETINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID,0为默认教室
+     */
+    public int nClassRoomID;
+    /**
+     * 逻辑通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 0:无效,1:录像,2不录像,下标对应为逻辑通道号
+     */
+    public int[] nCanRecord = new int[MAX_COURSE_LOGIC_CHANNEL];
+
+    public NET_IN_COURSERECORD_SETINFO() {
+        dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java
new file mode 100644
index 0000000..a632b07
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_COURSERECORD_UPDATE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录像信息更新到time入参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:37
+ */
+public class NET_IN_COURSERECORD_UPDATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室ID,0为默认教室
+     */
+    public int nClassRoomID;
+    /**
+     * 查询时间
+     */
+    public NET_TIME stuTime;
+
+    public NET_IN_COURSERECORD_UPDATE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..876ec65
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_CreateGroupForVehicleRegisterDB 接口输入参数
+ * @date 2021/8/17 10:52
+ */
+public class NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure  {
+    public int                           		dwSize;							// 结构体大小
+    public byte[]									szGroupName=new byte[128];				// 车辆组名称
+    public byte[]									szGroupDetail=new byte[256];				// 车辆组备注信息
+    public   int										nGroupType;						// 车辆组类型,0:代表允许,1:代表禁止
+    public NET_IN_CREATE_GROUP_FOR_VEHICLE_REG_DB(){
+            this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java
new file mode 100644
index 0000000..6147537
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_TRANSMIT_TUNNEL.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+CLIENT_CreateTransmitTunnel 接口输入参数
+*/
+public class NET_IN_CREATE_TRANSMIT_TUNNEL extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 代理类型  {@link com.netsdk.lib.enumeration.EM_TRANSMIT_PROXY_TYPE }
+*/
+public			int					emProxyType;
+/** 
+/< 代理模式  {@link com.netsdk.lib.enumeration.EM_TRANSMIT_PROXY_MODE }
+*/
+public			int					emProxyMode;
+/** 
+/< 当emProxyType为EM_TRANSMIT_PROXY_TYPE_GENERAL 是有效
+*/
+public			int					nPort;
+/** 
+/< emProxyMode为EM_TRANSMIT_PROXY_MODE_CASCADE时有效,与Port一起,组成需级联代理的服务
+*/
+public			int					nChannel;
+/** 
+/< 字节对齐
+*/
+public			byte[]					szReserved=new byte[4];
+
+/**
+ * /< 隧道超时2分钟断线回调
+ */
+public NetSDKLib.fTransmitDisConnectCallBack cbDisConnectCallBack;
+
+/**
+ * /< 隧道断线回调
+ */
+public NetSDKLib.fSubBizDisConnectCallBack cbDisConnectCallBackEx;
+/** 
+/< 用户数据
+*/
+public Pointer dwUserData;
+public NET_IN_CREATE_TRANSMIT_TUNNEL(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..5f436ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREATE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_CreateWorkSuitCompareGroup 接口输入参数
+ * @date 2022/10/08 17:05:54
+ */
+public class NET_IN_CREATE_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 工装合规组信息
+	 */
+	public NET_WORKSUIT_COMPARE_GROUP_INFO stuWorkSuitGroupInfo = new NET_WORKSUIT_COMPARE_GROUP_INFO();
+
+	public NET_IN_CREATE_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java
new file mode 100644
index 0000000..d235197
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CREAT_SUB_BUSINESS_MDL_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_CreateSubBusinessModule 接口输入参数
+*/
+public class NET_IN_CREAT_SUB_BUSINESS_MDL_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 连接方式  {@link com.netsdk.lib.enumeration.EM_SUBLINK_TYPE}
+*/
+public			int					emLinkType;
+/** 
+/< bsid
+*/
+public			byte[]					szBSID=new byte[64];
+/** 
+/< 设备网络信息, emLinkType 为 EM_SUBLINK_TYPE_PASSIVE(直连)方式时有效
+*/
+public			NET_DEV_NETWORK_INFO					stuDevNetInfo=new NET_DEV_NETWORK_INFO();
+
+/** 
+连接模式 {@link com.netsdk.lib.enumeration.EM_SUBLINK_MODE}
+*/
+public			int					emLinkMode;
+
+public NET_IN_CREAT_SUB_BUSINESS_MDL_INFO(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java
new file mode 100644
index 0000000..2b981e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 设置配件信息入参(对应DH_CTRL_LOWRATEWPAN_SET_ACCESSORY_PARAM)
+ * @date 2022/08/31 14:44:18
+ */
+public class NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 配件信息
+	 */
+	public NET_WPAN_ACCESSORY_INFO stuInfo = new NET_WPAN_ACCESSORY_INFO();
+
+	public NET_IN_CTRL_LOWRATEWPAN_ACCESSORY_PARAM() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java
new file mode 100644
index 0000000..5e27921
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_ALARM_USER.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteAlarmUser 接口输入参数
+ * @date 2023/03/16 11:04:41
+ */
+public class NET_IN_DELETE_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 用户ID,用户唯一标识
+	 */
+	public byte[] szUserID = new byte[64];
+
+	public NET_IN_DELETE_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..2de9988
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_CALIBRATEINFO_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除标定点信息入参
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_IN_DELETE_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 标定点ID
+	 */
+	public int nID;
+
+	public NET_IN_DELETE_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_COURSE.java
new file mode 100644
index 0000000..ecac80c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_COURSE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 删除课程记录 入参指针 {@link NetSDKLib#CLIENT_DeleteCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 20:30
+ */
+public class NET_IN_DELETE_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程 ID 数量
+     */
+    public int nIdNum;
+    /**
+     * 课程ID
+     */
+    public int[] nId = new int[64];
+
+    public NET_IN_DELETE_COURSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..c4665b7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_DeleteGroupFromVehicleRegisterDB 接口输入参数
+ * @date 2021/8/17 11:02
+ */
+public class NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+
+        public int                           		dwSize;							// 结构体大小
+        public byte[]								szGroupID=new byte[64];					// 车辆组标识, 为空时表示删除全部车辆组
+
+    public NET_IN_DELETE_GROUP_FROM_VEHICLE_REG_DB(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java
new file mode 100644
index 0000000..cdb636c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeletePrivacyMasking 输入参数
+ * @date 2022/07/21 17:20:13
+ */
+public class NET_IN_DELETE_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 遮档块编号,从0开始
+	 */
+	public int nIndex;
+
+	public NET_IN_DELETE_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..cbb5a86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_DeleteVehicleFromVehicleRegisterDB 接口输入参数
+ * @date 2022/10/22 10:31
+ */
+public class NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           			dwSize;							// 结构体大小
+    public int											nUID;							// 车辆唯一标识符
+    public byte[]									szGroupID=new byte[64];				// 车辆组ID
+    public byte[]											szPlateNumber= new byte[64];		// 车牌
+
+    public NET_IN_DELETE_VEHICLE_FROM_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java
new file mode 100644
index 0000000..b5e70c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_BY_SOURCEUID.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteWorkSuitBySourceUID 接口输入参数
+ * @date 2022/10/08 20:13:18
+ */
+public class NET_IN_DELETE_WORKSUIT_BY_SOURCEUID extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 全景图唯一标识符个数
+	 */
+	public int nSourceUIDNum;
+	/**
+	 * 全景图唯一标识符,由平台生成
+	 */
+	public Byte64Arr[] szSourceUID = new Byte64Arr[64];
+	/**
+	 * 工装合规组ID
+	 */
+	public byte[] szGroupID = new byte[64];
+
+	public NET_IN_DELETE_WORKSUIT_BY_SOURCEUID() {
+		this.dwSize = this.size();
+		for (int i = 0; i < szGroupID.length; i++) {
+			szSourceUID[i]= new Byte64Arr();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..dc58013
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELETE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteWorkSuitCompareGroup 接口输入参数
+ * @date 2022/10/08 17:14:11
+ */
+public class NET_IN_DELETE_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 合规库组ID
+	 */
+	public byte[] szGroupID = new byte[64];
+
+	public NET_IN_DELETE_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java
new file mode 100644
index 0000000..eb8ca1a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DELIVER_USER_PICTURE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_IN_DELIVER_USER_PICTURE
+ * description: 下发人脸数据 <—— 入参
+ * author:251589
+ * createTime:2020/12/21 21:51
+ *
+ * @version v1.0
+ */
+public class NET_IN_DELIVER_USER_PICTURE extends NetSDKLib.SdkStructure {
+    public int                          dwSize;                                             // 结构体大小
+    public int                          nResult;                                            // 平台查询结果// 0:有数据  1:不在人员库
+    public byte[]                       szCitizenID = new byte[32];                         // 证件信息
+    public byte[]                       szUserID = new byte[64];                            // 用户标识(选填)
+    public NET_USER_PICTURE_DATA[]      stuPictureData = new NET_USER_PICTURE_DATA[5];      // 图片信息
+    public int                          nPictureData;                                       // stuPictureData 个数
+    public byte[]                       byReserved = new byte[4];                           // 预留字段
+
+    public NET_IN_DELIVER_USER_PICTURE() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..d7eca8e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description CLIENT_DeleteByConditionFromVehicleRegisterDB 接口输入参数
+ * @date 2022/02/25 15:03:27
+ */
+public class NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 车辆组标识
+     */
+    public byte[] szGroupID = new byte[64];
+    /**
+     * 删除车辆的过滤条件
+     */
+    public NET_DELETE_VEHICLE_CONDITION_INFO stuDelCondition = new NET_DELETE_VEHICLE_CONDITION_INFO();
+    /**
+     * 不删除的车辆列表有效个数
+     */
+    public int dwUIDCnt;
+    /**
+     * 不删除的车辆列表
+     */
+    public byte[] szUIDList = new byte[1024 * 32];
+    /**
+     * 车牌唯一标识符列表有效个数
+     */
+    public int nUUIDNum;
+    /**
+     * 车牌唯一标识符列表,存在该字段时,字段szGroupID,stuDelCondition,szUIDList 不生效
+     */
+    public byte[] szUUID = new byte[512 * 64];
+    public NET_IN_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..c412fa0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DETACH_TRANSMIT_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_DetachTransmitInfo输入参数
+ * @date 2022/02/14
+ */
+public class NET_IN_DETACH_TRANSMIT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  用户使用该结构体时,dwSize需赋值为sizeof(NET_IN_DETACH_TRANSMIT_INFO)
+     */
+    public int dwSize;
+
+    /**
+     *  Json请求数据,用户申请空间
+     */
+    public Pointer szInJsonBuffer;
+
+    /**
+     *  Json请求数据长度
+     */
+    public int dwInJsonBufferSize;
+
+    public NET_IN_DETACH_TRANSMIT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEV_IO_STATS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEV_IO_STATS.java
new file mode 100644
index 0000000..ea34a2f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DEV_IO_STATS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo NET_QUERY_DEV_IO_STATS 类型接口输入参数
+ * @date 2021/07/09
+ */
+public class NET_IN_DEV_IO_STATS extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    
+    public NET_IN_DEV_IO_STATS(){
+        this.dwSize=size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..116ee32
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_DoFindFaceRecognitionEx 接口输入参数
+ * @date 2022/11/21 17:53:19
+ */
+public class NET_IN_DOFIND_FACERECONGNITION_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 查询句柄
+     */
+    public NetSDKLib.LLong lFindHandle;
+    /**
+     * 查询起始序号
+     */
+    public int nBeginNum;
+    /**
+     * 当前想查询的记录条数
+     */
+    public int nCount;
+    /**
+     * 指定查询结果返回图片的格式 {@link com.netsdk.lib.enumeration.EM_NEEDED_PIC_RETURN_TYPE}
+     */
+    public int emDataType;
+    /**
+     * 图片的编号是否有效
+     * TRUE : nPictureID字段有效且下发该字段, 表示只查单张图片的结果
+     * FALSE : nPictureID字段无效且不下发该字段, 表示查所有图片的结果
+     */
+    public int bPictureIDEnable;
+    /**
+     * null
+     */
+    public int nPictureID;
+
+    public NET_IN_DOFIND_FACERECONGNITION_EX() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD.java
new file mode 100644
index 0000000..76eb6fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_DownloadPieceFile 接口输入参数(文件下载)
+ * @origin autoTool
+ * @date 2023/11/30 19:38:56
+ */
+public class NET_IN_DOWNLOAD extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小:赋值为结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * / 偏移大小
+	 */
+	public int nOffLength;
+	/**
+	 * / 录像文件信息
+	 */
+	public LPNET_RECORDFILE_INFO lpRecordFile = new LPNET_RECORDFILE_INFO();
+	/**
+	 * / 录像文件保存路径
+	 */
+	public Pointer pszSavedFileName;
+	/**
+	 * / 回放进度回调函数
+	 */
+	public NetSDKLib.fDownLoadPosCallBack cbDownLoadPos;
+	/**
+	 * / 回放进度回调函数自定义数据
+	 */
+	public Pointer dwUserData;
+	/**
+	 * / 回放数据回调函数
+	 */
+	public NetSDKLib.fDataCallBack fDownLoadDataCallBack;
+	/**
+	 * / 回放数据回调函数自定义数据
+	 */
+	public Pointer dwDataUser;
+	/**
+	 * / 是否使用UTC时间
+	 */
+	public int bUseUTCTime;
+	/**
+	 * / 字节对齐
+	 */
+	public byte[] szResvered = new byte[4];
+
+	public NET_IN_DOWNLOAD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java
new file mode 100644
index 0000000..0368aa9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_BYFILE_SELFADAPT.java
@@ -0,0 +1,106 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_REAL_DATA_TYPE;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_PATH;
+
+/**
+ * 自适应下载录像 按文件 {@link NetSDKLib#CLIENT_DownloadByFileSelfAdapt} 入参
+ * 出参 {@link NET_OUT_DOWNLOAD_BYFILE_SELFADAPT}
+ *
+ * @author 47040
+ * @since Created at 2021/6/19 10:35
+ */
+public class NET_IN_DOWNLOAD_BYFILE_SELFADAPT extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 录像类型枚举值 {@link NetSDKLib.EM_QUERY_RECORD_TYPE}
+     */
+    public int emRecordType;
+    /**
+     * 下载的文件路径
+     */
+    public byte[] szFileName = new byte[MAX_PATH];
+    /**
+     * 文件长度, 单位为 Kbyte
+     */
+    public int size;
+    /**
+     * 进度回调
+     */
+    public NetSDKLib.fDownLoadPosCallBack cbDownLoadPos;
+    /**
+     * 进度回调用户信息
+     */
+    public Pointer dwPosUser;
+    /**
+     * 数据回调
+     */
+    public NetSDKLib.fDataCallBack fDownLoadDataCallBack;
+    /**
+     * 回调的数据类型 枚举值 {@link EM_REAL_DATA_TYPE}
+     */
+    public int emDataType;
+    /**
+     * 数据回调用户信息
+     */
+    public Pointer dwDataUser;
+    /**
+     * 扩展字段 文件总帧数
+     */
+    public int nFrameNum;
+    /**
+     * 开始时间
+     */
+    public NetSDKLib.NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NetSDKLib.NET_TIME stuEndTime;
+    /**
+     * 磁盘号(区分网络录像和本地录像的类型,0-127表示本地录像,其中64表示光盘1,128表示网络录像)
+     */
+    public int nDriveno;
+    /**
+     * 起始簇号
+     */
+    public int nStartCluster;
+    /**
+     * 0:普通录像 1:重要录像
+     */
+    public byte bImportantRecID;
+    /**
+     * 文件定位索引(nRecordFileType==4<图片>时,bImportantRecID<<8 +bHint ,组成图片定位索引 )
+     */
+    public byte bHint;
+    /**
+     * 0-主码流录像 1-辅码1流录像 2-辅码流2 3-辅码流3录像
+     */
+    public byte bRecType;    
+    /**
+     * 加密录像密码,密码长度不小于8
+     */ 
+    public byte[] szEncryptPasswd=new byte[64];
+    /**
+     * VK信息回调
+     */
+	public NetSDKLib.fVKInfoCallBack pVKInfoCallBack;
+	/**
+	 * VK信息回调用户信息
+	 */
+	public Pointer		dwVKInfoUser;
+
+    public NET_IN_DOWNLOAD_BYFILE_SELFADAPT() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java
new file mode 100644
index 0000000..1a0d885
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_MULTI_FILE.java
@@ -0,0 +1,64 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_DOWNLOAD_FILE_TYPE;
+import com.netsdk.lib.enumeration.EM_SUBCLASSID_TYPE;
+import com.sun.jna.Pointer;
+
+/**
+ * 批量下载文件 入参
+ * 接口 {@link NetSDKLib#CLIENT_DownLoadMultiFile}
+ * 出参 {@link NET_OUT_DOWNLOAD_MULTI_FILE}
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 15:19
+ */
+public class NET_IN_DOWNLOAD_MULTI_FILE extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 待下载文件数,emDownloadType为EM_DOWNLOAD_BY_FILENAME有效
+     */
+    public int nFileCount;
+    /**
+     * {@link NET_DOWNLOADFILE_INFO} 待下载文件信息,emDownloadType为 EM_DOWNLOAD_BY_FILENAME 时有效
+     * emDownloadType为EM_DOWNLOAD_BY_FILENAME有效
+     * 由用户申请内存,大小为 sizeof(NET_DOWNLOADFILE_INFO)*nFileCount
+     */
+    public Pointer pFileInfos;
+    /**
+     * 进度回调函数
+     */
+    public NetSDKLib.fMultiFileDownLoadPosCB cbPosCallBack;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUserData;
+    /**
+     * {@link EM_DOWNLOAD_FILE_TYPE} 下载方式
+     */
+    public int emDownloadType;
+    /**
+     * 按查询条件下载: 下载条件数,emDownloadType为EM_DOWNLOAD_BY_CONDITION有效
+     */
+    public int nConditionCount;
+    /**
+     * {@link NET_DOWNLOAD_CONDITION_INFO}
+     * 下载条件,emDownloadType为EM_DOWNLOAD_BY_CONDITION有效
+     * 由用户申请内存,大小为sizeof(NET_DOWNLOAD_CONDITION_INFO)*nConditionCount
+     */
+    public Pointer pConditionInfos;
+    /**
+     * 从设备类型{@link EM_SUBCLASSID_TYPE}
+     */
+    public int emSubClass;
+    /**
+     * {@link NET_DOWNLOADFILE_OPTIONS_INFO}
+     * 待下载文件信息, 下载选项; emDownloadType为EM_DOWNLOAD_BY_FILENAME有效
+     */
+    public Pointer pFileOptions;
+
+    public NET_IN_DOWNLOAD_MULTI_FILE(){
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java
new file mode 100644
index 0000000..666d536
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DOWNLOAD_PIECE_FILE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_IN_DOWNLOAD_PIECE_FILE extends SdkStructure{
+	
+	public int				dwSize;
+	/**
+	 * 需要下载的文件名,支持全路径
+	 */
+	public byte[]			szFileName= new byte[260];
+	/**
+	 * 下载偏移,单位字节
+	 * 如果文件总长度为50KB,每次请求下载数据量为32KB,那么第一次请求时,nOffSet为0,第二次请求nOffSet为32KB
+	 */
+	public int				nOffSet;	
+	/**
+	 *  请求下载数据量,单位字节,建议为32KB,最大不超过4MB
+	 */
+	public int				nNeedLength;	
+	 public NET_IN_DOWNLOAD_PIECE_FILE() {
+         this.dwSize = this.size();
+     }			  	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..7144ab7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_DoFindDetailNumberStatCluster 的输入参数
+ * @date 2022/10/09 14:08:11
+ */
+public class NET_IN_DO_FIND_DETAIL_CLUSTER extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * start接口返回的token, token保存的数量有限, 未stop的会在连接销毁时或队列满时被释放, 再用同一token访问会导致失败
+	 */
+	public int nToken;
+	/**
+	 * 查询记录的开始偏移
+	 */
+	public int nStartIndex;
+	/**
+	 * 查询的记录数,单次不超过1024
+	 */
+	public int nCount;
+
+	public NET_IN_DO_FIND_DETAIL_CLUSTER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_TALK_DEV.java
new file mode 100644
index 0000000..cbd1e3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_TALK_DEV.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_DoFindTalkDev 接口输入参数
+ * @origin autoTool
+ * @date 2023/10/26 10:05:01
+ */
+public class NET_IN_DO_FIND_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 查询的偏移条数
+     */
+    public int nOffset;
+    /**
+     * / 本次查询需要获取的条数, 不能超过startFind返回的nCaps查询能力
+     */
+    public int nCount;
+
+    public NET_IN_DO_FIND_TALK_DEV() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..79a78fe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_DoFindVehicleRegisterDB 接口输入参数
+ * @date 2022/10/22 10:50
+ */
+public class NET_IN_DO_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           			dwSize;							// 结构体大小
+    public 	NET_FIND_VEHICLE_CONDITION	 stuCondition=new NET_FIND_VEHICLE_CONDITION();				// 查询条件
+
+    public NET_IN_DO_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..8e95346
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_DoFindWaterDataStatServer 输入参数 
+* @date 2022/08/22 17:27:08
+*/
+public class NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+查询令牌
+*/
+public			int					nToken;
+/** 
+查询起始序号, 表示从beginNumber条记录开始,取count条记录返回
+*/
+public			int					nBeginNumber;
+/** 
+每次查询的流量统计条数
+*/
+public			int					nCount;
+
+public NET_IN_DO_FIND_WATERDATA_STAT_SERVER_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java
new file mode 100644
index 0000000..c0ee60c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_ENCODE_CFG_CAPS.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.GetDevCaps_Type;
+import com.sun.jna.Pointer;
+
+/**
+ * 获取设备编码配置对应能力输入参数
+ * 能力集枚举 {@link GetDevCaps_Type#NET_ENCODE_CFG_CAPS}
+ * 能力集接口 {@link NetSDKLib#CLIENT_GetDevCaps}
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 20:48
+ */
+public class NET_IN_ENCODE_CFG_CAPS extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannelId;
+    /**
+     * 码流类型,0:主码流;1:辅码流1;2:辅码流2;3:辅码流3;4:抓图码流
+     */
+    public int nStreamType;
+    /**
+     * 此参数可以不填,不论指定什么类型,设备都返回主、辅、抓图码流的能力
+     * Encode配置,通过调用 dhconfigsdk.dll中接口 CLIENT_PacketData封装得到
+     * 对应的封装命令为 CFG_CMD_ENCODE
+     */
+    public Pointer pchEncodeJson;
+
+    public NET_IN_ENCODE_CFG_CAPS() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java
new file mode 100644
index 0000000..07d09b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS) 输入参数
+ * @origin autoTool
+ * @date 2023/07/31 09:25:32
+ */
+public class NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_FACERECOGNITIONSERVER_CAPSBILITYQUERY() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERSERVER_GETDETEVTTOKEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERSERVER_GETDETEVTTOKEN.java
new file mode 100644
index 0000000..39f790c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACERSERVER_GETDETEVTTOKEN.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_FaceRServerGetDetectToken 接口输入参数
+ * @date 2023/04/20 14:04:21
+ */
+public class NET_IN_FACERSERVER_GETDETEVTTOKEN extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_FACERSERVER_GETDETEVTTOKEN() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
new file mode 100644
index 0000000..ca118df
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_FaceRecognitionDetectMultiFace 接口输入参数
+ * @date 2022/11/21 17:53:13
+ */
+public class NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体的大小
+     */
+    public int dwSize;
+    /**
+     * 大图张数
+     */
+    public int nBigPicNum;
+    /**
+     * 大图信息(推荐使用stuBigPicInfoEx)
+     */
+    public NET_DETECT_BIG_PIC_INFO[] stuBigPicInfo = new NET_DETECT_BIG_PIC_INFO[50];
+    /**
+     * 缓冲地址
+     */
+    public Pointer pBuffer;
+    /**
+     * 缓冲数据长度
+     */
+    public int nBufferLen;
+    /**
+     * 目标类型 {@link com.netsdk.lib.NetSDKLib.EM_OBJECT_TYPE}
+     */
+    public int emDetectObjType;
+    /**
+     * stuBigPicInfoEx是否有效
+     */
+    public int bBigPicInfoExEnable;
+    /**
+     * 大图张数
+     */
+    public int nBigPicNumEx;
+    /**
+     * 大图信息(扩展)
+     */
+    public NET_DETECT_BIG_PIC_INFO_EX[] stuBigPicInfoEx = new NET_DETECT_BIG_PIC_INFO_EX[50];
+    /**
+     * 查询令牌,没有则为0
+     */
+    public int nToken;
+
+    public NET_IN_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO() {
+        for (int i = 0; i < stuBigPicInfo.length; i++) {
+            stuBigPicInfo[i] = new NET_DETECT_BIG_PIC_INFO();
+        }
+        for (int i = 0; i < stuBigPicInfoEx.length; i++) {
+            stuBigPicInfoEx[i] = new NET_DETECT_BIG_PIC_INFO_EX();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..3d114c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_FindGroupFormVehicleRegisterDB 接口输入参数
+ * @date 2022/10/21 17:35
+ */
+public class NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           			dwSize;							// 结构体大小
+    public byte[]									szGroupID= new byte[64];				// 组ID,为空表示查找全部车辆组信息
+    public NET_IN_FIND_GROUP_FROM_VEHICLE_REG_DB(){
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java
new file mode 100644
index 0000000..b9741f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_REC_BAK_RST_TASK.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_FindRecordBackupRestoreTaskInfos接口输入参数
+ * @date 2022/01/14
+ */
+public class NET_IN_FIND_REC_BAK_RST_TASK extends NetSDKLib.SdkStructure{
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  根据条件查询备份任务的查询方式,{ @link EM_RECORD_BACKUP_FIND_TYPE}
+     */
+    public int emFindType;
+
+    /**
+     *  任务ID,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID 时有效,否则无效
+     */
+    public int dwTaskID;
+
+    /**
+     *  设备端本地通道号,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
+     */
+    public int nLocalChannelID;
+
+    /**
+     *  备份录像的开始时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
+     */
+    public NetSDKLib.NET_TIME stuStartTime;
+
+    /**
+     *  备份录像的结束时间,emFindType为 EM_RECORD_BACKUP_FIND_TYPE_BY_CHN_AND_TIME 时有效,否则无效
+     */
+    public NetSDKLib.NET_TIME stuEndTime;
+    /**
+     *主动注册的设备ID, emFindType为EM_RECORD_BACKUP_FIND_TYPE_BY_DEVICE_ID时必选有效,否则无效
+     */
+    public			byte[]					szDeviceID=new byte[128];
+
+    public NET_IN_FIND_REC_BAK_RST_TASK(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..a989449
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_FIND_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_FindWorkSuitCompareGroup 接口输入参数
+ * @date 2022/10/10 13:40:26
+ */
+public class NET_IN_FIND_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 合规库组ID, 不填组ID表示查找全部组信息
+	 */
+	public byte[] szGroupID = new byte[64];
+
+	public NET_IN_FIND_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETALL_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETALL_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..a1da9d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETALL_CALIBRATEINFO_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取所有标定点信息入参
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_IN_GETALL_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_GETALL_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETCOUNT_LOG_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETCOUNT_LOG_PARAM.java
new file mode 100644
index 0000000..9bd363b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETCOUNT_LOG_PARAM.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_QueryDevLogCount获取日志条数输入参数
+ * @date 2023/05/05 11:12:30
+ */
+public class NET_IN_GETCOUNT_LOG_PARAM extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 查询记录数条件
+     */
+    public QUERY_DEVICE_LOG_PARAM stuQueryCondition = new QUERY_DEVICE_LOG_PARAM();
+
+    public NET_IN_GETCOUNT_LOG_PARAM() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java
new file mode 100644
index 0000000..b8bb8b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETFACEEIGEN_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251589
+ * @version V1.0
+ * @Description:
+ * @date 2020/12/9 19:54
+ */
+
+public class NET_IN_GETFACEEIGEN_INFO extends NetSDKLib.SdkStructure{
+    public int dwSize;
+    public int nPhotoDataLen;          // 人脸照片数据大小
+    public Pointer pszPhotoData=new Memory(200*1024);        // 人脸照片数据, 由用户申请释放, 每张照片最大为200K
+    public NET_IN_GETFACEEIGEN_INFO() {
+        this.dwSize = this.size();
+    }
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..caa01bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSummaryCrowdDistriMap 接口输入参数
+ * @date 2022/01/07
+ */
+public class NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  通道号
+     */
+    public int nChannelID;
+
+    public NET_IN_GETSUMMARY_CROWDDISTRI_MAP_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ALARMMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ALARMMODE.java
new file mode 100644
index 0000000..c6ecbf9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ALARMMODE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取布防模式 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE
+ * @date 2021/11/08
+ */
+public class NET_IN_GET_ALARMMODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_IN_GET_ALARMMODE(){
+        this.dwSize = this.size();
+    }		
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BIND_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BIND_MODE_INFO.java
new file mode 100644
index 0000000..7136d0d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BIND_MODE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetBindMode 接口入参
+ * @origin autoTool
+ * @date 2023/09/15 10:59:47
+ */
+public class NET_IN_GET_BIND_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * / 教室id号,默认0
+	 */
+	public int nClassRoomId;
+
+	public NET_IN_GET_BIND_MODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BYPASSMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BYPASSMODE.java
new file mode 100644
index 0000000..8024ffb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_BYPASSMODE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取旁路状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE 
+* @origin autoTool
+* @date 2023/08/09 16:27:26
+*/
+public class NET_IN_GET_BYPASSMODE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+防区个数
+*/
+public			int					nZoneNum;
+/** 
+防区号, 从1开始
+*/
+public			int[]					arrZones=new int[72];
+/** 
+防区个数扩展
+*/
+public			int					nZoneNumEx;
+/** 
+防区号扩展  超过72使用这个字段
+*/
+public			int[]					arrZonesEx=new int[256];
+
+public NET_IN_GET_BYPASSMODE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java
new file mode 100644
index 0000000..d387bd6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CABINET_STATE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   CLIENT_GetFinancialCabinetState 的输入参数 
+* @date 2022/08/10 13:37:59
+*/
+public class NET_IN_GET_CABINET_STATE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_IN_GET_CABINET_STATE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..52b61f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CALIBRATEINFO_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取标定点信息入参
+ * @date 2023/05/24 10:24:50
+ */
+public class NET_IN_GET_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 标定点编号
+	 */
+	public int nID;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_GET_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java
new file mode 100644
index 0000000..fa4a1ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_CFG.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetCameraCfg}的入参
+ * @date 2020/11/06
+ */
+public class NET_IN_GET_CAMERA_CFG extends NetSDKLib.SdkStructure{
+	
+	
+	// 结构体大小
+	public int dwSize;
+	   
+	// 相机编号
+	public int nCameraNo;
+		
+	public NET_IN_GET_CAMERA_CFG() {
+	  this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java
new file mode 100644
index 0000000..d70c4da
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CAMERA_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetCameraInfo}的入参
+ * @date 2020/11/09
+ */
+public class NET_IN_GET_CAMERA_INFO extends NetSDKLib.SdkStructure {
+
+	// 结构体大小
+	public int dwSize;
+
+
+	// 相机编号
+	public int nCameraNo;
+
+	public NET_IN_GET_CAMERA_INFO() {
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java
new file mode 100644
index 0000000..dab0051
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNELS_STATE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取通道状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE 
+* @date 2022/10/09 11:22:21
+*/
+public class NET_IN_GET_CHANNELS_STATE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+获取通道状态查询条件
+*/
+public			NET_CHANNELS_STATE_CONDITION					stuCondition=new NET_CHANNELS_STATE_CONDITION();
+
+public NET_IN_GET_CHANNELS_STATE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java
new file mode 100644
index 0000000..81d5195
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_CFG.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetChannelCfg}的入参
+ * @date 2020/11/09
+ */
+public class NET_IN_GET_CHANNEL_CFG extends NetSDKLib.SdkStructure {
+
+	// 结构体大小
+	public int dwSize;
+	
+	// 检测通道
+	public int nChannelNo;
+
+
+	public NET_IN_GET_CHANNEL_CFG() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java
new file mode 100644
index 0000000..7cc8fc2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CHANNEL_STATE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description CLIENT_GetChannelState 入参
+ * @date 2022/07/04 11:16:31
+ */
+public class NET_IN_GET_CHANNEL_STATE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 视频通道数组个数
+	 */
+	public int nChannelNum;
+	/**
+	 * 视频通道数组,当该字段不存在或为空时代表获取所有通道
+	 */
+	public int[] nChannel = new int[256];
+
+	public NET_IN_GET_CHANNEL_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..a9237c8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CLUSTER_STATE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_GetClusterState 的输入参数
+ * @date 2022/10/09 14:24:24
+ */
+public class NET_IN_GET_CLUSTER_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 非必选, 当包含该字段时查对应日期的聚档状态, 否则返回最近一次的状态
+	 */
+	public int nClusterDate;
+
+	public NET_IN_GET_CLUSTER_STATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..d5aff53
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_LOGIC_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取录播主机逻辑通道号入参,对应接口 {@link NetSDKLib#CLIENT_GetLogicChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 14:57
+ */
+public class NET_IN_GET_COURSE_LOGIC_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 通道号
+     */
+    public int[] nChannel = new int[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_IN_GET_COURSE_LOGIC_CHANNEL(){
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..b9e0128
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_COURSE_RECORD_MODE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取录像模式入参,对应接口{@link NetSDKLib#CLIENT_GetCourseRecordMode}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:48
+ */
+public class NET_IN_GET_COURSE_RECORD_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 教室id号
+     */
+    public int nClassRoomID;
+
+    public NET_IN_GET_COURSE_RECORD_MODE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java
new file mode 100644
index 0000000..853f298
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_CUSTOMINFO_CAPS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetCustomInfoCaps 输入参数 
+* @date 2022/05/11 20:23:41
+*/
+public class NET_IN_GET_CUSTOMINFO_CAPS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_IN_GET_CUSTOMINFO_CAPS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java
new file mode 100644
index 0000000..f07e001
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEFAULT_REAL_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取默认真实通道号入参,对应接口 {@link NetSDKLib#CLIENT_GetDefaultRealChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 10:06
+ */
+public class NET_IN_GET_DEFAULT_REAL_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 需要获取的通道数
+     */
+    public int nChannelCount;
+    /**
+     * 逻辑通道信息,下标为将要获取的真实通道数
+     */
+    public NET_LOGIC_CHANNEL_INFO[] stuChannelInfo = new NET_LOGIC_CHANNEL_INFO[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_IN_GET_DEFAULT_REAL_CHANNEL() {
+        dwSize = this.size();
+        for (int i = 0; i < stuChannelInfo.length; i++) {
+            stuChannelInfo[i] = new NET_LOGIC_CHANNEL_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java
new file mode 100644
index 0000000..97829db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICESERIALNO_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceSerialNo 入参
+ * @date 2023/03/15 20:18:02
+ */
+public class NET_IN_GET_DEVICESERIALNO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_GET_DEVICESERIALNO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java
new file mode 100644
index 0000000..fc03f90
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICETYPE_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceType 入参
+ * @date 2023/03/15 20:18:25
+ */
+public class NET_IN_GET_DEVICETYPE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_GET_DEVICETYPE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java
new file mode 100644
index 0000000..d2d363f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_AII_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceAllInfo 输入结构体
+ * @date 2021/01/20
+ */
+public class NET_IN_GET_DEVICE_AII_INFO extends NetSDKLib.SdkStructure{
+	/**
+     * 赋值为结构体大小
+     */
+    public int dwSize;
+    
+    public NET_IN_GET_DEVICE_AII_INFO(){
+        this.dwSize=size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java
new file mode 100644
index 0000000..8177ed3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_ETH_BAND_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceEthBandInfo 接口入参
+ * @date 2022/05/30 14:45:46
+ */
+public class NET_IN_GET_DEVICE_ETH_BAND_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_GET_DEVICE_ETH_BAND_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_INFO_EX.java
new file mode 100644
index 0000000..000c8ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEVICE_INFO_EX.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.DEVICE_ID;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceInfoEx 接口输入参数
+ * @date 2023/04/19 15:36:29
+ */
+public class NET_IN_GET_DEVICE_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 设备个数
+	 */
+	public int nCount;
+	/**
+	 * 设备信息列表
+	 */	
+	public DEVICE_ID[]	szDeviceIDs = (DEVICE_ID[])new DEVICE_ID().toArray(32); // 设备列表
+
+	public NET_IN_GET_DEVICE_INFO_EX() {
+		for (int i = 0; i < szDeviceIDs.length; i++) {
+			szDeviceIDs[0] = new DEVICE_ID();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java
new file mode 100644
index 0000000..d6e9257
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DEV_STORAGE_SMART_VALUE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDevStorageSmartValue 接口入参
+ * @date 2022/05/30 14:42:47
+ */
+public class NET_IN_GET_DEV_STORAGE_SMART_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 存储设备名称
+	 */
+	public byte[] szName = new byte[64];
+
+	public NET_IN_GET_DEV_STORAGE_SMART_VALUE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
new file mode 100644
index 0000000..03096a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetDynamicLockRandomPublicKey 接口入参 
+* @date 2022/06/23 10:08:09
+*/
+public class NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+中心公钥
+*/
+public			byte[]					szCenterPublicKey=new byte[512];
+
+public NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java
new file mode 100644
index 0000000..377d361
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ELEVATOR_WORK_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetElevatorWorkInfo 接口入参
+ * @date 2022/08/11 19:21:09
+ */
+public class NET_IN_GET_ELEVATOR_WORK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 视频通道号
+	 */
+	public int nChannel;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_IN_GET_ELEVATOR_WORK_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java
new file mode 100644
index 0000000..1d12d70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FILE_INFO_BY_PATH_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_FileManagerGetExFileInfoByPath接口入参 
+* @date 2022/09/22 19:10:12
+*/
+public class NET_IN_GET_FILE_INFO_BY_PATH_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+文件路径
+*/
+public			byte[]					szPath=new byte[256];
+
+public NET_IN_GET_FILE_INFO_BY_PATH_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..6528ff1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetFinancialCabinInfo 输入参数 
+* @date 2022/08/01 14:13:04
+*/
+public class NET_IN_GET_FINANCIAL_CABIN_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+舱位下标索引个数
+*/
+public			int					nIndexNum;
+/** 
+舱位下标索引数组
+*/
+public			int[]					nIndex=new int[64];
+
+public NET_IN_GET_FINANCIAL_CABIN_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..9a3eca0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GLOBAL_PARAMETER.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscGlobalParam 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_GET_GLOBAL_PARAMETER extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_IN_GET_GLOBAL_PARAMETER(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GPS_STATUS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GPS_STATUS_INFO.java
new file mode 100644
index 0000000..0290176
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_GPS_STATUS_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_GetGpsStatus 接口入参
+ * @origin autoTool
+ * @date 2023/09/27 10:21:42
+ */
+public class NET_IN_GET_GPS_STATUS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+
+    public NET_IN_GET_GPS_STATUS_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java
new file mode 100644
index 0000000..d1c3b47
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_HEATMAPS_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251589
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetHeatMapsDirectly}的输入参数
+ * @date 2020/11/10
+ **/
+
+
+public class NET_IN_GET_HEATMAPS_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *     DWORD dwSize;
+     *     int  nChannel;
+     */
+    public int dwSize;
+    public int nChannel;                           // 通道号, 通道号要与订阅时一致, -1除外
+
+    public NET_IN_GET_HEATMAPS_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..4e2221e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取录播主机通道输入媒体介质入参 ,对应接口{@link NetSDKLib#CLIENT_GetInputChannelMedia}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:00
+ */
+public class NET_IN_GET_INPUT_CHANNEL_MEDIA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 通道号
+     */
+    public int[] nChannel = new int[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_IN_GET_INPUT_CHANNEL_MEDIA() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_LASER_DISTANCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_LASER_DISTANCE.java
new file mode 100644
index 0000000..d3be979
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_LASER_DISTANCE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetLaserDistance 接口入参
+ * @date 2023/04/21 09:16:51
+ */
+public class NET_IN_GET_LASER_DISTANCE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号,从0开始
+     */
+    public int nChannel;
+
+    public NET_IN_GET_LASER_DISTANCE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_OUTPUT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_OUTPUT_STATE.java
new file mode 100644
index 0000000..85b8fcc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_OUTPUT_STATE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取输出状态 输入参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE 
+* @origin autoTool
+* @date 2023/08/09 16:06:48
+*/
+public class NET_IN_GET_OUTPUT_STATE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道类型 {@link com.netsdk.lib.enumeration.EM_OUTPUT_TYPE}
+*/
+public			int					emType;
+
+public NET_IN_GET_OUTPUT_STATE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java
new file mode 100644
index 0000000..0dee5f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_POPULATION_STATISTICS.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5 10:06
+ * CLIENT_GetPopulationStatistics 接口输入参数
+ */
+public class NET_IN_GET_POPULATION_STATISTICS extends NetSDKLib.SdkStructure{
+    public  int dwSize;                     	// 结构体大小
+
+    public NET_IN_GET_POPULATION_STATISTICS() {
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..a5416d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetPrivacyMasking 输入参数
+ * @date 2022/07/21 16:58:24
+ */
+public class NET_IN_GET_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 本次从第几个遮档块开始获取
+	 */
+	public int nOffset;
+	/**
+	 * 本次获取多少个遮档块信息,最大不超过24
+	 */
+	public int nLimit;
+
+	public NET_IN_GET_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..8ac7994
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetPrivacyMaskingEnable 输入参数
+ * @date 2022/07/21 17:15:29
+ */
+public class NET_IN_GET_PRIVACY_MASKING_ENABLE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_GET_PRIVACY_MASKING_ENABLE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..5fdf5cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 获取标定后的冲洗信息, 入参
+ * @since : Created in 2021/11/29 10:47
+ */
+
+public class NET_IN_GET_PTZ_WASH_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道ID
+     */
+    public int nChannelID;
+
+    public NET_IN_GET_PTZ_WASH_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java
new file mode 100644
index 0000000..4606341
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_REAL_PREVIEW_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取真实预览通道号 入参 {@link NetSDKLib#CLIENT_GetRealPreviewChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/18 9:38
+ */
+public class NET_IN_GET_REAL_PREVIEW_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 需要获取的通道数
+     */
+    public int nChannelCount;
+    /**
+     * 逻辑通道信息,下标为将要获取的真实通道数
+     */
+    public NET_LOGIC_CHANNEL_INFO[] stuChannelInfo = new NET_LOGIC_CHANNEL_INFO[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_IN_GET_REAL_PREVIEW_CHANNEL() {
+        dwSize = this.size();
+        for (int i = 0; i < stuChannelInfo.length; i++) {
+            stuChannelInfo[i] = new NET_LOGIC_CHANNEL_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RECORD_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RECORD_STATE.java
new file mode 100644
index 0000000..343dfd9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RECORD_STATE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取录像状态 入参 {@link NetSDKLib#CLIENT_GetRecordState}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/13 20:26
+ */
+public class NET_IN_GET_RECORD_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+
+    public NET_IN_GET_RECORD_STATE() {
+        this.dwSize = size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java
new file mode 100644
index 0000000..94f4869
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscRunningInfo 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_GET_RUNNING_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  查询类型,按位表示: bit0:运行状态 bit1:控制方式 bit2:车道功能状态 bit3:车道/匝道控制状态信息 bit4:当前信号方案色步信息 bit5: 下一个周期信号方案色步信息
+     */
+    public int nType;
+
+    public NET_IN_GET_RUNNING_INFO(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java
new file mode 100644
index 0000000..52e7ae6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_RUNNING_MODE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscRunningMode 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_GET_RUNNING_MODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_IN_GET_RUNNING_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java
new file mode 100644
index 0000000..9ebee1b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_SMOKE_DATA.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSmokeData 入参
+ * @date 2022/10/17 13:45:09
+ */
+public class NET_IN_GET_SMOKE_DATA extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_GET_SMOKE_DATA() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_STATEMANAGER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_STATEMANAGER_INFO.java
new file mode 100644
index 0000000..249f8b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_STATEMANAGER_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetStateManager 接口入参
+ * @date 2023/05/11 14:18:32
+ */
+public class NET_IN_GET_STATEMANAGER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 状态枚举 {@link com.netsdk.lib.enumeration.EM_STATEMANAGER_STATE}
+	 */
+	public int emState;
+
+	public NET_IN_GET_STATEMANAGER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java
new file mode 100644
index 0000000..aac9883
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_TEMPERATUREEX.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_FaceBoard_GetTemperatureEx的入参
+ * @date 2022/05/12 16:28:47
+ */
+public class NET_IN_GET_TEMPERATUREEX extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 温度类型 {@link com.netsdk.lib.enumeration.EM_TEMPERATUREEX_TYPE}
+	 */
+	public int emTemperatureType;
+
+	public NET_IN_GET_TEMPERATUREEX() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java
new file mode 100644
index 0000000..9c62c7e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VAULTDOOR_STATE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   CLIENT_GetVaultDoorState 的输入参数 
+* @date 2022/08/10 11:38:37
+*/
+public class NET_IN_GET_VAULTDOOR_STATE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_IN_GET_VAULTDOOR_STATE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..eae57c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 获取热度图数据接口入参,
+ * @date 2020/9/21
+ */
+public class NET_IN_GET_VIDEOSTAT_HEATMAP extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小
+     */
+    public int dwSize;
+    /**
+     * 计划(预置点,仅球机有效,范围1~MaxNumberStatPlan)
+     */
+    public int nPlanID;
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * Ai热度图类型,枚举值类型{@link com.netsdk.lib.enumeration.EM_HEATMAP_TYPE}
+     */
+    public int emHeatMapType;
+    public NET_IN_GET_VIDEOSTAT_HEATMAP(){
+        this.dwSize=size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VTO_MANAGER_RELATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VTO_MANAGER_RELATION.java
new file mode 100644
index 0000000..34190c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_VTO_MANAGER_RELATION.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetVTOManagerRelation 入参
+ * @origin autoTool
+ * @date 2023/10/19 14:16:46
+ */
+public class NET_IN_GET_VTO_MANAGER_RELATION extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * / 开始查询的记录偏移量
+	 */
+	public int nOffset;
+
+	public NET_IN_GET_VTO_MANAGER_RELATION() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..7f0b7bf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_GetXRayMultiLevelDetectCFG 的输入参数 
+* @date 2022/12/01 16:20:33
+*/
+public class NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public NET_IN_GET_XRAY_MULTILEVEL_DETECT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ZONE_ARMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ZONE_ARMODE_INFO.java
new file mode 100644
index 0000000..1eb949c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GET_ZONE_ARMODE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetZoneArmMode 接口入参 
+* @origin autoTool
+* @date 2023/08/09 11:16:07
+*/
+public class NET_IN_GET_ZONE_ARMODE_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+要操作的防区号列表个数
+*/
+public			int					nZoneNum;
+/** 
+防区号,数组中第一个元素为-1表示获取所有通道的布撤防状态
+*/
+public			int[]					nZones=new int[256];
+
+public			NET_IN_GET_ZONE_ARMODE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java
new file mode 100644
index 0000000..99512b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_GOTO_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GotoPrivacyMasking 输入参数
+ * @date 2022/07/21 17:19:47
+ */
+public class NET_IN_GOTO_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 遮档块编号,从0开始
+	 */
+	public int nIndex;
+
+	public NET_IN_GOTO_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_INSERT_MULTI_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_INSERT_MULTI_TALK_DEV.java
new file mode 100644
index 0000000..8b19592
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_INSERT_MULTI_TALK_DEV.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_InsertMultiTalkDev 入参
+ * @origin autoTool
+ * @date 2023/10/26 09:34:53
+ */
+public class NET_IN_INSERT_MULTI_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 新增的个数
+     */
+    public int nInsertInfoNum;
+    /**
+     * / 添加的设备信息
+     */
+    public NET_TALK_DEV_DETAIL_INFO[] stuInsertInfo = new NET_TALK_DEV_DETAIL_INFO[128];
+
+    public NET_IN_INSERT_MULTI_TALK_DEV() {
+        for (int i = 0; i < stuInsertInfo.length; i++) {
+            stuInsertInfo[i] = new NET_TALK_DEV_DETAIL_INFO();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java
new file mode 100644
index 0000000..6db7e62
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_FIND_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_IVSEventFind接口入参 
+* @date 2022/11/02 13:47:07
+*/
+public class NET_IN_IVSEVENT_FIND_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+报警诊断类型
+0:全部
+1:未处理
+2:正确
+3:错误
+4:重复正确报警
+5:重复错误报警
+*/
+public			int					nVaild;
+/** 
+查询开始时间
+*/
+public NET_TIME stStartTime=new NET_TIME();
+/** 
+查询结束时间
+*/
+public NET_TIME stEndTime=new NET_TIME();
+/** 
+通道号列表
+*/
+public			int[]					nChannelList=new int[128];
+/** 
+nChannelList中有效通道号个数,填0表示查询所有通道号
+*/
+public			int					dwChannelCnt;
+/** 
+dwEventCodeList中有效的事件类型个数
+*/
+public			int					dwEventCodeCnt;
+/** 
+智能事件类型列表,参考 EVENT_IVS_ALL 这个宏下面的智能事件宏定义
+注意,并非所有的事件都能查询,需要根据所用的IVS设备支持的情况,填写对应的智能事件类型
+*/
+public			int[]					dwEventCodeList=new int[128];
+
+public NET_IN_IVSEVENT_FIND_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java
new file mode 100644
index 0000000..b8c0539
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_IVSEVENT_NEXTFIND_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_IVSEventNextFind接口入参 
+* @date 2022/11/02 13:50:37
+*/
+public class NET_IN_IVSEVENT_NEXTFIND_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+查询起点偏移
+*/
+public			int					nStartIndex;
+/** 
+单次查询返回数量
+*/
+public			int					nLimit;
+
+public NET_IN_IVSEVENT_NEXTFIND_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_LIGHTINGCONTROL_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_LIGHTINGCONTROL_CAPS.java
new file mode 100644
index 0000000..9ed9596
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_LIGHTINGCONTROL_CAPS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 获取补光灯能力入参(对应 : NET_LIGHTINGCONTROL_CAPS)
+ * @origin autoTool
+ * @date 2023/10/19 17:05:46
+ */
+public class NET_IN_LIGHTINGCONTROL_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * /结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 通道号
+     */
+    public int nChannel;
+
+    public NET_IN_LIGHTINGCONTROL_CAPS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MAKE_TOKEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MAKE_TOKEN.java
new file mode 100644
index 0000000..b43ade9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MAKE_TOKEN.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   获取token入参 
+* @date 2022/10/12 11:10:34
+*/
+public class NET_IN_MAKE_TOKEN extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+客户端唯一标示符
+*/
+public			byte[]					szUUID=new byte[128];
+/** 
+Token保活时间, 范围60~86400
+*/
+public			int					nKeepLiveTime;
+
+public			NET_IN_MAKE_TOKEN(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MANUAL_TEST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MANUAL_TEST.java
new file mode 100644
index 0000000..ea5e490
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MANUAL_TEST.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ManualTest 接口输入参数
+ * @date 2023/03/16 08:53:00
+ */
+public class NET_IN_MANUAL_TEST extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 测试ID,每次下发的测试ID不一样
+	 */
+	public int dwTestID;
+	/**
+	 * 测试的通道号,可以对应某一个要测试的SIA服务器
+	 */
+	public int nChannel;
+
+	public NET_IN_MANUAL_TEST() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..d0aa9a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MINI_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 订阅mini雷达的报警点信息入参(对应接口 CLIENT_AttachMiniRadarAlarmPointInfo)
+ * @date 2022/08/04 16:59:36
+ */
+public class NET_IN_MINI_RADAR_ALARMPOINTINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 雷达报警点信息回调
+     */
+    public NetSDKLib.fMiniRadarAlarmPointInfoCallBack cbAlarmPointInfo;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+
+    public NET_IN_MINI_RADAR_ALARMPOINTINFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java
new file mode 100644
index 0000000..234d85f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ModifyAlarmUser 接口输入参数
+ * @date 2023/03/16 10:58:09
+ */
+public class NET_IN_MODIFY_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 用户ID,用户唯一标识
+	 */
+	public byte[] szUserID = new byte[64];
+	/**
+	 * 修改的用户信息
+	 */
+	public NET_ALARM_USER stuAlarmUser = new NET_ALARM_USER();
+
+	public NET_IN_MODIFY_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java
new file mode 100644
index 0000000..0376408
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_ALARM_USER_PASSWORD.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ModifyAlarmUserPassword 接口输入参数
+ * @date 2023/03/16 11:01:47
+ */
+public class NET_IN_MODIFY_ALARM_USER_PASSWORD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 用户ID,用户唯一标识
+	 */
+	public byte[] szUserID = new byte[64];
+	/**
+	 * 旧密码
+	 */
+	public byte[] szOldPassword = new byte[64];
+	/**
+	 * 新密码
+	 */
+	public byte[] szNewPassword = new byte[64];
+
+	public NET_IN_MODIFY_ALARM_USER_PASSWORD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_COURSE.java
new file mode 100644
index 0000000..d808d4b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_COURSE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 修改课程记录 入参指针 {@link NetSDKLib#CLIENT_ModifyCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 16:37
+ */
+public class NET_IN_MODIFY_COURSE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程数量
+     */
+    public int nCourseNum;
+    /**
+     * 课程信息
+     */
+    public NET_COURSE[] stuCourseInfo = new NET_COURSE[64];
+    /**
+     * 课程ID
+     */
+    public int[] nId = new int[64];
+
+    public NET_IN_MODIFY_COURSE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCourseInfo.length; i++) {
+            stuCourseInfo[i] = new NET_COURSE();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..11e5ba0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_ModifyGroupForVehicleRegisterDB 接口输入参数
+ * @date 2022/10/21 17:30
+ */
+public class NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                         dwSize;							// 结构体大小
+    public 	NET_VEHICLE_GROUP_INFO		stuGroupInfo=new NET_VEHICLE_GROUP_INFO();				// 车辆组信息
+
+    public NET_IN_MODIFY_GROUP_FOR_VEHICLE_REG_DB(){
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..7f955e1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_PARKINGRECORD_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 修改停车记录信息 入参
+ * 接口 {@link NetSDKLib#CLIENT_ModifyParkingRecord}
+ * 出参 {@link NET_OUT_MODIFY_PARKINGRECORD_INFO}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:04
+ */
+public class NET_IN_MODIFY_PARKINGRECORD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 老的记录
+     */
+    public NET_PARKINGRECORD_INFO stuOld;
+    /**
+     * 新的记录
+     */
+    public NET_PARKINGRECORD_INFO stuNew;
+
+    public NET_IN_MODIFY_PARKINGRECORD_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..937818f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_ModifyVehicleForVehicleRegisterDB 接口输入参数
+ * @date 2022/10/22 10:24
+ */
+public class NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           			dwSize;							// 结构体大小
+    public NetSDKLib.NET_VEHICLE_INFO stuVehicleInfo=new NetSDKLib.NET_VEHICLE_INFO();				// 车辆信息
+    public NET_IN_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java
new file mode 100644
index 0000000..977048a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_COLL_SCHD.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.NET_MAX_COLLECTION_NUM;
+
+/**
+ * 获取预案时间表 入参 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:24
+ */
+public class NET_IN_MONITORWALL_GET_COLL_SCHD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * TRUE-查询所有预案, 不需要指定预案名称. FALSE-查询名称所对应的预案
+     */
+    public int bAllCollections;
+    /**
+     * 预案数, bAllCollections为FALSE时有效
+     */
+    public int nCollectionNum;
+    /**
+     * 预案名称
+     */
+    public NET_MONITORWALL_COLLECTION_NAME[] szCollections = new NET_MONITORWALL_COLLECTION_NAME[NET_MAX_COLLECTION_NUM];
+    /**
+     * 电视墙ID
+     */
+    public int nMonitorWallID;
+
+    public NET_IN_MONITORWALL_GET_COLL_SCHD() {
+        dwSize = this.size();
+        for (int i = 0; i < szCollections.length; i++) {
+            szCollections[i] = new NET_MONITORWALL_COLLECTION_NAME();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java
new file mode 100644
index 0000000..05ea2ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_GET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MONITORWALL_NUM;
+
+/**
+ * 电视墙获取使能 入参
+ * 对应出参 {@link NET_OUT_MONITORWALL_GET_ENABLE}
+ * 对应枚举 {@link NET_MONITORWALL_OPERATE_TYPE#NET_MONITORWALL_OPERATE_GET_ENABLE}
+ * 对应接口 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:04
+ */
+public class NET_IN_MONITORWALL_GET_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 要查询的电视墙数量, -1表示查询所有电视墙
+     */
+    public int nMonitorWallNum;
+    /**
+     * 电视墙名称, nMonitorWallNum > 0 时有效
+     */
+    public NET_MONITORWALL_NAME[] szNames = new NET_MONITORWALL_NAME[NET_MAX_MONITORWALL_NUM];
+
+    public NET_IN_MONITORWALL_GET_ENABLE() {
+        dwSize = this.size();
+        for (int i = 0; i < szNames.length; i++) {
+            szNames[i] = new NET_MONITORWALL_NAME();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java
new file mode 100644
index 0000000..3f01c19
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_COLL_SCHD.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.NET_MAX_COLLECTION_NUM;
+
+/**
+ * 设置预案时间表 入参 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 10:34
+ */
+public class NET_IN_MONITORWALL_SET_COLL_SCHD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 预案数
+     */
+    public int nCollectionNum;
+    /**
+     * 预案时间表
+     */
+    public MONITORWALL_COLLECTION_SCHEDULE[] stuCollShedule = new MONITORWALL_COLLECTION_SCHEDULE[NET_MAX_COLLECTION_NUM];
+    /**
+     * 电视墙ID
+     */
+    public int nMonitorWallID;
+
+    public NET_IN_MONITORWALL_SET_COLL_SCHD() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCollShedule.length; i++) {
+            stuCollShedule[i] = new MONITORWALL_COLLECTION_SCHEDULE();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java
new file mode 100644
index 0000000..e3718c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MONITORWALL_SET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MONITORWALL_NUM;
+
+/**
+ * 电视墙设置使能 入参
+ * 对应出参 {@link NET_OUT_MONITORWALL_SET_ENABLE}
+ * 对应枚举 {@link NET_MONITORWALL_OPERATE_TYPE#NET_MONITORWALL_OPERATE_SET_ENABLE}
+ * 对应接口 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:25
+ */
+public class NET_IN_MONITORWALL_SET_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 要设置的电视墙数量
+     */
+    public int nMonitorWallNum;
+    /**
+     * 电视墙使能
+     */
+    public NET_MONITORWALL_ENABLE_INFO[] stuEnable = new NET_MONITORWALL_ENABLE_INFO[NET_MAX_MONITORWALL_NUM];
+
+    public NET_IN_MONITORWALL_SET_ENABLE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuEnable.length; i++) {
+            stuEnable[i] = new NET_MONITORWALL_ENABLE_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java
new file mode 100644
index 0000000..b8b56d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MOVE_DIRECTLY_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 云台三维定位, 对应NET_EXTPTZ_MOVE_DIRECTLY枚举
+ * @origin autoTool
+ * @date 2023/03/07 16:38:49
+ */
+public class NET_IN_MOVE_DIRECTLY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 屏幕坐标
+     */
+    public NetSDKLib.PTZ_SPEED_UNIT stuScreen = new NetSDKLib.PTZ_SPEED_UNIT();
+    /**
+     * 云台运行速度
+     */
+    public NetSDKLib.PTZ_SPEED_UNIT stuSpeed = new NetSDKLib.PTZ_SPEED_UNIT();
+
+    public NET_IN_MOVE_DIRECTLY_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java
new file mode 100644
index 0000000..eadb885
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_CLOSE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 关闭主从式跟踪器实例入参
+ * @date 2022/09/14 14:04:15
+ */
+public class NET_IN_MSGROUP_CLOSE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄
+	 */
+	public int dwToken;
+
+	public NET_IN_MSGROUP_CLOSE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java
new file mode 100644
index 0000000..a5d469d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_LOCATE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 联动主从跟踪组入参
+ * @date 2022/09/14 13:55:52
+ */
+public class NET_IN_MSGROUP_LOCATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄
+	 */
+	public int dwToken;
+	/**
+	 * 主机坐标
+	 */
+	public NetSDKLib.DH_POINT stuPoint = new NetSDKLib.DH_POINT();
+	/**
+	 * 鱼眼圆心坐标与半径, 依次为[横坐标, 纵坐标, 半径]
+	 */
+	public short[] snMasterInfo = new short[3];
+
+	public NET_IN_MSGROUP_LOCATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java
new file mode 100644
index 0000000..8826c57
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_OPEN_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 打开主从跟踪组入参
+ * @date 2022/09/14 13:52:40
+ */
+public class NET_IN_MSGROUP_OPEN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大
+	 */
+	public int dwSize;
+	/**
+	 * 设备组号
+	 */
+	public int nGroupID;
+	/**
+	 * 从机序号
+	 */
+	public int nSlaveID;
+	/**
+	 * 对应主从组的主机序号, 例如三枪一球,则该字段取值0、1和2
+	 */
+	public int nMasterID;
+	/**
+	 * 本地通道号,对应本地视频通道号,从0开始。(老设备及前端设备不支持多通道,设置为0)
+	 */
+	public int nChannel;
+
+	public NET_IN_MSGROUP_OPEN_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java
new file mode 100644
index 0000000..30b7018
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_RECTLOCATE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 主动跟踪主操作命令 EM_MSGROUP_OPERATE_RECTLOCATE 入参
+ * @date 2022/09/14 14:06:45
+ */
+public class NET_IN_MSGROUP_RECTLOCATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄, 从 EM_MSGROUP_OPERATE_OPEN 操作获取
+	 */
+	public int dwToken;
+	/**
+	 * 选定的矩形框坐标
+	 */
+	public NetSDKLib.NET_RECT stuRect = new NetSDKLib.NET_RECT();
+	/**
+	 * 框选的方向, 0-从左上到右下, 表示放大; 1-从右下到左上,表示缩小
+	 */
+	public int nRectDirection;
+
+	public NET_IN_MSGROUP_RECTLOCATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
new file mode 100644
index 0000000..2d9dce7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description EM_MSGROUP_OPERATE_SLAVE_POSITION_TO_MASTER 入参
+ * @date 2022/09/14 14:09:08
+ */
+public class NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄, 从 EM_MSGROUP_OPERATE_OPEN 操作获取
+	 */
+	public int dwToken;
+	/**
+	 * 从机PTZ位置,PT为真实值扩大10倍表示,Z为真实倍率扩大10倍表示
+	 */
+	public int[] nPTZ = new int[3];
+	/**
+	 * 物体在从机视频上的位置, 8192坐标系
+	 */
+	public NetSDKLib.NET_RECT stuRect = new NetSDKLib.NET_RECT();
+
+	public NET_IN_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java
new file mode 100644
index 0000000..64b9bc6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MSGROUP_TRACK_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 手动选定目标跟踪入参
+ * @date 2022/09/14 14:01:47
+ */
+public class NET_IN_MSGROUP_TRACK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄
+	 */
+	public int dwToken;
+	/**
+	 * 算法方案类型
+	 */
+	public byte[] szClass = new byte[16];
+	/**
+	 * 算法目标ID
+	 */
+	public int dwObjectID;
+
+	public NET_IN_MSGROUP_TRACK_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java
new file mode 100644
index 0000000..0eb7493
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTIFACE_DETECT_STATE.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachDetectMultiFaceState 接口输入参数
+ * @date 2022/11/21 17:53:13
+ */
+public class NET_IN_MULTIFACE_DETECT_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小
+     */
+    public int dwSize;
+    /**
+     * 用于字节对齐
+     */
+    public byte[] bReserved = new byte[4];
+    /**
+     * 回调函数
+     */
+    public NetSDKLib.fMultiFaceDetectState cbMultiFaceDetectState;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+    /**
+     * 回调函数扩展(推荐使用)
+     */
+    public NetSDKLib.fMultiFaceDetectStateEx cbMultiFaceDetectStateEx;
+    /**
+     * 查询令牌
+     */
+    public int[] nTokens = new int[10];
+    /**
+     * 查询令牌个数, 若为0,则默认订阅token为0的检测, 若为-1表示订阅全部token
+     */
+    public int nTokensNum;
+
+    public NET_IN_MULTIFACE_DETECT_STATE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..ebcc560
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_MultiAppendToVehicleRegisterDB 接口输入参数
+ * @date 2021/8/17 14:49
+ */
+public class NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+
+        public  int                           		dwSize;							// 结构体大小
+        public  int                             	nVehicleNum;					// 车辆个数
+        //public   NetSDKLib.NET_VEHICLE_INFO[] 		stuVehicleInfo= (NetSDKLib.NET_VEHICLE_INFO[])new NetSDKLib.NET_VEHICLE_INFO().toArray(1000);// 车辆信息
+        public Pointer   stuVehicleInfo; //sizeof(NET_VEHICLE_INFO)*nVehicleNum
+        public int									bReplace;						// 遇到相同记录是否覆盖, TRUE覆盖, FALSE跳过
+
+       public NET_IN_MULTI_APPEND_TO_VEHICLE_REG_DB(){
+                    this.dwSize=this.size();
+        }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java
new file mode 100644
index 0000000..7358469
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_MultiAppendToWorkSuitCompareGroup 接口输入参数
+ * @date 2022/10/08 19:49:53
+ */
+public class NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 工装合规样本个数, 由用户指定大小
+	 */
+	public int nWorkSuitSampleNum;
+	/**
+	 * 工装合规样本信息, 内存由用户申请, 申请大小为nWorkSuitSampleNum * sizeof(NET_WORKSUIT_SAMPLE_INFO)
+	 */
+	public Pointer pstWorkSuitSampleInfo;
+	/**
+	 * 工装合规导入标识信息
+	 */
+	public NET_WORKSUIT_APPEND_IDENTI_INFO stuAppendIdentiInfo = new NET_WORKSUIT_APPEND_IDENTI_INFO();
+	/**
+	 * 工装合规导入图片缓冲区, 用于存放需要导入的图片数据, 内存由用户申请
+	 */
+	public Pointer pszImageBuffer;
+	/**
+	 * 图片缓冲区大小
+	 */
+	public int nImageBufLen;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+
+	public NET_IN_MULTI_APPEND_TO_WORKSUIT_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java
new file mode 100644
index 0000000..9de03e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NAS_DIRECTORY_GET_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_NASDirectoryGetInfo接口入参 
+* @date 2022/09/22 17:26:59
+*/
+public class NET_IN_NAS_DIRECTORY_GET_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+/**
+ * 共享文件夹名称, 用于创建设备组件实例, 必须填写
+*/
+public  byte[]       szName=new byte[128];
+
+public NET_IN_NAS_DIRECTORY_GET_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java
new file mode 100644
index 0000000..faf518d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_GET_MOBILE_INTERFACE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description EM_PRC_NETAPP_TYPE_GET_MOBILE_INTERFACE 入参
+ * @date 2021/9/17
+ */
+public class NET_IN_NETAPP_GET_MOBILE_INTERFACE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_IN_NETAPP_GET_MOBILE_INTERFACE() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_LINK_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_LINK_STATUS.java
new file mode 100644
index 0000000..2ab9c15
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_LINK_STATUS.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输入参数(获取物理链路状态) 
+* @origin autoTool
+* @date 2023/06/19 09:28:37
+*/
+public class NET_IN_NETAPP_LINK_STATUS extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+网卡名
+*/
+public			byte[]					szEthName=new byte[64];
+
+public NET_IN_NETAPP_LINK_STATUS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_NET_DATA_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_NET_DATA_STAT.java
new file mode 100644
index 0000000..d326d5b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_NETAPP_NET_DATA_STAT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输入参数(获取协议栈统计数据) 
+* @origin autoTool
+* @date 2023/06/19 09:23:51
+*/
+public class NET_IN_NETAPP_NET_DATA_STAT extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+网卡名
+*/
+public			byte[]					szEthName=new byte[64];
+
+public NET_IN_NETAPP_NET_DATA_STAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java
new file mode 100644
index 0000000..2e53341
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYGRADE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  通过危险物等级统计的包裹信息
+ * @date 2021/7/1
+ */
+public class NET_IN_PACKAGE_STATISTICS_BYGRADE extends NetSDKLib.SdkStructure{
+
+
+    /**
+     *  危险物等级,参考枚举{@link com.netsdk.lib.NetSDKLib.EM_DANGER_GRADE_TYPE }
+     */
+        public int emGrade;										// 危险物等级
+        public int				nCount;											// 危险物数量
+        public byte[]			byReserved=new byte[64];									// 预留字段
+
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java
new file mode 100644
index 0000000..8904fac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PACKAGE_STATISTICS_BYTYPE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description   按危险类型统计的信息
+ * @date 2021/7/1
+ */
+public class NET_IN_PACKAGE_STATISTICS_BYTYPE extends NetSDKLib.SdkStructure{
+
+    /**
+     *  危险物等级,参考枚举{@link com.netsdk.lib.NetSDKLib.EM_INSIDE_OBJECT_TYPE }
+     */
+    public int emType;  	// 危险物类型
+    public int nCount;      // 危险物数量
+    public byte[] byReserved=new byte[64]; 	// 预留字段
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java
new file mode 100644
index 0000000..4503059
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PERSON_INFO_INPUT_RESULT.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * CLIENT_SetPersonInfoInputResult 输入参数
+ */
+public class NET_IN_PERSON_INFO_INPUT_RESULT extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道ID
+	 */
+	public int nChannelID;
+	/**
+	 * 0 : 成功 1 : 人员信息不在人员库中
+	 */
+	public int nResult;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved = new byte[4];
+	/**
+	 * 证件号码
+	 */
+	public byte[] szCitizenID = new byte[64];
+	/**
+	 * 设备展示颜色 com.netsdk.lib.enumeration.EM_SHOW_COLOR
+	 */
+	public int emColor;
+	/**
+	 * 0:实时采集的数据 1:离线采集的数据
+	 */
+	public int nDataType;
+
+	public NET_IN_PERSON_INFO_INPUT_RESULT() {
+		this.dwSize = this.size();
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java
new file mode 100644
index 0000000..c66a2fc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PRE_UPLOAD_REMOTE_FILE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ *
+ * @author 47081
+ * @version 1.0
+ * @description CLIENT_PreUploadRemoteFile 接口输入参数(设置文件长度)
+ * @date 2020/6/10
+ */
+public class NET_IN_PRE_UPLOAD_REMOTE_FILE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int                  dwSize;
+    /**
+     * 源文件路径
+     */
+    public String               pszFileSrc;
+    /**
+     * 保存在设备端的文件路径
+     */
+    public String               pszFileDst;
+
+    public NET_IN_PRE_UPLOAD_REMOTE_FILE() {
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java
new file mode 100644
index 0000000..ed805ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_CENTER_GPS.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_CENTER_GPS 类型接口输入参数 
+* @date 2022/05/18 10:44:10
+*/
+public class NET_IN_PTZBASE_GET_CENTER_GPS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道号从0开始
+*/
+public			int					nChannel;
+/** 
+计算GPS信息标志位,为TRUE时使用dPosition中的位置信息来进行计算,为FALSE时使用当前云台PT位置信息计算GPS
+*/
+public			int					bPosEnable;
+/** 
+云台方向信息,第一个元素为水平角度,第二个元素为垂直角度
+*/
+public			double[]					dPosition=new double[2];
+
+public NET_IN_PTZBASE_GET_CENTER_GPS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java
new file mode 100644
index 0000000..9eb6cd9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_HFOV_VALUE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE 类型接口输入参数 
+* @date 2022/05/18 10:21:59
+*/
+public class NET_IN_PTZBASE_GET_HFOV_VALUE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道号从0开始
+*/
+public			int					nChannel;
+/** 
+镜头变倍值,归一化到0~1
+*/
+public			float					fZoom;
+
+public NET_IN_PTZBASE_GET_HFOV_VALUE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java
new file mode 100644
index 0000000..e52ec4b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_GET_VFOV_VALUE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_VFOV_VALUE 类型接口输入参数 
+* @date 2022/05/18 10:38:04
+*/
+public class NET_IN_PTZBASE_GET_VFOV_VALUE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道号从0开始
+*/
+public			int					nChannel;
+/** 
+镜头变倍值,归一化到0~1
+*/
+public			float					fZoom;
+
+public NET_IN_PTZBASE_GET_VFOV_VALUE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java
new file mode 100644
index 0000000..b373e9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_MOVEABSOLUTELY_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @description:
+ * @author: 251589
+ * @time: 2020/11/17 19:41
+ */
+public class NET_IN_PTZBASE_MOVEABSOLUTELY_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    /**
+     * 1 表示显示倍率; 2 保留,内部用; 3 表示映射倍率值; 如为 0 则默认映射倍率值
+     */
+    public int nZoomFlag;
+
+    /**
+     * 云台绝对移动位置云台绝对定位参数,扩大10倍
+     * 云台水平坐标(0~3600)
+     * 云台垂直坐标(-1800~1800)
+     * 倍率值,范围:nZoomFlag为1时(0~最大显示倍率*10),nZoomFlag为3时(0~16384)
+     */
+    public NetSDKLib.NET_PTZSPACE_UNNORMALIZED stuPosition=new NetSDKLib.NET_PTZSPACE_UNNORMALIZED();
+
+    /**
+     * 若无speed则表示默认速度运动 P,T,以0.01度/秒为单位,扩大100倍显示,
+     * 范围与PtzSpeedLevel中的范围保持一致[0,100000],
+     * 水平和垂直分别最大不会超过PtzSpeedLevel中最大档位水平和垂直的最大值,zoom变倍速度为0~100。
+     */
+    public NetSDKLib.NET_PTZSPACE_UNNORMALIZED stuSpeed=new NetSDKLib.NET_PTZSPACE_UNNORMALIZED();
+
+    /**
+     * 编码
+     */
+    public int	nRegionCode;
+
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved = new byte[444];
+
+    public NET_IN_PTZBASE_MOVEABSOLUTELY_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java
new file mode 100644
index 0000000..c7ae59a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置当前位置聚焦值
+ * 对应接口 {@link NetSDKLib#CLIENT_DHPTZControlEx2}
+ * 对应枚举 {@link NetSDKLib.NET_EXTPTZ_ControlType#NET_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE}
+ *
+ * @author : 47040
+ * @since : Created in 2021/3/26 17:04
+ */
+public class NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    /**
+     * 聚焦映射值, 取值范围 [0, 28672]
+     */
+    public int nfocusMapValue;
+
+    public NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java
new file mode 100644
index 0000000..ba2b598
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_CURRENT_FOV_VALUE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo NET_QUERY_PTZ_CURRENT_FOV_VALUE 类型接口输入参数
+ * @date 2022/09/22 15:28:44
+ */
+public class NET_IN_PTZ_CURRENT_FOV_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+
+	public NET_IN_PTZ_CURRENT_FOV_VALUE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_SET_ZOOM_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_SET_ZOOM_VALUE.java
new file mode 100644
index 0000000..e8188a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_SET_ZOOM_VALUE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_PTZSetZoomValue 接口输入参数
+ * @origin autoTool
+ * @date 2023/10/16 14:11:21
+ */
+public class NET_IN_PTZ_SET_ZOOM_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 *  结构体大小
+	 */
+	public int dwSize;
+	/**
+	 *  通道号, 范围 0~设备通道数
+	 */
+	public int nChannel;
+	/**
+	 *  变倍值,扩大10倍表示
+	 */
+	public int nValue;
+
+	public NET_IN_PTZ_SET_ZOOM_VALUE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java
new file mode 100644
index 0000000..d20949f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PTZ_STATUS_PROC.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.fPTZStatusProcCallBack;
+
+/**
+ * @author 251823
+ * @description 订阅云台元数据接口输入参数
+ * @date 2021/02/26
+ */
+public class NET_IN_PTZ_STATUS_PROC extends NetSDKLib.SdkStructure{
+	 /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  云台通道
+     */
+    public int nChannel;
+
+    /**
+     *  状态回调函数
+     */
+    public fPTZStatusProcCallBack cbPTZStatusProc;
+
+    /**
+     *  用户数据
+     */
+    public long dwUser;
+
+    public NET_IN_PTZ_STATUS_PROC(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
new file mode 100644
index 0000000..300d12c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @description CLIENT_PushAnalysePictureFileByRule 接口输入参数
+ * @date 2022/06/28 19:02:02
+ */
+public class NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 任务ID
+     */
+    public int nTaskID;
+    /**
+     * 推送图片信息,文件列表支持url路径和二进制数据两种方式,但是每次只能选择一种方式,即URL和Offset/Length应该是两者有且只有一个
+     * 用户自定义空间  NET_PUSH_PICTURE_BYRULE_INFO
+     */
+    public Pointer pstuPushPicByRuleInfos;
+    /**
+     * 推送图片数量,用户定义
+     */
+    public int nPicNum;
+    /**
+     * 数据缓冲区长度, 单位:字节
+     */
+    public int nBinBufLen;
+    /**
+     * 数据缓冲区, 由用户申请和释放,选择nOffset/nLength方式,需要传送图片数据
+     */
+    public Pointer pBinBuf;
+
+    public NET_IN_PUSH_ANALYSE_PICTURE_FILE_BYRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERYNEXTLOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERYNEXTLOG.java
new file mode 100644
index 0000000..8108b09
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERYNEXTLOG.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryNextLog 输入参数
+ * @date 2023/06/12 09:23:40
+ */
+public class NET_IN_QUERYNEXTLOG extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 需要查询的日志条数
+	 */
+	public int nGetCount;
+
+	public NET_IN_QUERYNEXTLOG() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE.java
new file mode 100644
index 0000000..4f83761
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 查询课程 入参 {@link NetSDKLib#CLIENT_QueryCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 21:08
+ */
+public class NET_IN_QUERY_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询句柄号
+     */
+    public int nFindID;
+    /**
+     * 开始查询偏移
+     */
+    public int nOffset;
+    /**
+     * 需要查询的个数
+     */
+    public int nCount;
+
+    public NET_IN_QUERY_COURSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java
new file mode 100644
index 0000000..bb6b87b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 查询课程视频信息入参 {@link NetSDKLib#CLIENT_DoQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:40
+ */
+public class NET_IN_QUERY_COURSEMEDIA_FILE extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询ID号
+     */
+    public int nfindID;
+    /**
+     * 开始查询偏移
+     */
+    public int nOffset;
+    /**
+     * 需要查询的个数
+     */
+    public int nCount;
+
+    public NET_IN_QUERY_COURSEMEDIA_FILE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java
new file mode 100644
index 0000000..eb9b0d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILECLOSE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 关闭课程视频查询入参 {@link NetSDKLib#CLIENT_CloseQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:03
+ */
+public class NET_IN_QUERY_COURSEMEDIA_FILECLOSE extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize
+     */
+    public int dwSize;
+    /**
+     * 查询ID号
+     */
+    public int nFindID;
+
+    public NET_IN_QUERY_COURSEMEDIA_FILECLOSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java
new file mode 100644
index 0000000..392e3ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSEMEDIA_FILEOPEN.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COURSE_LOCK_TYPE;
+import com.netsdk.lib.enumeration.EM_COURSE_RECORD_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+
+/**
+ * 开始查询课程视频信息入参 {@link NetSDKLib#CLIENT_OpenQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:24
+ */
+public class NET_IN_QUERY_COURSEMEDIA_FILEOPEN extends NetSDKLib.SdkStructure {
+
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 查询结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * 查询关键字
+     */
+    public byte[] szKeyWord = new byte[NET_COMMON_STRING_128];
+    /**
+     * 查询课程锁定类型 {@link EM_COURSE_LOCK_TYPE}
+     */
+    public int emCourseLockType;
+    /**
+     * 查询课程录像类型 {@link EM_COURSE_RECORD_TYPE}
+     */
+    public int emCourseRecordType;
+
+    public NET_IN_QUERY_COURSEMEDIA_FILEOPEN() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java
new file mode 100644
index 0000000..7602e3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_CLOSE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 结束查询课程 入参 {@link NetSDKLib#CLIENT_QueryCourseClose}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 21:27
+ */
+public class NET_IN_QUERY_COURSE_CLOSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程数量
+     */
+    public int nFindID;
+
+    public NET_IN_QUERY_COURSE_CLOSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java
new file mode 100644
index 0000000..8c0020b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_QUERY_COURSE_OPEN.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 开始查询课程 入参 {@link NetSDKLib#CLIENT_QueryCourseOpen}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 20:47
+ */
+public class NET_IN_QUERY_COURSE_OPEN extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 查询结束时间
+     */
+    public NET_TIME stuEndTime;
+
+    public NET_IN_QUERY_COURSE_OPEN() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..3018cd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.fRadarAlarmPointInfoCallBack;
+import com.sun.jna.Pointer;
+
+/**
+ * 订阅雷达的报警点信息入参(对应接口 CLIENT_AttachRadarAlarmPointInfo)
+ *
+ * @author : 119178
+ * @since : Created in 2021/2/03 13:56
+ */
+public class NET_IN_RADAR_ALARMPOINTINFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int                       dwSize;    
+	/**
+	 * 雷达报警点信息回调
+	 */
+	public fRadarAlarmPointInfoCallBack    cbAlarmPointInfo;    
+	/**
+	 * 用户数据
+	 */
+	public Pointer                      dwUser; 
+	/**
+	 * 通道号
+	 */
+	public int							nChannel;				
+	
+	  public NET_IN_RADAR_ALARMPOINTINFO() {
+          this.dwSize = this.size();
+      }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java
new file mode 100644
index 0000000..1a0704f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_CALCULATEREALSIZE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 计算图片对应的地图实际长度入参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_IN_RADAR_CALCULATEREALSIZE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 图片中线段的像素坐标
+     */
+    public NET_RADAR_PIXELLINE stuPixelLine = new NET_RADAR_PIXELLINE();
+    /**
+     * 图片中线段代表的实际长度,单位米
+     */
+    public double dDistance;
+
+    public NET_IN_RADAR_CALCULATEREALSIZE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETCAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETCAPS.java
new file mode 100644
index 0000000..5a36853
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETCAPS.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取雷达能力入参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS)
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_IN_RADAR_GETCAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 雷达ip
+     */
+    public byte[] szRadarIP = new byte[32];
+
+    public NET_IN_RADAR_GETCAPS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java
new file mode 100644
index 0000000..5e3fb36
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GETSTATUS.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取雷达状态入参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_IN_RADAR_GETSTATUS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+
+    public NET_IN_RADAR_GETSTATUS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java
new file mode 100644
index 0000000..c92f22a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_GET_RFID_MODE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_GetRadarRFIDMode接口入参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_IN_RADAR_GET_RFID_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_IN_RADAR_GET_RFID_MODE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java
new file mode 100644
index 0000000..fcbaeab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_MANUAL_TRACK.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_RadarManualTrack接口入参
+ * @date 2021/10/21 20:03
+ */
+public class NET_IN_RADAR_MANUAL_TRACK extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/** 需要跟踪的球机 */
+	public byte[] szSDIP = new byte[32];
+	/** 需要跟踪目标的轨迹号 */
+	public int nTrackID;
+	/** 跟踪时间,单位为s */
+	public int nTime;
+	/** 跟踪动作, 0:停止手动跟踪, 1:开始手动跟踪 */
+	public int nAction;
+	/** 经纬度坐标,用整型传输,扩大1000000倍,小数点后6位有效,数组0表示经度,数组1表示纬度 */
+	public int[] arrCoordinate = new int[2];
+	/** 手动跟踪的原因, bit0表示超速 bit1表示是否AIS匹配 bit2表示是否禁行 bit3表示是否逆行 (bit位置1表示需要手动跟踪,全0表示普通跟踪命令) */
+	public int nAlarmType;
+	/** 航速:要跟踪目标的速度,单位km/h 扩大10000 倍下发(精度0.0001) */
+	public int nSpeed;	
+	/** 航向:正北方向为0° 顺时针为正 0-360°,扩大100倍下发 */
+	public int nAzimuth;
+	/** 通道号 */
+	public int nChannel;
+
+	public NET_IN_RADAR_MANUAL_TRACK() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java
new file mode 100644
index 0000000..413f9e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SETCALIBRATION.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷球校准配置入参(对应 EM_RADAR_OPERATE_TYPE_SETCALIBRATION)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_IN_RADAR_SETCALIBRATION extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[4];
+    /**
+     * 图片中校准点的像素坐标
+     */
+    public NET_RADAR_PIXELPOINT stuPixelPoint = new NET_RADAR_PIXELPOINT();
+    /**
+     * 球机的安装高度,单位米
+     */
+    public double dInstallHeigt;
+
+    public NET_IN_RADAR_SETCALIBRATION() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java
new file mode 100644
index 0000000..dd1e342
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_SET_RFID_MODE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_SetRadarRFIDMode接口入参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_IN_RADAR_SET_RFID_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * RFID规则模式,0:设备单独工作时使用,全部为有效卡;1:平台接入时使用,区分RFID卡片有效性
+     */
+    public int nMode;
+
+    public NET_IN_RADAR_SET_RFID_MODE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java
new file mode 100644
index 0000000..6da2c09
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADAR_STARTUPGRADE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达开始升级通知入参(对应 EM_RADAR_OPERATE_TYPE_STARTUPGRADE)
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_IN_RADAR_STARTUPGRADE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_IN_RADAR_STARTUPGRADE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
new file mode 100644
index 0000000..76cd409
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description CLIENT_GetRadiometryCurrentHotColdSpotInfo 入参
+ * @origin autoTool
+ * @date 2023/08/07 13:51:18
+ */
+public class NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 通道号:只有热成像通道有效
+     */
+    public int nChannel;
+
+    public NET_IN_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOTE_SLEEP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOTE_SLEEP.java
new file mode 100644
index 0000000..a4bb38f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOTE_SLEEP.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_RemoteSleep 输入接口参数
+ * @date 2022/3/24 13:59
+ */
+public class NET_IN_REMOTE_SLEEP extends NetSDKLib.SdkStructure{
+    public int dwSize;                    // 结构体大小
+    public NET_IN_REMOTE_SLEEP(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOVE_SOFT_TOUR_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOVE_SOFT_TOUR_POINT_INFO.java
new file mode 100644
index 0000000..22cbb56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_REMOVE_SOFT_TOUR_POINT_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 接口 CLIENT_RemoveTourPoint 的输入参数
+ * @origin autoTool
+ * @date 2023/10/16 19:45:59
+ */
+public class NET_IN_REMOVE_SOFT_TOUR_POINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+    /**
+     * /云台通道号
+     */
+    public int nChannel;
+    /**
+     * / 巡航线路编号
+     */
+    public int nIndex;
+    /**
+     * / 线路上点的序号,从0开始, 如果为 -1, 追加到线路上最后位置,否则为指定序号
+     */
+    public int nPoint;
+    /**
+     * / 预置点编号,编号从1开始
+     */
+    public int nPresetIndex;
+
+    public NET_IN_REMOVE_SOFT_TOUR_POINT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..c2144a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCADA_GET_ATTRIBUTE_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_IN_SCADA_GET_ATTRIBUTE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  获取条件
+     */
+    public NET_GET_CONDITION_INFO stuCondition;
+
+    public NET_IN_SCADA_GET_ATTRIBUTE_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java
new file mode 100644
index 0000000..7d305f7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETCAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取景物点支持的能力
+ * 出参(CLIENT_ScenicSpotGetCaps 输入参数)
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotGetCaps}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 16:29
+ */
+public class NET_IN_SCENICSPOT_GETCAPS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+
+    public NET_IN_SCENICSPOT_GETCAPS_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java
new file mode 100644
index 0000000..8718241
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_GETPOINTINFOS_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 分页获取 信息标注信息列表 入参
+ * 出参 {@link NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO}
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotGetPointInfos}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 15:41
+ */
+public class NET_IN_SCENICSPOT_GETPOINTINFOS_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 从第几位开始获取(最大 255)
+     */
+    public int nOffset;
+    /**
+     * 获取几个信息点结构(从 0 开始)
+     */
+    public int nLimit;
+
+    public NET_IN_SCENICSPOT_GETPOINTINFOS_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java
new file mode 100644
index 0000000..50e0b21
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_SETPOINTINFO_INFO.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_SHAPE_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.MAX_COMMON_STRING_64;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_POLYGON_NUM;
+
+/**
+ * 设置景物点,原编号的景物点将会被覆盖 入参 出参 {@link NET_OUT_SCENICSPOT_SETPOINTINFO_INFO} 接口
+ * {@link NetSDKLib#CLIENT_ScenicSpotSetPointInfo}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 16:14
+ */
+public class NET_IN_SCENICSPOT_SETPOINTINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 信息点编号
+	 */
+	public int nIndex;
+	/**
+	 * 信息点是否生效
+	 */
+	public byte bEnable;
+	/**
+	 * 该信息点是否有子标题
+	 */
+	public byte bTitleAttribute;
+	/**
+	 * 云台方向与放大倍数 (绝对坐标)
+	 */
+	public POSTION stuPosition;
+	/**
+	 * 景物点位置
+	 */
+	public POINTCOORDINATE stuPoint;
+	/**
+	 * 一级标题名称
+	 */
+	public byte[] szTitleName = new byte[MAX_COMMON_STRING_64];
+	/**
+	 * 一级标题名称类型
+	 */
+	public byte byTitleType;
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[3];
+	/**
+	 * 景物形状 {@link NET_EM_SHAPE_TYPE}
+	 */
+	public int emShapeType;
+	/**
+	 * 景物的轮廓,每个点依次表示轮廓顶点坐标
+	 */
+	public NetSDKLib.DH_POINT[] stuPolygon = new NetSDKLib.DH_POINT[NET_MAX_POLYGON_NUM];
+	/**
+	 * 景物轮廓点的个数,最大不超过 {@link NetSDKLib#NET_MAX_POLYGON_NUM}
+	 */
+	public int nPolygonPointNum;
+	/**
+	 * 通道个数
+	 */
+	public int nChannelNum;
+	/**
+	 * 支持标签同步标签的通道
+	 */
+	public short[] nSyncToChannels = new short[16];
+
+	public NET_IN_SCENICSPOT_SETPOINTINFO_INFO() {
+		dwSize = this.size();
+		for (int i = 0; i < stuPolygon.length; i++) {
+			stuPolygon[i] = new NetSDKLib.DH_POINT();
+		}
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java
new file mode 100644
index 0000000..2e8e92f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SCENICSPOT_TURNTOPOINT_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 以景物标注点为中心,进行三维定位的输 入参
+ * 出参 {@link NET_OUT_SCENICSPOT_TURNTOPOINT_INFO}
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotTurnToPoint}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 17:28
+ */
+public class NET_IN_SCENICSPOT_TURNTOPOINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 景物点编号
+     */
+    public int nIndex;
+
+    public NET_IN_SCENICSPOT_TURNTOPOINT_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
new file mode 100644
index 0000000..5200891
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.callback.securityCheck.fSecurityGateAttachAlarmStatistics;
+import com.sun.jna.Pointer;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/29 10:21
+ */
+public class NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS extends NetSDKLib.SdkStructure{
+
+    public int	 dwSize; 	// 赋值为结构体大小
+
+    public byte[] szUUID=new byte[36];  // UUID
+
+    public fSecurityGateAttachAlarmStatistics cbNotify;  // 回调函数
+
+    public Pointer dwUser;  // 用户信息
+
+    public NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS() {
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_2DCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_2DCODE.java
new file mode 100644
index 0000000..c7388d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_2DCODE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.constant.SDKStructureFieldLenth;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_Set2DCode(NetSDKLib.LLong, Pointer, Pointer, int)}的入参
+ * @date 2020/9/10
+ */
+public class NET_IN_SET_2DCODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 二维码类型,
+     * 对应枚举类型{@link com.netsdk.lib.enumeration.NET_EM_2DCODE_TYPE}
+     */
+    public int em2DCodeType;
+    /**
+     * 二维码信息
+     */
+    public byte[] sz2DCode = new byte[SDKStructureFieldLenth.SDK_COMMON_STRING_512];
+
+    public NET_IN_SET_2DCODE() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ALARMMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ALARMMODE.java
new file mode 100644
index 0000000..c6299ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ALARMMODE.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设置布防模式
+ *              输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE
+ * @date 2023/03/15 16:05:04
+ */
+public class NET_IN_SET_ALARMMODE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 布撤防类型 {@link com.netsdk.lib.enumeration.EM_ARM_TYPE}
+	 */
+	public int emArmType;
+	/**
+	 * 密码
+	 */
+	public byte[] szPwd = new byte[256];
+	/**
+	 * 区域的个数
+	 */
+	public int nAreaNum;
+	/**
+	 * 区域号
+	 */
+	public int[] arrAreas = new int[8];
+	/**
+	 * 执行布撤防时的附加信息
+	 */
+	public NET_DETAIL_INFO stuDetail = new NET_DETAIL_INFO();
+	/**
+	 * 区域的扩展个数
+	 */
+	public int nAreaNumEx;
+	/**
+	 * 区域号扩展 个数超过8个使用这个字段
+	 */
+	public int[] arrAreasEx = new int[64];
+
+	public NET_IN_SET_ALARMMODE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java
new file mode 100644
index 0000000..5b3b0ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BACKUP_MODE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscBackupMode 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_SET_BACKUP_MODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  红绿灯/可变车道方案:150-152代表红绿灯 153-155代表可变车道方案。参考枚举{ @link EM_CTRL_SCHEME }
+     */
+    public int emCtrlScheme;
+
+    public NET_IN_SET_BACKUP_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BIND_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BIND_MODE_INFO.java
new file mode 100644
index 0000000..84b6777
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BIND_MODE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetBindMode 接口入参
+ * @origin autoTool
+ * @date 2023/09/15 10:59:47
+ */
+public class NET_IN_SET_BIND_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * / 教室id号,默认0
+	 */
+	public int nClassRoomId;
+	/**
+	 * / 绑定模式 {@link com.netsdk.lib.enumeration.EM_BIND_MODE}
+	 */
+	public int emBindMode;
+
+	public NET_IN_SET_BIND_MODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java
new file mode 100644
index 0000000..ac7dff6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BLIND_REAL_CHANNEL.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 设置逻辑通道号和真实通道号的绑定关系入参 ,对应接口 {@link NetSDKLib#CLIENT_SetBlindRealChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:08
+ */
+public class NET_IN_SET_BLIND_REAL_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 通道号
+     */
+    public int[] nChannel = new int[MAX_PREVIEW_CHANNEL_NUM];
+    /**
+     * 逻辑通道信息,下标为将要设置的真实通道数
+     */
+    public NET_LOGIC_CHANNEL_INFO[] stuChannelInfo = new NET_LOGIC_CHANNEL_INFO[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_IN_SET_BLIND_REAL_CHANNEL() {
+        dwSize = this.size();
+        for (int i = 0; i < stuChannelInfo.length; i++) {
+            stuChannelInfo[i] = new NET_LOGIC_CHANNEL_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BYPASSMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BYPASSMODE.java
new file mode 100644
index 0000000..73d2c4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_BYPASSMODE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设置旁路状态
+ *              输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE
+ * @date 2023/03/15 16:33:42
+ */
+public class NET_IN_SET_BYPASSMODE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 密码
+	 */
+	public byte[] szPwd = new byte[256];
+	/**
+	 * 旁路模式 {@link com.netsdk.lib.enumeration.EM_BYPASSMODE_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 防区个数
+	 */
+	public int nZoneNum;
+	/**
+	 * 防区号
+	 */
+	public int[] arrZones = new int[72];
+	/**
+	 * 防区个数扩展
+	 */
+	public int nZoneNumEx;
+	/**
+	 * 防区号扩展,超过72时使用此字段
+	 */
+	public int[] arrZonesEx = new int[256];
+
+	public NET_IN_SET_BYPASSMODE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..11b0665
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CALIBRATEINFO_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设置标定点信息入参
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_IN_SET_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 标定点信息
+	 */
+	public NET_GET_CALIBRATEINFO_POINT_INFO stuPointInfo = new NET_GET_CALIBRATEINFO_POINT_INFO();
+
+	public NET_IN_SET_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java
new file mode 100644
index 0000000..a067f03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CAMERA_CFG.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_SetCameraCfg}的入参
+ * @date 2020/11/06
+ */
+public class NET_IN_SET_CAMERA_CFG extends NetSDKLib.SdkStructure{
+	
+	// 结构体大小
+	public int dwSize;
+   
+	// 相机编号
+	public int nCameraNo;
+	
+	// 相机的信息
+	public NET_CAMERA_CFG_INFO stuCameraInfo;
+
+    public NET_IN_SET_CAMERA_CFG() {
+        this.dwSize = this.size();
+    }
+		   
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java
new file mode 100644
index 0000000..a5824f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CHANNEL_CFG.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_SetChannelCfg}的入参
+ * @date 2020/11/06
+ */
+public class NET_IN_SET_CHANNEL_CFG extends NetSDKLib.SdkStructure {
+
+  /** 结构体大小 */
+  public int dwSize;
+  /** 检测通道 */
+  public int nChannelNo;
+
+  /** 通道信息 */
+  public NET_CHANNEL_CFG_INFO stuChannelInfo;
+
+  public NET_IN_SET_CHANNEL_CFG() {
+    this.dwSize = this.size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java
new file mode 100644
index 0000000..ec0cd18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_CONSUME_RESULT.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description CLIENT_SetConsumeResult 输入结构体
+* @date 2022/03/07 17:36:06
+*/
+public class NET_IN_SET_CONSUME_RESULT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[32];
+/** 
+消费后余额,如果消费失败则是消费前余额,单位分。
+*/
+public			int					nRemainAmount;
+/** 
+消费成功与否
+*/
+public			int					bConsumeResult;
+/** 
+错误码
+*/
+public			int					nErrorCode;
+/** 
+平台固定消费金额,单位(分)
+*/
+public			int					nConsumptionAmount;
+/** 
+是否是超额消费
+*/
+public			int					bExcessConsumption;
+/** 
+剩余消费次数,-1表示不限制消费次数,0以上(包括0)表示剩余消费次数
+*/
+public			int					nRemainingTimes;
+/** 
+消费流水号
+*/
+public			byte[]					szTransactionSerialNumber=new byte[128];
+
+public NET_IN_SET_CONSUME_RESULT(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..b0f8a76
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_MODE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_RECORD_MODE;
+
+/**
+ * 设置录像模式入参,对应接口{link NetSDKLib#CLIENT_SetCourseRecordMode}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:38
+ */
+public class NET_IN_SET_COURSE_RECORD_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 录像模式 {@link NET_EM_RECORD_MODE}
+     */
+    public int emRecordMode;
+    /**
+     * 教室id号
+     */
+    public int nClassRoomID;
+
+    public NET_IN_SET_COURSE_RECORD_MODE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java
new file mode 100644
index 0000000..c7de420
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_COURSE_RECORD_STATE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 开启/关闭指定通道录像入参 {@link NetSDKLib#CLIENT_SetCourseRecordState}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:13
+ */
+public class NET_IN_SET_COURSE_RECORD_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 0:开启, 1:关闭
+     */
+    public int nAction;
+
+    public NET_IN_SET_COURSE_RECORD_STATE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
new file mode 100644
index 0000000..6a2c9a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockCommunicationKey 接口入参 
+* @date 2022/06/23 10:15:55
+*/
+public class NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+通讯密钥
+*/
+public			byte[]					szCommuKey=new byte[512];
+/** 
+通讯密钥校验数据
+*/
+public			byte[]					szKeyVerify=new byte[512];
+/** 
+原通讯密钥校验数据
+*/
+public			byte[]					szOldKeyVerify=new byte[512];
+/** 
+加密主机私钥签名
+*/
+public			byte[]					szPrivateSigniture=new byte[512];
+
+public NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
new file mode 100644
index 0000000..7c645b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockOpenKey 接口入参 
+* @date 2022/06/23 10:20:45
+*/
+public class NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+开锁密钥
+*/
+public			byte[]					szOpenKey=new byte[512];
+/** 
+开锁密钥校验
+*/
+public			byte[]					szKeyVerify=new byte[512];
+/** 
+开锁密钥版本
+*/
+public			byte[]					szKeyVersion=new byte[512];
+
+public NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
new file mode 100644
index 0000000..6987f25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockOpenCode 接口入参 
+* @date 2022/06/23 10:28:36
+*/
+public class NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/** 
+开锁密钥
+*/
+public			byte[]					szOpenCode=new byte[512];
+
+public NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
new file mode 100644
index 0000000..0f7d1f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockTempUserID 接口入参 
+* @date 2022/06/23 10:24:57
+*/
+public class NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+密码锁ID
+*/
+public			byte[]					szID=new byte[32];
+/**
+ 临时身份码
+ */
+public			byte[]					szTmpUserID=new byte[512];
+
+public NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java
new file mode 100644
index 0000000..1c2b313
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_EXAM_RECORDING_PLANS.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetExamRecordingPlans 接口入参 
+* @date 2022/05/16 20:40:47
+*/
+public class NET_IN_SET_EXAM_RECORDING_PLANS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+考试计划个数
+*/
+public			int					nPlansNum;
+/** 
+考试计划, 由用户申请和释放, 最大为1024个 {@link com.netsdk.lib.structure.NET_EXAM_RECORDING_PLAN_INFO}
+*/
+public Pointer pstuPlans;
+
+public NET_IN_SET_EXAM_RECORDING_PLANS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..08ac858
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_GLOBAL_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscGlobalParam 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_SET_GLOBAL_PARAMETER extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  全局信息
+     */
+    public GLOBAL_INFO stuGlobalInfo;
+
+    public NET_IN_SET_GLOBAL_PARAMETER(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java
new file mode 100644
index 0000000..c93b626
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_IVSEVENT_PARSE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscGlobalParam 接口输入参数
+ * @date 2022/05/23
+ */
+public class NET_IN_SET_IVSEVENT_PARSE_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+    
+	/**
+     *  智能分析事件类型,参考dhnetsdk.h中定义的智能分析事件宏.
+     *  当前支持情况如下:
+     *  nCallBackType为0时(即智能事件解析类型):
+     *  EVENT_IVS_FACERECOGNITION:dwStructType为 1 时,对应结构体 DEV_EVENT_FACERECOGNITION_INFO_V1
+     *  
+     *  nCallBackType为1时(即报警事件解析类型):
+     *  DH_ALARM_RTSC_RUNING: dwStructType为 1 时,对应结构体 ALARM_RTSC_RUNNING_INFO_V1
+     *                                    
+     */
+    public int dwIVSEvent;
+    
+	/**
+     *  指定解析的类型,具体含义参考 dwIVSEvent 字段的说明
+     */
+    public int dwStructType;
+    
+	/**
+     *  0 - 智能事件上报
+     *  1 - 普通报警事件上报
+     */
+    public int nCallBackType;    
+    public NET_IN_SET_IVSEVENT_PARSE_INFO() {
+    	this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java
new file mode 100644
index 0000000..f967dd6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_OUTPUT_STATE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设置输出状态
+ *              输入参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE
+ * @date 2023/03/15 16:46:55
+ */
+public class NET_IN_SET_OUTPUT_STATE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 输出类型 {@link com.netsdk.lib.enumeration.EM_OUTPUT_TYPE}
+	 */
+	public int emType;
+	/**
+	 * emType= EM_OUTPUT_TYPE_SIREN时表示警号号 emType= EM_OUTPUT_TYPE_ALARMOUT时表示通道号
+	 */
+	public int nChannel;
+	/**
+	 * 输出动作 false:关闭 true:打开
+	 */
+	public byte action;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved = new byte[3];
+
+	public NET_IN_SET_OUTPUT_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java
new file mode 100644
index 0000000..a4230e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGRULE_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 设置停车规则接口,CLIENT_SetParkingRule 入参
+ * @date 2021/05/28
+ */
+public class NET_IN_SET_PARKINGRULE_INFO extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	/**
+	 * 停车时长阈值,单位秒
+	 */
+	public int nParkingTimeThreshold;
+
+	public NET_IN_SET_PARKINGRULE_INFO() {
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java
new file mode 100644
index 0000000..739bf8f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARKINGSPACE_STATE_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_PARKINGSPACE_STATE;
+
+/**
+ * 设置停车车位状态 入参
+ * 接口 {@link NetSDKLib#CLIENT_SetParkingSpaceState}
+ * 出参 {@link NET_OUT_SET_PARKINGSPACE_STATE_INFO}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 13:32
+ */
+public class NET_IN_SET_PARKINGSPACE_STATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 车位号
+     */
+    public byte[] szParkingNo = new byte[32];
+    /**
+     * 车位状态 {@link EM_PARKINGSPACE_STATE}
+     */
+    public int emState;
+    /**
+     * 是否需要图片 0 不需要 1 需要
+     */
+    public int bUnNeedPic;
+
+    public NET_IN_SET_PARKINGSPACE_STATE_INFO() {
+        dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java
new file mode 100644
index 0000000..e23f8e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PARK_CONTROL_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_IN_SET_PARK_CONTROL_INFO  extends SdkStructure{
+	/**
+	 * 结构体大小
+	 */
+	public int					dwSize;					
+	/**
+	 * 屏幕信息个数
+	 */
+	public int						nScreenShowInfoNum;		
+	/**
+	 * 屏幕信息
+	 */
+	public NET_SCREEN_SHOW_INFO[]	stuScreenShowInfo=(NET_SCREEN_SHOW_INFO[]) new NET_SCREEN_SHOW_INFO().toArray(16);	
+	/**
+	 * 字节补齐
+	 */
+	public byte[]					byReserved=new byte[4];			
+	/**
+	 * 播报信息个数
+	 */
+	public int						nBroadcastInfoNum;		
+	/**
+	 * 播报信息
+	 */
+	public NET_BROADCAST_INFO[]		stuBroadcastInfo =(NET_BROADCAST_INFO[]) new NET_BROADCAST_INFO().toArray(16);	 
+	
+	public NET_IN_SET_PARK_CONTROL_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java
new file mode 100644
index 0000000..731f8c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_POLLING_CONFIG.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 平台下发轮询配置入参
+ * @date 2022/07/04 10:56:48
+ */
+public class NET_IN_SET_POLLING_CONFIG extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 平台下发轮询配置个数
+	 */
+	public int nConfigCnt;
+	/**
+	 * 平台下发轮询配置信息
+	 */
+	public NET_SET_POLLING_CONFIG_INFO[] stuConfigInfos = new NET_SET_POLLING_CONFIG_INFO[256];
+
+	public NET_IN_SET_POLLING_CONFIG() {
+		for (int i = 0; i < stuConfigInfos.length; i++) {
+			stuConfigInfos[i] = new NET_SET_POLLING_CONFIG_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..0d0ceb1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetPrivacyMasking 输入参数
+ * @date 2022/07/21 17:11:44
+ */
+public class NET_IN_SET_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 隐私遮挡块信息
+	 */
+	public NET_PRIVACY_MASKING_INFO stuPrivacyMaskingInfo = new NET_PRIVACY_MASKING_INFO();
+
+	public NET_IN_SET_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..fce1b70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetPrivacyMaskingEnable 输入参数
+ * @date 2022/07/21 17:13:49
+ */
+public class NET_IN_SET_PRIVACY_MASKING_ENABLE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * true 使能所有隐私遮挡块 false 关闭所有隐私遮挡块
+	 */
+	public int bEnable;
+
+	public NET_IN_SET_PRIVACY_MASKING_ENABLE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java
new file mode 100644
index 0000000..eeb31b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_PTZ_WASH_POSISTION_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 标定球机和蓄水池污点位置, 入参
+ * @since : Created in 2021/11/29 10:47
+ */
+
+public class NET_IN_SET_PTZ_WASH_POSISTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 0 - 标定喷水枪位置, 1 - 标定污点位置
+     */
+    public int nIndex;
+    /**
+     * 球机到蓄水池底的高度
+     */
+    public float fHeight;
+    /**
+     * 通道ID
+     */
+    public int nChannelID;
+
+    public NET_IN_SET_PTZ_WASH_POSISTION_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java
new file mode 100644
index 0000000..fddf33e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_RUNNING_MODE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscRunningMode 接口输入参数
+ * @date 2021/09/28
+ */
+public class NET_IN_SET_RUNNING_MODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  平台下发运行模式:
+     *   0x01 //定时模式 
+     *   0xfb //关灯模式 
+     *   0xfc //全红模式
+     *   0xfd //区域自适应模式 
+     *   0xfe //感应模式	   
+     *   0xff //黄闪模式	
+     *   0xf6 //实时控制模式	
+     *   0xf2 //单点自适应模式	
+     *   0xf8 //红闪模式	
+     *   0xf9 //绿闪模式
+     */
+    public int nMode;
+
+    public NET_IN_SET_RUNNING_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_STATEMANAGER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_STATEMANAGER_INFO.java
new file mode 100644
index 0000000..5724946
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_STATEMANAGER_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetStateManager 接口入参
+ * @date 2023/05/11 14:19:40
+ */
+public class NET_IN_SET_STATEMANAGER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 状态枚举 {@link com.netsdk.lib.enumeration.EM_STATEMANAGER_STATE}
+	 */
+	public int emState;
+	/**
+	 * 状态信息,需要用户申请内存,枚举对应,详见EM_STATEMANAGER_STATE枚举说明
+	 */
+	public Pointer pStateInfo;
+
+	public NET_IN_SET_STATEMANAGER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java
new file mode 100644
index 0000000..433c519
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_TRANSMITTUNNEL_PARAM.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_SetTransmitTunnelParam 接口输入参数
+*/
+public class NET_IN_SET_TRANSMITTUNNEL_PARAM extends NetSDKLib.SdkStructure {
+/** 
+/<  结构体大小
+*/
+public			int					dwSize;
+/**
+*字节对齐
+*/
+public  byte[]                    szReserved=new byte[4];
+/** 
+/< 本地服务IP
+*/
+public			byte[]					szLoaclIP=new byte[64];
+/** 
+/< 向上侦听端口的最小值和最大值
+*/
+public			int[]					nPort=new int[2];
+
+public NET_IN_SET_TRANSMITTUNNEL_PARAM(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_VTO_MANAGER_RELATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_VTO_MANAGER_RELATION.java
new file mode 100644
index 0000000..0523f67
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_VTO_MANAGER_RELATION.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetVTOManagerRelation 入参
+ * @origin autoTool
+ * @date 2023/10/19 14:16:46
+ */
+public class NET_IN_SET_VTO_MANAGER_RELATION extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * / 关系节点信息个数
+	 */
+	public int nNodeInfoNum;
+	/**
+	 * / 关系节点信息
+	 */
+	public NET_VTO_DEV_NODE_INFO[] stuNodes = new NET_VTO_DEV_NODE_INFO[128];
+	/**
+	 * / 是否需要清除原配置
+	 */
+	public int bNeedReset;
+
+	public NET_IN_SET_VTO_MANAGER_RELATION() {
+		for (int i = 0; i < stuNodes.length; i++) {
+			stuNodes[i] = new NET_VTO_DEV_NODE_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..1a401ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_SetXRayMultiLevelDetectCFG 的输入参数 
+* @date 2022/12/01 17:25:15
+*/
+public class NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+安全等级信息
+*/
+public NET_XRAY_MULTILEVEL_DETECT_CFG_INFO stuInfo=new NET_XRAY_MULTILEVEL_DETECT_CFG_INFO();
+
+public NET_IN_SET_XRAY_MULTILEVEL_DETECT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ZONE_ARMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ZONE_ARMODE_INFO.java
new file mode 100644
index 0000000..c6eac07
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SET_ZONE_ARMODE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetZoneArmMode 接口入参
+ * @origin autoTool
+ * @date 2023/08/10 09:52:28
+ */
+public class NET_IN_SET_ZONE_ARMODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 要操作的防区号列表个数
+	 */
+	public int nZoneNum;
+	/**
+	 * 要操作的防区号列表,从1开始。
+	 */
+	public int[] nZones = new int[256];
+	/**
+	 * 密码明文
+	 */
+	public byte[] szPwd = new byte[64];
+	/**
+	 * 布撤防模式:1."T":Total布防/外出布防模式 2."D" 撤防
+	 */
+	public byte[] szArmMode = new byte[32];
+	/**
+	 * 布撤防详细信息
+	 */
+	public NET_ARM_DETAIL_OPTIONS stuArmDetailOptions = new NET_ARM_DETAIL_OPTIONS();
+
+	public NET_IN_SET_ZONE_ARMODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java
new file mode 100644
index 0000000..084c584
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SMOKE_REMOTE_REBOOT_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SmokeRemoteReboot 入参
+ * @date 2022/07/26 10:52:50
+ */
+public class NET_IN_SMOKE_REMOTE_REBOOT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+
+    public NET_IN_SMOKE_REMOTE_REBOOT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java
new file mode 100644
index 0000000..96410ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SNAP_BY_EVENT.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_EVENT_IVS;
+import com.netsdk.lib.enumeration.EM_EVENT_IVS_TYPE;
+
+/**
+ * 按照事件类型抓图 入参
+ * 接口 {@link NetSDKLib#CLIENT_SnapPictureByEvent}
+ * 出参 {@link NET_OUT_SNAP_BY_EVENT}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 17:21
+ */
+public class NET_IN_SNAP_BY_EVENT extends NetSDKLib.SdkStructure {
+    /**
+     * 本结构体大小, 初始化时必须填写
+     */
+    public int dwSize;
+    /**
+     * 视频通道号, 从 0开始
+     */
+    public int nChannel;
+    /**
+     * 参考 CLIENT_RealLoadPicEx 的事件类型
+     * {@link NetSDKLib#EVENT_IVS_ALL ...}
+     * {@link EM_EVENT_IVS}
+     * {@link EM_EVENT_IVS_TYPE}
+     */
+    public int dwEventID;
+
+    /**
+     * 抓图序列号,用于和回调事件作匹配
+     */
+    public byte[] szSerialNo = new byte[128];
+
+    public NET_IN_SNAP_BY_EVENT() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java
new file mode 100644
index 0000000..2a11e9f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_GET_OSD_EX.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetSplitOSDEx 接口输入参数(获取解码窗口输出OSD信息)
+ * @date 2022/06/22 09:56:20
+ */
+public class NET_IN_SPLIT_GET_OSD_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 窗口号
+     */
+    public int nWindow;
+
+    public NET_IN_SPLIT_GET_OSD_EX() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java
new file mode 100644
index 0000000..edae20b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_HIGHLIGHT.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设置源边框高亮使能开关输入参数
+ * @date 2022/06/22 09:56:19
+ */
+public class NET_IN_SPLIT_SET_HIGHLIGHT extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 视频输出通道
+     */
+    public int nChannel;
+    /**
+     * 窗口号
+     */
+    public int nWindow;
+    /**
+     * 边框高亮使能,TRUE-表示高亮
+     */
+    public int bHighLightEn;
+    /**
+     * 边框颜色
+     */
+    public NET_COLOR_RGBA stuColor = new NET_COLOR_RGBA();
+    /**
+     * 边框闪烁次数
+     */
+    public int nBlinkTimes;
+    /**
+     * 闪烁间隔时间,单位ms
+     */
+    public int nBlinkInterval;
+
+    public NET_IN_SPLIT_SET_HIGHLIGHT() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java
new file mode 100644
index 0000000..df826d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_SPLIT_SET_OSD_EX.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetSplitOSDEx接口输入参数(设置解码窗口输出OSD信息)
+ * @date 2022/06/22 20:38:57
+ */
+public class NET_IN_SPLIT_SET_OSD_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 窗口号
+     */
+    public int nWindow;
+    /**
+     * OSD数量
+     */
+    public int nOSDNum;
+    /**
+     * OSD信息
+     */
+    public NET_SPLIT_OSD[] stuOSD = new NET_SPLIT_OSD[256];
+
+    public NET_IN_SPLIT_SET_OSD_EX() {
+        for (int i = 0; i < stuOSD.length; i++) {
+            stuOSD[i] = new NET_SPLIT_OSD();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..6792295
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTMULTIFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_StartMultiFindFaceRecognitionEx 接口输入参数
+ * @date 2022/11/21 17:53:18
+ */
+public class NET_IN_STARTMULTIFIND_FACERECONGNITION_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 通道号
+     */
+    public Pointer pChannelID;
+    /**
+     * 通道申请个数
+     */
+    public int nChannelCount;
+    /**
+     * 搜索的目标类型 {@link com.netsdk.lib.NetSDKLib.EM_OBJECT_TYPE}
+     */
+    public int emObjectType;
+    /**
+     * 人脸匹配选项
+     */
+    public NetSDKLib.NET_FACE_MATCH_OPTIONS stMatchOptions = new NetSDKLib.NET_FACE_MATCH_OPTIONS();
+    /**
+     * 查询过滤条件
+     */
+    public NetSDKLib.NET_FACE_FILTER_CONDTION stFilterInfo = new NetSDKLib.NET_FACE_FILTER_CONDTION();
+    /**
+     * 缓冲地址
+     */
+    public Pointer pBuffer;
+    /**
+     * 缓冲数据长度
+     */
+    public int nBufferLen;
+    /**
+     * 目标信息是否有效, 并使用目标信息结构体
+     */
+    public int bPersonEx2Enable;
+    /**
+     * 目标信息, 包括以图搜图的图片数据和属性等
+     */
+    public NET_FACERECOGNITION_PERSON_INFOEX2 stPersonInfoEx2 = new NET_FACERECOGNITION_PERSON_INFOEX2();
+
+    public NET_IN_STARTMULTIFIND_FACERECONGNITION_EX() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java
new file mode 100644
index 0000000..edf13e3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STARTSERACH_DEVICE.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.fSearchDevicesCBEx;
+import com.sun.jna.Pointer;
+
+public class NET_IN_STARTSERACH_DEVICE extends NetSDKLib.SdkStructure {
+
+	   /**
+	    * 结构体大小
+	    */
+	   public int                      dwSize; 
+	   
+	   /**
+	    * 发起搜索的本地IP
+	    */
+	   public byte[]                   szLocalIp=new byte[64];
+	   
+	   /**
+	    * 设备信息回调函数
+	    */
+	   public fSearchDevicesCBEx       cbSearchDevices;                 
+	   
+	   /**
+	    * 用户自定义数据
+	    */
+	   public Pointer                  pUserData;                      
+	   
+	   /**
+	    * 下发搜索类型(参考EM_SEND_SEARCH_TYPE)
+	    */
+	   public int                      emSendType;     
+	   
+	   public NET_IN_STARTSERACH_DEVICE()
+	    {
+	     this.dwSize = this.size();
+	    }// 此结构体大小
+	    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java
new file mode 100644
index 0000000..777bc16
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+/**
+ * 
+ * @author 119178
+ * CLIENT_StartBackupTask接口输入参数
+ * {@link NetSDKLib#CLIENT_StartBackupTask}
+ */
+public class NET_IN_START_BACKUP_TASK_INFO extends SdkStructure{
+	public int               dwSize;
+	public int         		 emSourceMode;	    //  源模式(EM_BACKUP_SOURCE_MODE)
+	public int	             emTargetMode;	    //  备份模式(EM_BACKUP_TARGET_MODE)
+	public int				 nSourceNum;		//  备份源个数
+	public Pointer	         pstuSource;		//  备份源,用户分配内存,大小为sizeof(NET_BACKUP_SOURCE)*nSourceNum
+	public Pointer	         pstuTarget;		//  备份目的?用户分配内存,大小为sizeof(NET_BACKUP_TARGET)*nTargetNum
+	public int				 nTargetNum;		//  备份目的个数	
+	public int	             emFormat;		    //	期望备份成为的格式类型(EM_BACKUP_FORMAT)
+	public int				 nGroupID;		    //  任务组ID
+	public int				 bTakePlayer;	    //	是否带DH播放器,emFormat值dav时,需要DH播放器播放。
+	
+	public NET_IN_START_BACKUP_TASK_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java
new file mode 100644
index 0000000..7aff46c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_BACKUP_TASK_SESSION.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * CLIENT_StartBackupTaskSession 接口输入参数
+ * {@link NetSDKLib#CLIENT_StartBackupTaskSession}
+ */
+public class NET_IN_START_BACKUP_TASK_SESSION extends SdkStructure{
+	public int               dwSize;
+	public int               nGroupID;                         // 任务组ID,0表示不属于任何任务组
+	
+	public NET_IN_START_BACKUP_TASK_SESSION(){
+        this.dwSize = this.size();
+    }	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..6010ebb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_StartFindDetailNumberStatCluster 的输入参数
+ * @date 2022/10/09 14:06:13
+ */
+public class NET_IN_START_FIND_DETAIL_CLUSTER extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 查询条件
+	 */
+	public NET_CLUSTER_DETAIL_CONDITION stuCondition = new NET_CLUSTER_DETAIL_CONDITION();
+
+	public NET_IN_START_FIND_DETAIL_CLUSTER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..0dbb13d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_StartFindVehicleRegisterDB 接口输入参数
+ * @date 2022/10/22 10:44
+ */
+public class NET_IN_START_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           			dwSize;							// 结构体大小
+    public NetSDKLib.NET_VEHICLE_INFO stuVehicleInfo=new NetSDKLib.NET_VEHICLE_INFO();				// 车辆信息
+    public NET_START_FIND_VEHICLE_REG_DB_CONDITION stuCondition = new NET_START_FIND_VEHICLE_REG_DB_CONDITION();//查询条件
+    public NET_IN_START_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..536e5f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_StartFindWaterDataStatServer 输入参数 
+* @date 2022/08/22 17:12:11
+*/
+public class NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+水质检测数据查询条件
+*/
+public			NET_START_FIND_WATERDATA_CONDITION					stuCondition=new NET_START_FIND_WATERDATA_CONDITION();
+
+public			NET_IN_START_FIND_WATERDATA_STAT_SERVER_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_QUERYLOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_QUERYLOG.java
new file mode 100644
index 0000000..4b9c8d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_QUERYLOG.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_StartQueryLog 输入参数
+ * @date 2023/06/12 09:18:50
+ */
+public class NET_IN_START_QUERYLOG extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 查询日志类型 {@link com.netsdk.lib.enumeration.DH_LOG_QUERY_TYPE}
+	 */
+	public int emLogType;
+	/**
+	 * 查询日志的开始时间
+	 */
+	public NET_TIME stuStartTime = new NET_TIME();
+	/**
+	 * 查询日志的结束时间
+	 */
+	public NET_TIME stuEndTime = new NET_TIME();
+	/**
+	 * 对emLogType进行扩展分类查询方式;TRUE 表明使用szLogTypeEx参数,FALSE使用emLogType
+	 */
+	public int bLogTypeExFlag;
+	/**
+	 * szLogTypeEx数组真实长度,最大64个
+	 */
+	public int nLogTypeExNum;
+	/**
+	 * 报警主机日志类型扩展透传数组,如果需要查询的类型超过64个,则分组多次查询
+	 */
+	public byte[] szLogTypeEx = new byte[64 * 128];
+	/**
+	 * 查询结果排序方式 {@link EM_RESULT_ORDER_TYPE}
+	 */
+	public int emResultOrder;
+	/**
+	 * 是否使用UTC时间
+	 */
+	public int bSendByUTCTime;
+	/**
+	 * UTC查询开始时间
+	 */
+	public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+	/**
+	 * UTC查询结束时间
+	 */
+	public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+
+	public NET_IN_START_QUERYLOG() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java
new file mode 100644
index 0000000..5c52f68
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_REDIRECT_SERVICE.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.callback.fRedirectServerCallBackEx;
+import com.sun.jna.Callback;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description CLIENT_StartRedirectServiceEx接口输入参数, {@link
+ *     com.netsdk.lib.NetSDKLib#CLIENT_StartRedirectServiceEx(Pointer, Pointer)}
+ * @date 2021/3/13
+ */
+public class NET_IN_START_REDIRECT_SERVICE extends NetSDKLib.SdkStructure {
+  /** 结构体大小, 需要赋值为当前结构体所在大小 */
+  public int dwSize;
+  /** 预留字节 */
+  public byte[] byReserved = new byte[4];
+  /** 主动注册重定向服务器IP */
+  public byte[] szIP = new byte[64];
+  /** 主动注册重定向服务器端口 */
+  public short nPort;
+  /** 预留字节 */
+  public byte[] byReserved1 = new byte[6];
+  /** 设备重定向回调函数(扩展) */
+  public fRedirectServerCallBackEx cbFuncEx;
+  /** 用户参数, 与fRedirectServerCallBackEx绑定 */
+  public Pointer dwUserData;
+
+  /**
+   * DWORD dwSize; // 结构体大小, 需要赋值为当前结构体所在大小
+   * BYTE byReserved[4]; // 预留字节
+   * char szIP[64]; //
+   * 主动注册重定向服务器IP WORD nPort; // 主动注册重定向服务器端口
+   * BYTE byReserved1[6]; // 预留字节
+   * fRedirectServerCallBackEx
+   * cbFuncEx; // 设备重定向回调函数(扩展) LDWORD dwUserData; // 用户参数, 与fRedirectServerCallBackEx绑定
+   */
+  public NET_IN_START_REDIRECT_SERVICE() {
+    this.dwSize = this.size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java
new file mode 100644
index 0000000..024c93b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_SUBLINK_LISTEN_SERVER.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+CLIENT_StartSubLinkListenServer 接口输入参数
+*/
+public class NET_IN_START_SUBLINK_LISTEN_SERVER extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 本地服务信息
+*/
+public			NET_LOCAL_SERVER_NET_INFO					stuLoaclServerInfo=new NET_LOCAL_SERVER_NET_INFO();
+/** 
+/< 子连接监听服务回调函数
+*/
+public			NetSDKLib.fSubLinkServiceCallBack					cbSubLinkServiceCallBack;
+/** 
+/< 用户数据 LDWORD
+*/
+public Pointer dwUserData;
+
+public NET_IN_START_SUBLINK_LISTEN_SERVER(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_TALK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_TALK_INFO.java
new file mode 100644
index 0000000..1302feb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_START_TALK_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.fAudioDataCallBackEx;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_StartTalkByDataType接口 入参
+ * @date 2021/12/29
+ */
+public class NET_IN_START_TALK_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  音频数据回调函数,实现时使用{ @link fAudioDataCallBackEx }
+     */
+    public fAudioDataCallBackEx pfAudioDataCallBackEx;
+
+    /**
+     *  pfAudioDataCallBackEx回调对应的用户指针
+     */
+    public Pointer dwUser;
+
+    public NET_IN_START_TALK_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java
new file mode 100644
index 0000000..81ed379
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_StopFindDetailNumberStatCluster 的输入参数
+ * @date 2022/10/09 14:22:07
+ */
+public class NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * start接口返回的token, token仅会保存
+	 */
+	public int nToken;
+
+	public NET_IN_STOP_FIND_DETAIL_CLUSTER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..172f8b9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_StopFindVehicleRegisterDB 接口输入参数
+ * @date 2022/10/22 10:56
+ */
+public class NET_IN_STOP_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+
+    public int                           			dwSize;							// 结构体大小
+	public int											nToken;						// 查询令牌
+
+    public NET_IN_STOP_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..a7db08e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_StopFindWaterDataStatServer 输入参数 
+* @date 2022/08/23 10:33:46
+*/
+public class NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+查询令牌
+*/
+public			int					nToken;
+
+public NET_IN_STOP_FIND_WATERDATA_STAT_SERVER_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java
new file mode 100644
index 0000000..6ac4e40
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_STORAGE_DEV_INFOS.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_VOLUME_TYPE;
+
+/**
+ * CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS接口输入参数
+ * @author 29779
+ */
+public class NET_IN_STORAGE_DEV_INFOS extends NetSDKLib.SdkStructure {
+	public NET_IN_STORAGE_DEV_INFOS() {
+		this.dwSize = this.size();
+	}
+	
+	public int dwSize;
+	
+	/**
+	 * 要获取的卷类型
+	 * {@link NET_VOLUME_TYPE }
+	 */
+	public int emVolumeType; 
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java
new file mode 100644
index 0000000..2eea5ac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_FILE.java
@@ -0,0 +1,65 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_TalkSendDataByFile接口 入参
+ * @date 2021/12/29
+ */
+public class NET_IN_TALK_SEND_DATA_FILE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  音频文件全路径
+     */
+    public Pointer pFilePath;
+
+    /**
+     *  音频文件发送进度
+     */
+    public NetSDKLib.fTalkSendPosCallBack cbSendPos;
+
+    /**
+     *  用户参数
+     */
+    public Pointer dwUser;
+
+    /**
+     *  发送间隔百分比,0和100表示使用sdk默认计算的间隔,
+     *  于100发送更快,大于100,发送更慢
+     */
+    public int dwSendInterval;
+
+    /**
+     *  是否需要加音频头。
+     *  TRUE,表示需要SDK根据下面的音频信息加音频头;
+     *  FALSE,表示不需要SDK根据音频信息加音频头,直接发送pFilePath路径指向的数据给设备。
+     */
+    public boolean bNeedHead;
+
+    /**
+     *  音频编码格式,参考枚举{ @link NET_TALK_CODING_TYPE }
+     */
+    public int emEncodeType;
+
+    /**
+     *  位数,如8或16等
+     */
+    public int nAudioBit;
+
+    /**
+     *  采样率,如8000或16000等
+     */
+    public int dwSampleRate;
+
+    public NET_IN_TALK_SEND_DATA_FILE(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java
new file mode 100644
index 0000000..052e7a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TALK_SEND_DATA_STREAM.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_TalkSendDataByStream接口 入参
+ * @date 2021/12/29
+ */
+public class NET_IN_TALK_SEND_DATA_STREAM extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  音频流缓冲
+     */
+    public Pointer pBuf;
+
+    /**
+     *  音频流缓冲大小
+     */
+    public int dwBufSize;
+
+    /**
+     *  是否需要加音频头。
+     *  TRUE,表示需要SDK根据下面的音频信息加音频头;
+     *  FALSE,表示不需要SDK根据音频信息加音频头,直接发送pBuf指向的数据给设备。
+     */
+    public boolean bNeedHead;
+
+    /**
+     *  音频编码格式,参考枚举{ @link NET_TALK_CODING_TYPE }
+     */
+    public int emEncodeType;
+
+    /**
+     *  位数,如8或16等
+     */
+    public int nAudioBit;
+
+    /**
+     *  采样率,如8000或16000等
+     */
+    public int dwSampleRate;
+
+    public NET_IN_TALK_SEND_DATA_STREAM(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_ATTACH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_ATTACH.java
new file mode 100644
index 0000000..4405530
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_ATTACH.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachThingsInfo接口输入参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_IN_THINGS_ATTACH extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 订阅类型 {@link com.netsdk.lib.enumeration.EM_ATTACH_TOPICS}
+     */
+    public int emTopics;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 物模型属性信息回调
+     */
+    public NetSDKLib.fThingsCallBack cbThingsInfo;
+    /**
+     * 用户数据
+     */
+    public Pointer dwUser;
+
+    public NET_IN_THINGS_ATTACH() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java
new file mode 100644
index 0000000..7d51654
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_DOFIND_HISTORYDATA.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_DoFindThingsHistoryData 输入参数
+ * @date 2022/04/20 10:16:55
+ */
+public class NET_IN_THINGS_DOFIND_HISTORYDATA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 偏移量
+     */
+    public int uOffset;
+    /**
+     * 每次查询数量
+     */
+    public int uCount;
+
+    public NET_IN_THINGS_DOFIND_HISTORYDATA() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET.java
new file mode 100644
index 0000000..78cd636
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsConfig 接口输入参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_IN_THINGS_GET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[128];
+    /**
+     * pstuGetInProperName个数
+     */
+    public int nProperCount;
+    /**
+     * 物模型标志,需要查询的物模型标志名称
+     * 用户分配内存,大小为sizeof{@link NET_PROPERTIES_NAME}*nPropertiesCount
+     */
+    public Pointer pstuGetInProperName;
+
+    public NET_IN_THINGS_GET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java
new file mode 100644
index 0000000..17d3450
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_CAPS.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsCaps接口输入参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_IN_THINGS_GET_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[128];
+
+    public NET_IN_THINGS_GET_CAPS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java
new file mode 100644
index 0000000..e470ba6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_DEVLIST.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsDevList接口输入参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_IN_THINGS_GET_DEVLIST extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+
+    public NET_IN_THINGS_GET_DEVLIST() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java
new file mode 100644
index 0000000..8d3646f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_GET_NETSTATE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsNetState接口输入参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_IN_THINGS_GET_NETSTATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+
+    public NET_IN_THINGS_GET_NETSTATE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java
new file mode 100644
index 0000000..5b26cae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDDEVICE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 添加设备输入参数(对应 EM_THINGS_SERVICE_TYPE_ADDDEVICE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_IN_THINGS_SERVICE_ADDDEVICE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 添加设备类型,3:电表 5:塑壳 6:烟感
+     */
+    public int nDevCata;
+    /**
+     * 485地址(塑壳、烟感填写)
+     */
+    public int nDev485Addr;
+    /**
+     * 设备序列号(电表填写)
+     */
+    public byte[] szDevSn = new byte[128];
+    /**
+     * 设备别名(电表填写)
+     */
+    public byte[] szDevName = new byte[128];
+
+    public NET_IN_THINGS_SERVICE_ADDDEVICE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java
new file mode 100644
index 0000000..5632bf9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ADDRULE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 添加联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_IN_THINGS_SERVICE_ADDRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 类型名称“timer”、“alarm”
+     */
+    public byte[] szClassName = new byte[256];
+    /**
+     * 联动规则内容
+     */
+    public NET_THINGS_SERVICE_RULECONTENT stuRuleContent = new NET_THINGS_SERVICE_RULECONTENT();
+
+    public NET_IN_THINGS_SERVICE_ADDRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java
new file mode 100644
index 0000000..4cf9a91
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHFIND.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 空开红蓝灯闪烁输入参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHFIND)
+ * @date 2022/04/20 10:50:19
+ */
+public class NET_IN_THINGS_SERVICE_AIRSWITHFIND extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_AIRSWITHFIND() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java
new file mode 100644
index 0000000..d8f4632
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_AIRSWITHRESET.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 空开恢复出厂设置输入参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHRESET)
+ * @date 2022/04/20 10:50:20
+ */
+public class NET_IN_THINGS_SERVICE_AIRSWITHRESET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_AIRSWITHRESET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java
new file mode 100644
index 0000000..dcfb13f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CHARGECLEAR.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 电量清零输入参数(对应 EM_THINGS_SERVICE_TYPE_CHARGECLEAR)
+ * @date 2022/04/20 10:50:18
+ */
+public class NET_IN_THINGS_SERVICE_CHARGECLEAR extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_CHARGECLEAR() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java
new file mode 100644
index 0000000..22b2952
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_CURRENTSTATUSGET.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取所有空开当前报警状态输入参数(对应 EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET)
+ * @date 2022/04/20 10:50:24
+ */
+public class NET_IN_THINGS_SERVICE_CURRENTSTATUSGET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_CURRENTSTATUSGET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java
new file mode 100644
index 0000000..cfa5ae5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELDEVICE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除子设备输入参数(对应 EM_THINGS_SERVICE_TYPE_DELDEVICE)
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_IN_THINGS_SERVICE_DELDEVICE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 子设备ID个数
+     */
+    public int nDelidListCount;
+    /**
+     * 子设备ID列表
+     */
+    public NET_THINGS_SERVICE_DELDEVICE_LIST[] stuDelidList = (NET_THINGS_SERVICE_DELDEVICE_LIST[]) new NET_THINGS_SERVICE_DELDEVICE_LIST().toArray(64);
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_DELDEVICE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java
new file mode 100644
index 0000000..ec6f3e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DELRULE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_IN_THINGS_SERVICE_DELRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 规则ID
+     */
+    public byte[] szRuleID = new byte[256];
+    /**
+     * 类型名称“timer”、“alarm”
+     */
+    public byte[] szClassName = new byte[256];
+
+    public NET_IN_THINGS_SERVICE_DELRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java
new file mode 100644
index 0000000..2686a93
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_DEVREPLACE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 子设备替换输入参数(对应 EM_THINGS_SERVICE_TYPE_DEVREPLACE)
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_IN_THINGS_SERVICE_DEVREPLACE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 被替换空开ID
+     */
+    public byte[] szReplacedDevID = new byte[64];
+    /**
+     * 新空开ID
+     */
+    public byte[] szNewDevID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_DEVREPLACE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java
new file mode 100644
index 0000000..c1b1b9b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_ENABLE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 使能联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_IN_THINGS_SERVICE_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 规则ID
+     */
+    public byte[] szRuleID = new byte[256];
+    /**
+     * 类型名称“timer”、“alarm”
+     */
+    public byte[] szClassName = new byte[256];
+
+    public NET_IN_THINGS_SERVICE_ENABLE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java
new file mode 100644
index 0000000..6dd143e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOST.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 漏电自检输入参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOST)
+ * @date 2022/04/20 10:50:19
+ */
+public class NET_IN_THINGS_SERVICE_LEAKCURTPOST extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_LEAKCURTPOST() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
new file mode 100644
index 0000000..c44cdd4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 漏电自检异步输入参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC)
+ * @date 2022/04/20 10:50:19
+ */
+public class NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_LEAKCURTPOSTASYNC() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java
new file mode 100644
index 0000000..fea2cc9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_MODRULE.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 修改联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_IN_THINGS_SERVICE_MODRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 规则ID
+     */
+    public byte[] szRuleID = new byte[256];
+    /**
+     * 类型名称“timer”、“alarm”
+     */
+    public byte[] szClassName = new byte[256];
+    /**
+     * 规则内容类型"Action"
+     */
+    public byte[] szRuleContentType = new byte[256];
+    /**
+     * 联动规则内容
+     */
+    public NET_THINGS_SERVICE_RULECONTENT stuRuleContent = new NET_THINGS_SERVICE_RULECONTENT();
+
+    public NET_IN_THINGS_SERVICE_MODRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java
new file mode 100644
index 0000000..b096af4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 离线日志清除输入参数(对应 EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN)
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_OFFLINELOGCLEAN() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java
new file mode 100644
index 0000000..2329dcf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_QUERULE.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 查询联动规则输入参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_IN_THINGS_SERVICE_QUERULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 每一页的数据大小
+     */
+    public int nPageSize;
+    /**
+     * 按页查询
+     */
+    public int nPage;
+    /**
+     * 类型名称“timer”、“alarm”
+     */
+    public byte[] szClassName = new byte[256];
+
+    public NET_IN_THINGS_SERVICE_QUERULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java
new file mode 100644
index 0000000..d8363ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SERVICE_VALVECONTROL.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 闸门控制输入参数(对应 EM_THINGS_SERVICE_TYPE_VALVECONTROL)
+ * @date 2022/04/20 10:50:18
+ */
+public class NET_IN_THINGS_SERVICE_VALVECONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 开关
+     */
+    public int bSwitch;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_IN_THINGS_SERVICE_VALVECONTROL() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SET.java
new file mode 100644
index 0000000..a58346d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_SET.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetThingsConfig 接口输入参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_IN_THINGS_SET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[128];
+    /**
+     * pstuSetInProperInfo个数
+     */
+    public int nProperCount;
+    /**
+     * 属性值,具体内容由物模型协议决定, Key,Value,ValueType均需要填写
+     * 用户分配内存,大小为sizeof(NET_PROPERTIES_INFO)*nPropertiesCount
+     */
+    public Pointer pstuSetInProperInfo;
+
+    public NET_IN_THINGS_SET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java
new file mode 100644
index 0000000..d6a330e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_THINGS_START_HISTORYDATA.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_StartThingsHistoryData 输入参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_IN_THINGS_START_HISTORYDATA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 历史数据主题个数
+     */
+    public int nTopicsCount;
+    /**
+     * 历史数据主题列表
+     */
+    public NET_THINGS_START_HISTORYDATA_TOPICS[] stuTopics = (NET_THINGS_START_HISTORYDATA_TOPICS[]) new NET_THINGS_START_HISTORYDATA_TOPICS().toArray(64);
+
+    public NET_IN_THINGS_START_HISTORYDATA() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java
new file mode 100644
index 0000000..f4159fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICDOFINDSTAT.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口(CLIENT_DoFindFluxStat)输入参数 
+* @date 2022/05/07 10:03:35
+*/
+public class NET_IN_TRAFFICDOFINDSTAT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+每次查询的流量统计条数
+*/
+public			int					nCount;
+/** 
+等待接收数据的超时时间
+*/
+public			int					nWaittime;
+
+public NET_IN_TRAFFICDOFINDSTAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java
new file mode 100644
index 0000000..46bcbc2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFICSTARTFINDSTAT.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 接口(CLIENT_StartFindFluxStat)输入参数
+ * @date 2022/05/07 09:59:47
+ */
+public class NET_IN_TRAFFICSTARTFINDSTAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 开始时间 暂时精确到小时
+	 */
+	public NET_TIME stStartTime = new NET_TIME();
+	/**
+	 * 结束时间 暂时精确到小时
+	 */
+	public NET_TIME stEndTime = new NET_TIME();
+	/**
+	 * 等待接收数据的超时时间
+	 */
+	public int nWaittime;
+
+	/**
+	 * 查询的通道号个数
+	 */
+	public int nChannelCount;
+	/**
+	 * 查询的通道号
+	 */
+	public int[] nChannels = new int[256];
+	/**
+	 * 查询的车道号个数
+	 */
+	public int nLaneCount;
+	/**
+	 * 查询的车道号
+	 */
+	public int[] nLanes = new int[16];
+	/**
+	 * 数据库表类型 0表示视频结构化,1表示道路监控
+	 */
+	public int nClassType;
+	/**
+	 * 查询要求返回的统计信息粒度 默认按小时
+	 * {@link com.netsdk.lib.enumeration.EM_GRANULARITY_STARTFIND_TYPE}
+	 */
+	public int emGranularity;
+	/**
+	 * 统计方向查询条件 {@link com.netsdk.lib.enumeration.EM_STARTFIND_DIRECTION}
+	 */
+	public int emDirection;
+
+	public NET_IN_TRAFFICSTARTFINDSTAT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java
new file mode 100644
index 0000000..6b08751
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251589
+ * @version V1.0
+ * @Description: // CLIENT_QueryDevInfo NET_QUERY_TRAFFIC_RADAR_GET_OBJECT 类型接口输入参数
+ * @date 2020/12/14 20:46
+ */
+public class NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    public int nChannel;				// 通道号
+
+    public NET_IN_TRAFFIC_RADAR_GET_OBJECT_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java
new file mode 100644
index 0000000..43a6618
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_RADAR_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能交通外接雷达信息入参
+ * @date 2020/12/14
+ */
+public class NET_IN_TRAFFIC_SNAP_RADAR_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 结构体大小
+	 * */
+	public int dwSize;
+	   
+	/**
+	 * 通道号
+	 * */ 
+	public int nChannel;
+		
+	public NET_IN_TRAFFIC_SNAP_RADAR_INFO() {
+	  this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java
new file mode 100644
index 0000000..84e46dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRAFFIC_SNAP_STROBE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能交通外接道闸信息入参
+ * @date 2020/12/14
+ */
+public class NET_IN_TRAFFIC_SNAP_STROBE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 结构体大小
+	 * */
+	public int dwSize;
+	   
+	/**
+	 * 通道号
+	 * */ 
+	public int nChannel;
+		
+	public NET_IN_TRAFFIC_SNAP_STROBE_INFO() {
+	  this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java
new file mode 100644
index 0000000..0681236
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSFER_SUBLINK_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_TransferSubLinkInfo 接口输入参数
+*/
+public class NET_IN_TRANSFER_SUBLINK_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+/** 
+/< 连接方式 {@link com.netsdk.lib.enumeration.EM_SUBLINK_TYPE }
+*/
+public			int					emLinkType;
+/** 
+/< 会话ID
+*/
+public			byte[]					szBSID=new byte[64];
+/** 
+/< 本地服务信息, emLinkType为EM_SUBCONNECT_TYPE_PORT(主动注册)方式时有效
+*/
+public NET_LOCAL_SERVER_NET_INFO stuLoaclServerInfo=new NET_LOCAL_SERVER_NET_INFO();
+/** 
+连接模式 {@link com.netsdk.lib.enumeration.EM_SUBLINK_MODE}
+*/
+public			int				emLinkMode;	
+
+public NET_IN_TRANSFER_SUBLINK_INFO(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSMIT_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSMIT_CMD.java
new file mode 100644
index 0000000..340ccca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_TRANSMIT_CMD.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_TransmitCmd 接口输入参数
+ * @date 2023/03/15 21:31:22
+ */
+public class NET_IN_TRANSMIT_CMD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号, 范围 0~设备通道数
+	 */
+	public int nChannel;
+	/**
+	 * 协议类型,0 : 整形数组
+	 */
+	public int nHannel;
+	/**
+	 * 此命令需要接收回复,0 - false   1 -true
+	 */
+	public int bReply;
+	/**
+	 * 命令字节数量
+	 */
+	public int nMessageCount;
+	/**
+	 * 具体命令,是一个数组,每个元素为每个字节的整形值,使用DVR同前端交互协议,需要用户分配内存空间。指针对应int[]数组
+	 */
+	public Pointer pMessage;
+
+	public NET_IN_TRANSMIT_CMD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
new file mode 100644
index 0000000..e413fee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   获取设备状态入参 
+* @date 2022/09/01 15:10:37
+*/
+public class NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_IN_UNIFIEDINFOCOLLECT_GET_DEVSTATUS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPDATE_MULTI_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPDATE_MULTI_TALK_DEV.java
new file mode 100644
index 0000000..d7871c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPDATE_MULTI_TALK_DEV.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_UpdateMultiTalkDev 入参
+ * @origin autoTool
+ * @date 2023/10/26 09:52:01
+ */
+public class NET_IN_UPDATE_MULTI_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 要更新的个数
+     */
+    public int nUpdataInfoNum;
+    /**
+     * / 批量更新的数据
+     */
+    public NET_TALK_DEV_UPDATE_INFO[] stuUpdateInfo = new NET_TALK_DEV_UPDATE_INFO[128];
+
+    public NET_IN_UPDATE_MULTI_TALK_DEV() {
+        for (int i = 0; i < stuUpdateInfo.length; i++) {
+            stuUpdateInfo[i] = new NET_TALK_DEV_UPDATE_INFO();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..bcc3585
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_UPLOAD_UPPACKING_CHECK_INFO.java
@@ -0,0 +1,24 @@
+ package com.netsdk.lib.structure;
+ import com.netsdk.lib.NetSDKLib;
+ import com.sun.jna.Pointer;
+
+ /**
+  * @author 291189
+  * @version 1.0
+  * @description CLIENT_NET_API BOOL CALL_METHOD CLIENT_UploadUnpackingCheckInfo 入参
+  * @date 2021/9/9
+  */
+ public class NET_IN_UPLOAD_UPPACKING_CHECK_INFO extends NetSDKLib.SdkStructure {
+/** 结构体大小*/
+public			int					dwSize;
+/**  图片二进制数据缓存大小*/
+public			int					nImageDataLen;
+/** 图片二进制数据块*/
+public Pointer pImageData;
+/** 开包检查信息*/
+public			UNPACKING_CHECK_INFO		stuCheckInfo=new UNPACKING_CHECK_INFO();
+
+public NET_IN_UPLOAD_UPPACKING_CHECK_INFO(){
+    this.dwSize=this.size();
+}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java
new file mode 100644
index 0000000..924a6d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEOIN_DAYNIGHT_CAPS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @description CLIENT_GetDevCaps NET_VIDEOIN_DAYNIGHT_CAPS 命令入参,日夜模式能力集
+ * @date 2021/4/9
+ * @version 1.0
+ */
+public class NET_IN_VIDEOIN_DAYNIGHT_CAPS extends NetSDKLib.SdkStructure {
+  /** 用户使用时赋值为结构体大小 */
+  public int dwSize;
+  /** 通道号 */
+  public int nChannel;
+
+  public NET_IN_VIDEOIN_DAYNIGHT_CAPS() {
+    this.dwSize = size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java
new file mode 100644
index 0000000..a7eef1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIDEO_ENCODE_CAPS.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取视频编码能力集入参
+ * @date 2022/07/20 13:52:07
+ */
+public class NET_IN_VIDEO_ENCODE_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 该结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 组号
+	 */
+	public int nGroup;
+	/**
+	 * 码流类型,参考枚举{ @link CFG_EM_STREAM_TYPES } 
+	 */
+	public int stStreamType;
+
+	public NET_IN_VIDEO_ENCODE_CAPS() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIEW_RANGE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIEW_RANGE_STATE.java
new file mode 100644
index 0000000..289b856
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_VIEW_RANGE_STATE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 订阅可视域输入参数
+ * @origin autoTool
+ * @date 2023/05/30 10:04:52
+ */
+public class NET_IN_VIEW_RANGE_STATE extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 云台通道
+	 */
+	public int nChannel;
+	/**
+	 * 状态回调函数
+	 */
+	public NetSDKLib.fViewRangeStateCallBack cbViewRange;
+	/**
+	 * 用户数据
+	 */
+	public Pointer dwUser;
+
+	public NET_IN_VIEW_RANGE_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
new file mode 100644
index 0000000..cee33ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetWaterDataStatServerCaps 输入参数 
+* @date 2022/08/22 10:06:53
+*/
+public class NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public NET_IN_WATERDATA_STAT_SERVER_GETCAPS_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java
new file mode 100644
index 0000000..ca72e59
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetWaterDataStatServerWaterData 输入参数 
+* @date 2022/08/22 16:50:06
+*/
+public class NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+检测类型个数
+*/
+public			int					nTypeNum;
+/** 
+检测类型  {@link com.netsdk.lib.enumeration.EM_WATER_DETECTION_ALARM_TYPE}
+*/
+public			int[]					emType=new int[32];
+
+public NET_IN_WATERDATA_STAT_SERVER_GETDATA_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java
new file mode 100644
index 0000000..245e214
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_WLAN_ACCESSPOINT.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输入参数
+ * @date 2023/03/16 14:09:33
+ */
+public class NET_IN_WLAN_ACCESSPOINT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 需要获取信息的无线网络名称,为空时搜索所有网络
+	 */
+	public byte[] szSSID = new byte[36];
+	/**
+	 * 网卡名称, 为空时, 默认为eth2
+	 */
+	public byte[] szName = new byte[32];
+
+	public NET_IN_WLAN_ACCESSPOINT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java
new file mode 100644
index 0000000..6cfe6d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.callback.securityCheck.fXRayAttachPackageStatistics;
+import com.sun.jna.Pointer;
+
+/**
+ *@author : 291189
+ *@since : Created in 2021/7/1 9:47
+ * CLIENT_XRayAttachPackageStatistics 输入结构体
+ */
+public class NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS extends   NetSDKLib.SdkStructure{
+
+
+
+    public int dwSize;// 赋值为结构体大小
+    public byte[] szUUID=new byte[36];// UUID
+    public fXRayAttachPackageStatistics cbNotify;									// 回调函数
+    public Pointer  dwUser;										// 用户信息
+
+    public NET_IN_XRAY_ATTACH_PACKAGE_STATISTICS() {
+        this.dwSize = this.size();
+    }
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java
new file mode 100644
index 0000000..094fc17
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IN_XRAY_PACKAGE_STATISTICS_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  包裹信息
+ * @date 2021/7/1
+ */
+public class NET_IN_XRAY_PACKAGE_STATISTICS_INFO extends NetSDKLib.SdkStructure{
+
+
+    public  byte[] szUUID=new byte[36];// UUID
+    public  int   nStatisticsInfoID;// 统计信息ID
+    public NET_TIME_EX stuBeginTime=new NET_TIME_EX();							// 开始时间
+    public NET_TIME_EX stuEndTime=new NET_TIME_EX();							// 结束时间
+    public int		nTotalCount;							// 包裹总数
+    public  int		nStatisticsInfoByGradeNum;				// 按危险等级统计的信息的数量
+    public NET_IN_PACKAGE_STATISTICS_BYGRADE[]	stuStatisticsInfoByGrade=new NET_IN_PACKAGE_STATISTICS_BYGRADE[16];			// 按危险等级统计的信息
+    public int nStatisticsInfoByTypeNum; // 按危险类型统计的信息的数量
+    public NET_IN_PACKAGE_STATISTICS_BYTYPE[]	stuStatisticsInfoByType=new NET_IN_PACKAGE_STATISTICS_BYTYPE[64];			// 按危险类型统计的信息
+    public byte[] byReserved=new byte[1024];  	// 保留字段
+
+
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ISCSI_TARGET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ISCSI_TARGET.java
new file mode 100644
index 0000000..44fdd03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ISCSI_TARGET.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_ISCSI_TARGET extends NetSDKLib.SdkStructure {
+	
+	public NET_ISCSI_TARGET() {
+		this.dwSize = this.size();
+		
+		//System.out.println("NET_ISCSI_TARGET " + this.size());
+	}
+
+    public int                dwSize;
+    public byte[]             szName = new byte[128];              // 名称
+    public byte[]             szAddress = new byte[64];     // 服务器地址
+    public byte[]             szUser =new byte[128];            // 用户名
+    public int                nPort;                                      // 端口
+    public int                nStatus;                                    // 状态, 0-未知, 1-已连接, 2-未连接, 3-连接失败, 4-认证失败, 5-连接超时, 6-不存在    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java
new file mode 100644
index 0000000..a8f5720
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVSEVENT_EVENT_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  智能事件数据信息 
+* @date 2022/11/02 13:53:03
+*/
+public class NET_IVSEVENT_EVENT_INFO extends NetSDKLib.SdkStructure {
+/** 
+通道号 从0开始,-1表示通道号未知
+*/
+public			int					nChannel;
+/** 
+事件编号
+*/
+public			int					nId;
+/** 
+事件类型,值含义参考 EVENT_IVS_ALL 下面的智能事件类型宏定义
+*/
+public			int					dwEventCode;
+/** 
+报警诊断类型
+0:未知
+1:未处理
+2:正确
+3:错误
+4:重复正确报警
+5:重复错误报警
+*/
+public			int					nVaild;
+/**
+ 事件发生的时间
+*/
+public NET_TIME_EX stuTime=new NET_TIME_EX();
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1020];
+
+public NET_IVSEVENT_EVENT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java
new file mode 100644
index 0000000..12b9981
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_DIALRECOGNITION_RULE_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description EVENT_IVS_DIALRECOGNITION(仪表检测事件)对应的规则配置
+ * @date 2022/06/30 11:30:54
+ */
+public class NET_IVS_DIALRECOGNITION_RULE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 仪表类型 {@link com.netsdk.lib.enumeration.EM_DIALDETECT_TYPE}
+     */
+    public int emType;
+    /**
+     * 规则特定的尺寸过滤器是否有效
+     */
+    public int bSizeFileter;
+    /**
+     * 规则特定的尺寸过滤器
+     */
+    public NET_CFG_SIZEFILTER_INFO stuSizeFileter = new NET_CFG_SIZEFILTER_INFO();
+    /**
+     * 检测区域
+     */
+    public POINTCOORDINATE[] stuDetectRegion = new POINTCOORDINATE[20];
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 敞开式隔离开关有效,分夹角阈值, 单位度,取值范围0~90, 建议20
+     */
+    public int nKinfeOpenAngleThreshold;
+    /**
+     * 敞开式隔离开关有效,合夹角阈值, 单位度,取值范围0~90, 建议10
+     */
+    public int nKinfeClossAngleThreshold;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[2044];
+
+    public NET_IVS_DIALRECOGNITION_RULE_INFO() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new POINTCOORDINATE();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java
new file mode 100644
index 0000000..0b8dcf6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description EVENT_IVS_ELECTRICFAULT_DETECT(仪表类缺陷检测事件)对应的规则配置
+ * @date 2022/06/29 20:26:01
+ */
+public class NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 挂空悬浮物检测使能
+     */
+    public int bAirborneDetectEnable;
+    /**
+     * 鸟巢检测使能
+     */
+    public int bNestDetectEnable;
+    /**
+     * 表盘检测(表盘模糊)使能
+     */
+    public int bDialDetectEnable;
+    /**
+     * 渗漏检测使能
+     */
+    public int bLeakageDetectEnable;
+    /**
+     * 箱门检测使能
+     */
+    public int bDoorDetectEnable;
+    /**
+     * 呼吸器检测使能
+     */
+    public int bRespiratorDetectEnable;
+    /**
+     * 吸烟检测使能
+     */
+    public int bSmokingDetectEnable;
+    /**
+     * 绝缘子检测使能
+     */
+    public int bInsulatorDetectEnable;
+    /**
+     * 盖板检测使能
+     */
+    public int bCoverPlateDetectEnable;
+    /**
+     * 压板开合检测使能
+     */
+    public int bPressingPlateDetectEnable;
+    /**
+     * 金属锈蚀检测使能
+     */
+    public int bMetalCorrosionEnable;
+    /**
+     * 规则特定的尺寸过滤器是否有效
+     */
+    public int bSizeFileter;
+    /**
+     * 规则特定的尺寸过滤器
+     */
+    public NET_CFG_SIZEFILTER_INFO stuSizeFileter = new NET_CFG_SIZEFILTER_INFO();
+    /**
+     * 检测区域
+     */
+    public POINTCOORDINATE[] stuDetectRegion = new POINTCOORDINATE[20];
+    /**
+     * 检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[2048];
+
+    public NET_IVS_ELECTRICFAULT_DETECT_RULE_INFO() {
+        for (int i = 0; i < stuDetectRegion.length; i++) {
+            stuDetectRegion[i] = new POINTCOORDINATE();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_KEEP_LIGHTING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_KEEP_LIGHTING.java
new file mode 100644
index 0000000..2a5f0ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_KEEP_LIGHTING.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光常亮信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:54
+ */
+public class NET_KEEP_LIGHTING extends NetSDKLib.SdkStructure {
+    /**
+     * /是否支持灯光常亮
+     */
+    public int bSupported;
+    /**
+     * /支持灯光联动能力集
+     */
+    public NET_LINKING_ABILITY stuAbility = new NET_LINKING_ABILITY();
+    /**
+     * /常亮灯光类型
+     */
+    public int[] anLightType = new int[3];
+    /**
+     * /常亮灯光数量
+     */
+    public int nLightTypeLen;
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_KEEP_LIGHTING() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO.java
new file mode 100644
index 0000000..7f4ccb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可视对讲设备
+ * @date 2023/05/11 14:09:05
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 可视对讲设备ID
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_ALARM_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO.java
new file mode 100644
index 0000000..cd41255
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 摄像头设备
+ * @date 2023/05/11 14:09:04
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 相机IP
+	 */
+	public byte[] szIp = new byte[32];
+	/**
+	 * 相机登录用户名
+	 */
+	public byte[] szUser = new byte[32];
+	/**
+	 * 相机登录密码
+	 */
+	public byte[] szPwd = new byte[32];
+	/**
+	 * 相机通道号
+	 */
+	public int nChannel;
+	/**
+	 * 相机连接状态
+	 */
+	public int bConnectedState;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_CAMERA_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO.java
new file mode 100644
index 0000000..e3fce07
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 动环设备
+ * @date 2023/05/11 14:09:04
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 动环设备ID
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 湿度
+	 */
+	public byte[] szHumidity = new byte[32];
+	/**
+	 * 气压
+	 */
+	public byte[] szPressure = new byte[32];
+	/**
+	 * 风速
+	 */
+	public byte[] szWindSpeed = new byte[32];
+	/**
+	 * 风向
+	 */
+	public byte[] szWindDirection = new byte[32];
+	/**
+	 * 温度
+	 */
+	public byte[] szTemperature = new byte[32];
+	/**
+	 * 分贝
+	 */
+	public byte[] szDecibel = new byte[32];
+	/**
+	 * PM2.5
+	 */
+	public byte[] szPM2_5 = new byte[32];
+	/**
+	 * PM10
+	 */
+	public byte[] szPM10 = new byte[32];
+	/**
+	 * 雨量
+	 */
+	public byte[] szRainfall = new byte[32];
+	/**
+	 * 辐射
+	 */
+	public byte[] szRadiation = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_ENVIRONMENT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO.java
new file mode 100644
index 0000000..a5561ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 照明灯设备
+ * @date 2023/05/11 14:09:04
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 灯的地址
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 灯的分组
+	 */
+	public byte[] szGroup = new byte[32];
+	/**
+	 * 灯电压
+	 */
+	public byte[] szVoltage = new byte[32];
+	/**
+	 * 灯电流
+	 */
+	public byte[] szCurrent = new byte[32];
+	/**
+	 * 灯版本信息
+	 */
+	public byte[] szVersion = new byte[32];
+	/**
+	 * 灯开关控制
+	 */
+	public int bOnOffState;
+	/**
+	 * 灯亮度控制
+	 */
+	public int nBrightness;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_LIGHT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO.java
new file mode 100644
index 0000000..b1c3fc5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description LED广告屏
+ * @date 2023/05/11 14:09:04
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * LED广告屏IP地址
+	 */
+	public byte[] szIp = new byte[32];
+	/**
+	 * LED广告屏序列号
+	 */
+	public byte[] szSN = new byte[32];
+	/**
+	 * LED广告屏与终端的连接状态
+	 */
+	public int bConnectedState;
+	/**
+	 * LED广告屏链接平台的连接状态
+	 */
+	public int bPlatformConnectedState;
+	/**
+	 * LED广告屏控制开关
+	 */
+	public int bOnOffState;
+	/**
+	 * LED广告屏亮度控制
+	 */
+	public int nBrightness;
+	/**
+	 * LED广告屏音量控制
+	 */
+	public int nVolume;
+	/**
+	 * 显示状态数量
+	 */
+	public int nDisplayEnvironmentNum;
+	/**
+	 * 0~9个元素分别表示气象要素的显示状态:湿度、气压、风速、风向、温度、分贝、PM2.5、PM10、雨量和辐射的叠加显示状态
+	 */
+	public int[] bDisplayEnvironment = new int[10];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_SCREEN_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO.java
new file mode 100644
index 0000000..c14d8cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 音柱设备
+ * @date 2023/05/11 14:09:05
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 音柱设备ID
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_SPEAKER_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO.java
new file mode 100644
index 0000000..056689b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description WifiAp设备
+ * @date 2023/05/11 14:09:05
+ */
+public class NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * WifiAp设备ID
+	 */
+	public byte[] szId = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_LAMP_EXTERNAL_DEVICE_WIFIAP_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_LIST_INFO.java
new file mode 100644
index 0000000..a2a95e0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 路段对应的车道列表
+ * @date 2021/09/02
+ */
+public class NET_LANE_LIST_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  车道编号
+     */
+    public int nLaneNumber;
+
+    /**
+     *  车行灯进口方向车道类型
+     */
+    public int nLaneType;
+
+    /**
+     *  是否为待行区 0为车道不是待行区,1标示车道有待行区
+     */
+    public int nWaitingArea;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..9bc67d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LANE_PLAN_LIST_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 计划表信息
+ * @date 2021/09/28
+ */
+public class NET_LANE_PLAN_LIST_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  可变车道指示牌号
+     */
+    public int nVarlaneId;
+
+    /**
+     *  可变车道编号(车道配置页面编号)
+     */
+    public int nVarlaneNumber;
+
+    /**
+     *  保持时间(分钟)0-1440
+     */
+    public int nKeepTime;
+
+    /**
+     *  1:固定方案; 2:自适应双向切换; 3:定向切换
+     */
+    public int nControlMode;
+
+    /**
+     *  当前属性 1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐)
+     */
+    public int nCurrentVarlaneProperty;
+
+    /**
+     *  属性计划表个数
+     */
+    public int nPropertyPlanListNum;
+
+    /**
+     *  属性计划表
+     */
+    public NET_PROPERTY_PLAN_LIST_INFO[] stuPropertyPlanInfo = (NET_PROPERTY_PLAN_LIST_INFO[]) new NET_PROPERTY_PLAN_LIST_INFO().toArray(7);
+    
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEAKAGE_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEAKAGE_DETECT.java
new file mode 100644
index 0000000..b8d4aa4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEAKAGE_DETECT.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  渗漏检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_LEAKAGE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_LEAKAGE_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..895f2e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LEFTDETECTION_RULE_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.structure.NET_CFG_SIZEFILTER_INFO;
+
+/** 事件类型 EVENT_IVS_LEFTDETECTION (物品遗留事件) 对应的规则配置 */
+public class NET_LEFTDETECTION_RULE_INFO extends SdkStructure {
+  /** 检测区域顶点数 */
+  public int nDetectRegionPoint;
+  /** 检测区域 */
+  public com.netsdk.lib.structure.POINTCOORDINATE[] stuDetectRegion = (com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+  /** 触发报警位置数 */
+  public int nTriggerPosition;
+  /** 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 */
+  public byte[] bTriggerPosition = new byte[8];
+  /** 最短持续时间 单位:秒,0~65535 */
+  public int nMinDuration;
+  /** 跟踪持续时间,0秒:一直跟踪,1-300秒:跟踪持续时间 */
+  public int nTrackDuration;
+  /** 规则特定的尺寸过滤器是否有效 */
+  public boolean bSizeFileter;
+  /** 规则特定的尺寸过滤器 */
+  public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTINFO_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTINFO_CFG.java
new file mode 100644
index 0000000..f0b4afa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTINFO_CFG.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 相机对应的红绿灯通道状态
+ * @date 2020/11/09
+ */
+public class NET_LIGHTINFO_CFG extends NetSDKLib.SdkStructure{
+			
+	//红绿灯通道
+	public int nLightNo;
+	
+	// 红绿灯状态{@link EM_TRAFFIC_LIGHT_DETECT_STATE}
+	public int emLightState;
+	
+	//预留
+	public byte[] byReserved = new byte[504];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTPERIODS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTPERIODS_INFO.java
new file mode 100644
index 0000000..d31a65c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHTPERIODS_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_TRFAFFIC_LIGHT_TYPE;
+
+/**
+ * 交通灯的持续时间,时间单位毫秒
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/29 16:48
+ */
+public class NET_LIGHTPERIODS_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 交通灯类型 枚举 {@link EM_TRFAFFIC_LIGHT_TYPE}
+     */
+    public int emType;
+    /**
+     * 直行灯持续时间
+     */
+    public int nStraight;
+    /**
+     * 左转灯持续时间
+     */
+    public int nTurnLeft;
+    /**
+     * 右转灯持续时间
+     */
+    public int nTurnRight;
+    /**
+     * 掉头灯持续时间
+     */
+    public int nUTurn;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[60];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_INFO.java
new file mode 100644
index 0000000..ea98a24
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯光信息
+ * @date 2023/05/23 09:40:10
+ */
+public class NET_LIGHT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 亮度百分比
+	 */
+	public int nLight;
+	/**
+	 * 激光灯角度归一化值
+	 */
+	public int nAngle;
+
+	public NET_LIGHT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_TYPE_COMPLEX_DETAIL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_TYPE_COMPLEX_DETAIL.java
new file mode 100644
index 0000000..56d55eb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LIGHT_TYPE_COMPLEX_DETAIL.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光组信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:51
+ */
+public class NET_LIGHT_TYPE_COMPLEX_DETAIL extends NetSDKLib.SdkStructure {
+    /**
+     * /近光灯组灯类型
+     */
+    public int[] anNearLight = new int[4];
+    /**
+     * /近光灯组灯数量
+     */
+    public int nNearLightLen;
+    /**
+     * /中光灯组灯类型
+     */
+    public int[] anMiddleLight = new int[4];
+    /**
+     * /中光灯组灯数量
+     */
+    public int nMiddleLightLen;
+    /**
+     * /远光灯组灯类型
+     */
+    public int[] anFarLight = new int[4];
+    /**
+     * /远光灯组灯数量
+     */
+    public int nFarLightLen;
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_LIGHT_TYPE_COMPLEX_DETAIL() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_ABILITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_ABILITY.java
new file mode 100644
index 0000000..20e9288
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_ABILITY.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 支持灯光联动的能力集
+ * @origin autoTool
+ * @date 2023/10/19 17:27:53
+ */
+public class NET_LINKING_ABILITY extends NetSDKLib.SdkStructure {
+    /**
+     * /支持的非智能事件
+     */
+    public int[] emAnSupportEvents = new int[10];
+    /**
+     * /支持的非智能事件数量
+     */
+    public int nSupportEventsLen;
+    /**
+     * /支持的智能规则
+     */
+    public int[] emAnSupportIntelliScence = new int[40];
+    /**
+     * /支持的智能规则数量
+     */
+    public int nSupportIntelliScenceLen;
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_LINKING_ABILITY() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_DETAIL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_DETAIL.java
new file mode 100644
index 0000000..7958fbe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINKING_DETAIL.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 云台联动灯光类型
+ * @origin autoTool
+ * @date 2023/10/19 17:27:54
+ */
+public class NET_LINKING_DETAIL extends NetSDKLib.SdkStructure {
+    /**
+     * /闪烁灯光信息
+     */
+    public NET_FILCKER_LIGHTING stuFilckerLighting = new NET_FILCKER_LIGHTING();
+    /**
+     * /常亮灯光信息
+     */
+    public NET_KEEP_LIGHTING stuKeepLighting = new NET_KEEP_LIGHTING();
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_LINKING_DETAIL() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINK_INFO.java
new file mode 100644
index 0000000..17651a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LINK_INFO.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 联动信息,保存其他设备传输的信息
+ * @date 2022/07/22 11:28:18
+ */
+public class NET_LINK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 联动物体ID
+	 */
+	public int nLinkObjectID;
+	/**
+	 * 联动事件ID
+	 */
+	public int nLinkEventID;
+	/**
+	 * 联动物体速度,单位米/秒,扩大100倍
+	 */
+	public int nSpeedValue;
+	/**
+	 * 报警类型, 第0bit位表示是否超速(1表示超速,0表示未超速), 第1bit位表示是否AIS匹配, 第2bit位表示是否禁行, 第3bit位表示是否逆行
+	 */
+	public int nAlarmType;
+	/**
+	 * 联动物体经度,(单位是百万分之度,范围0-360度)如东经120.178274度表示为300178274
+	 */
+	public int nLongitude;
+	/**
+	 * 联动物体纬度,(单位是百万分之度,范围0-180度)如北纬30.183382度表示为120183382 经纬度的具体转换方式可以参考结构体
+	 * NET_WIFI_GPS_INFO 中的注释
+	 */
+	public int nLatitude;
+	/**
+	 * null
+	 */
+	public int nDistance;
+	/**
+	 * 跟踪物体类型
+	 */
+	public byte[] szObjectType = new byte[16];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[212];
+
+	public NET_LINK_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java
new file mode 100644
index 0000000..aab0f87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCAL_SERVER_NET_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+本地服务网络信息
+*/
+public class NET_LOCAL_SERVER_NET_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 本地服务IP
+*/
+public			byte[]					szLocalIp=new byte[64];
+/** 
+/< 本地服务端口
+*/
+public			int					nLocalPort;
+/** 
+/< 保留字节
+*/
+public			byte[]					szReserved=new byte[516];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATED_AREAS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATED_AREAS.java
new file mode 100644
index 0000000..e8a3951
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATED_AREAS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 目标当前所处的区域信息
+ * @origin autoTool
+ * @date 2023/06/13 10:35:34
+ */
+public class NET_LOCATED_AREAS extends NetSDKLib.SdkStructure {
+	/**
+	 * 字符串格式的区域ID
+	 */
+	public byte[] szIDStr = new byte[16];
+	/**
+	 * 区域类型 0:未知 1:路口 2:路段
+	 */
+	public int nType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[60];
+
+	public NET_LOCATED_AREAS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_INFO.java
new file mode 100644
index 0000000..99431e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备标定信息
+ * @date 2023/05/24 10:24:53
+ */
+public class NET_LOCATION_CALIBRATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 可见光横向视角
+	 */
+	public int nVisualMaxHFOV;
+	/**
+	 * 可见光纵向视角
+	 */
+	public int nVisualMaxVFOV;
+	/**
+	 * 热成像横向视角
+	 */
+	public int nThermoMaxHFOV;
+	/**
+	 * 热成像纵向视角
+	 */
+	public int nThermoMaxVFOV;
+	/**
+	 * 标定点信息
+	 */
+	public NET_LOCATION_CALIBRATE_POINT_INFO[] stuPointInfo = new NET_LOCATION_CALIBRATE_POINT_INFO[64];
+	/**
+	 * 标定点个数
+	 */
+	public int nPointNum;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved1 = new byte[4];
+
+	public NET_LOCATION_CALIBRATE_INFO() {
+		for (int i = 0; i < stuPointInfo.length; i++) {
+			stuPointInfo[i] = new NET_LOCATION_CALIBRATE_POINT_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_POINT_INFO.java
new file mode 100644
index 0000000..e556111
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOCATION_CALIBRATE_POINT_INFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 标定点信息
+ * @date 2023/05/24 10:24:53
+ */
+public class NET_LOCATION_CALIBRATE_POINT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 标定点ID
+	 */
+	public int nID;
+	/**
+	 * 标定点名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	/**
+	 * 经度
+	 */
+	public int nLongitude;
+	/**
+	 * 纬度
+	 */
+	public int nLatitude;
+	/**
+	 * 海拔
+	 */
+	public double fAltitude;
+	/**
+	 * 标定点基本信息
+	 */
+	public NET_CALIBRATE_INFO stuCalibrateInfo = new NET_CALIBRATE_INFO();
+	/**
+	 * 字节对齐
+	 */
+	public byte[] byReserved1 = new byte[4];
+
+	public NET_LOCATION_CALIBRATE_POINT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java
new file mode 100644
index 0000000..1596a5e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOGIC_CHANNEL_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_LOGIC_CHANNEL;
+
+/**
+ * 通道信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/18 9:42
+ */
+public class NET_LOGIC_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 教室ID号
+     */
+    public int nRoomID;
+    /**
+     * 逻辑通道号 {@link NET_EM_LOGIC_CHANNEL}
+     */
+    public int emLogicChannel;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_INFO.java
new file mode 100644
index 0000000..de45df6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 日志信息
+ * @date 2023/06/12 09:24:31
+ */
+public class NET_LOG_INFO extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 时间
+	 */
+	public NET_TIME stuTime = new NET_TIME();
+	/**
+	 * 操作者
+	 */
+	public byte[] szUserName = new byte[32];
+	/**
+	 * 类型
+	 */
+	public byte[] szLogType = new byte[128];
+	/**
+	 * 日志信息
+	 */
+	public NET_LOG_MESSAGE stuLogMsg = new NET_LOG_MESSAGE();
+	/**
+	 * 记录UTC时间
+	 */
+	public NET_TIME stuTimeRealUTC = new NET_TIME();
+
+	public NET_LOG_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_MESSAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_MESSAGE.java
new file mode 100644
index 0000000..3196998
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOG_MESSAGE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 日志详细信息
+ * @date 2023/06/12 09:24:31
+ */
+public class NET_LOG_MESSAGE extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 日志内容
+	 */
+	public byte[] szLogMessage = new byte[1024];
+
+	public NET_LOG_MESSAGE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java
new file mode 100644
index 0000000..243f236
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_LOOPPLAYBACK_AUDIOALARM_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+音频循环播放报警配置
+*/
+public class NET_LOOPPLAYBACK_AUDIOALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+使能,开启:TRUE 关闭:FALSE
+*/
+public			int					bEnable;
+/** 
+布撤防时间段
+*/
+public			NetSDKLib.NET_TSECT[]					stuTimeSection=new NetSDKLib.NET_TSECT[8*6];
+/** 
+语音播报文件路径
+*/
+public			byte[]					szAudioFilePath=new byte[256];
+/** 
+开始时间
+*/
+public			byte[]					szStartTime=new byte[20];
+/** 
+结束时间
+*/
+public			byte[]					szEndTime=new byte[20];
+
+    public NET_LOOPPLAYBACK_AUDIOALARM_INFO(){
+                for(int i=0;i<stuTimeSection.length;i++){
+                    stuTimeSection[i]=new NetSDKLib.NET_TSECT();
+                }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java
new file mode 100644
index 0000000..d7a8809
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MANUALSNAP_PARKINGSPACE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 停车位的数据信息
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:29
+ */
+public class NET_MANUALSNAP_PARKINGSPACE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 车位是否有车标记 0:Unknown 1-Parking 2-NoParking
+     */
+    public int nStatus;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 车位号
+     */
+    public byte[] szParkingNo = new byte[32];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[412];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MASK_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MASK_ATTRIBUTE.java
new file mode 100644
index 0000000..f678cba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MASK_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 口罩相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_MASK_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有戴口罩,{@link EM_WEARING_STATE}
+     */
+    public int emHasMask;
+    /**
+     * 口罩检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalMask;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java
new file mode 100644
index 0000000..3196bae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_IN.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_MatchTwoFaceImage}的入参
+ * @date 2020/10/19
+ */
+public class NET_MATCH_TWO_FACE_IN extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    /**
+     * 原图
+     */
+    public NET_IMAGE_COMPARE_INFO stuOriginalImage;
+    /**
+     * 比较图
+     */
+    public NET_IMAGE_COMPARE_INFO stuCompareImage;
+    /**
+     * 两张人脸图片数据
+     */
+    public Pointer pSendBuf;
+    /**
+     * 数据大小
+     */
+    public int dwSendBufLen;
+
+    public NET_MATCH_TWO_FACE_IN() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java
new file mode 100644
index 0000000..6e5ed50
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MATCH_TWO_FACE_OUT.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2020/10/19
+ */
+public class NET_MATCH_TWO_FACE_OUT extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    /**
+     * 两张图片的相似度,范围0~100
+     */
+    public int nSimilarity;
+
+    public NET_MATCH_TWO_FACE_OUT() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java
new file mode 100644
index 0000000..aaeb183
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_EXAM_PARAM.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  考场录像查询 ( CLIENT_FindFileEx + DH_FILE_QUERY_EXAM ) 
+* @date 2022/05/17 10:42:12
+*/
+public class NET_MEDIAFILE_EXAM_PARAM extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道号从0开始,-1表示查询所有通道
+*/
+public			int					nChannelID;
+/** 
+开始时间
+*/
+public NET_TIME stuStartTime=new NET_TIME();
+/** 
+结束时间
+*/
+public NET_TIME stuEndTime=new NET_TIME();
+/** 
+考生姓名
+*/
+public			byte[]					szName=new byte[64];
+/** 
+考生考号
+*/
+public			byte[]					szNumber=new byte[64];
+/** 
+摄像头IP
+*/
+public			byte[]					szCameraIP=new byte[32];
+
+public NET_MEDIAFILE_EXAM_PARAM(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java
new file mode 100644
index 0000000..3c8d6d0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIAFILE_GENERAL_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 通用信息
+ * @date 2021/2/22
+ */
+public class NET_MEDIAFILE_GENERAL_INFO extends NetSDKLib.SdkStructure {
+  /** 图片文件路径 */
+  public byte[] szFilePath = new byte[MAX_PATH];
+  /** ObjectUrls的个数 */
+  public int nObjectUrlNum;
+  /** 小图路径 */
+  public ObjectUrl[] szObjectUrls = (ObjectUrl[]) new ObjectUrl().toArray(8);
+  /** 保留字段 */
+  public byte[] byReserved = new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java
new file mode 100644
index 0000000..d3256f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description DH_MEDIA_QUERY_TRAFFICCAR对应的查询条件 参数扩展
+ * @date 2022/09/06 09:43:57
+ */
+public class NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX extends NetSDKLib.SdkStructure {
+    /**
+     * 违法代码
+     */
+    public byte[] szViolationCode = new byte[16];
+    /**
+     * 国籍,2字节,符合ISO3166规范
+     */
+    public byte[] szCountry = new byte[4];
+    /**
+     * 为TRUE表示仅下发stuStartTimeRealUTC和stuEndTimeRealUTC(不下发StartTime, EndTime), 为FALSE表示仅下发StartTime, EndTime(不下发stuStartTimeRealUTC和stuEndTimeRealUTC)
+     */
+    public int bOnlySupportRealUTC;
+    /**
+     * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用,与(StartTime, EndTime)互斥
+     */
+    public NetSDKLib.NET_TIME stuStartTimeRealUTC = new NetSDKLib.NET_TIME();
+    /**
+     * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用,与(StartTime, EndTime)互斥
+     */
+    public NetSDKLib.NET_TIME stuEndTimeRealUTC = new NetSDKLib.NET_TIME();
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[968];
+
+    public NET_MEDIA_QUERY_TRAFFICCAR_PARAM_EX() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMBERS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMBERS_INFO.java
new file mode 100644
index 0000000..72985c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMBERS_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 联系人信息
+ * @date 2023/03/15 21:15:00
+ */
+public class NET_MEMBERS_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 联系人姓名
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 设备描述
+	 */
+	public byte[] szMobile = new byte[16];
+	/**
+	 * 电子邮箱
+	 */
+	public byte[] szEmail = new byte[32];
+	/**
+	 * 组织
+	 */
+	public byte[] szOrganization = new byte[64];
+
+	public NET_MEMBERS_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_INFO.java
new file mode 100644
index 0000000..899f72f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_MEMORY_INFO
+ * description:
+ * author:251589
+ * createTime:2021/2/25 13:38
+ *
+ * @version v1.0
+ */
+
+public class NET_MEMORY_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  总内存, M
+     */
+    public int dwTotal;
+
+    /**
+     *  剩余内存, M
+     */
+    public int dwFree;
+
+    public NET_MEMORY_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_STATUS.java
new file mode 100644
index 0000000..dfb22dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MEMORY_STATUS.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_MEMORY_STATUS
+ * description:
+ * author:251589
+ * createTime:2021/2/25 13:36
+ *
+ * @version v1.0
+ */
+
+public class NET_MEMORY_STATUS  extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  查询是否成功
+     */
+    public int bEnable;
+
+    /**
+     *  内存信息
+     */
+    public NET_MEMORY_INFO stuMemory;
+
+    public NET_MEMORY_STATUS (){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_METAL_CORROSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_METAL_CORROSION.java
new file mode 100644
index 0000000..323055a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_METAL_CORROSION.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  金属锈蚀结果 
+* @date 2022/06/28 19:44:57
+*/
+public class NET_METAL_CORROSION extends NetSDKLib.SdkStructure {
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+/** 
+预留字段
+*/
+public			byte[]					bReserved=new byte[128];
+
+public			NET_METAL_CORROSION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java
new file mode 100644
index 0000000..34461f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_ALARMPOINT_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description mini雷达报警点信息
+ * @date 2022/08/04 17:03:45
+ */
+public class NET_MINI_RADAR_ALARMPOINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 心率值(生命体征雷达使用)
+     */
+    public int nHeartRate;
+    /**
+     * 呼吸值(生命体征雷达使用)
+     */
+    public int nBreathe;
+    /**
+     * 起身状态(生命体征雷达使用)
+     */
+    public int bGetUpStatus;
+    /**
+     * 离床状态(生命体征雷达使用)
+     */
+    public int bAFBStatus;
+    /**
+     * 翻身状态(生命体征雷达使用)
+     */
+    public int bTurnOverStatus;
+    /**
+     * 睡眠质量(生命体征雷达使用)
+     */
+    public int nSleepQuality;
+    /**
+     * 摔倒状态(室内雷达)
+     */
+    public int bPosture;
+    /**
+     * 人数(室内雷达)
+     */
+    public int nNum;
+    /**
+     * 目标ID,0-31,室内雷达使用
+     */
+    public int nId;
+    /**
+     * 位置信息x个数
+     */
+    public int nXPosNum;
+    /**
+     * 位置信息x,单位米。扩大100倍,最多32人
+     */
+    public int[] nXPos = new int[32];
+    /**
+     * 位置信息y个数
+     */
+    public int nYPosNum;
+    /**
+     * 位置信息y,单位米。扩大100倍,最多32人
+     */
+    public int[] nYPos = new int[32];
+    /**
+     * 速度个数
+     */
+    public int nSpeedNum;
+    /**
+     * 速度 m/s,100倍,最多32人
+     */
+    public int[] nSpeed = new int[32];
+    /**
+     * 人员类型个数
+     */
+    public int nTypeNum;
+    /**
+     * 人员类型:大人、小孩
+     */
+    public int[] nType = new int[32];
+    /**
+     * 广告机专用;1-5,最多支持5个等级
+     */
+    public int nHeartRateLevel;
+    /**
+     * 广告机专用;人与广告机的距离,单位米,扩大100倍
+     */
+    public int nDistance;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_MINI_RADAR_ALARMPOINT_INFO() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java
new file mode 100644
index 0000000..f7532f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 上报的mini雷达报警点信息
+ * @date 2022/08/04 17:03:46
+ */
+public class NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 订阅的SID
+     */
+    public int nSID;
+    /**
+     * mini雷达报警点的数量
+     */
+    public int nAlarmPointNum;
+    /**
+     * mini雷达报警点信息
+     */
+    public NET_MINI_RADAR_ALARMPOINT_INFO[] stuAlarmPoint = new NET_MINI_RADAR_ALARMPOINT_INFO[64];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+
+    public NET_MINI_RADAR_NOTIFY_ALARMPOINTINFO() {
+        for (int i = 0; i < stuAlarmPoint.length; i++) {
+            stuAlarmPoint[i] = new NET_MINI_RADAR_ALARMPOINT_INFO();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MODES_COMPLEX_LIGHT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MODES_COMPLEX_LIGHT.java
new file mode 100644
index 0000000..84bbe51
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MODES_COMPLEX_LIGHT.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光支持的模式信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:51
+ */
+public class NET_MODES_COMPLEX_LIGHT extends NetSDKLib.SdkStructure {
+    /**
+     * /红外灯支持的模式
+     */
+    public int[] anInfraredLight = new int[3];
+    /**
+     * /红外灯支持的模式数量
+     */
+    public int nInfraredLightLen;
+    /**
+     * /白光灯支持的模式
+     */
+    public int[] anWhiteLight = new int[3];
+    /**
+     * /白光灯支持的模式数量
+     */
+    public int nWhiteLightLen;
+    /**
+     * /激光灯支持的模式
+     */
+    public int[] anLaserLight = new int[3];
+    /**
+     * /激光灯支持的模式数量
+     */
+    public int nLaserLightLen;
+    /**
+     * /智能混光灯支持的模式
+     */
+    public int[] emAIMixLight = new int[8];
+    /**
+     * /智能混光灯支持的模式数量
+     */
+    public int nAIMixLight;
+    /**
+     * /保留字节
+     */
+    public byte[] byReserved = new byte[92];
+
+    public NET_MODES_COMPLEX_LIGHT() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java
new file mode 100644
index 0000000..1429120
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_COLLECTION_NAME.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_DEVICE_NAME_LEN;
+
+/**
+ * 电视墙预案名称 拆分自{@link NET_IN_MONITORWALL_GET_COLL_SCHD}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:28
+ */
+public class NET_MONITORWALL_COLLECTION_NAME extends NetSDKLib.SdkStructure {
+    /**
+     * 电视墙预案名称
+     */
+    public byte[] collectionName = new byte[NET_DEVICE_NAME_LEN];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java
new file mode 100644
index 0000000..1a8c748
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_ENABLE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+
+/**
+ * 电视墙使能信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:17
+ */
+public class NET_MONITORWALL_ENABLE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 使能
+     */
+    public int bEnable;
+    /**
+     * 电视墙名称
+     */
+    public byte[] szName = new byte[NET_COMMON_STRING_128];
+
+    public NET_MONITORWALL_ENABLE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_NAME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_NAME.java
new file mode 100644
index 0000000..61f429b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITORWALL_NAME.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_COMMON_STRING_128;
+
+/**
+ * 电视墙名称 拆分自{@link NET_IN_MONITORWALL_GET_ENABLE}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:08
+ */
+public class NET_MONITORWALL_NAME extends NetSDKLib.SdkStructure {
+    /**
+     * 电视墙名称
+     */
+    public byte[] szName = new byte[NET_COMMON_STRING_128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java
new file mode 100644
index 0000000..d83fce0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_DEVICE_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 设备详细信息
+ * @date 2021/11/07
+ */
+public class NET_MONITOR_WALL_DEVICE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  机器名称
+     */
+    public byte[] szName = new byte[64];
+
+    /**
+     *  密码
+     */
+    public byte[] szPassword = new byte[64];
+
+    /**
+     *  用户名
+     */
+    public byte[] szUserName = new byte[64];
+
+    /**
+     *  端口
+     */
+    public int nPort;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserverd = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java
new file mode 100644
index 0000000..74be487
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MONITOR_WALL_OUT_MODE_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 电视墙输出模式信息
+ * @date 2021/2/22
+ */
+public class NET_MONITOR_WALL_OUT_MODE_INFO extends NetSDKLib.SdkStructure {
+  /** 水平分辨率 */
+  public int nWidth;
+  /** 垂直分辨率 */
+  public int nHeight;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java
new file mode 100644
index 0000000..a2ed705
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOSAIC_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 马赛克隐私遮挡块的能力集
+ * @date 2022/07/21 13:40:56
+ */
+public class NET_MOSAIC_MASKING_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持马赛克隐私遮挡块
+	 */
+	public int bSupport;
+	/**
+	 * 系统支持的最大马赛克遮挡块个数
+	 */
+	public int nMaxNum;
+	/**
+	 * 支持的遮挡块形状个数
+	 */
+	public int nSupportTypeNum;
+	/**
+	 * 支持的遮挡块形状,数组int值,参考枚举{@link EM_PRIVACY_MASKING_TYPE}
+	 */
+	public int[] emSupportType = new int[8];
+	/**
+	 * 系统支持的多边形遮挡块最大顶点数(SupportType支持"Polygon"时该能力有效)
+	 */
+	public int nMaxPolygonPoints;
+	/**
+	 * 支持的马赛克类型个数
+	 */
+	public int nSupportMosaicTypeNum;
+	/**
+	 * 支持的马赛克类型(SetMosaicSupport为true时该能力有效,没有该项配置时默认支持24x24大小马赛克)
+	 */
+	public int[] nSupportMosaicType = new int[8];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_MOSAIC_MASKING_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOTIONDETECT_REGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOTIONDETECT_REGION_INFO.java
new file mode 100644
index 0000000..8c9119e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MOTIONDETECT_REGION_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 动检区域信息
+ * @date 2023/05/15 13:47:59
+ */
+public class NET_MOTIONDETECT_REGION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 区域ID
+	 */
+	public int nRegionID;
+	/**
+	 * 区域名称
+	 */
+	public byte[] szRegionName = new byte[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[508];
+
+	public NET_MOTIONDETECT_REGION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java
new file mode 100644
index 0000000..6848d18
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MSG_OBJECT_SUPPLEMENT.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 检测到的物体补充字段
+ * @author : 251823
+ * @since : Created in 2021/11/07 15:22
+ */
+public class NET_MSG_OBJECT_SUPPLEMENT extends NetSDKLib.SdkStructure{
+	/**
+	 * 智能物体全局唯一物体标识
+	 */
+	public byte[] szObjectUUID = new byte[48];  
+	
+	/**
+	 * 预留字节
+	 */        
+	public byte[] szReserved = new byte[256];  
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java
new file mode 100644
index 0000000..25c1e25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_APPEND_EXTENDED_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 扩展信息
+ * @date 2022/10/31 11:10:11
+ */
+public class NET_MULTI_APPEND_EXTENDED_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 该次人脸导入的token值
+	 */
+	public int nToken;
+	/**
+	 * 人脸导入状态 {@link com.netsdk.lib.enumeration.EM_FACE_APPEND_STATE}
+	 */
+	public int emState;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[248];
+
+	public NET_MULTI_APPEND_EXTENDED_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_LEVEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_LEVEL_INFO.java
new file mode 100644
index 0000000..7698f0d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_LEVEL_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  等级配置 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_MULTI_LEVEL_INFO extends NetSDKLib.SdkStructure {
+/** 
+配置等级 {@link com.netsdk.lib.enumeration.EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL}
+*/
+public			int					emLevel;
+/** 
+默认参考等级,该等级的默认配置与参考等级的默认配置一样 {@link com.netsdk.lib.enumeration.EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL}
+*/
+public			int					emDefaultReferenceLevel;
+/** 
+等级名字
+*/
+public			byte[]					szName=new byte[128];
+/** 
+物品分组数组
+*/
+public			NET_XRAY_OBJECT_GROUP[]					stuObjectGroups=new NET_XRAY_OBJECT_GROUP[64];
+/** 
+物品分组数组个数
+*/
+public			int					nObjectGroupsNum;
+/** 
+侧视角物品分组数组个数
+*/
+public			int					nSlaveViewObjectGroupsNum;
+/** 
+侧视角物品分组数组
+*/
+public			NET_XRAY_OBJECT_GROUP[]					stuSlaveViewObjectGroups=new NET_XRAY_OBJECT_GROUP[64];
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[512];
+
+public NET_MULTI_LEVEL_INFO(){
+		for(int i=0;i<stuObjectGroups.length;i++){
+			stuObjectGroups[i]=new NET_XRAY_OBJECT_GROUP();
+			}
+		for(int i=0;i<stuSlaveViewObjectGroups.length;i++){
+			stuSlaveViewObjectGroups[i]=new NET_XRAY_OBJECT_GROUP();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_PLAYBACK_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_PLAYBACK_PARAM.java
new file mode 100644
index 0000000..8e5ff7e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_PLAYBACK_PARAM.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  多通道回放预览参数 
+* @origin autoTool
+* @date 2023/05/16 14:49:19
+*/
+public class NET_MULTI_PLAYBACK_PARAM extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+预览通道号
+*/
+public			int[]					nChannels=new int[64];
+/** 
+预览通道数
+*/
+public			int					nChannelNum;
+/** 
+回放文件类型,0:普通录象;1:报警录象;2:移动检测;3:卡号录象;4:图片
+*/
+public			int					nType;
+/** 
+回放开始时间
+*/
+public NET_TIME stStartTime=new NET_TIME();
+/** 
+回放结束时间
+*/
+public NET_TIME stEndTime=new NET_TIME();
+/** 
+帧率,1~25
+*/
+public			int					nFPS;
+/** 
+码流值,192~1024
+*/
+public			int					nBitRate;
+/** 
+分辨率,"D1"、"HD1"、"2CIF"、"CIF"、"QCIF"
+*/
+public			byte[]					szResolution=new byte[64];
+/** 
+超时等待时间
+*/
+public			int					nWaitTime;
+/** 
+视频播放窗口句柄
+*/
+public Pointer hWnd;
+/** 
+视频数据回调
+*/
+public			NetSDKLib.fDataCallBack					fDownLoadDataCallBack;
+/** 
+视频数据用户数据
+*/
+public			Pointer					dwDataUser;
+/** 
+回放进度回调
+*/
+public			NetSDKLib.fDownLoadPosCallBack					cbDownLoadPos;
+/** 
+进度回调用户数据
+*/
+public			Pointer					dwPosUser;
+
+public NET_MULTI_PLAYBACK_PARAM(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_TIMESECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_TIMESECTION_INFO.java
new file mode 100644
index 0000000..8986567
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_MULTI_TIMESECTION_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 一人对单个门支持多时段和假日计划方案
+ * @origin autoTool
+ * @date 2023/09/07 19:26:37
+ */
+public class NET_MULTI_TIMESECTION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 门权限,控制器中的索引
+	 */
+	public int nDoor;
+	/**
+	 * 门权限对应时间段索引数量
+	 */
+	public int nTimeSectionNum;
+	/**
+	 * 门权限对应时间段索引, 表示当前门权限可在此时间段通行
+	 */
+	public int[] nTimeSectionList = new int[128];
+	/**
+	 * 假日计划标识
+	 */
+	public int[] nSpecialDaysScheduleList = new int[128];
+	/**
+	 * 假日计划标识数量
+	 */
+	public int nSpecialDaysScheduleNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[508];
+
+	public NET_MULTI_TIMESECTION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NEST_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NEST_DETECT.java
new file mode 100644
index 0000000..a617361
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NEST_DETECT.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  鸟巢检测结果 
+* @date 2022/06/28 19:44:54
+*/
+public class NET_NEST_DETECT extends NetSDKLib.SdkStructure {
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_NEST_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java
new file mode 100644
index 0000000..6a9fd87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通讯录配置列表
+ * @date 2023/03/15 21:15:01
+ */
+public class NET_NETAPP_COMMUNICATION_LIST extends NetSDKLib.SdkStructure {
+	/**
+	 * 自定义组名,不可重复命名
+	 */
+	public byte[] szGroupName = new byte[16];
+	/**
+	 * 联系人个数
+	 */
+	public int nMembersNum;
+	/**
+	 * 联系人信息
+	 */
+	public NET_MEMBERS_INFO[] arrMembers = new NET_MEMBERS_INFO[32];
+	/**
+	 * 用户组关联通知信息
+	 */
+	public NET_NOTIFY_INFO stuNotifyInfo = new NET_NOTIFY_INFO();
+
+	public NET_NETAPP_COMMUNICATION_LIST() {
+		for (int i = 0; i < arrMembers.length; i++) {
+			arrMembers[i] = new NET_MEMBERS_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java
new file mode 100644
index 0000000..fcbfa14
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_COMMUNICATION_LIST_CFG.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 通讯录配置
+ * @date 2023/03/15 21:15:01
+ */
+public class NET_NETAPP_COMMUNICATION_LIST_CFG extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 实际的通讯录配置个数
+	 */
+	public int nConmmunicationListNum;
+	/**
+	 * 通讯录配置数组
+	 */
+	public NET_NETAPP_COMMUNICATION_LIST[] stuCommunication = new NET_NETAPP_COMMUNICATION_LIST[10];
+
+	public NET_NETAPP_COMMUNICATION_LIST_CFG() {
+		for (int i = 0; i < stuCommunication.length; i++) {
+			stuCommunication[i] = new NET_NETAPP_COMMUNICATION_LIST();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_RECEIVE_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_RECEIVE_STAT.java
new file mode 100644
index 0000000..9389063
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_RECEIVE_STAT.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接收相关统计数据,意义与ifconfig同 
+* @origin autoTool
+* @date 2023/06/19 09:24:47
+*/
+public class NET_NETAPP_RECEIVE_STAT extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+
+public			int					dwPackets;
+
+public			int					dwBytes;
+
+public			int					dwErrors;
+
+public			int					dwDroped;
+
+public			int					dwOverruns;
+
+public			int					dwFrame;
+/** 
+下行流量速度
+*/
+public			int					dwSpeed;
+
+public			NET_NETAPP_RECEIVE_STAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_TRANSMIT_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_TRANSMIT_STAT.java
new file mode 100644
index 0000000..3b7b7a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NETAPP_TRANSMIT_STAT.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  传输相关统计数据,意义与ifconfig同 
+* @origin autoTool
+* @date 2023/06/19 09:24:47
+*/
+public class NET_NETAPP_TRANSMIT_STAT extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+
+public			int					dwPackets;
+
+public			int					dwBytes;
+
+public			int					dwErrors;
+
+public			int					dwDroped;
+
+public			int					dwOverruns;
+
+public			int					dwCarrier;
+
+public			int					dwCollisions;
+
+public			int					dwTxQueue;
+/** 
+上行流量速度
+*/
+public			int					dwSpeed;
+
+public			NET_NETAPP_TRANSMIT_STAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NIGHT_ASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NIGHT_ASK_INFO.java
new file mode 100644
index 0000000..d77d575
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NIGHT_ASK_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 夜间请求智能化配置列表信息
+ * @date 2021/09/28
+ */
+public class NET_NIGHT_ASK_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  周期编号
+     */
+    public int nCycleNum;
+
+    /**
+     *  夜间相位配置表个数
+     */
+    public int nPhaseConfigNum;
+
+    /**
+     *  夜间相位配置表
+     */
+    public NET_PHASE_CONFIG_NIGHT_INFO[] stuPhaseConfigNightInfo = (NET_PHASE_CONFIG_NIGHT_INFO[]) new NET_PHASE_CONFIG_NIGHT_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java
new file mode 100644
index 0000000..6da750a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOHAT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 无帽子相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_NOHAT_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有戴帽子,{@link EM_WEARING_STATE}
+     */
+    public int emHasHat;
+    /**
+     * 帽子检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalHat;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CATEGORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CATEGORY_INFO.java
new file mode 100644
index 0000000..5ac8354
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CATEGORY_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  非机动车类型过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_NONMOTOR_CATEGORY_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用, 为TRUE则下发非机动车类型过滤条件,为FALSE则不下发非机动车类型过滤条件
+*/
+public			int					bEnable;
+/** 
+非机动车类型的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+过滤出对应的非机动车类型
+*/
+public			int[]					emNonMotorTypeShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_NONMOTOR_CATEGORY_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_COLOR_INFO.java
new file mode 100644
index 0000000..f9022c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_COLOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  非机动车颜色过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_NONMOTOR_COLOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用, 为TRUE则下发非机动车颜色过滤条件,为FALSE则不下发非机动车颜色过滤条件
+*/
+public			int					bEnable;
+/** 
+非机动车车身颜色的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+非机动车车身颜色
+*/
+public			int[]					emNonMotorColorShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_NONMOTOR_COLOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CYCLING_NUM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CYCLING_NUM_INFO.java
new file mode 100644
index 0000000..ae8f727
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_CYCLING_NUM_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  车上人数过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_NONMOTOR_CYCLING_NUM_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用, 为TRUE则下发车上人数过滤条件,为FALSE则不下发车上人数过滤条件
+*/
+public			int					bEnable;
+/** 
+需要过滤出对应的人体数目
+*/
+public			int					nCyclingNum;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_NONMOTOR_CYCLING_NUM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java
new file mode 100644
index 0000000..dd7ed69
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NONMOTOR_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 非机动车的滞留时间信息
+ * @date 2022/04/11
+ */
+public class NET_NONMOTOR_STAY_STAT extends NetSDKLib.SdkStructure{
+    /**
+     *  非机动车进入区域的时间
+     */
+    public NET_TIME stuEnterTime;
+
+    /**
+     *  非机动车离开区域的时间
+     */
+    public NET_TIME stuExitTime;
+
+    /**
+     *  保留字节
+     */
+    public byte[] reserved = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java
new file mode 100644
index 0000000..ce5db73
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NORMALHAT_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 普通帽子相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_NORMALHAT_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有戴普通帽,{@link EM_WEARING_STATE}
+     */
+    public int emHasHat;
+    /**
+     * 帽子检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalHat;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java
new file mode 100644
index 0000000..94d9663
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_GYRO_DATA_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  回调的陀螺仪数据信息 
+* @date 2022/10/26 15:16:37
+*/
+public class NET_NOTIFY_GYRO_DATA_INFO extends NetSDKLib.SdkStructure {
+/** 
+X轴角速度,单位rad/s
+*/
+public			double					dbAngularSpeedX;
+/** 
+Y轴角速度,单位rad/s
+*/
+public			double					dbAngularSpeedY;
+/** 
+z轴角速度,单位rad/s
+*/
+public			double					dbAngularSpeedZ;
+/** 
+X轴加速度,单位m/s^2
+*/
+public			double					dbAccelX;
+/** 
+Y轴加速度,单位m/s^2
+*/
+public			double					dbAccelY;
+/** 
+Z轴加速度,单位m/s^2
+*/
+public			double					dbAccelZ;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_NOTIFY_GYRO_DATA_INFO(){
+}
+
+    @Override
+    public String toString() {
+        return "NET_NOTIFY_GYRO_DATA_INFO{" +
+                "dbAngularSpeedX=" + dbAngularSpeedX +
+                ", dbAngularSpeedY=" + dbAngularSpeedY +
+                ", dbAngularSpeedZ=" + dbAngularSpeedZ +
+                ", dbAccelX=" + dbAccelX +
+                ", dbAccelY=" + dbAccelY +
+                ", dbAccelZ=" + dbAccelZ +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_INFO.java
new file mode 100644
index 0000000..a81bde3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 用户组关联通知信息
+ * @date 2023/03/15 21:15:00
+ */
+public class NET_NOTIFY_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 通知类型 {@link com.netsdk.lib.enumeration.NET_NOTIFY_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 是否接受报警事件的推送
+	 */
+	public int bAlarmEvents;
+	/**
+	 * 是否接受故障事件的推送
+	 */
+	public int bSystemEvents;
+	/**
+	 * 是否接受操作事件的推送
+	 */
+	public int bOperationEvents;
+
+	public NET_NOTIFY_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..c556c05
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_NOTIFY_SCADA_DATA_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 订阅的遥测数据
+ * @date 2022/12/13 10:24:15
+ */
+public class NET_NOTIFY_SCADA_DATA_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 探测器设备ID
+     */
+    public byte[] szDeviceId = new byte[256];
+    /**
+     * 遥测数据信息数组有效个数
+     */
+    public int nDataInfoNum;
+    /**
+     * 遥测数据信息
+     */
+    public DEV_SCADA_DATA_INFO[] stuDataInfo = new DEV_SCADA_DATA_INFO[128];
+    /**
+     * 保留字节
+     */
+    public byte[] szResvered = new byte[1024];
+
+    public NET_NOTIFY_SCADA_DATA_INFO() {
+        for (int i = 0; i < stuDataInfo.length; i++) {
+            stuDataInfo[i] = new DEV_SCADA_DATA_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java
new file mode 100644
index 0000000..1f21e06
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_IMAGE_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 物体截图
+ * @date 2022/03/31
+ */
+public class NET_OBJECT_IMAGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 在二进制数据块中的偏移
+	 */
+	public int nOffSet;
+
+	/**
+	 * 图片大小,单位字节
+	 */
+	public int nLength;
+
+	/**
+	 * 图片宽度(像素)
+	 */
+	public int nWidth;
+
+	/**
+	 * 图片高度(像素)
+	 */
+	public int nHeight;
+
+	/**
+	 * 全景图片路径
+	 */
+	public byte[] szFilePath = new byte[260];
+
+	/**
+	 * 图片序号
+	 */
+	public int nIndexInData;
+
+	/**
+	 * 预留字节
+	 */
+	public byte[] byReserved = new byte[504];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_INFO.java
new file mode 100644
index 0000000..c646b85
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测目标信息
+ * @date 2022/12/19 11:30:59
+ */
+public class NET_OBJECT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 目标包围盒(8192坐标系)
+	 */
+	public NET_RECT stuBoundingBox = new NET_RECT();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[256];
+
+	public NET_OBJECT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_RADAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_RADAR_INFO.java
new file mode 100644
index 0000000..f5e4dbc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OBJECT_RADAR_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251589
+ * @version V1.0
+ * @Description:
+ * @date 2020/12/14 20:56
+ */
+public class NET_OBJECT_RADAR_INFO extends NetSDKLib.SdkStructure {
+    public int nID;				              // 物体ID
+    public int nVerticalPos;		          // 物体在道路方向上的坐标,雷达为坐标原点 单位:cm
+    public int nHorizontalPos;		          // 物体在垂直道路方向上的坐标,雷达为坐标原点 单位:cm
+    public int nObjectLen;			          // 物体长度 单位:cm
+    public byte[] byReserved = new byte[256]; // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java
new file mode 100644
index 0000000..18fec50
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPENDOOR_MATCHINFO_EX.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 匹配信息扩展字段
+ * @date 2022/11/15 20:11:54
+ */
+public class NET_OPENDOOR_MATCHINFO_EX extends NetSDKLib.SdkStructure {
+    /**
+     * 扩展用户名
+     */
+    public byte[] szUserNameEx = new byte[128];
+    /**
+     * 语音类型 (医疗使用) {@link com.netsdk.lib.enumeration.EM_CUSTOM_MEDICAL_VOICE_TYPE}
+     */
+    public int emVoiceType;
+    /**
+     * 抗原检测信息
+     */
+    public NET_ANTIGEN_INFO stuAntigenInfo = new NET_ANTIGEN_INFO();
+    /**
+     * tts语音输出
+     */
+    public byte[] szVoiceTTSMessage = new byte[128];
+    /**
+     * 鉴权方式,1:设备端鉴权, 在emCompareResult为0后端鉴权成功的情况下,设备还需要二次验证, 2:后端鉴权,根据emCompareResult进行开门与否的判定条件, 255:默认鉴权,兼容历史设备
+     */
+    public int nCheckLocal;
+    /**
+     * 预留字节
+     */
+    public byte[] bReserved = new byte[1616];
+
+    public NET_OPENDOOR_MATCHINFO_EX() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..c167b1c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  目标属性数组 
+* @date 2023/02/06 14:57:49
+*/
+public class NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO extends NetSDKLib.SdkStructure {
+/** 
+属性类型名称
+*/
+public			byte[]					szAttrTypeName=new byte[128];
+/** 
+属性值名称
+*/
+public			byte[]					szAttrValueName=new byte[128];
+
+public NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java
new file mode 100644
index 0000000..4133e10
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_OBJECT_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  检测到的目标属性信息列表 
+* @date 2023/02/06 14:57:49
+*/
+public class NET_OPEN_INTELLI_OBJECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+目标id
+*/
+public			int					nObjectId;
+/** 
+包围盒 矩形类型,8192坐标系
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+/** 
+目标类型名称
+*/
+public			byte[]					szObjectTypeName=new byte[128];
+/** 
+目标属性数组中的有效个数
+*/
+public			int					nObjectAttributeNums;
+/** 
+目标属性数组
+*/
+public			NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO[]					stuObjectAttributes=new NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO[128];
+
+public NET_OPEN_INTELLI_OBJECT_INFO(){
+		for(int i=0;i<stuObjectAttributes.length;i++){
+			stuObjectAttributes[i]=new NET_OPEN_INTELLI_OBJECT_ATTRIBUTE_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java
new file mode 100644
index 0000000..3dabe55
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPEN_INTELLI_USER_DATA_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  用户数据 
+* @date 2023/02/06 14:57:49
+*/
+public class NET_OPEN_INTELLI_USER_DATA_INFO extends NetSDKLib.SdkStructure {
+/** 
+自定义报警id
+*/
+public			int					nAlarmId;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[512];
+
+public NET_OPEN_INTELLI_USER_DATA_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPTIMIZES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPTIMIZES_INFO.java
new file mode 100644
index 0000000..3a9c6d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OPTIMIZES_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 饱和度与单点自适应智能化配置表信息
+ * @date 2021/09/28
+ */
+public class NET_OPTIMIZES_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  周期方案编号
+     */
+    public int nCyclePlanNum;
+
+    /**
+     *  协调相位编号
+     */
+    public int nCoordinatePhaseNum;
+
+    /**
+     *  协调相位重复出现的次数
+     */
+    public int nCoordinatePhaseOrder;
+
+    /**
+     *  相位所属环编号
+     */
+    public int nCoordinateRingNo;
+
+    /**
+     *  相位所属栅栏编号
+     */
+    public int nCoordinateBarrierNo;
+
+    /**
+     *  相位所属栅栏内的位置
+     */
+    public int nCoordinateGridNo;
+
+    /**
+     *  参照设备id
+     */
+    public byte[] szReferDeviceId = new byte[72];
+
+    /**
+     *  参照设备名称
+     */
+    public byte[] szReferDeviceName = new byte[72];
+
+    /**
+     *  参照路口的周期方案编号
+     */
+    public int nReferCyclePlanNum;
+
+    /**
+     *  参照路口的周期方案名称
+     */
+    public byte[] szReferCyclePlanName = new byte[72];
+
+    /**
+     *  参考相位
+     */
+    public int nReferPhaseNum;
+
+    /**
+     *  参照相位重复出现的次数
+     */
+    public int nReferPhaseOrder;
+
+    /**
+     *  参考类型 1为早,2为晚
+     */
+    public int nReferType;
+
+    /**
+     *  相位差
+     */
+    public int nOffset;
+
+    /**
+     *  感应参数
+     */
+    public NET_SENIOR_INFO stuSeniorInfo;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_COVERS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_COVERS.java
new file mode 100644
index 0000000..80d5310
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_COVERS.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 区域覆盖
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_COVERS}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 21:55
+ */
+public class NET_OSD_CFG_COVERS extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 覆盖区域个数
+     */
+    public int nCoverCount;
+    /**
+     * 覆盖区域
+     */
+    public NET_VEDIO_WIDGET_COVER[] stuCovers = new NET_VEDIO_WIDGET_COVER[16];
+
+    public NET_OSD_CFG_COVERS() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCovers.length; i++) {
+            stuCovers[i] = new NET_VEDIO_WIDGET_COVER();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java
new file mode 100644
index 0000000..cc5ac2c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_COORDINATES.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 显示云台坐标的叠加配置
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_PTZ_COORDINATES}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:39
+ */
+public class NET_OSD_CFG_PTZ_COORDINATES extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+
+    public NET_OSD_CFG_PTZ_COORDINATES() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java
new file mode 100644
index 0000000..ac303d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_DIRECTION.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 显示云台方向的叠加配置
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_PTZ_DIRECTION}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:41
+ */
+public class NET_OSD_CFG_PTZ_DIRECTION extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+
+    public NET_OSD_CFG_PTZ_DIRECTION() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java
new file mode 100644
index 0000000..1dbabf9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PATTERN.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 显示巡迹百分比叠加配置
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_PTZ_PATTERN}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:34
+ */
+public class NET_OSD_CFG_PTZ_PATTERN extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+
+    public NET_OSD_CFG_PTZ_PATTERN() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java
new file mode 100644
index 0000000..ec02095
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_PRESET.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 预置点信息叠加
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_PTZ_PRESET}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:29
+ */
+public class NET_OSD_CFG_PTZ_PRESET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+
+    public NET_OSD_CFG_PTZ_PRESET() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java
new file mode 100644
index 0000000..02cfebd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_PTZ_RS485_DETECT.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 显示RS485检测结果的叠加配置
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_PTZ_RS485_DETECT}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:38
+ */
+public class NET_OSD_CFG_PTZ_RS485_DETECT extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+
+    public NET_OSD_CFG_PTZ_RS485_DETECT() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java
new file mode 100644
index 0000000..b716814
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_CFG_TEMPERATURE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_TEMPERATURE_UNIT_EX;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 显示环境温度的叠加配置
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_TEMPERATURE}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 21:43
+ */
+public class NET_OSD_CFG_TEMPERATURE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 显示时间,单位为秒,0 表示一直显示,自定义范围:1-3600
+     */
+    public int nDisplayTime;
+    /**
+     * 叠加到主码流视频编码
+     */
+    public int bEncodeBlend;
+    /**
+     * 是否叠加到预览显示
+     */
+    public int bPreviewBlend;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域
+     */
+    public NetSDKLib.NET_RECT stuRect;
+    /**
+     * 温度单位的类型 枚举值{@link EM_TEMPERATURE_UNIT_EX}
+     */
+    public int emTemperatureType;
+
+    public NET_OSD_CFG_TEMPERATURE() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java
new file mode 100644
index 0000000..4180149
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_PTZZOOM_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  编码物件-变倍叠加配置 
+* @origin autoTool
+* @date 2023/03/01 10:02:37
+*/
+public class NET_OSD_PTZZOOM_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+是否叠加到主码流
+*/
+public			int					bMainBlend;
+/** 
+是否叠加到预览码流
+*/
+public			int					bPreviewBlend;
+/** 
+前景色
+*/
+public			NET_COLOR_RGBA					stuFrontColor=new NET_COLOR_RGBA();
+/** 
+背景色
+*/
+public			NET_COLOR_RGBA					stuBackColor=new NET_COLOR_RGBA();
+/** 
+区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+*/
+public NET_RECT stuRect=new NET_RECT();
+/** 
+显示时间,单位为妙,0表示一直显示
+*/
+public			int					nDisplayTime;
+
+public NET_OSD_PTZZOOM_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java
new file mode 100644
index 0000000..308e09d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OSD_USER_DEF_TITLE.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE;
+
+/**
+ * 用户自定义OSD标题
+ * {@link NET_EM_CFG_OPERATE_TYPE#NET_EM_CFG_USER_DEF_TITLE}
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:21
+ */
+public class NET_OSD_USER_DEF_TITLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 自定义标题数量
+     */
+    public int nUserDefTitleNum;
+    /**
+     * 自定义标题
+     */
+    public NET_USER_DEF_TITLE_INFO[] stuUserDefTitle = new NET_USER_DEF_TITLE_INFO[16];
+
+    public NET_OSD_USER_DEF_TITLE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuUserDefTitle.length; i++) {
+            stuUserDefTitle[i] = new NET_USER_DEF_TITLE_INFO();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java
new file mode 100644
index 0000000..e6b39f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_CMD.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AccessControlCaptureCmd 输出结构体
+ * @date 2022/12/30 10:56:10
+ */
+public class NET_OUT_ACCESSCONTROL_CAPTURE_CMD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_ACCESSCONTROL_CAPTURE_CMD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java
new file mode 100644
index 0000000..6d190de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AccessControlCaptureNewCard 输出结构体
+ * @date 2022/12/30 10:55:26
+ */
+public class NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_ACCESSCONTROL_CAPTURE_NEWCARD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AC_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AC_CAPS.java
new file mode 100644
index 0000000..9b27022
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AC_CAPS.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 门禁AC服务协议与设备能力获取出参
+ * @origin autoTool
+ * @date 2023/02/10 14:34:21
+ */
+public class NET_OUT_AC_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * ACCaps能力集
+	 */
+	public NET_AC_CAPS stuACCaps = new NET_AC_CAPS();
+	/**
+	 * user操作能力集
+	 */
+	public NET_ACCESS_USER_CAPS stuUserCaps = new NET_ACCESS_USER_CAPS();
+	/**
+	 * card操作能力集
+	 */
+	public NET_ACCESS_CARD_CAPS stuCardCaps = new NET_ACCESS_CARD_CAPS();
+	/**
+	 * 信息操作能力集
+	 */
+	public NET_ACCESS_FINGERPRINT_CAPS stuFingerprintCaps = new NET_ACCESS_FINGERPRINT_CAPS();
+	/**
+	 * 目标操作能力集
+	 */
+	public NET_ACCESS_FACE_CAPS stuFaceCaps = new NET_ACCESS_FACE_CAPS();
+	/**
+	 * 眼睛相关能力集
+	 */
+	public NET_ACCESS_IRIS_CAPS stuIrisCaps = new NET_ACCESS_IRIS_CAPS();
+	/**
+	 * 反潜回能力集
+	 */
+	public NET_ANTI_SUBMARINE_CAPS stuAntisubmarineCaps = new NET_ANTI_SUBMARINE_CAPS();
+	/**
+	 * 门禁互锁相关能力
+	 */
+	public NET_INTER_LOCK_CAPS stuInterLockCaps = new NET_INTER_LOCK_CAPS();
+
+	public NET_OUT_AC_CAPS() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java
new file mode 100644
index 0000000..ada1edd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 自适应下载录像 按时间 {@link NetSDKLib#CLIENT_AdaptiveDownloadByTime} 出参
+ * 入参 {@link NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME}
+ *
+ * @author 47040
+ * @since Created at 2021/6/19 18:23
+ */
+public class NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_ADAPTIVE_DOWNLOAD_BY_TIME() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java
new file mode 100644
index 0000000..ef64992
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AddAlarmUser 接口输出参数
+ * @date 2023/03/16 09:05:02
+ */
+public class NET_OUT_ADD_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_ADD_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_COURSE.java
new file mode 100644
index 0000000..02423cb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_COURSE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 添加新的课程记录 出参指针 {@link NetSDKLib#CLIENT_AddCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 16:10
+ */
+public class NET_OUT_ADD_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程ID数量
+     */
+    public int nIdNum;
+    /**
+     * 返回新增的课程ID; -1:数据库中无此记录, -2:记录已存在, -3:数据库已满
+     */
+    public int[] nId = new int[64];
+
+    public NET_OUT_ADD_COURSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java
new file mode 100644
index 0000000..b7d430b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * 远程录像任务接口 出参
+ * 接口 {@link NetSDKLib#CLIENT_AddRecordBackupRestoreRemoteTask}
+ * 入参 {@link NET_IN_ADD_REC_BAK_RST_REMOTE_TASK}
+ *
+ * @author 47040
+ * @since Created at 2021/5/27 20:33
+ */
+public class NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 任务ID信息 -> {@link NET_RECORDBACKUP_TASKID_INFO} 数组
+     * 数组长度为入参参数 {@link NET_IN_ADD_REC_BAK_RST_REMOTE_TASK#nTaskCount}
+     * 由用户申请内存 大小为 (size of NET_RECORDBACKUP_TASKID_INFO)*nTaskCount
+     */
+    public Pointer pStuID;
+
+    public NET_OUT_ADD_REC_BAK_RST_REMOTE_TASK() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_SOFT_TOUR_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_SOFT_TOUR_POINT_INFO.java
new file mode 100644
index 0000000..8f05290
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ADD_SOFT_TOUR_POINT_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 接口 CLIENT_AddSoftTourPoint 的输出参数
+ * @origin autoTool
+ * @date 2023/10/16 19:45:45
+ */
+public class NET_OUT_ADD_SOFT_TOUR_POINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+
+    public NET_OUT_ADD_SOFT_TOUR_POINT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java
new file mode 100644
index 0000000..8e7d216
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ASYNC_ADD_CUSTOM_DEVICE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/***
+ * CLIENT_AsyncAddCustomDevice 接口输出参数 
+ * @author 119178
+ *
+ */
+public class NET_OUT_ASYNC_ADD_CUSTOM_DEVICE extends SdkStructure{
+	public int           				dwSize;
+	/**
+	 * 分配的逻辑通道个数
+	 */
+	public int								nLogicChannelNum;		
+	/**
+	 * 分配的逻辑通道号列表
+	 */
+	public int[]								nLogicChannels=new int[128];	
+	/**
+	 * 设备ID
+	 */
+	public byte[]							szDeviceID=new byte[128];		 
+	
+	public NET_OUT_ASYNC_ADD_CUSTOM_DEVICE(){
+		 this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java
new file mode 100644
index 0000000..b99cb13
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_BACKUP_STATE.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * CLIENT_AttachBackupTaskState接口输入参数
+ * {@link NetSDKLib#CLIENT_AttachBackupTaskState}
+ */
+public class NET_OUT_ATTACH_BACKUP_STATE extends SdkStructure{
+	public int                   dwSize;
+	
+	public NET_OUT_ATTACH_BACKUP_STATE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..75719ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_AttachCrowdDistriMap 接口输出参数
+ * @date 2022/01/07
+ */
+public class NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_ATTACH_CROWDDISTRI_MAP_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java
new file mode 100644
index 0000000..5a77335
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_CUSTOM_SNAP_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description CLIENT_AttachCustomSnapInfo 接口输出参数
+* @date 2022/03/31 11:35:21
+*/
+public class NET_OUT_ATTACH_CUSTOM_SNAP_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_ATTACH_CUSTOM_SNAP_INFO(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..6b6ddb1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5 15:37
+ * CLIENT_AttachPopulationStatistics 的输出参数
+ */
+public class NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO extends NetSDKLib.SdkStructure{
+
+    public int		dwSize; //此结构体大小,必须赋值
+
+    public NET_OUT_ATTACH_GATE_POPULATION_STATISTICS_INFO(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GYRO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GYRO.java
new file mode 100644
index 0000000..42bd3c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_GYRO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_AttachGyro接口出参 
+* @date 2022/10/26 16:10:20
+*/
+public class NET_OUT_ATTACH_GYRO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public NET_OUT_ATTACH_GYRO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_HYGROTHERMOGRAPH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_HYGROTHERMOGRAPH.java
new file mode 100644
index 0000000..0817385
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_HYGROTHERMOGRAPH.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_AttachHygrothermograph 的输出参数 
+* @origin autoTool
+* @date 2023/12/02 10:25:56
+*/
+public class NET_OUT_ATTACH_HYGROTHERMOGRAPH extends NetSDKLib.SdkStructure {
+/** 
+/ 此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public			NET_OUT_ATTACH_HYGROTHERMOGRAPH(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java
new file mode 100644
index 0000000..5d9c950
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_LOWRATEWPAN.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AttachLowRateWPAN()输出参数
+ * @date 2023/03/16 16:16:48
+ */
+public class NET_OUT_ATTACH_LOWRATEWPAN extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+
+	public NET_OUT_ATTACH_LOWRATEWPAN() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..1265e37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_AttachRadarRFIDCardInfo接口出参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_OUT_ATTACH_RADAR_RFIDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_ATTACH_RADAR_RFIDCARD_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java
new file mode 100644
index 0000000..5530de0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_SCADA_DATA_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachSCADAData 接口出参
+ * @date 2022/12/13 10:20:50
+ */
+public class NET_OUT_ATTACH_SCADA_DATA_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小,必须赋值
+     */
+    public int dwSize;
+
+    public NET_OUT_ATTACH_SCADA_DATA_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..3043f17
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_OUT_ATTACH_TRAFFICLIGHT_INFO
+ * description:CLIENT_AttachTrafficLightState 接口出参
+ * author:251589
+ * createTime:2021/1/19 14:56
+ *
+ * @version v1.0
+ */
+public class NET_OUT_ATTACH_TRAFFICLIGHT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_ATTACH_TRAFFICLIGHT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java
new file mode 100644
index 0000000..b707476
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachTrafficFlowStatRealFlow 输出参数
+ * @origin autoTool
+ * @date 2023/08/31 14:21:53
+ */
+public class NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+
+	public NET_OUT_ATTACH_TRAFFIC_FLOW_STAT_REAL_FLOW() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..a6f7662
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_TRANSMIT_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_AttachTransmitInfo输出参数
+ * @date 2022/02/14
+ */
+public class NET_OUT_ATTACH_TRANSMIT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  用户使用该结构体时,dwSize需赋值为sizeof(NET_OUT_ATTACH_TRANSMIT_INFO)
+     */
+    public int dwSize;
+
+    /**
+     *  应答缓冲地址,用户申请空间
+     */
+    public Pointer szOutBuffer;
+
+    /**
+     *  应答缓冲总长度
+     */
+    public int dwOutBufferSize;
+
+    /**
+     *  应答Json数据长度
+     */
+    public int dwOutJsonLen;
+
+    /**
+     *  应答二进制数据长度 
+     */
+    public int dwOutBinLen;
+
+    public NET_OUT_ATTACH_TRANSMIT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA.java
new file mode 100644
index 0000000..c0d2b4f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_AttachVehiclesDistributionData 的输出参数 
+* @origin autoTool
+* @date 2023/07/03 14:07:28
+*/
+public class NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_ATTACH_VEHICLES_DISTRIBUTION_DATA(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..39654f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 热度图订阅接口出参
+ * @date 2020/9/21
+ */
+public class NET_OUT_ATTACH_VIDEOSTAT_HEATMAP extends NetSDKLib.SdkStructure {
+    public int dwSize;
+
+    public NET_OUT_ATTACH_VIDEOSTAT_HEATMAP() {
+        this.dwSize = size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java
new file mode 100644
index 0000000..ee7c416
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEOSTAT_STREAM.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 订阅统计通道数据出参
+ * @date 2022/12/12 11:39:32
+ */
+public class NET_OUT_ATTACH_VIDEOSTAT_STREAM extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_ATTACH_VIDEOSTAT_STREAM() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..bfb8bf8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachVideoAnalyseAnalyseProc 输出参数
+ * @date 2023/02/21 14:39:21
+ */
+public class NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小,必须赋值
+     */
+    public int dwSize;
+
+    public NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java
new file mode 100644
index 0000000..606de3f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_AttachVideoAnalyseTrackProc 输出参数 
+* @origin autoTool
+* @date 2023/09/22 13:56:25
+*/
+public class NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC extends NetSDKLib.SdkStructure {
+/** 
+/ 此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public			NET_OUT_ATTACH_VIDEO_ANALYSE_TRACK_PROC(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java
new file mode 100644
index 0000000..c6e164a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ATTACH_VIDEO_STATISTICS.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_AttachVideoStatistics 输出参数
+ * @date 2022/10/28 10:52:27
+ */
+public class NET_OUT_ATTACH_VIDEO_STATISTICS extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_ATTACH_VIDEO_STATISTICS() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java
new file mode 100644
index 0000000..e1964f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_AUDIO_DECODE_CAPS.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取音频解码能力集出参
+ * @date 2021/01/06
+ */
+public class NET_OUT_AUDIO_DECODE_CAPS extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小,赋值为 sizeof(NET_OUT_AUDIO_DECODE_CAPS)
+     */
+    public int dwSize;
+    
+    /**
+     * 音频解码格式信息
+     * */
+    public NET_AUDIO_DECODE_FORMAT[] stuDecodeFormats = (NET_AUDIO_DECODE_FORMAT[])new NET_AUDIO_DECODE_FORMAT().toArray(64);
+    
+    /**
+     * 返回的音频解码格式信息数量
+     * */
+    public int nFormatsRet;
+    
+    
+    public NET_OUT_AUDIO_DECODE_CAPS(){
+        this.dwSize=size();                
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CAMERASTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CAMERASTATE.java
new file mode 100644
index 0000000..f57b846
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CAMERASTATE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * {@link NetSDKLib#CLIENT_AttachCameraState} 输出参数
+ * {@link NET_IN_CAMERASTATE} 对应接口入参
+ *
+ * @author : 47040
+ * @since : Created in 2021/1/15 14:08
+ */
+public class NET_OUT_CAMERASTATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 物体ID,每个ID表示一个唯一的物体
+     */
+    public int nObjectID;
+
+    public NET_OUT_CAMERASTATE() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java
new file mode 100644
index 0000000..0eb43a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CLEAR_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ClearPrivacyMasking 输出参数
+ * @date 2022/07/21 17:20:52
+ */
+public class NET_OUT_CLEAR_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_CLEAR_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
new file mode 100644
index 0000000..d0fbac5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机添加模式出参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 16:54
+ */
+public class NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 实际返回个数
+     */
+    public int nCount;
+    /**
+     * 返回数组
+     */
+    public NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT[] stResult = new NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT[NET_MAX_MODE_NUMBER];
+
+    public NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_ADD() {
+        dwSize = this.size();
+        for (int i = 0; i < stResult.length; i++) {
+            stResult[i] = new NET_COURSECOMPOSITE_CHANNEL_MODE_ADD_RESULT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
new file mode 100644
index 0000000..23f30fa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机删除模式出参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:04
+ */
+public class NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 删除的模式个数
+     */
+    public int nReturnNum;
+    /**
+     * 返回码: 1 成功, 2 失败s
+     */
+    public int[] nReturnCode = new int[NET_MAX_MODE_NUMBER];
+
+    public NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_DELETE() {
+        dwSize = this.size();
+    }
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java
new file mode 100644
index 0000000..f3a7b64
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机获取模式出参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:26
+ */
+public class NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 实际获取的模式个数
+     */
+    public int nReturnNum;
+    /**
+     * 模式编号
+     */
+    public int[] nMode = new int[NET_MAX_MODE_NUMBER];
+    /**
+     * 模式信息
+     */
+    public NET_COMPOSITECHANNELMODE_INFO[] stModeInfo = new NET_COMPOSITECHANNELMODE_INFO[NET_MAX_MODE_NUMBER];
+
+    public NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_GET() {
+        dwSize = this.size();
+        for (int i = 0; i < stModeInfo.length; i++) {
+            stModeInfo[i] = new NET_COMPOSITECHANNELMODE_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
new file mode 100644
index 0000000..a7ba4ef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MODE_NUMBER;
+
+/**
+ * 录播主机修改模式出参
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/27 17:21
+ */
+public class NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 修改的模式个数, 和修改的模式个数相同
+     */
+    public int nReturnNum;
+    /**
+     * 返回码: 1 成功, 2 失败, 3, 已满, 4 资源不足
+     */
+    public int[] nReturnCode = new int[NET_MAX_MODE_NUMBER];
+
+    public NET_OUT_COURSECOMPOSITE_CHANNEL_MODE_MODIFY() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java
new file mode 100644
index 0000000..2b4a72a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取组合通道信息出参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:05
+ */
+public class NET_OUT_COURSECOMPOSITE_GET_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 组合通道信息
+     */
+    public NET_COMPOSITECHANNEL_INFO stuChannelInfo;
+
+    public NET_OUT_COURSECOMPOSITE_GET_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java
new file mode 100644
index 0000000..4994f01
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_GET_LOCKINFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取锁定状态出参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:00
+ */
+public class NET_OUT_COURSECOMPOSITE_GET_LOCKINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 锁定状态 1 true, 0 false
+     */
+    public int bState;
+
+    public NET_OUT_COURSECOMPOSITE_GET_LOCKINFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java
new file mode 100644
index 0000000..3646d7d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_LOCK_CONTROL.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 锁定和解锁组合通道和逻辑通道出参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:57
+ */
+public class NET_OUT_COURSECOMPOSITE_LOCK_CONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_COURSECOMPOSITE_LOCK_CONTROL() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java
new file mode 100644
index 0000000..3b0f34f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_SET_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置组合通道信息出参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 20:54
+ */
+public class NET_OUT_COURSECOMPOSITE_SET_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_COURSECOMPOSITE_SET_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java
new file mode 100644
index 0000000..e271ebb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSECOMPOSITE_UPDATE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 组合通道信息更新到time出参 {@link NetSDKLib#CLIENT_OperateCourseCompositeChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 21:02
+ */
+public class NET_OUT_COURSECOMPOSITE_UPDATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_COURSECOMPOSITE_UPDATE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java
new file mode 100644
index 0000000..ead5359
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GETINFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_COURSE_LOGIC_CHANNEL;
+
+/**
+ * 获取指定教室的录像信息出参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:23
+ */
+public class NET_OUT_COURSERECORD_GETINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 逻辑通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 0:无效,1:录像,2不录像,下标对应为逻辑通道号
+     */
+    public int[] nCanRecord = new int[MAX_COURSE_LOGIC_CHANNEL];
+
+    public NET_OUT_COURSERECORD_GETINFO() {
+        dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java
new file mode 100644
index 0000000..99d57c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_GET_TIME.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取当前课程已录制时间出参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:44
+ */
+public class NET_OUT_COURSERECORD_GET_TIME extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 已录制时间,单位:秒
+     */
+    public int nTime;
+
+    public NET_OUT_COURSERECORD_GET_TIME() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java
new file mode 100644
index 0000000..6888621
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_SETINFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置指定教室的录像信息出参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:31
+ */
+public class NET_OUT_COURSERECORD_SETINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_COURSERECORD_SETINFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java
new file mode 100644
index 0000000..59556c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_COURSERECORD_UPDATE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 录像信息更新到time出参 {@link NetSDKLib#CLIENT_OperateCourseRecordManager}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:40
+ */
+public class NET_OUT_COURSERECORD_UPDATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_COURSERECORD_UPDATE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..0758b0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description   CLIENT_CreateGroupForVehicleRegisterDB 接口输出参数
+ * @date 2021/8/17 11:28
+ */
+public class NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+
+
+        public int                           		dwSize;							// 结构体大小
+        public byte[]									szGroupID=new byte[64];					// 车辆组标识
+
+    public NET_OUT_CREATE_GROUP_FOR_VEHICLE_REG_DB(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java
new file mode 100644
index 0000000..ba474cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_TRANSMIT_TUNNEL.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * CLIENT_CreateTransmitTunnel 接口输出参数
+ */
+public class NET_OUT_CREATE_TRANSMIT_TUNNEL extends NetSDKLib.SdkStructure {
+	/**
+	 * /< 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * /< 对上侦听端口
+	 */
+	public int nPort;
+	/**
+	 * 私有web代理访问协议 {@link com.netsdk.lib.enumeration.EM_WEB_TUNNEL_PROTOCOL}
+	 */
+	public int emWebProtocol;
+	/**
+	 * 用户名
+	 */
+	public byte[] szUserName = new byte[128];
+	/**
+	 * 令牌
+	 */
+	public byte[] szTempToken = new byte[128];
+
+	public NET_OUT_CREATE_TRANSMIT_TUNNEL() {
+		this.dwSize = this.size();
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..e4957ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_CreateWorkSuitCompareGroup 接口输出参数
+ * @date 2022/10/08 17:06:16
+ */
+public class NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 合规库组ID
+	 */
+	public byte[] szGroupID = new byte[64];
+
+	public NET_OUT_CREATE_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java
new file mode 100644
index 0000000..4aaa5b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_CreateSubBusinessModule 接口输出参数
+*/
+public class NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+public NET_OUT_CREAT_SUB_BUSINESS_MDL_INFO(){
+    this.dwSize=this.size();
+}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java
new file mode 100644
index 0000000..38e68e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteAlarmUser 接口输出参数
+ * @date 2023/03/16 11:04:51
+ */
+public class NET_OUT_DELETE_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_DELETE_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..2c9e265
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_CALIBRATEINFO_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除标定点信息出参
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_OUT_DELETE_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_DELETE_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_COURSE.java
new file mode 100644
index 0000000..b07b094
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_COURSE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 删除课程记录 出参指针 {@link NetSDKLib#CLIENT_DeleteCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 20:33
+ */
+public class NET_OUT_DELETE_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 课程 ID 数量
+     */
+    public int nResultIdNum;
+    /**
+     * 课程 ID; -1:删除成功, 原id:删除失败
+     */
+    public int[] nResultId = new int[64];
+
+    public NET_OUT_DELETE_COURSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..349b464
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_DeleteGroupFromVehicleRegisterDB 接口输出参数
+ * @date 2021/8/17 14:16
+ */
+public class NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB  extends NetSDKLib.SdkStructure {
+    public int                           		dwSize;							// 结构体大小
+    public NET_OUT_DELETE_GROUP_FROM_VEHICLE_REG_DB(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java
new file mode 100644
index 0000000..cfe4589
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeletePrivacyMasking 输出参数
+ * @date 2022/07/21 17:20:27
+ */
+public class NET_OUT_DELETE_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_DELETE_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..df1dc7d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_DeleteVehicleFromVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:33
+ */
+public class NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           		dwSize;							// 结构体大小
+
+public NET_OUT_DELETE_VEHICLE_FROM_VEHICLE_REG_DB(){
+    dwSize=this.size();
+}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java
new file mode 100644
index 0000000..c03a334
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteWorkSuitBySourceUID 接口输出参数
+ * @date 2022/10/08 20:13:32
+ */
+public class NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 错误码个数
+	 */
+	public int nErrCodeNum;
+	/**
+	 * 错误码信息,参考枚举{ @link EM_DELETE_BY_SOURCEUID_ERRCODE }
+	 */
+	public int[] emErrCode = new int[64];
+
+	public NET_OUT_DELETE_WORKSUIT_BY_SOURCEUID() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..af7ec97
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DeleteWorkSuitCompareGroup 接口输出参数
+ * @date 2022/10/08 17:14:26
+ */
+public class NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_DELETE_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java
new file mode 100644
index 0000000..0120c22
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DELIVER_USER_PICTURE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_OUT_DELIVER_USER_PICTURE
+ * description: 下发人脸数据 <—— 出参
+ * author:251589
+ * createTime:2020/12/22 22:01
+ *
+ * @version v1.0
+ */
+public class NET_OUT_DELIVER_USER_PICTURE extends NetSDKLib.SdkStructure {
+    public 	int                               dwSize;                     // 结构体大小
+    public NET_OUT_DELIVER_USER_PICTURE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..5454530
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description CLIENT_DeleteByConditionFromVehicleRegisterDB 接口输出参数
+* @date 2022/02/25 15:08:25
+*/
+public class NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_DEL_BY_CONDITION_FROM_VEHICLE_REG_DB(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java
new file mode 100644
index 0000000..896123b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DETACH_TRANSMIT_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_DetachTransmitInfo输出参数
+ * @date 2022/02/14
+ */
+public class NET_OUT_DETACH_TRANSMIT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  用户使用该结构体时,dwSize需赋值为sizeof(NET_OUT_DETACH_TRANSMIT_INFO)
+     */
+    public int dwSize;
+
+    /**
+     *  应答数据缓冲空间, 用户申请空间
+     */
+    public Pointer szOutBuffer;
+
+    /**
+     *  应答数据缓冲空间长度
+     */
+    public int dwOutBufferSize;
+
+    /**
+     *  应答Json数据长度
+     */
+    public int dwOutJsonLen;
+
+    public NET_OUT_DETACH_TRANSMIT_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEV_IO_STATS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEV_IO_STATS.java
new file mode 100644
index 0000000..a2250c7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DEV_IO_STATS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo NET_QUERY_DEV_IO_STATS 类型接口输入参数
+ * @date 2021/07/09
+ */
+public class NET_OUT_DEV_IO_STATS extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+        
+    /**
+     * 存储设备io信息个数
+     */
+    public int nInfoNum;
+    
+    /**
+     * 存储设备io信息 
+     */       
+    public NET_DEV_IO_STAT_INFO[] stuInfo = (NET_DEV_IO_STAT_INFO[])new NET_DEV_IO_STAT_INFO().toArray(512);
+    
+    
+    public NET_OUT_DEV_IO_STATS(){
+        this.dwSize=size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..57811cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_DoFindFaceRecognitionEx接口输出参数
+ * @date 2022/11/21 17:53:19
+ */
+public class NET_OUT_DOFIND_FACERECONGNITION_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 缓冲地址
+     */
+    public Pointer pBuffer;
+    /**
+     * 缓冲数据长度
+     */
+    public int nBufferLen;
+    /**
+     * 设备实际返回的候选信息结构体个数, 最大值是50, nRetCadidateEx2Num必须要小于等于nCadidateEx2Num
+     */
+    public int nRetCadidateEx2Num;
+    /**
+     * 需要用户输入的候选信息结构体个数, 最大值是50
+     */
+    public int nCadidateEx2Num;
+    /**
+     * 候选人员信息列表, 需要用户进行申请和释放,申请内存大小为: sizeof(NET_CANDIDATE_INFOEX2) * nCadidateEx2Num
+     */
+    public Pointer pstuCandidatesEx2;
+
+    public NET_OUT_DOFIND_FACERECONGNITION_EX() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD.java
new file mode 100644
index 0000000..65c7b03
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_DownloadPieceFile 接口输出参数(文件下载)
+ * @origin autoTool
+ * @date 2023/11/30 19:38:56
+ */
+public class NET_OUT_DOWNLOAD extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小:赋值为结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_DOWNLOAD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java
new file mode 100644
index 0000000..25655fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_BYFILE_SELFADAPT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 自适应下载录像 按文件 {@link NetSDKLib#CLIENT_DownloadByFileSelfAdapt} 出参
+ * 入参 {@link NET_IN_DOWNLOAD_BYFILE_SELFADAPT}
+ *
+ * @author 47040
+ * @since Created in 2021/6/19 10:42
+ */
+public class NET_OUT_DOWNLOAD_BYFILE_SELFADAPT extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_DOWNLOAD_BYFILE_SELFADAPT() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java
new file mode 100644
index 0000000..5370d60
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_MULTI_FILE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 批量下载文件 出参
+ * 接口 {@link NetSDKLib#CLIENT_DownLoadMultiFile}
+ * 出参 {@link NET_IN_DOWNLOAD_MULTI_FILE}
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/28 16:11
+ */
+public class NET_OUT_DOWNLOAD_MULTI_FILE extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 下载句柄
+     */
+    public NetSDKLib.LLong lDownLoadHandle;
+
+    public NET_OUT_DOWNLOAD_MULTI_FILE() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java
new file mode 100644
index 0000000..530010f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DOWNLOAD_PIECE_FILE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+public class NET_OUT_DOWNLOAD_PIECE_FILE extends SdkStructure{
+	public int				dwSize;
+	/**
+	 * 文件总长度
+	 */
+	public int				nFileLength;	
+	/**
+	 * 本次返回的数据长度,单位字节,建议为32KB,最大不超过4MB
+	 */
+	public int				nPacketLength;
+	/**
+	 * 本次请求的文件数据,由用户申请内存,大小为nBufferLen
+	 */
+	public Pointer          szBuffer;  
+	/**
+	 * 本次请求的文件数据长度,单位字节
+	 */
+	public int				nBufferLen;      
+	 public NET_OUT_DOWNLOAD_PIECE_FILE() {
+         this.dwSize = this.size();
+     }	   
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..67c2a6a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_DoFindDetailNumberStatCluster 的输出参数
+ * @date 2022/10/09 14:08:24
+ */
+public class NET_OUT_DO_FIND_DETAIL_CLUSTER extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 实际查询返回的记录数
+	 */
+	public int nFound;
+	/**
+	 * 返回记录实际条数
+	 */
+	public int nFindInfoRealNum;
+	/**
+	 * 返回的记录,单次不超过1024
+	 */
+	public NET_CLUSTER_DETAIL_FIND_INFO[] stuClusterFindInfo = new NET_CLUSTER_DETAIL_FIND_INFO[1024];
+
+	public NET_OUT_DO_FIND_DETAIL_CLUSTER() {
+		for (int i = 0; i < stuClusterFindInfo.length; i++) {
+			stuClusterFindInfo[i] = new NET_CLUSTER_DETAIL_FIND_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_TALK_DEV.java
new file mode 100644
index 0000000..5b5ea93
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_TALK_DEV.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 421657
+ * @description CLIENT_DoFindTalkDev 接口输出参数
+ * @origin autoTool
+ * @date 2023/10/26 10:05:01
+ */
+public class NET_OUT_DO_FIND_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 用户指定分配结构体个数,需大于等于NET_IN_DO_FIND_TALK_DEV的nCount
+     */
+    public int nMaxNum;
+    /**
+     * / 查询信息数据, 内存由用户申请释放, 大小为NET_TALK_DEV_DO_FIND_INFO*nMaxNum, refer to {@link NET_TALK_DEV_DO_FIND_INFO}
+     */
+    public Pointer pstuInfo;
+    /**
+     * / 实际返回的查询数量
+     */
+    public int nRetNum;
+
+    public NET_OUT_DO_FIND_TALK_DEV() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..824a70d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_DoFindVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:52
+ */
+public class NET_OUT_DO_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           		dwSize;							// 结构体大小
+    public 	int										nCarCandidateNum;     // 候选车辆数量
+    public 	NetSDKLib.NET_CAR_CANDIDATE_INFO[] stuCarCandidate=new NetSDKLib.NET_CAR_CANDIDATE_INFO[128];  // 候选车辆数据
+    public	int										 nFound;						// 查询到的条数
+
+    public NET_OUT_DO_FIND_VEHICLE_REG_DB(){
+
+        for (int i=0;i<stuCarCandidate.length;i++){
+            stuCarCandidate[i]=new NetSDKLib.NET_CAR_CANDIDATE_INFO();
+        }
+
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..bfebefc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_DoFindWaterDataStatServer 输出参数 
+* @date 2022/08/22 17:27:50
+*/
+public class NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+查询到的条数
+*/
+public			int					nFound;
+/** 
+流量统计信息个数
+*/
+public			int					nInfoNum;
+/** 
+流量统计信息
+*/
+public			NET_WATERDATA_STAT_SERVER_INFO[]					stuInfo=new NET_WATERDATA_STAT_SERVER_INFO[64];
+
+public NET_OUT_DO_FIND_WATERDATA_STAT_SERVER_INFO(){
+		for(int i=0;i<stuInfo.length;i++){
+			stuInfo[i]=new NET_WATERDATA_STAT_SERVER_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java
new file mode 100644
index 0000000..a5d4e30
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_ENCODE_CFG_CAPS.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.GetDevCaps_Type;
+import com.netsdk.lib.enumeration.REC_TYPE;
+import com.netsdk.lib.enumeration.SNAP_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.NET_N_ENCODE_AUX;
+
+/**
+ * 获取设备编码配置对应能力输出参数
+ * 能力集枚举 {@link GetDevCaps_Type#NET_ENCODE_CFG_CAPS}
+ * 能力集接口 {@link NetSDKLib#CLIENT_GetDevCaps}
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 22:55
+ */
+public class NET_OUT_ENCODE_CFG_CAPS extends NetSDKLib.SdkStructure {
+
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 主码流配置对应能力 如果有多个:
+     * 第一个表示普通录像码流
+     * 第二个表示动检录像码流
+     * 第三个表示报警录像码流
+     * 有效长度由 {@link #nMainFormCaps} 决定
+     */
+    public NET_STREAM_CFG_CAPS[] stuMainFormatCaps = new NET_STREAM_CFG_CAPS[REC_TYPE.NET_REC_TYPE_NUM.getValue()];
+    /**
+     * 辅码流配置对应能力 如果有多个:
+     * 第一个表示辅码流 1
+     * 第二个表示辅码流 2
+     * 第三个表示辅码流 3
+     * 有效长度由 {@link #nExtraFormCaps} 决定
+     */
+    public NET_STREAM_CFG_CAPS[] stuExtraFormatCaps = new NET_STREAM_CFG_CAPS[NET_N_ENCODE_AUX];
+    /**
+     * 抓图码流配置对应能力:如果有多个:
+     * 第一个表示普通抓图
+     * 第二个表示报警抓图
+     * 有效长度由 {@link #nSnapFormatCaps} 决定
+     */
+    public NET_STREAM_CFG_CAPS[] stuSnapFormatCaps = new NET_STREAM_CFG_CAPS[SNAP_TYPE.SNAP_TYP_NUM.getValue()];
+    /**
+     * 有效的主码流配置对应的能力个数
+     * 代表了 {@link #stuMainFormatCaps} 的有效长度
+     */
+    public int nMainFormCaps;
+    /**
+     * 有效的辅码流配置对应的能力个数
+     * 代表了 {@link #stuExtraFormatCaps} 的有效长度
+     */
+    public int nExtraFormCaps;
+    /**
+     * 有效的抓图码流配置对应的能力个数
+     * 代表了 {@link #stuSnapFormatCaps} 的有效长度
+     */
+    public int nSnapFormatCaps;
+
+    public NET_OUT_ENCODE_CFG_CAPS() {
+        dwSize = this.size();
+        for (int i = 0; i < stuMainFormatCaps.length; i++) {
+            stuMainFormatCaps[i] = new NET_STREAM_CFG_CAPS();
+        }
+        for (int i = 0; i < stuExtraFormatCaps.length; i++) {
+            stuExtraFormatCaps[i] = new NET_STREAM_CFG_CAPS();
+        }
+        for (int i = 0; i < stuSnapFormatCaps.length; i++) {
+            stuSnapFormatCaps[i] = new NET_STREAM_CFG_CAPS();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java
new file mode 100644
index 0000000..1aecc4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY.java
@@ -0,0 +1,81 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetDevCaps 对应的类型(NET_FACERECOGNITIONSE_CAPS)输出参数
+ * @origin autoTool
+ * @date 2023/07/31 09:25:34
+ */
+public class NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 是否支持多通道查找
+	 */
+	public int bmultiFind;
+	/**
+	 * 最多支持添加自定义目标类型数量
+	 */
+	public int nmaxFaceType;
+	/**
+	 * 目标检测框颜色能力
+	 */
+	public NET_FACEBOXCOLOR_CAPS stuFaceBoxColor = new NET_FACEBOXCOLOR_CAPS();
+	/**
+	 * 是否支持以图搜图数据推送
+	 */
+	public int bAsynPush;
+	/**
+	 * 最大目标库数量, 0表示无效
+	 */
+	public int nMaxGroupNum;
+	/**
+	 * 最大存储目标容量, 0表示无效
+	 */
+	public int nMaxPersonNum;
+	/**
+	 * 批量导图每次接收图片的大小, 单位KB
+	 */
+	public int nMultiAppendPicLength;
+	/**
+	 * 是否支持以图搜图 {@link com.netsdk.lib.enumeration.EM_SUPPORT_SEARCH_BY_PIC}
+	 */
+	public int emSupportSearchByPic;
+	/**
+	 * 以图搜图支持的目标类型掩码, emSupportSearchByPic为EM_SUPPORT_SEARCH_BY_PIC_SUPPORT时有效
+	 * bit0:目标, bit1:人体, bit2:机动车, bit3:非机动车
+	 */
+	public int dwSearchTypeMask;
+	/**
+	 * 单个图片最大大小的值,单位KB
+	 */
+	public int nSinglePicMaxLength;
+	/**
+	 * 设备目标注册库是否支持一人多图
+	 */
+	public int bPersonWithMultiFace;
+	/**
+	 * 是否支持使用目标库GroupID和人员UUID分别对目标库和人员进行管理
+	 */
+	public int bSupportIDFromServer;
+	/**
+	 * 是否支持SMD属性特征以图搜图的类型掩码, bit0: 人脸, bit1: 人体, bit2: 机动车, bit3: 非机动车
+	 */
+	public int nSupportSMDPicSearchMask;
+	/**
+	 * 查询条件与结果中的时间能否支持UTC时间格式 0: 不支持,1: 支持
+	 */
+	public int nSupportRealUTC;	
+	/**
+	 * 支持从大图检测小图的方法,1-支持detectMultiFace,0(或不存在该字段)-不确定,兼容老设备   
+	 */
+	public int nDetectMethod;
+	
+	public NET_OUT_FACERECOGNITIONSERVER_CAPSBILITYQUERY() {		
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERSERVER_GETDETEVTTOKEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERSERVER_GETDETEVTTOKEN.java
new file mode 100644
index 0000000..0236a7b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACERSERVER_GETDETEVTTOKEN.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_FaceRServerGetDetectToken 接口输出参数
+ * @date 2023/04/20 14:04:30
+ */
+public class NET_OUT_FACERSERVER_GETDETEVTTOKEN extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 获取到的查询令牌
+	 */
+	public int nToken;
+
+	public NET_OUT_FACERSERVER_GETDETEVTTOKEN() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
new file mode 100644
index 0000000..1dc4a8c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_FaceRecognitionDetectMultiFace 接口输出参数
+ * @date 2022/11/21 17:53:13
+ */
+public class NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体的大小
+     */
+    public int dwSize;
+
+    public NET_OUT_FACE_RECOGNITION_DETECT_MULTI_FACE_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..1d32663
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_FindGroupFormVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:20
+ */
+public class NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           		dwSize;							// 结构体大小
+    public int									nGroupListNum;			// 返回的车辆组数量
+    public 	NET_VEHICLE_GROUP_FOUND_INFO[]	stuGroupList=new NET_VEHICLE_GROUP_FOUND_INFO[128];	 //返回的车辆组信息 /
+
+    public NET_OUT_FIND_GROUP_FROM_VEHICLE_REG_DB(){
+        for(int i=0;i<stuGroupList.length;i++){
+            stuGroupList[i]=new NET_VEHICLE_GROUP_FOUND_INFO();
+        }
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java
new file mode 100644
index 0000000..e7c640a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_REC_BAK_RST_TASK.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_FindRecordBackupRestoreTaskInfos接口输出参数
+ * @date 2022/01/14
+ */
+public class NET_OUT_FIND_REC_BAK_RST_TASK extends NetSDKLib.SdkStructure{
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  任务数组,由用户申请内存,大小为sizeof{@link NetSDKLib.NET_REC_BAK_RST_TASK}*nMaxCount
+     */
+    public Pointer pTasks;
+
+    /**
+     *  数组大小
+     */
+    public int nMaxCount;
+
+    /**
+     *  返回的任务数量
+     */
+    public int nRetCount;
+
+    public NET_OUT_FIND_REC_BAK_RST_TASK(){
+    	
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java
new file mode 100644
index 0000000..d30faff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_FIND_WORKSUIT_COMPARE_GROUP.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_FindWorkSuitCompareGroup 接口输出参数
+ * @date 2022/10/10 13:42:51
+ */
+public class NET_OUT_FIND_WORKSUIT_COMPARE_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 工装合规组最大个数, 由用户指定, 即pstWorkSuitGroupInfo 数组大小
+	 */
+	public int nMaxGroupNum;
+	/**
+	 * 实际返回的工装合规组个数, 即pstWorkSuitGroupInfo数组的有效元素个数
+	 */
+	public int nRetGroupNum;
+	/**
+	 * 工装合规组信息, 内存由用户申请, 申请大小nMaxGroupNum*sizeof(NET_WORKSUIT_COMPARE_GROUP_INFO)
+	 */
+	public Pointer pstWorkSuitGroupInfo;
+
+	public NET_OUT_FIND_WORKSUIT_COMPARE_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETALL_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETALL_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..57538f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETALL_CALIBRATEINFO_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取所有标定信息出参
+ * @date 2023/05/24 10:24:53
+ */
+public class NET_OUT_GETALL_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * GPS信息
+	 */
+	public NET_DEVLOCATION_INFO stuGPSInfo = new NET_DEVLOCATION_INFO();
+	/**
+	 * 标定信息
+	 */
+	public NET_LOCATION_CALIBRATE_INFO stuLocationCalibrateInfo = new NET_LOCATION_CALIBRATE_INFO();
+
+	public NET_OUT_GETALL_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETCOUNT_LOG_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETCOUNT_LOG_PARAM.java
new file mode 100644
index 0000000..5c8b6f3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETCOUNT_LOG_PARAM.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_QueryDevLogCount获取日志条数输出参数
+ * @date 2023/05/05 11:12:30
+ */
+public class NET_OUT_GETCOUNT_LOG_PARAM extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 日志数(设备返回)
+     */
+    public int nLogCount;
+
+    public NET_OUT_GETCOUNT_LOG_PARAM() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java
new file mode 100644
index 0000000..3c16a61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETFACEEIGEN_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251589
+ * @version V1.0
+ * @Description:
+ * @date 2020/12/9 19:43
+ */
+public class NET_OUT_GETFACEEIGEN_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    public int nInFaceEigenLen;          // 用户申请的人脸特征值数据大小
+    public int nOutFaceEigenLen;         // 人脸特征值数据实际的大小
+    public Pointer pszFaceEigen=new Memory(8*1024);          // 人脸特征值数据, 由用户申请释放, 每张照片最大为8K
+    public NET_OUT_GETFACEEIGEN_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
new file mode 100644
index 0000000..fd41b4b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSummaryCrowdDistriMap 接口输出参数
+ * @date 2022/01/07
+ */
+public class NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  检测区个数
+     */
+    public int nCrowdStatNum;
+
+    /**
+     *  检测区信息
+     */
+    public NET_GETSUMMARY_CROWD_STAT_DATA[] stuCrowdStatData = (NET_GETSUMMARY_CROWD_STAT_DATA[]) new NET_GETSUMMARY_CROWD_STAT_DATA().toArray(8);
+    public NET_OUT_GETSUMMARY_CROWDDISTRI_MAP_INFO(){
+        this.dwSize = this.size();
+    }	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ALARMMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ALARMMODE.java
new file mode 100644
index 0000000..b6285e0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ALARMMODE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description获取布防模式 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_ARMMODE
+ * @date 2021/11/08
+ */
+public class NET_OUT_GET_ALARMMODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  布撤防状态个数
+     */
+    public int nArmModeRet;
+
+    /**
+     *  布撤防信息
+     */
+    public NET_ARMMODE_INFO[] stuArmMode = (NET_ARMMODE_INFO[]) new NET_ARMMODE_INFO().toArray(NetSDKLib.MAX_AREA_NUMBER);
+    /**
+     *  布撤防状态个数扩展 超过8个请使用这个字段
+     */
+    public int nArmModeRetEx;
+
+    /**
+     *  布撤防信息
+     */
+    public NET_ARMMODE_INFO[] stuArmModeEx = (NET_ARMMODE_INFO[]) new NET_ARMMODE_INFO().toArray(NetSDKLib.MAX_AREA_NUMBER_EX);
+    public NET_OUT_GET_ALARMMODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BIND_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BIND_MODE_INFO.java
new file mode 100644
index 0000000..ee96756
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BIND_MODE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetBindMode 接口出参
+ * @origin autoTool
+ * @date 2023/09/15 10:59:48
+ */
+public class NET_OUT_GET_BIND_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * / 绑定模式 {@link com.netsdk.lib.enumeration.EM_BIND_MODE}
+	 */
+	public int emBindMode;
+
+	public NET_OUT_GET_BIND_MODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BYPASSMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BYPASSMODE.java
new file mode 100644
index 0000000..a698d2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_BYPASSMODE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取旁路状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_BYPASSMODE 
+* @origin autoTool
+* @date 2023/08/09 16:33:14
+*/
+public class NET_OUT_GET_BYPASSMODE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+防区个数
+*/
+public			int					nZoneRet;
+/** 
+防区工作模式     {@link com.netsdk.lib.enumeration.EM_BYPASSMODE_TYPE}
+*/
+public			int[]					arrModes=new int[72];
+/** 
+防区个数扩展
+*/
+public			int					nZoneRetEx;
+/** 
+防区号扩展  超过72使用这个字段  {@link com.netsdk.lib.enumeration.EM_BYPASSMODE_TYPE}
+*/
+public			int[]					arrModesEx=new int[256];
+
+public NET_OUT_GET_BYPASSMODE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java
new file mode 100644
index 0000000..4a377df
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CABINET_STATE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   CLIENT_GetFinancialCabinetState 的输出参数 
+* @date 2022/08/10 13:39:22
+*/
+public class NET_OUT_GET_CABINET_STATE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+柜体温度,单位摄氏度
+*/
+public			float					fTemperature;
+/** 
+柜体湿度,单位百分比
+*/
+public			float					fHumidity;
+
+public NET_OUT_GET_CABINET_STATE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..53aa4a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CALIBRATEINFO_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取标定点信息出参
+ * @date 2023/05/24 10:24:51
+ */
+public class NET_OUT_GET_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 标定点信息
+	 */
+	public NET_GET_CALIBRATEINFO_POINT_INFO stuPointInfo = new NET_GET_CALIBRATEINFO_POINT_INFO();
+
+	public NET_OUT_GET_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java
new file mode 100644
index 0000000..4771769
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_CFG.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetCameraCfg}的出参
+ * @date 2020/11/06
+ */
+public class NET_OUT_GET_CAMERA_CFG extends NetSDKLib.SdkStructure {
+
+	// 结构体大小
+	public int dwSize;
+
+	// 相机编号
+	public int nCameraNo;
+
+	// 相机的信息
+	public NET_CAMERA_CFG_INFO stuCameraInfo;
+
+	public NET_OUT_GET_CAMERA_CFG() {
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java
new file mode 100644
index 0000000..122bdfc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CAMERA_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetCameraInfo}的出参
+ * @date 2020/11/09
+ */
+public class NET_OUT_GET_CAMERA_INFO extends NetSDKLib.SdkStructure {
+
+	// 结构体大小
+	public int dwSize;
+
+	// 相机编号
+	public int nCameraNo;
+
+	// 相机连接状态{@link EM_CAMERA_CONNECT_STATE}
+	public int emConnectState;
+
+	// 返回的红绿灯通道数
+	public int nRetLightInfoNum;
+
+	// 相机对应的红绿灯通道状态
+	public NET_LIGHTINFO_CFG[] stuLightInfos = new NET_LIGHTINFO_CFG[16];
+
+	public NET_OUT_GET_CAMERA_INFO() {
+		for (int i = 0; i < stuLightInfos.length; i++) {
+			stuLightInfos[i] = new NET_LIGHTINFO_CFG();
+		}
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java
new file mode 100644
index 0000000..b7a8828
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNELS_STATE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取通道状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_CHANNELSSTATE 
+* @date 2022/10/09 11:24:36
+*/
+public class NET_OUT_GET_CHANNELS_STATE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+通道状态个数
+*/
+public			int					nChannelsStatesCount;
+/** 
+通道状态
+*/
+public			NET_CHANNELS_STATE[]					stuChannelsStates=new NET_CHANNELS_STATE[1024];
+
+public NET_OUT_GET_CHANNELS_STATE(){
+		for(int i=0;i<stuChannelsStates.length;i++){
+			stuChannelsStates[i]=new NET_CHANNELS_STATE();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java
new file mode 100644
index 0000000..0540354
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_CFG.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetChannelCfg}的出参
+ * @date 2020/11/09
+ */
+public class NET_OUT_GET_CHANNEL_CFG extends NetSDKLib.SdkStructure {
+
+  // 结构体大小
+  public int dwSize;
+
+  // 检测通道
+  public int nChannelNo;
+
+  // 通道信息
+  public NET_CHANNEL_CFG_INFO stuChannelInfo;
+
+  public NET_OUT_GET_CHANNEL_CFG() {
+    this.dwSize = this.size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java
new file mode 100644
index 0000000..a3573a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CHANNEL_STATE.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @description CLIENT_GetChannelState 出参
+ * @date 2022/07/04 11:17:42
+ */
+public class NET_OUT_GET_CHANNEL_STATE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 智能业务状态信息实际个数
+	 */
+	public int nStateNum;
+	/**
+	 * 用户申请智能业务状态信息最大个数
+	 */
+	public int nMaxStateNum;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved = new byte[4];
+	/**
+	 * 智能业务状态信息 需要用户申请内存空间 大小 sizeof(NET_CHANNEL_STATE_INFO)*nMaxStateNum
+	 */
+	public Pointer pstuState;
+	
+	/**
+	 * 智能业务状态信息扩展 需要用户申请内存空间 大小 sizeof(NET_CHANNEL_STATE_INFO_EX)*nMaxStateNum
+	 */
+	public Pointer pstuStateEx;
+
+	public NET_OUT_GET_CHANNEL_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java
new file mode 100644
index 0000000..4efde3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CLUSTER_STATE_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_GetClusterState 的输出参数
+ * @date 2022/10/09 14:24:34
+ */
+public class NET_OUT_GET_CLUSTER_STATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 当前聚档状态 1.已完成. 2.进行中 3.聚档失败
+	 */
+	public int nClusterState;
+	/**
+	 * 记录更新时间,已设备本地时间为准
+	 */
+	public NET_TIME_EX stuDealTime = new NET_TIME_EX();
+	/**
+	 * 聚档触发时间, 按照年月日记录, 作为聚档的唯一key, 单设备每日只有一条聚档记录.如20220530则表示在20220530当日已经聚档
+	 */
+	public int nClusterData;
+	/**
+	 * 上次聚档类型: 1.自动每日聚档 2.平台下发手动聚档 3.手动测试触发 4.聚档主动失败重试
+	 */
+	public int nClusterType;
+	/**
+	 * / 聚档信息,主要用于展示失败原因, 正常事件该字段为空或0
+	 */
+	public int nClusterMessage;
+	/**
+	 * / 返回记录ID,单设备ID理论唯一,表示同一次聚档任务
+	 */
+	public int nRecordID;
+	public NET_OUT_GET_CLUSTER_STATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java
new file mode 100644
index 0000000..4de8ce9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_LOGIC_CHANNEL.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取录播主机默认真实通道号出参,对应接口 {@link NetSDKLib#CLIENT_GetLogicChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:01
+ */
+public class NET_OUT_GET_COURSE_LOGIC_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 获取到的逻辑通道数
+     */
+    public int nChannelCount;
+    /**
+     * 逻辑通道信息,下标为将要获取的真实通道数
+     */
+    public NET_LOGIC_CHANNEL_INFO[] stuChannelInfo = new NET_LOGIC_CHANNEL_INFO[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_OUT_GET_COURSE_LOGIC_CHANNEL() {
+        dwSize = this.size();
+        for (int i = 0; i < stuChannelInfo.length; i++) {
+            stuChannelInfo[i] = new NET_LOGIC_CHANNEL_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..854e01d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_COURSE_RECORD_MODE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_RECORD_MODE;
+
+/**
+ * 获取录像模式出参,对应接口{@link NetSDKLib#CLIENT_GetCourseRecordMode}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:50
+ */
+public class NET_OUT_GET_COURSE_RECORD_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 录像模式{@link NET_EM_RECORD_MODE}
+     */
+    public int emRecordMode;
+
+    public NET_OUT_GET_COURSE_RECORD_MODE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java
new file mode 100644
index 0000000..096b907
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_CUSTOMINFO_CAPS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetCustomInfoCaps 输出参数 
+* @date 2022/05/11 20:24:43
+*/
+public class NET_OUT_GET_CUSTOMINFO_CAPS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+为true时,订阅参数是XRaySubscribeRule,类型是int
+格式如XRaySubscribeRule=1,取值范围:0表示取UploadPlatform配置,1表示取DangerPackageCondition配置
+*/
+public			int					bSupportXRaySubscribeRule;
+
+public NET_OUT_GET_CUSTOMINFO_CAPS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java
new file mode 100644
index 0000000..4f655be
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEFAULT_REAL_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取默认真实通道号出参,对应接口 {@link NetSDKLib#CLIENT_GetDefaultRealChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 10:11
+ */
+public class NET_OUT_GET_DEFAULT_REAL_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 通道号
+     */
+    public int[] nChannel = new int[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_OUT_GET_DEFAULT_REAL_CHANNEL(){
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java
new file mode 100644
index 0000000..e9dd242
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICESERIALNO_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceSerialNo 出参
+ * @date 2023/03/15 20:18:12
+ */
+public class NET_OUT_GET_DEVICESERIALNO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 序列号
+	 */
+	public byte[] szSN = new byte[64];
+
+	public NET_OUT_GET_DEVICESERIALNO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java
new file mode 100644
index 0000000..33795cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICETYPE_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceType 出参
+ * @date 2023/03/15 20:18:34
+ */
+public class NET_OUT_GET_DEVICETYPE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 设备类型,该字段被废弃
+	 */
+	public byte[] szType = new byte[32];
+	/**
+	 * 设备类型, 扩展设备类型建议使用此字段
+	 */
+	public byte[] szTypeEx = new byte[256];
+
+	public NET_OUT_GET_DEVICETYPE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java
new file mode 100644
index 0000000..dd07c19
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_AII_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceAllInfo 输出结构体
+ * @date 2021/01/20
+ */
+public class NET_OUT_GET_DEVICE_AII_INFO extends NetSDKLib.SdkStructure{
+	/**
+     * 赋值为结构体大小
+     */
+    public int dwSize;
+    
+    /**
+     * 信息的个数 
+     */
+    public int nInfoCount;
+    
+    /**
+     * 设备存储信息
+     */
+    public NET_DEVICE_STORAGE_INFO[] stuStorageInfo = new NET_DEVICE_STORAGE_INFO[8];
+    
+    public NET_OUT_GET_DEVICE_AII_INFO(){
+        this.dwSize=size();
+        for (int i = 0; i < stuStorageInfo.length; i++) {
+        	stuStorageInfo[i] = new NET_DEVICE_STORAGE_INFO();
+		}
+        
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java
new file mode 100644
index 0000000..a156bb6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_ETH_BAND_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceEthBandInfo 接口出参
+ * @date 2022/05/30 14:45:57
+ */
+public class NET_OUT_GET_DEVICE_ETH_BAND_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 网卡信息个数
+	 */
+	public int nCount;
+	/**
+	 * 网卡信息
+	 */
+	public NET_BAND_SPEED_INFO[] stuBandSpeedInfo = new NET_BAND_SPEED_INFO[10];
+
+	public NET_OUT_GET_DEVICE_ETH_BAND_INFO() {
+		for (int i = 0; i < stuBandSpeedInfo.length; i++) {
+			stuBandSpeedInfo[i] = new NET_BAND_SPEED_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_INFO_EX.java
new file mode 100644
index 0000000..ae90404
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEVICE_INFO_EX.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDeviceInfoEx 接口输出参数
+ * @date 2023/04/19 16:17:09
+ */
+public class NET_OUT_GET_DEVICE_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 用户申请的设备个数
+	 */
+	public int nMaxCount;
+	/**
+	 * 实际返回的设备个数
+	 */
+	public int nRetCount;
+	/**
+	 * 设备信息列表, 由用户申请和释放内存,申请大小为sizeof(NET_GET_DEVICE_INFO_EX)*nMaxCount,
+	 * 结构体参考{@link NET_GET_DEVICE_INFO_EX}数组
+	 */
+	public Pointer pstuDeviceInfo;
+
+	public NET_OUT_GET_DEVICE_INFO_EX() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java
new file mode 100644
index 0000000..d6fe777
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DEV_STORAGE_SMART_VALUE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetDevStorageSmartValue 接口出参
+ * @date 2022/05/30 14:43:22
+ */
+public class NET_OUT_GET_DEV_STORAGE_SMART_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 设备SMART信息个数
+	 */
+	public int nCount;
+	/**
+	 * 设备SMART信息
+	 */
+	public NET_SMART_VALUE_INFO[] stuValuesInfo = new NET_SMART_VALUE_INFO[64];
+
+	public NET_OUT_GET_DEV_STORAGE_SMART_VALUE() {
+		for (int i = 0; i < stuValuesInfo.length; i++) {
+			stuValuesInfo[i] = new NET_SMART_VALUE_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
new file mode 100644
index 0000000..6c4c724
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetDynamicLockRandomPublicKey 接口出参 
+* @date 2022/06/23 10:09:19
+*/
+public class NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE}
+*/
+public			int					emErrorCode;
+/** 
+锁随机公钥
+*/
+public			byte[]					szRandomPublicKey=new byte[512];
+
+public NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java
new file mode 100644
index 0000000..8738368
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ELEVATOR_WORK_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetElevatorWorkInfo 接口出参
+ * @date 2022/08/11 19:21:29
+ */
+public class NET_OUT_GET_ELEVATOR_WORK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 电梯运行状态, 0 电梯停止, 1 电梯上行, 2 电梯下行
+	 */
+	public int nElevatorWorkState;
+	/**
+	 * 电梯所在的楼层
+	 */
+	public byte[] szElevatorFloor = new byte[32];
+	/**
+	 * 电梯运行速度, 单位mm/s
+	 */
+	public int nElevatorWorkSpeed;
+	/**
+	 * 基准楼层是否已校准(梯控传感器重启需要重新校准)
+	 */
+	public int bIsCheckFloor;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[256];
+
+	public NET_OUT_GET_ELEVATOR_WORK_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java
new file mode 100644
index 0000000..52ad26d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FILE_INFO_BY_PATH_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description  CLIENT_GetFileManagerExFileInfoByPath接口出参
+ * @date 2022/10/12 20:23:54
+ */
+public class NET_OUT_GET_FILE_INFO_BY_PATH_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 此结构体大小,必须赋值
+	 */
+	public			int					dwSize;
+	/**
+	 文件上传状态 {@link com.netsdk.lib.enumeration.EM_FILE_UPDATE_STATE}
+	 */
+	public			int					emState;
+	/**
+	 文件开始时间
+	 */
+	public			NET_TIME_EX					stuStartTime=new NET_TIME_EX();
+	/**
+	 文件结束时间
+	 */
+	public			NET_TIME_EX					stuEndTime=new NET_TIME_EX();
+	/**
+	 文件上传进度
+	 */
+	public			int					nProgress;
+	/**
+	 当前分片(切片上传模式所需数据)
+	 */
+	public			int					nCurrentSlice;
+	/**
+	 文件大小
+	 */
+	public			long					nFileLength;
+	/**
+	 错误原因
+	 0: 未知原因
+	 1: 文件个数超出
+	 2: 文件存储空间已满
+	 3: 该文件太大
+	 4: 无效的文件类型
+	 5: 没有上传权限
+	 6: 文件命名异常
+	 7: 文件名太长
+	 8: 文件名已经存在
+	 9: 验签失败
+	 */
+	public			int					nReason;
+	/**
+	 *字节对齐
+	 */
+	public			byte[]					szReserved=new byte[4];
+
+	public			NET_OUT_GET_FILE_INFO_BY_PATH_INFO(){
+		this.dwSize=this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java
new file mode 100644
index 0000000..e142670
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_FINANCIAL_CABIN_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetFinancialCabinInfo 输出参数 
+* @date 2022/08/01 14:13:49
+*/
+public class NET_OUT_GET_FINANCIAL_CABIN_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+舱位信息个数
+*/
+public			int					nInfoNum;
+/** 
+舱位信息,是数组和Index数组下标对应
+*/
+public			NET_FINANCIAL_CABIN_INFO[]					stuInfo=new NET_FINANCIAL_CABIN_INFO[64];
+
+public NET_OUT_GET_FINANCIAL_CABIN_INFO(){
+		for(int i=0;i<stuInfo.length;i++){
+			stuInfo[i]=new NET_FINANCIAL_CABIN_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..b123c89
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GLOBAL_PARAMETER.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscGlobalParam 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_GET_GLOBAL_PARAMETER extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  全局信息
+     */
+    public GLOBAL_INFO stuGlobalInfo;
+
+    public NET_OUT_GET_GLOBAL_PARAMETER(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GPS_STATUS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GPS_STATUS_INFO.java
new file mode 100644
index 0000000..51345fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_GPS_STATUS_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_GetGpsStatus 接口出参
+ * @origin autoTool
+ * @date 2023/09/27 10:21:43
+ */
+public class NET_OUT_GET_GPS_STATUS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+    /**
+     * / GPS状态
+     */
+    public NET_GPS_STATUS_INFO stuGPSStatus = new NET_GPS_STATUS_INFO();
+
+    public NET_OUT_GET_GPS_STATUS_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java
new file mode 100644
index 0000000..98bdc61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_HEATMAPS_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251589
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_GetHeatMapsDirectly}的输出参数
+ * @date 2020/11/10
+ */
+public class NET_OUT_GET_HEATMAPS_INFO extends NetSDKLib.SdkStructure{
+
+    public int dwSize;
+
+    /**
+     *  元数据
+     */
+    public NetSDKLib.NET_RADIOMETRY_METADATA stMetaData;
+
+    /**
+     *  热图数据缓存区 pbDataBuf 的大小, 由用户指定
+     */
+    public int dwMaxDataBufLen;
+    /**
+     *  热图数据缓冲区(压缩过的数据,里面是每个像素点的温度数据,可以使用元数据信息解压),需要用户分配空间
+     */
+    public Pointer pbDataBuf;
+    /**
+     * 缓存区中返回的实际文件数据大小
+     */
+    public int dwRetDataBufLen;
+    /**
+     *  字节对齐
+     */
+    public byte[] byReserved = new byte[4];
+
+
+    public NET_OUT_GET_HEATMAPS_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java
new file mode 100644
index 0000000..a03f26f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_INPUT_CHANNEL_MEDIA.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_ENUM_INPUT_CHANNEL_MEDIA;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取录播主机通道输入媒体介质出参 ,对应接口{@link NetSDKLib#CLIENT_GetInputChannelMedia}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:03
+ */
+public class NET_OUT_GET_INPUT_CHANNEL_MEDIA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 输入媒体介质 {@link NET_ENUM_INPUT_CHANNEL_MEDIA}
+     */
+    public int[] emInputMedia = new int[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_OUT_GET_INPUT_CHANNEL_MEDIA() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_LASER_DISTANCE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_LASER_DISTANCE.java
new file mode 100644
index 0000000..a7989f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_LASER_DISTANCE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetLaserDistance 接口出参
+ * @date 2023/04/21 09:16:51
+ */
+public class NET_OUT_GET_LASER_DISTANCE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 目标距离 单位:米
+     */
+    public int unDistance;
+
+    public NET_OUT_GET_LASER_DISTANCE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_OUTPUT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_OUTPUT_STATE.java
new file mode 100644
index 0000000..a17a420
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_OUTPUT_STATE.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  获取输出状态 输出参数。此时CLIENT_GetAlarmRegionInfo的emType参数为NET_EM_GET_ALARMREGION_INFO_OUTPUTSTATE 
+* @origin autoTool
+* @date 2023/08/09 16:12:44
+*/
+public class NET_OUT_GET_OUTPUT_STATE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+状态个数
+*/
+public			int					nStateRet;
+/** 
+状态false:关闭true打开
+*/
+public			byte[]					arrStates=new byte[82];
+/** 
+对齐
+*/
+public			byte[]					byReserved=new byte[6];
+/** 
+状态个数扩展 超过82个使用这个字段
+*/
+public			int					nStateRetEx;
+/** 
+状态FLASE:关闭TRUE打开
+*/
+public			int[]					arrStatesEx=new int[256];
+/** 
+对齐
+*/
+public			byte[]					byReserved1=new byte[4];
+
+public NET_OUT_GET_OUTPUT_STATE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java
new file mode 100644
index 0000000..89e4f49
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_POPULATION_STATISTICS.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5 16:30
+ * CLIENT_GetPopulationStatistics 接口输出参数
+ */
+public class NET_OUT_GET_POPULATION_STATISTICS extends NetSDKLib.SdkStructure{
+
+
+    public int                        dwSize;                     	// 结构体大小
+    public int                        nPassPopulation;            	// 正向通过人数
+    public int                        nMetalAlarmPopulation;          // 正向触发金属报警人数
+    public int                        nReversePassPopulation;         // 反向通过人数
+    public int                        nReverseMetalAlarmPopulation;   // 反向触发金属报警人数
+    public long                        nTempNormalPopulation;          // 体温正常人数
+    public long                        nTempAlarmPopulation;           // 体温异常人数
+
+    public NET_OUT_GET_POPULATION_STATISTICS(){
+        this.dwSize=this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..bf94e45
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetPrivacyMasking 输出参数
+ * @date 2022/07/21 16:59:51
+ */
+public class NET_OUT_GET_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 总共有多少个遮档块
+	 */
+	public int nTotal;
+	/**
+	 * 隐私遮挡块信息
+	 */
+	public NET_PRIVACY_MASKING_INFO[] stuPrivacyMaskingInfo = new NET_PRIVACY_MASKING_INFO[24];
+	/**
+	 * 返回的隐私遮挡数组数量
+	 */
+	public int nPrivacyMasking;
+
+	public NET_OUT_GET_PRIVACY_MASKING() {
+		for (int i = 0; i < stuPrivacyMaskingInfo.length; i++) {
+			stuPrivacyMaskingInfo[i] = new NET_PRIVACY_MASKING_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..96ef7a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetPrivacyMaskingEnable 输出参数
+ * @date 2022/07/21 17:15:41
+ */
+public class NET_OUT_GET_PRIVACY_MASKING_ENABLE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * true 开 false 关
+	 */
+	public int bEnable;
+
+	public NET_OUT_GET_PRIVACY_MASKING_ENABLE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..e9010bd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 获取标定后的冲洗信息,出参
+ * @since : Created in 2021/11/29 10:47
+ */
+
+public class NET_OUT_GET_PTZ_WASH_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 冲洗信息
+     */
+    public NET_PTZ_WASH_INFO stuWashInfo = new NET_PTZ_WASH_INFO();
+
+    public NET_OUT_GET_PTZ_WASH_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java
new file mode 100644
index 0000000..c3689a2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_REAL_PREVIEW_CHANNEL.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PREVIEW_CHANNEL_NUM;
+
+/**
+ * 获取真实预览通道号 出参 {@link NetSDKLib#CLIENT_GetRealPreviewChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/18 10:00
+ */
+public class NET_OUT_GET_REAL_PREVIEW_CHANNEL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 通道数量
+     */
+    public int nChannelNum;
+    /**
+     * 通道号
+     */
+    public int[] nChannel = new int[MAX_PREVIEW_CHANNEL_NUM];
+
+    public NET_OUT_GET_REAL_PREVIEW_CHANNEL() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java
new file mode 100644
index 0000000..44ee6b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RECORD_STATE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取录像状态 出参 {@link NetSDKLib#CLIENT_GetRecordState}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/13 20:32
+ */
+public class NET_OUT_GET_RECORD_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 是否在录像 0 否 1 是
+     */
+    public int bState;
+
+    public NET_OUT_GET_RECORD_STATE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java
new file mode 100644
index 0000000..64f868b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_INFO.java
@@ -0,0 +1,84 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscRunningInfo 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_GET_RUNNING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	/**
+	 * // bit0:运行状态 // bit1:控制方式 // bit2:车道功能状态 // bit3:车道/匝道控制状态信息 //bit4:当前信号方案色步信息 // bit5: 下一个周期信号方案色步信息
+	 */
+	public int dwReportState;
+
+	/**
+	 * 经度个数
+	 */
+	public int nLongitudeNum;
+
+	/**
+	 * 经度,格式:度,分,秒(秒为浮点数)
+	 */
+	public double[] dbLongitude = new double[3];
+
+	/**
+	 * 纬度个数
+	 */
+	public int nLatitudeNum;
+
+	/**
+	 * 纬度,格式:度,分,秒(秒为浮点数)
+	 */
+	public double[] dbLatitude = new double[3];
+
+	/**
+	 * 高度,单位为米
+	 */
+	public double dbAltitude;
+
+	/**
+	 * 事件发生时间,带时区偏差的UTC时间,单位秒
+	 */
+	public NET_TIME_EX UTC;
+
+	/**
+	 * 设备状态, { @link EM_STATUS }
+	 */
+	public int emStatus;
+
+	/**
+	 * 控制模式
+	 */
+	public int emControlMode;
+
+	/**
+	 * 车道功能状态
+	 */
+	public LANE_STATE stuLaneStateInfo;
+
+	/**
+	 * 车道/匝道控制状态
+	 */
+	public LANE_CTRL_STATE stuLaneCtrlStateInfo;
+
+	/**
+	 * 当前信号方案色步信息
+	 */
+	public CUR_STEP_INFO stuCurStepInfo;
+
+	/**
+	 * 下一个周期信号方案色步信息
+	 */
+	public NEXT_STEP_INFO stuNextStepInfo;
+
+	public NET_OUT_GET_RUNNING_INFO() {
+		this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java
new file mode 100644
index 0000000..c0f5bc5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_RUNNING_MODE.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetRtscRunningMode 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_GET_RUNNING_MODE extends NetSDKLib.SdkStructure{
+	  /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  平台下发运行模式:
+     *    0x01 //定时模式
+     *    0xfb //关灯模式 
+     *    0xfc //全红模式 
+     *    0xfd //区域自适应模式
+     *    0xfe //感应模式	   
+     *    0xff //黄闪模式	
+     *    0xf6 //实时控制模式	
+     *    0xf2 //单点自适应模式	
+     *    0xf8 //红闪模式	
+     *    0xf9 //绿闪模式
+     */
+    public int nMode;
+
+
+    public NET_OUT_GET_RUNNING_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java
new file mode 100644
index 0000000..ec83285
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_SMOKE_DATA.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetSmokeData 出参
+ * @date 2022/10/17 13:45:23
+ */
+public class NET_OUT_GET_SMOKE_DATA extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 温度值
+	 */
+	public float ftemperatureData;
+	/**
+	 * 温度单位 ,参考 NetSDKLib.NET_TEMPERATURE_UNIT
+	 */
+	public int emTemperatureUnit;
+	/**
+	 * 湿度值,单位%RH
+	 */
+	public int nHumidityData;
+	/**
+	 * 一氧化碳浓度 单位:ppm
+	 */
+	public int nCOData;
+	/**
+	 * 甲烷浓度, 单位:%LEL
+	 */
+	public float nCH4Data;
+
+	public NET_OUT_GET_SMOKE_DATA() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_STATEMANAGER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_STATEMANAGER_INFO.java
new file mode 100644
index 0000000..d3ba7e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_STATEMANAGER_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_GetStateManager 接口出参
+ * @date 2023/05/11 14:18:50
+ */
+public class NET_OUT_GET_STATEMANAGER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * 返回的状态信息,需要用户申请内存,与入参枚举对应,详见EM_STATEMANAGER_STATE枚举说明
+	 */
+	public Pointer pStateInfo;
+
+	public NET_OUT_GET_STATEMANAGER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java
new file mode 100644
index 0000000..e31c062
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_TEMPERATUREEX.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_FaceBoard_GetTemperatureEx的出参
+ * @date 2022/05/12 16:32:08
+ */
+public class NET_OUT_GET_TEMPERATUREEX extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 返回的有效温度监测点的个数,num>1时,对应emTemperatureType为ALL
+	 */
+	public int nRetMonitorPointNum;
+	/**
+	 * 监测点温度
+	 */
+	public NET_TEMPERATUREEX_VALUE[] stuTemperatureEx = new NET_TEMPERATUREEX_VALUE[NetSDKLib.MAX_TEMPERATUREEX_POINT_NUM];
+
+	public NET_OUT_GET_TEMPERATUREEX() {
+		for (int i = 0; i < stuTemperatureEx.length; i++) {
+			stuTemperatureEx[i] = new NET_TEMPERATUREEX_VALUE();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java
new file mode 100644
index 0000000..43268e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VAULTDOOR_STATE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   CLIENT_GetVaultDoorState 的输出参数 
+* @date 2022/08/10 11:46:30
+*/
+public class NET_OUT_GET_VAULTDOOR_STATE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+锁状态 {@link com.netsdk.lib.enumeration.EM_VAULT_LOCKSTATE}
+*/
+public			int					emLockState;
+/** 
+门状态 {@link com.netsdk.lib.enumeration.EM_VAULT_DOORSTATE}
+*/
+public			int					emDoorState;
+
+public NET_OUT_GET_VAULTDOOR_STATE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java
new file mode 100644
index 0000000..2946eeb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VIDEOSTAT_HEATMAP.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 获取热图数据接口出参
+ * @date 2020/9/21
+ */
+public class NET_OUT_GET_VIDEOSTAT_HEATMAP extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询的Token
+     */
+    public int nToken;
+    public NET_OUT_GET_VIDEOSTAT_HEATMAP(){
+        this.dwSize=size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VTO_MANAGER_RELATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VTO_MANAGER_RELATION.java
new file mode 100644
index 0000000..eeeb78d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_VTO_MANAGER_RELATION.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetVTOManagerRelation 出参
+ * @origin autoTool
+ * @date 2023/10/19 14:16:47
+ */
+public class NET_OUT_GET_VTO_MANAGER_RELATION extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * / 是否查询完成
+	 */
+	public int bIsCompleted;
+	/**
+	 * / 设备组织树节点信息个数
+	 */
+	public int nNodesNum;
+	/**
+	 * / 设备组织树节点信息
+	 */
+	public NET_VTO_DEV_NODE_INFO[] stuNodes = new NET_VTO_DEV_NODE_INFO[128];
+
+	public NET_OUT_GET_VTO_MANAGER_RELATION() {
+		for (int i = 0; i < stuNodes.length; i++) {
+			stuNodes[i] = new NET_VTO_DEV_NODE_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..4de776f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_GetXRayMultiLevelDetectCFG 的输出参数 
+* @date 2022/12/01 16:22:06
+*/
+public class NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+安全等级信息
+*/
+public			NET_XRAY_MULTILEVEL_DETECT_CFG_INFO					stuInfo=new NET_XRAY_MULTILEVEL_DETECT_CFG_INFO();
+
+public NET_OUT_GET_XRAY_MULTILEVEL_DETECT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ZONE_ARMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ZONE_ARMODE_INFO.java
new file mode 100644
index 0000000..52424d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GET_ZONE_ARMODE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetZoneArmMode 接口出参 
+* @origin autoTool
+* @date 2023/08/09 11:16:07
+*/
+public class NET_OUT_GET_ZONE_ARMODE_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+布撤防模式数组有效个数(第二维)
+*/
+public			int					nStateNum;
+/** 
+布撤防模式:1."T":Total布防/外出布防模式 2."D" 撤防
+*/
+public			byte[]					szState=new byte[256*32];
+
+public			NET_OUT_GET_ZONE_ARMODE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java
new file mode 100644
index 0000000..fbd9886
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_GOTO_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_GotoPrivacyMasking 输出参数
+ * @date 2022/07/21 17:20:00
+ */
+public class NET_OUT_GOTO_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_GOTO_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_INSERT_MULTI_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_INSERT_MULTI_TALK_DEV.java
new file mode 100644
index 0000000..587f08a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_INSERT_MULTI_TALK_DEV.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_InsertMultiTalkDev 出参
+ * @origin autoTool
+ * @date 2023/10/26 09:34:53
+ */
+public class NET_OUT_INSERT_MULTI_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 下发失败数量
+     */
+    public int nFailCount;
+    /**
+     * / 信息个数
+     */
+    public int nFailCodesNum;
+    /**
+     * / 详细的失败信息, 0表示失败, 1表示成功
+     */
+    public int[] nFailCodes = new int[128];
+
+    public NET_OUT_INSERT_MULTI_TALK_DEV() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java
new file mode 100644
index 0000000..b151b8e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_FIND_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_IVSEventFind接口出参 
+* @date 2022/11/02 13:48:02
+*/
+public class NET_OUT_IVSEVENT_FIND_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+查询到结果总数
+*/
+public			int					dwCount;
+
+public NET_OUT_IVSEVENT_FIND_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java
new file mode 100644
index 0000000..f6948a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_IVSEVENT_NEXTFIND_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  CLIENT_IVSEventNextFind接口出参 
+* @date 2022/11/02 13:51:15
+*/
+public class NET_OUT_IVSEVENT_NEXTFIND_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+pstuEventInfo的个数, 等于 NET_IN_IVSEVENT_NEXTFIND_INFO 的nLimit字段
+*/
+public			int					dwEventCnt;
+/** 
+事件信息数组,用户分配内存,大小为sizeof(NET_IVSEVENT_EVENT_INFO)*dwEventCnt
+*/
+public Pointer pstuEventInfo;
+/** 
+返回的pstuEventInfo个数
+*/
+public			int					dwRetEventCnt;
+
+public NET_OUT_IVSEVENT_NEXTFIND_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_LIGHTINGCONTROL_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_LIGHTINGCONTROL_CAPS.java
new file mode 100644
index 0000000..b5e40d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_LIGHTINGCONTROL_CAPS.java
@@ -0,0 +1,109 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 获取补光灯能力出参(对应 : NET_LIGHTINGCONTROL_CAPS)
+ * @origin autoTool
+ * @date 2023/10/19 17:27:54
+ */
+public class NET_OUT_LIGHTINGCONTROL_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * /结构体大小
+     */
+    public int dwSize;
+    /**
+     * /是否支持灯光控制
+     */
+    public int bSupport;
+    /**
+     * /支持的灯光配置版本 {@link com.netsdk.lib.enumeration.EM_LC_CONFIG_VERSION}
+     */
+    public int emConfigVersion;
+    /**
+     * /灯光类型 {@link com.netsdk.lib.enumeration.EM_LC_LIGHT_TYPE}
+     */
+    public int emLightType;
+    /**
+     * /复合灯光类型
+     */
+    public int[] anLightTypeComplex = new int[3];
+    /**
+     * /复合灯光类型数量
+     */
+    public int nLightTypeComplexLen;
+    /**
+     * /近光灯组数量
+     */
+    public int nNearLightNumber;
+    /**
+     * /中光灯组数量
+     */
+    public int nMiddleLightNumber;
+    /**
+     * /远光灯组数量
+     */
+    public int nFarLightNumber;
+    /**
+     * /默认支持的模式 {@link com.netsdk.lib.enumeration.EM_LC_MODE}
+     */
+    public int emDefaultMode;
+    /**
+     * /支持的模式类型
+     */
+    public int[] anModes = new int[20];
+    /**
+     * /支持的模式数量
+     */
+    public int nModesLen;
+    /**
+     * /复合灯模式信息
+     */
+    public NET_MODES_COMPLEX_LIGHT stuModesComplex = new NET_MODES_COMPLEX_LIGHT();
+    /**
+     * /灯光组信息
+     */
+    public NET_LIGHT_TYPE_COMPLEX_DETAIL stuLightTypeComplexDetail = new NET_LIGHT_TYPE_COMPLEX_DETAIL();
+    /**
+     * /云台联动灯光信息
+     */
+    public NET_LINKING_DETAIL stuLinkingDetail = new NET_LINKING_DETAIL();
+    /**
+     * /灯光组功率控制掩码
+     */
+    public int[] anPower = new int[3];
+    /**
+     * /灯光组激光角度控制掩码
+     */
+    public int[] anAngleControl = new int[3];
+    /**
+     * /灯光补偿信息
+     */
+    public NET_CORRECTION stuCorrection = new NET_CORRECTION();
+    /**
+     * /灯光灵敏度信息
+     */
+    public NET_SENSITIVITY stuSensitivity = new NET_SENSITIVITY();
+    /**
+     * /是否支持激光灯光轴调节
+     */
+    public int bSupportLaserLightMove;
+    /**
+     * /定时模式支持的时间段数量
+     */
+    public int nLightingTimeSectionNum;
+    /**
+     * /是否支持分时配置
+     */
+    public int bSupportByTime;
+    /**
+     * /是否支持复合灯模式信息
+     */
+    public int bSupportModesComplex;
+
+    public NET_OUT_LIGHTINGCONTROL_CAPS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MAKE_TOKEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MAKE_TOKEN.java
new file mode 100644
index 0000000..4f8f520
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MAKE_TOKEN.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   获取token出参 
+* @date 2022/10/12 11:10:49
+*/
+public class NET_OUT_MAKE_TOKEN extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+Token
+*/
+public			int					nToken;
+
+public			NET_OUT_MAKE_TOKEN(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MANUAL_TEST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MANUAL_TEST.java
new file mode 100644
index 0000000..8a281d1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MANUAL_TEST.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ManualTest 接口输出参数
+ * @date 2023/03/16 08:53:12
+ */
+public class NET_OUT_MANUAL_TEST extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 结果 1:测试成功,结果同步返回 2:发送测试请求成功,结果异步返回 3:测试失败
+	 */
+	public int nTestResult;
+
+	public NET_OUT_MANUAL_TEST() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..4b4df77
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MINI_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 订阅mini雷达的报警点信息出参(对应接口 CLIENT_AttachMiniRadarAlarmPointInfo)
+ * @date 2022/08/04 16:59:37
+ */
+public class NET_OUT_MINI_RADAR_ALARMPOINTINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 订阅的SID
+     */
+    public int nSID;
+
+    public NET_OUT_MINI_RADAR_ALARMPOINTINFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java
new file mode 100644
index 0000000..968adab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ModifyAlarmUser 接口输出参数
+ * @date 2023/03/16 10:58:19
+ */
+public class NET_OUT_MODIFY_ALARM_USER extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_MODIFY_ALARM_USER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java
new file mode 100644
index 0000000..e3e8e92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_ALARM_USER_PASSWORD.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_ModifyAlarmUserPassword 接口输出参数
+ * @date 2023/03/16 11:01:56
+ */
+public class NET_OUT_MODIFY_ALARM_USER_PASSWORD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_MODIFY_ALARM_USER_PASSWORD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_COURSE.java
new file mode 100644
index 0000000..4c3e2ce
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_COURSE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 修改课程记录 出参指针 {@link NetSDKLib#CLIENT_ModifyCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 16:42
+ */
+public class NET_OUT_MODIFY_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 修改的课程ID数量
+     */
+    public int nResultIDNum;
+    /**
+     * 修改的课程ID; 原ID: 修改成功, -1: 数据库中无此记录, -2: 时间冲突
+     */
+    public int[] nResultID = new int[64];
+
+    public NET_OUT_MODIFY_COURSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..6ff0385
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_ModifyGroupForVehicleRegisterDB 接口输出参数
+ * @date 2022/10/21 17:32
+ */
+public class NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           		dwSize;							// 结构体大小
+    public NET_OUT_MODIFY_GROUP_FOR_VEHICLE_REG_DB(){
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..6536833
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_PARKINGRECORD_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 修改停车记录信息 出参
+ * 接口 {@link NetSDKLib#CLIENT_ModifyParkingRecord}
+ * 入参 {@link NET_IN_MODIFY_PARKINGRECORD_INFO}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:06
+ */
+public class NET_OUT_MODIFY_PARKINGRECORD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_MODIFY_PARKINGRECORD_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..030e12e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_ModifyVehicleForVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:26
+ */
+public class NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public  int                           		dwSize;							// 结构体大小
+
+    public NET_OUT_MODIFY_VEHICLE_FOR_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java
new file mode 100644
index 0000000..5951fff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_COLL_SCHD.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.NET_MAX_COLLECTION_NUM;
+
+/**
+ * 获取预案时间表 出参 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:35
+ */
+public class NET_OUT_MONITORWALL_GET_COLL_SCHD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 预案数
+     */
+    public int nCollectionNum;
+    /**
+     * 预案时间表
+     */
+    public MONITORWALL_COLLECTION_SCHEDULE[] stuCollShedule = new MONITORWALL_COLLECTION_SCHEDULE[NET_MAX_COLLECTION_NUM];
+
+    public NET_OUT_MONITORWALL_GET_COLL_SCHD() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCollShedule.length; i++) {
+            stuCollShedule[i] = new MONITORWALL_COLLECTION_SCHEDULE();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java
new file mode 100644
index 0000000..640a8e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_GET_ENABLE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_MONITORWALL_NUM;
+
+/**
+ * 电视墙获取使能 出参
+ * 对应入参 {@link NET_IN_MONITORWALL_GET_ENABLE}
+ * 对应枚举 {@link NET_MONITORWALL_OPERATE_TYPE#NET_MONITORWALL_OPERATE_GET_ENABLE}
+ * 对应接口 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:16
+ */
+public class NET_OUT_MONITORWALL_GET_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 电视墙数量
+     */
+    public int nMonitorWallNum;
+    /**
+     * 电视墙使能
+     */
+    public NET_MONITORWALL_ENABLE_INFO[] stuEnable = new NET_MONITORWALL_ENABLE_INFO[NET_MAX_MONITORWALL_NUM];
+
+    public NET_OUT_MONITORWALL_GET_ENABLE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuEnable.length; i++) {
+            stuEnable[i] = new NET_MONITORWALL_ENABLE_INFO();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java
new file mode 100644
index 0000000..1193b0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_COLL_SCHD.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置预案时间表 出参 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 10:42
+ */
+public class NET_OUT_MONITORWALL_SET_COLL_SCHD extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_MONITORWALL_SET_COLL_SCHD() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java
new file mode 100644
index 0000000..aeb9afe
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MONITORWALL_SET_ENABLE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_MONITORWALL_OPERATE_TYPE;
+
+/**
+ * 电视墙设置使能 出参
+ * 对应入参 {@link NET_IN_MONITORWALL_SET_ENABLE}
+ * 对应枚举 {@link NET_MONITORWALL_OPERATE_TYPE#NET_MONITORWALL_OPERATE_SET_ENABLE}
+ * 对应接口 {@link NetSDKLib#CLIENT_OperateMonitorWall}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 11:30
+ */
+public class NET_OUT_MONITORWALL_SET_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_MONITORWALL_SET_ENABLE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java
new file mode 100644
index 0000000..886bbdb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_CLOSE_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 关闭主从式跟踪器实例出参
+ * @date 2022/09/14 14:04:38
+ */
+public class NET_OUT_MSGROUP_CLOSE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_MSGROUP_CLOSE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java
new file mode 100644
index 0000000..e94feed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_LOCATE_INTO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 联动主从跟踪组出参
+ * @date 2022/09/14 13:56:26
+ */
+public class NET_OUT_MSGROUP_LOCATE_INTO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 联动到球机上的绝对坐标
+	 */
+	public short[] snPTZ = new short[3];
+
+	public NET_OUT_MSGROUP_LOCATE_INTO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java
new file mode 100644
index 0000000..e04c167
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_OPEN_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 打开主从跟踪组出参
+ * @date 2022/09/14 13:52:58
+ */
+public class NET_OUT_MSGROUP_OPEN_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 主从跟踪组句柄
+	 */
+	public int dwToken;
+
+	public NET_OUT_MSGROUP_OPEN_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java
new file mode 100644
index 0000000..17fc071
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_RECTLOCATE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 主动跟踪主操作命令, EM_MSGROUP_OPERATE_RECTLOCATE 出参
+ * @date 2022/09/14 14:06:16
+ */
+public class NET_OUT_MSGROUP_RECTLOCATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 联动到球机上的绝对坐标
+	 */
+	public int[] nPTZ = new int[3];
+
+	public NET_OUT_MSGROUP_RECTLOCATE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
new file mode 100644
index 0000000..7ab42e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description EM_MSGROUP_OPERATE_SLAVE_POSITION_TO_MASTER 出参
+ * @date 2022/09/14 14:09:33
+ */
+public class NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 从机画面上的物体坐标在主机画面上的位置,8192坐标系
+	 */
+	public NetSDKLib.NET_RECT stuRect = new NetSDKLib.NET_RECT();
+
+	public NET_OUT_MSGROUP_SLAVE_POSITION_TO_MASTER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java
new file mode 100644
index 0000000..c679528
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MSGROUP_TRACK_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 手动选定目标跟踪出参
+ * @date 2022/09/14 14:02:06
+ */
+public class NET_OUT_MSGROUP_TRACK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_MSGROUP_TRACK_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java
new file mode 100644
index 0000000..1ff2b91
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTIFACE_DETECT_STATE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachDetectMultiFaceState 接口输出参数
+ * @date 2022/11/21 17:53:13
+ */
+public class NET_OUT_MULTIFACE_DETECT_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 此结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_MULTIFACE_DETECT_STATE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..0ffbd87
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Memory;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_MultiAppendToVehicleRegisterDB 接口输出参数
+ * @date 2021/8/17 15:15
+ */
+public class NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB extends NetSDKLib.SdkStructure {
+    public  int                           			dwSize;							// 结构体大小
+    public int nErrCodeNum;                	// 错误码个数
+    public int nRetErrCodeNum;                	// 返回的错误码数量
+    /** {@link com.netsdk.lib.enumeration.EM_VEHICLE_REG_DB_OPERATOR_ERRCODE} */
+    public Pointer emErrCode=new Memory(1000*4);              	// 错误码信息  要求:实现VehicleRegisterDB.multiAppend +vehicle object[1000] 数组定1000
+    // public int[]  		emErrCode=new int[1000];
+        public NET_OUT_MULTI_APPEND_TO_VEHICLE_REG_DB(){
+            this.dwSize=this.size();
+        }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java
new file mode 100644
index 0000000..8463d6c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_MultiAppendToWorkSuitCompareGroup 接口输出参数
+ * @date 2022/10/08 19:50:19
+ */
+public class NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 工装合规导入返回的错误码个数
+	 */
+	public int nErrCodeNum;
+	/**
+	 * 工装合规导入返回的错误码信息,参考枚举{ @link EM_WORKSUIT_APPEND_ERRCODE }
+	 */
+	public int[] emErrCode = new int[1000];
+
+	public NET_OUT_MULTI_APPEND_TO_WORKSUIT_GROUP() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java
new file mode 100644
index 0000000..a630b63
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NAS_DIRECTORY_GET_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_NASDirectoryGetInfo接口出参 
+* @date 2022/09/22 17:28:03
+*/
+public class NET_OUT_NAS_DIRECTORY_GET_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+剩余空间, 单位MB
+*/
+public			int					nFreeSpace;
+/** 
+总空间, 单位MB
+*/
+public			int					nTotalSpace;
+/** 
+NAS状态 {@link com.netsdk.lib.enumeration.EM_NAS_STATE_TYPE}
+*/
+public			int					emState;
+
+public NET_OUT_NAS_DIRECTORY_GET_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java
new file mode 100644
index 0000000..01307a0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_GET_MOBILE_INTERFACE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description EM_PRC_NETAPP_TYPE_GET_MOBILE_INTERFACE 出参
+ * @date 2021/9/17
+ */
+public class NET_OUT_NETAPP_GET_MOBILE_INTERFACE extends NetSDKLib.SdkStructure{
+	/**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     *  网络接口有效个数
+     */
+    public int nInterfaceNum;
+
+    /**
+     *  移动网络接口信息
+     */
+    public NETDEV_NETINTERFACE_INFO[] stuInterface = (NETDEV_NETINTERFACE_INFO[]) new NETDEV_NETINTERFACE_INFO().toArray(64);
+    public NET_OUT_NETAPP_GET_MOBILE_INTERFACE(){
+        this.dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_LINK_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_LINK_STATUS.java
new file mode 100644
index 0000000..a63c7d6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_LINK_STATUS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryNetStat接口,查询类型为NET_APP_LINK_STAT 时的输出参数(获取物理链路状态) 
+* @origin autoTool
+* @date 2023/06/19 09:29:25
+*/
+public class NET_OUT_NETAPP_LINK_STATUS extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+是否正在工作
+*/
+public			int					bWorking;
+/** 
+IP是否冲突
+*/
+public			int					bIPConflict;
+
+public NET_OUT_NETAPP_LINK_STATUS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_NET_DATA_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_NET_DATA_STAT.java
new file mode 100644
index 0000000..d59d9de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_NETAPP_NET_DATA_STAT.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryNetStat接口,查询类型为NET_APP_DATA_STAT时的输出参数(获取协议栈统计数据) 
+* @origin autoTool
+* @date 2023/06/19 09:24:47
+*/
+public class NET_OUT_NETAPP_NET_DATA_STAT extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+接收相关统计数据,意义与ifconfig同
+*/
+public			NET_NETAPP_RECEIVE_STAT					stuReceiveStat=new NET_NETAPP_RECEIVE_STAT();
+/** 
+传输相关统计数据,意义与ifconfig同
+*/
+public			NET_NETAPP_TRANSMIT_STAT					stuTransmitStat=new NET_NETAPP_TRANSMIT_STAT();
+/** 
+网卡速度,单位Mbps
+*/
+public			int					nSpeed;
+
+public NET_OUT_NETAPP_NET_DATA_STAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java
new file mode 100644
index 0000000..301288e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PERSON_INFO_INPUT_RESULT.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * CLIENT_SetPersonInfoInputResult 输出参数
+ */
+public class NET_OUT_PERSON_INFO_INPUT_RESULT extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_PERSON_INFO_INPUT_RESULT() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java
new file mode 100644
index 0000000..24ef32e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PRE_UPLOAD_REMOTE_FILE.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_PreUploadRemoteFile(NetSDKLib.LLong, NET_IN_PRE_UPLOAD_REMOTE_FILE, NET_OUT_PRE_UPLOAD_REMOTE_FILE, int)} 接口输出参数(设置文件长度)
+ * @date 2020/6/10
+ */
+public class NET_OUT_PRE_UPLOAD_REMOTE_FILE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int               dwSize;
+    /**
+     * 标志是否继续上传该文件, true:上传 false:不上传
+     */
+    public boolean           bContinue2Upload;
+    /**
+     * 错误原因, 当bContinue2Upload为false时emType有效,错误原因请参考{@link com.netsdk.lib.enumeration.EM_REASON_TYPE}
+     */
+    public int               emType;
+    public NET_OUT_PRE_UPLOAD_REMOTE_FILE(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java
new file mode 100644
index 0000000..e306113
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_CENTER_GPS.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_CENTER_GPS 类型接口输出参数 
+* @date 2022/05/18 10:44:49
+*/
+public class NET_OUT_PTZBASE_GET_CENTER_GPS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+经度,单位:度,正为东经,负为西经,取值范围[-180,180]
+*/
+public			double					dLongitude;
+/** 
+纬度,单位:度,正为北纬,负为南纬,取值范围[-90,90]
+*/
+public			double					dLatitude;
+
+public NET_OUT_PTZBASE_GET_CENTER_GPS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java
new file mode 100644
index 0000000..c928663
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_HFOV_VALUE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_HFOV_VALUE 类型接口输出参数 
+* @date 2022/05/18 10:25:12
+*/
+public class NET_OUT_PTZBASE_GET_HFOV_VALUE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+对应倍率水平视场角,单位0.01度,扩大100倍表示
+*/
+public			int					nValue;
+/** 
+镜头最小水平视场角,单位同nValue
+*/
+public			int					nMinValue;
+/** 
+镜头最大水平视场角,单位同nValue
+*/
+public			int					nMaxValue;
+
+public NET_OUT_PTZBASE_GET_HFOV_VALUE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java
new file mode 100644
index 0000000..4144afa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZBASE_GET_VFOV_VALUE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_QueryDevInfo NET_QUERY_PTZBASE_GET_VFOV_VALUE 类型接口输出参数 
+* @date 2022/05/18 10:38:46
+*/
+public class NET_OUT_PTZBASE_GET_VFOV_VALUE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+对应倍率垂直视场角,单位0.01度,扩大100倍表示
+*/
+public			int					nValue;
+/** 
+镜头最小垂直视场角,单位同nValue
+*/
+public			int					nMinValue;
+/** 
+镜头最大垂直视场角,单位同nValue
+*/
+public			int					nMaxValue;
+
+public NET_OUT_PTZBASE_GET_VFOV_VALUE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java
new file mode 100644
index 0000000..9f786c1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_CURRENT_FOV_VALUE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo NET_QUERY_PTZ_CURRENT_FOV_VALUE 类型接口输入参数
+ * @date 2022/09/22 15:28:55
+ */
+public class NET_OUT_PTZ_CURRENT_FOV_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 当前倍率水平视场角单位0.01度,扩大100倍表示
+	 */
+	public int nValue;
+	/**
+	 * 镜头最小水平视场角单位同nValue
+	 */
+	public int nMinValue;
+	/**
+	 * 镜头最大水平视场角单位同nValue
+	 */
+	public int nMaxValue;
+
+	public NET_OUT_PTZ_CURRENT_FOV_VALUE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_SET_ZOOM_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_SET_ZOOM_VALUE.java
new file mode 100644
index 0000000..980158a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_SET_ZOOM_VALUE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_PTZSetZoomValue 接口输出参数
+ * @origin autoTool
+ * @date 2023/10/16 14:11:22
+ */
+public class NET_OUT_PTZ_SET_ZOOM_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 *  结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_PTZ_SET_ZOOM_VALUE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java
new file mode 100644
index 0000000..6613467
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_STATUS_PROC.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 订阅云台元数据接口输输出参数
+ * @date 2021/02/26
+ */
+public class NET_OUT_PTZ_STATUS_PROC extends NetSDKLib.SdkStructure{
+	 /**
+     * dwSize;
+     */
+    public int dwSize;
+    public NET_OUT_PTZ_STATUS_PROC(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_ZOOM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_ZOOM_INFO.java
new file mode 100644
index 0000000..98d8960
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PTZ_ZOOM_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取云台光学变倍信息,对应命令 NET_DEVSTATE_PTZ_ZOOM_INFO
+ * @origin autoTool
+ * @date 2023/10/16 14:16:51
+ */
+public class NET_OUT_PTZ_ZOOM_INFO extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 *  光学变倍值
+	 */
+	public int nZoomValue;
+
+	public NET_OUT_PTZ_ZOOM_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
new file mode 100644
index 0000000..4694079
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_PushAnalysePictureFileByRule 接口输出参数 
+* @date 2022/06/28 19:02:52
+*/
+public class NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_PUSH_ANALYSE_PICTURE_FILE_BYRULE(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERYNEXTLOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERYNEXTLOG.java
new file mode 100644
index 0000000..0492ef5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERYNEXTLOG.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryNextLog 输出参数
+ * @date 2023/06/12 09:23:55
+ */
+public class NET_OUT_QUERYNEXTLOG extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 用户指定分配结构体个数,需大于等于NET_IN_GETNEXTLOG的nGetCount
+	 */
+	public int nMaxCount;
+	/**
+	 * 返回日志信息,缓存大小由用户指定,大小为nMaxCount*sizeof(NET_LOG_INFO)
+	 */
+	public Pointer pstuLogInfo;
+	/**
+	 * 实际返回日志条数
+	 */
+	public int nRetCount;
+
+	public NET_OUT_QUERYNEXTLOG() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE.java
new file mode 100644
index 0000000..a3de0d0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 查询课程 入参 {@link NetSDKLib#CLIENT_QueryCourse}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 21:12
+ */
+public class NET_OUT_QUERY_COURSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查找到的个数
+     */
+    public int nCountResult;
+    /**
+     * 查询的课程信息结果
+     */
+    public NET_COURSE_RESULT[] stuCourseResult = new NET_COURSE_RESULT[64];
+
+    public NET_OUT_QUERY_COURSE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCourseResult.length; i++) {
+            stuCourseResult[i] = new NET_COURSE_RESULT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java
new file mode 100644
index 0000000..a8a4344
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 查询课程视频信息出参 {@link NetSDKLib#CLIENT_DoQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:49
+ */
+public class NET_OUT_QUERY_COURSEMEDIA_FILE extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询到的个数
+     */
+    public int nCountResult;
+    /**
+     * 视频信息
+     */
+    public NET_COURSEMEDIA_FILE_INFO[] stuCourseMediaFile = new NET_COURSEMEDIA_FILE_INFO[64];
+
+    public NET_OUT_QUERY_COURSEMEDIA_FILE() {
+        dwSize = this.size();
+        for (int i = 0; i < stuCourseMediaFile.length; i++) {
+            stuCourseMediaFile[i] = new NET_COURSEMEDIA_FILE_INFO();
+        }
+    }
+
+    @Override
+    public int fieldOffset(String name) {
+        return super.fieldOffset(name);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java
new file mode 100644
index 0000000..2f41561
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILECLOSE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 关闭课程视频查询出参 {@link NetSDKLib#CLIENT_CloseQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 19:06
+ */
+public class NET_OUT_QUERY_COURSEMEDIA_FILECLOSE extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_QUERY_COURSEMEDIA_FILECLOSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java
new file mode 100644
index 0000000..da0e137
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSEMEDIA_FILEOPEN.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 开始查询课程视频信息出参 {@link NetSDKLib#CLIENT_OpenQueryCourseMediaFile}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:35
+ */
+public class NET_OUT_QUERY_COURSEMEDIA_FILEOPEN extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询到的总个数
+     */
+    public int ntotalNum;
+    /**
+     * 查询ID号
+     */
+    public int nfindID;
+
+    public NET_OUT_QUERY_COURSEMEDIA_FILEOPEN() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java
new file mode 100644
index 0000000..613f385
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_CLOSE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 结束查询课程 出参 {@link NetSDKLib#CLIENT_QueryCourseClose}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 21:27
+ */
+public class NET_OUT_QUERY_COURSE_CLOSE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_QUERY_COURSE_CLOSE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java
new file mode 100644
index 0000000..c25a23b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_QUERY_COURSE_OPEN.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 开始查询课程 出参 {@link NetSDKLib#CLIENT_QueryCourseOpen}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/17 20:47
+ */
+public class NET_OUT_QUERY_COURSE_OPEN extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 查询到的总个数
+     */
+    public int nTotalNum;
+    /**
+     * 查询的句柄号
+     */
+    public int nFindID;
+
+    public NET_OUT_QUERY_COURSE_OPEN() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java
new file mode 100644
index 0000000..238016b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_ALARMPOINTINFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 订阅雷达的报警点信息出参(对应接口 CLIENT_AttachRadarAlarmPointInfo)
+ * @date 2022/08/04 10:13:33
+ */
+public class NET_OUT_RADAR_ALARMPOINTINFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_RADAR_ALARMPOINTINFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java
new file mode 100644
index 0000000..5c58872
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_CALCULATEREALSIZE.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 计算图片对应的地图实际长度出参(对应 EM_RADAR_OPERATE_TYPE_CALCULATEREALSIZE)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_OUT_RADAR_CALCULATEREALSIZE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 实际地图的高度,单位米(实际长度扩大100倍表示)
+     */
+    public int nRealMapLength;
+    /**
+     * 实际地图的宽度,单位米(实际宽度扩大100倍表示)
+     */
+    public int nRealMapWidth;
+
+    public NET_OUT_RADAR_CALCULATEREALSIZE() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java
new file mode 100644
index 0000000..bc5fbd7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETCAPS.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_RADAR_GETCAPS_AREASUB_TYPE;
+import com.netsdk.lib.enumeration.EM_RADAR_GETCAPS_RADAR_TYPE;
+
+/**
+ * @author 260611
+ * @description 获取雷达能力出参(对应 EM_RADAR_OPERATE_TYPE_GETCAPS)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_OUT_RADAR_GETCAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 雷达探测距离,实际距离扩大100倍,单位米
+     */
+    public int nDetectionRange;
+    /**
+     * 雷达探测角度,实际角度扩大100倍,单位度
+     */
+    public int nDetectionAngle;
+    /**
+     * 雷达人探测距离,实际距离扩大100倍,单位米
+     */
+    public int nDetectionHuman;
+    /**
+     * 下列扩展能力是否有效(老设备不支持获取下列能力,从而无法用于判断是否支持下列能力)
+     */
+    public int bExValid;
+    /**
+     * 雷达功率配置能力
+     */
+    public NET_RADAR_CAPACITY_CAP stuCapacityCap = new NET_RADAR_CAPACITY_CAP();
+    /**
+     * 雷达场景配置能力
+     */
+    public NET_RADAR_SCENE_CAP stuSceneCap = new NET_RADAR_SCENE_CAP();
+    /**
+     * 雷达信道配置能力
+     */
+    public NET_RADAR_CHANNEL_CAP stuChannelCap = new NET_RADAR_CHANNEL_CAP();
+    /**
+     * 雷达场景变更能力
+     */
+    public NET_RADAR_MOVEDDETECT_CAP stuMovedDetectCap = new NET_RADAR_MOVEDDETECT_CAP();
+    /**
+     * 雷达控制盒支持的协议能力
+     */
+    public NET_RADAR_PROTOCAL_CAP stuProtocalCap = new NET_RADAR_PROTOCAL_CAP();
+    /**
+     * 雷达探测范围形状 {@link com.netsdk.lib.enumeration.EM_RADAR_GETCAPS_AREASUB_TYPE}
+     */
+    public int emAreaSubType;
+    /**
+     * 雷达类型 {@link com.netsdk.lib.enumeration.EM_RADAR_GETCAPS_RADAR_TYPE}
+     */
+    public int emRadarType;
+
+    public NET_OUT_RADAR_GETCAPS() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java
new file mode 100644
index 0000000..b37f04b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GETSTATUS.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_RADAR_STATUS;
+
+/**
+ * @author 260611
+ * @description 获取雷达状态出参(对应 EM_RADAR_OPERATE_TYPE_GETSTATUS)
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_OUT_RADAR_GETSTATUS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 雷达状态 {@link com.netsdk.lib.enumeration.EM_RADAR_STATUS}
+     */
+    public int emRadarStatus;
+
+    public NET_OUT_RADAR_GETSTATUS() {
+        this.dwSize = this.size();
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java
new file mode 100644
index 0000000..7b65f90
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_GET_RFID_MODE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_GetRadarRFIDMode接口出参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_OUT_RADAR_GET_RFID_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * RFID规则模式,0:设备单独工作时使用,全部为有效卡;1:平台接入时使用,区分RFID卡片有效性
+     */
+    public int nMode;
+
+    public NET_OUT_RADAR_GET_RFID_MODE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java
new file mode 100644
index 0000000..4751eb5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_MANUAL_TRACK.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_RadarManualTrack接口出参
+ * @date 2021/10/22 9:03
+ */
+public class NET_OUT_RADAR_MANUAL_TRACK extends NetSDKLib.SdkStructure {
+	/** 结构体大小 */
+	public int dwSize;
+
+	/** 返回被跟踪轨迹对应的球机ip */
+	public byte[] szSDIP = new byte[32];
+	
+	/**返回被跟踪目标的一个全局唯一id */
+	public int nEventID;
+
+	/** 字节对齐 **/
+	public int[] szReserved = new int[4];
+
+	/** 联动目标唯一id;(多雷达情况下也是唯一) char数组的第1-12位: 是设备的MAC地址; 13-23位 : 是时间; 23-28位 :是随机数; 29-32位 :是目标id,即TrackID字段 **/
+	public byte[] szTargetUUID = new byte[32];
+
+	public NET_OUT_RADAR_MANUAL_TRACK() {
+		this.dwSize = this.size();
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java
new file mode 100644
index 0000000..c637b0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SETCALIBRATION.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷球校准配置出参(对应 EM_RADAR_OPERATE_TYPE_SETCALIBRATION)
+ * @date 2022/08/04 10:13:33
+ */
+public class NET_OUT_RADAR_SETCALIBRATION extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_RADAR_SETCALIBRATION() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java
new file mode 100644
index 0000000..45a92d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_SET_RFID_MODE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : CLIENT_SetRadarRFIDMode接口出参
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_OUT_RADAR_SET_RFID_MODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_RADAR_SET_RFID_MODE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java
new file mode 100644
index 0000000..75f2412
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADAR_STARTUPGRADE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达开始升级通知出参(对应 EM_RADAR_OPERATE_TYPE_STARTUPGRADE)
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_OUT_RADAR_STARTUPGRADE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_RADAR_STARTUPGRADE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
new file mode 100644
index 0000000..5751cd7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  冷(最低的温度)、热(最高的温度)点信息 
+* @origin autoTool
+* @date 2023/08/07 13:51:18
+*/
+public class NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO extends NetSDKLib.SdkStructure {
+
+public			int					dwSize;
+/** 
+热成像当前冷(最低的温度)、热(最高的温度)点信息
+*/
+public			NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO					stuCurrentHotColdSpotInfo=new NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO();
+
+public			NET_OUT_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java
new file mode 100644
index 0000000..a47ef9a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOTE_SLEEP.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_RemoteSleep 输出接口参数
+ * @date 2022/3/24 14:00
+ */
+public class NET_OUT_REMOTE_SLEEP extends NetSDKLib.SdkStructure{
+public int dwSize;                    // 结构体大小
+public NET_OUT_REMOTE_SLEEP(){
+        this.dwSize=this.size();
+        }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO.java
new file mode 100644
index 0000000..cb9c19d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 接口 CLIENT_RemoveTourPoint 的输出参数
+ * @origin autoTool
+ * @date 2023/10/16 19:46:41
+ */
+public class NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 此结构体大小,必须赋值
+     */
+    public int dwSize;
+
+    public NET_OUT_REMOVE_SOFT_TOUR_POINT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..df2e6e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCADA_GET_ATTRIBUTE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+public class NET_OUT_SCADA_GET_ATTRIBUTE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  用户最大申请缓存个数
+     */
+    public int nMaxAttributeInfoNum;
+
+    /**
+     *  设备点位信息(内存由用户申请) NET_ATTRIBUTE_INFO
+     */
+    public Pointer pstuAttributeInfo;
+
+    /**
+     *  返回点位信息个数
+     */
+    public int nRetAttributeInfoNum;
+
+    public NET_OUT_SCADA_GET_ATTRIBUTE_INFO(){
+        this.dwSize = this.size();
+    }
+
+    @Override
+    public String toString() {
+        return "NET_OUT_SCADA_GET_ATTRIBUTE_INFO{" +
+                "dwSize=" + dwSize +
+                ", nMaxAttributeInfoNum=" + nMaxAttributeInfoNum +
+                ", pstuAttributeInfo=" + pstuAttributeInfo +
+                ", nRetAttributeInfoNum=" + nRetAttributeInfoNum +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java
new file mode 100644
index 0000000..06653f5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETCAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 获取景物点支持的能力
+ * 入参(CLIENT_ScenicSpotGetCaps 输入参数)
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotGetCaps}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 16:30
+ */
+public class NET_OUT_SCENICSPOT_GETCAPS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 能力集信息
+     */
+    public NET_SCENICSPOT_CAPS_INFO stuCaps;
+
+    public NET_OUT_SCENICSPOT_GETCAPS_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java
new file mode 100644
index 0000000..b41c3e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.MAX_SCENICSPOT_POINTS_NUM;
+
+/**
+ * 分页获取 信息标注信息列表 出参
+ * 入参 {@link NET_IN_SCENICSPOT_GETPOINTINFOS_INFO}
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotGetPointInfos}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 15:41
+ */
+public class NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 设备总共多少个景物点信息
+     */
+    public int nTotal;
+    /**
+     * 当前获取到景物点个数
+     */
+    public int nRetSceneNum;
+    /**
+     * 数组长度等于limit,最后一组查询可能小于limit
+     */
+    public POINTINFOS[] stuPointInfos = new POINTINFOS[MAX_SCENICSPOT_POINTS_NUM];
+
+    public NET_OUT_SCENICSPOT_GETPOINTINFOS_INFO() {
+        dwSize = this.size();
+        for (int i = 0; i < stuPointInfos.length; i++) {
+            stuPointInfos[i] = new POINTINFOS();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java
new file mode 100644
index 0000000..65cd464
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_SETPOINTINFO_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置景物点,原编号的景物点将会被覆盖 出参 入参 {@link NET_IN_SCENICSPOT_SETPOINTINFO_INFO} 接口
+ * {@link NetSDKLib#CLIENT_ScenicSpotSetPointInfo}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 16:14
+ */
+public class NET_OUT_SCENICSPOT_SETPOINTINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 标签同步通道有效个数
+	 */
+	public int nSyncToChannelNum;
+	/**
+	 * 标签同步通道
+	 */
+	public short[] nSyncToChannels = new short[16];
+
+	public NET_OUT_SCENICSPOT_SETPOINTINFO_INFO() {
+		dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java
new file mode 100644
index 0000000..992a56c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SCENICSPOT_TURNTOPOINT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 以景物标注点为中心,进行三维定位的 出参
+ * 入参 {@link NET_IN_SCENICSPOT_TURNTOPOINT_INFO}
+ * 接口 {@link NetSDKLib#CLIENT_ScenicSpotTurnToPoint}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 17:29
+ */
+public class NET_OUT_SCENICSPOT_TURNTOPOINT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SCENICSPOT_TURNTOPOINT_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
new file mode 100644
index 0000000..2b2134a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:47
+ *  CLIENT_SecurityGateAttachAlarmStatistics 输出结构体
+ */
+public class NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS extends  NetSDKLib.SdkStructure{
+    public int		dwSize;// 赋值为结构体大小
+
+    public NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_2DCODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_2DCODE.java
new file mode 100644
index 0000000..13b0fb9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_2DCODE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_Set2DCode(NetSDKLib.LLong, Pointer, Pointer, int)}的出参
+ * @date 2020/9/10
+ */
+public class NET_OUT_SET_2DCODE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_2DCODE() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ALARMMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ALARMMODE.java
new file mode 100644
index 0000000..39fe3f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ALARMMODE.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 设置布防模式
+ *              输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_ARMMODE
+ * @date 2023/03/15 16:26:00
+ */
+public class NET_OUT_SET_ALARMMODE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 布防结果 0:成功 1:失败
+	 */
+	public int nArmResult;
+	/**
+	 * 布防失败的区域个数
+	 */
+	public int nFailedAreaRet;
+	/**
+	 * 布防失败的细节
+	 */
+	public ARM_FAILED_DETAIL[] stuFailedDetail = new ARM_FAILED_DETAIL[8];
+	/**
+	 * 布防失败个数, 最大值为64
+	 */
+	public int nFailedDetailNum;
+	/**
+	 * 布防失败的细节扩展字段 布防个数大于8个使用此字段,指针对应结构体{ @link ARM_FAILED_DETAIL_EX}数组
+	 */
+	public Pointer pstuFailedDetailEx;
+	/**
+	 * 异常设备信息个数
+	 */
+	public int nDeviceFaultNum;
+	/**
+	 * 设备异常信息,最大支持256个
+	 */
+	public NET_DEVICE_FAULT_INFO[] stuDeviceFault = new NET_DEVICE_FAULT_INFO[256];
+
+	public NET_OUT_SET_ALARMMODE() {
+		for (int i = 0; i < stuFailedDetail.length; i++) {
+			stuFailedDetail[i] = new ARM_FAILED_DETAIL();
+		}
+		for (int i = 0; i < stuDeviceFault.length; i++) {
+			stuDeviceFault[i] = new NET_DEVICE_FAULT_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java
new file mode 100644
index 0000000..78bed0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BACKUP_MODE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscBackupMode 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_SET_BACKUP_MODE extends NetSDKLib.SdkStructure{
+	 /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    /**
+     *  备份模式设置错误码。参考枚举{ @link EM_BACKUP_ERROR_CODE }
+     */
+    public int emBackUpErrCode;
+
+    public NET_OUT_SET_BACKUP_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BIND_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BIND_MODE_INFO.java
new file mode 100644
index 0000000..4558a14
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BIND_MODE_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetBindMode 接口出参
+ * @origin autoTool
+ * @date 2023/09/15 10:59:47
+ */
+public class NET_OUT_SET_BIND_MODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_BIND_MODE_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java
new file mode 100644
index 0000000..b3eb07b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BLIND_REAL_CHANNEL.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置逻辑通道号和真实通道号的绑定关系出参 ,对应接口{@link NetSDKLib#CLIENT_SetBlindRealChannel}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:12
+ */
+public class NET_OUT_SET_BLIND_REAL_CHANNEL extends NetSDKLib.SdkStructure {
+    public int dwSize;
+
+    public NET_OUT_SET_BLIND_REAL_CHANNEL() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java
new file mode 100644
index 0000000..a8e7552
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_BYPASSMODE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设置旁路状态
+ *              输出参数,此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_BYPASSMODE
+ * @date 2023/03/15 16:34:13
+ */
+public class NET_OUT_SET_BYPASSMODE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_BYPASSMODE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CALIBRATEINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CALIBRATEINFO_INFO.java
new file mode 100644
index 0000000..3d2dcc3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CALIBRATEINFO_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设置标定点信息出参
+ * @date 2023/05/24 10:24:52
+ */
+public class NET_OUT_SET_CALIBRATEINFO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_CALIBRATEINFO_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java
new file mode 100644
index 0000000..5c685b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CAMERA_CFG.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_SetCameraCfg}的出参
+ * @date 2020/11/06
+ */
+public class NET_OUT_SET_CAMERA_CFG extends NetSDKLib.SdkStructure{
+	
+	// 结构体大小
+	public int dwSize;	   
+
+    public NET_OUT_SET_CAMERA_CFG() {
+	   this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java
new file mode 100644
index 0000000..83565ac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CHANNEL_CFG.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description {@link NetSDKLib#CLIENT_SetChannelCfg}的出参
+ * @date 2020/11/07
+ */
+public class NET_OUT_SET_CHANNEL_CFG extends NetSDKLib.SdkStructure {
+
+	// 结构体大小
+	public int dwSize;
+
+	public NET_OUT_SET_CHANNEL_CFG() {
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java
new file mode 100644
index 0000000..25dd0af
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_CONSUME_RESULT.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description CLIENT_SetConsumeResult 输出结构体
+* @date 2022/03/07 17:37:19
+*/
+public class NET_OUT_SET_CONSUME_RESULT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_SET_CONSUME_RESULT(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java
new file mode 100644
index 0000000..d823f46
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_MODE.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置录像模式出参,对应接口{@link NetSDKLib#CLIENT_SetCourseRecordMode }
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 15:44
+ */
+public class NET_OUT_SET_COURSE_RECORD_MODE extends NetSDKLib.SdkStructure {
+    public int dwSize;
+
+    public NET_OUT_SET_COURSE_RECORD_MODE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java
new file mode 100644
index 0000000..f272b86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_COURSE_RECORD_STATE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 开启/关闭指定通道录像出参 {@link NetSDKLib#CLIENT_SetCourseRecordState}
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:16
+ */
+public class NET_OUT_SET_COURSE_RECORD_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 该结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_COURSE_RECORD_STATE() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
new file mode 100644
index 0000000..414c2f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockCommunicationKey 接口出参 
+* @date 2022/06/23 10:17:41
+*/
+public class NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE}
+*/
+public			int					emErrorCode;
+
+public NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
new file mode 100644
index 0000000..52499dd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockOpenKey 接口出参 
+* @date 2022/06/23 10:21:41
+*/
+public class NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE}
+*/
+public			int					emErrorCode;
+
+public NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
new file mode 100644
index 0000000..c470320
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockOpenCode 接口出参 
+* @date 2022/06/23 10:29:54
+*/
+public class NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE}
+*/
+public			int					emErrorCode;
+
+public NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
new file mode 100644
index 0000000..4a1d583
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetDynamicLockTempUserID 接口出参 
+* @date 2022/06/23 10:26:05
+*/
+public class NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE}
+*/
+public			int					emErrorCode;
+
+public NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java
new file mode 100644
index 0000000..a0a2a25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_EXAM_RECORDING_PLANS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_SetExamRecordingPlans 接口出参 
+* @date 2022/05/16 20:42:53
+*/
+public class NET_OUT_SET_EXAM_RECORDING_PLANS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_SET_EXAM_RECORDING_PLANS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java
new file mode 100644
index 0000000..7355e46
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_GLOBAL_PARAMETER.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscGlobalParam 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_SET_GLOBAL_PARAMETER extends NetSDKLib.SdkStructure{
+    /**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_GLOBAL_PARAMETER(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java
new file mode 100644
index 0000000..9759fa7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_OUTPUT_STATE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设置输出状态输出参数。此时CLIENT_SetAlarmRegionInfo的emType参数为NET_EM_SET_ALARMREGION_INFO_OUTPUTSTATE
+ * @date 2023/03/15 16:49:41
+ */
+public class NET_OUT_SET_OUTPUT_STATE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_OUTPUT_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java
new file mode 100644
index 0000000..9019129
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGRULE_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 设置停车规则接口,CLIENT_SetParkingRule 出参
+ * @date 2021/05/28
+ */
+public class NET_OUT_SET_PARKINGRULE_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	
+	public NET_OUT_SET_PARKINGRULE_INFO() {
+		this.dwSize = this.size();
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java
new file mode 100644
index 0000000..ca6680b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARKINGSPACE_STATE_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 设置停车车位状态 出参
+ * 接口 {@link NetSDKLib#CLIENT_SetParkingSpaceState}
+ * 入参 {@link NET_IN_SET_PARKINGSPACE_STATE_INFO}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 13:34
+ */
+public class NET_OUT_SET_PARKINGSPACE_STATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_PARKINGSPACE_STATE_INFO() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java
new file mode 100644
index 0000000..a2e3644
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PARK_CONTROL_INFO.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_OUT_SET_PARK_CONTROL_INFO  extends SdkStructure{
+	/**
+	 * 结构体大小
+	 */
+	public int					dwSize;					 
+
+	public NET_OUT_SET_PARK_CONTROL_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java
new file mode 100644
index 0000000..92b3cf0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_POLLING_CONFIG.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  平台下发轮询配置出参 
+* @date 2022/07/04 10:58:54
+*/
+public class NET_OUT_SET_POLLING_CONFIG extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_SET_POLLING_CONFIG(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java
new file mode 100644
index 0000000..fd49c13
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetPrivacyMasking 输出参数
+ * @date 2022/07/21 17:12:29
+ */
+public class NET_OUT_SET_PRIVACY_MASKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_PRIVACY_MASKING() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java
new file mode 100644
index 0000000..54bada7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PRIVACY_MASKING_ENABLE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetPrivacyMaskingEnable 输出参数
+ * @date 2022/07/21 17:14:02
+ */
+public class NET_OUT_SET_PRIVACY_MASKING_ENABLE extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_PRIVACY_MASKING_ENABLE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java
new file mode 100644
index 0000000..81ad440
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_PTZ_WASH_POSISTION_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 标定球机和蓄水池污点位置,出参
+ * @since : Created in 2021/11/29 10:47
+ */
+
+public class NET_OUT_SET_PTZ_WASH_POSISTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_PTZ_WASH_POSISTION_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java
new file mode 100644
index 0000000..145f63f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_RUNNING_MODE.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetRtscRunningMode 接口输出参数
+ * @date 2021/09/28
+ */
+public class NET_OUT_SET_RUNNING_MODE extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SET_RUNNING_MODE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_STATEMANAGER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_STATEMANAGER_INFO.java
new file mode 100644
index 0000000..83bfb11
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_STATEMANAGER_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_SetStateManager 接口出参
+ * @date 2023/05/11 14:19:51
+ */
+public class NET_OUT_SET_STATEMANAGER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+
+	public NET_OUT_SET_STATEMANAGER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java
new file mode 100644
index 0000000..a27ccc4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_TRANSMITTUNNEL_PARAM.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_SetTransmitTunnelParam 接口输出参数
+*/
+public class NET_OUT_SET_TRANSMITTUNNEL_PARAM extends NetSDKLib.SdkStructure {
+/** 
+/<  结构体大小
+*/
+public			int					dwSize;
+
+    public NET_OUT_SET_TRANSMITTUNNEL_PARAM(){
+        this.dwSize=this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_VTO_MANAGER_RELATION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_VTO_MANAGER_RELATION.java
new file mode 100644
index 0000000..ca29df8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_VTO_MANAGER_RELATION.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetVTOManagerRelation 出参
+ * @origin autoTool
+ * @date 2023/10/19 14:16:46
+ */
+public class NET_OUT_SET_VTO_MANAGER_RELATION extends NetSDKLib.SdkStructure {
+	/**
+	 * / 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * / 接口返回结果为0时成功
+	 */
+	public int nErrorCode;
+
+	public NET_OUT_SET_VTO_MANAGER_RELATION() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java
new file mode 100644
index 0000000..f5e6040
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口 CLIENT_SetXRayMultiLevelDetectCFG 的输出参数 
+* @date 2022/12/01 17:26:25
+*/
+public class NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public NET_OUT_SET_XRAY_MULTILEVEL_DETECT_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ZONE_ARMODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ZONE_ARMODE_INFO.java
new file mode 100644
index 0000000..72b4409
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SET_ZONE_ARMODE_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetZoneArmMode 接口出参, 仅接口失败时下列参数有效
+ * @origin autoTool
+ * @date 2023/08/10 09:52:29
+ */
+public class NET_OUT_SET_ZONE_ARMODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 布防结果,0: 成功,1: 失败
+	 */
+	public int nArmResult;
+	/**
+	 * 失败详情数组有效个数
+	 */
+	public int nAreaAbnormalNum;
+	/**
+	 * 设备异常信息数组有效个数
+	 */
+	public int nDeviceFaultNum;
+	/**
+	 * 失败详情实际返回有效个数
+	 */
+	public int nAreaAbnormalRetNum;
+	/**
+	 * 错误码
+	 */
+	public int nCode;
+	/**
+	 * 失败详情,需由用户申请,申请内存大小为sizeof(NET_AREA_ABNORMAL_INFO)*nAreaAbnormalNum, refer to
+	 * {@link NET_AREA_ABNORMAL_INFO}
+	 */
+	public Pointer pstuAreaAbnormal;
+	/**
+	 * 设备异常信息
+	 */
+	public NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO[] stuDeviceFault = new NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO[64];
+	/**
+	 * 错误说明
+	 */
+	public byte[] szMessage = new byte[256];
+
+	public NET_OUT_SET_ZONE_ARMODE_INFO() {
+		for (int i = 0; i < stuDeviceFault.length; i++) {
+			stuDeviceFault[i] = new NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java
new file mode 100644
index 0000000..6f1c75d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SMOKE_REMOTE_REBOOT_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SmokeRemoteReboot 出参
+ * @date 2022/07/26 10:52:50
+ */
+public class NET_OUT_SMOKE_REMOTE_REBOOT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_SMOKE_REMOTE_REBOOT_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java
new file mode 100644
index 0000000..515c0a7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SNAP_BY_EVENT.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 按照事件类型抓图 出参
+ * 接口 {@link NetSDKLib#CLIENT_SnapPictureByEvent}
+ * 入参 {@link NET_IN_SNAP_BY_EVENT}
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 17:29
+ */
+public class NET_OUT_SNAP_BY_EVENT extends NetSDKLib.SdkStructure {
+    /**
+     * 本结构体大小, 初始化时必须填写
+     */
+    public int dwSize;
+
+    public NET_OUT_SNAP_BY_EVENT() {
+        dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java
new file mode 100644
index 0000000..10ceab8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_GET_OSD_EX.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetSplitOSDEx 接口输出参数(获取解码窗口输出OSD信息)
+ * @date 2022/06/22 20:38:56
+ */
+public class NET_OUT_SPLIT_GET_OSD_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * OSD数量
+     */
+    public int nOSDNum;
+    /**
+     * OSD信息
+     */
+    public NET_SPLIT_OSD[] stuOSD = new NET_SPLIT_OSD[256];
+
+    public NET_OUT_SPLIT_GET_OSD_EX() {
+        for (int i = 0; i < stuOSD.length; i++) {
+            stuOSD[i] = new NET_SPLIT_OSD();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java
new file mode 100644
index 0000000..448a22b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_HIGHLIGHT.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设置源边框高亮使能开关输出参数
+ * @date 2022/06/22 09:56:20
+ */
+public class NET_OUT_SPLIT_SET_HIGHLIGHT extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+
+    public NET_OUT_SPLIT_SET_HIGHLIGHT() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java
new file mode 100644
index 0000000..8bf52ad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_SPLIT_SET_OSD_EX.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetSplitOSDEx 接口输出参数(设置解码窗口输出OSD信息)
+ * @date 2022/06/22 09:56:20
+ */
+public class NET_OUT_SPLIT_SET_OSD_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+
+    public NET_OUT_SPLIT_SET_OSD_EX() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java
new file mode 100644
index 0000000..c8bb963
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_StartMultiFindFaceRecognitionEx 接口输出参数
+ * @date 2022/11/21 17:53:19
+ */
+public class NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 返回的符合查询条件的记录个数
+     * -1表示总条数未生成,要推迟获取
+     * 使用CLIENT_AttachFaceFindState接口状态
+     */
+    public int nTotalCount;
+    /**
+     * 查询句柄
+     */
+    public NetSDKLib.LLong lFindHandle;
+    /**
+     * 获取到的查询令牌
+     */
+    public int nToken;
+    /**
+     * 结果详细信息的个数, 最大值为64
+     */
+    public int nCountDetailNum;
+    /**
+     * 结果详细信息
+     */
+    public NET_COUNT_DETAIL_INFO[] stuCountDetail = new NET_COUNT_DETAIL_INFO[64];
+
+    public NET_OUT_STARTMULTIFIND_FACERECONGNITION_EX() {
+        for (int i = 0; i < stuCountDetail.length; i++) {
+            stuCountDetail[i] = new NET_COUNT_DETAIL_INFO();
+        }
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java
new file mode 100644
index 0000000..5bd87e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STARTSERACH_DEVICE.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_OUT_STARTSERACH_DEVICE extends NetSDKLib.SdkStructure {
+
+	/**
+	 *  结构体大小
+	 */
+	public 	int                   dwSize;							
+	
+	public NET_OUT_STARTSERACH_DEVICE()
+	    {
+	     this.dwSize = this.size();
+	    }// 此结构体大小
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java
new file mode 100644
index 0000000..d4d4771
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * CLIENT_StartBackupTask接口输入参数
+ * {@link NetSDKLib#CLIENT_StartBackupTask}
+ */
+public class NET_OUT_START_BACKUP_TASK_INFO extends SdkStructure{
+	
+	public int               dwSize;
+	
+	public NET_OUT_START_BACKUP_TASK_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java
new file mode 100644
index 0000000..64c430b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_BACKUP_TASK_SESSION.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * 
+ * @author 119178
+ * CLIENT_StartBackupTaskSession 接口输出参数
+ * {@link NetSDKLib#CLIENT_StartBackupTaskSession}
+ */
+public class NET_OUT_START_BACKUP_TASK_SESSION extends SdkStructure{
+	
+	public int               dwSize;
+	
+	public NET_OUT_START_BACKUP_TASK_SESSION(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java
new file mode 100644
index 0000000..012c32e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_DETAIL_CLUSTER.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_StartFindDetailNumberStatCluster 的输出参数
+ * @date 2022/10/09 14:05:56
+ */
+public class NET_OUT_START_FIND_DETAIL_CLUSTER extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+	/**
+	 * 取到的查询令牌
+	 */
+	public int nToken;
+	/**
+	 * 记录总数
+	 */
+	public int nCount;
+	/**
+	 * 查询该天的营业开始时间
+	 */
+	public NET_TIME_EX stuClusterBeginTime = new NET_TIME_EX();
+	/**
+	 * 查询该天的营业结束时间
+	 */
+	public NET_TIME_EX stuClusterEndTime = new NET_TIME_EX();
+
+	public NET_OUT_START_FIND_DETAIL_CLUSTER() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..c11d04d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  CLIENT_StartFindVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:46
+ */
+public class NET_OUT_START_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+
+    public 	int                           		dwSize;							// 结构体大小
+    public int nToken;						// 取到的查询令牌
+    public 	int										nTotalCount;					// 符合此次查询条件的结果总条数
+
+    public NET_OUT_START_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..e092a37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_StartFindWaterDataStatServer 输出参数 
+* @date 2022/08/22 17:14:16
+*/
+public class NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+取到的查询令牌
+*/
+public			int					nToken;
+/** 
+符合此次查询条件的结果总条数
+*/
+public			int					nTotalCount;
+
+public NET_OUT_START_FIND_WATERDATA_STAT_SERVER_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_QUERYLOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_QUERYLOG.java
new file mode 100644
index 0000000..efdb440
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_QUERYLOG.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_StartQueryLog 输出参数
+ * @date 2023/06/12 09:21:42
+ */
+public class NET_OUT_START_QUERYLOG extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+
+	public NET_OUT_START_QUERYLOG() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java
new file mode 100644
index 0000000..2930629
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_SUBLINK_LISTEN_SERVER.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_StartSubLinkListenServer 接口输出参数
+*/
+public class NET_OUT_START_SUBLINK_LISTEN_SERVER extends NetSDKLib.SdkStructure {
+/** 
+/<  结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_START_SUBLINK_LISTEN_SERVER(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_TALK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_TALK_INFO.java
new file mode 100644
index 0000000..d00b858
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_START_TALK_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_StartTalkByDataType接口 出参
+ * @date 2021/12/29
+ */
+public class NET_OUT_START_TALK_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+
+    public NET_OUT_START_TALK_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java
new file mode 100644
index 0000000..ceb7670
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接口 CLIENT_StopFindDetailNumberStatCluster 的输出参数
+ * @date 2022/10/09 14:22:23
+ */
+public class NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 此结构体大小,必须赋值
+	 */
+	public int dwSize;
+
+	public NET_OUT_STOP_FIND_DETAIL_CLUSTER_INFO() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java
new file mode 100644
index 0000000..bf7f499
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_VEHICLE_REG_DB.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_StopFindVehicleRegisterDB 接口输出参数
+ * @date 2022/10/22 10:58
+ */
+public class NET_OUT_STOP_FIND_VEHICLE_REG_DB extends NetSDKLib.SdkStructure{
+    public int                           		dwSize;							// 结构体大小
+
+    public NET_OUT_STOP_FIND_VEHICLE_REG_DB(){
+        dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..b7e7be8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_StopFindWaterDataStatServer 输出参数 
+* @date 2022/08/23 10:34:25
+*/
+public class NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+
+public NET_OUT_STOP_FIND_WATERDATA_STAT_SERVER_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java
new file mode 100644
index 0000000..f028c91
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_STORAGE_DEV_INFOS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * CLIENT_QueryDevInfo , NET_QUERY_DEV_STORAGE_INFOS接口输出参数
+ * @author 29779
+ */
+public class NET_OUT_STORAGE_DEV_INFOS extends NetSDKLib.SdkStructure {	
+    public int                		dwSize;
+    public int                 		nDevInfosNum;  // 获取到设备的存储模块信息列表
+    public NET_STORAGE_DEVICE[] 	stuStoregeDevInfos = new NET_STORAGE_DEVICE[128];// 设备信息列表,DH_STORAGE_DEVICE的dwsize需赋值
+	
+	public NET_OUT_STORAGE_DEV_INFOS() {				
+		this.dwSize = this.size();		
+		for (int i = 0; i < stuStoregeDevInfos.length; i++) {
+			stuStoregeDevInfos[i] = new NET_STORAGE_DEVICE();
+		}
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java
new file mode 100644
index 0000000..d964324
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_FILE.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_TalkSendDataByFile接口 出参
+ * @date 2021/12/29
+ */
+public class NET_OUT_TALK_SEND_DATA_FILE extends NetSDKLib.SdkStructure{
+	
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+    
+    public NET_OUT_TALK_SEND_DATA_FILE(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java
new file mode 100644
index 0000000..2d8a00e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TALK_SEND_DATA_STREAM.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description CLIENT_TalkSendDataByStream接口 出参
+ * @date 2021/12/29
+ */
+public class NET_OUT_TALK_SEND_DATA_STREAM extends NetSDKLib.SdkStructure{
+	/**
+     *  结构体大小
+     */
+    public int dwSize;
+    
+    public NET_OUT_TALK_SEND_DATA_STREAM(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_ATTACH.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_ATTACH.java
new file mode 100644
index 0000000..0bce143
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_ATTACH.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_AttachThingsInfo接口输出参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_OUT_THINGS_ATTACH extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+
+    public NET_OUT_THINGS_ATTACH() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java
new file mode 100644
index 0000000..9c281cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_DOFIND_HISTORYDATA.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_DoFindThingsHistoryData 输出参数
+ * @date 2022/04/20 10:16:55
+ */
+public class NET_OUT_THINGS_DOFIND_HISTORYDATA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 查询到的数量
+     */
+    public int nCount;
+    /**
+     * 用户分配的pstuHistoryData个数
+     */
+    public int nMaxHisDataNum;
+    /**
+     * 历史数据内容,用户分配内存,大小为 nMaxHisDataNum * sizeof{@link NET_THINGS_HISTORYDATA}
+     */
+    public Pointer pstuHistoryData;
+
+    public NET_OUT_THINGS_DOFIND_HISTORYDATA() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET.java
new file mode 100644
index 0000000..1d0d95f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsConfig 接口输出参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_OUT_THINGS_GET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 产品ID,全网唯一
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID,产品下唯一
+     */
+    public byte[] szDeviceID = new byte[128];
+    /**
+     * 实际返回的pstuGetOutProperInfo个数
+     */
+    public int nRetPropertiesCount;
+    /**
+     * 用户分配的pstuGetOutProperInfo个数
+     */
+    public int nMaxPropertiesCount;
+    /**
+     * 属性值,具体内容由物模型协议决定, Key,Value,ValueType均有效
+     * 用户分配内存,大小为sizeof{@link NET_PROPERTIES_INFO}*nMaxPropertiesCount
+     */
+    public Pointer pstuGetOutProperInfo;
+
+    public NET_OUT_THINGS_GET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java
new file mode 100644
index 0000000..160da5c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_CAPS.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsCaps接口输出参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_OUT_THINGS_GET_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 用户分配的pstuGetCapsProperName个数
+     */
+    public int nMaxProperCount;
+    /**
+     * 实际返回的pstuGetCapsProperName个数
+     */
+    public int nRetProperCount;
+    /**
+     * 物模型标识符,用户分配内存,大小为sizeof{@link NET_PROPERTIES_NAME}*nMaxProperCount
+     */
+    public Pointer pstuGetCapsProperName;
+
+    public NET_OUT_THINGS_GET_CAPS() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java
new file mode 100644
index 0000000..b43ba48
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_DEVLIST.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsDevList接口输出参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_OUT_THINGS_GET_DEVLIST extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 用户分配的pstuDevListInfo个数
+     */
+    public int nMaxDevListCount;
+    /**
+     * 实际返回的pstuDevListInfo个数
+     */
+    public int nRetDevListCount;
+    /**
+     * 设备列表信息,用户分配内存,大小为sizeof{@link NET_THINGS_DEVLIST_INFO}*nMaxDevListCount
+     */
+    public Pointer pstuDevListInfo;
+
+    public NET_OUT_THINGS_GET_DEVLIST() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java
new file mode 100644
index 0000000..bb3bb31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_GET_NETSTATE.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_GetThingsNetState接口输出参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_OUT_THINGS_GET_NETSTATE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 设备连接状态 {@link com.netsdk.lib.enumeration.EM_THINGS_CONNECT_STATE}
+     */
+    public int emConnectState;
+
+    public NET_OUT_THINGS_GET_NETSTATE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java
new file mode 100644
index 0000000..a1e4823
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDDEVICE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 添加设备输出参数(对应 EM_THINGS_SERVICE_TYPE_ADDDEVICE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_OUT_THINGS_SERVICE_ADDDEVICE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_ADDDEVICE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java
new file mode 100644
index 0000000..4c7bff2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ADDRULE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 添加联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ADDRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_OUT_THINGS_SERVICE_ADDRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 规则ID
+     */
+    public byte[] szRuleID = new byte[256];
+
+    public NET_OUT_THINGS_SERVICE_ADDRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java
new file mode 100644
index 0000000..cb78d2a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHFIND.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 空开红蓝灯闪烁输出参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHFIND)
+ * @date 2022/04/20 10:50:20
+ */
+public class NET_OUT_THINGS_SERVICE_AIRSWITHFIND extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_AIRSWITHFIND() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java
new file mode 100644
index 0000000..59629d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_AIRSWITHRESET.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 空开恢复出厂设置输出参数(对应 EM_THINGS_SERVICE_TYPE_AIRSWITHRESET)
+ * @date 2022/04/20 10:50:20
+ */
+public class NET_OUT_THINGS_SERVICE_AIRSWITHRESET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_AIRSWITHRESET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java
new file mode 100644
index 0000000..1c170b9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CHARGECLEAR.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 电量清零输出参数(对应 EM_THINGS_SERVICE_TYPE_CHARGECLEAR)
+ * @date 2022/04/20 10:50:18
+ */
+public class NET_OUT_THINGS_SERVICE_CHARGECLEAR extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_CHARGECLEAR() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java
new file mode 100644
index 0000000..acd433b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 获取所有空开当前报警状态输出参数(对应 EM_THINGS_SERVICE_TYPE_CURRENTSTATUSGET)
+ * @date 2022/04/20 10:50:24
+ */
+public class NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 实际返回stuStatus个数
+     */
+    public int nRetStatusNum;
+    /**
+     * 设备状态数据
+     */
+    public NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS[] stuStatus = (NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS[]) new NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS().toArray(64);
+
+    public NET_OUT_THINGS_SERVICE_CURRENTSTATUSGET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java
new file mode 100644
index 0000000..7410075
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELDEVICE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除子设备输出参数(对应 EM_THINGS_SERVICE_TYPE_DELDEVICE)
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_OUT_THINGS_SERVICE_DELDEVICE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_DELDEVICE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java
new file mode 100644
index 0000000..560aa89
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DELRULE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 删除联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_DELRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_OUT_THINGS_SERVICE_DELRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_DELRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java
new file mode 100644
index 0000000..be9a71a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_DEVREPLACE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 子设备替换输出参数(对应 EM_THINGS_SERVICE_TYPE_DEVREPLACE)
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_OUT_THINGS_SERVICE_DEVREPLACE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_DEVREPLACE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java
new file mode 100644
index 0000000..f92a330
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_ENABLE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 使能联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_ENABLERULE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_OUT_THINGS_SERVICE_ENABLE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_ENABLE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java
new file mode 100644
index 0000000..521bed6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOST.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 漏电自检输出参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOST)
+ * @date 2022/04/20 10:50:19
+ */
+public class NET_OUT_THINGS_SERVICE_LEAKCURTPOST extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 检测结果
+     */
+    public int bCheckResult;
+    /**
+     * 失败原因
+     */
+    public byte[] szErrorMsg = new byte[1024];
+
+    public NET_OUT_THINGS_SERVICE_LEAKCURTPOST() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
new file mode 100644
index 0000000..5d1973a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 漏电自检异步输出参数(对应 EM_THINGS_SERVICE_TYPE_LEAKCURTPOSTASYNC)
+ * @date 2022/04/20 10:50:19
+ */
+public class NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 检测结果
+     */
+    public int bCheckResult;
+    /**
+     * 失败原因
+     */
+    public byte[] szErrorMsg = new byte[1024];
+
+    public NET_OUT_THINGS_SERVICE_LEAKCURTPOSTASYNC() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java
new file mode 100644
index 0000000..601641e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_MODRULE.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 修改联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_MODRULE)
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_OUT_THINGS_SERVICE_MODRULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_MODRULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java
new file mode 100644
index 0000000..19dec65
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 离线日志清除输出参数(对应 EM_THINGS_SERVICE_TYPE_OFFLINELOGCLEAN)
+ * @date 2022/04/20 10:50:24
+ */
+public class NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_OFFLINELOGCLEAN() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java
new file mode 100644
index 0000000..7c6e866
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_QUERULE.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 查询联动规则输出参数(对应 EM_THINGS_SERVICE_TYPE_QUERULE)
+ * @date 2022/04/20 10:50:22
+ */
+public class NET_OUT_THINGS_SERVICE_QUERULE extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 页个数
+     */
+    public int nPageCount;
+    /**
+     * 每一页的数据大小
+     */
+    public int nPageSize;
+    /**
+     * 总数
+     */
+    public int nTotal;
+    /**
+     * 按页查询
+     */
+    public int nPage;
+    /**
+     * 实际返回的pstuRules个数
+     */
+    public int nRetRulesNum;
+    /**
+     * 用户分配的pstuRules个数
+     */
+    public int nMaxRulesNum;
+    /**
+     * 规则详情,用户分配内存,大小为 nMaxRulesNum * sizeof{@link NET_THINGS_SERVICE_QUERULE_RULES}
+     */
+    public Pointer pstuRules;
+
+    public NET_OUT_THINGS_SERVICE_QUERULE() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java
new file mode 100644
index 0000000..0db50c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SERVICE_VALVECONTROL.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 闸门控制输出参数(对应 EM_THINGS_SERVICE_TYPE_VALVECONTROL)
+ * @date 2022/04/20 10:50:18
+ */
+public class NET_OUT_THINGS_SERVICE_VALVECONTROL extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 设置结果,实际闸门控制设置成功/失败已该值为准
+     */
+    public int bResult;
+    /**
+     * 物模型协议错误码定义
+     */
+    public int nErrcode;
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[64];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+
+    public NET_OUT_THINGS_SERVICE_VALVECONTROL() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SET.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SET.java
new file mode 100644
index 0000000..85babf1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_SET.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_SetThingsConfig 接口输出参数
+ * @date 2022/04/20 10:16:57
+ */
+public class NET_OUT_THINGS_SET extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+
+    public NET_OUT_THINGS_SET() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java
new file mode 100644
index 0000000..5dc8f01
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_THINGS_START_HISTORYDATA.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description CLIENT_StartThingsHistoryData 输出参数
+ * @date 2022/04/20 10:16:56
+ */
+public class NET_OUT_THINGS_START_HISTORYDATA extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小, 调用者必须初始化该字段
+     */
+    public int dwSize;
+    /**
+     * 符合查询条件的总数
+     */
+    public int dwCount;
+
+    public NET_OUT_THINGS_START_HISTORYDATA() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java
new file mode 100644
index 0000000..f6894e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICDOFINDSTAT.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口(CLIENT_DoFindFluxStat)输出参数 
+* @date 2022/05/07 10:04:12
+*/
+public class NET_OUT_TRAFFICDOFINDSTAT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+统计信息指针
+*/
+public			DH_TRAFFICFLOWSTAT_OUT					stStatInfo=new DH_TRAFFICFLOWSTAT_OUT();
+
+public NET_OUT_TRAFFICDOFINDSTAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java
new file mode 100644
index 0000000..b8b1dbf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFICSTARTFINDSTAT.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  接口(CLIENT_StartFindFluxStat)输出参数 
+* @date 2022/05/07 10:00:48
+*/
+public class NET_OUT_TRAFFICSTARTFINDSTAT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+符合此次查询条件的结果总条数
+*/
+public			int					dwTotalCount;
+
+public NET_OUT_TRAFFICSTARTFINDSTAT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java
new file mode 100644
index 0000000..51ced78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+import com.sun.jna.Structure;
+
+/**
+ * @author 251589
+ * @version V1.0
+ * @Description:
+ * @date 2020/12/14 20:48
+ */
+public class NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO extends NetSDKLib.SdkStructure {
+    public int dwSize;
+    public int nMaxObjectNum;			                // 用户申请目标最大个数
+    public Pointer pObjectInfo;			// 目标信息内存由用户申请 指针对应NET_OBJECT_RADAR_INFO
+    public int nObjectNum;			                	// 获取到目标的个数
+
+    public NET_OUT_TRAFFIC_RADAR_GET_OBJECT_INFO() {
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java
new file mode 100644
index 0000000..efca4ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_RADAR_INFO.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.NET_POINT;
+
+/**
+ * @author 251823
+ * @description 查询智能交通外接雷达信息出参
+ * @date 2020/12/14
+ */
+public class NET_OUT_TRAFFIC_SNAP_RADAR_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 结构体大小
+	 * */
+	public int dwSize;
+	
+	/**
+	 * 设备编号
+	 * */
+	public byte[] szSerialNo = new byte[128];
+	
+	/**
+	 * 生产厂商
+	 * */
+	public byte[] szVendor = new byte[32];
+	
+	/**
+	 * 设备型号 
+	 * */
+	public byte[] szDevType = new byte[32];
+	
+	/**
+	 * 工作状态 { @link EM_TRAFFIC_SNAP_DEVICE_WORK_STATE}
+	 * */
+	public int emWorkState;
+	
+	/**
+	 * 线圈匹配状态{ @link EM_TRAFFIC_SNAP_RADAR_COIL_MATCH_STATE}
+	 * */
+	public int emCoilMatch;
+	
+	/**
+	 * 虚警坐标点信息
+	 * */
+	 public NET_POINT[] stuFakeAlarmPointInfo = (NET_POINT[])new NET_POINT().toArray(64);
+	 	 
+	 /**
+	  * 实际返回虚警点个数
+	  * */
+	 public int nRetFakeAlarmPointNum;
+	 
+	 /**
+	  * 继电器工作次数
+	  * */
+	 public int nRelayWorkCount;
+	 
+	 /**
+	  * 检测汽车状态{ @link EM_TRAFFIC_SNAP_RADAR_DETECT_CAR_STATE}
+	  * */
+	 public int emDetectCarState;
+	 
+	 /**
+	  * 串口号(连接相机的端口号)
+	  * */
+	 public int nCommPort;
+	 
+	 /**
+	  * 保留字节 
+	  * */
+	 public byte[] byReserved = new byte[1020];	 	 
+
+	 public NET_OUT_TRAFFIC_SNAP_RADAR_INFO() {
+		 this.dwSize = this.size();
+	 }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java
new file mode 100644
index 0000000..988f1e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRAFFIC_SNAP_STROBE_INFO.java
@@ -0,0 +1,101 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能交通外接道闸信息出参
+ * @date 2020/12/14
+ */
+public class NET_OUT_TRAFFIC_SNAP_STROBE_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 结构体大小
+	 * */
+	public int dwSize;
+	
+	/**
+	 * 设备编号
+	 * */
+	public byte[] szSerialNo = new byte[128];
+	
+	/**
+	 * 生产厂商
+	 * */
+	public byte[] szVendor = new byte[32];
+	
+	/**
+	 * 设备型号 
+	 * */
+	public byte[] szDevType = new byte[32];
+	
+	/**
+	 * 工作状态 { @link EM_TRAFFIC_SNAP_DEVICE_WORK_STATE}
+	 * */
+	public int emWorkState;
+	
+	/**
+	 * 故障代码{ @link EM_TRAFFIC_SNAP_STROBE_FAULT_CODE_TYPE}
+	 * */
+	public int emFaultCode;
+	
+	/**
+	 * 出厂后开闸运行次数(开闸算一次,关闸不算)	
+	 * */
+	public int nOpenStrobeCount;
+	
+	/**
+	 * 运行状态{ @link EM_TRAFFIC_SNAP_STROBE_RUN_STATE}
+	 * */
+	public int emRunState;
+	
+	/**
+	 * 道闸开关闸原因{ @link EM_TRAFFIC_SNAP_STROBE_ACTION_REASON_TYPE }
+	 * */
+	public int emStrobeActionReason;
+	
+	/**
+	 * 强继电器状态{  @link EM_RELAY_STATE_TYPE	}
+	 * */
+	public int emHeavyCurrentRelayState;
+	
+	/**
+	 * 信号继电器1{  @link EM_RELAY_STATE_TYPE	}
+	 * */
+	public int emSignalRelay1State;
+	
+	/**
+	 * 信号继电器2{  @link EM_RELAY_STATE_TYPE	}
+	 * */
+	public int emSignalRelay2State;
+	
+	/**
+	 * 地感输入信号{ @link EM_TRAFFIC_SNAP_GROUND_SENSE_IN_STATE_TYPE}
+	 * */
+	public int emGroundSenseInState;
+	
+	/**
+	 * 开闸输入状态{ @link EM_TRAFFIC_SNAP_STROBE_IN_STATE_TYPE}
+	 * */
+	public int emStrobeInPutState;
+	
+	/**
+	 * 栏杆状态{ @link EM_TRAFFIC_SNAP_STROBE_RAIL_STATE_TYPE}
+	 * */
+	public int emRailState;
+	
+	/**
+	 * 串口号(连接相机的端口号)
+	 * */
+	public int nCommPort;
+	
+	/**
+	  * 保留字节 
+	  * */
+	public byte[] byReserved = new byte[1020];	 
+	 
+	public NET_OUT_TRAFFIC_SNAP_STROBE_INFO() {
+		  this.dwSize = this.size();
+	}
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java
new file mode 100644
index 0000000..e0649b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSFER_SUBLINK_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+CLIENT_TransferSubLinkInfo 接口输出参数
+*/
+public class NET_OUT_TRANSFER_SUBLINK_INFO extends NetSDKLib.SdkStructure {
+/** 
+/< 结构体大小
+*/
+public			int					dwSize;
+
+public NET_OUT_TRANSFER_SUBLINK_INFO(){
+    this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java
new file mode 100644
index 0000000..a624829
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_TRANSMIT_CMD.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description CLIENT_TransmitCmd 接口输出参数
+ * @date 2023/03/15 21:31:34
+ */
+public class NET_OUT_TRANSMIT_CMD extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 通道号, 范围 0~设备通道数
+	 */
+	public int nChannel;
+	/**
+	 * 协议类型,0 : 整形数组
+	 */
+	public int nHannel;
+	/**
+	 * 返回命令长度
+	 */
+	public int nRetMessageCount;
+	/**
+	 * 用户填写,为pMessage指针所指的数组元素数量
+	 */
+	public int nMaxMessageCount;
+	/**
+	 * 返回值,是一个数组,每个元素为每个字节的整形值,需要用户分配内存空间。指针对应int[]数组
+	 */
+	public Pointer pMessage;
+
+	public NET_OUT_TRANSMIT_CMD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
new file mode 100644
index 0000000..fbb9de0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   获取设备状态出参 
+* @date 2022/09/01 15:11:24
+*/
+public class NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+电源电池相关信息
+*/
+public			NET_DEVSTATUS_POWER_INFO					stuPowerInfo=new NET_DEVSTATUS_POWER_INFO();
+/** 
+网络相关信息
+*/
+public NET_DEVSTATUS_NET_INFO stuNetInfo=new NET_DEVSTATUS_NET_INFO();
+/** 
+主机软件版本
+*/
+public			byte[]					szVersion=new byte[32];
+/** 
+主机防拆状态 {@link com.netsdk.lib.enumeration.NET_EM_TAMPER_STATE}
+*/
+public			int					emTamperState;
+
+public NET_OUT_UNIFIEDINFOCOLLECT_GET_DEVSTATUS(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPDATE_MULTI_TALK_DEV.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPDATE_MULTI_TALK_DEV.java
new file mode 100644
index 0000000..4cf5424
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPDATE_MULTI_TALK_DEV.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_UpdateMultiTalkDev 出参
+ * @origin autoTool
+ * @date 2023/10/26 09:52:01
+ */
+public class NET_OUT_UPDATE_MULTI_TALK_DEV extends NetSDKLib.SdkStructure {
+    /**
+     * / 结构体大小
+     */
+    public int dwSize;
+    /**
+     * / 下发失败数量
+     */
+    public int nFailCount;
+    /**
+     * / 信息个数
+     */
+    public int nFailCodesNum;
+    /**
+     * / 详细的成功/失败信息
+     */
+    public int[] nFailCodes = new int[128];
+
+    public NET_OUT_UPDATE_MULTI_TALK_DEV() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..0933c6f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_UPLOAD_UPPACKING_CHECK_INFO.java
@@ -0,0 +1,17 @@
+ package com.netsdk.lib.structure;
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+  * @author 291189
+  * @version 1.0
+  * @description CLIENT_NET_API BOOL CALL_METHOD CLIENT_UploadUnpackingCheckInfo 出参
+  * @date 2021/9/9
+  */
+
+ public class NET_OUT_UPLOAD_UPPACKING_CHECK_INFO extends NetSDKLib.SdkStructure {
+/** 结构体大小*/
+public			int					dwSize;
+ public NET_OUT_UPLOAD_UPPACKING_CHECK_INFO(){
+  this.dwSize=this.size();
+ }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java
new file mode 100644
index 0000000..68bda84
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEOIN_DAYNIGHT_CAPS.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+/**
+ * @author 47081
+ * @desc
+ * @version 1.0.0
+ * @date 2021/4/9
+ */
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @description CLIENT_GetDevCaps NET_VIDEOIN_BACKLIGHT_CAPS 命令出参
+ * @date 2021/4/9
+ * @version 1.0
+ */
+public class NET_OUT_VIDEOIN_DAYNIGHT_CAPS extends NetSDKLib.SdkStructure {
+  /** 用户使用时赋值为结构体大小 */
+  public int dwSize;
+  /** 球机机芯日夜设置能力 */
+  public boolean bSupport;
+  /** 实际支持的ICR切换类型个数 */
+  public int nICRType;
+  /** ICR切换类型列表 */
+  public int[] emICRType = new int[8];
+  /** 实际支持的彩转黑模式个数 */
+  public int nColorBlackMode;
+  /** 支持的彩转黑模式列表 */
+  public int[] emColorBlackMode = new int[8];
+  /** 彩转黑灵敏度最小值 */
+  public int nSensitivityRangeMin;
+  /** 彩转黑灵敏度最大值 */
+  public int nSensitivityRangeMax;
+  /** 日夜模式切换延时最小值 */
+  public int nDelayRangeMin;
+  /** 日夜模式切换延时最大值 */
+  public int nDelayRangeMax;
+
+  public NET_OUT_VIDEOIN_DAYNIGHT_CAPS() {
+    this.dwSize = size();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java
new file mode 100644
index 0000000..e736a2d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIDEO_ENCODE_CAPS.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 获取视频编码能力集出参
+ * @date 2022/07/21 13:40:57
+ */
+public class NET_OUT_VIDEO_ENCODE_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 该结构体大小
+	 */
+	public int dwSize;
+	/**
+	 * 支持SVC编码的视频格式个数
+	 */
+	public int nSvcEncodeTypesNum;
+	/**
+	 * 支持SVC编码的视频格式
+	 */
+	public byte[] szSvcEncodeTypes = new byte[32 * 32];
+	/**
+	 * 支持自定义I帧间隔的码流个数
+	 */
+	public int nGOPCustomEncodesNum;
+	/**
+	 * 支持自定义I帧间隔的码流
+	 */
+	public byte[] szGOPCustomEncodes = new byte[32 * 32];
+	/**
+	 * 最大SVC-T支持层数
+	 */
+	public int nMaxSVCTLevel;
+	/**
+	 * 隐私遮挡通用能力集
+	 */
+	public NET_PRIVACY_MASKING_CAPS stuPrivacyMaskingCaps = new NET_PRIVACY_MASKING_CAPS();
+
+	public NET_OUT_VIDEO_ENCODE_CAPS() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIEW_RANGE_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIEW_RANGE_STATE.java
new file mode 100644
index 0000000..0aa4a1b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_VIEW_RANGE_STATE.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 订阅可视域输出参数
+ * @origin autoTool
+ * @date 2023/05/30 10:04:52
+ */
+public class NET_OUT_VIEW_RANGE_STATE extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+
+	public NET_OUT_VIEW_RANGE_STATE() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
new file mode 100644
index 0000000..e3cf47f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetWaterDataStatServerCaps 输出参数 
+* @date 2022/08/22 10:11:26
+*/
+public class NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+当前是否具备水质检测功能 {@link com.netsdk.lib.enumeration.EM_WATERDATA_STAT_SERVER_SUPPORT}
+*/
+public			int					emSupport;
+/** 
+是否支持本地存储 {@link com.netsdk.lib.enumeration.EM_SUPPORT_LOCALDATA_STORE}
+*/
+public			int					emSupportLocalDataStore;
+
+public NET_OUT_WATERDATA_STAT_SERVER_GETCAPS_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java
new file mode 100644
index 0000000..226abfd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  CLIENT_GetWaterDataStatServerWaterData 输出参数 
+* @date 2022/08/22 16:51:44
+*/
+public class NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小,必须赋值
+*/
+public			int					dwSize;
+/** 
+水质类别,越小越好 {@link com.netsdk.lib.enumeration.EM_WATER_QUALITY}
+*/
+public			int					emQuality;
+/** 
+水质检测上报数据信息
+*/
+public			NET_WATER_DETECTION_UPLOAD_INFO					stuUploadInfo=new NET_WATER_DETECTION_UPLOAD_INFO();
+/** 
+参数超过阈值类型个数
+*/
+public			int					nFlunkTypeNum;
+/** 
+参数超过阈值类型   {@link com.netsdk.lib.enumeration.EM_WATER_DETECTION_ALARM_TYPE}
+*/
+public			int[]					emFlunkType=new int[32];
+
+public NET_OUT_WATERDATA_STAT_SERVER_GETDATA_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java
new file mode 100644
index 0000000..e692533
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_WLAN_ACCESSPOINT.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description CLIENT_QueryDevInfo , NET_QUERY_WLAN_ACCESSPOINT 命令输出参数
+ * @date 2023/03/16 14:10:09
+ */
+public class NET_OUT_WLAN_ACCESSPOINT extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 无线网络接入点个数
+	 */
+	public int nCount;
+	/**
+	 * 接入点信息
+	 */
+	public NET_WLAN_ACCESSPOINT_INFO[] stuInfo = new NET_WLAN_ACCESSPOINT_INFO[128];
+
+	public NET_OUT_WLAN_ACCESSPOINT() {
+		for (int i = 0; i < stuInfo.length; i++) {
+			stuInfo[i] = new NET_WLAN_ACCESSPOINT_INFO();
+		}
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java
new file mode 100644
index 0000000..cce3ebb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ *@author : 291189
+ *@since : Created in 2021/7/1
+ * CLIENT_XRayAttachPackageStatistics 输出结构体
+ */
+public class NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS  extends NetSDKLib.SdkStructure {
+
+    public int		dwSize;// 赋值为结构体大小
+
+    public NET_OUT_XRAY_ATTACH_PACKAGE_STATISTICS(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java
new file mode 100644
index 0000000..6b9db85
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_FLOW_CONTROL_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 溢出控制智能化配置列表信息
+ * @date 2021/09/28
+ */
+public class NET_OVER_FLOW_CONTROL_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  周期编号
+     */
+    public int nCycleNum;
+
+    /**
+     *  通用配置
+     */
+    public NET_COMMON_CONFIG_INFO stuCommnCofigInfo;
+
+    /**
+     *  检测器配置个数
+     */
+    public int nDetectConfigNum;
+
+    /**
+     *  检测器配置
+     */
+    public NET_DETECTOR_CONFIG_INFO[] stuDetectConfigInfo = (NET_DETECTOR_CONFIG_INFO[]) new NET_DETECTOR_CONFIG_INFO().toArray(32);
+    /**
+     *  相位配置个数
+     */
+    public int nPhaseConfigNum;
+
+    /**
+     *  相位配置
+     */
+    public NET_PHASE_CONFIG_INFO[] stuPhaseConfigInfo = (NET_PHASE_CONFIG_INFO[]) new NET_PHASE_CONFIG_INFO().toArray(16);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_LAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_LAPS_INFO.java
new file mode 100644
index 0000000..2ce535e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_OVER_LAPS_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 跟随相位列表信息
+ * @date 2021/09/02
+ */
+public class NET_OVER_LAPS_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  跟随相位编号
+     */
+    public int nOverlapNum;
+
+    /**
+     *  跟随相位关联的主相位个数
+     */
+    public int nIncludedPhasesNum;
+
+    /**
+     *  跟随相位关联的主相位数组
+     */
+    public int[] nIncludedPhases = new int[16];
+
+    /**
+     *  跟随相位延时时间个数
+     */
+    public int nStartDelayTimeNum;
+
+    /**
+     *  跟随相位延时时间数组
+     */
+    public int[] nStartDelayTime = new int[16];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PACKAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PACKAGE_INFO.java
new file mode 100644
index 0000000..d68769b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PACKAGE_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 危险等级
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 14:46
+ */
+public class NET_PACKAGE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  包裹危险等级, 一个包裹内有多个危险等级显示最高危等级
+     */
+    public int					emDangerGrade;
+
+    /**
+     *  保留字节,留待扩展
+     */
+    public byte					byReserved[] = new byte[128];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..4741874
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGDETECTION_RULE_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.structure.NET_CFG_SIZEFILTER_INFO;
+
+
+/**
+ * 事件类型	EVENT_IVS_PARKINGDETECTION  非法停车事件 对应的规则配置
+ */
+public class NET_PARKINGDETECTION_RULE_INFO extends SdkStructure {
+    /**
+     * 检测区域顶点数
+     */
+    public int					    nDetectRegionPoint;
+    /**
+     * 检测区域
+     */
+    public com.netsdk.lib.structure.POINTCOORDINATE[]       stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+    /**
+     * 触发报警位置数
+     */
+    public int                     nTriggerPosition;
+    /**
+     * 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
+     */
+    public byte[]                   bTriggerPosition=new byte[8];
+    /**
+     * 最短持续时间	单位:秒,0~65535
+     */
+    public int					    nMinDuration;
+    /**
+     * 跟踪持续时间,0秒:一直跟踪,1-300秒:跟踪持续时间
+     */
+    public int					    nTrackDuration;
+    /**
+     * 规则特定的尺寸过滤器是否有效
+     */
+    public boolean                  bSizeFileter;
+    /**
+     * 规则特定的尺寸过滤器
+     */
+    public NET_CFG_SIZEFILTER_INFO  stuSizeFileter;
+    public byte[]				    byReserved=new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGRECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGRECORD_INFO.java
new file mode 100644
index 0000000..deff088
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PARKINGRECORD_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 停车位记录信息
+ *
+ * @author 47040
+ * @since Created in 2020/11/18 14:17
+ */
+public class NET_PARKINGRECORD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannel;
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[64];
+    /**
+     * 车位号
+     */
+    public byte[] szParkingNo = new byte[32];
+    /**
+     * 保留字节
+     */
+    public byte[] byReserverd = new byte[512];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java
new file mode 100644
index 0000000..de08f0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSED_SUBTOTAL_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 经过小计信息
+ * @date 2022/09/21 14:54:46
+ */
+public class NET_PASSED_SUBTOTAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备运行后经过人数统计总数
+	 */
+	public int nTotal;
+	/**
+	 * 小时内的总人数
+	 */
+	public int nHour;
+	/**
+	 * 当天的总人数(自然天)
+	 */
+	public int nToday;
+	/**
+	 * IPC专用,如果不执行clearSectionStat操作,等同于Today人数
+	 */
+	public int nTotalInTimeSection;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[112];
+
+	public NET_PASSED_SUBTOTAL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java
new file mode 100644
index 0000000..3811dab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PASSERBY_DB_CONFIG_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_PASSERBY_DB_OVERWRITE_TYPE;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 路人库配置(选填)
+ * @date 2021/2/22
+ */
+public class NET_PASSERBY_DB_CONFIG_INFO extends NetSDKLib.SdkStructure {
+  /** 路人库最大注册数目 */
+  public int dwCapacity;
+  /** 路人库满时覆盖策略,对应枚举{@link EM_PASSERBY_DB_OVERWRITE_TYPE} */
+  public int emOverWriteType;
+  /** 路人库去重策略配置(选填) */
+  public PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO stuDuplicateRemoveConfigInfo;
+  /** 设置文件保留天数【范围:0~31】单位:天,超过时间将被删除 0:永不过期 */
+  public int dwFileHoldTime;
+  /** 字节对齐 */
+  public byte[] byReserved1 = new byte[4];
+  /** 字节保留 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java
new file mode 100644
index 0000000..bc7ab77
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEDESTRAIN_PRIORITY_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 行人优先智能化配置列表信息
+ * @date 2021/09/27
+ */
+public class NET_PEDESTRAIN_PRIORITY_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  周期编号
+     */
+    public int nCycleNum;
+
+    /**
+     *  最小优先间隔, 优先执行后的冷却时长,冷却时间内不再响应新的优先请求(1~90)
+     */
+    public int nSuspendingPeriod;
+
+    /**
+     *  优先配置表个数
+     */
+    public int nPhasePriorityConfigNum;
+
+    /**
+     *  优先配置表
+     */
+    public NET_PHASE_PRIORITY_CONFIG_INFO[] stuphasePriorityConfigInfo = (NET_PHASE_PRIORITY_CONFIG_INFO[]) new NET_PHASE_PRIORITY_CONFIG_INFO().toArray(255);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PED_DETECTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PED_DETECTOR_INFO.java
new file mode 100644
index 0000000..f7df5ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PED_DETECTOR_INFO.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 行人检测器列表信息
+ * @date 2021/09/27
+ */
+public class NET_PED_DETECTOR_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  行人检测器编号,1-16
+     */
+    public int nPedestrianDetectorNumber;
+
+    /**
+     *  行人检测器关联的相位
+     */
+    public int nPedestrianDetectorCallPhase;
+
+    /**
+     *  行人检测器对应的接线端子
+     */
+    public int nPedestrianDetectorPortNum;
+
+    /**
+     *  检测器类型1:行人按钮 2视频
+     */
+    public int nPedestrianDetectorType;
+
+    /**
+     *  视频检测器IP
+     */
+    public byte[] szPedestrianDetectorIp = new byte[16];
+
+    /**
+     *  视频检测器端口
+     */
+    public int nPedestrianDetectorPort;
+
+    /**
+     *  视频检测器用户名
+     */
+    public byte[] szPedestrianDetectorUser = new byte[72];
+
+    /**
+     *  视频检测器密码
+     */
+    public byte[] szPedestrianDetectorPwd = new byte[72];
+
+    /**
+     *  检测区1,2
+     */
+    public int nPedestrianDetectorArea;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEOPLE_REGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEOPLE_REGION_INFO.java
new file mode 100644
index 0000000..3064884
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PEOPLE_REGION_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 统计区报表数据列表
+ * @date 2022/10/29 09:36:29
+ */
+public class NET_PEOPLE_REGION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 区域名称
+	 */
+	public byte[] szRegionName = new byte[128];
+	/**
+	 * 当前时间点统计区内人数
+	 */
+	public int nRegionPeopleNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[1020];
+
+	public NET_PEOPLE_REGION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java
new file mode 100644
index 0000000..16e6139
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FEATURE_VALUE_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_PERSON_FEATURE_VALUE_INFO description:人员特征信息 author:251589 createTime:2020/12/28
+ * 11:19
+ *
+ * @version v1.0
+ */
+public class NET_PERSON_FEATURE_VALUE_INFO extends NetSDKLib.SdkStructure {
+  /** 二进制数据块中的偏移值 */
+  public int nOffset;
+  /** 特征值大小 */
+  public int nLength;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java
new file mode 100644
index 0000000..c4bc680
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PERSON_FREQUENCY_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  频次报警信息
+ * @date 2021/7/21 11:18
+ */
+public class NET_PERSON_FREQUENCY_INFO extends NetSDKLib.SdkStructure {
+
+     /**
+      * ,参考枚举{@link com.netsdk.lib.enumeration.EM_FREQUENCY_ALARM_TYPE}
+      */
+     public    int                          emAlarmType;			        // 报警类型
+     public    int							nTimes;					        // 频次
+     public    byte[]						szReserved=new byte[128];		// 保留字节
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASES_INFO.java
new file mode 100644
index 0000000..931a4db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASES_INFO.java
@@ -0,0 +1,100 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位列表信息
+ * @date 2021/09/02
+ */
+public class NET_PHASES_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  相位在栅栏内的位置
+     */
+    public int nGridNo;
+
+    /**
+     *  相位编号
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数,默认为1, A1为1,A2该字段为
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  迟起时间
+     */
+    public int nStartDelayTime;
+
+    /**
+     *  预黄时间
+     */
+    public int nStartYellowTime;
+
+    /**
+     *  绿信比时间(迟起+预黄+绿灯+绿闪+黄灯+红灯)
+     */
+    public int nGreenTime;
+
+    /**
+     *  绿闪时间
+     */
+    public int nGreenFlashTime;
+
+    /**
+     *  黄灯时间
+     */
+    public int nYellowTime;
+
+    /**
+     *  红灯清空
+     */
+    public int nRedclearTime;
+
+    /**
+     *  最小绿灯时间
+     */
+    public int nMinimumGreen;
+
+    /**
+     *  最大绿灯时间
+     */
+    public int nMaximumGreen;
+
+    /**
+     *  感应控制递减前时间
+     */
+    public int nBeforeReduction;
+
+    /**
+     *  感应控制延长绿时间
+     */
+    public int nAddedInitial;
+
+    /**
+     *  相位保持状态 0-不保持,1-黄闪,2-常红,3-红闪,4-灭灯
+     */
+    public int nPhaseKeepState;
+
+    /**
+     *  相位是否启用感应控制
+     */
+    public boolean bFreeEnable;
+
+    /**
+     *  启用的检测器个数
+     */
+    public int nSelectDetectorsNum;
+
+    /**
+     *  启用的检测器编号
+     */
+    public int[] nSelectDetectors = new int[128];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_INFO.java
new file mode 100644
index 0000000..b591d82
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位配置信息
+ * @date 2021/09/28
+ */
+public class NET_PHASE_CONFIG_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位编号,仅支持单环
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  响应使能
+     */
+    public boolean bRespondEnable;
+
+    /**
+     *  缩减比例(0~0.5)
+     */
+    public float fReduceRatio;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java
new file mode 100644
index 0000000..4f86768
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_CONFIG_NIGHT_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 夜间相位配置表信息
+ * @date 2021/09/28
+ */
+public class NET_PHASE_CONFIG_NIGHT_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位编号,仅支持单环
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  是否驻留
+     */
+    public boolean bHold;
+
+    /**
+     *  最大请求间隔(0~160)
+     */
+    public int nMaxInterval;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_LIST_INFO.java
new file mode 100644
index 0000000..3a1ff5b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_LIST_INFO.java
@@ -0,0 +1,96 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位表信息
+ * @date 2021/09/28
+ */
+public class NET_PHASE_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位编号
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  相位所属环编号
+     */
+    public int nRingNo;
+
+    /**
+     *  相位所属栅栏编号
+     */
+    public int nBarrierNo;
+
+    /**
+     *  相位所属栅栏内的位置
+     */
+    public int nGridNo;
+
+    /**
+     *  是否为时长变化
+     */
+    public boolean bUsePhaseTime;
+
+    /**
+     *  相位时长
+     */
+    public int nPhaseTime;
+
+    /**
+     *  相位时长上限(0 ~ 100)
+     */
+    public int nPhaseUpLimit;
+
+    /**
+     *  相位时长下限(0 ~ 100)
+     */
+    public int nPhaseDnLimit;
+
+    /**
+     *  是否为绿信比变化
+     */
+    public boolean bUseSplitTime;
+
+    /**
+     *  基准方案绿信比
+     */
+    public double dSplitBase;
+
+    /**
+     *  绿信比变化最大值
+     */
+    public int nSplitUpLimit;
+
+    /**
+     *  绿信比变化最小值
+     */
+    public int nSplitDnLimit;
+
+    /**
+     *  相位饱和度加权值
+     */
+    public double dSaturitionWeight;
+
+    /**
+     *  相位每周期绿信比最大变化值
+     */
+    public double dSplitMaxStep;
+
+    /**
+     *  相位饱和度计算策略:0:饱和度=average{车道饱和度} 1:饱和度=max{车道饱和度}
+     */
+    public int bPermitMaxLaneSaturition;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java
new file mode 100644
index 0000000..38ea059
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_CONFIG_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 优先配置表信息
+ * @date 2021/09/27
+ */
+public class NET_PHASE_PRIORITY_CONFIG_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  序号
+     */
+    public int nId;
+
+    /**
+     *  相位编号,仅支持单环
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  相位切换阈值
+     */
+    public int nMinGreenThr;
+
+    /**
+     *  跳相阈值
+     */
+    public int nSkipThr;
+
+    /**
+     *  启用检测器编号个数
+     */
+    public int nEnbleDetectorsNum;
+
+    /**
+     *  启用检测器编号
+     */
+    public int[] nEnbleDetectors = new int[16];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java
new file mode 100644
index 0000000..90bfe3b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_PRIORITY_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位优先配置
+ * @date 2021/09/28
+ */
+public class NET_PHASE_PRIORITY_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位编号
+     */
+    public int nPhaseNum;
+
+    /**
+     *  相位重复出现的次数
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  是否优先
+     */
+    public boolean bPriority;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java
new file mode 100644
index 0000000..74c940d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PHASE_SETTINGS_INFO.java
@@ -0,0 +1,51 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 相位设置信息
+ * @date 2021/09/28
+ */
+public class NET_PHASE_SETTINGS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  相位表个数
+     */
+    public int nPhaseListNum;
+
+    /**
+     *  相位表
+     */
+    public NET_PHASE_LIST_INFO[] stuPhaseListInfo = (NET_PHASE_LIST_INFO[]) new NET_PHASE_LIST_INFO().toArray(16);
+    /**
+     *  相位优先配置表个数
+     */
+    public int nPhasePrioritysNum;
+
+    /**
+     *  相位优先配置
+     */
+    public NET_PHASE_PRIORITY_INFO[] stuPhasePriorityInfo = (NET_PHASE_PRIORITY_INFO[]) new NET_PHASE_PRIORITY_INFO().toArray(16);
+    /**
+     *  检测器配置表个数
+     */
+    public int nDetectorSettingsNum;
+
+    /**
+     *  检测器配置表
+     */
+    public NET_DETECTOR_SETTING_INFO[] stuDetectorSettingInfo = (NET_DETECTOR_SETTING_INFO[]) new NET_DETECTOR_SETTING_INFO().toArray(16);
+    /**
+     *  相位所属表个数
+     */
+    public int nClosureSettingNum;
+
+    /**
+     *  相位所属配置表
+     */
+    public NET_CLOSURE_SETTING_INFO[] stuClosureSettingInfo = (NET_CLOSURE_SETTING_INFO[]) new NET_CLOSURE_SETTING_INFO().toArray(16);
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_STAY_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_STAY_STAT.java
new file mode 100644
index 0000000..f5ec9db
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_STAY_STAT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 猪只离开开滞留时间信息
+ * @date 2022/09/21 14:54:45
+ */
+public class NET_PIG_STAY_STAT extends NetSDKLib.SdkStructure {
+	/**
+	 * 猪只进入区域的时间
+	 */
+	public NET_TIME stuEnterTime = new NET_TIME();
+	/**
+	 * 猪只离开区域的时间
+	 */
+	public NET_TIME stuExitTime = new NET_TIME();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[208];
+
+	public NET_PIG_STAY_STAT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java
new file mode 100644
index 0000000..be00e89
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_DATA.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 猪体温信息
+ * @date 2022/03/31 14:06:49
+ */
+public class NET_PIG_TEMPERATURE_DATA extends NetSDKLib.SdkStructure {
+	/**
+	 * 物体位置
+	 */
+	public NET_RECT stuRect = new NET_RECT();
+	/**
+	 * 物体编号
+	 */
+	public int nID;
+	/**
+	 * 最高的温度
+	 */
+	public float fMaxTemperature;
+	/**
+	 * 最低的温度
+	 */
+	public float fMinTemperature;
+	/**
+	 * 平均温度
+	 */
+	public float fAverageTemperature;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserve = new byte[1024];
+
+	@Override
+	public String toString() {
+		return "NET_PIG_TEMPERATURE_DATA{" + "stuRect.nLeft=" + stuRect.nLeft + ",stuRect.nTop=" + stuRect.nTop
+				+ ",stuRect.nRight=" + stuRect.nRight + ",stuRect.nBottom=" + stuRect.nBottom + ", nID=" + nID
+				+ ", fMaxTemperature=" + fMaxTemperature + ", fMinTemperature=" + fMinTemperature
+				+ ", fAverageTemperature=" + fAverageTemperature + '}';
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..d321bd8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PIG_TEMPERATURE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 猪体温信息数组
+* @date 2022/03/31 14:06:49
+*/
+public class NET_PIG_TEMPERATURE_INFO extends NetSDKLib.SdkStructure {
+/** 
+猪的数量
+*/
+public			int					nPigNum;
+/** 
+猪的信息
+*/
+public			NET_PIG_TEMPERATURE_DATA[]					stuPigInfo=new NET_PIG_TEMPERATURE_DATA[48];
+/** 
+保留字节
+*/
+public			byte[]					byReserve=new byte[1024];
+    public NET_PIG_TEMPERATURE_INFO(){
+            for(int i=0;i<stuPigInfo.length;i++){
+                stuPigInfo[i]=new NET_PIG_TEMPERATURE_DATA();
+            }
+
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_EX.java
new file mode 100644
index 0000000..e169f0f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_EX.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description
+ * @date 2023/02/17 19:39:19
+ */
+public class NET_POINT_EX extends NetSDKLib.SdkStructure {
+	public short nx;
+	public short ny;
+	public NET_POINT_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_INFO.java
new file mode 100644
index 0000000..bbcc2d4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ *
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class NET_POINT_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  主相机标定点
+     */
+    public NetSDKLib.DH_POINT stuMasterPoint = new NetSDKLib.DH_POINT();
+
+    /**
+     *  从相机(球机)标定点
+     */
+    public NetSDKLib.DH_POINT stuSlavePoint = new NetSDKLib.DH_POINT();
+
+    /**
+     *  保留字段
+     */
+    public byte					byReserved[] = new byte[256];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_PAIR_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_PAIR_EX.java
new file mode 100644
index 0000000..f8c6469
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POINT_PAIR_EX.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ *
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class NET_POINT_PAIR_EX extends NetSDKLib.SdkStructure {
+
+    /**
+     *  标定场景序号,拼接后的全景画面可以分成多个场景进行标定
+     */
+    public int					nCaliSceneID;
+    /**
+     *  标定第一目时,球机转到和第一目场景近似的地方,记下此时球机中心点坐标
+     */
+    public PTZ_SPACE_UNIT					stuSlaveCenter = new PTZ_SPACE_UNIT();
+
+    /**
+     *  在该场景固定球机后,记录两个画面的像素点坐标对应关系 
+     */
+    public NET_POINT_INFO					stuPoint[] = (NET_POINT_INFO[]) new NET_POINT_INFO().toArray(16);
+
+    /**
+     *  stuPoint 有效个数
+     */
+    public int					nEffectiveNumber;
+    /**
+     *  天枢相机(枪球一体设备),枪机具备变倍功能,智能场景恢复时,根据这个值调整倍率,范围[0,1]
+     */
+    public float					fMasterZoom;
+    /**
+     *  保留字段
+     */
+    public byte					byReserved[] = new byte[252];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java
new file mode 100644
index 0000000..56cb2b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POPULATION_STATISTICS_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 291189
+ * @since : Created in 2021/7/5
+ *人数变化信息
+ */
+public class NET_POPULATION_STATISTICS_INFO extends NetSDKLib.SdkStructure {
+    public int                           dwSize;                     	// 结构体大小
+    public int                           nPassPopulation;            	// 正向通过人数
+    public int                           nMetalAlarmPopulation;          // 正向触发金属报警人数
+    public int                           nReversePassPopulation;         // 反向通过人数
+    public int                           nReverseMetalAlarmPopulation;   // 反向触发金属报警人数
+    public long                           nTempNormalPopulation;          // 体温正常人数
+    public long                           nTempAlarmPopulation;           // 体温异常人数
+
+    public NET_POPULATION_STATISTICS_INFO(){
+        this.dwSize=this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POSTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POSTION.java
new file mode 100644
index 0000000..3462593
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POSTION.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 坐标与放大倍数
+ * 
+ * @author : 251823
+ * @since : Created in 2021/11/07 
+ */
+public class NET_POSTION extends NetSDKLib.SdkStructure{
+	/**
+     *  水平坐标, 范围[0, 3599],表示0度到359.9度,度数扩大10倍表示。
+     */
+    public int					nHorizontalCoordinate;
+    
+    /**
+     *  垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。
+     */
+    public int					nVerticalCoordinate;
+    
+    /**
+     *  放大倍数, 范围[0,127],表示最小倍到最大倍的变倍位置
+     */
+    public int					nMagnification;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_INFO.java
new file mode 100644
index 0000000..ca6cc2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_POWER_INFO
+ * description:对应C++头文件DH_POWER_INFO
+ * author:251589
+ * createTime:2021/2/25 14:10
+ *
+ * @version v1.0
+ */
+
+public class NET_POWER_INFO  extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  电源状态, 0-关闭, 1-打开, 2-打开但有故障
+     */
+    public int bPowerOn;
+
+    /**
+     *  电源电流状态
+     */
+    public int emCurrentState;
+
+    /**
+     *  电源电压状态
+     */
+    public int emVoltageState;
+
+    public NET_POWER_INFO(){
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_STATUS.java
new file mode 100644
index 0000000..f8b308c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_POWER_STATUS.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_BATTERY_NUM;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_POWER_NUM;
+
+/**
+ * className:NET_POWER_STATUS
+ * description:
+ * author:251589
+ * createTime:2021/2/25 16:04
+ *
+ * @version v1.0
+ */
+
+public class NET_POWER_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  查询是否成功
+     */
+    public int bEnable;
+
+    /**
+     *  电源数量
+     */
+    public int nCount;
+
+    /**
+     *  电源状态
+     */
+    public NET_POWER_INFO[] stuPowers = (NET_POWER_INFO[]) new NET_POWER_INFO().toArray(NET_MAX_POWER_NUM);
+    /**
+     *  电池数量
+     */
+    public int nBatteryNum;
+
+    /**
+     *  电池状态
+     */
+    public NET_BATTERY_INFO[] stuBatteries = (NET_BATTERY_INFO[]) new NET_BATTERY_INFO().toArray(NET_MAX_BATTERY_NUM);
+    public NET_POWER_STATUS(){
+        this.dwSize = this.size();
+        for (int i = 0; i < stuBatteries.length; i++) {
+        	stuBatteries[i] = new NET_BATTERY_INFO();
+		}
+        for (int i = 0; i < stuPowers.length; i++) {
+        	stuPowers[i] = new NET_POWER_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESET_POSITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESET_POSITION.java
new file mode 100644
index 0000000..6face2e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESET_POSITION.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 预置点的坐标和放大倍数
+ * @date 2022/2/16 9:33
+ */
+public class NET_PRESET_POSITION extends NetSDKLib.SdkStructure{
+    public    int					nHorizontal;						// 水平坐标
+    public  int					nVertical;							// 垂直坐标
+    public  int					nMagnification;						// 放大倍数
+
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java
new file mode 100644
index 0000000..9529f3f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRESSING_PLATE_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  压板检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_PRESSING_PLATE_DETECT extends NetSDKLib.SdkStructure {
+/** 
+压板状态 {@link com.netsdk.lib.enumeration.EM_PRESSING_PLATE_STATE}
+*/
+public			int					emPressingPlateState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public			NET_PRESSING_PLATE_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java
new file mode 100644
index 0000000..7f4d034
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PREVENTION_OF_ARMING_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 禁止布防的条件,当其中一个或多个状态且对应项的值为true时,报警主机应能禁止布防
+ * @date 2023/03/15 21:47:18
+ */
+public class NET_PREVENTION_OF_ARMING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 入侵探测器处于激活状态
+	 */
+	public int bIntrusionDetectorActivated;
+	/**
+	 * 紧急报警装置处于激活状态
+	 */
+	public int bHoldupDeviceActivated;
+	/**
+	 * 移动目标探测器被遮挡
+	 */
+	public int bMovementDetectorMasked;
+	/**
+	 * 移动目标探测器的探测距离明显减小
+	 */
+	public int bMovementDetectorRangeReduction;
+	/**
+	 * 入侵探测器故障
+	 */
+	public int bIntrusionDetectorFault;
+	/**
+	 * 防拆报警
+	 */
+	public int bTamperCondition;
+	/**
+	 * 互连通信故障
+	 */
+	public int bInterconnectionFaults;
+	/**
+	 * 主电源故障
+	 */
+	public int bPrimePowerSourceFault;
+	/**
+	 * 备用电源故障
+	 */
+	public int bAlternativePowerSourceFault;
+	/**
+	 * 报警传输系统故障
+	 */
+	public int bAlarmTransmissionSystemFault;
+	/**
+	 * 告警装置故障
+	 */
+	public int bWarningDeviceFault;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[252];
+
+	public NET_PREVENTION_OF_ARMING_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java
new file mode 100644
index 0000000..39a3ba8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_CAPS.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 隐私遮挡通用能力集
+ * @date 2022/07/21 13:40:57
+ */
+public class NET_PRIVACY_MASKING_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持PrivacyMasking设置
+	 */
+	public int bSupport;
+	/**
+	 * 隐私遮档版本号 {@link com.netsdk.lib.enumeration.EM_PRIVACY_MASKING_VERSION}
+	 */
+	public int emVersion;
+	/**
+	 * 支持最大隐私遮挡块数目
+	 */
+	public int nSupportMaskingNum;
+	/**
+	 * 系统支持的隐私遮挡块(包括纯色块和马赛克)最大个数,代表了芯片平台能支持的最大能力。
+	 */
+	public int nMaxChipMaskingNum;
+	/**
+	 * 纯色隐私遮挡块的能力集
+	 */
+	public NET_COLOR_MASKING_CAPS stuColorMaskingCaps = new NET_COLOR_MASKING_CAPS();
+	/**
+	 * 马赛克隐私遮挡块的能力集
+	 */
+	public NET_MOSAIC_MASKING_CAPS stuMosaicMaskingCaps = new NET_MOSAIC_MASKING_CAPS();
+	/**
+	 * 屏蔽倍率能力集
+	 */
+	public NET_SHIELD_ZOOM_CAPS stuShieldZoom = new NET_SHIELD_ZOOM_CAPS();
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[1024];
+
+	public NET_PRIVACY_MASKING_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java
new file mode 100644
index 0000000..c7da8b4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PRIVACY_MASKING_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 隐私遮挡信息
+ * @date 2022/07/21 16:59:51
+ */
+public class NET_PRIVACY_MASKING_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 遮档块编号,从0开始
+	 */
+	public int nIndex;
+	/**
+	 * 隐私遮挡开关标志 1 开,0关
+	 */
+	public int nEnable;
+	/**
+	 * 每个遮挡块可命名
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * 形状类型为矩形,Rect项有效(默认),形状类型为多边形,此时Polygon有效
+	 * {@link com.netsdk.lib.enumeration.EM_PRIVACY_MASKING_TYPE}
+	 */
+	public int emShapeType;
+	/**
+	 * 矩形区域,使用相对坐标体系,取值均为0-8192
+	 */
+	public NetSDKLib.DH_RECT stuRect = new  NetSDKLib.DH_RECT();
+	/**
+	 * 多边形顶点坐标,多边形顶点不超过64, 使用相对坐标体系,取值均为0-8192
+	 */
+	public NET_UINT_POINT[] stuPolygon = new NET_UINT_POINT[64];
+	/**
+	 * 多边形顶点坐标个数
+	 */
+	public int nPointNum;
+	/**
+	 * 遮挡块颜色,下发时nMosaic为0则必填
+	 */
+	public NET_COLOR_RGBA stuColor = new NET_COLOR_RGBA();
+	/**
+	 * 遮挡块马赛克类型,马赛克时颜色Color无效,具体值参考获取能力后NET_MOSAIC_MASKING_CAPS的nSupportMosaicType字段
+	 */
+	public int nMosaic;
+	/**
+	 * 屏蔽倍率,度数扩大10倍表示
+	 */
+	public int nShieldZoom;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[512];
+
+	public NET_PRIVACY_MASKING_INFO() {
+		for (int i = 0; i < stuPolygon.length; i++) {
+			stuPolygon[i] = new NET_UINT_POINT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java
new file mode 100644
index 0000000..94caec7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROHELMET_ATTRIBUTE.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 防护面罩相关属性状态信息
+ * @date 2022/07/22 10:58:03
+ */
+public class NET_PROHELMET_ATTRIBUTE extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否有戴防护面罩 {@link com.netsdk.lib.enumeration.EM_WEARING_STATE}
+	 */
+	public int emHasHat;
+	/**
+	 * 帽子颜色 {@link com.netsdk.lib.enumeration.EM_CLOTHES_COLOR}
+	 */
+	public int emHatColor;
+	/**
+	 * 预留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_PROHELMET_ATTRIBUTE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROJECT_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROJECT_TASK.java
new file mode 100644
index 0000000..98da8ac
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROJECT_TASK.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.NET_TSECT;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_PROJECT_TASK  extends SdkStructure{
+	public int							bEnable;									// 任务是否使能
+	public byte[]							szTaskName = new byte[260];						// 任务名称Ansi编码
+	public CFG_TIME_SECTION[]            Section=(CFG_TIME_SECTION[])new CFG_TIME_SECTION().toArray(7); // 任务时间段
+	public int                            bIsCycle;                                   // 任务是否循环,TRUE表示循环,FALSE表示不循环
+	/** {@link com.netsdk.lib.NetSDKLib.EM_VIDEODIAGNOSIS_PROJECT_TASK_TYPE} */
+	public int 	emTaskType;								// 任务类型
+	public int                            bIsRepeat;                                  // 任务是否重复执行,(跨天/周是否重复执行)
+	public int								nCycleInterval;								// 任务循环间隔,单位秒
+	public byte[]      						byReserved = new byte[500];      						// 保留字节
+	
+	public static class CFG_TIME_SECTION extends SdkStructure
+    {
+        public NET_TSECT[]	 			stuTimeSection = (NET_TSECT[])new NET_TSECT().toArray(6);	     // 事件响应时间段, 每天最多6个时间段
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INFO.java
new file mode 100644
index 0000000..fb62954
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 属性值信息
+ * @date 2022/04/20 11:31:59
+ */
+public class NET_PROPERTIES_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * BJPZ_DDBJLDMS、SBJCXX_CPLX、SBJCXX_SBLX等
+     */
+    public byte[] szKey = new byte[64];
+    /**
+     * 1,true,"normal"等
+     */
+    public byte[] szValue = new byte[256];
+    /**
+     * szValue对应的类型;有int,bool,string类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+     */
+    public int emValueType;
+    /**
+     * stuIntArrayValue实际个数
+     */
+    public int nIntArrayValueNum;
+    /**
+     * int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY
+     */
+    public NET_PROPERTIES_INTARRAY_VALUE[] stuIntArrayValue = (NET_PROPERTIES_INTARRAY_VALUE[]) new NET_PROPERTIES_INTARRAY_VALUE().toArray(128);
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java
new file mode 100644
index 0000000..26c6c79
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_INTARRAY_VALUE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description int+Array值
+ * @date 2022/04/20 11:31:59
+ */
+public class NET_PROPERTIES_INTARRAY_VALUE extends NetSDKLib.SdkStructure {
+    /**
+     * Value:1,2,3
+     */
+    public int nValue;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_NAME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_NAME.java
new file mode 100644
index 0000000..72709af
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTIES_NAME.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 物模型标识
+ * @date 2022/04/20 11:31:59
+ */
+public class NET_PROPERTIES_NAME extends NetSDKLib.SdkStructure {
+    /**
+     * "*","BJPZ_DDBJLDMS"、"SBJCXX_CPLX"、"SBJCXX_SBLX"等
+     */
+    public byte[] szPropertiesName = new byte[64];
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_LIST_INFO.java
new file mode 100644
index 0000000..848a893
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_LIST_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道属性信息
+ * @date 2021/09/28
+ */
+public class NET_PROPERTY_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  该指示牌支持的可变属性,最多支持七种,0表示未配置(1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐))
+     */
+    public int nVarlaneProperty;
+
+    /**
+     *  该指示牌对应可变属性的对应通道编号
+     */
+    public int nVarlaneTochanelNum;
+
+    /**
+     *  该指示牌对应可变属性的对应的通道的灯色(1:红灯2:黄灯3:绿灯)
+     */
+    public int nVarlaneTochanelColor;
+
+    /**
+     *  该指示牌对应可变属性的对应的检测器编号(对应检测器表)
+     */
+    public int nVarlanevehDectNumber;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..961d9a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROPERTY_PLAN_LIST_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 属性计划表信息
+ * @date 2021/09/28
+ */
+public class NET_PROPERTY_PLAN_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  该指示牌支持的可变属性,最多支持七种,0表示未配置(1:左转2:直行(潮汐)3:右转4:掉头5:禁行(匝道)6:通行(匝道)7:反向(潮汐))
+     */
+    public int nVarlaneProperty;
+
+    /**
+     *  可变车道对应属性的检测时间
+     */
+    public int nVarlaneDectTime;
+
+    /**
+     *  可变属性的排队差(米)
+     */
+    public int nQueueDissimilarity;
+
+    /**
+     *  可变属性的判断起始排队长(米)
+     */
+    public int nQueueLen;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROTECTIVE_SUIT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROTECTIVE_SUIT_INFO.java
new file mode 100644
index 0000000..de0aa50
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PROTECTIVE_SUIT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 防护服相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_PROTECTIVE_SUIT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有穿着防护服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色的防护服
+     */
+    public int nHasProtectiveSuit;
+    /**
+     * 防护服颜色 {@link com.netsdk.lib.enumeration.EM_CLOTHES_COLOR}
+     */
+    public int emProtectiveSuitColor;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_PROTECTIVE_SUIT_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java
new file mode 100644
index 0000000..c5741fc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_MOVING_DETECTIONRESULT.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  对应检测类型(NET_DIAGNOSIS_PTZ_MOVING)云台移动检测结果 
+* @date 2022/08/03 14:26:52
+*/
+public class NET_PTZ_MOVING_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+向上运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingUp;
+/** 
+向下运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingDown;
+/** 
+向左运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingLeft;
+/** 
+向右运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingRight;
+/** 
+变倍(大)运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingZoomWide;
+/** 
+变倍(小)运动检测结果 {@link com.netsdk.lib.enumeration.EM_PTZ_MOVING_RESULT_TYPE}
+*/
+public			int					emPTZMovingZoomTele;
+
+public NET_PTZ_MOVING_DETECTIONRESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_WASH_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_WASH_INFO.java
new file mode 100644
index 0000000..2ce2403
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PTZ_WASH_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 冲洗信息
+ * @since : Created in 2021/11/29 10:47
+ */
+
+public class NET_PTZ_WASH_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 喷水枪的水平偏转角度
+     */
+    public float fAnagle;
+    /**
+     * 喷水枪距离污点距离
+     */
+    public float fDistance;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java
new file mode 100644
index 0000000..1d1a414
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICFILE_BYRULE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  推送远程图片文件,添加任务时无规则和图片信息,通过推送图片接口,每张图片中带有不同的规则信息(目前能源场景中使用) 
+* @date 2022/06/28 16:19:15
+*/
+public class NET_PUSH_PICFILE_BYRULE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+智能任务启动规则 {@link com.netsdk.lib.enumeration.EM_ANALYSE_TASK_START_RULE}
+*/
+public			int					emStartRule;
+/** 
+任务数据
+*/
+public			byte[]					szTaskUserData=new byte[256];
+
+public NET_PUSH_PICFILE_BYRULE_INFO(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java
new file mode 100644
index 0000000..45683dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_PUSH_PICTURE_BYRULE_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  智能分析图片信息 
+* @date 2022/06/28 19:28:32
+*/
+public class NET_PUSH_PICTURE_BYRULE_INFO extends NetSDKLib.SdkStructure {
+/** 
+文件ID
+*/
+public			byte[]					szFileID=new byte[128];
+/** 
+文件数据在二进制数据中的偏移, 单位:字节 (URL和Offset/Length应该是两者有且只有一个)
+*/
+public			int					nOffset;
+/** 
+文件数据长度, 单位:字节 (URL和Offset/Length应该是两者有且只有一个)
+*/
+public			int					nLength;
+/** 
+分析规则信息
+*/
+public NetSDKLib.NET_ANALYSE_RULE stuRuleInfo=new NetSDKLib.NET_ANALYSE_RULE();
+/** 
+用户定义数据,通过client.notifyTaskResult回调中”UserDefineData”字段带回
+*/
+public			byte[]					szUserDefineData=new byte[512];
+/** 
+模型远程文件url地址,目前支持http方式下载
+*/
+public			byte[]					szModelUrl=new byte[512];
+/** 
+远程实时视频流信息
+*/
+public			NET_REMOTE_STREAM_INFO					stuRemoteStreamInfo=new NET_REMOTE_STREAM_INFO();
+/** 
+能源SDT仪器仪表使用;0:深度学习 1:建模方式 2:图片比较方式,通过PicUr下载图片下发给算法,进行对应检测
+*/
+public			int					nDetectType;
+/** 
+图片远程文件url地址个数
+*/
+public			int					nPicUrlNum;
+/** 
+图片远程文件url地址,目前支持http方式下载
+*/
+public			byte[]					szPicUrl=new byte[64*512];
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[256];
+
+public NET_PUSH_PICTURE_BYRULE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java
new file mode 100644
index 0000000..153167c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_ALARMPOINT_INFO.java
@@ -0,0 +1,69 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 单个雷达报警点信息
+ *
+ * @author : 119178
+ * @since : Created in 2021/2/03 13:56
+ */
+public class NET_RADAR_ALARMPOINT_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 点类型的掩码,该字段废弃,请不要使用,请使用nPointType
+	 * @description 枚举类型 {@link #EM_RADAR_POINTTYPE}
+	 */
+	public int          emPointType;   
+	/**
+	 *  点类型的掩码
+	 *  bit0:无效
+	 *  bit1:当前点是消失的轨迹点
+	 *  bit2:当前点是正在被联动监控的点
+	 *  bit3:当前点是报警区的报警点
+	 *  备注:点的状态可能有多个,例如值为0xC时,表示当前的点既是正在被联动监控的点,又是报警区的报警点
+	 */
+	public int                         nPointType;  
+	/**
+	 * 当前点所属的防区编号,范围[0,10]([1,10]为防区编号,0表示当前点不属于任何一个防区)
+	 */
+	public int                         nRegionNumber;          
+	/**
+	 *  点所指对象的类型的掩码
+	 *  @description 枚举类型 {@link #EM_RADAR_OBJECTTYPE}  
+	 */
+	public int         emObjectType;      
+	/**
+	 * 点所属的轨迹号,范围[0,63]
+	 */
+	public int                         nTrackID; 
+	/**
+	 * 当前点像素极坐标值-距离,实际长度扩大100倍的结果,单位米
+	 */
+	public int                         nDistance;   
+	/**
+	 * 当前点像素极坐标值-角度,实际角度扩大100倍的结果,单位度
+	 */
+	public int                         nAngle;     
+	/**
+	 * 当前点速度,扩大100倍的结果,单位米/秒
+	 */
+	public int                         nSpeed;
+	/**
+	 * 经度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
+	 */
+	public int                         nLongitude;
+	/**
+	 * 纬度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
+	 */
+	public int                         nLatitude;
+
+	/**
+	 * 正在跟踪目标的球机的IP地址
+	 */
+	public        byte[]             szTrackerIP=new  byte[16];
+
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[488];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java
new file mode 100644
index 0000000..1eb240b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CAPACITY_CAP.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达功率配置能力
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_RADAR_CAPACITY_CAP extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持该能力
+     */
+    public int bSupport;
+    /**
+     * 探测距离列表的有效数据个数
+     */
+    public int nListNum;
+    /**
+     * 配置时可选的探测距离列表
+     */
+    public int[] nDistanceList = new int[24];
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[224];
+
+    public NET_RADAR_CAPACITY_CAP() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java
new file mode 100644
index 0000000..b475342
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CARSPEED_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_RADAR_CARSPEED_INFO
+ * description: 雷达配置——车速
+ * author:251589
+ * createTime:2020/12/29 11:05
+ *
+ * @version v1.0
+ */
+public class NET_RADAR_CARSPEED_INFO extends NetSDKLib.SdkStructure {
+    public int    nTriggerLower;    // 触发值下限 范围 1~255km/h
+    public int    nTriggerUpper;    // 触发值上限 范围 1~255km/h
+    public int    nLimitLower;    // 限速值下限 范围 5~255km/h
+    public int    nLimitUpper;    // 限速值上限 范围 5~255km/h
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java
new file mode 100644
index 0000000..b41bdd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_CHANNEL_CAP.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达信道配置能力
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_RADAR_CHANNEL_CAP extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持该能力
+     */
+    public int bSupport;
+    /**
+     * 信道号列表的有效数据个数
+     */
+    public int nListNum;
+    /**
+     * 配置时可选的信道号列表
+     */
+    public int[] nChannelList = new int[24];
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[224];
+
+    public NET_RADAR_CHANNEL_CAP() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java
new file mode 100644
index 0000000..d47986c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DETECT_OBJECT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * 雷达检测对象
+ *
+ * @author : 251823
+ * @since : Created in 2021/7/21
+ */
+public class NET_RADAR_DETECT_OBJECT extends NetSDKLib.SdkStructure{
+	 /**
+     *  物体ID
+     */
+    public int nObjectID;
+
+    /**
+     *  物体类型 ,参考枚举{ @link EM_RADAR_DETECT_OBJECT_TYPE }
+     */
+    public int emObjectType;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DEVICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DEVICE_INFO.java
new file mode 100644
index 0000000..51ae96e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_DEVICE_INFO.java
@@ -0,0 +1,61 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 雷达设备信息
+ * @since : Created in 2022/02/11 10:22
+ */
+
+public class NET_RADAR_DEVICE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 协议类型
+     */
+    public byte[] szProtocalType = new byte[32];
+    /**
+     * 雷达设备IP
+     */
+    public byte[] szRadarIP = new byte[32];
+    /**
+     * 设备类型
+     */
+    public byte[] szDeviceType = new byte[32];
+    /**
+     * 设备名称
+     */
+    public byte[] szDeviceName = new byte[32];
+    /**
+     * Radar模块版本号
+     */
+    public byte[] szRadarVer = new byte[16];
+    /**
+     * 用户名
+     */
+    public byte[] szUserName = new byte[128];
+    /**
+     * 密码
+     */
+    public byte[] szPassWord = new byte[32];
+    /**
+     * 服务端口号
+     */
+    public int nPort;
+    /**
+     * 经度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
+     */
+    public int nLongitude;
+    /**
+     * 纬度, 用整型传输, 放大1000000倍, 小数点后6位有效, 不足6位用0补齐, 例如120125400代表120.1254
+     */
+    public int nLatitude;
+    /**
+     * 雷达地图朝向角, 放大100倍, 例如112897, 实际是128.97度
+     */
+    public int nAngle;
+    /**
+     * 保留字节
+     */
+    public byte[] bReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java
new file mode 100644
index 0000000..15786b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_MOVEDDETECT_CAP.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达场景变更能力
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_RADAR_MOVEDDETECT_CAP extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持该能力
+     */
+    public int bSupport;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[252];
+
+    public NET_RADAR_MOVEDDETECT_CAP() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java
new file mode 100644
index 0000000..d7293e8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_ALARMPOINTINFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 上报的雷达报警点信息
+ *
+ * @author : 119178
+ * @since : Created in 2021/2/03 13:56
+ */
+public class NET_RADAR_NOTIFY_ALARMPOINTINFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 雷达报警点的数量
+	 */
+	public int                         nNumAlarmPoint;   
+	/**
+	 * 雷达报警点信息
+	 * NET_RADAR_MAX_NUM_ALARMPOINT=64(雷达报警点的最大数量)
+	 */
+	public NET_RADAR_ALARMPOINT_INFO[]   stuAlarmPoint = (NET_RADAR_ALARMPOINT_INFO[])new NET_RADAR_ALARMPOINT_INFO().toArray(64);  
+	/**
+	 * 通道号
+	 */
+	public int							nChannel;				
+	 /**
+     *  规则数量
+     */
+    public int nRuleNum;
+
+    /**
+     *  雷达规则信息
+     */
+    public NET_RADAR_RULE_INFO[] stuRuleInfo = (NET_RADAR_RULE_INFO[]) new NET_RADAR_RULE_INFO().toArray(10);
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[296];    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java
new file mode 100644
index 0000000..a6b8cc4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_NOTIFY_RFIDCARD_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 上报的雷达RFID信息
+ * @since : Created in 2022/02/11 15:37
+ */
+
+public class NET_RADAR_NOTIFY_RFIDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *
+     */
+    public int nChannel;
+    /**
+     *
+     */
+    public int nCardNum;
+    /**
+     * RFID卡片信息
+     */
+    public NET_RADAR_RFIDCARD_INFO[] stuCardInfo = (NET_RADAR_RFIDCARD_INFO[]) new NET_RADAR_RFIDCARD_INFO().toArray(256);
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELLINE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELLINE.java
new file mode 100644
index 0000000..1965cf1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELLINE.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 图片中线段的像素坐标
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_RADAR_PIXELLINE extends NetSDKLib.SdkStructure {
+    /**
+     * 左顶点的X坐标
+     */
+    public int nLeftX;
+    /**
+     * 左顶点的Y坐标
+     */
+    public int nLeftY;
+    /**
+     * 右顶点的X坐标
+     */
+    public int nRightX;
+    /**
+     * 右顶点的Y坐标
+     */
+    public int nRightY;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[64];
+
+    public NET_RADAR_PIXELLINE() {
+    }
+
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELPOINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELPOINT.java
new file mode 100644
index 0000000..2329a79
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PIXELPOINT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 图片中校准点的像素坐标
+ * @date 2022/08/04 10:13:32
+ */
+public class NET_RADAR_PIXELPOINT extends NetSDKLib.SdkStructure {
+    /**
+     * X像素坐标区间[0,8191]
+     */
+    public int nPixelPointX;
+    /**
+     * Y像素坐标区间[0,8191]
+     */
+    public int nPixelPointY;
+
+    public NET_RADAR_PIXELPOINT() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java
new file mode 100644
index 0000000..20a3fdb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_PROTOCAL_CAP.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 雷达控制盒支持的协议能力信息
+ * @date 2021/9/26
+ */
+public class NET_RADAR_PROTOCAL_CAP extends NetSDKLib.SdkStructure{
+	 /**
+     *  是否支持切换协议能力
+     */
+    public boolean bSupport;
+
+    /**
+     *  支持的协议类型个数, 即szPtotoList 数组的有效元素个数
+     */
+    public int nProtocalNum;
+
+    /**
+     *  雷达控制盒支持的协议列表
+     */    
+    public PtotoListByteArr[] szPtotoList = (PtotoListByteArr[])new PtotoListByteArr().toArray(10);  
+
+    /**
+     *  经度,用整型传输,放大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254
+     */
+    public int nLongitude;
+
+    /**
+     *  纬度,用整型传输,放大1000000倍,小数点后6位有效,不足6位用0补齐,例如120125400代表120.1254
+     */
+    public int nLatitude;
+
+    /**
+     *  雷达地图朝向角,放大100倍,例如112897,实际是128.97度
+     */
+    public int nAngle;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[1020];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java
new file mode 100644
index 0000000..69b8db5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_REGIONDETECTION_RFIDCARD_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 雷达区域检测事件的RFID卡片信息
+ * @date 2021/07/21
+ */
+public class NET_RADAR_REGIONDETECTION_RFIDCARD_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  卡片ID
+     */
+    public byte[] szCardID = new byte[24];
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[256];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java
new file mode 100644
index 0000000..c0c5561
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_CONFIG.java
@@ -0,0 +1,29 @@
+ package com.netsdk.lib.structure;
+
+
+ import com.netsdk.lib.NetSDKLib;
+
+ /**
+ * @author : 260611
+ * @description : 雷达RFID卡片信息
+ * @since : Created in 2022/02/16 14:42
+ */
+
+public class NET_RADAR_RFIDCARD_CONFIG extends NetSDKLib.SdkStructure {
+     /** 
+      * 卡片ID
+      */
+     public			byte[]					szCardID=new byte[24];
+     /** 
+      * 卡片有效时间的utc时间戳,单位秒
+      */
+     public			int					nValidTime;
+     /** 
+      * 卡片过期时间的utc时间戳,单位秒
+      */
+     public			int					nInvalidTime;
+     /** 
+      * 保留字节
+      */
+     public			byte[]					byReserved=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java
new file mode 100644
index 0000000..ffe3c31
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RFIDCARD_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : RFID卡片信息
+ * @since : Created in 2022/02/11 15:37
+ */
+
+public class NET_RADAR_RFIDCARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 卡片ID
+     */
+    public byte[] szCardID = new byte[24];
+    /**
+     * 卡片行为, 参考 NET_EM_RADAR_RFIDCARD_ACTION
+     */
+    public int emCardAction;
+    /**
+     * 卡片进入时间的UTC时间戳
+     */
+    public int nCardEntryTime;
+    /**
+     * 卡片离开时间的UTC时间戳,卡片未离开则为0
+     */
+    public int nCardQuitTime;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[116];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RULE_INFO.java
new file mode 100644
index 0000000..a27042f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_RULE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 雷达检测对象
+ *
+ * @author : 251823
+ * @since : Created in 2021/9/26
+ */
+public class NET_RADAR_RULE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  规则编号
+     */
+    public int nRuleID;
+
+    /**
+     *  规则内轨迹数量
+     */
+    public int nPointNumber;
+
+    /**
+     *  正在跟踪目标的球机, 0 为无效值
+     */
+    public int nTrackerIP;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[60];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCENE_CAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCENE_CAP.java
new file mode 100644
index 0000000..e72e8ae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCENE_CAP.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 雷达场景配置能力
+ * @date 2022/08/04 10:13:31
+ */
+public class NET_RADAR_SCENE_CAP extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持该能力
+     */
+    public int bSupport;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[252];
+
+    public NET_RADAR_SCENE_CAP() {
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCREEN_RULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCREEN_RULE.java
new file mode 100644
index 0000000..76dc77e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADAR_SCREEN_RULE.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 雷达屏幕显示规则
+ * @date 2022/06/13 19:27:38
+ */
+public class NET_RADAR_SCREEN_RULE extends NetSDKLib.SdkStructure {
+	/**
+	 * 屏幕显示的规则名字
+	 */
+	public byte[] szRuleName = new byte[512];
+	/**
+	 * 屏幕文字颜色,0:红色,1:绿色,2:黄色
+	 */
+	public int nDisplayColor;
+	/**
+	 * 屏幕文字显示方式,0:立即显示;1:滚动显示
+	 */
+	public int nDisplayMode;
+	/**
+	 * 屏幕文字滚动速度,当显示方式为立即显示时速度为0,速度范围在0-9
+	 */
+	public int nDisplaySpeed;
+	/**
+	 * 屏幕显示的文本内容
+	 */
+	public byte[] szDisplayText = new byte[512];
+	/**
+	 * 屏幕显示的规则编号
+	 */
+	public int nRuleID;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_RADAR_SCREEN_RULE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
new file mode 100644
index 0000000..1318cd2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/** 
+* @author 291189
+* @description  冷(最低的温度)、热(最高的温度)点信息 
+* @origin autoTool
+* @date 2023/08/07 13:51:18
+*/
+public class NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO extends NetSDKLib.SdkStructure {
+/** 
+热点坐标,范围:【0~8191】
+*/
+public NetSDKLib.NET_POINT stuHotPoint=new NetSDKLib.NET_POINT();
+/** 
+冷点坐标,范围:【0~8191】
+*/
+public NetSDKLib.NET_POINT stuColdPoint=new NetSDKLib.NET_POINT();
+/** 
+热点温度值(最高的温度)
+*/
+public			float					fHotSpotValue;
+/** 
+冷点温度值(最低的温度)
+*/
+public			float					fColdSpotValue;
+/** 
+温度单位,0:摄氏度 1:华氏度
+*/
+public			int					nTemperatrueUnit;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[256];
+
+public			NET_RADIOMETRY_CURRENTHOTCOLDSPOT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java
new file mode 100644
index 0000000..12f0618
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_ERR_DETAIL_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_RAID_ERR_DETAIL_INFO
+ * description:
+ * author:251589
+ * createTime:2021/2/26 8:43
+ *
+ * @version v1.0
+ */
+
+
+public class NET_RAID_ERR_DETAIL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 子盘槽位号
+     */
+    public int dwSlotNum;
+
+    /**
+     * 子盘状态
+     */
+    public int emErrSubDisk;
+
+    /**
+     * 保留
+     */
+    public byte[] byReserved = new byte[24];
+
+}
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_MEMBER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_MEMBER_INFO.java
new file mode 100644
index 0000000..861ac80
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RAID_MEMBER_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_RAID_MEMBER_INFO extends NetSDKLib.SdkStructure {
+	public NET_RAID_MEMBER_INFO() {
+		this.dwSize = this.size();
+		
+		//System.out.println("NET_RAID_MEMBER_INFO " + this.size());
+	}
+	
+	
+	
+    public int               dwSize;
+    public int               dwID;                                       // 磁盘号, 可用于描述磁盘在磁柜的槽位
+    public int                bSpare;                                     // 是否局部热备, true-局部热备, false-RAID子盘
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java
new file mode 100644
index 0000000..b2c5ae1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_PROCESSTIME.java
@@ -0,0 +1,9 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_RECORDBACKUP_PROCESSTIME  extends SdkStructure{
+	public NET_TIME_EX1            stuStartTime;            // 开始时间
+	public NET_TIME_EX1            stuEndTime;              // 结束时间
+	public byte[]                  bReserved=new byte[64];          // 保留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java
new file mode 100644
index 0000000..6bf54d2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_REMOTE_TASK.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.ENUM_RECORDBACKUP_FILE_TYPE;
+
+/**
+ * 远程录像备份
+ *
+ * @author 47040
+ * @since Created at 2021/5/27 20:24
+ */
+public class NET_RECORDBACKUP_REMOTE_TASK extends NetSDKLib.SdkStructure {
+
+    /**
+     * 通道有效个数
+     */
+    public int nChannelCount;
+    /**
+     * 通道号数组
+     */
+    public int[] nChannels = new int[512];
+    /**
+     * 远程通道号数组
+     */
+    public int[] nRemoteChannels = new int[512];
+    /**
+     * IP地址
+     */
+    public byte[] szDeviceIP = new byte[64];
+    /**
+     * 端口
+     */
+    public int nPort;
+    /**
+     * 用户名
+     */
+    public byte[] szUserName = new byte[64];
+    /**
+     * 密码
+     */
+    public byte[] szPassword = new byte[64];
+    /**
+     * 开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * 录像类型 枚举值 {@link ENUM_RECORDBACKUP_FILE_TYPE}
+     */
+    public int emFileType;
+    /**
+     * 视频码流 枚举值 {@link NetSDKLib.NET_STREAM_TYPE}
+     */
+    public int emStreamType;
+    /**
+     * 保留字段
+     */
+    public byte[] byReserved = new byte[512];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java
new file mode 100644
index 0000000..714f7ed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDBACKUP_TASKID_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 任务ID信息
+ *
+ * @author 47040
+ * @since Created at 2021/5/27 20:37
+ */
+public class NET_RECORDBACKUP_TASKID_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道任务ID
+     */
+    public int[] nTaskIDs = new int[512];
+    /**
+     * 通道任务ID有效个数
+     */
+    public int nTaskIDCount;
+    /**
+     * 保留字段
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDFILE_INFOEX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDFILE_INFOEX.java
new file mode 100644
index 0000000..32bc0e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORDFILE_INFOEX.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 录像文件信息(扩展)
+ * @date 2022/11/03 09:22:00
+ */
+public class NET_RECORDFILE_INFOEX extends NetSDKLib.SdkStructure {
+	/**
+	 * 录像文件信息
+	 */
+	public NetSDKLib.NET_RECORDFILE_INFO stuRecordFileInfo = new NetSDKLib.NET_RECORDFILE_INFO();
+	/**
+	 * 字节对齐
+	 */
+	public byte[] bReserved1 = new byte[4];
+	/**
+	 * 关联的事件列表,事件类型列表,参见智能分析事件类型
+	 */
+	public int[] nEventLists = new int[256];
+	/**
+	 * 事件总数
+	 */
+	public int nEventCount;
+	/**
+	 * 文件标志,参考枚举EM_RECORD_SNAP_FLAG_TYPE
+	 */
+	public int[] emFlagsList = new int[128];
+	/**
+	 * 文件标志总个数;
+	 */
+	public int nFlagCount;
+	/**
+	 * 为TRUE表示仅stuStartTimeRealUTC和stuEndTimeRealUTC有效(仅使用stuStartTimeRealUTC和stuEndTimeRealUTC),
+	 * 为FALSE表示仅stuRecordFileInfo中的starttime和endtime有效(仅使用stuRecordFileInfo中的starttime和endtime)
+	 */
+	public int bRealUTC;
+	/**
+	 * UTC开始时间(标准UTC时间), 与stuEndTimeRealUTC配对使用
+	 */
+	public NET_TIME stuStartTimeRealUTC = new NET_TIME();
+	/**
+	 * UTC结束时间(标准UTC时间), 与stuStartTimeRealUTC配对使用
+	 */
+	public NET_TIME stuEndTimeRealUTC = new NET_TIME();
+	/**
+	 * 预留字节
+	 */
+	public byte[] bReserved = new byte[452];
+
+	public NET_RECORDFILE_INFOEX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java
new file mode 100644
index 0000000..3cdd011
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO.java
@@ -0,0 +1,133 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 消费记录信息
+* @date 2022/03/08 17:16:39
+*/
+public class NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+记录集编号,只读
+*/
+public			int					nRecNo;
+/** 
+上报事件数据序列号从1开始自增
+*/
+public			int					nBlockId;
+/** 
+刷卡时间
+*/
+public NET_TIME stuCreateTime=new NET_TIME();
+/** 
+卡号
+*/
+public			byte[]					szCardNo=new byte[16];
+/** 
+卡命名
+*/
+public			byte[]					szCardName=new byte[128];
+/** 
+卡类型  {@link com.netsdk.lib.NetSDKLib.NET_ACCESSCTLCARD_TYPE}
+*/
+public			int					emCardType;
+/** 
+用户ID
+*/
+public			byte[]					szUserID=new byte[12];
+/** 
+事件类型   {@link com.netsdk.lib.NetSDKLib.NET_ENUM_DIRECTION_ACCESS_CTL}
+*/
+public			int					emType;
+/** 
+消费结果  {@link com.netsdk.lib.enumeration.EM_CONSUMPTION_STATUS}
+*/
+public			int					emStatus;
+/** 
+开门方式   {@link com.netsdk.lib.NetSDKLib.NET_ACCESS_DOOROPEN_METHOD}
+*/
+public			int					emMethod;
+/** 
+门号
+*/
+public			int					nDoor;
+/** 
+读卡器ID
+*/
+public			byte[]					szReaderID=new byte[32];
+/** 
+消费失败的原因,配合 emStatus 使用
+ // 0x00 没有错误
+ // 0x10 未授权
+ // 0x11 卡挂失或注销
+ // 0x12 没有该门权限
+ // 0x13 开门模式错误
+ // 0x14 有效期错误
+ // 0x15 防反潜模式
+ // 0x16 胁迫报警未打开
+ // 0x17 门常闭状态
+ // 0x18 AB互锁状态
+ // 0x19 巡逻卡
+ // 0x1A 设备处于闯入报警状态
+ // 0x20 时间段错误
+ // 0x21 假期内开门时间段错误
+ // 0x30 需要先验证有首卡权限的卡片
+ // 0x40 卡片正确,输入密码错误
+ // 0x41 卡片正确,输入密码超时
+ // 0x42 卡片正确,输入信息错误
+ // 0x43 卡片正确,输入信息超时
+ // 0x44 信息正确,输入密码错误
+ // 0x45 信息正确,输入密码超时
+ // 0x50 组合开门顺序错误
+ // 0x51 组合开门需要继续验证
+ // 0x60 验证通过,控制台未授权
+ // 0x61 卡片正确,人脸错误
+ // 0x62 卡片正确,人脸超时
+ // 0x63 重复进入
+ // 0x64 未授权,需要后端平台识别
+ // 0x65 体温过高
+ // 0x66	未戴口罩
+ // 0x67 健康码获取失败
+ // 0x68 黄码禁止通行
+ // 0x69 红码禁止通行
+ // 0x6a 健康码无效
+ // 0x6b 绿码验证通过
+ // 0x70 获取健康码信息
+ // 0x71 校验证件信息(平台下发对应证件号的校验结果)
+*/
+public			int					nErrorCode;
+/** 
+目标识别相似度,开门方式为人脸开门时有效
+*/
+public			int					nSimilarity;
+/** 
+人脸抠图保存的本地路径
+*/
+public			byte[]					szSnapFaceURL=new byte[128];
+/**
+记录类型    {@link com.netsdk.lib.enumeration.EM_CONSUMPTION_RECORD_TYPE}
+*/
+public			int					emRecordType;
+/** 
+消费金额。单位(分)101 = 1.01 元
+*/
+public			int					nConsumptionAmount;
+/** 
+充值金额。单位(分)101 = 1.01 元
+*/
+public			int					nRechargeAmount;
+/** 
+交易流水号
+*/
+public			byte[]					szTransactionSerialNumber=new byte[128];
+
+public NET_RECORD_ACCESS_CTL_CONSUMPTION_INFO(){
+this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java
new file mode 100644
index 0000000..a3fb233
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_BACKUP_PROGRESS.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 录像备份进度
+ * @date 2021/11/07
+ */
+public class NET_RECORD_BACKUP_PROGRESS extends NetSDKLib.SdkStructure{
+	 /**
+     *  当前备份文件名
+     */
+    public byte[] szFilePath = new byte[256];
+
+    /**
+     *  最后传递成功的数据包类型,参考ENUM_RECORDBACKUP_FILE_PROGRESS_TYPE
+     */
+    public int emType;
+
+    /**
+     *  最后传递成功的数据包位置
+     */
+    public int nPosition;
+
+    /**
+     *  任务进度百分比,0-100
+     */
+    public int nPercent;
+
+    /**
+     *  任务预计剩余时长,单位秒。-1 – 未知; 0 – 完成;
+     */
+    public int nRemainingTime;
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[512];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO.java
new file mode 100644
index 0000000..93ac697
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COURSE_RECORD_COMPRESSION_TYPE;
+
+/**
+ * 录像文件信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/9/28 16:54
+ */
+public class NET_RECORD_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 真实通道号
+     */
+    public int nRealChannel;
+    /**
+     * 查询开始时间
+     */
+    public NET_TIME stuStartTime;
+    /**
+     * 查询结束时间
+     */
+    public NET_TIME stuEndTime;
+    /**
+     * 通道录像文件总长度低32位,0表示此通道没录像
+     */
+    public int nFileLen;
+    /**
+     * 通道录像文件总长度高32位,与FileLen一起表示录像长度
+     */
+    public int nFileLenEx;
+    /**
+     * 录像时长
+     */
+    public int nTime;
+    /**
+     * 文件类型,0:裁减文件,1:原始文件
+     */
+    public int nFileType;
+    /**
+     * 课程录像压缩类型 {@link EM_COURSE_RECORD_COMPRESSION_TYPE}
+     */
+    public int emCompression;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[60];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO_ARRAY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO_ARRAY.java
new file mode 100644
index 0000000..80635fd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_INFO_ARRAY.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/9/28 18:55
+ */
+public class NET_RECORD_INFO_ARRAY extends NetSDKLib.SdkStructure {
+
+    public NET_RECORD_INFO[] stuRecordInfo_2 = new NET_RECORD_INFO[16];
+
+    public NET_RECORD_INFO_ARRAY() {
+        for (int i = 0; i < stuRecordInfo_2.length; i++) {
+            stuRecordInfo_2[i] = new NET_RECORD_INFO();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_STATUS.java
new file mode 100644
index 0000000..5c90c61
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECORD_STATUS.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 某月的各天是否存在录像的状态信息
+ * {@link NetSDKLib#CLIENT_QueryRecordStatus}
+ *
+ * @author : 47040
+ * @since : Created in 2021/2/27 19:57
+ */
+public class NET_RECORD_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * 某月内的各天是否存在录像的状态掩码,0表示没有,1表示有。
+     */
+    public byte[] flag = new byte[32];
+    /**
+     * 保留
+     */
+    public byte[] Reserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECT.java
new file mode 100644
index 0000000..70c3947
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RECT.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class NET_RECT extends NetSDKLib.SdkStructure {
+
+    /**
+     *    int             nLeft;
+     */
+    public int					nLeft;
+    /**
+     *    int             nTop;
+     */
+    public int					nTop;
+    /**
+     *    int             nRight;
+     */
+    public int					nRight;
+    /**
+     *    int             nBottom;
+     */
+    public int					nBottom;
+
+    @Override
+    public String toString() {
+        return "NET_RECT{" +
+                "nLeft=" + nLeft +
+                ", nTop=" + nTop +
+                ", nRight=" + nRight +
+                ", nBottom=" + nBottom +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_INFO.java
new file mode 100644
index 0000000..d4bb6e9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区间测速信息
+ * @date 2022/12/07 20:58:01
+ */
+public class NET_REGION_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 驶入时间
+	 */
+	public NET_TIME stuDriveInTime = new NET_TIME();
+	/**
+	 * 驶出时间
+	 */
+	public NET_TIME stuDriveOutTime = new NET_TIME();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[1024];
+
+	public NET_REGION_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java
new file mode 100644
index 0000000..de5b884
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REGION_PEOPLE_STAT_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测区区域人数统计信息
+ * @date 2022/01/07
+ */
+public class NET_REGION_PEOPLE_STAT_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  区域ID
+     */
+    public int nRegionID;
+
+    /**
+     *  区域名称
+     */
+    public byte[] szRegionName = new byte[128];
+
+    /**
+     *  区域顶点个数
+     */
+    public int nRegionPointNum;
+
+    /**
+     *  区域顶点坐标
+     */
+    public NetSDKLib.NET_POINT[] stuRegionPoint = (NetSDKLib.NET_POINT[]) new NetSDKLib.NET_POINT().toArray(20);
+    /**
+     *  区域内人数
+     */
+    public int nPeopleNum;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RELATING_VIDEO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RELATING_VIDEO_INFO.java
new file mode 100644
index 0000000..f1083e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RELATING_VIDEO_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 违章关联的多个视频信息
+ * @date 2022/06/16 10:26:31
+ */
+public class NET_RELATING_VIDEO_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 违章关联视频FTP上传路径
+	 */
+	public byte[] szVideoPath = new byte[256];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_RELATING_VIDEO_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java
new file mode 100644
index 0000000..d20d598
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMAIN_ANALYSE_TOTAL_CAPACITY.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 可供任务调度的总的智能能力
+ * @date 2021/2/8
+ */
+public class NET_REMAIN_ANALYSE_TOTAL_CAPACITY extends NetSDKLib.SdkStructure {
+  /** 业务大类{@link com.netsdk.lib.NetSDKLib.EM_SCENE_CLASS_TYPE} */
+  public int emClassType;
+  /** 任务调度总共能分析的视频流数目 */
+  public int nNumber;
+  /** 预留字节 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_FILE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_FILE_INFO.java
new file mode 100644
index 0000000..9520dd2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_FILE_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 文件信息
+ * @date 2021/2/22
+ */
+public class NET_REMOTE_FILE_INFO extends NetSDKLib.SdkStructure {
+  /** 文件绝对路径 */
+  public byte[] szPath = new byte[256];
+  /** 文件大小,单位:字节 */
+  public int nSize;
+  /** 预留字节 */
+  public byte[] byReserved = new byte[508];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_STREAM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_STREAM_INFO.java
new file mode 100644
index 0000000..c6ddb07
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_REMOTE_STREAM_INFO.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  远程实时视频源信息("analyseTaskManager.analysePushPictureFileByRule"协议使用) 
+* @date 2022/06/28 19:28:32
+*/
+public class NET_REMOTE_STREAM_INFO extends NetSDKLib.SdkStructure {
+/** 
+视频流协议类型 {@link com.netsdk.lib.NetSDKLib.EM_STREAM_PROTOCOL_TYPE}
+*/
+public			int					emStreamProtocolType;
+/** 
+用于字节对齐
+*/
+public			byte[]					byReserved1=new byte[4];
+/** 
+视频流地址
+*/
+public			byte[]					szPath=new byte[256];
+/** 
+IP 地址
+*/
+public			byte[]					szIp=new byte[64];
+/** 
+端口号
+*/
+public			short					wPort;
+/** 
+用户名
+*/
+public			byte[]					szUser=new byte[64];
+/** 
+密码
+*/
+public			byte[]					szPwd=new byte[64];
+/** 
+通道号
+*/
+public			int					nChannelID;
+/** 
+码流类型, 0:主码流; 1:辅1码流; 2:辅2码流;
+*/
+public			int					nStreamType;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+
+public NET_REMOTE_STREAM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java
new file mode 100644
index 0000000..a523175
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESOLUTION_INFO_ARRAY.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.CFG_MAX_CAPTURE_SIZE_NUM;
+
+/**
+ * 支持的视频分辨率细节
+ * 是 {@link NET_STREAM_CFG_CAPS#stuIndivResolutionTypes} 的第二维拆分数组
+ *
+ * @author 47040
+ * @since Created at 2021/5/26 9:12
+ */
+public class NET_RESOLUTION_INFO_ARRAY extends NetSDKLib.SdkStructure {
+
+    /**
+     * 支持的视频分辨率
+     * 有效长度由 {@link NET_STREAM_CFG_CAPS#nIndivResolutionNums} 决定
+     * 其下标与 {@link NET_STREAM_CFG_CAPS#stuIndivResolutionTypes} 第一维数组精确匹配
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO[] stuIndivResolutions = new NetSDKLib.NET_RESOLUTION_INFO[CFG_MAX_CAPTURE_SIZE_NUM];
+
+    public NET_RESOLUTION_INFO_ARRAY() {
+        for (int i = 0; i < stuIndivResolutions.length; i++) {
+            stuIndivResolutions[i] = new NetSDKLib.NET_RESOLUTION_INFO();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESPIRATOR_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESPIRATOR_DETECT.java
new file mode 100644
index 0000000..b085b27
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RESPIRATOR_DETECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  呼吸器检测结果 
+* @date 2022/06/28 19:44:55
+*/
+public class NET_RESPIRATOR_DETECT extends NetSDKLib.SdkStructure {
+/** 
+呼吸器状态 {@link com.netsdk.lib.enumeration.EM_RESPIRATOR_STATE}
+*/
+public			int					emRespiratorState;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_RESPIRATOR_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..58929fb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RETROGRADE_DETECTION_RULE_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+/**
+ * @description 事件类型EVENT_IVS_RETROGRADEDETECTION(逆行检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_RETROGRADE_DETECTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public	int							nDetectRegionPoint;	
+	/**
+	 * 触发报警位置数
+	 */
+	public	int                 		nTriggerPosition;       
+	/**
+	 * 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
+	 */
+	public	byte[]                		bTriggerPosition=new byte[8];     
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuDirectionStart;
+	/**
+	 * 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 
+	 */
+	public DH_POINT stuDirectionEnd;
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public	NET_CFG_SIZEFILTER_INFO 	stuSizeFileter;
+	/**
+	 * 规则特定的尺寸过滤器是否有效
+	 */
+	public int                		bSizeFileter;                           
+	/**
+	 * 灵敏度,值越小灵敏度越低。取决于方向夹角,取值1-10
+	 */
+	public	int                 		nSensitivity; 
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public	int						bSnapMotorcycle;	
+	/**
+	 * 逆行多少距离后触发报警,GB30147要求,距离归一化到8192坐标
+	 */
+	public	int                 		nDistance;		
+	/**
+	 * 保留字节
+	 */
+	public	byte[]                        byReserved=new byte[4092];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFIDELETAG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFIDELETAG_INFO.java
new file mode 100644
index 0000000..530b509
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFIDELETAG_INFO.java
@@ -0,0 +1,103 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  RFID 电子车牌标签信息 
+* @date 2022/10/13 14:39:18
+*/
+public class NET_RFIDELETAG_INFO extends NetSDKLib.SdkStructure {
+/** 
+卡号
+*/
+public			byte[]					szCardID=new byte[16];
+/** 
+卡号类型, 0:交通管理机关发行卡, 1:新车出厂预装卡
+*/
+public			int					nCardType;
+/** 
+卡号省份 {@link com.netsdk.lib.enumeration.EM_CARD_PROVINCE}
+*/
+public			int					emCardPrivince;
+/** 
+车牌号码
+*/
+public			byte[]					szPlateNumber=new byte[32];
+/** 
+出厂日期
+*/
+public			byte[]					szProductionDate=new byte[16];
+/** 
+车辆类型 {@link com.netsdk.lib.enumeration.EM_CAR_TYPE}
+*/
+public			int					emCarType;
+/** 
+功率,单位:千瓦时,功率值范围0~254;255表示该车功率大于可存储的最大功率值
+*/
+public			int					nPower;
+/** 
+排量,单位:百毫升,排量值范围0~254;255表示该车排量大于可存储的最大排量值
+*/
+public			int					nDisplacement;
+/** 
+天线ID,取值范围:1~4
+*/
+public			int					nAntennaID;
+/** 
+号牌种类 {@link com.netsdk.lib.enumeration.EM_PLATE_TYPE}
+*/
+public			int					emPlateType;
+/** 
+检验有效期,年-月
+*/
+public			byte[]					szInspectionValidity=new byte[16];
+/** 
+逾期未年检标志, 0:已年检, 1:逾期未年检
+*/
+public			int					nInspectionFlag;
+/** 
+强制报废期,从检验有效期开始,距离强制报废期的年数
+*/
+public			int					nMandatoryRetirement;
+/** 
+车身颜色 {@link com.netsdk.lib.enumeration.EM_CAR_COLOR_TYPE}
+*/
+public			int					emCarColor;
+/** 
+核定载客量,该值<0时:无效;此值表示核定载客,单位为人
+*/
+public			int					nApprovedCapacity;
+/** 
+此值表示总质量,单位为百千克;该值<0时:无效;该值的有效范围为0~0x3FF,0x3FF(1023)表示数据值超过了可存储的最大值
+*/
+public			int					nApprovedTotalQuality;
+/** 
+过车时间
+*/
+public NET_TIME_EX stuThroughTime=new NET_TIME_EX();
+/** 
+使用性质 {@link com.netsdk.lib.enumeration.EM_USE_PROPERTY_TYPE}
+*/
+public			int					emUseProperty;
+/** 
+发牌代号,UTF-8编码
+*/
+public			byte[]					szPlateCode=new byte[8];
+/** 
+号牌号码序号,UTF-8编码
+*/
+public			byte[]					szPlateSN=new byte[16];
+/** 
+标签(唯一标识), UTF-8编码
+*/
+public			byte[]					szTID=new byte[64];
+/** 
+保留字节,留待扩展.
+*/
+public			byte[]					bReserved=new byte[40];
+
+public			NET_RFIDELETAG_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFID_CARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFID_CARD_INFO.java
new file mode 100644
index 0000000..3d9d024
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RFID_CARD_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description   RFID卡片信息 
+* @date 2022/09/01 20:07:33
+*/
+public class NET_RFID_CARD_INFO extends NetSDKLib.SdkStructure {
+/** 
+RFID卡片ID
+*/
+public			byte[]					szCardId=new byte[24];
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[128];
+
+public NET_RFID_CARD_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_INFO.java
new file mode 100644
index 0000000..5ec2646
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 环信息配置
+ * @date 2021/09/28
+ */
+public class NET_RINGS_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  环编号,从1开始
+     */
+    public int nRingNo;
+
+    /**
+     *  栅栏信息个数
+     */
+    public int nBarriersNum;
+
+    /**
+     *  栅栏信息
+     */
+    public NET_BARRIERS_INFO[] stuBarriesInfo = (NET_BARRIERS_INFO[]) new NET_BARRIERS_INFO().toArray(4);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_LIST_INFO.java
new file mode 100644
index 0000000..0647d9c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RINGS_LIST_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.NET_BARRIER_LIST_INFO;
+
+/**
+ * @author 251823
+ * @description 环设备信息
+ * @date 2021/09/02
+ */
+public class NET_RINGS_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  环编号
+     */
+    public int nRingNo;
+
+    /**
+     *  栅栏列表个数
+     */
+    public int nBarrierNum;
+
+    /**
+     *  栅栏列表
+     */
+    public NET_BARRIER_LIST_INFO[] stuBarrierInfo = (NET_BARRIER_LIST_INFO[]) new NET_BARRIER_LIST_INFO().toArray(4);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..c36ee57
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RIOTERDETECTION_RULE_INFO.java
@@ -0,0 +1,53 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 事件类型 EVENT_IVS_RIOTERDETECTION (人群聚集) 对应的规则配置
+ */
+public class NET_RIOTERDETECTION_RULE_INFO extends SdkStructure {
+    /**
+     * 检测区域顶点数
+     */
+    public  int					nDetectRegionPoint;
+    /**
+     * 检测区域
+     */
+    public  com.netsdk.lib.structure.POINTCOORDINATE[]   stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[]) new com.netsdk.lib.structure.POINTCOORDINATE().toArray(20);
+    /**
+     * 检测模式个数
+     */
+    public int                  nModeNum;
+    /**
+     * 支持的检测模式,实际只能选一种0:表示"MiniArea"按最小聚集区域检测,1:表示"Humans"按聚集人员数量阈值
+     */
+    public  byte[]              nModeList=new byte[64];
+    /**
+     * 最小聚集区域矩形框,分别对应矩形框的左上和右下点,矩形框的实际面积表示触发报警的最小人群聚集面积
+     */
+    public  com.netsdk.lib.structure.POINTCOORDINATE[]   stuMinDetectRect=(com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(2);
+    /**
+     * 聚集人数阈值,聚集人数超过此值,开始报警,0表示不报警
+     */
+    public  int					nRioterThreshold;
+    /**
+     * 最短持续时间,单位:秒 1-600,默认值30
+     */
+    public  int					nMinDuration;
+    /**
+     * 报告时间间隔,单位秒,0-600;等于0表示不重复报警,默认值30
+     */
+    public  int                 nReportInterval;
+    /**
+     * 灵敏度,取值1-10,值越小灵敏度越低,对应人群的密集程度越高
+     */
+    public  int                 nSensitivity;
+    /**
+     * 跟踪持续时间,0秒:一直跟踪,1-300秒:跟踪持续时间
+     */
+    public  int					nTrackDuration;
+    /**
+     * 保留字节
+     */
+    public  byte[]				byReserved=new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RUNMODE_PARAMS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RUNMODE_PARAMS.java
new file mode 100644
index 0000000..bc22ec5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_RUNMODE_PARAMS.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_RUNMODE_PARAMS extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * 运行模式0:非内存池模式1:内存池模式
+     */
+    public int nMode;
+    /**
+     * 针对nWinConnectBufSize (windows) 每个连接接收数据缓冲大小(字节为单位),
+     * 为0表示维持原来的值,250*1024最佳,最小为128*1024
+     */
+    public int nWinConnectBufSize;
+    /**
+     * 针对nWinSocketRcvBuf (windows/linux), socket接收缓存大小(字节为单位),
+     * 为0表示维持原来的值,64*1024最佳,最小为36*1024
+     */
+    public int nWinSocketRcvBuf;
+
+    public NET_RUNMODE_PARAMS() {
+        dwSize = this.size();
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_ROPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_ROPE_INFO.java
new file mode 100644
index 0000000..696acaf
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_ROPE_INFO.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 安全绳相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_SAFETY_ROPE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 佩戴带安全绳是否合规, 0-不合规 1-合规 2-未知
+     */
+    public int nCompliantType;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[28];
+
+    public NET_SAFETY_ROPE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_SHOES_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_SHOES_INFO.java
new file mode 100644
index 0000000..99ff91a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFETY_SHOES_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 劳保鞋相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_SAFETY_SHOES_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否穿劳保鞋, 0:未知,1:未穿劳保鞋,2:穿了劳保鞋
+     */
+    public int nHasSafetyShoes;
+    /**
+     * 劳保鞋检测结果 , 0-合规 1-不合规 2-未知
+     */
+    public int nHasLegalSafetyShoes;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_SAFETY_SHOES_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFE_BELT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFE_BELT_INFO.java
new file mode 100644
index 0000000..3883667
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SAFE_BELT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 安全带相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_SAFE_BELT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否穿安全带 , 0:未知,1:未穿安全带,2:穿了安全带
+     */
+    public int nHasSafeBelt;
+    /**
+     * 安全带检测结果, 0-合规 1-不合规 2-未知
+     */
+    public int nHasLegalSafeBelt;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_SAFE_BELT_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java
new file mode 100644
index 0000000..9691d5e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 监测点位报警信息
+ * @date 2022/12/06 09:04:17
+ */
+public class NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 产生告警时,关联点位的遥测值
+	 */
+	public float fEventValue;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[1020];
+
+	public NET_SCADA_NOTIFY_POINT_ALARM_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java
new file mode 100644
index 0000000..67fc2a6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCENICSPOT_CAPS_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 景物信息记录能力集
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 17:20
+ */
+public class NET_SCENICSPOT_CAPS_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否支持景物点功能
+     */
+    public int bEnable;
+    /**
+     * 总共最多支持多少个景物点
+     */
+    public int nTotalNum;
+    /**
+     * 单画面最多支持多少个景物点
+     */
+    public int nRegionNum;
+    /**
+     * 保留字段
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCREEN_SHOW_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCREEN_SHOW_INFO.java
new file mode 100644
index 0000000..3098467
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SCREEN_SHOW_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_SCREEN_SHOW_INFO  extends SdkStructure {
+	/**
+	 * 屏幕编号
+	 */
+	public int					nScreenNo;			
+	/**
+	 *  显示文本(文本类型为EM_SCREEN_TEXT_TYPE_LOCAL_TIME时的时间格式,
+	 *         %Y 年
+	 *	       %M 月
+	 *         %D 日
+	 *         %H 时(24小时机制)
+	 *			%h 时(12小时)
+	 *			%m 分
+	 *			%S 秒
+	 *			%W 星期
+	 *			%T 显示上午或下午
+	 *			%X 表示显示普通文本内容
+	 */
+	public byte[]				szText = new byte[256];	
+	/**
+	 * 文本类型EM_SCREEN_TEXT_TYPE
+	 */
+	public int		 emTextType;		
+	/**
+	 * 文本颜色EM_SCREEN_TEXT_COLOR
+	 */
+	public int	 emTextColor;		
+	/**
+	 * 文本滚动模式EM_SCREEN_TEXT_ROLL_MODE
+	 */
+	public int emTextRollMode;	
+	/**
+	 * 文本滚动速度由慢到快分为1~5
+	 */
+	public int					 nRollSpeed;		
+	/**
+	 * 保留字节
+	 */
+	public byte[]					 byReserved = new byte[252];		
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java
new file mode 100644
index 0000000..9c7387c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACEIMAGE_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/23 19:46
+ */
+public class NET_SECURITYGATE_ALARM_FACEIMAGE_INFO extends NetSDKLib.SdkStructure {
+    public int nOffSet;   // 在二进制数据块中的偏移
+    public int				nLength;					// 图片大小,单位字节
+    public byte[]     byReserved=new byte[24];          // 预留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java
new file mode 100644
index 0000000..f97efff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_FACE_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+/**
+ * @author : 291189
+ * @since : Created in 2021/6/30 10:47
+ *  人脸信息
+ */
+
+import com.netsdk.lib.NetSDKLib;
+
+
+public class NET_SECURITYGATE_ALARM_FACE_INFO extends NetSDKLib.SdkStructure{
+
+    /**
+     *  性别,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_SEX_TYPE }
+     */
+    public int emSex;				// 性别
+    public   int											nAge; // 年龄
+    /**
+     *  人脸表情,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_EXPRESSION_TYPE }
+     */
+    public int emEmotion;			// 人脸表情
+
+    /**
+     *  是否戴眼镜,参考枚举{@link com.netsdk.lib.enumeration.EM_SECURITYGATE_GLASSES_TYPE }
+     */
+    public int emGlasses;			// 是否戴眼镜
+    /**
+     *  口罩状态,参考枚举{@link NetSDKLib.EM_MASK_STATE_TYPE }
+     */
+    public int emMask;				// 是否带口罩
+    /**
+     *   是否有胡子,参考枚举{@link NetSDKLib.EM_BEARD_STATE_TYPE }
+     */
+    public int     emBeard;
+
+    public int	nAttractive;		// 魅力值
+
+    /**
+     *  
+     */
+    public byte[] szReserved1 = new byte[4];
+    /**
+     *  嘴巴状态 ,参考枚举{@link NetSDKLib.EM_MOUTH_STATE_TYPE }
+     */
+    public int					emMouth;
+
+
+    /**
+     *  眼睛状态 ,参考枚举{@link NetSDKLib.EM_EYE_STATE_TYPE }
+     */
+    public int    emEye;		// 眼睛状态
+
+    public   float	 fTemperature;	// 体温
+
+
+    /**
+     *  温度单位 ,参考枚举{@link NetSDKLib.EM_TEMPERATURE_UNIT }
+     */
+    public int      emTempUnit;			// 温度单位
+    /**
+     *  体温类型 ,参考枚举{@link NetSDKLib.EM_TEMPERATURE_TYPE }
+     */
+    public int   emTempType;			// 体温类型
+
+    public byte[]		byReserved=new byte[1024];   // 保留字段
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java
new file mode 100644
index 0000000..9270d56
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description
+ * @date 2022/06/30 17:04:09
+ */
+public class NET_SECURITYGATE_ALARM_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 报警位置,范围:0-9,分别对应10个区位
+	 */
+	public int nPosition;
+
+	/**
+	 * 分类检测结果物品类型 0:未分类, 1:手机类, 2:刀枪工具类, 3:易拉罐类, 4:马口铁类
+	 */
+	public int nObjectType;
+
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[128];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java
new file mode 100644
index 0000000..27a5a73
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_ALARM_STATISTICS_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 安全门报警统计信息
+ * @date 2021/6/29
+ */
+public class NET_SECURITYGATE_ALARM_STATISTICS_INFO extends NetSDKLib.SdkStructure{
+
+    public byte[] szUUID=new byte[36]; // UUID
+    public int nStatisticsInfoID;     // 统计信息ID
+    public NET_TIME_EX stuBeginTime=new NET_TIME_EX();  // 开始时间
+    public NET_TIME_EX stuEndTime=new NET_TIME_EX();	  // 结束时间
+    public int nPassIn;				// 进入通过人数
+    public int nAlarmIn;			// 进入报警人数
+    public int nPassOut;			// 离开通过人数
+    public int nAlarmOut;			// 离开报警人数
+    public int nTempNormalCount;	// 体温正常人数
+    public int nTempAlarmCount;		// 体温异常人数
+    public int nClassifyResultStatisticsCount;		// 分类检测结果人数统计信息个数
+    public NET_CLASSIFY_RESULT_STATISTICS_INFO[]	stuClassifyResultStatistics = new NET_CLASSIFY_RESULT_STATISTICS_INFO[32];	// 分类检测结果人数统计信息
+    public byte[] byReserved=new byte[1024]; //保留字段
+    public NET_SECURITYGATE_ALARM_STATISTICS_INFO() {
+    	for (int i = 0; i < stuClassifyResultStatistics.length; i++) {
+    		stuClassifyResultStatistics[i] = new NET_CLASSIFY_RESULT_STATISTICS_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java
new file mode 100644
index 0000000..b6248a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_CANDIDATE.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 251823
+ * @since : Created in 2021/11/07 10:06 安全门候选人信息
+ */
+public class NET_SECURITYGATE_CANDIDATE extends NetSDKLib.SdkStructure{
+	/**
+     *  人员信息
+     */
+    public NET_SECURITYGATE_PERSON stuPerson;
+
+    /**
+     *  抓拍人脸的相似度 1~100
+     */
+    public int nSimilarity;
+
+    /**
+     *  保留字节 
+     */
+    public byte[] byReserved = new byte[260];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_PERSON.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_PERSON.java
new file mode 100644
index 0000000..30e04aa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SECURITYGATE_PERSON.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 251823
+ * @since : Created in 2021/11/07 安全门注册人员信息
+ */
+public class NET_SECURITYGATE_PERSON extends NetSDKLib.SdkStructure{
+	/**
+     *  人员唯一标识符,首次由服务端生成,区别于ID字段
+     */
+    public byte[] szUID = new byte[32];
+
+    /**
+     *  人员所属组ID
+     */
+    public byte[] szGroupID = new byte[64];
+
+    /**
+     *  性别,参考{ @link EM_SEX_TYPE}
+     */
+    public int emSexType;
+
+    /**
+     *  姓名 
+     */
+    public byte[] szPersonName = new byte[64];
+
+    /**
+     *  生日
+     */
+    public NET_TIME stuBirthday;
+
+    /**
+     *  国籍,符合ISO3166规范
+     */
+    public byte[] szCountry = new byte[3];
+
+    /**
+     *  省份
+     */
+    public byte[] szProvince = new byte[64];
+
+    /**
+     *  城市
+     */
+    public byte[] szCity = new byte[64];
+
+    /**
+     *  注册人员家庭地址
+     */
+    public byte[] szHomeAddress = new byte[128];
+
+    /**
+     *  证件类型,参考{ @link EM_CERTIFICATE_TYPE }
+     */
+    public int emCertificateType;
+
+    /**
+     *  人员证件号码,工号,或其他编号
+     */
+    public byte[] szID = new byte[32];
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1020];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENIOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENIOR_INFO.java
new file mode 100644
index 0000000..622ce70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENIOR_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 感应参数信息
+ * @date 2021/09/28
+ */
+public class NET_SENIOR_INFO extends NetSDKLib.SdkStructure{
+	/**
+	 * 周期设置个数
+	 */
+	public int nCycleSettingNum;
+	
+	/**
+     *  周期设置
+     */
+    public NET_CYCLE_SETTINGS_INFO[] stuPhasePriorityInfo = (NET_CYCLE_SETTINGS_INFO[]) new NET_CYCLE_SETTINGS_INFO().toArray(20);   
+
+    /**
+     *  选票设置
+     */
+    public NET_VOTE_SETTINGS_INFO stuVoteSettingInfo;
+
+    /**
+     *  相位设置
+     */
+    public NET_PHASE_SETTINGS_INFO stuPhaseSettingInfo;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSITIVITY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSITIVITY.java
new file mode 100644
index 0000000..14cc0ef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSITIVITY.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 灯光灵敏度信息
+ * @origin autoTool
+ * @date 2023/10/19 17:27:54
+ */
+public class NET_SENSITIVITY extends NetSDKLib.SdkStructure {
+    /**
+     * /是否支持灯光灵敏度
+     */
+    public int bSupported;
+    /**
+     * /灯光灵敏度最大值
+     */
+    public int nRange;
+    /**
+     * / 保留字节
+     */
+    public byte[] byReserved = new byte[128];
+
+    public NET_SENSITIVITY() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSOR_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSOR_STATE.java
new file mode 100644
index 0000000..a2a6acd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SENSOR_STATE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  探测器状态信息 
+* @date 2022/10/09 11:29:43
+*/
+public class NET_SENSOR_STATE extends NetSDKLib.SdkStructure {
+/** 
+外接电源连接状态 : 0:正常, 1:未连接
+*/
+public			int					nExPowerState;
+/** 
+配件防拆状态 : 0:正常, 1:打开
+*/
+public			int					nTamper;
+/** 
+电池电量状态 : 0:正常, 1:低电量, 2:掉电
+*/
+public			int					nLowPowerState;
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[244];
+
+public NET_SENSOR_STATE(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java
new file mode 100644
index 0000000..9c62b77
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SET_POLLING_CONFIG_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 平台下发轮询配置信息
+ * @date 2022/07/04 10:56:48
+ */
+public class NET_SET_POLLING_CONFIG_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 使能开关
+	 */
+	public int bEnable;
+	/**
+	 * 通道号
+	 */
+	public int nChannel;
+	/**
+	 * 全局配置
+	 */
+	public byte[] szGlobalType = new byte[64];
+	/**
+	 * 规则配置个数
+	 */
+	public int nRulelTypeCnt;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * 规则配置
+	 */
+	public Byte64Arr[] szRulelType = new Byte64Arr[16];
+	/**
+	 * 全局配置列表, 扩展支持单个通道多种智能的开启,和szGlobalType二选一使能,如果szGlobalTypeList 里面有场景内容则优先使用
+	 */
+	public Byte64Arr[] szGlobalTypeList = new Byte64Arr[6];
+	/**
+	 * 全局配置列表个数
+	 */
+	public int nGlobalTypeListNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[636];
+
+	public NET_SET_POLLING_CONFIG_INFO() {
+		for (int i = 0; i < szRulelType.length; i++) {
+			szRulelType[i] = new Byte64Arr();
+		}
+		for (int i = 0; i < szGlobalTypeList.length; i++) {
+			szGlobalTypeList[i] = new Byte64Arr();
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java
new file mode 100644
index 0000000..67f71b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHIELD_ZOOM_CAPS.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 屏蔽倍率能力集
+ * @date 2022/07/21 13:40:56
+ */
+public class NET_SHIELD_ZOOM_CAPS extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持设置屏蔽倍率,true-支持, false-不支持
+	 */
+	public int bSupport;
+	/**
+	 * 屏蔽倍率最小值若无该字段则最小值为0。真实倍率扩大10倍
+	 */
+	public int nShieldZoomMin;
+	/**
+	 * 屏蔽倍率最大值,若无该字段则最大值不做限制。真实倍率扩大10倍
+	 */
+	public int nShieldZoomMax;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_SHIELD_ZOOM_CAPS() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java
new file mode 100644
index 0000000..196a5b9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SHOESCOVER_ATTRIBUTE.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_COMPLIANCE_STATE;
+import com.netsdk.lib.enumeration.EM_WEARING_STATE;
+
+/**
+ * @author : 260611
+ * @description : 鞋套相关属性状态信息
+ * @since : Created in 2022/03/10 11:17
+ */
+
+public class NET_SHOESCOVER_ATTRIBUTE extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有穿鞋套,{@link EM_WEARING_STATE}
+     */
+    public int emHasCover;
+    /**
+     * 鞋套检测结果,{@link EM_COMPLIANCE_STATE}
+     */
+    public int emHasLegalCover;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java
new file mode 100644
index 0000000..3bebdb8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_ROAD_LIST_INFO.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 路段数据列表信息
+ * @date 2021/09/02
+ */
+public class NET_SIGNAL_ROAD_LIST_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  路段Id
+     */
+    public int nRoadSectionId;
+
+    /**
+     *  是否有二次过街 0没有,1有二次过街
+     */
+    public int nIsTwiceCrossing;
+
+    /**
+     *  路段名称
+     */
+    public byte[] szRoadSectionName = new byte[32];
+
+    /**
+     *  路段方向0 - 北 | 1 - 东北 | 2 - 东 | 3 - 东南 | 4 - 南 | 5 - 西南 | 6 - 西 | 7 - 西北 |
+     */
+    public int nRoadSectionDir;
+
+    /**
+     *  车行灯进口方向的车道数
+     */
+    public int nRoadSectionInLaneNum;
+
+    /**
+     *  车行灯出口方向的车道数
+     */
+    public int nRoadSectionOutLaneNum;
+
+    /**
+     *  该路段对应的车道列表个数
+     */
+    public int nLaneListNum;
+
+    /**
+     *  该路段对应的车道列表
+     */
+    public NET_LANE_LIST_INFO[] stuLaneListInfo = (NET_LANE_LIST_INFO[]) new NET_LANE_LIST_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java
new file mode 100644
index 0000000..4be5f37
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIGNAL_VEHICLE_DETECTOR_INFO.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 检测器列表信息
+ * @date 2021/09/27
+ */
+public class NET_SIGNAL_VEHICLE_DETECTOR_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  检测器编号
+     */
+    public int nVehicleDetectorNumber;
+
+    /**
+     *  车道编号
+     */
+    public int nVehicleDetectorRoadNum;
+
+    /**
+     *  1:线圈 2:视频1 (电警、卡口,实时过车协议) 3:视频2 (无锡所相机) 4:地磁 5:视频3(流量相机,压占信息协议) 6:视频4-出口
+     */
+    public int nVehicleDetectorType;
+
+    /**
+     *  呼叫主相位
+     */
+    public int nVehicleDetectorCallPhase;
+
+    /**
+     *  检测器位置 1:前置 2:后置
+     */
+    public int nvehicleDetectorPost;
+
+    /**
+     *  检测器优先级(1表示第一优先级), 取值1-2
+     */
+    public int nVehiclePrority;
+
+    /**
+     *  视频检测器IP
+     */
+    public byte[] szVideoDetectorIp = new byte[16];
+
+    /**
+     *  视频检测器端口
+     */
+    public int nVideoDetectorPort;
+
+    /**
+     *  视频检测器用户名
+     */
+    public byte[] szVideoDetectorUser = new byte[72];
+
+    /**
+     *  视频检测器密码
+     */
+    public byte[] szVideoDetectorPassword = new byte[72];
+
+    /**
+     *  检测通道编号编号范围为1-96,视频1车道号是1-40,视频2车道号是41-96,视频3车道号是1-40
+     */
+    public int nVehicleDetectorChannelNum;
+
+    /**
+     *  相机里的车道编号,范围1-9
+     */
+    public int nVideoDetectorChn;
+
+    /**
+     *  进口方向
+     */
+    public int nVehicleDetectorentryDir;
+
+    /**
+     *  进口类型
+     */
+    public int nVehicleDetectorentryType;
+
+    /**
+     *  在非视频检测器模式下,需要设置接线端子编号
+     */
+    public int nVehicleDetectorPortNum;
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIP_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIP_SERVER_INFO.java
new file mode 100644
index 0000000..ab77194
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SIP_SERVER_INFO.java
@@ -0,0 +1,118 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_SERVER_OPTION;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.*;
+
+/**
+ * SIP服务器信息
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/9 8:41
+ */
+public class NET_SIP_SERVER_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 单个平台接入启动选项 枚举值{@link EM_SERVER_OPTION}
+     */
+    public int emServerOption;
+    /**
+     * SIP服务器编号
+     */
+    public byte[] szSipSvrId = new byte[MAX_SIP_SVR_ID_LEN];
+    /**
+     * SIP域
+     */
+    public byte[] szDomain = new byte[MAX_SIP_DOMAIN_LEN];
+    /**
+     * SIP服务器 IP
+     */
+    public byte[] szSipSvrIp = new byte[MAX_SIP_SVR_IP_LEN];
+    /**
+     * 设备编号
+     */
+    public byte[] szDeviceId = new byte[MAX_SIP_SERVER_DEVICE_ID_LEN];
+    /**
+     * 注册密码
+     */
+    public byte[] szPassword = new byte[MAX_REG_PASSWORD_LEN];
+    /**
+     * 本地SIP服务端口
+     */
+    public short nLocalSipPort;
+    /**
+     * SIP服务器端口
+     */
+    public short nSipSvrPort;
+    /**
+     * 注册有效期,单位:秒
+     */
+    public int nSipRegExpires;
+    /**
+     * 注册失败后重新注册间隔,单位:秒
+     */
+    public int nRegInterval;
+    /**
+     * 心跳周期,单位:秒
+     */
+    public int nKeepAliveCircle;
+    /**
+     * 最大心跳超时次数
+     */
+    public int nMaxTimeoutTimes;
+    /**
+     * 行政区划代码
+     */
+    public byte[] szCivilCode = new byte[MAX_CIVIL_CODE_LEN];
+    /**
+     * 接入模块识别码
+     */
+    public byte[] szIntervideoID = new byte[MAX_INTERVIDEO_ID_LEN];
+    /**
+     * 通道相关信息,由用户申请内存,大小为 sizeof(NET_CHANNEL_INFO)*nChannelInfoNum
+     * JNA指针类型 -> {@link NET_CHANNEL_INFO}
+     */
+    public Pointer pstuChannelInfo;
+    /**
+     * 通道信息个数,可以根据登陆时获取的通道数为准
+     */
+    public int nChannelInfoNum;
+    /**
+     * 实际返回的通道号信息个数
+     */
+    public int nRetChannelInfoNum;
+    /**
+     * 报警通道相关信息,由用户申请内存,大小为 sizeof(NET_ALARM_INFO)*nAlarmInfoNum
+     * JNA指针类型 -> {@link NET_ALARM_INFO}
+     */
+    public Pointer pstuAlarmInfo;
+    /**
+     * 报警信息个数,最大值为 640
+     */
+    public int nAlarmInfoNum;
+    /**
+     * 实际返回的报警通道信息个数
+     */
+    public int nRetAlarmInfoNum;
+    /**
+     * 音频输出通道相关信息,由用户申请内存,大小为 sizeof(NET_AUDIO_OUTPUT_CHANNEL_INFO)*nAudioOutputChnInfoNum
+     * JNA指针类型 -> {@link NET_AUDIO_OUTPUT_CHANNEL_INFO}
+     */
+    public Pointer pstuAudioOutputChnInfo;
+    /**
+     * 音频输出通道相关信息个数,最大值为181
+     */
+    public int nAudioOutputChnInfoNum;
+    /**
+     * 实际返回的音频输出通道信息个数
+     */
+    public int nRetAudioOutputChnInfoNum;
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMALL_PIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMALL_PIC_INFO.java
new file mode 100644
index 0000000..6affd45
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMALL_PIC_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 大图中小图的信息
+ * @date 2023/04/20 15:11:18
+ */
+public class NET_SMALL_PIC_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 小图ID
+	 */
+	public int nSmallPicId;
+	/**
+	 * 小图在大图中的位置
+	 */
+	public NET_RECT stuRect = new NET_RECT();
+	/**
+	 * 目标类型 {@link EM_OBJECT_TYPE}
+	 */
+	public int emDetectObjType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[124];
+
+	public NET_SMALL_PIC_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_HUMAN_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_HUMAN_OBJECT.java
new file mode 100644
index 0000000..0c4c2b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_HUMAN_OBJECT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能动检(人)对象信息
+ * @date 2023/05/15 13:47:59
+ */
+public class NET_SMARTDETECT_HUMAN_OBJECT extends NetSDKLib.SdkStructure {
+	/**
+	 * 人动检ID
+	 */
+	public int nHumanID;
+	/**
+	 * 人的位置
+	 */
+	public NET_RECT stuRect = new NET_RECT();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[508];
+
+	public NET_SMARTDETECT_HUMAN_OBJECT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_VEHICLE_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_VEHICLE_OBJECT.java
new file mode 100644
index 0000000..0c2538a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMARTDETECT_VEHICLE_OBJECT.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 智能动检(车)对象信息
+ * @date 2023/05/15 13:49:36
+ */
+public class NET_SMARTDETECT_VEHICLE_OBJECT extends NetSDKLib.SdkStructure {
+	/**
+	 * 车动检ID
+	 */
+	public int nVehicleID;
+	/**
+	 * 车的位置
+	 */
+	public NET_RECT stuRect = new NET_RECT();
+	/**
+	 * 保留字节
+	 */
+	public byte[] bReserved = new byte[508];
+
+	public NET_SMARTDETECT_VEHICLE_OBJECT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java
new file mode 100644
index 0000000..842edd1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 厨师服相关属性状态信息
+ * @date 2021/7/26 15:29
+ */
+public class NET_SMART_KITCHEN_CLOTHES_CHEF_CLOTHES extends NetSDKLib.SdkStructure{
+    public int													bChefClothes;			// 厨师服相关属性是否生效,true 生效 ,false 不生效
+    public int[] emHasChefClothes=new int[3];       /** 是否有带厨师服 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+	public int[] emChefClothesColor=new int[3];	    /** 厨师服颜色 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_COLOUR} */
+	public byte[]	byReserved=new byte[1024];	   	// 预留字段
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java
new file mode 100644
index 0000000..bbf7bd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_HAT.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  厨师帽相关属性状态信息
+ * @date 2021/7/26 15:05
+ */
+public class NET_SMART_KITCHEN_CLOTHES_CHEF_HAT extends NetSDKLib.SdkStructure{
+
+    public  int 													bChefHat;			// 厨师帽相关属性是否生效,true 生效 ,false 不生效
+	public int[] emHasChefHat=new int[3]; 	/** 是否有带厨师帽 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	byte[]			byReserved=new		byte[1024];	// 预留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java
new file mode 100644
index 0000000..56eca82
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_KITCHEN_CLOTHES_CHEF_MASK.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  口罩相关属性状态信息
+ * @date 2021/7/26 14:56
+ */
+public class   NET_SMART_KITCHEN_CLOTHES_CHEF_MASK extends NetSDKLib.SdkStructure {
+    public int													bChefMask;			// 口罩相关属性是否生效,true 生效 ,false 不生效
+	public int[]							emHasMask=new int[3]; 		/** 是否有带口罩 {@link com.netsdk.lib.enumeration.EM_SMART_KITCHEN_CLOTHES_STATE} */
+    public 	byte[]							byReserved=new byte[1024];	// 预留字段
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_VALUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_VALUE_INFO.java
new file mode 100644
index 0000000..89cf555
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMART_VALUE_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设备SMART信息
+ * @date 2022/05/30 14:43:22
+ */
+public class NET_SMART_VALUE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 属性ID
+	 */
+	public int nID;
+	/**
+	 * 属性名
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 属性值
+	 */
+	public int nCurrent;
+	/**
+	 * 最大出错值
+	 */
+	public int nWorst;
+	/**
+	 * 阈值
+	 */
+	public int nThreshold;
+	/**
+	 * 实际值
+	 */
+	public byte[] szRaw = new byte[32];
+	/**
+	 * 状态
+	 */
+	public int nPredict;
+	/**
+	 * Raid同步状态, -1: 未知; 0: 自适应; 1: 同步优先,I/O优先分给Raid同步; 2:业务优先,I/O优先分给硬盘写数据; 3: 均衡
+	 */
+	public int nSync;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[256];
+
+	public NET_SMART_VALUE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java
new file mode 100644
index 0000000..5e0ffe9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKE_DETECTION_RULE_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.NET_EM_SCENEDETECTION_TYPE;
+
+/**
+ * @description 事件类型EVENT_IVS_SMOKEDETECTION(烟雾检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_SMOKE_DETECTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;	
+	/**
+	 * 字节对齐
+	 */
+	public byte[]                        byReserved1= new byte[4];				
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 最短持续时间,单位:秒 0~65535
+	 */
+	public int						nMinDuration;			
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity;           
+	/**
+	 * 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理
+	 */
+	public int						nRepeatAlarmTime;		
+	/**
+	 * 场景类型
+	 * {@link NET_EM_SCENEDETECTION_TYPE}
+	 */
+	public int  emSceneType;	
+	/**
+	 *  保留字节
+	 */
+	public byte[]                        byReserved = new byte[4096];                      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKING_DETECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKING_DETECT.java
new file mode 100644
index 0000000..df562ff
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SMOKING_DETECT.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  吸烟检测结果 
+* @date 2022/06/28 19:44:56
+*/
+public class NET_SMOKING_DETECT extends NetSDKLib.SdkStructure {
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public			NET_SMOKING_DETECT(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_MODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_MODE_INFO.java
new file mode 100644
index 0000000..dda3fa0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_MODE_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 车位模式统计信息
+ * @date 2021/12/18
+ */
+public class NET_SPACE_MODE_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  车位编号
+     */
+    public byte[] szParkNo = new byte[32];
+
+    /**
+     *  车位类型,参考{ @link EM_SPACE_TYPE}
+     */
+    public int emSpaceType;
+
+    /**
+     *  该车位是否有车
+     */
+    public boolean bUsed;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_OCCUPY_RATIO_MULTI.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_OCCUPY_RATIO_MULTI.java
new file mode 100644
index 0000000..c40fa25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPACE_OCCUPY_RATIO_MULTI.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 空间占有率统计信息
+ * @origin autoTool
+ * @date 2023/11/23 20:57:47
+ */
+public class NET_SPACE_OCCUPY_RATIO_MULTI extends NetSDKLib.SdkStructure {
+    /**
+     * / 空间占有率统计区域的ID
+     */
+    public int nID;
+    /**
+     * / 对应ID的空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+     */
+    public float fSpaceOccupyRatio;
+    /**
+     * / 保留字节
+     */
+    public byte[] szReserverd = new byte[8];
+
+    public NET_SPACE_OCCUPY_RATIO_MULTI() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java
new file mode 100644
index 0000000..92a257e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLANS_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 特殊调度列表信息
+ * @date 2021/09/28
+ */
+public class NET_SPECIAL_DATE_PLANS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  日方案编号,从1开始
+     */
+    public int nDatePlanNumber;
+
+    /**
+     *  日期开始月份
+     */
+    public int nBeginMonth;
+
+    /**
+     *  日期开始日
+     */
+    public int nBeginDay;
+
+    /**
+     *  日期结束月份
+     */
+    public int nEndMonth;
+
+    /**
+     *  日期结束日
+     */
+    public int nEndDay;
+
+    /**
+     *  周计划编号
+     */
+    public int nWeekPlanNumber;
+
+    /**
+     *  周计划名称
+     */
+    public byte[] szWeekPlanName = new byte[64];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java
new file mode 100644
index 0000000..0714a89
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DATE_PLAN_INFO.java
@@ -0,0 +1,50 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 特殊调度列表信息
+ * @date 2021/09/27
+ */
+public class NET_SPECIAL_DATE_PLAN_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  特殊调度编号
+     */
+    public int nDatePlanNumber;
+
+    /**
+     *  日期开始月份
+     */
+    public int nBeginMonth;
+
+    /**
+     *  日期开始日
+     */
+    public int nBeginDay;
+
+    /**
+     *  日期结束月份
+     */
+    public int nEndMonth;
+
+    /**
+     *  日期结束日
+     */
+    public int nEndDay;
+
+    /**
+     *  周计划
+     */
+    public int nWeekPlanNumber;
+
+    /**
+     *  周计划名称
+     */
+    public byte[] szWeekPlanName = new byte[32];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java
new file mode 100644
index 0000000..481e634
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 假日计划能力
+ * @origin autoTool
+ * @date 2023/08/24 14:19:15
+ */
+public class NET_SPECIAL_DAYS_SCHEDULE extends NetSDKLib.SdkStructure {
+	/**
+	 * 是否支持假日计划
+	 */
+	public int bSupport;
+	/**
+	 * 设备支持的最大计划数量
+	 */
+	public int nMaxSpecialDaysSchedules;
+	/**
+	 * 每天最多的时间段
+	 */
+	public int nMaxTimePeriodsPerDay;
+	/**
+	 * 设备支持的最大假日组数
+	 */
+	public int nMaxSpecialDayGroups;
+	/**
+	 * 每个假日组里最大的假日数
+	 */
+	public int nMaxDaysInSpecialDayGroup;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_SPECIAL_DAYS_SCHEDULE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java
new file mode 100644
index 0000000..39e9136
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPECIAL_DAYS_SCHEDULE_CAPS.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  假日计划能力 
+* @origin autoTool
+* @date 2023/02/10 14:34:20
+*/
+public class NET_SPECIAL_DAYS_SCHEDULE_CAPS extends NetSDKLib.SdkStructure {
+/** 
+是否支持假日计划
+*/
+public			int					bSupport;
+/** 
+设备支持的最大计划数量
+*/
+public			int					nMaxSpecialDaysSchedules;
+/** 
+每天最多的时间段
+*/
+public			int					nMaxTimePeriodsPerDay;
+/** 
+设备支持的最大假日组数
+*/
+public			int					nMaxSpecialDayGroups;
+/** 
+每个假日组里最大的假日数
+*/
+public			int					nMaxDaysInSpecialDayGroup;
+/** 
+保留字节
+*/
+public			byte[]					byReserved=new byte[128];
+
+public NET_SPECIAL_DAYS_SCHEDULE_CAPS(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPEED_LIMIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPEED_LIMIT.java
new file mode 100644
index 0000000..ee0ebee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPEED_LIMIT.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 速度限制
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_SPEED_LIMIT extends SdkStructure{
+	/**
+	 * 速度上限
+	 */
+	public int							nSpeedUpperLimit;	
+	/**
+	 * 速度下限
+	 */
+	public int							nSpeedLowerLimit;						
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPLIT_OSD.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPLIT_OSD.java
new file mode 100644
index 0000000..2f206a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SPLIT_OSD.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 分割窗口OSD信息
+ * @date 2022/06/22 09:56:21
+ */
+public class NET_SPLIT_OSD extends NetSDKLib.SdkStructure {
+
+	public int dwSize;
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	/**
+	 * 前景颜色
+	 */
+	public NET_COLOR_RGBA stuFrontColor = new NET_COLOR_RGBA();
+	/**
+	 * 背景颜色
+	 */
+	public NET_COLOR_RGBA stuBackColor = new NET_COLOR_RGBA();
+	/**
+	 * 前景区域
+	 */
+	public NetSDKLib.DH_RECT stuFrontRect = new NetSDKLib.DH_RECT();
+	/**
+	 * 背景区域
+	 */
+	public NetSDKLib.DH_RECT stuBackRect = new NetSDKLib.DH_RECT();
+	/**
+	 * 是否滚动显示, 只对文本有效
+	 */
+	public int bRoll;
+	/**
+	 * 滚动模式, 只对文本有效, 0-从左往右, 1-从右往左, 2-从上往下滚动, 3-从下往上滚动
+	 */
+	public byte byRollMode;
+	/**
+	 * 滚动速率, 只对文本有效, 0~4, 数值越大滚动越快
+	 */
+	public byte byRoolSpeed;
+	/**
+	 * 字体大小, 只对文本有效
+	 */
+	public byte byFontSize;
+	/**
+	 * 对齐方式, 0-靠左, 1-居中, 2-靠右
+	 */
+	public byte byTextAlign;
+	/**
+	 * OSD类型, 0-文本, 1-图标, 2-时间, 3-星期, 4-日期, 5-日期+星期, 6-日期+时间, 7-星期+时间, 8-日期+星期+时间
+	 */
+	public byte byType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] Reserved = new byte[3];
+	/**
+	 * OSD内容 若类型为图标, 内容为图标名称
+	 * 若类型为Time,内容为”Date”(日期),”Week”(星期),”Time”(时间),”\n”(换行)的自由组合。
+	 * 例如:不同行显示,需要将此字段填为"Date\nTime",在屏幕上就会显示 2018年4月23日 16:49:15
+	 * 同行显示,需要将此字段填为"DateTime",在屏幕上就会显示 2018年4月23日16:49:15
+	 */
+	public byte[] szContent = new byte[260];
+	/**
+	 * null
+	 */
+	public float fPitch;
+	/**
+	 * 字体类型
+	 */
+	public byte[] szFontType = new byte[64];
+	/**
+	 * 文本显示模式 Row:横排(默认) Column:竖排
+	 */
+	public byte[] szPattern = new byte[8];	
+	/**
+	 * OSD内容
+	 */
+	public byte[] szContentEx = new byte[1024];
+
+	public NET_SPLIT_OSD() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAFF_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAFF_INFO.java
new file mode 100644
index 0000000..2d74f25
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAFF_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.NET_EM_STAFF_TYPE;
+/**
+ * @description  标尺信息
+ * @author 119178
+ * @date 2021/3/16
+ */
+public class NET_STAFF_INFO extends SdkStructure{
+	/**
+	 * 起始坐标点
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuStartLocation=new com.netsdk.lib.structure.DH_POINT();
+	/**
+	 * 终止坐标点
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuEndLocation=new DH_POINT();
+	/**
+	 * 实际长度,单位米
+	 */
+	public float               nLenth;
+	/**
+	 * 标尺类型
+	 * {@link NET_EM_STAFF_TYPE}
+	 */
+	public int                 emType;                
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_VEHICLE_REG_DB_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_VEHICLE_REG_DB_CONDITION.java
new file mode 100644
index 0000000..2b9047f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_VEHICLE_REG_DB_CONDITION.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description CLIENT_StartFindVehicleRegisterDB 查询条件
+ * @origin autoTool
+ * @date 2023/10/30 16:34:24
+ */
+public class NET_START_FIND_VEHICLE_REG_DB_CONDITION extends NetSDKLib.SdkStructure {
+    /**
+     * / 平台端车牌唯一标识列表有效个数
+     */
+    public int nUUIDsNum;
+    /**
+     * / 平台端车牌唯一标识列表,存在该字段时,stuVehicleInfo不生效
+     */
+    public byte[] szUUIDs = new byte[64 * 64];
+    /**
+     * / 是否使用车牌库的车牌的入库时间、结束时间
+     */
+    public int bIsUsingRegisterStorageTime;
+    /**
+     * / 开始时间 开始时间与结束时间对车牌库的车牌的入库时间RegisterStorageTime进行选择过滤
+     */
+    public NET_TIME stuStartRegisterStorageTime = new NET_TIME();
+    /**
+     * / 结束时间
+     */
+    public NET_TIME stuEndRegisterStorageTime = new NET_TIME();
+    /**
+     * / 是否使用车牌库的车牌的修改时间、结束时间
+     */
+    public int bIsUsingModifyTime;
+    /**
+     * / 开始时间 开始时间与结束时间对车牌库的车牌的修改时间ModifyTime进行选择过滤
+     */
+    public NET_TIME stuStartModifyTime = new NET_TIME();
+    /**
+     * / 结束时间
+     */
+    public NET_TIME stuEndModifyTime = new NET_TIME();
+    /**
+     * / 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+    public NET_START_FIND_VEHICLE_REG_DB_CONDITION() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java
new file mode 100644
index 0000000..9dbf0ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_START_FIND_WATERDATA_CONDITION.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  水质检测数据查询条件 
+* @date 2022/08/22 17:12:11
+*/
+public class NET_START_FIND_WATERDATA_CONDITION extends NetSDKLib.SdkStructure {
+/** 
+开始时间
+*/
+public NET_TIME_EX stuStartTime=new NET_TIME_EX();
+/** 
+检测类型   {@link com.netsdk.lib.enumeration.EM_WATER_DETECTION_ALARM_TYPE}
+*/
+public			int[]					emType=new int[32];
+/** 
+检测类型个数
+*/
+public			int					nTypeNum;
+/** 
+预置点个数
+*/
+public			int					nPresetIDNum;
+/** 
+预置点
+*/
+public			int[]					nPresetID=new int[32];
+/** 
+结束时间
+*/
+public NET_TIME_EX stuEndTime=new NET_TIME_EX();
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_START_FIND_WATERDATA_CONDITION(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STATEMANAGER_V_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STATEMANAGER_V_INFO.java
new file mode 100644
index 0000000..27f5db1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STATEMANAGER_V_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 电压状态
+ * @date 2023/05/11 16:03:12
+ */
+public class NET_STATEMANAGER_V_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 电压值,单位:v
+	 */
+	public byte[] szV = new byte[32];
+	/**
+	 * 电流值,单位:c
+	 */
+	public byte[] szC = new byte[32];
+	/**
+	 * 功率值,单位:w
+	 */
+	public byte[] szP = new byte[32];
+	/**
+	 * 电能值,单位:w.h
+	 */
+	public byte[] szW = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_STATEMANAGER_V_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRIBUTE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRIBUTE.java
new file mode 100644
index 0000000..94b01e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRIBUTE.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  属性计数信息 
+* @date 2023/02/06 16:07:27
+*/
+public class NET_STAT_ATTRIBUTE extends NetSDKLib.SdkStructure {
+/** 
+目标及属性组合的计数
+*/
+public			int					nNumber;
+/** 
+属性组合个数
+*/
+public			int					nAttrMapNumber;
+/** 
+属性组合
+*/
+public			NET_STAT_ATTRMAP[]					stuAttrMap=new NET_STAT_ATTRMAP[20];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[128];
+
+public			NET_STAT_ATTRIBUTE(){
+		for(int i=0;i<stuAttrMap.length;i++){
+			stuAttrMap[i]=new NET_STAT_ATTRMAP();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRMAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRMAP.java
new file mode 100644
index 0000000..c2f97e4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_ATTRMAP.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  属性组合 
+* @date 2023/02/06 16:07:27
+*/
+public class NET_STAT_ATTRMAP extends NetSDKLib.SdkStructure {
+/** 
+属性索引
+*/
+public			int					nAttrTypeID;
+/** 
+属性值索引
+*/
+public			int					nValueID;
+/** 
+属性名称
+*/
+public			byte[]					szAttrType=new byte[32];
+/** 
+属性值
+*/
+public			byte[]					szValue=new byte[32];
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[128];
+
+public			NET_STAT_ATTRMAP(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_DETAIL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_DETAIL.java
new file mode 100644
index 0000000..f3d5edc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STAT_DETAIL.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  详细计数信息 
+* @date 2023/02/06 16:07:27
+*/
+public class NET_STAT_DETAIL extends NetSDKLib.SdkStructure {
+/** 
+目标类型名称
+*/
+public			byte[]					szType=new byte[32];
+/** 
+目标类型索引
+*/
+public			int					nTypeID;
+/** 
+目标类型总数
+*/
+public			int					nNumber;
+/** 
+属性计数信息
+*/                    //1024 原生大小
+public			NET_STAT_ATTRIBUTE[]					stuAttribute=new NET_STAT_ATTRIBUTE[128];
+//因为 stuAttribute 原生大小太大,1024个数组大小,使用该字段减少结构体的初始化
+public byte[]  dy=new byte[4136*(1024-128)];
+/** 
+属性计数信息个数
+*/
+public			int					nAttributeNumber;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[124];
+
+public			NET_STAT_DETAIL(){
+		for(int i=0;i<stuAttribute.length;i++){
+			stuAttribute[i]=new NET_STAT_ATTRIBUTE();
+			}
+}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java
new file mode 100644
index 0000000..4320aed
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STJ77D5_RADAR_CONFIG.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_STJ77D5_RADAR_CONFIG
+ * description: 森思泰克77Ghz网络雷达配置
+ * author:251589
+ * createTime:2020/12/29 11:13
+ *
+ * @version v1.0
+ */
+public class NET_STJ77D5_RADAR_CONFIG extends NetSDKLib.SdkStructure {
+    public int    nLaneNumber;    // 车道个数, 范围1~4
+    public int    nDetectMode;    // 道路方向, 取值:17 来向, 18 去向, 19 双向
+    public double    dbHeight;    // 雷达安装高度 ,0.01m/bit; 范围0~25
+    public double    dbHorizonShift;    // 水平偏移, 0.2m/bit; 范围-25~25
+    public int    nLaneCount;    // 车道个数
+    public double[]    dbLaneWidth = new double[4];    // 车道1-4宽度, 0.01m/bit; 范围2~5。第一个元素是车道1宽度, 以此类推
+    public double    dbStopLine;    // 停止线距离, 0.1m/bit; 范围20~60
+    public int    nSceneMode;    // 雷达工作场景模式, 0:未知, 1:主路模式, 2:路口模式
+    public double    dbShiftAngle;    // 角度修正 ,0.1/bit; 范围-12~12
+    public double    dbLengthwayShiftDistance;    // 纵向距离修正, 0.2m/bit; 范围-25~25
+    public double    dbSensitive;    // 灵敏度设置, 0.1/bit; 范围0~3
+    public int    nIDset;    // ID设置; 范围0~4
+    public int    nWorkMode;    // 雷达工作模式, 0:调试模式 1:工作模式
+    public int    nRadarFlowTime;    // 雷达流量统计时间间隔, 单位:s
+    public int    nRadarFlowSwitch;    // 雷达流量输出开关, 0:未知, 1:开启, 2:关闭
+    public int    nNonMotorDiscern;    // 非机动车/行人识别控制开关, 0:未知, 1:开启, 2:关闭
+    public int    nVehicleDistinguish;    // 车型分别能力;范围-10~10, 负值:大车门限降低, 正值:大车门限升高
+    public int    nStopTargetDisappearTime;    // 停止目标消失时间,1s/bit, 0:关闭, 非0时:停止目标消失的时间
+    public int    nStartLane;    // 雷达的起始车道号, 取值范围: 0~7
+    public int    nRadarLanNumber;    // 雷达支持的车道数目, 取值范围:1~8
+    public int    nVirtualCoilTriggerCount;    // 虚拟线圈个数
+    public int[]    nVirtualCoilTrigger = new int[4];    // 虚拟线圈触发方式: 1:头线圈, 2:尾线圈, 3:头尾线圈, 90:线圈,不统计
+    public int    nVirtualCoilDistanceCount;    // 虚拟线圈个数
+    public double[]    dbVirtualCoilDistance = new double[4];    // 虚拟线圈起始位置(下边沿,y向距离雷达距离), 单位:m
+    public int    nVirtualCoilLengthCount;    // 虚拟线圈个数
+    public double[]    dbVirtualCoilLength = new double[4];    // 虚拟线圈长度, 单位:m
+    public double    dbCameraToRoadEndDistance;    // 相机到车道监控面路口距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
+    public double    dbCameraToStopLane;    // 相机到停止线距离, 单位:m, 0.1m/bit(精确到小数点后一位,步长0.1m)
+    public int[]    nLaneDirection = new int[4];    // 车道方向,
+    public int     nLaneDirectionCount;    // 车道个数
+    public byte[]    bReserved = new byte[1020];    // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_DEVICE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_DEVICE.java
new file mode 100644
index 0000000..1acc389
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_DEVICE.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 存储设备信息
+ * @date 2022/05/30
+ */
+public class NET_STORAGE_DEVICE extends NetSDKLib.SdkStructure {
+	
+	public NET_STORAGE_DEVICE() {
+		this.dwSize = this.size();
+        for (int i = 0; i < stuPartitions.length; i ++) {
+            stuPartitions[i] =  new NET_STORAGE_PARTITION();
+        }
+	}
+	
+	public int          		dwSize;
+    public byte[]       		szName = new byte[128];                    		// 名称
+    public long         		nTotalSpace;                                    // 总空间, byte
+    public long         		nFreeSpace;                                     // 剩余空间, byte
+    public byte                	byMedia;                                        // 介质, 0-DISK, 1-CDROM, 2-FLASH
+    public byte                	byBUS;                                          // 总线, 0-ATA, 1-SATA, 2-USB, 3-SDIO, 4-SCSI
+    public byte                	byVolume;                                       // 卷类型, 0-物理卷, 1-Raid卷, 2-VG虚拟卷, 3-ISCSI, 4-独立物理卷, 5-全局热备卷, 6-NAS卷(包括FTP, SAMBA, NFS)
+    public byte                	byState;                                        // 物理硬盘状态, 参考NET_STORAGE_DEV_OFFLINE,取值为 NET_STORAGE_DEV_OFFLINE 和 NET_STORAGE_DEV_RUNNING 等
+    public int                 	nPhysicNo;                                      	// 同类设备存储接口的物理编号
+    public int                 	nLogicNo;                                       	// 同类设备存储接口的逻辑编号
+    public byte[]               szParent = new byte[128];                  	// 上级存储组名称
+    public byte[]               szModule = new byte[128];                  	// 设备模块
+    public byte[]               szSerial = new byte[48];                      	// 设备序列号
+    public byte[]               szFirmware = new byte[64];                     // 固件版本
+    public int                 	nPartitionNum;                                  // 分区数
+    public NET_STORAGE_PARTITION[] stuPartitions = (NET_STORAGE_PARTITION[])new NET_STORAGE_PARTITION().toArray(32);   // 分区信息
+    public NET_STORAGE_RAID stuRaid;                                        // RAID信息, 只对RAID有效(byVolume == 1)
+    public NET_ISCSI_TARGET stuISCSI;                                       // ISCSI信息, 只对ISCSI盘有效(byVolume == 3)
+    public int                	abTank;                                         // 扩展柜使能
+    public NET_STORAGE_TANK stuTank;                                        // 硬盘所在扩展柜信息, abTank为TRUE时有效
+
+    /**
+     * 硬盘电源状态
+     * {@link EM_STORAGE_DISK_POWERMODE}
+     */
+    public int           		emPowerMode;                    // 硬盘电源状态
+    
+    /**
+     * 硬盘预检状态(EVS字段,配合磁盘预检功能使用)
+     * {@link EM_STORAGE_DISK_PREDISKCHECK}
+     */
+    public int        emPreDiskCheck;                 // 硬盘预检状态(EVS字段,配合磁盘预检功能使用)
+    
+    public int  nOpState;         // 设备操作状态:	  0: 正常工作状态, 1: 休眠中, 2: 等待格式化, 3: 格式化进行中, 
+								 // 4: 等待碎片整理, 5: 碎片整理中, 6: 等待创建RAID 7: 创建RAID中, 8: 等待删除RAID, 9: 删除RAID中, 
+	                             // 10: 等待文件系统修复, 11: 文件系统修复中, 12: 等待预检, 13: 正在预检
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION.java
new file mode 100644
index 0000000..62888c9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_STORAGE_PARTITION extends NetSDKLib.SdkStructure {
+	public NET_STORAGE_PARTITION() {
+		this.dwSize =  this.size();
+	}
+	
+	public int               dwSize;
+	public byte[]            szName = new byte[128];                // 名称
+	public long               nTotalSpace;                                // 总空间, byte
+	public long               nFreeSpace;                                 // 剩余空间, byte
+    public byte[]                szMountOn = new byte[64];            // 挂载点
+    public byte[]                szFileSystem = new byte[16];   // 文件系统
+    public int                 nStatus;                                    // 分区状态, 0-LV不可用, 1-LV可用
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java
new file mode 100644
index 0000000..b2263c3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_PARTITION_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 设备存储分区信息
+ * @date 2021/01/21
+ */
+public class NET_STORAGE_PARTITION_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 分区是否异常
+	 */
+	public int bError;
+	
+	/**
+	 * 分区属性类型,参考枚举{ @link EM_PARTITION_TYPE }
+	 */
+	public int emType;
+	
+	/**
+	 * 分区总空间,单位字节
+	 */
+	public double dTotalBytes;
+	
+	/**
+	 * 分区使用空间
+	 */
+	public double dUsedBytes;
+	
+	/**
+	 * 分区名字
+	 */
+	public byte[] szPath = new byte[128];
+	
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+	
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_RAID.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_RAID.java
new file mode 100644
index 0000000..c7fd46b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_RAID.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_STORAGE_RAID extends NetSDKLib.SdkStructure {
+	
+	public NET_STORAGE_RAID() {
+		this.dwSize = this.size();
+		for (int i = 0; i < stuMemberInfos.length; i ++) {
+			stuMemberInfos[i] =  new NET_RAID_MEMBER_INFO();
+		}
+	}
+	
+    public int                 dwSize;
+    public int                 nLevel;                                     // 等级    
+    public int                 nState;                                     // RAID状态组合, 如 DH_RAID_STATE_ACTIVE | DH_RAID_STATE_DEGRADED
+    public int                 nMemberNum;                                 // 成员数量
+    public byte[]              szMembers=new byte[32*128];    // RAID成员	
+    public float               fRecoverPercent;                            // 同步百分比, 0~100, RAID状态中有"Recovering"或"Resyncing"时有效
+    public float               fRecoverMBps;                               // 同步速度, 单位MBps, RAID状态中有"Recovering"或"Resyncing"时有效
+    public float               fRecoverTimeRemain;                         // 同步剩余时间, 单位分钟, RAID状态中有"Recovering"或"Resyncing"时有效
+    //public NET_RAID_MEMBER_INFO[] stuMemberInfos = (NET_RAID_MEMBER_INFO[])new NET_RAID_MEMBER_INFO().toArray(32);    // RAID成员信息
+    
+    public NET_RAID_MEMBER_INFO[] stuMemberInfos = new NET_RAID_MEMBER_INFO[32];    // RAID成员信息
+	public int                 nRaidDevices;                               // RAID设备个数
+	public int                 nTotalDevices;                              // RAID设备总数
+	public int                 nActiveDevices;                             // 活动设备个数
+	public int                 nWorkingDevices;                            // 工作设备个数
+	public int                 nFailedDevices;                             // 失败设备个数
+	public int                 nSpareDevices;                              // 热备设备个数
+	
+	public byte[]              szAliasName = new byte[24];           // RAID别名,UTF-8编码,建议使用szAliasNameEx
+    public byte[]              szAliasNameEx = new byte[32];         // RAID别名,UTF-8编码
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_TANK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_TANK.java
new file mode 100644
index 0000000..16bf9a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STORAGE_TANK.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+public class NET_STORAGE_TANK extends NetSDKLib.SdkStructure {
+	public NET_STORAGE_TANK() {
+		this.dwSize = this.size();
+		
+		//System.out.println("NET_STORAGE_TANK " + this.size());
+	}
+	
+	public int                 dwSize;
+    public int                 nLevel;                                     // 级别, 主机是第0级,其它下属级别类推
+    public int                 nTankNo;                                    // 同一级扩展柜内的扩展口编号, 从0开始
+    public int                 nSlot;                                      // 对应主柜上的板卡号, 从0开始编号
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STREAM_CFG_CAPS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STREAM_CFG_CAPS.java
new file mode 100644
index 0000000..67b31e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STREAM_CFG_CAPS.java
@@ -0,0 +1,117 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_H264_PROFILE_RANK;
+import com.netsdk.lib.enumeration.STREAM_RATE_TYPE;
+import com.netsdk.lib.enumeration.TALK_CODING_TYPE;
+
+import static com.netsdk.lib.constant.SDKStructureFieldLenth.*;
+
+/**
+ * 码流配置对应能力
+ *
+ * @author 47040
+ * @since Created at 2021/5/25 21:10
+ */
+public class NET_STREAM_CFG_CAPS extends NetSDKLib.SdkStructure {
+    /**
+     * 结构体大小
+     */
+    public int dwSize;
+    /**
+     * 支持的音频编码类型 枚举值数组 {@link TALK_CODING_TYPE}
+     * 有效长度由 {@link #nAudioCompressionTypeNum} 决定
+     */
+    public int[] nAudioCompressionTypes = new int[CFG_MAX_AUDIO_ENCODE_TYPE];
+    /**
+     * 音频压缩格式个数
+     * 代表 {@link #nAudioCompressionTypes} 的有效长度
+     */
+    public int nAudioCompressionTypeNum;
+    /**
+     * 视频编码模式掩码,详见 "编码模式"
+     */
+    public int dwEncodeModeMask;
+    /**
+     * 支持的视频分辨率
+     * {@link #abIndivResolution} 为 0 时生效
+     * 有效长度由 {@link #nResolutionTypeNum} 决定
+     */
+    public NetSDKLib.NET_RESOLUTION_INFO[] stuResolutionTypes = new NetSDKLib.NET_RESOLUTION_INFO[CFG_MAX_CAPTURE_SIZE_NUM];
+    /**
+     * 不同分辨率下帧率最大值
+     * {@link #nFPSMax} 不为 0 时使用
+     * 数组下标与 {@link #stuResolutionTypes} 匹配
+     * 有效长度由 {@link #nResolutionTypeNum} 决定
+     */
+    public int[] nResolutionFPSMax = new int[CFG_MAX_CAPTURE_SIZE_NUM];
+    /**
+     * 视频分辨率个数 决定了以下数组的有效长度
+     * {@link #stuResolutionTypes}
+     * {@link #nResolutionFPSMax}
+     */
+    public int nResolutionTypeNum;
+    /**
+     * 最大视频码流(kbps)
+     * 这里虽然是只限定了码流的上下界 但并不意味着配置的时候可以在界内随便填
+     * 必须从 {@link STREAM_RATE_TYPE} 选择区间内的码流值
+     */
+    public int nMaxBitRateOptions;
+    /**
+     * 最小视频码流(kbps)
+     * 这里虽然是只限定了码流的上下界 但并不意味着配置的时候可以在界内随便填
+     * 必须从 {@link STREAM_RATE_TYPE} 选择区间内的码流值
+     */
+    public int nMinBitRateOptions;
+    /**
+     * 支持的 H.264 Profile等级 枚举值数组 {@link EM_H264_PROFILE_RANK}
+     * 有效长度由 {@link #nH264ProfileRankNum} 决定
+     */
+    public byte[] bH264ProfileRank = new byte[EM_H264_PROFILE_RANK.NET_PROFILE_HIGH.getValue()];
+    /**
+     * 支持的 H.264 Profile 等级个数
+     * 决定了 {@link #bH264ProfileRank} 的有效长度
+     */
+    public int nH264ProfileRankNum;
+    /**
+     * 当分辨率为 cif 时最大 p 帧(Kbps)
+     */
+    public int nCifPFrameMaxSize;
+    /**
+     * 当分辨率为 cif 时最小 p 帧(Kbps)
+     */
+    public int nCifPFrameMinSize;
+    /**
+     * 视频帧率最大值
+     * 如果为 0 则以 {@link #nResolutionFPSMax} 为准
+     */
+    public int nFPSMax;
+    /**
+     * 支持的视频分辨率
+     * {@link #abIndivResolution} 为 1 时生效
+     * 本身是一个二维数组 出于 JNA 封装需要第二维单独封装成新结构体 {@link NET_RESOLUTION_INFO_ARRAY}
+     * 每个第二维数组的有效长度由 {@link #nIndivResolutionNums} 决定 其数组下标和本字段的下标精确匹配
+     */
+    public NET_RESOLUTION_INFO_ARRAY[] stuIndivResolutionTypes = new NET_RESOLUTION_INFO_ARRAY[CFG_MAX_COMPRESSION_TYPES_NUM];
+    /**
+     * 标志位 用以区别能力集是否包含所有编码格式
+     * 0 表示 {@link #stuResolutionTypes} {@link #nResolutionTypeNum} 有效
+     * 1 表示 {@link #stuIndivResolutionTypes} {@link #nIndivResolutionNums} 有效
+     */
+    public int abIndivResolution;
+    /**
+     * 不同编码模式分别支持的视频分辨率个数
+     * 代表 {@link #stuIndivResolutionTypes} 各个第二维数组的有效长度 其数组下标和本字段的下标精确匹配
+     */
+    public int[] nIndivResolutionNums = new int[CFG_MAX_COMPRESSION_TYPES_NUM];
+
+    public NET_STREAM_CFG_CAPS() {
+        dwSize = this.size();
+        for (int i = 0; i < stuResolutionTypes.length; i++) {
+            stuResolutionTypes[i] = new NetSDKLib.NET_RESOLUTION_INFO();
+        }
+        for (int i = 0; i < stuIndivResolutionTypes.length; i++) {
+            stuIndivResolutionTypes[i] = new NET_RESOLUTION_INFO_ARRAY();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_LOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_LOG.java
new file mode 100644
index 0000000..4f0b52e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_LOG.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志结构体
+ * @author 47081
+ */
+public class NET_STU_LOG extends NetSDKLib.SdkStructure {
+    /**
+     * 日志备注信息
+     */
+    public byte[]            szLogContext=new byte[64];
+    /**
+     * 日志旧的结构体的对齐后结构体
+     */
+    public NET_STU_OLD_LOG   stuOldLog;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_OLD_LOG.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_OLD_LOG.java
new file mode 100644
index 0000000..da6aab2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_STU_OLD_LOG.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 旧的日志结构体,为了和新的对齐
+ * @author 47081
+ */
+public class NET_STU_OLD_LOG extends NetSDKLib.SdkStructure {
+    /**
+     * 旧的日志结构体
+     */
+    public SDK_LOG_ITEM stuLog;
+    /**
+     * 保留
+     */
+    public byte[]          bReserved=new byte[48];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java
new file mode 100644
index 0000000..fec4cb7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBBIZ_DISCONNECT_CALLBACK.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 251823
+ * @description 分压连接断线回调信息
+ * @date 2022/11/03 10:09:28
+ */
+public class NET_SUBBIZ_DISCONNECT_CALLBACK extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备网络信息
+	 */
+	public NET_DEV_NETWORK_INFO stuDevNetInfo = new NET_DEV_NETWORK_INFO();
+	/**
+	 * 用户数据
+	 */
+	public Pointer dwUserData;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_SUBBIZ_DISCONNECT_CALLBACK() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java
new file mode 100644
index 0000000..24a0c8c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SUBLINK_SERVER_CALLBACK.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+子链接监听服务回调信息
+*/
+public class NET_SUBLINK_SERVER_CALLBACK extends NetSDKLib.SdkStructure {
+/** 
+/< 子连接状态  {@link com.netsdk.lib.enumeration.EM_SUBLINK_STATE }
+*/
+public			int					emSubLinkState;
+/** 
+/< 设备网络信息
+*/
+public NET_DEV_NETWORK_INFO stuDevNetInfo=new NET_DEV_NETWORK_INFO();
+/** 
+/< 用户数据 LDWORD
+*/
+public Pointer dwUserData;
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS.java
new file mode 100644
index 0000000..8872e35
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+public class NET_SYSTEM_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  CPU状态 NET_CPU_STATUS
+     */
+    public Pointer pstuCPU;
+
+    /**
+     *  内存状态 NET_MEMORY_STATUS
+     */
+    public Pointer pstuMemory;
+
+    /**
+     *  风扇状态 NET_FAN_STATUS
+     */
+    public Pointer pstuFan;
+
+    /**
+     *  电源状态 NET_POWER_STATUS
+     */
+    public Pointer pstuPower;
+
+    /**
+     *  温度状态 NET_TEMPERATURE_STATUS
+     */
+    public Pointer pstuTemp;
+
+    public NET_SYSTEM_STATUS(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java
new file mode 100644
index 0000000..acf8951
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_SYSTEM_STATUS_CHECK_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 系统检测状态
+ * @date 2023/03/15 21:47:18
+ */
+public class NET_SYSTEM_STATUS_CHECK_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 检测使能
+	 */
+	public int bEnable;
+	/**
+	 * 禁止布防的条件,当其中一个或多个状态且对应项的值为true时,报警主机应能禁止布防
+	 */
+	public NET_PREVENTION_OF_ARMING_INFO stuPreventionOfArming = new NET_PREVENTION_OF_ARMING_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[512];
+
+	public NET_SYSTEM_STATUS_CHECK_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DETAIL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DETAIL_INFO.java
new file mode 100644
index 0000000..62bdb8c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DETAIL_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 设备信息格式
+ * @origin autoTool
+ * @date 2023/10/26 09:34:53
+ */
+public class NET_TALK_DEV_DETAIL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 设备在组网中的父节点
+     */
+    public byte[] szNode = new byte[32];
+    /**
+     * / 设备的通讯录信息
+     */
+    public NET_VT_CONTACTINFO_INFO stuContactInfo = new NET_VT_CONTACTINFO_INFO();
+    /**
+     * / 设备类型前端设备, 0:未知, 1:前端 – VTAVTO, 2:后端 other
+     */
+    public int nDevType;
+    /**
+     * / 前端设备详细信息
+     */
+    public NET_TALK_DEV_FRONT_DEV_INFO stuFrontDevInfo = new NET_TALK_DEV_FRONT_DEV_INFO();
+    /**
+     * / 保留字段
+     */
+    public byte[] szResvered = new byte[248];
+
+    public NET_TALK_DEV_DETAIL_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DO_FIND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DO_FIND_INFO.java
new file mode 100644
index 0000000..9e6acd3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_DO_FIND_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 查询信息数据
+ * @origin autoTool
+ * @date 2023/10/26 10:05:01
+ */
+public class NET_TALK_DEV_DO_FIND_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 更新后的数据信息
+     */
+    public NET_TALK_DEV_DETAIL_INFO stuInfo = new NET_TALK_DEV_DETAIL_INFO();
+    /**
+     * / 设备编号
+     */
+    public int nRecNo;
+    /**
+     * / 保留字段
+     */
+    public byte[] szResvered = new byte[60];
+
+    public NET_TALK_DEV_DO_FIND_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_FRONT_DEV_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_FRONT_DEV_INFO.java
new file mode 100644
index 0000000..7b34db6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_FRONT_DEV_INFO.java
@@ -0,0 +1,88 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description VTOInfo的格式
+ * @origin autoTool
+ * @date 2023/10/26 09:34:52
+ */
+public class NET_TALK_DEV_FRONT_DEV_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 是否使能
+     */
+    public int bEnable;
+    /**
+     * / Ip地址
+     */
+    public byte[] szAddress = new byte[40];
+    /**
+     * / 对讲协议端口
+     */
+    public int nPort;
+    /**
+     * / 前端设备类型类型, "Vto": 单元门口机, "Wall": 围墙机, "Visitor": 访客机
+     */
+    public byte[] szType = new byte[32];
+    /**
+     * / 中号
+     */
+    public byte[] szMiddleNumber = new byte[16];
+    /**
+     * / 设备所处位置
+     */
+    public byte[] szMachineAddress = new byte[64];
+    /**
+     * / 设备呼叫室内机,室内机的铃声文件
+     */
+    public byte[] szRingFile = new byte[64];
+    /**
+     * / 设备呼叫室内机,室内机的铃声大小
+     */
+    public int nRingVolume;
+    /**
+     * / 设备的Rtsp端口
+     */
+    public int nRtspPort;
+    /**
+     * / Dtmf1开锁码
+     */
+    public byte[] szUnlockDtmf1 = new byte[32];
+    /**
+     * / Dtmf2开锁码
+     */
+    public byte[] szUnlockDtmf2 = new byte[32];
+    /**
+     * / 三代登陆用户
+     */
+    public byte[] szUsername = new byte[32];
+    /**
+     * / 三代登陆密码
+     */
+    public byte[] szPassword = new byte[32];
+    /**
+     * / 设备可支持锁数量
+     */
+    public int nLockNumber;
+    /**
+     * / 联动IPC的配置信息
+     */
+    public byte[] szLinkIPC = new byte[32];
+    /**
+     * / 设备设备序列号
+     */
+    public byte[] szSN = new byte[32];
+    /**
+     * / 是否使用设备所处位置扩展字段
+     */
+    public int bMachineAddressEx;
+    /**
+     * / 设备所处位置扩展
+     */
+    public byte[] szMachineAddressEx = new byte[256];
+
+    public NET_TALK_DEV_FRONT_DEV_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_UPDATE_INFO.java
new file mode 100644
index 0000000..49cf7f6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TALK_DEV_UPDATE_INFO.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 批量更新的数据
+ * @origin autoTool
+ * @date 2023/10/26 09:52:01
+ */
+public class NET_TALK_DEV_UPDATE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 更新后的数据信息
+     */
+    public NET_TALK_DEV_DETAIL_INFO stuInfo = new NET_TALK_DEV_DETAIL_INFO();
+    /**
+     * / 设备编号
+     */
+    public int nRecNo;
+    /**
+     * / 保留字段
+     */
+    public byte[] szResvered = new byte[60];
+
+    public NET_TALK_DEV_UPDATE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java
new file mode 100644
index 0000000..0fe08e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATUREEX_VALUE.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 每个监测点的温度
+ * @date 2022/05/12 16:32:08
+ */
+public class NET_TEMPERATUREEX_VALUE extends NetSDKLib.SdkStructure {
+	/**
+	 * 温度类型 {@link com.netsdk.lib.enumeration.EM_TEMPERATUREEX_TYPE}
+	 */
+	public int emTemperatureType;
+	/**
+	 * 返回的有效温度值个数
+	 */
+	public int nRetTemperatureNum;
+	/**
+	 * 温度值,单位:摄氏度
+	 */
+	public float[] fTemperature = new float[64];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[128];
+
+	public NET_TEMPERATUREEX_VALUE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_INFO.java
new file mode 100644
index 0000000..1d7824b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_DEVICE_NAME_LEN;
+
+/**
+ * className:NET_TEMPERATURE_INFO
+ * description:温度信息
+ * author:251589
+ * createTime:2021/2/25 14:33
+ *
+ * @version v1.0
+ */
+
+public class NET_TEMPERATURE_INFO  extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  传感器名称
+     */
+    public byte[] szName = new byte[NET_DEVICE_NAME_LEN];
+
+    /**
+     *  温度
+     */
+    public float fTemperature;
+
+    public NET_TEMPERATURE_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java
new file mode 100644
index 0000000..e151cae
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATISTICS_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 温度统计信息
+ * @date 2021/2/22
+ */
+public class NET_TEMPERATURE_STATISTICS_INFO extends NetSDKLib.SdkStructure {
+  /** 总人数 */
+  public int nTotalCount;
+  /** 超温次数 */
+  public int nHighTempCount;
+  /** 低的温度次数 */
+  public int nLowTempCount;
+  /** 体温正常次数 */
+  public int nNormalTempCount;
+  /** 未带口罩总人数 */
+  public int nNoMaskCount;
+  /** 记录编号 */
+  public int nTimeKey;
+  /** 预留字段 */
+  public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATUS.java
new file mode 100644
index 0000000..96bf953
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEMPERATURE_STATUS.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_MAX_TEMPERATURE_NUM;
+
+/**
+ * className:NET_TEMPERATURE_STATUS
+ * description:温度状态
+ * author:251589
+ * createTime:2021/2/25 14:34
+ *
+ * @version v1.0
+ */
+
+public class NET_TEMPERATURE_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * dwSize;
+     */
+    public int dwSize;
+    /**
+     *  查询是否成功
+     */
+    public int bEnable;
+
+    /**
+     *  温度数量
+     */
+    public int nCount;
+
+    /**
+     *  温度信息
+     */
+    public NET_TEMPERATURE_INFO[] stuTemps = (NET_TEMPERATURE_INFO[]) new NET_TEMPERATURE_INFO().toArray(NET_MAX_TEMPERATURE_NUM);
+
+    public NET_TEMPERATURE_STATUS(){
+        this.dwSize = this.size();
+        for (int i = 0; i < stuTemps.length; i++) {
+        	stuTemps[i] = new NET_TEMPERATURE_INFO();
+		}
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEST_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEST_RESULT.java
new file mode 100644
index 0000000..cc6f2e6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TEST_RESULT.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description ESD阻值测试结果
+ * @date 2021/8/20 11:56
+ */
+public class NET_TEST_RESULT extends NetSDKLib.SdkStructure  {
+    public  int						nHandValue;					// k欧姆(阻值单位)
+    public  int						nLeftFootValue;				// k欧姆(阻值单位)
+    public  int						nRightFootValue;			// k欧姆(阻值单位)
+    /**  EM_ESD_RESULT */
+    public  int				emEsdResult;				// 测试结果
+    public byte[]               			bReserved=new byte[128];		        // 预留字节
+
+
+}
+
+
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..ec78c0e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THERMAL_IMAGE_MEASURE_MODE_PARAM.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 热成像模式下参数
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public class NET_THERMAL_IMAGE_MEASURE_MODE_PARAM extends NetSDKLib.SdkStructure {
+
+    /**
+     *  人脸比对阈值
+     */
+    public int					nFaceCompareThreshold;
+
+    /**
+     *  热成像温度保留时间(s)	(人脸无法比对通过时,通过刷卡等其他方式验证权限,找到人员底库后再去热成像设备进行比对,此字段用于温度保存多少时间)    
+     */
+    public int					nRetentionTime;
+
+    /**
+     *  上报高的温度事件的最大距离,在此距离内测到高的温度直接上报(cm)    
+     */
+    public int					nOverTempMaxDistance;
+
+    /**
+     * 预留字段
+     */
+    public byte[]					byReserved = new byte[1020];
+
+    @Override
+    public String toString() {
+        return "NET_THERMAL_IMAGE_MEASURE_MODE_PARAM{" +
+                "nFaceCompareThreshold=" + nFaceCompareThreshold +
+                ", nRetentionTime=" + nRetentionTime +
+                ", nOverTempMaxDistance=" + nOverTempMaxDistance +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java
new file mode 100644
index 0000000..8cdb723
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_DEVLIST_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备列表
+ * @date 2022/04/20 11:31:57
+ */
+public class NET_THINGS_DEVLIST_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * "1","2"等
+     */
+    public byte[] szDevID = new byte[128];
+    /**
+     * "001","002"等
+     */
+    public byte[] szDevClass = new byte[128];
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA.java
new file mode 100644
index 0000000..b47b1be
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 历史数据内容
+ * @date 2022/04/20 11:31:57
+ */
+public class NET_THINGS_HISTORYDATA extends NetSDKLib.SdkStructure {
+    /**
+     * 标识符, "CZSJ_ZMZTGB"等
+     */
+    public byte[] szEventID = new byte[32];
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[32];
+    /**
+     * 设备序列ID
+     */
+    public byte[] szDevSN = new byte[64];
+    /**
+     * 数据时间
+     */
+    public NET_TIME_EX stuEventTime = new NET_TIME_EX();
+    /**
+     * 产品ID
+     */
+    public byte[] szProductID = new byte[32];
+    /**
+     * 序号
+     */
+    public int nOrder;
+    /**
+     * 实际返回的pstuProInfo个数
+     */
+    public int nRetProInfoNum;
+    /**
+     * 用户分配的pstuProInfo个数
+     */
+    public int nMaxProInfoNum;
+    /**
+     * 查询结果物模型属性信息,用户分配内存,大小为 nMaxProInfoNum * sizeof{@link NET_THINGS_HISTORYDATA_PROPER_INFO}
+     * 格式:参数含义;参数名称;数据类型
+     * 1. 当前状态;DQZT;bool
+     * 2. 分合闸原因;FHZYY;int
+     * 3. 事件动作;Happen; int
+     * 4. 对应值;DYZ;int
+     * 5. 报警动作;Action; int
+     * 6. A相对应值;DYZA;int
+     * 7. B相对应值;DYZB;int
+     * 8. C相对应值;DYZC;int
+     * 9. 检测结果;JCJG;bool
+     * 10. 失败原因;SBYY;string
+     * 11. 设备ID;SBID;string
+     * 12. 变更类型;BGLX;int
+     * 13. 任务ID;RWID;string
+     * 14. 执行时间;ZXSJ;string
+     * 15. 失败原因;SBYY;string
+     * 16. 执行参数; CJXX_ZMZT; bool
+     * 17. 执行结果;ZXJG;bool
+     */
+    public Pointer pstuProInfo;
+    /**
+     * null
+     */
+    public byte[] szReserve = new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java
new file mode 100644
index 0000000..b19cbe7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_HISTORYDATA_PROPER_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 查询结果物模型属性信息
+ * @date 2022/04/20 11:31:56
+ */
+public class NET_THINGS_HISTORYDATA_PROPER_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * DQZT、FHZYY、Action等
+     */
+    public byte[] szKey = new byte[64];
+    /**
+     * 1,true,"normal"等
+     */
+    public byte[] szValue = new byte[256];
+    /**
+     * szValue对应的类型;有int,bool,string类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+     */
+    public int emValueType;
+    /**
+     * stuIntArrayValue实际个数
+     */
+    public int nIntArrayValueNum;
+    /**
+     * int+Array值,当emValueType为EM_PROPERTIES_VALUE_INTARRAY
+     */
+    public NET_PROPERTIES_INTARRAY_VALUE[] stuIntArrayValue = (NET_PROPERTIES_INTARRAY_VALUE[]) new NET_PROPERTIES_INTARRAY_VALUE().toArray(64);
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java
new file mode 100644
index 0000000..104d05a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_ACTION_SETPROPERTY.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 260611
+* @description  设置设备属性类型内容(对应EM_THINGS_ACTION_TYPE_SETPROPERTY) 
+* @date 2022/04/20 11:28:14
+*/
+public class NET_THINGS_RULECONTENT_ACTION_SETPROPERTY extends NetSDKLib.SdkStructure {
+/** 
+设备类型
+*/
+public			byte[]					szProductId=new byte[64];
+/** 
+设备名称
+*/
+public			byte[]					szDeviceName=new byte[32];
+/** 
+属性名称
+*/
+public			byte[]					szPropertyName=new byte[32];
+/** 
+属性值
+*/
+public			byte[]					szPropertyValue=new byte[32];
+/** 
+属性值类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+*/
+public			int					emPropertyValueType;
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java
new file mode 100644
index 0000000..7530da0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_CONDITION_PROPERTY.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 260611
+* @description  设备属性过滤内容(对应EM_THINGS_CONDITION_TYPE_PROPERTY) 
+* @date 2022/04/20 11:28:15
+*/
+public class NET_THINGS_RULECONTENT_CONDITION_PROPERTY extends NetSDKLib.SdkStructure {
+/** 
+设备类型
+*/
+public			byte[]					szProductId=new byte[64];
+/** 
+设备名称
+*/
+public			byte[]					szDeviceName=new byte[32];
+/** 
+属性名称
+*/
+public			byte[]					szPropertyName=new byte[32];
+/** 
+对比格式:< ==等
+*/
+public			byte[]					szCompareType=new byte[8];
+/** 
+对比值
+*/
+public			byte[]					szCompareValue=new byte[32];
+/** 
+对比值类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+*/
+public			int					emCompareValueType;
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java
new file mode 100644
index 0000000..5be2de6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_PROPERTY.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备属性触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY)
+ * @date 2022/04/20 11:28:14
+ */
+public class NET_THINGS_RULECONTENT_TRIGGER_PROPERTY extends NetSDKLib.SdkStructure {
+    /**
+     * 设备类型
+     */
+    public byte[] szProductId = new byte[64];
+    /**
+     * 设备名称
+     */
+    public byte[] szDeviceName = new byte[32];
+    /**
+     * 属性名称
+     */
+    public byte[] szPropertyName = new byte[32];
+    /**
+     * 对比格式:< ==等
+     */
+    public byte[] szCompareType = new byte[8];
+    /**
+     * 对比值
+     */
+    public byte[] szCompareValue = new byte[32];
+    /**
+     * 对比值类型 {@link com.netsdk.lib.enumeration.EM_PROPERTIES_VALUE_TYPE}
+     */
+    public int emCompareValueType;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java
new file mode 100644
index 0000000..92ed62b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_RULECONTENT_TRIGGER_TIMER.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 260611
+* @description  定时触发类型内容(对应EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER) 
+* @date 2022/04/20 11:28:15
+*/
+public class NET_THINGS_RULECONTENT_TRIGGER_TIMER extends NetSDKLib.SdkStructure {
+/** 
+Cron时间格式
+*/
+public			NET_THINGS_TRIGGER_TIMER_CORN					stuCron=new NET_THINGS_TRIGGER_TIMER_CORN();
+/** 
+Corn表达式类 {@link com.netsdk.lib.enumeration.EM_THINGS_TRIGGER_TIMER_CORN_TYPE}
+*/
+public			int					emCronType;
+/** 
+时区,示例:Asia/Shanghai
+*/
+public			byte[]					szTimezoneID=new byte[64];
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java
new file mode 100644
index 0000000..33b0f6c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备状态数据
+ * @date 2022/04/20 10:50:24
+ */
+public class NET_THINGS_SERVICE_CURRENTSTATUSGET_STATUS extends NetSDKLib.SdkStructure {
+    /**
+     * 设备ID
+     */
+    public byte[] szDeviceID = new byte[64];
+    /**
+     * 报警状态 {@link com.netsdk.lib.enumeration.EM_THINGS_CURRENTSTATUSGET_STATUS}
+     */
+    public int emStatus;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java
new file mode 100644
index 0000000..9933a92
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_DELDEVICE_LIST.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 子设备ID
+ * @date 2022/04/20 10:50:23
+ */
+public class NET_THINGS_SERVICE_DELDEVICE_LIST extends NetSDKLib.SdkStructure {
+    /**
+     * 子设备ID
+     */
+    public byte[] szDevieID = new byte[64];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[512];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java
new file mode 100644
index 0000000..3f038fc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULECONTENT.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 联动规则
+ * @date 2022/04/20 11:28:15
+ */
+public class NET_THINGS_SERVICE_QUERULE_RULECONTENT extends NetSDKLib.SdkStructure {
+    /**
+     * 场景规则类型 {@link com.netsdk.lib.enumeration.EM_THINGS_RULECONTENT_TYPE}
+     */
+    public int emRuleContentType;
+    /**
+     * 用户分配的pstuTrigger个数
+     */
+    public int nMaxTriggerNum;
+    /**
+     * 实际返回的pstuTrigger个数
+     */
+    public int nRetTriggerNum;
+    /**
+     * 场景的触发器,用户分配内存,大小为nMaxTriggerNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_TRIGGER}
+     */
+    public Pointer pstuTrigger;
+    /**
+     * 用户分配的pstuAction个数
+     */
+    public int nMaxActionNum;
+    /**
+     * 实际返回的pstuAction个数
+     */
+    public int nRetActionNum;
+    /**
+     * 场景触发执行动作,用户分配内存,大小为nMaxActionNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_ACTION}
+     */
+    public Pointer pstuAction;
+    /**
+     * 用户分配的pstuCondition个数
+     */
+    public int nMaxConditionNum;
+    /**
+     * 实际返回的pstuCondition个数
+     */
+    public int nRetConditionNum;
+    /**
+     * 场景触发过滤条件,用户分配内存,大小为nMaxConditionNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_CONDITION}
+     */
+    public Pointer pstuCondition;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java
new file mode 100644
index 0000000..c2afc14
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_QUERULE_RULES.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 规则详情
+ * @date 2022/04/20 11:28:15
+ */
+public class NET_THINGS_SERVICE_QUERULE_RULES extends NetSDKLib.SdkStructure {
+	/**
+	 * 结构体大小, 调用者必须初始化该字段
+	 */
+	public int dwSize;
+	/**
+	 * 使能
+	 */
+	public int bEnable;
+	/**
+	 * 规则ID
+	 */
+	public byte[] szRuleID = new byte[256];
+	/**
+	 * 联动规则内容
+	 */
+	public NET_THINGS_SERVICE_QUERULE_RULECONTENT stuRuleContent = new NET_THINGS_SERVICE_QUERULE_RULECONTENT();
+
+	public NET_THINGS_SERVICE_QUERULE_RULES() {
+		this.dwSize = this.size();
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java
new file mode 100644
index 0000000..636af0d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 场景的触发器
+ * @date 2022/04/20 10:50:21
+ */
+public class NET_THINGS_SERVICE_RULECONTENT extends NetSDKLib.SdkStructure {
+    /**
+     * 场景规则类型 {@link com.netsdk.lib.enumeration.EM_THINGS_RULECONTENT_TYPE}
+     */
+    public int emRuleContentType;
+    /**
+     * 场景触发个数
+     */
+    public int nTriggerNum;
+    /**
+     * 场景的触发器,用户分配内存,大小为nTriggerNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_TRIGGER}
+     */
+    public Pointer pstuTrigger;
+    /**
+     * 场景触发执行动作,用户分配内存,大小为nActionNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_ACTION}
+     */
+    public Pointer pstuAction;
+    /**
+     * 场景触发执行动作个数
+     */
+    public int nActionNum;
+    /**
+     * 场景触发过滤条件个数
+     */
+    public int nConditionNum;
+    /**
+     * 场景触发过滤条件,用户分配内存,大小为nConditionNum * sizeof{@link NET_THINGS_SERVICE_RULECONTENT_CONDITION}
+     */
+    public Pointer pstuCondition;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java
new file mode 100644
index 0000000..e478af8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_ACTION.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 场景触发执行动作
+ * @date 2022/04/20 11:28:14
+ */
+public class NET_THINGS_SERVICE_RULECONTENT_ACTION extends NetSDKLib.SdkStructure {
+    /**
+     * 场景触发执行动作类型,见EM_THINGS_ACTION_TYPE {@link com.netsdk.lib.enumeration.EM_THINGS_ACTION_TYPE}
+     */
+    public int emActionUri;
+    /**
+     * 设置设备属性,emUri为EM_THINGS_ACTION_TYPE_SETPROPERTY有效
+     */
+    public NET_THINGS_RULECONTENT_ACTION_SETPROPERTY stuActionSetProperty = new NET_THINGS_RULECONTENT_ACTION_SETPROPERTY();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java
new file mode 100644
index 0000000..5c2d8b5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_CONDITION.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 场景触发过滤条件
+ * @date 2022/04/20 11:28:15
+ */
+public class NET_THINGS_SERVICE_RULECONTENT_CONDITION extends NetSDKLib.SdkStructure {
+    /**
+     * 场景触发过滤条件类型,见EM_THINGS_CONDITION_TYPE {@link com.netsdk.lib.enumeration.EM_THINGS_CONDITION_TYPE}
+     */
+    public int emConditionUri;
+    /**
+     * 比较当前时间是否在一个区间内,emConditionUri为EM_THINGS_CONDITION_TYPE_TIMERANGE有效
+     */
+    public NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer = new NET_THINGS_RULECONTENT_TRIGGER_TIMER();
+    /**
+     * 设置设备属性,emConditionUri为EM_THINGS_CONDITION_TYPE_PROPERTY有效
+     */
+    public NET_THINGS_RULECONTENT_CONDITION_PROPERTY stuConditionProperty = new NET_THINGS_RULECONTENT_CONDITION_PROPERTY();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java
new file mode 100644
index 0000000..cd437d3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_SERVICE_RULECONTENT_TRIGGER.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 场景的触发器
+ * @date 2022/04/20 11:28:14
+ */
+public class NET_THINGS_SERVICE_RULECONTENT_TRIGGER extends NetSDKLib.SdkStructure {
+    /**
+     * 场景的触发类型,见EM_THINGS_TRIGGER_TYPE {@link com.netsdk.lib.enumeration.EM_THINGS_TRIGGER_TYPE}
+     */
+    public int emUri;
+    /**
+     * 定时触发,emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_TIMER有效
+     */
+    public NET_THINGS_RULECONTENT_TRIGGER_TIMER stuTriggerTimer = new NET_THINGS_RULECONTENT_TRIGGER_TIMER();
+    /**
+     * 设备属性触发,emUri为EM_THINGS_TRIGGER_TYPE_TRIGGER_PROPERTY有效
+     */
+    public NET_THINGS_RULECONTENT_TRIGGER_PROPERTY stuTriggerProperty = new NET_THINGS_RULECONTENT_TRIGGER_PROPERTY();
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java
new file mode 100644
index 0000000..412a392
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_START_HISTORYDATA_TOPICS.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 历史数据主题列表
+ * @date 2022/04/20 10:16:55
+ */
+public class NET_THINGS_START_HISTORYDATA_TOPICS extends NetSDKLib.SdkStructure {
+    /**
+     * 历史数据具体内容,即历史数据分类由物模型定义决定,可以不填,默认下""
+     */
+    public byte[] szTopics = new byte[32];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserve = new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java
new file mode 100644
index 0000000..bc59e9b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_THINGS_TRIGGER_TIMER_CORN.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 260611
+* @description  定时触发类型Cron内容 
+* @date 2022/04/20 11:28:15
+*/
+public class NET_THINGS_TRIGGER_TIMER_CORN extends NetSDKLib.SdkStructure {
+/** 
+秒,值:0~59的整数以及特殊4个字符, - * /
+*/
+public			byte[]					szSeconds=new byte[8];
+/** 
+分,值:0~59的整数以及特殊4个字符, - * /
+*/
+public			byte[]					szMinutes=new byte[8];
+/** 
+时,值:0~23的整数以及特殊4个字符, - * /
+*/
+public			byte[]					szHours=new byte[8];
+/** 
+日期,值:1~31的整数(但是你需要考虑你月的天数)以及特殊8个字符, - * ? / L W C
+*/
+public			byte[]					szDayofMonth=new byte[8];
+/** 
+月份,值:1~12的整数或者 JAN-DEC以及特殊4个字符, - * /
+*/
+public			byte[]					szMonth=new byte[8];
+/** 
+星期,值:1~7的整数或者 SUN-SAT以及特殊8个字符, - * ? / L W C
+*/
+public			byte[]					szDayofWeek=new byte[8];
+/** 
+年,值:1970~2099的整数以及特殊4个字符, - * /
+*/
+public			byte[]					szYear=new byte[8];
+/** 
+保留字节
+*/
+public			byte[]					szReserve=new byte[256];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME.java
new file mode 100644
index 0000000..1cedd3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME.java
@@ -0,0 +1,76 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 时间
+ *
+ * @author 47081
+ */
+public class NET_TIME extends NetSDKLib.SdkStructure {
+  /** 年 */
+  public int dwYear;
+  /** 月 */
+  public int dwMonth;
+  /** 日 */
+  public int dwDay;
+  /** 时 */
+  public int dwHour;
+  /** 分 */
+  public int dwMinute;
+  /** 秒 */
+  public int dwSecond;
+
+  public NET_TIME() {
+    super();
+  }
+
+  public NET_TIME(int dwYear, int dwMonth, int dwDay, int dwHour, int dwMinute, int dwSecond) {
+    this.dwYear = dwYear;
+    this.dwMonth = dwMonth;
+    this.dwDay = dwDay;
+    this.dwHour = dwHour;
+    this.dwMinute = dwMinute;
+    this.dwSecond = dwSecond;
+  }
+
+  /**
+   * 字符串解析时间
+   *
+   * @param date 时间字符串,举例2020/5/20/12/20/34
+   */
+  public NET_TIME(String date) {
+    String[] dates = date.split("/");
+    this.dwYear = Integer.parseInt(dates[0]);
+    this.dwMonth = Integer.parseInt(dates[1]);
+    this.dwDay = Integer.parseInt(dates[2]);
+    this.dwHour = Integer.parseInt(dates[3]);
+    this.dwMinute = Integer.parseInt(dates[4]);
+    this.dwSecond = Integer.parseInt(dates[5]);
+  }
+
+  // 用于列表中显示
+  public String toStringTime() {
+    return String.format(
+        "%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+  }
+
+  public String toStringTimeEx() {
+    return String.format(
+        "%02d-%02d-%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+  }
+
+  public String toString() {
+    return String.format(
+        "%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+  }
+
+  public Date toDate() {
+    Calendar instance = Calendar.getInstance();
+    instance.set(this.dwYear, this.dwMonth, this.dwDay, this.dwHour, this.dwMinute, this.dwSecond);
+    return instance.getTime();
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX.java
new file mode 100644
index 0000000..20b6c2b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ *     <p>\else
+ *     <p>\endif
+ * @date 2020/8/11
+ */
+public class NET_TIME_EX extends NetSDKLib.SdkStructure {
+  /** 年 */
+  public int dwYear;
+  /** 月 */
+  public int dwMonth;
+  /** 日 */
+  public int dwDay;
+  /** 时 */
+  public int dwHour;
+  /** 分 */
+  public int dwMinute;
+  /** 秒 */
+  public int dwSecond;
+  /** 毫秒 */
+  public int dwMillisecond;
+  /** utc时间(获取时0表示无效,非0有效 下发无效) */
+  public int dwUTC;
+  /** 保留字段 */
+  public int[] dwReserved = new int[1];
+
+  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;
+    this.dwMillisecond = 0;
+  }
+
+  public String toString() {
+    return dwYear + "/" + dwMonth + "/" + dwDay + " " + dwHour + ":" + dwMinute + ":" + dwSecond;
+  }
+
+  // 用于列表中显示
+  public String toStringTime() {
+    return String.format(
+        "%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+  }
+
+  // 存储文件名使用
+  public String toStringTitle() {
+    return String.format(
+        "Time_%02d%02d%02d_%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX1.java
new file mode 100644
index 0000000..35218e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_EX1.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 时间拓展结构体
+ * @date 2020/9/10
+ */
+public class NET_TIME_EX1 extends NetSDKLib.SdkStructure {
+    /**
+     * 时
+     */
+    public int dwHour;
+    /**
+     * 分
+     */
+    public int dwMinute;
+    /**
+     * 秒
+     */
+    public int dwSecond;
+
+    public String toTime() {
+        return dwHour + ":" + dwMinute + ":" + dwSecond;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java
new file mode 100644
index 0000000..5dee9a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TIME_RECORDBACKUP_TASK.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_TIME_RECORDBACKUP_TASK  extends SdkStructure{
+	public int                      nChannelCount;                   // 通道有效个数
+	public int[]                    nChannels=new int[512];          // 通道号
+	public int[]                    nRemoteChannels=new int[512];    // 远程通道号
+	    
+	public byte[]                   szDeviceIP=new byte[64];         // IP地址
+	public int                      nPort;                           // 端口
+	public byte[]                   szUserName=new byte[64];         // 用户名
+	public byte[]                   szPassword=new byte[64];         // 密码
+	public NET_TIME_EX1             stuStartTime;                    // 开始时间
+	public NET_TIME_EX1             stuEndTime;                      // 结束时间
+	public byte[]                   szStorageGroupName=new byte[32]; // 保存的盘组名称 
+	public byte[]                   byReserved=new byte[512];        // 保留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_INFO_EXTERN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_INFO_EXTERN.java
new file mode 100644
index 0000000..fa4b98b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_INFO_EXTERN.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 交通车辆信息扩展
+ * @origin autoTool
+ * @date 2023/07/13 16:22:13
+ */
+public class NET_TRAFFICCAR_INFO_EXTERN extends NetSDKLib.SdkStructure {
+	/**
+	 * 记录集装箱编号个数
+	 */
+	public int nContainerNumber;
+	/**
+	 * 记录集装箱编号的文本内容数量
+	 */
+	public int nContainerTextNum;
+	/**
+	 * 记录集装箱编号的文本内容
+	 */
+	public byte[] szContainerText = new byte[8 * 64];
+	/**
+	 * dAverageSpeed字段是否有效
+	 */
+	public int bAverageSpeed;
+	/**
+	 * dSpaceOcpRatio字段是否有效
+	 */
+	public int bSpaceOcpRatio;
+	/**
+	 * 平均车速,单位km/h -1表示无车通过,0表示拥堵
+	 */
+	public double dAverageSpeed;
+	/**
+	 * 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+	 */
+	public double dSpaceOcpRatio;
+	/**
+	 表示集装箱的类型,具体取值以算法输出为准
+	 */
+	public			int					nContainerType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[2020];
+
+	public NET_TRAFFICCAR_INFO_EXTERN() {
+	}
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java
new file mode 100644
index 0000000..359a9f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICCAR_ORIGINAL_VEHICLE.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 车身抠图
+ * @date 2022/07/20 16:46:40
+ */
+public class NET_TRAFFICCAR_ORIGINAL_VEHICLE extends NetSDKLib.SdkStructure {
+    /**
+     * 在二进制数据块中的偏移
+     */
+    public int nOffset;
+    /**
+     * 数据大小,单位:字节
+     */
+    public int nLength;
+    /**
+     * 在上传图片数据中的图片序号
+     */
+    public int nIndexInData;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[60];
+
+    public NET_TRAFFICCAR_ORIGINAL_VEHICLE() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java
new file mode 100644
index 0000000..880093e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_CHANNEL_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_TRAFFICLIGHT_CHANNEL_INFO
+ * description:
+ * author:251589
+ * createTime:2021/1/19 15:08
+ *
+ * @version v1.0
+ */
+public class NET_TRAFFICLIGHT_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  检测通道
+     */
+    public int nChannel;
+
+    /**
+     *  进口方向
+     */
+    public int emEntryDirection;
+
+    /**
+     *  进口类型
+     */
+    public int[] emEntryType = new int[32];
+    /**
+     *  进口类型个数
+     */
+    public int nRetEntryTypeNum;
+
+    /**
+     *  红绿灯状态
+     */
+    public int emLightState;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[368];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java
new file mode 100644
index 0000000..dfeb85f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFICLIGHT_INFO.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_TRAFFICLIGHT_INFO
+ * description:交通信号灯信息
+ * author:251589
+ * createTime:2021/1/19 15:04
+ *
+ * @version v1.0
+ */
+public class NET_TRAFFICLIGHT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     *  UTC时间, 发生红绿灯切换时的时间, 本地时区
+     */
+    public NET_TIME stuUTC;
+
+    /**
+     *  stuChannels 有效个数
+     */
+    public int nRetChannelNum;
+
+    /**
+     *  通道信息
+     */
+    public NET_TRAFFICLIGHT_CHANNEL_INFO[] stuChannels = (NET_TRAFFICLIGHT_CHANNEL_INFO[])new NET_TRAFFICLIGHT_CHANNEL_INFO().toArray(32);
+
+    /**
+     *  nLightChangedChannels 有效个数
+     */
+    public int nRetLightChangedNum;
+
+    /**
+     *  发生红绿灯变换的通道
+     */
+    public int[] nLightChangedChannels = new int[32];
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[512];
+
+    public NET_TRAFFICLIGHT_INFO(){
+        for (int i = 0; i < stuChannels.length; i++){
+            stuChannels[i] = new NET_TRAFFICLIGHT_CHANNEL_INFO();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java
new file mode 100644
index 0000000..e7a45c6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ACCIDENT_RULE_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ACCIDENT_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public	int							nDetectRegionPoint;	
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public	int							nLaneNumber;
+	/**
+	 * 最短触发时间,单位:秒
+	 */
+	public	int							nMinDuration;							
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public	int						bZoomEnable;
+	/**
+	 * 变倍停留时间,单位:秒,在ZoomEnable为true时有效,为0时表示不停留,默认为0
+	 */
+	public	int						nZoomStayTime;			
+	/**
+	 * 车辆触发报警时间阈值,大于该阈值认为是交通事件,单位:秒,范围0-3600
+	 */
+	public	int						nVehicleDelayTime;	
+	/**
+	 * 行人触发报警时间阈值,大于该阈值认为是交通事件,单位:秒,范围0-3600
+	 */
+	public	int						nPersonDelayTime;	
+	/**
+	 * 最大报警时长 超过此时间将不再报警,单位:秒,范围0-3600
+	 */
+	public	int						nMaxDelayTime;		
+	/**
+	 * 拥堵状态下的停车数阈值,用于拥堵造成的交通事故,不做报警
+	 */
+	public	int						nVehicleNumberThreshold;
+	/**
+	 * 追尾后停车时间阈值,超过阈值报警,单位ms 0~65535
+	 */
+	public	int						nWanderTime;	
+	/**
+	 * 重复报警时间,单位ms; 0~65535
+	 */
+	public	int						nRepeatTime;
+	/**
+	 * 是否需要关联行人才报警,false为不关联,true为关联
+	 */
+	public	int					    bRelateHuman;	
+	/**
+	 * 保留字节
+	 */
+	public	byte[]                        byReserved=new byte[4096];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java
new file mode 100644
index 0000000..b883078
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_BACKING_RULE_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_BACKING(倒车) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_BACKING_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuDirectionStart;
+	/**
+	 * 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public DH_POINT stuDirectionEnd;
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity; 
+	/**
+	 * 是否使能区域内触发该规则, false-不使能,true-使能
+	 */
+	public int						bAreaTrigEnable;	
+	/**
+	 * 方案参数, false-普通变道(只要变道一次即可),true -抓连续变道(变道2次及以上)
+	 */
+	public int						bContinueCrossLaneEnable;
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public int						bZoomEnable;		
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public int						bSnapMotorcycle;	
+	/**
+	 * 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理
+	 */
+	public int						nDelayTime;		
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public NET_CFG_SIZEFILTER_INFO 	stuSizeFileter;  
+	/**
+	 * 规则特定的尺寸过滤器是否有效
+	 */
+	public int                		bSizeFileter;                          
+	/**
+	 * 是否抓拍无牌车,true-抓拍无牌车 false-不抓拍无牌车
+	 */
+	public int						bSnapNoPlateMotor;		
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[4092];   
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java
new file mode 100644
index 0000000..0950883
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CAR_ATTRIBUTE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 车辆以图搜图时可选择的属性过滤条件
+ * @date 2022/11/21 17:53:18
+ */
+public class NET_TRAFFIC_CAR_ATTRIBUTE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 车身颜色的个数,最大值是32
+     */
+    public int nVehicleColorArrayNums;
+    /**
+     * 车身颜色,参考EM_OBJECT_COLOR_TYPE
+     */
+    public int[] emVehicleColorArray = new int[32];
+    /**
+     * 车辆类型的个数,最大值是32
+     */
+    public int nCategoryArrayNums;
+    /**
+     * 车辆类型,参考EM_NET_VEHICLE_TYPE
+     */
+    public int[] emCategoryArray = new int[32];
+    /**
+     * 车标
+     */
+    public byte[] szVehicleSign = new byte[64];
+    /**
+     * 车辆子品牌 需要通过映射表得到真正的子品牌 映射表详见开发手册
+     */
+    public int nSubBrand;
+    /**
+     * 车辆年款 需要通过映射表得到真正的年款 映射表详见开发手册
+     */
+    public int nBrandYear;
+    /**
+     * 是否有摆件, 0: 不限  1: 无  2: 有
+     */
+    public int nFurniture;
+    /**
+     * 是否有挂件, 0: 不限  1: 无  2: 有
+     */
+    public int nPendant;
+    /**
+     * 是否有年检标, 0: 不限  1: 无  2: 有
+     */
+    public int nAnnualInspection;
+    /**
+     * 是否有遮阳板, 0: 不限  1: 无  2: 有
+     */
+    public int nSunShade;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[256];
+
+    public NET_TRAFFIC_CAR_ATTRIBUTE_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java
new file mode 100644
index 0000000..4590610
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_CROSSLANE_RULE_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_CROSSLANE(违章变道事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_CROSSLANE_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuDirectionStart;
+	/**
+	 * 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public DH_POINT stuDirectionEnd;
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity; 
+	/**
+	 * 是否使能区域内触发该规则, false-不使能,true-使能
+	 */
+	public int						bAreaTrigEnable;	
+	/**
+	 * 方案参数, false-普通变道(只要变道一次即可),true -抓连续变道(变道2次及以上)
+	 */
+	public int						bContinueCrossLaneEnable;
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public int						bZoomEnable;		
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public int						bSnapMotorcycle;	
+	/**
+	 * 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理
+	 */
+	public int						nDelayTime;		
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public NET_CFG_SIZEFILTER_INFO 	stuSizeFileter; 
+	/**
+	 * 规则特定的尺寸过滤器是否有效
+	 */
+	public int                		bSizeFileter;                           
+	/**
+	 * 是否抓拍无牌车,true-抓拍无牌车 false-不抓拍无牌车
+	 */
+	public int						bSnapNoPlateMotor;		
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[4092];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java
new file mode 100644
index 0000000..4de24d8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_INFO_DIR.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @author : 260611
+ * @description : 车辆流量统计车辆行驶方向信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class NET_TRAFFIC_FLOWSTAT_INFO_DIR extends NetSDKLib.SdkStructure {
+    /**
+     * 行驶方向
+     */
+    public int emDrivingDir;
+    /**
+     * 上行地点
+     */
+    public byte[] szUpGoing = new byte[16];
+    /**
+     * 下行地点
+     */
+    public byte[] szDownGoing = new byte[16];
+    /**
+     * 保留字节
+     */
+    public byte[] reserved = new byte[32];
+
+    @Override
+    public String toString() {
+        try {
+            return "NET_TRAFFIC_FLOWSTAT_INFO_DIR{" +
+                    "emDrivingDir=" + emDrivingDir +
+                    ", szUpGoing UTF-8=" + new String(szUpGoing,"UTF-8").trim() +
+                    ", szUpGoing GBK=" + new String(szUpGoing,"GBK").trim() +
+                    ", szDownGoing UTF-8=" + new String(szDownGoing,"UTF-8").trim() +
+                    ", szDownGoing GBK=" + new String(szDownGoing,"GBK").trim() +
+                    '}';
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java
new file mode 100644
index 0000000..9872e6d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOWSTAT_RULE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_FLOWSTATE(交通流量统计事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_FLOWSTAT_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion = (com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;
+	/**
+	 * 规则检测线顶点数
+	 */
+	public int							nDetectLineNum;			
+	/**
+	 * 规则检测线
+	 */
+	public com.netsdk.lib.structure.DH_POINT[]				DetectLine = (com.netsdk.lib.structure.DH_POINT[])new DH_POINT().toArray(NetSDKLib.NET_MAX_DETECT_LINE_NUM);
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 统计周期,单位:分钟
+	 */
+	public int						nPeriod;
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[4096];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java
new file mode 100644
index 0000000..923237d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STAT.java
@@ -0,0 +1,89 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_DETECT_SENSOR_TYPE;
+import com.netsdk.lib.enumeration.EM_TRAFFIC_FLOW_STATUS;
+import com.netsdk.lib.enumeration.EM_VIRTUAL_COIL_OCCUPANCY_STATUS;
+
+/**
+ * @author : 47040
+ * @since : Created in 2020/12/17 11:38
+ */
+public class NET_TRAFFIC_FLOW_STAT extends NetSDKLib.SdkStructure {
+    /**
+     * 物理车道号
+     */
+    public int nLane;
+    /**
+     * 自定义车道号
+     */
+    public int nRoadwayNumber;
+    /**
+     * 流量状态 枚举 {@link EM_TRAFFIC_FLOW_STATUS}
+     */
+    public int emStatus;
+    /**
+     * 车头虚拟线圈状态, 即车进线圈 枚举 {@link EM_VIRTUAL_COIL_OCCUPANCY_STATUS}
+     */
+    public int emHeadCoil;
+    /**
+     * 车尾虚拟线圈状态, 即车出线圈 枚举 {@link EM_VIRTUAL_COIL_OCCUPANCY_STATUS}
+     */
+    public int emTailCoil;
+    /**
+     * 车道平均速度(单位:km/h)
+     */
+    public int nSpeed;
+    /**
+     * 排队长度(单位:cm)
+     */
+    public int nQueueLen;
+    /**
+     * 排队车辆数
+     */
+    public int nCarsInQueue;
+    /**
+     * 探测物体的传感器类型 {@link EM_DETECT_SENSOR_TYPE}
+     */
+    public int emSensorType;
+    /**
+     * 车头间距,相邻车辆之间的距离,单位米/辆
+     */
+    public double dbSpaceHeadway;
+    /**
+     * 车头时距,单位秒/辆
+     */
+    public double dbTimeHeadWay;
+    /**
+     * 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+     */
+    public double					dbSpaceOccRatio;
+    /**
+     * 车道中的所有车辆的数量,即车流量
+     */
+    public  int					nCarVehicles;
+
+    /**
+     * 保留字节
+     */
+    public byte[] byReserverd = new byte[228];
+
+    @Override
+    public String toString() {
+        return "NET_TRAFFIC_FLOW_STAT{" +
+                "nLane=" + nLane +
+                ", nRoadwayNumber=" + nRoadwayNumber +
+                ", emStatus=" + emStatus +
+                ", emHeadCoil=" + emHeadCoil +
+                ", emTailCoil=" + emTailCoil +
+                ", nSpeed=" + nSpeed +
+                ", nQueueLen=" + nQueueLen +
+                ", nCarsInQueue=" + nCarsInQueue +
+                ", emSensorType=" + emSensorType +
+                ", dbSpaceHeadway=" + dbSpaceHeadway +
+                ", dbTimeHeadWay=" + dbTimeHeadWay +
+                ", dbSpaceOccRatio=" + dbSpaceOccRatio +
+                ", nCarVehicles=" + nCarVehicles +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java
new file mode 100644
index 0000000..259c6e2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_FLOW_STATE.java
@@ -0,0 +1,394 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.util.Arrays;
+
+/**
+ * @author : 260611
+ * @description : NET_TRAFFIC_FLOW_STATE
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class NET_TRAFFIC_FLOW_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 车道号
+     */
+    public int nLane;
+    /**
+     * 状态值  若emJamState字段为有效值(不为 JAM_STATUS_UNKNOW) ,则dwState字段无效
+     */
+    public int dwState;
+    /**
+     * 流量值, 单位: 辆
+     */
+    public int dwFlow;
+    /**
+     * 流量值对应的统计时间, 单位:分钟。与dwPeriodByMili一起使用。
+     */
+    public int dwPeriod;
+    /**
+     * 车道方向信息
+     */
+    public NET_TRAFFIC_FLOWSTAT_INFO_DIR stTrafficFlowDir = new NET_TRAFFIC_FLOWSTAT_INFO_DIR();
+    /**
+     * 通过车辆总数
+     */
+    public int nVehicles;
+    /**
+     * 平均车速,单位km/h
+     */
+    public float fAverageSpeed;
+    /**
+     * 平均车长,单位米
+     */
+    public float fAverageLength;
+    /**
+     * 时间占有率,即单位时间内通过断面的车辆所用时间的总和占单位时间的比例
+     */
+    public float fTimeOccupyRatio;
+    /**
+     * 空间占有率,即按百分率计量的车辆长度总和除以时间间隔内车辆平均行驶距离
+     */
+    public float fSpaceOccupyRatio;
+    /**
+     * 车头间距,相邻车辆之间的距离,单位米/辆
+     */
+    public float fSpaceHeadway;
+    /**
+     * 车头时距,单位秒/辆
+     */
+    public float fTimeHeadway;
+    /**
+     * 车辆密度,每公里的车辆数,单位辆/km
+     */
+    public float fDensity;
+    /**
+     * 超速车辆数
+     */
+    public int nOverSpeedVehicles;
+    /**
+     * 低速车辆数
+     */
+    public int nUnderSpeedVehicles;
+    /**
+     * 大车交通量(9米<车长<12米),辆/单位时间
+     */
+    public int nLargeVehicles;
+    /**
+     * 中型车交通量(6米<车长<9米),辆/单位时间
+     */
+    public int nMediumVehicles;
+    /**
+     * 小车交通量(4米<车长<6米),辆/单位时间,
+     */
+    public int nSmallVehicles;
+    /**
+     * 摩托交通量(微型车,车长<4米),辆/单位时间,
+     */
+    public int nMotoVehicles;
+    /**
+     * 超长交通量(车长>=12米),辆/单位时间,
+     */
+    public int nLongVehicles;
+    /**
+     * 交通量, 辆/单位时间, 某时间间隔通过车道、道路或其他通道上一点的车辆数,常以1小时计,
+     */
+    public int nVolume;
+    /**
+     * 流率小车当量,辆/小时, 车辆通过车道、道路某一断面或某一路段的当量小时流量
+     */
+    public int nFlowRate;
+    /**
+     * 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离(建议废掉 改用dBackOfQueue下面)
+     */
+    public int nBackOfQueue;
+    /**
+     * 旅行时间,单位:秒, 车辆通过某一条道路所用时间。包括所有停车延误
+     */
+    public int nTravelTime;
+    /**
+     * 延误,单位:秒,驾驶员、乘客或行人花费的额外的行程时间
+     */
+    public int nDelay;
+    /**
+     * 车道方向,详见NET_ROAD_DIRECTION
+     */
+    public byte[] byDirection = new byte[16];
+    /**
+     * 车道行驶方向个数
+     */
+    public byte byDirectionNum;
+    /**
+     * 字节对齐
+     */
+    public byte[] reserved1 = new byte[3];
+    /**
+     * 道路拥挤状况  若此字段为有效值(不为 JAM_STATUS_UNKNOW) ,则以此字段为准, dwState字段无效
+     */
+    public int emJamState;
+    /**
+     * 客车交通量(辆/单位时间)
+     */
+    public int nPassengerCarVehicles;
+    /**
+     * 大货车交通量(辆/单位时间)
+     */
+    public int nLargeTruckVehicles;
+    /**
+     * 中货车交通量(辆/单位时间)
+     */
+    public int nMidTruckVehicles;
+    /**
+     * 轿车交通量(辆/单位时间)
+     */
+    public int nSaloonCarVehicles;
+    /**
+     * 面包车交通量(辆/单位时间)
+     */
+    public int nMicrobusVehicles;
+    /**
+     * 小货车交通量(辆/单位时间)
+     */
+    public int nMicroTruckVehicles;
+    /**
+     * 三轮车交通量(辆/单位时间)
+     */
+    public int nTricycleVehicles;
+    /**
+     * 摩托车交通量(辆/单位时间)
+     */
+    public int nMotorcycleVehicles;
+    /**
+     * 行人交通量(辆/单位时间)
+     */
+    public int nPasserbyVehicles;
+    /**
+     * 道路等级
+     */
+    public int emRank;
+    /**
+     * 流量状态
+     */
+    public int nState;
+    /**
+     * 车头虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用
+     */
+    public int bOccupyHeadCoil;
+    /**
+     * 车尾虚拟线圈是否被占用 TURE表示占用,FALSE表示未占用
+     */
+    public int bOccupyTailCoil;
+    /**
+     * 流量数据是否有效 TURE表示有效,FALSE表示无效
+     */
+    public int bStatistics;
+    /**
+     * 左转车辆总数,单位:分钟
+     */
+    public int nLeftVehicles;
+    /**
+     * 右转车辆总数,单位:分钟
+     */
+    public int nRightVehicles;
+    /**
+     * 直行车辆总数,单位:分钟
+     */
+    public int nStraightVehicles;
+    /**
+     * 掉头车辆总数,单位:分钟
+     */
+    public int nUTurnVehicles;
+    /**
+     * 每个车道的最后一辆车坐标,采用8192坐标系
+     */
+    public NetSDKLib.NET_POINT stQueueEnd = new NetSDKLib.NET_POINT();
+    /**
+     * 排队长度,单位:米, 从信号交叉口停车线到上游排队车辆末端之间的距离
+     */
+    public double dBackOfQueue;
+    /**
+     * 流量值的毫秒时间,值不超过60000,和dwPeriod一起使用,流量值总时间:dwPeriod*60*1000+dwPeriodByMili(单位:毫秒)
+     */
+    public int dwPeriodByMili;
+    /**
+     * 公交车交通量(辆/单位时间)
+     */
+    public int nBusVehicles;
+    /**
+     * MPV交通量(辆/单位时间)
+     */
+    public int nMPVVehicles;
+    /**
+     * 中客车交通量(辆/单位时间)
+     */
+    public int nMidPassengerCarVehicles;
+    /**
+     * 微型轿车交通量(辆/单位时间)
+     */
+    public int nMiniCarriageVehicles;
+    /**
+     * 油罐车交通量(辆/单位时间)
+     */
+    public int nOilTankTruckVehicles;
+    /**
+     * 皮卡车交通量(辆/单位时间)
+     */
+    public int nPickupVehicles;
+    /**
+     * SUV交通量(辆/单位时间)
+     */
+    public int nSUVVehicles;
+    /**
+     * SUV或者MPV交通量(辆/单位时间)
+     */
+    public int nSUVorMPVVehicles;
+    /**
+     * 槽罐车交通量(辆/单位时间)
+     */
+    public int nTankCarVehicles;
+    /**
+     * 未知车辆交通量(辆/单位时间)
+     */
+    public int nUnknownVehicles;
+    /**
+     * 车道流量信息属性
+     */
+    public int emCustomFlowAttribute;
+    /**
+     * 道路空闲长度,例:如设定路段长度为100米,实际检测到排队长度为30米,那么道路空闲长度就为70米,单位:米
+     */
+    public int nRoadFreeLength;
+    /**
+     * 溢出状态。例:如给当前路段设定允许排队长度阀值,实际排队长度超过阀值后就判定当前时刻该路段有溢出。
+     */
+    public int emOverflowState;
+    /**
+     * / 排队车辆数,单位:辆
+     */
+    public int nQueueVehicleNum;
+    /**
+     * / 空间占有率统计个数
+     */
+    public int nSpaceOccupyRatioMultiCount;
+    /**
+     * / 空间占有率统计信息
+     */
+    public NET_SPACE_OCCUPY_RATIO_MULTI[] stuSpaceOccupyRatioMulti = new NET_SPACE_OCCUPY_RATIO_MULTI[32];
+    /**
+     * / 停车次数,周期内该车道内所有目标的总停车次数,单位:次
+     */
+    public int nTotalStopNum;
+    /**
+     * / 延误时间,周期内该车道内所有目标的总延误时间,单位:毫秒
+     */
+    public int nTotalDelayTime;
+    /**
+     * / 目标总数量,周期内进入该车道内所有目标总数量,单位 辆
+     */
+    public int nTotalNum;
+    /**
+     * / 平均停车次数,周期内该车道所有目标的平均停车次数。单位:次
+     */
+    public float fAverageStopNum;
+    /**
+     * / 平均延误时间,周期内该车道所有目标的平均延误时间。单位:毫秒
+     */
+    public float fAverageDelayTime;
+    /**
+     * / 流量饱和度,该车道内的流量饱和度
+     */
+    public float fFlowSaturationRatio;
+    /**
+     * / 最大排队长度,周期内最大排队长度,单位:米
+     */
+    public float fMaxQueueLen;
+    /**
+     * / 排队开始位置,排队时队首距设备的位置,以设备方向为正,负数表示队首在设备后方,单位:米
+     */
+    public float fQueueStartingPoint;
+    /**
+     * / 排队结束位置,排队时队尾距设备的位置,以设备方向为正,负数表示队尾在设备后方,单位:米
+     */
+    public float fQueueFinishingPoint;
+    /**
+     * / 空间占有目标个数,即区域车辆数,该车道内指定区域的车辆数目,支持车道内多区域统计,不同区域车辆数使用|符号分隔。
+     */
+    public byte[] szSpaceOccupyNum = new byte[64];
+    /**
+     * / 云台预置点,球机预置点必大于0
+     */
+    public int nPresetID;
+    /**
+     * / 保留字节
+     */
+    public byte[] reserved = new byte[88];
+    @Override
+    public String toString() {
+        return "NET_TRAFFIC_FLOW_STATE{" +
+                "nLane=" + nLane +
+                ", dwState=" + dwState +
+                ", dwFlow=" + dwFlow +
+                ", dwPeriod=" + dwPeriod +
+                ", stTrafficFlowDir=" + stTrafficFlowDir.toString() +
+                ", nVehicles=" + nVehicles +
+                ", fAverageSpeed=" + fAverageSpeed +
+                ", fAverageLength=" + fAverageLength +
+                ", fTimeOccupyRatio=" + fTimeOccupyRatio +
+                ", fSpaceOccupyRatio=" + fSpaceOccupyRatio +
+                ", fSpaceHeadway=" + fSpaceHeadway +
+                ", fTimeHeadway=" + fTimeHeadway +
+                ", fDensity=" + fDensity +
+                ", nOverSpeedVehicles=" + nOverSpeedVehicles +
+                ", nUnderSpeedVehicles=" + nUnderSpeedVehicles +
+                ", nLargeVehicles=" + nLargeVehicles +
+                ", nMediumVehicles=" + nMediumVehicles +
+                ", nSmallVehicles=" + nSmallVehicles +
+                ", nMotoVehicles=" + nMotoVehicles +
+                ", nLongVehicles=" + nLongVehicles +
+                ", nVolume=" + nVolume +
+                ", nFlowRate=" + nFlowRate +
+                ", nBackOfQueue=" + nBackOfQueue +
+                ", nTravelTime=" + nTravelTime +
+                ", nDelay=" + nDelay +
+                ", byDirection=" + Arrays.toString(byDirection) +
+                ", byDirectionNum=" + byDirectionNum +
+                ", emJamState=" + emJamState +
+                ", nPassengerCarVehicles=" + nPassengerCarVehicles +
+                ", nLargeTruckVehicles=" + nLargeTruckVehicles +
+                ", nMidTruckVehicles=" + nMidTruckVehicles +
+                ", nSaloonCarVehicles=" + nSaloonCarVehicles +
+                ", nMicrobusVehicles=" + nMicrobusVehicles +
+                ", nMicroTruckVehicles=" + nMicroTruckVehicles +
+                ", nTricycleVehicles=" + nTricycleVehicles +
+                ", nMotorcycleVehicles=" + nMotorcycleVehicles +
+                ", nPasserbyVehicles=" + nPasserbyVehicles +
+                ", emRank=" + emRank +
+                ", nState=" + nState +
+                ", bOccupyHeadCoil=" + bOccupyHeadCoil +
+                ", bOccupyTailCoil=" + bOccupyTailCoil +
+                ", bStatistics=" + bStatistics +
+                ", nLeftVehicles=" + nLeftVehicles +
+                ", nRightVehicles=" + nRightVehicles +
+                ", nStraightVehicles=" + nStraightVehicles +
+                ", nUTurnVehicles=" + nUTurnVehicles +
+                ", stQueueEnd=" + stQueueEnd.toString() +
+                ", dBackOfQueue=" + dBackOfQueue +
+                ", dwPeriodByMili=" + dwPeriodByMili +
+                ", nBusVehicles=" + nBusVehicles +
+                ", nMPVVehicles=" + nMPVVehicles +
+                ", nMidPassengerCarVehicles=" + nMidPassengerCarVehicles +
+                ", nMiniCarriageVehicles=" + nMiniCarriageVehicles +
+                ", nOilTankTruckVehicles=" + nOilTankTruckVehicles +
+                ", nPickupVehicles=" + nPickupVehicles +
+                ", nSUVVehicles=" + nSUVVehicles +
+                ", nSUVorMPVVehicles=" + nSUVorMPVVehicles +
+                ", nTankCarVehicles=" + nTankCarVehicles +
+                ", nUnknownVehicles=" + nUnknownVehicles +
+                ", emCustomFlowAttribute=" + emCustomFlowAttribute +
+                ", nRoadFreeLength=" + nRoadFreeLength +
+                ", emOverflowState=" + emOverflowState +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java
new file mode 100644
index 0000000..6d52873
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_JAM_RULE_INFO.java
@@ -0,0 +1,75 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFICJAM(交通拥堵事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_JAM_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;	
+	/**
+	 * 占线限值起始值(上限),拥堵长度占车道比例限值1-100
+	 */
+	public int						nJamLineMargin;
+	/**
+	 * 占线限值终值(下限),必须比JamLineMargin小,两值的差推荐大于10,不能相等1-99
+	 */
+	public int						nJamLineMarginEnd;						
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 检测到报警发生到开始上报的时间,单位:秒 范围1~65535
+	 */
+	public int						nDelay;
+	/**
+	 * 报警间隔时间,单位:秒 范围1~65535
+	 */
+	public int						nInterval;								
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity; 
+	/**
+	 * 上报次数 1~255
+	 */
+	public int						nReportTimes;
+	/**
+	 * 路口车辆数目阈值,大于0:只有当前路口车辆数目大于此值时才会判定为拥堵;等于0:对车辆数目没要求
+	 */
+	public int						nVehicleNumberThreshold;				
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public int						bZoomEnable;			
+	/**
+	 * 规则特定的尺寸过滤器
+	 */
+	public NET_CFG_SIZEFILTER_INFO 	stuSizeFileter;
+	/**
+	 * 规则特定的尺寸过滤器是否有效
+	 */
+	public int                		bSizeFileter;                           
+	/**
+	 * 不连续时间阈值(单位:秒):若超过该时间阈值为不拥堵的情况,将对报警计数清零 0-255	
+	 */
+	public int						nDiscontinuousTimeThreshold;			
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved = new byte[4092];   
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java
new file mode 100644
index 0000000..a367d11
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 点阵屏报警提示显示信息
+ * @date 2021/8/9 16:38
+ */
+public class NET_TRAFFIC_LATTICE_SCREEN_ALARM_NOTICE_INFO extends NetSDKLib.SdkStructure {
+   public byte[]									szNoHelmet=new byte[128];			// 未带头盔屏幕提示信息
+   public byte[]									szNonMotorOverload=new byte[128];	// 非机动车超载提示信息
+
+}
+
+
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java
new file mode 100644
index 0000000..2040ef8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2021/8/9 16:32
+ */
+public class NET_TRAFFIC_LATTICE_SCREEN_LOGO_INFO extends NetSDKLib.SdkStructure {
+
+    public  int			emLogoType;			/** LOGO类型 {@link com.netsdk.lib.enumeration.NET_EM_LATTICE_SCREEN_LOGO_TYPE} */
+   public byte[]		szContent=new byte[128];		// emLogoType为文字时,为文字内容;emLogoType为图片时,为图片名称
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java
new file mode 100644
index 0000000..721c3d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_LIGHT_STATE.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_TRAFFIC_LIGHT_STATUS;
+
+/**
+ * 信号灯指示灯状态
+ *
+ * @author : 47040
+ * @since : Created in 2020/8/29 17:01
+ */
+public class NET_TRAFFIC_LIGHT_STATE extends NetSDKLib.SdkStructure {
+    /**
+     * 直行信号灯状态 {@link NET_TRAFFIC_LIGHT_STATUS}
+     */
+    public int emStraightLightInfo;
+    /**
+     * 左转信号灯状态 {@link NET_TRAFFIC_LIGHT_STATUS}
+     */
+    public int emTurnLeftLightInfo;
+    /**
+     * 右转信号灯状态 {@link NET_TRAFFIC_LIGHT_STATUS}
+     */
+    public int emTurnRightLightInfo;
+    /**
+     * 调头信号灯状态 {@link NET_TRAFFIC_LIGHT_STATUS}
+     */
+    public int emUTurnLightInfo;
+    /**
+     * 预留
+     */
+    public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java
new file mode 100644
index 0000000..9c8b221
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERSPEED_RULE_INFO.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_OVERSPEED(超速事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_OVERSPEED_RULE_INFO extends SdkStructure{
+	/**
+	 * 限速范围
+	 */
+	public NET_SPEED_LIMIT				stuSpeedLimit;		
+	/**
+	 * 最短触发时间,单位:秒
+	 */
+	public int							nMinDuration;		
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public int						bSnapMotorcycle;	
+	/**
+	 * 黄牌车限速范围,范围0~255km/h
+	 */
+	public NET_SPEED_LIMIT				stuYellowSpeedLimit;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;			
+	/**
+	 * 是否启用大小车限速,True-使用下面具体的大小车限速字段,False-使用SpeedLimit字段,该字段缺省时默认False,即使用通用字段SpeedLimit
+	 */
+	public int						bSpeedLimitForSize;	
+	/**
+	 * 小型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为普通车辆限速
+	 */
+	public NET_SPEED_LIMIT				stuSmallCarSpeedLimit;
+	/**
+	 * 大型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为大型车辆限速
+	 */
+	public NET_SPEED_LIMIT				stuBigCarSpeedLimit;
+	/**
+	 * 小车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为小车高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuOverSpeedMargin;	
+	/**
+	 * 大车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuBigCarOverSpeedMargin;	
+	/**
+	 * 小车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时,作为小车低速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuUnderSpeedMargin;
+	/**
+	 * 大车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuBigCarUnderSpeedMargin;
+	/**
+	 * 语音播报使能
+	 */
+	public int						bVoiceBroadcastEnable;	
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved= new byte[4092];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java
new file mode 100644
index 0000000..b494441
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_OVERYELLOWLINE(压黄线事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_OVERYELLOWLINE_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion = (com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;
+	/**
+	 * 是否使能区域内触发该规则, false-不使能,true-使能
+	 */
+	public int						bAreaTrigEnable;			
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity;  
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public int						bSnapMotorcycle;
+	/**
+	 * 事件检测模式下,配置给算法,表示检测到事件发生后,多长时间开始报警,单位:秒,范围0-3600,无该字段不做处理
+	 */
+	public int						nDelayTime;	
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved=new byte[4096];                       
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java
new file mode 100644
index 0000000..f22bd38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PARKING_RULE_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_TRAFFIC_PARKING_RULE_INFO extends SdkStructure{
+	/**
+     * 检测区域
+     */
+    public com.netsdk.lib.structure.POINTCOORDINATE[]       stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+    /**
+     * 检测区域顶点数
+     */
+    public int					    nDetectRegionPoint;
+    public int					    nLaneNumber;							// 车道编号 与场景中的车道号对应
+    public int						nDelay;									// 检测到报警发生到开始上报的时间,单位:秒 范围1~65535
+    public int						nReportTimes;							// 上报次数 1~255
+    public int						nParkingAllowedTime;					// 允许停车时间 单位:秒,范围1~65535
+    public int                 		nSensitivity;                           // 灵敏度,范围[1,10],灵敏度越高越容易检测
+    public int                 		nParkingNumThreshold;                   // 停车数阈值,画面中停车数量大于此值时不报警 取值1-128
+    public int						bZoomEnable;							// 变倍抓拍,违停球做规则判断时,默认会变倍
+    public int						bSnapMotorcycle;						// 是否抓拍摩托车
+    public int                		nDectRegionNumber;                      // 检测区域号 与场景中的检测区域编号对应
+    public int                 		nShadeSnap;                             // 遮挡抓拍,默认为0 0:不支持1:支持
+    public int                 		nControlMoreAlerts;                     // 是否开启抑制同一个目标重复多报功能,0:不开启该功能,1:开启功能
+    public int                 		nReduceUnderreporting;                  // 是否开启减少id跳变导致的漏报功能,0:不开启该功能,1:开启功能 
+    public byte[]                   byReserved=new byte[4096];                       // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java
new file mode 100644
index 0000000..6106a5d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_PEDESTRAIN_RULE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_PEDESTRAIN(交通行人事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_PEDESTRAIN_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public	int							nDetectRegionPoint;	
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public	int							nLaneNumber;	
+	/**
+	 * 最短触发时间,单位:秒
+	 */
+	public	int							nMinDuration;
+	/**
+	 * 报警间隔时间,单位:秒
+	 */
+	public	int							nInterval;	
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public	int						bSnapMotorcycle;	
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public	int						bZoomEnable;							
+	/**
+	 * 重复报警时间,无该字段不做处理
+	 */
+	public	int						nRepeatAlarmTime;
+	/**
+	 * 抓拍目标类型,默认抓拍行人,后续可做扩展.无该字段不做处理
+	 */
+	public	int						nSnapObjectType;		
+	/**
+	 * 检测到行人后多少时间开始报警。单位:秒,范围0-3600.无该字段不做处理
+	 */
+	public	int						nDelayTime;			
+	/**
+	 * 灵敏度,范围1~100 ,配置0即为默认值,灵敏度越大算法检测越灵敏
+	 */
+	public	int                 		nSensitivity;  
+	/**
+	 *  保留字节
+	 */
+	public	byte[]                        byReserved = new byte[4096];                      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java
new file mode 100644
index 0000000..8e86d8a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_RETROGRADE_RULE_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_TRAFFIC_RETROGRADE_RULE_INFO extends SdkStructure{
+	/**
+     * 检测区域
+     */
+    public com.netsdk.lib.structure.POINTCOORDINATE[]       stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+    /**
+     * 检测区域顶点数
+     */
+    public int					    nDetectRegionPoint;
+    public byte[]                        byReserved1 = new byte[4];							// 字节对齐
+	/**
+	 * 起点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。
+	 */
+	public com.netsdk.lib.structure.DH_POINT stuDirectionStart;
+	/**
+	 * 终点,从起点到终点是正向行驶,反过来是逆行,点的坐标归一化到[0,8192)区间。 
+	 */
+	public DH_POINT stuDirectionEnd;
+	public int							nMinDuration;							// 最短触发时间,单位:秒
+	public int						nLaneNumber;							// 车道编号 与场景中的车道号对应
+	public int						bLegal;									// 逆行是否违章
+	public int						nPositionDistinctness;					// 抓拍位置变化区分度
+	public int                 		nSensitivity;                           // 灵敏度,值越小灵敏度越低。取决于方向夹角,取值1-10
+	public int						bZoomEnable;							// 变倍抓拍,违停球做规则判断时,默认会变倍
+	public int						bSnapMotorcycle;						// 是否抓拍摩托车
+	public int						nSnapNonMotor;						    // 是否抓拍非机动车
+	public int						nSnapNoPlateMotor;						// 是否抓拍无牌机动车
+	public int                  	emSnapPlateMotor;						// 是否抓拍机动车(NET_EM_SNAP_PLATEMOTOR_TYPE)
+	public int						nSnapBicycle;						    // 是否抓拍自行车
+	public int						nDurationTime;							// 事件检测模式下,逆行时间超过这个值后开始报警,单位:秒,范围0-3600
+	public NET_CFG_SIZEFILTER_INFO 	stuSizeFileter;                         // 规则特定的尺寸过滤器
+	public int                		bSizeFileter;                           // 规则特定的尺寸过滤器是否有效
+	public int						nReverseDisplacement;					// 逆行位移,默认1024坐标系, 范围是1-1023 单位是像素, 若无该字段或该字段配置为0时,算法设置默认值 
+	public byte[]                        byReserved = new byte[4096];                       // 保留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java
new file mode 100644
index 0000000..2cc5399
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_BLOCK_RULE_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_BLOCK(交通路障检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ROAD_BLOCK_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;	
+	/**
+	 * 最短持续时间,单位:秒 0~65535
+	 */
+	public int						nMinDuration;
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity;   
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;	
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍。有两种情况不适合变倍
+	 * 1.车速较快场合,变倍会导致跟踪不及时
+	 * 2.车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。注意是否要关闭变倍取决于现场情况,属于比较专业的配置,只对Web或者调试工具开放该选项
+	 * true开启变倍,false不变倍
+	 * web上默认勾选
+	 */
+	public int						bZoomEnable;		
+	/**
+	 * 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理
+	 */
+	public int						nRepeatAlarmTime;	
+	/**
+	 *  保留字节
+	 */
+	public byte[]                        byReserved=new byte[4096];                      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java
new file mode 100644
index 0000000..4e59c80
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_ROAD_CONSTRUCTION(交通道路施工检测事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_ROAD_CONSTRUCTION_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public int							nDetectRegionPoint;	
+	/**
+	 * 最短持续时间,单位:秒 0~65535
+	 */
+	public int						nMinDuration;
+	/**
+	 * 灵敏度,范围[1,10],灵敏度越高越容易检测
+	 */
+	public int                 		nSensitivity;   
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;	
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍。有两种情况不适合变倍
+	 * 1.车速较快场合,变倍会导致跟踪不及时
+	 * 2.车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。注意是否要关闭变倍取决于现场情况,属于比较专业的配置,只对Web或者调试工具开放该选项
+	 * true开启变倍,false不变倍
+	 * web上默认勾选
+	 */
+	public int						bZoomEnable;		
+	/**
+	 * 重复报警时间,单位:秒,范围0-3600.无该字段时,不做处理
+	 */
+	public int						nRepeatAlarmTime;	
+	/**
+	 *  保留字节
+	 */
+	public byte[]                        byReserved=new byte[4096];      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java
new file mode 100644
index 0000000..0814706
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_THROW_RULE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_THROW(抛洒物事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_THROW_RULE_INFO extends SdkStructure{
+	/**
+	 * 检测区
+	 */
+	public com.netsdk.lib.structure.POINTCOORDINATE[]				stuDetectRegion=(com.netsdk.lib.structure.POINTCOORDINATE[])new POINTCOORDINATE().toArray(20);
+	/**
+	 * 检测区顶点数
+	 */
+	public	int							nDetectRegionPoint;	
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public	int							nLaneNumber;	
+	/**
+	 * 最短触发时间,单位:秒
+	 */
+	public	int							nMinDuration;
+	/**
+	 * 报警间隔时间,单位:秒
+	 */
+	public	int							nInterval;	
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public	int						bSnapMotorcycle;	
+	/**
+	 * 变倍抓拍,违停球做规则判断时,默认会变倍
+	 * 如下两种情况不适合变倍
+	 * 1. 车速较快场合,变倍会导致跟踪不及时
+	 * 2. 车牌很近,由于机芯的光轴畸变会导致车牌过大,算法无法识别
+	 * 在以上这两种情况下,需要关闭变倍。是否要关闭变倍取决于现场情况,属于比较专业的配置
+	 */
+	public	int						bZoomEnable;							
+	/**
+	 * 重复报警时间,无该字段不做处理
+	 */
+	public	int						nRepeatAlarmTime;
+	/**
+	 * 抓拍目标类型,默认抓拍行人,后续可做扩展.无该字段不做处理
+	 */
+	public	int						nSnapObjectType;		
+	/**
+	 * 检测到行人后多少时间开始报警。单位:秒,范围0-3600.无该字段不做处理
+	 */
+	public	int						nDelayTime;			
+	/**
+	 * 灵敏度,范围1~100 ,配置0即为默认值,灵敏度越大算法检测越灵敏
+	 */
+	public	int                 		nSensitivity;  
+	/**
+	 *  保留字节
+	 */
+	public	byte[]                        byReserved = new byte[4096]; 
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java
new file mode 100644
index 0000000..a65400d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAFFIC_UNDERSPEED_RULE_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @description 事件类型EVENT_IVS_TRAFFIC_UNDERSPEED(欠速事件) 对应的规则配置
+ * @author 119178
+ * @date 2021/3/11
+ */
+public class NET_TRAFFIC_UNDERSPEED_RULE_INFO extends SdkStructure{
+	/**
+	 * 限速范围
+	 */
+	public NET_SPEED_LIMIT				stuSpeedLimit;		
+	/**
+	 * 最短触发时间,单位:秒
+	 */
+	public int							nMinDuration;		
+	/**
+	 * 是否抓拍摩托车
+	 */
+	public int						bSnapMotorcycle;	
+	/**
+	 * 黄牌车限速范围,范围0~255km/h
+	 */
+	public NET_SPEED_LIMIT				stuYellowSpeedLimit;		
+	/**
+	 * 车道编号 与场景中的车道号对应
+	 */
+	public int							nLaneNumber;			
+	/**
+	 * 是否启用大小车限速,True-使用下面具体的大小车限速字段,False-使用SpeedLimit字段,该字段缺省时默认False,即使用通用字段SpeedLimit
+	 */
+	public int						bSpeedLimitForSize;	
+	/**
+	 * 小型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为普通车辆限速
+	 */
+	public NET_SPEED_LIMIT				stuSmallCarSpeedLimit;
+	/**
+	 * 大型车辆速度下限和上限,0~255km/h,启用bSpeedLimitForSize有效,作为大型车辆限速
+	 */
+	public NET_SPEED_LIMIT				stuBigCarSpeedLimit;
+	/**
+	 * 小车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为小车高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuOverSpeedMargin;	
+	/**
+	 * 大车限高速宽限值,单位:km/h,不启用大小车限速时作为普通车辆高速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuBigCarOverSpeedMargin;	
+	/**
+	 * 小车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时,作为小车低速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuUnderSpeedMargin;
+	/**
+	 * 大车限低速宽限值,单位:km/h,不启用大小车限速时作为普通车辆低速宽限值,启用bSpeedLimitForSize时作为大型车辆高速宽限值
+	 */
+	public NET_SPEED_LIMIT				stuBigCarUnderSpeedMargin;
+	/**
+	 * 语音播报使能
+	 */
+	public int						bVoiceBroadcastEnable;	
+	/**
+	 * 保留字节
+	 */
+	public byte[]                        byReserved= new byte[4092];      
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java
new file mode 100644
index 0000000..c6819d9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRANSMIT_DISCONNECT_CALLBACK.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+隧道连接断开回调信息
+*/
+public class NET_TRANSMIT_DISCONNECT_CALLBACK extends NetSDKLib.SdkStructure {
+/** 
+/< 设备网络信息
+*/
+public NET_DEV_NETWORK_INFO stuDevNetInfo=new NET_DEV_NETWORK_INFO();
+/** 
+/< 用户数据 LDWORD
+*/
+public Pointer dwUserData;
+/** 
+/< 保留字节
+*/
+public			byte[]					szReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAVEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAVEL_INFO.java
new file mode 100644
index 0000000..0b0c7a3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TRAVEL_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description  行程码信息
+ * @date 2021/08/15
+ */
+public class NET_TRAVEL_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  行程码状态,{@link EM_TRAVEL_CODE_COLOR}
+     */
+    public int emTravelCodeColor;
+
+    /**
+     *  最近14天经过的城市个数
+     */
+    public int nCityCount;
+
+    /**
+     *  最近14天经过的城市名. 按时间顺序排列, 最早经过的城市放第一个
+     */
+    public PassingCityByteArr[] szPassingCity = (PassingCityByteArr[])new PassingCityByteArr().toArray(16); 
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TSECT_DAY.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TSECT_DAY.java
new file mode 100644
index 0000000..0d39a60
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_TSECT_DAY.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.NET_TSCHE_SEC_NUM;
+
+/**
+ * 拆分自{@link MONITORWALL_COLLECTION_SCHEDULE}
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/19 9:43
+ */
+public class NET_TSECT_DAY extends NetSDKLib.SdkStructure {
+    /**
+     * 时间段结构
+     */
+    public NetSDKLib.NET_TSECT[] stuSchedule = new NetSDKLib.NET_TSECT[NET_TSCHE_SEC_NUM];
+
+    public NET_TSECT_DAY() {
+        for (int i = 0; i < stuSchedule.length; i++) {
+            stuSchedule[i] = new NetSDKLib.NET_TSECT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UINT_POINT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UINT_POINT.java
new file mode 100644
index 0000000..3aae50b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UINT_POINT.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 8192坐标点
+ * @date 2022/07/21 16:59:51
+ */
+public class NET_UINT_POINT extends NetSDKLib.SdkStructure {
+
+	public int nx;
+
+	public int ny;
+
+	public NET_UINT_POINT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UNIFORM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UNIFORM_INFO.java
new file mode 100644
index 0000000..e1545cd
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UNIFORM_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 制服相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_UNIFORM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否有穿着制服, 0: 未知, 1: 没有, 2: 有, 3:不存在指定颜色制服
+     */
+    public int nHasUniform;
+    /**
+     * 制服颜色 {@link com.netsdk.lib.enumeration.EM_CLOTHES_COLOR}
+     */
+    public int emUniformColor;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_UNIFORM_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPDATE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPDATE_INFO.java
new file mode 100644
index 0000000..9404ad3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPDATE_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 区域或车位更新信息
+ * @date 2022/05/11 13:27:51
+ */
+public class NET_UPDATE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 更新类型 {@link com.netsdk.lib.enumeration.EM_UPDATE_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 更新的区域或车位名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 更新前的车位类型 {@link com.netsdk.lib.enumeration.EM_SPACE_TYPE}
+	 */
+	public int emBeforeUpdateType;
+	/**
+	 * 更新后的车位类型 {@link com.netsdk.lib.enumeration.EM_SPACE_TYPE}
+	 */
+	public int emAfterUpdateType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[256];
+
+	public NET_UPDATE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java
new file mode 100644
index 0000000..4a1a5a9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_UPLOAD_CLIENT_INFO.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_UPLOAD_FLAG;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 客户端信息
+ * @date 2021/2/22
+ */
+public class NET_UPLOAD_CLIENT_INFO extends NetSDKLib.SdkStructure {
+  /** 平台客户端的标识,当前是IPv4地址或者MAC地址 */
+  public byte[] szClientID = new byte[20];
+  /** 平台上传标识 ,对应枚举{@link EM_UPLOAD_FLAG} */
+  public int emUploadFlag;
+  /** 上传到平台的UTC时间 */
+  public NET_TIME stuUploadTime;
+  /** 预留 */
+  public byte[] byReserved = new byte[64];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USERMANAGER_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USERMANAGER_IMAGE_INFO.java
new file mode 100644
index 0000000..1636eb1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USERMANAGER_IMAGE_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 用户信息图片信息
+ * @origin autoTool
+ * @date 2023/07/28 14:34:03
+ */
+public class NET_USERMANAGER_IMAGE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 在二进制数据块中的偏移,单位:字节
+	 */
+	public int nOffset;
+	/**
+	 * 图片大小,单位:字节
+	 */
+	public int nLength;
+	/**
+	 * 图片宽度
+	 */
+	public short nWidth;
+	/**
+	 * 图片高度
+	 */
+	public short nHeight;
+	/**
+	 * 图片类型 {@link com.netsdk.lib.enumeration.EM_USERMANAGER_IMAGE_TYPE}
+	 */
+	public int emImageType;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[64];
+
+	public NET_USERMANAGER_IMAGE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java
new file mode 100644
index 0000000..c7a253c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_DEF_TITLE_INFO.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.CUSTOM_TITLE_LEN;
+
+/**
+ * 自定义的标题信息
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 20:16
+ */
+public class NET_USER_DEF_TITLE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 标题内容
+     */
+    public byte[] szText = new byte[CUSTOM_TITLE_LEN];
+    /**
+     * 叠加到编码视频使能
+     */
+    public int bEncodeBlend;
+    /**
+     * 叠加到预览视频使能
+     */
+    public int bPreviewBlend;
+    /**
+     * 区域, 坐标取值[0~8191], 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
+     */
+    public NetSDKLib.NET_RECT stuRect;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 文本对齐方式 枚举值 {@link NetSDKLib.EM_TITLE_TEXT_ALIGNTYPE}
+     */
+    public int emTextAlign;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[516];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_PICTURE_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_PICTURE_DATA.java
new file mode 100644
index 0000000..ccf0ad2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_USER_PICTURE_DATA.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_USER_PICTURE_DATA
+ * description:
+ * author:251589
+ * createTime:2020/12/22 21:56
+ *
+ * @version v1.0
+ */
+public class NET_USER_PICTURE_DATA extends NetSDKLib.SdkStructure {
+    public String  pszPictureData;                     // 图片数据,最大 200K
+    public int      nPictureLen;                        // pszPictureData 长度
+    public byte[]   byReserved = new byte[1020];        // 预留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VACCINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VACCINE_INFO.java
new file mode 100644
index 0000000..12ccaba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VACCINE_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description  新冠疫苗接种信息
+ * @date 2021/08/15
+ */
+public class NET_VACCINE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  是否已接种新冠疫苗, 0: 否, 1: 是
+     */
+    public int nVaccinateFlag;
+
+    /**
+     *  新冠疫苗名称
+     */
+    public byte[] szVaccineName = new byte[128];
+
+    /**
+     *  历史接种日期有效个数
+     */
+    public int nDateCount;
+
+    /**
+     *  历史接种日期 (yyyy-MM-dd). 如提供不了时间, 则填"0000-00-00", 表示已接种
+     */
+    public VaccinateDateByteArr[] szVaccinateDate = (VaccinateDateByteArr[])new VaccinateDateByteArr().toArray(8); 
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[1024];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java
new file mode 100644
index 0000000..a57fa6b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_IMAGE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 物体截图
+ * @date 2021/10/09
+ */
+public class NET_VAGEOBJECT_IMAGE extends NetSDKLib.SdkStructure{
+	 /**
+     *  在二进制数据块中的偏移
+     */
+    public int nOffset;
+
+    /**
+     *  图片大小,单位:字节
+     */
+    public int nLength;
+
+    /**
+     *  图片宽度
+     */
+    public int nWidth;
+
+    /**
+     *  图片高度
+     */
+    public int nHeight;
+
+    /**
+     *  文件路径
+     */
+    public byte[] szFilePath = new byte[260];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_INFO.java
new file mode 100644
index 0000000..ddb7638
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAGEOBJECT_INFO.java
@@ -0,0 +1,74 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 视频分析泛型物体类型
+ * @date 2021/10/09
+ */
+public class NET_VAGEOBJECT_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  物体ID,每个ID表示一个唯一的物体
+     */
+    public int nObjectID;
+
+    /**
+     *  模型支持的泛类型物体类型编号
+     */
+    public int nTypeIndex;
+
+    /**
+     *  模型支持的泛类型物体类型
+     */
+    public byte[] szTypeName = new byte[32];
+
+    /**
+     *  置信度,值越大表示置信度越高 0~100
+     */
+    public int nConfidence;
+
+    /**
+     *  物体动作支持类型,参考枚举{ @link ENUM_VAGEOBJECT_ACTION}
+     */
+    public int emAction;
+
+    /**
+     *  包围盒 矩形类型,当物体类型为车辆、车牌时为0~8191相对坐标
+     */
+    public NetSDKLib.NET_RECT stuBoundingBox;
+
+    /**
+     *  包围盒 绝对坐标
+     */
+    public NetSDKLib.NET_RECT stuOriginalBoundingBox;
+
+    /**
+     *  物体型心(不是包围盒中心), 二维空间点类型
+     */
+    public NetSDKLib.NET_POINT stuCenter;
+
+    /**
+     *  主要颜色是否有效
+     */
+    public boolean bMainColor;
+
+    /**
+     *  物体主要颜色, rgb
+     */
+    public byte[] byMainColor = new byte[4];
+
+    /**
+     *  物体截图
+     */
+    public NET_VAGEOBJECT_IMAGE stuImage;
+
+    /**
+     *  当前时间戳(物体抓拍或识别时,会将此识别智能帧附在一个视频帧或jpeg图片中,此帧所在原始视频中的出现时间)
+     */
+    public NET_TIME_EX stuCurrentTimeStamp;
+
+    /**
+     *  保留字节
+     */
+    public byte[] byReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java
new file mode 100644
index 0000000..c71fcc6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_ANIMAL_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 智慧养殖对象信息
+* @date 2022/04/15 15:29:30
+*/
+public class NET_VAOBJECT_ANIMAL_INFO extends NetSDKLib.SdkStructure {
+/** 
+物体ID,每个ID表示一个唯一的物体
+*/
+public			int					nObjectID;
+/** 
+智慧养殖检测目标子类型 {@link com.netsdk.lib.enumeration.EM_BREED_DETECT_CATEGORY_TYPE}
+*/
+public			int					emCategoryType;
+/** 
+包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+/** 
+对象重量, 单位: g
+*/
+public			int					nObjectWeight;
+/** 
+物体截图
+*/
+public NetSDKLib.SCENE_IMAGE_INFO_EX stuImageData=new NetSDKLib.SCENE_IMAGE_INFO_EX();
+/** 
+预留字节
+*/
+public			byte[]					byReserved=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_NUMMAN.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_NUMMAN.java
new file mode 100644
index 0000000..54ccfe9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAOBJECT_NUMMAN.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 检测到的人信息
+ * @author 29779
+ */
+public class NET_VAOBJECT_NUMMAN extends SdkStructure {
+	public int                	nObjectID;                          // 物体ID,每个ID表示一个唯一的物体
+	/**
+	 * @link EM_UNIFORM_STYLE 制服样式 
+	 */
+	public int  				emUniformStyle;
+	public com.netsdk.lib.structure.NET_RECT stuBoundingBox;                     // 包围盒,手套对象在全景图中的框坐标,为0~8191相对坐标
+	public NET_RECT stuOriginalBoundingBox;             // 包围盒,绝对坐标
+	public byte[] 				byReserved = new byte[128];         // 预留字节
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java
new file mode 100644
index 0000000..ca3cb00
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VARLANE_PLAN_LIST_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道计划表信息
+ * @date 2021/09/28
+ */
+public class NET_VARLANE_PLAN_LIST_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  可变车道方案编号(0表示未配置)
+     */
+    public int nVarlanePatternNumber;
+
+    /**
+     *  可变车道方案名称
+     */
+    public byte[] szVarlanePatternName = new byte[64];
+
+    /**
+     *  计划表个数
+     */
+    public int nLanePlanNum;
+
+    /**
+     *  计划表
+     */
+    public NET_LANE_PLAN_LIST_INFO[] stuLanePlanInfo = (NET_LANE_PLAN_LIST_INFO[]) new NET_LANE_PLAN_LIST_INFO().toArray(12);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java
new file mode 100644
index 0000000..87f6a54
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VAR_LANE_LIST_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道列表信息
+ * @date 2021/09/28
+ */
+public class NET_VAR_LANE_LIST_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  可变车道指示牌号
+     */
+    public int nVarlaneId;
+
+    /**
+     *  可变车道编号(车道配置页面编号)
+     */
+    public int nVarlaneNumber;
+
+    /**
+     *  该指示牌对应可变属性的对应的通道的闪光时长 单位秒,0-255 S
+     */
+    public int nVarlaneFlashTime;
+
+    /**
+     *  可变车道属性个数
+     */
+    public int nPropertyListNum;
+
+    /**
+     *  可变车道属性
+     */
+    public NET_PROPERTY_LIST_INFO[] stuPropertyInfo = (NET_PROPERTY_LIST_INFO[]) new NET_PROPERTY_LIST_INFO().toArray(7);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java
new file mode 100644
index 0000000..32c37af
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEDIO_WIDGET_COVER.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 覆盖区域
+ *
+ * @author 47040
+ * @version 1.0.0
+ * @since Created in 2021/3/8 21:52
+ */
+public class NET_VEDIO_WIDGET_COVER extends NetSDKLib.SdkStructure {
+
+    /**
+     * 叠加到预览视频
+     */
+    public int bPreviewBlend;
+    /**
+     * 叠加到主码流
+     */
+    public int bEncodeBlend;
+    /**
+     * 叠加到辅码流1
+     */
+    public int bEncodeBlendExtra1;
+    /**
+     * 叠加到辅码流2
+     */
+    public int bEncodeBlendExtra2;
+    /**
+     * 叠加到辅码流3
+     */
+    public int bEncodeBlendExtra3;
+    /**
+     * 叠加到抓图
+     */
+    public int bEncodeBlendSnapshot;
+    /**
+     * 前景色
+     */
+    public NET_COLOR_RGBA stuFrontColor;
+    /**
+     * 背景色
+     */
+    public NET_COLOR_RGBA stuBackColor;
+    /**
+     * 区域, 坐标取值0~8191
+     */
+    public NetSDKLib.NET_RECT stuRect;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserver = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLEDETECT_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLEDETECT_RULE_INFO.java
new file mode 100644
index 0000000..646fe4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLEDETECT_RULE_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  事件类型EVENT_IVS_VEHICLEDETECT(机动车事件)对应的规则配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:48
+*/
+public class NET_VEHICLEDETECT_RULE_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+车辆抓拍阈值,是一个百分数,表示当车辆检测框高度占画面百分比大于这个阈值时,触发规则进行抓拍。
+*/
+public			int					nSnapThreshold;
+/** 
+检测区顶点数
+*/
+public			int					nDetectRegionPoint;
+/** 
+检测区
+*/
+public			POINTCOORDINATE[]					stuDetectRegion=new POINTCOORDINATE[20];
+/** 
+排除区域数
+*/
+public			int					nExcludeRegionNum;
+/** 
+排除区域
+*/
+public			DH_POLY_POINTS[]					stuExcludeRegion=new DH_POLY_POINTS[10];
+/** 
+合规报警规则
+*/
+public			NET_COMPLIANT_INFO					stuCompliant=new NET_COMPLIANT_INFO();
+/** 
+是否提取机动车特征向量
+*/
+public			int					bFeatureExtractEnable;
+/** 
+是否使用尺寸过滤器
+*/
+public			int					bSizeFileter;
+/** 
+规则特定的尺寸过滤器,提高判断精度
+*/
+public NET_CFG_SIZEFILTER_INFO stuSizeFileter=new NET_CFG_SIZEFILTER_INFO();
+
+public NET_VEHICLEDETECT_RULE_INFO(){
+		for(int i=0;i<stuDetectRegion.length;i++){
+			stuDetectRegion[i]=new POINTCOORDINATE();
+			}
+		for(int i=0;i<stuExcludeRegion.length;i++){
+			stuExcludeRegion[i]=new DH_POLY_POINTS();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLES_DISTRIBUTION_DATA.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLES_DISTRIBUTION_DATA.java
new file mode 100644
index 0000000..c4860f8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLES_DISTRIBUTION_DATA.java
@@ -0,0 +1,58 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  统计区车辆,排队信息 
+* @origin autoTool
+* @date 2023/07/03 14:46:48
+*/
+public class NET_VEHICLES_DISTRIBUTION_DATA extends NetSDKLib.SdkStructure {
+/** 
+预置点
+*/
+public			int					nPtzPresetId;
+/** 
+规则ID
+*/
+public			int					nRuleId;
+/** 
+规则类型
+197 : videoAnalyseCongestionDetection  车流拥堵规则配置(针对道路场景)
+
+198 : videoAnalyseVehicleLimitDetection  车辆上限统计检测规则
+ */
+public			int					nRuleType;
+/** 
+车辆数量
+*/
+public			int					nVehiclesNum;
+/** 
+排队长度,单位:米
+*/
+public			int					nQueueLen;
+/** 
+区域坐标 多边形中每个顶点的坐标坐标归一化到[0,8191]区间
+*/
+public			NET_UINT_POINT[]					stuRegion=new NET_UINT_POINT[32];
+/** 
+区域坐标个数
+*/
+public			int					nRegionNum;
+/** 
+区域车辆上限
+*/
+public			int					nVehiclesLimit;
+/** 
+规则名称
+*/
+public			byte[]					szRuleName=new byte[32];
+
+public			NET_VEHICLES_DISTRIBUTION_DATA(){
+		for(int i=0;i<stuRegion.length;i++){
+			stuRegion[i]=new NET_UINT_POINT();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_ATTACHMENT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_ATTACHMENT_INFO.java
new file mode 100644
index 0000000..ea14f88
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_ATTACHMENT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  车上挂件过滤条件 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_VEHICLE_ATTACHMENT_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+车内饰品情况的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+车内饰品情况
+*/
+public			int[]					emVehicleAttachmentShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_VEHICLE_ATTACHMENT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_BRAND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_BRAND_INFO.java
new file mode 100644
index 0000000..ce16325
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_BRAND_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  车标过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:45
+*/
+public class NET_VEHICLE_BRAND_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+车标的个数,最大值是256
+*/
+public			int					nShowListNums;
+/** 
+车标对应的枚举值, 数字到具体品牌映射见映射表(由算法统一提供), 目前有效值为0-562
+*/
+public			int[]					nBrandShowList=new int[256];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_VEHICLE_BRAND_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_CALLING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_CALLING_INFO.java
new file mode 100644
index 0000000..962dc13
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_CALLING_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  打电话过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:45
+*/
+public class NET_VEHICLE_CALLING_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+打电话情况的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+打电话情况
+*/
+public			int[]					emVehicleCallingShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_VEHICLE_CALLING_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_COLOR_INFO.java
new file mode 100644
index 0000000..1954dd4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_COLOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  机动车车色过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:45
+*/
+public class NET_VEHICLE_COLOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+机动车车身颜色的个数,最大值是32
+*/
+public			int					nShowListNums;
+/** 
+机动车车身颜色
+*/
+public			int[]					emVehicleColorShowList=new int[32];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_VEHICLE_COLOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java
new file mode 100644
index 0000000..502f0e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_DRIVING_DIRECTION_INFO.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * NET_VEHICLE_OBJECT szDrivingDirection 的拆解字段
+ * {@link NET_VEHICLE_OBJECT#szDrivingDirection}
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 13:42
+ */
+public class NET_VEHICLE_DRIVING_DIRECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 参数细节
+     */
+    public byte[] info = new byte[32];
+
+    @Override
+    public String toString() {
+        return new String(info).trim();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java
new file mode 100644
index 0000000..2278bf4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_FUSED_OBJECT.java
@@ -0,0 +1,87 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @description 目标属性
+ * @origin autoTool
+ * @date 2023/02/14 20:02:01
+ */
+public class NET_VEHICLE_FUSED_OBJECT extends NetSDKLib.SdkStructure {
+    /**
+     * 目标ID
+     */
+    public int nObjectID;
+    /**
+     * 物体类型 {@link NetSDKLib.EM_ANALYSE_OBJECT_TYPE}
+     */
+    public int emObjectType;
+    /**
+     * 目标速度
+     */
+    public float fSpeed;
+    /**
+     * 目标当前GPS坐标
+     */
+    public NET_GPS_POSITION stuGPSPosition = new NET_GPS_POSITION();
+    /**
+     * 车牌信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuPlate = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 机动车信息
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuVehicle = new NetSDKLib.NET_MSG_OBJECT();
+    /**
+     * 非机动车信息
+     */
+    public NetSDKLib.VA_OBJECT_NONMOTOR stuNonMotor = new NetSDKLib.VA_OBJECT_NONMOTOR();
+    /**
+     * 车道ID
+     */
+    public int nLaneID;
+    /**
+     * 加速度,标量 m/s2
+     */
+    public float fAcceleration;
+    /**
+     * 3D坐标,设备中心坐标系
+     */
+    public NET_3DFLOAT_POINT stu3DPointPosition = new NET_3DFLOAT_POINT();
+    /**
+     * 3D尺寸,单位米
+     */
+    public NET_3DFLOAT_SIZE stu3DSize = new NET_3DFLOAT_SIZE();
+    /**
+     * 3D姿态, 与正东方向的的逆时针夹角,单位度(0~360)
+     */
+    public NET_3DFLOAT_POSTURE stu3DPosture = new NET_3DFLOAT_POSTURE();
+    /**
+     * 速度矢量,m/s
+     */
+    public NET_3DFLOAT_POINT stuVelocity = new NET_3DFLOAT_POINT();
+    /**
+     * 车系
+     */
+    public byte[] szBrandYearText = new byte[64];
+    /**
+     * 目标当前所处的区域信息
+     */
+    public NET_LOCATED_AREAS[] stuLocatedAreas = new NET_LOCATED_AREAS[4];
+    /**
+     * 目标当前所处的区域信息数量
+     */
+    public int nLocatedAreasNum;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[3540];
+
+    public NET_VEHICLE_FUSED_OBJECT() {
+        for (int i = 0; i < stuLocatedAreas.length; i++) {
+            stuLocatedAreas[i] = new NET_LOCATED_AREAS();
+        }
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java
new file mode 100644
index 0000000..08a2910
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_FOUND_INFO.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 查找返回的车辆组信息
+ * @date 2022/10/21 17:38
+ */
+public class NET_VEHICLE_GROUP_FOUND_INFO extends NetSDKLib.SdkStructure{
+public byte[]					szGroupID =new byte[64];					// 车辆组标识
+public byte[]					szGroupName =new byte[128];				// 车辆组名称
+public byte[]					szGroupDetail=new byte[256];				// 车辆组备注信息
+public int						nGroupType;							// 车辆组类型,0:未知 1:禁止列表 2:允许列表
+public int						nGroupSize;							// 当前组内车辆数
+public int[]					nChannels=new int[1024];					// 当前组绑定到的视频通道号列表,未和任何视频通道关联填[-1]
+public int						nChannelsNum;					// 返回视频通道号列表个数
+public byte[]					szReserved=new byte[508];					// 保留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java
new file mode 100644
index 0000000..6ed8d3a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_GROUP_INFO.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 车辆组信息
+ * @date 2022/10/21 17:26
+ */
+public class NET_VEHICLE_GROUP_INFO extends NetSDKLib.SdkStructure{
+  public    byte[]			szGroupID=new byte[64];					// 车辆组标识
+  public	 byte[]			szGroupName=new byte[128];				// 车辆组名称
+  public 	byte[]			szGroupDetail=new byte[256];				// 车辆组备注信息
+  public	int				nGroupType;							// 车辆组类型,0:未知 1:禁止列表 2:允许列表
+  public	byte[]		    szReserved=new byte[512];					// 保留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_INOUT_ANALYSE_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_INOUT_ANALYSE_PROC.java
new file mode 100644
index 0000000..fb45214
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_INOUT_ANALYSE_PROC.java
@@ -0,0 +1,67 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 智能分析结果的信息
+ * @origin autoTool
+ * @date 2023/08/31 14:21:53
+ */
+public class NET_VEHICLE_INOUT_ANALYSE_PROC extends NetSDKLib.SdkStructure {
+	/**
+	 * 事件名称
+	 */
+	public byte[] szName = new byte[128];
+	/**
+	 * 时间戳(单位是毫秒)
+	 */
+	public double dbPTS;
+	/**
+	 * 发生的时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 事件ID
+	 */
+	public int nEventID;
+	/**
+	 * 包序号,用于校验是否丢包
+	 */
+	public int nSequence;
+	/**
+	 * 视频分析帧序号
+	 */
+	public int nFrameSequence;
+	/**
+	 * 物体列表, refer to {@link NET_VEHICLE_OBJECT}
+	 */
+	public Pointer pstuObjets;
+	/**
+	 * 物体有效个数
+	 */
+	public int nObjectNum;
+	/**
+	 * 统计有效个数
+	 */
+	public int nStatNum;
+	/**
+	 * 各个车道实时交通流量统计信息, 最大支持8车道
+	 */
+	public NET_TRAFFIC_FLOW_STAT[] stuStats = new NET_TRAFFIC_FLOW_STAT[8];
+	/**
+	 * 雷达安装角度(雷达坐标系Y轴与正北方向的逆时针夹角)单位:度 (0 ~ 360)
+	 */
+	public double dbRadarInstallAngle;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[2048];
+
+	public NET_VEHICLE_INOUT_ANALYSE_PROC() {
+		for (int i = 0; i < stuStats.length; i++) {
+			stuStats[i] = new NET_TRAFFIC_FLOW_STAT();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_OBJECT.java
new file mode 100644
index 0000000..9486148
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_OBJECT.java
@@ -0,0 +1,168 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_DETECT_SENSOR_TYPE;
+import com.netsdk.lib.enumeration.EM_VEHICLEINOUT_CAR_TYPE;
+
+import java.util.Arrays;
+
+/**
+ * 车辆信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/12/17 11:54
+ */
+public class NET_VEHICLE_OBJECT extends NetSDKLib.SdkStructure {
+    /**
+     * 物体ID
+     */
+    public int nObjectID;
+    /**
+     * 车速,单位km/h
+     */
+    public int nSpeed;
+    /**
+     * 物体类型 Vehicle NonMotor Plate
+     */
+    public byte[] szObjectType = new byte[16];
+    /**
+     * 物体类型中的子类别 {@link NetSDKLib.EM_CATEGORY_TYPE}
+     */
+    public int emSubObject;
+    /**
+     * 物理车道号
+     */
+    public int nLane;
+    /**
+     * 自定义车道号
+     */
+    public int nRoadwayNumber;
+    /**
+     * 探测物体的传感器类型 {@link EM_DETECT_SENSOR_TYPE}
+     */
+    public int emSensorType;
+    /**
+     * 物体雷达和视频融合ID
+     */
+    public int nObjectRVID;
+    /**
+     * 物体的雷达ID
+     */
+    public int nObjectRID;
+    /**
+     * 行驶方向"Approach"-上行,即车辆离设备部署点越来越近; "Leave"-下行,即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和下行的两个地点
+     */
+    public NET_VEHICLE_DRIVING_DIRECTION_INFO[] szDrivingDirection = new NET_VEHICLE_DRIVING_DIRECTION_INFO[3];
+    /**
+     * 车牌号码
+     */
+    public byte[] szPlateNumber = new byte[32];
+    /**
+     * 车牌颜色
+     */
+    public byte[] szPlateColor = new byte[16];
+    /**
+     * 车辆经度
+     */
+    public double dbLongitude;
+    /**
+     * 车辆纬度
+     */
+    public double dbLatitude;
+    /**
+     * 车身颜色
+     */
+    public byte[] szCarColor = new byte[16];
+    /**
+     * 车辆类型 {@link EM_VEHICLEINOUT_CAR_TYPE}
+     */
+    public int emCarType;
+    /**
+     * 车辆驶入驶出虚拟线圈的状态 {@link NetSDKLib.NET_FLOWSTAT_DIRECTION}
+     */
+    public int emVirtualCoilDirection;
+    /**
+     * 距离停车线距离
+     */
+    public double dbDistanceToStop;
+    /**
+     * 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),X轴方向(垂直于车道方向)的距离
+     */
+    public double dbCarX;
+    /**
+     * 车辆与所有车道的中心点(中心点在设备所处位置,且垂直于车道方向的直线上),Y轴方向(平行于车道方向)的距离
+     */
+    public double dbCarY;
+    /**
+     * 车辆与所有车道的中心点(中心点在设备所处位置且垂直于车道方向的直线上)的角度;
+     */
+    public double dbCarAngle;
+    /**
+     * 物体是否在视频车道内, 0:未知, 1:物体不在视频车道内, 2:物体在视频车道内
+     */
+    public  int		nObjectInVideoLane;
+    /**
+     * 目标物体实际行驶方向 0-未知,1-直行,2-左转,3-右转,4-掉头
+     */
+    public int						nDirection;
+    /**
+     * 目标横向运动速度
+     */
+    public  float					fSpeedX;
+    /**
+     * 目标纵向运动速度
+     */
+    public float					fSpeedY;
+    /**
+     * 航向角
+     */
+    public double					dbHeadingAngle;
+    /**
+     *车身坐标,包围盒0~8191相对坐标
+     */
+    public  NET_RECT				stuCarBoundingBox=new NET_RECT();
+    /**
+     * 保留字节
+     */
+    public byte[] byReserverd = new byte[216];
+
+    public NET_VEHICLE_OBJECT() {
+        for (int i = 0; i < szDrivingDirection.length; i++) {
+            szDrivingDirection[i] = new NET_VEHICLE_DRIVING_DIRECTION_INFO();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "NET_VEHICLE_OBJECT{" +
+                "nObjectID=" + nObjectID +
+                ", nSpeed=" + nSpeed +
+                ", szObjectType=" + new String(szObjectType).trim() +
+                ", emSubObject=" + emSubObject +
+                ", nLane=" + nLane +
+                ", nRoadwayNumber=" + nRoadwayNumber +
+                ", emSensorType=" + emSensorType +
+                ", nObjectRVID=" + nObjectRVID +
+                ", nObjectRID=" + nObjectRID +
+                ", szDrivingDirection=" + Arrays.toString(szDrivingDirection).trim() +
+                ", szPlateNumber=" + new String(szPlateNumber).trim() +
+                ", szPlateColor=" + new String(szPlateColor).trim() +
+                ", dbLongitude=" + dbLongitude +
+                ", dbLatitude=" + dbLatitude +
+                ", szCarColor=" + new String(szCarColor).trim() +
+                ", emCarType=" + emCarType +
+                ", emVirtualCoilDirection=" + emVirtualCoilDirection +
+                ", dbDistanceToStop=" + dbDistanceToStop +
+                ", dbCarX=" + dbCarX +
+                ", dbCarY=" + dbCarY +
+                ", dbCarAngle=" + dbCarAngle +
+                ", nObjectInVideoLane=" + nObjectInVideoLane +
+                ", nDirection=" + nDirection +
+                ", fSpeedX=" + fSpeedX +
+                ", fSpeedY=" + fSpeedY +
+                ", dbHeadingAngle=" + dbHeadingAngle +
+                ", stuCarBoundingBox=" + stuCarBoundingBox.toString() +
+                '}';
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_PLATE_COLOR_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_PLATE_COLOR_INFO.java
new file mode 100644
index 0000000..e145d09
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_PLATE_COLOR_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  车牌颜色过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:45
+*/
+public class NET_VEHICLE_PLATE_COLOR_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+车牌颜色的个数,最大值是16
+*/
+public			int					nShowListNums;
+/** 
+车牌颜色
+*/
+public			int[]					emVehiclePlateColorShowList=new int[16];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_VEHICLE_PLATE_COLOR_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_SAFE_BELT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_SAFE_BELT_INFO.java
new file mode 100644
index 0000000..072f516
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_SAFE_BELT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  安全带过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:46
+*/
+public class NET_VEHICLE_SAFE_BELT_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+安全带情况的个数,最大值是2
+*/
+public			int					nShowListNums;
+/** 
+安全带情况
+*/
+public			int[]					emVehicleSafeBeltShowList=new int[2];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_VEHICLE_SAFE_BELT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_TYPE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_TYPE_INFO.java
new file mode 100644
index 0000000..6f64764
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEHICLE_TYPE_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  机动车车型过滤配置 
+* @origin autoTool
+* @date 2023/05/29 11:40:45
+*/
+public class NET_VEHICLE_TYPE_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否过滤启用: TRUE-下发该配置  FALSE-不下发该配置
+*/
+public			int					bEnable;
+/** 
+车型的个数,最大值是64
+*/
+public			int					nShowListNums;
+/** 
+车辆类型
+*/
+public			int[]					emVehicleTypeShowList=new int[64];
+/** 
+保留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public NET_VEHICLE_TYPE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEST_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEST_INFO.java
new file mode 100644
index 0000000..b462f4b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VEST_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 反光背心相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_VEST_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否穿反光背心, 0:未知,1:未穿反光背心,2:穿了反光背心
+     */
+    public int nHasVest;
+    /**
+     * 反光背心检测结果, 0-合规 1-不合规 2-未知
+     */
+    public int nHasLegalVest;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_VEST_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..65a7218
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOABNORMALDETECTION_RULE_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/**
+ * 事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置
+ */
+public class NET_VIDEOABNORMALDETECTION_RULE_INFO extends SdkStructure {
+	
+    /**
+     * 最短持续时间	单位:秒,0~65535
+     */
+    public int					    nMinDuration;
+    /**
+     * 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
+     */
+     public int                     nSensitivity;
+	
+    /**
+     * 检测类型数
+     */
+    public int                     nDetectType;
+    
+    /**
+     * 保留字段
+     */
+    public int                     nReserved; 
+    /**
+     * 异常检测阈值,范围1~100
+     */
+    public int[]					nThreshold=new int[32];
+    /**
+     * 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化
+     * 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测
+     * 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变
+     */
+    public byte[]                  bDetectType=new byte[32];
+
+    /**
+     * 保留字节
+     */
+    public byte[]				    byReserved=new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java
new file mode 100644
index 0000000..995ba38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOCHANNELS_INPUT_EX.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 输入通道扩展信息
+ * @date 2022/11/24 20:08:17
+ */
+public class NET_VIDEOCHANNELS_INPUT_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 球机通道个数
+	 */
+	public int nSDCount;
+	/**
+	 * 支持云台程序的通道数量(扩展)
+	 */
+	public short[] nSD = new short[1024];
+	/**
+	 * 支持云台程序的通道数量
+	 */
+	public int nPTZCount;
+	/**
+	 * 支持云台程序的通道号(扩展)
+	 */
+	public short[] nPTZ = new short[1024];
+	/**
+	 * 预留字段
+	 */
+	public byte[] reserved = new byte[1024];
+
+	public NET_VIDEOCHANNELS_INPUT_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java
new file mode 100644
index 0000000..0846828
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEODIAGNOSIS_PROJECT_INFO.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.sun.jna.Pointer;
+
+public class NET_VIDEODIAGNOSIS_PROJECT_INFO  extends SdkStructure{
+	public int					dwSize;	
+	public byte[]					szProjectName= new byte[260];		// 计划名称
+	public int						nTotalTaskNum;					// 调用者分配任务列表个数, 根据能力集获取
+	public int						nReturnTaskNum;					// 返回实际任务列表个数
+	public Pointer		pstProjectTasks;				// 任务列表 , 调用者分配内存nTotalTaskNum个
+	
+	public NET_VIDEODIAGNOSIS_PROJECT_INFO() {
+		 this.dwSize = this.size();
+	}
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOENC_OPT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOENC_OPT.java
new file mode 100644
index 0000000..2586f0b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOENC_OPT.java
@@ -0,0 +1,125 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2023/11/18 15:10
+ */
+public class NET_VIDEOENC_OPT extends NetSDKLib.SdkStructure{
+    /*视频参数*/
+    /**
+     * 视频使能;1:打开,0:关闭
+     */
+    public    byte                byVideoEnable;
+    /**
+     * 码流控制;参照常量"码流控制"定义
+     */
+    public    byte                 byBitRateControl;
+    /**
+     * 帧率
+     */
+    public    byte                  byFramesPerSec;
+    /**
+     * 编码模式;参照常量"编码模式"定义
+     */
+    public    byte                 byEncodeMode;
+    /**
+     * 分辨率;参照常量"分辨率"定义
+     */
+    public    byte                 byImageSize;
+    /**
+     * 将byImageQlty进行扩展,若byImageQlty为0,抓图配置的ImgQlty为10/30/50/60/80/100六个值,码流配置的ImgQlty值为1-6,兼容之前的1-6档次,若///ImgQltyType为1,则ImgQlty范围为0~100
+     */
+    public    byte                 byImageQltyData;
+
+    //  public    byte                 byImageQlty:7;
+
+    //  public    byte                 byImageQltyType:1;
+
+    public short                wLimitStream;                   /// 限码流参数
+
+    /* 音频参数 */
+
+    /**
+     *   音频使能;1:打开,0:关闭
+     */
+    public    byte                 byAudioEnable;
+
+    /**
+     *   音频编码类型: 0:G711A,1:PCM,2:G711U,3:AMR,4:AAC
+     */
+    public    byte                    wFormatTag;
+    /**
+     * 声道数
+     */
+    public short                nChannels;
+    /**
+     * 采样深度
+     */
+    public short                 wBitsPerSample;
+    /**
+     * 音频叠加使能
+     */
+    public    byte                  bAudioOverlay;
+    /**
+     * H.264 Profile等级(当编码模式为H264时此参数值有效),参照枚举类型EM_H264_PROFILE_RANK,传0,兼容以前,表示该字段无效,不需要考虑级别。
+     */
+    public    byte                 bH264ProfileRank;
+    /**
+     * 采样率
+     */
+    public int               nSamplesPerSec;
+    /**
+     * I帧间隔帧数量,描述两个I帧之间的P帧个数,0-149
+     */
+    public    byte                  bIFrameInterval;
+    /**
+     * NSP
+     */
+    public    byte                    bScanMode;
+
+    public    byte                 bReserved_3;
+
+    public    byte                 bReserved_4;
+
+    public byte getByImageQlty(){
+        byte a=0;
+        byte b=7;
+        return getAnd(byImageQltyData,a,b);
+    }
+
+    public byte getByImageQltyType(){
+        byte a=7;
+        byte b=7+1;
+        return getAnd(byImageQltyData,a,b);
+    }
+
+    /**
+     * 按位与
+     * @param date 原始数据
+     * @param start 需要偏移的位数
+     * @param end 与的位数
+     * @return
+     */
+    private byte getAnd(byte date,byte start,byte end){
+
+        return (byte) (date>>start&getOr(start,end));
+    }
+
+    /**
+     * 按位与的位数
+     * @param start 开始与的位数
+     * @param end 结束与的位数
+     * @return
+     */
+    private byte getOr(byte start,byte end){
+        byte result=0;
+        for (int i = 0; i < end-start; i++) {
+            result|=(1<<i);
+        }
+        return result;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java
new file mode 100644
index 0000000..2596cad
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_DEFOG_INFO.java
@@ -0,0 +1,25 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * className:NET_VIDEOIN_DEFOG_INFO
+ * description: 透雾配置
+ * author:251589
+ * createTime:2020/12/28 14:37
+ *
+ * @version v1.0
+ */
+public class NET_VIDEOIN_DEFOG_INFO extends NetSDKLib.SdkStructure {
+    public int    dwSize;    // 结构体大小
+    public int    emCfgType;    // 配置类型,获取和设置时都要指定
+    public int    emDefogMode;    // 透雾模式
+    public int    nIntensity;    // 强度0-100
+    public int    emIntensityMode;    //大气光模式
+    public int    nLightIntensityLevel;    //大气光强度(0-15)
+    public boolean    bCamDefogEnable;    //光学去雾使能 (TRUE使能,FALSE去使能)
+
+    public NET_VIDEOIN_DEFOG_INFO(){
+        this.dwSize = this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_LIGHTING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_LIGHTING_INFO.java
new file mode 100644
index 0000000..27a4e7b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOIN_LIGHTING_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_LIGHTING_MODE;
+
+/**
+ * @author 421657
+ * @description 补光灯配置
+ * @origin autoTool
+ * @date 2023/10/13 08:58:46
+ */
+public class NET_VIDEOIN_LIGHTING_INFO extends NetSDKLib.SdkStructure {
+
+    public int dwSize;
+    /**
+     * / 灯光模式 {@link NET_EM_LIGHTING_MODE}
+     */
+    public int emLightMode;
+    /**
+     * / 灯光补偿值,倍率优先时有效0-4
+     */
+    public int nCorrection;
+    /**
+     * / 灯光灵敏度,倍率优先时有效,0-5,默认为3
+     */
+    public int nSensitive;
+    /**
+     * / 近光灯亮度0-100
+     */
+    public int nNearLight;
+    /**
+     * / 远光灯亮度0-100
+     */
+    public int nFarLight;
+
+    public NET_VIDEOIN_LIGHTING_INFO() {
+        this.dwSize = this.size();
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java
new file mode 100644
index 0000000..f963c41
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_CROWD_DISTRI_MAP.java
@@ -0,0 +1,41 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 人群分布图报表实时数据
+ * @date 2022/10/29 09:36:29
+ */
+public class NET_VIDEOSTAT_CROWD_DISTRI_MAP extends NetSDKLib.SdkStructure {
+	/**
+	 * 时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 预置点编号
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 统计区个数
+	 */
+	public int nRegionNum;
+	/**
+	 * 统计区列表, 实际个数和nRegionNum保持一致
+	 */
+	public NET_PEOPLE_REGION_INFO[] stuRegionList = new NET_PEOPLE_REGION_INFO[16];
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[1024];
+
+	public NET_VIDEOSTAT_CROWD_DISTRI_MAP() {
+		for (int i = 0; i < stuRegionList.length; i++) {
+			stuRegionList[i] = new NET_PEOPLE_REGION_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java
new file mode 100644
index 0000000..27643ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_INSIDESUBTOTAL_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 目标实时检测位置统计
+ * @date 2022/10/28 11:06:44
+ */
+public class NET_VIDEOSTAT_INSIDESUBTOTAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 当前时间点上报人数的横坐标集,坐标体系是1024体系,数组每个元素的范围为[0, 1023]
+	 */
+	public int[] nPosXs = new int[32];
+	/**
+	 * nPoxXs数组有效数据个数
+	 */
+	public int nPoxXsNum;
+	/**
+	 * 预留
+	 */
+	public byte[] byReserved = new byte[988];
+
+	public NET_VIDEOSTAT_INSIDESUBTOTAL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java
new file mode 100644
index 0000000..b97ed4a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 抬头检测周期上报的回调
+ * @date 2022/10/28 11:33:47
+ */
+public class NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 预置点编号
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 检测到的抬头人数
+	 */
+	public int nFaceCount;
+	/**
+	 * 检测到的总人数
+	 */
+	public int nHumanCount;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_VIDEOSTAT_SUMMARY_HEAD_LIFT_DETECTION() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java
new file mode 100644
index 0000000..e92cf28
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_INTELLIPARKING.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 立体行为-智能停车实时数据
+ * @date 2022/10/28 11:30:56
+ */
+public class NET_VIDEOSTAT_SUMMARY_INTELLIPARKING extends NetSDKLib.SdkStructure {
+	/**
+	 * 时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 预置点编号
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 数据类型 {@link com.netsdk.lib.enumeration.NET_EM_INTELLIPARKING_DATA_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 规划式停车场车位信息统计,当emType为NET_EM_INTELLIPARKING_DATA_TYPE_PLANAREA时有效
+	 */
+	public NET_INTELLIPARKING_PLANAREA_INFO stPlanArea = new NET_INTELLIPARKING_PLANAREA_INFO();
+	/**
+	 * 开放式停车场信息统计,当emType为NET_EM_INTELLIPARKING_DATA_TYPE_OPENAREA时有效
+	 */
+	public NET_INTELLIPARKING_OPENAREA_INFO stOpenArea = new NET_INTELLIPARKING_OPENAREA_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[1024];
+
+	public NET_VIDEOSTAT_SUMMARY_INTELLIPARKING() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java
new file mode 100644
index 0000000..8e783d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_STEREO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 立体行为-视频统计摘要信息
+ * @date 2022/10/28 11:06:44
+ */
+public class NET_VIDEOSTAT_SUMMARY_STEREO extends NetSDKLib.SdkStructure {
+	/**
+	 * 时间
+	 */
+	public NET_TIME_EX UTC = new NET_TIME_EX();
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 预置点编号
+	 */
+	public int nPtzPresetId;
+	/**
+	 * 数据类型 {@link com.netsdk.lib.enumeration.NET_EM_VS_DATA_TYPE}
+	 */
+	public int emType;
+	/**
+	 * 目标实时检测位置统计
+	 */
+	public NET_VIDEOSTAT_INSIDESUBTOTAL_INFO stuInsideSubtotal = new NET_VIDEOSTAT_INSIDESUBTOTAL_INFO();
+	/**
+	 * 保留字节
+	 */
+	public byte[] reserved = new byte[1024];
+
+	public NET_VIDEOSTAT_SUMMARY_STEREO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java
new file mode 100644
index 0000000..4095a22
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 贮柜储量检测实时上报的回调
+ * @date 2022/10/28 11:34:32
+ */
+public class NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION extends NetSDKLib.SdkStructure {
+	/**
+	 * 通道号
+	 */
+	public int nChannelID;
+	/**
+	 * 贮柜当前状态 {@link com.netsdk.lib.enumeration.EM_TANK_STATUS}
+	 */
+	public int emTankStatus;
+	/**
+	 * 时间
+	 */
+	public NET_TIME_EX stuUTC = new NET_TIME_EX();
+	/**
+	 * 用料当前占比(百分比)
+	 */
+	public int nCurrentRatio;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_VIDEOSTAT_SUMMARY_TANK_CAPACITY_DETECTION() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java
new file mode 100644
index 0000000..612f5de
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEOTALK_SIGNLIGHT_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 签名灯信息
+ * @date 2020/11/06
+ */
+public class NET_VIDEOTALK_SIGNLIGHT_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 灯光类型
+	 * */
+	public int emSignLightType; //@link EM_SIGNLIGHT_TYPE
+	
+	/**
+	 * 有效时间段个数
+	 * */
+	public int nTimeSectionsNum;
+		
+	/**
+	 * 抓拍时间段
+	 * */	
+	public NetSDKLib.NET_TSECT[] stuTimeSection = new NetSDKLib.NET_TSECT[6];
+			
+	/**
+	 * 预留字节
+	 * */
+	public byte[] bReserved = new byte[64];
+	
+	
+	public NET_VIDEOTALK_SIGNLIGHT_INFO() {
+        for (int i = 0; i < stuTimeSection.length; i++) {
+        	stuTimeSection[i] = new NetSDKLib.NET_TSECT();
+        }
+    }		
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java
new file mode 100644
index 0000000..5a81986
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT.java
@@ -0,0 +1,52 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  视频算法类型检测 
+* @date 2022/08/03 14:43:06
+*/
+public class NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+是否满足人脸算法条件
+*/
+public			int					bFaceAlgorithm;
+/** 
+人脸算法分值
+*/
+public			int					nFaceAlgorithmValue;
+/** 
+是否满足人体算法条件
+*/
+public			int					bHumanBodyAlgorithm;
+/** 
+人体算法分值
+*/
+public			int					nHumanBodyAlgorithmValue;
+/** 
+是否满足车辆算法条件
+*/
+public			int					bVehicleAlgorithm;
+/** 
+车辆算法分值
+*/
+public			int					nVehicleAlgorithmValue;
+/** 
+是否满足车牌算法条件
+*/
+public			int					bPlateNumAlgorithm;
+/** 
+车牌算法分值
+*/
+public			int					nPlateNumAlgorithmValue;
+
+public NET_VIDEO_ALGORITHMTYPE_DETECTIONRESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java
new file mode 100644
index 0000000..9ee66ee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_ANALYSE_PROC.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 260611
+ * @description 智能分析结果的信息
+ * @date 2023/02/21 14:39:21
+ */
+public class NET_VIDEO_ANALYSE_ANALYSE_PROC extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelId;
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double dbPTS;
+    /**
+     * 发生的时间
+     */
+    public NET_TIME_EX stuUTC = new NET_TIME_EX();
+    /**
+     * 时间毫秒数,只表示毫秒
+     */
+    public int nUTCMS;
+    /**
+     * 包序号,用于校验是否丢包
+     */
+    public int nSequence;
+    /**
+     * 物体列表,{@link NET_VEHICLE_FUSED_OBJECT}的数组
+     */
+    public Pointer pstuObjectList;
+    /**
+     * 物体列表个数
+     */
+    public int nObjectListNum;
+    /**
+     * 事件列表个数
+     */
+    public int nEventListCount;
+    /**
+     * 事件列表, 仅支持: 碰撞冲突事件CollisionConflict(EVENT_IVS_COLLISION_CONFLICT)
+     */
+    public int[] dwEventCode = new int[32];
+    /**
+     * 事件信息(只解析Event Data中的字段)
+     * 碰撞冲突事件CollisionConflict(EVENT_IVS_COLLISION_CONFLICT) - {@link NET_DEV_EVENT_COLLISION_CONFLICT_INFO}
+     */
+    public Pointer[] pstuEventList = new Pointer[32];
+    /**
+     * 保留字节
+     */
+    public byte[] szReserved = new byte[1916 - NetSDKLib.POINTERSIZE * 32];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_TRACK_PROC.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_TRACK_PROC.java
new file mode 100644
index 0000000..76431a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_ANALYSE_TRACK_PROC.java
@@ -0,0 +1,47 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+import static com.netsdk.lib.NetSDKLib.POINTERSIZE;
+
+/** 
+* @author 291189
+* @description  外部轨迹的信息 
+* @origin autoTool
+* @date 2023/09/22 13:56:25
+*/
+public class NET_VIDEO_ANALYSE_TRACK_PROC extends NetSDKLib.SdkStructure {
+/** 
+/ 结构体大小
+*/
+public			int					dwSize;
+/** 
+/ 通道号
+*/
+public			int					nChannelId;
+/** 
+/ 视频目标信息
+*/
+public			NET_VIDEO_TRACK_OBJECT_INFO[]					stuTrackObject=new NET_VIDEO_TRACK_OBJECT_INFO[128];
+/** 
+/ 视频目标个数
+*/
+public			int					nTrackObjectNum;
+/** 
+/ 视频目标信息,内存大小为sizeof(NET_VIDEO_TRACK_OBJECT_INFO_EX)*nTrackObjectNum, refer to {@link NET_VIDEO_TRACK_OBJECT_INFO_EX}
+*/
+public Pointer pstuTrackObjectEx;
+/** 
+/ 保留字节
+*/
+public			byte[]					szReserved=new byte[256-POINTERSIZE];
+
+public NET_VIDEO_ANALYSE_TRACK_PROC(){
+		for(int i=0;i<stuTrackObject.length;i++){
+			stuTrackObject[i]=new NET_VIDEO_TRACK_OBJECT_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java
new file mode 100644
index 0000000..6b54056
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_AVAILABILITY_DETECTIONRESULT.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  视频完好率监测结果 
+* @date 2022/08/03 14:39:35
+*/
+public class NET_VIDEO_AVAILABILITY_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+信令延时,-1表示检测失败, 单位ms
+*/
+public			int					nSignalDelay;
+/** 
+视频流延时,-1表示检测失败, 单位ms
+*/
+public			int					nStreamDelay;
+/** 
+I帧延时,-1表示检测失败 单位ms
+*/
+public			int					nIFrameDelay;
+
+public NET_VIDEO_AVAILABILITY_DETECTIONRESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java
new file mode 100644
index 0000000..c2b5b9e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DELAY_DETECTIONRESUL.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  对应检测类型(NET_DIAGNOSIS_VIDEO_DELAY)视频延时检测结果 
+* @date 2022/08/03 14:23:24
+*/
+public class NET_VIDEO_DELAY_DETECTIONRESUL extends NetSDKLib.SdkStructure {
+/** 
+此结构体大小
+*/
+public			int					dwSize;
+/** 
+信令延时,-1表示检测失败, 单位ms
+*/
+public			int					nSignalDelay;
+/** 
+视频流延时,-1表示检测失败, 单位ms
+*/
+public			int					nStreamDelay;
+/** 
+I帧延时,-1表示检测失败 单位ms
+*/
+public			int					nIFrameDelay;
+
+public NET_VIDEO_DELAY_DETECTIONRESUL(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java
new file mode 100644
index 0000000..f9c6a80
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 比较录像详细信息
+ * @date 2021/11/07
+ */
+public class NET_VIDEO_DIAGNOSIS_COMPARE_RECORD_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  录像开始时间
+     */
+    public CFG_NET_TIME stuStartTime;
+
+    /**
+     *  录像保存位置,参考{ @link EM_SOURCE_VIDEO_LOCATION}
+     */
+    public int emSourceType;
+
+    /**
+     *  录像类型,参考{ @link EM_VIDEO_TYPE}
+     */
+    public int emRecordType;
+
+    /**
+     *  视频诊断录像开始时间为当前实际检测时间的前PreSeconds秒(当该字段与StartTime同时存在时, 以该字段优先)
+     */
+    public int nPreSeconds;
+
+    /**
+     *  保留字节
+     */
+    public byte[] szReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java
new file mode 100644
index 0000000..996891e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_DIAGNOSIS_RECORD_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_SOURCE_VIDEO_LOCATION;
+import com.netsdk.lib.enumeration.EM_VIDEO_TYPE;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 视频诊断录像详细信息
+ * @date 2021/2/22
+ */
+public class NET_VIDEO_DIAGNOSIS_RECORD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 录像保存的位置,对应枚举{@link EM_SOURCE_VIDEO_LOCATION}
+     */
+    public int    emSourceLocation;
+    /**
+     * 视频诊断录像类型,对应枚举{@link EM_VIDEO_TYPE}
+     */
+    public int               emRecordType;
+    /**
+     * 视频诊断录像开始时间
+     */
+    public NetSDKLib.CFG_NET_TIME stuStartTime;
+    /**
+     * 视频诊断录像开始时间为当前实际检测时间的前PreSeconds秒(当该字段与StartTime同时存在时,以该字段优先)
+     */
+    public int                         nPreSeconds;
+    /**
+     * 录像文件地址
+     */
+    public byte[] szLocalRecordFilePath = new byte[256];	
+    
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java
new file mode 100644
index 0000000..a04c554
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_FILCKERING_DETECTION_RESULT.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  	视频闪频检测 
+* @date 2022/08/03 14:49:00
+*/
+public class NET_VIDEO_FILCKERING_DETECTION_RESULT extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+检测结果量化值
+*/
+public			int					nValue;
+/** 
+检测结果状态 {@link NetSDKLib.NET_STATE_TYPE}
+*/
+public			int					emState;
+/** 
+状态持续时间,单位:秒
+*/
+public			int					nDuration;
+/**
+ * 异常检测结果图片地址
+ */
+public byte[]	szPicUrl = new byte[256];
+
+public NET_VIDEO_FILCKERING_DETECTION_RESULT(){
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java
new file mode 100644
index 0000000..d853b43
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_LOSS_FRAME_DETECTION_RESULT.java
@@ -0,0 +1,21 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 视频丢帧检测
+ * @date 2022/7/21 16:21
+ */
+public class NET_VIDEO_LOSS_FRAME_DETECTION_RESULT extends NetSDKLib.SdkStructure{
+
+    public int 						dwSize;					// 结构体大小
+    public int							nValue;					// 检测结果量化值
+    public int 				emState;				// 检测结果状态 NET_STATE_TYPE
+    public int							nDuration;				// 状态持续时间,单位:秒
+    public byte[]			szPicUrl = new byte[256];			// 异常检测结果图片地址
+    public NET_VIDEO_LOSS_FRAME_DETECTION_RESULT(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java
new file mode 100644
index 0000000..42b7d40
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_SNOWFLAKE_DETECTIONRESULT.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/7/21 16:05
+ */
+public class NET_VIDEO_SNOWFLAKE_DETECTIONRESULT extends NetSDKLib.SdkStructure {
+    public int                 dwSize;                 // 结构体大小
+    public int                  nValue;                 // 检测结果量化值
+    public int        emState;                // 检测结果状态 NET_STATE_TYPE
+    public int                  nDuration;              // 状态持续时间,单位:秒
+    public byte[]				szPicUrl=new byte[256];			// 异常检测结果图片地址
+    public NET_VIDEO_SNOWFLAKE_DETECTIONRESULT(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO.java
new file mode 100644
index 0000000..1b9b69a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  视频目标信息 
+* @origin autoTool
+* @date 2023/09/22 13:56:25
+*/
+public class NET_VIDEO_TRACK_OBJECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+/ 目标uuid
+*/
+public			byte[]					szObjectUUID=new byte[128];
+/** 
+/ 目标类型
+*/
+public			int[]					emObjectType=new int[32];
+/** 
+/ 目标类型的个数
+*/
+public			int					nObjectTypeNum;
+/** 
+/ 包围盒
+*/
+public NET_RECT stuBoundingBox=new NET_RECT();
+
+public NET_VIDEO_TRACK_OBJECT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO_EX.java
new file mode 100644
index 0000000..ad1d001
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VIDEO_TRACK_OBJECT_INFO_EX.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  视频目标信息扩展 
+* @origin autoTool
+* @date 2023/09/22 13:56:25
+*/
+public class NET_VIDEO_TRACK_OBJECT_INFO_EX extends NetSDKLib.SdkStructure {
+/** 
+/ 人脸抓拍角度, 三个角度依次分别是Pitch抬头低头,仰俯角;yaw是左右转头,偏航角;Roll是头在平面内左偏右偏,翻滚角,角度范围是-90~90
+*/
+public			int[]					nAngle=new int[3];
+/** 
+/ 保留字节
+*/
+public			byte[]					szReserved=new byte[1012];
+
+public NET_VIDEO_TRACK_OBJECT_INFO_EX(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VKINFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VKINFO.java
new file mode 100644
index 0000000..381483f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VKINFO.java
@@ -0,0 +1,46 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description VK二值对信息
+ * @date 2022/11/03 09:43:17
+ */
+public class NET_VKINFO extends NetSDKLib.SdkStructure {
+	/**
+	 * VKID
+	 */
+	public byte[] szVKID = new byte[128];
+	/**
+	 * VK
+	 */
+	public byte[] szVK = new byte[128];
+	/**
+	 * 加密算法类型 {@link com.netsdk.lib.enumeration.EM_ALGORITHM_TYPE}
+	 */
+	public int emAlgorithmType;
+	/**
+	 * 返回的VKID字段的实际大小
+	 */
+	public int nRetVKIDLen;
+	/**
+	 * 返回的VK实际大小
+	 */
+	public int nRetVKLen;
+	/**
+	 * 是否加密 {@link com.netsdk.lib.enumeration.EM_IS_ENCRYPT}
+	 */
+	public int emIsEncrypt;
+	/**
+	 * 是否是当前VK 0 :未知,1:当前, 2:之前 {@link com.netsdk.lib.enumeration.EM_IS_CURRENT_VK}
+	 */
+	public int emIsCurrent;
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[492];
+
+	public NET_VKINFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java
new file mode 100644
index 0000000..9031446
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VOTE_SETTINGS_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 选票设置信息
+ * @date 2021/09/28
+ */
+public class NET_VOTE_SETTINGS_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  周期容许秒数:周期增加或减少幅度未超出容许值,认为周期未增加或减少(0 ~ 10)
+     */
+    public int nCycleChangeTolerate;
+
+    /**
+     *  周期增加所需票数(1 ~ 5)
+     */
+    public int nCycleUpVote;
+
+    /**
+     *  周期减少所需票数(1 ~ 5)
+     */
+    public int ncycleDnVote;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java
new file mode 100644
index 0000000..520e5c5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_CHANNEL_INFO.java
@@ -0,0 +1,18 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+public class NET_VSP_GAVI_CHANNEL_INFO extends SdkStructure{
+	/**
+	 * 通道编码
+	 */
+	public byte[] 							szChannelEncode = new byte[24];	
+	/**
+	 * 上报设备信息
+	 */
+	public NET_VSP_GAVI_NOTIFY_OBJECT		stuNotifyObject;	
+	/**
+	 * 预留字段
+	 */
+	public byte[] 							byReserved = new byte[512];			
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_INFO.java
new file mode 100644
index 0000000..1d4382e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_INFO.java
@@ -0,0 +1,79 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.EM_VSP_GAVI_PLATFORM_CODE;
+import com.sun.jna.Pointer;
+/**
+ * @author 119178
+ * @description 注册平台信息
+ * @date 2021/4/19
+ */
+public class NET_VSP_GAVI_INFO extends SdkStructure{
+	/**
+	 * 注册平台IP地址或网络名。IP为空时,不做接入
+	 */
+	public byte[]                		szAddress = new byte[128];  
+	/**
+	 * 设备登陆帐号
+	 */
+	public byte[]                 		szUserId = new byte[64];       	
+	/**
+	 * 登陆密码
+	 */
+    public byte[]                 		szPassword = new byte[64];     
+    /**
+     * 注册平台端口号
+     */
+    public int                			nPort;              
+    /**
+     * 接入使能
+     */
+    public int							bEnable;			
+    /**
+     * 会话保活周期,范围[10,90],单位秒
+     */
+    public int							nKeepAliveTime;	
+    /**
+     * 最大超时次数,范围[2,5]
+     */
+    public int							nMaxTimeoutTimes;	
+    /**
+     * 注册失败后重新注册随机时间上限,范围[30,300],单位秒	
+     */
+    public int							nRegisterInterval;			
+    /**
+     * 注册设备ID	
+     */
+	public byte[]						szDeviceID = new byte[24];	
+	/**
+	 * {@link NET_VSP_GAVI_CHANNEL_INFO}
+	 * 通道信息,用户分配内存
+	 */
+	public Pointer              		pstuChannelInfo; 	
+	/**
+	 * pstuChannelInfo 个数,和通道数保持一致
+	 */
+	public int							nChannelCount;		
+	/**
+	 * 返回的 pstuChannelInfo 个数
+	 */
+	public int							nChannelCountRet;		
+	/**
+	 * {@link EM_VSP_GAVI_PLATFORM_CODE}
+	 * 当前平台
+	 */
+	public int		                    emPlatform;	
+	/**
+	 * 是否在线,不可修改
+	 */
+	public int							bIsOnLine;
+	/**
+	 * {@link NET_HKIMAGESERVER_INFO}
+	 * 视图云存储服务器鉴权密钥信息,emPlatform 为 EM_VSP_GAVI_PLATFORM_CODE_HKTDA_CLOUDSTORAGE时有效
+	 */
+	public Pointer			pHKImageServerInfo;	
+	/**
+	 * 保留字节 
+	 */
+	public byte[]                			byReserved = new byte[68];    			
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java
new file mode 100644
index 0000000..d3296d5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_NOTIFY_OBJECT.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+/**
+ * @author 119178
+ * @description 上报对象信息
+ * @date 2021/4/20
+ */
+public class NET_VSP_GAVI_NOTIFY_OBJECT extends SdkStructure{
+	/**
+	 * 人脸选中
+	 */
+	public int							bFaceChecked;	
+	/**
+	 * 人体选中
+	 */
+	public int							bPersonChecked;			
+	/**
+	 * 机动车选中
+	 */
+	public int							bMotorVehicleChecked;	
+	/**
+	 * 非机动车选中
+	 */
+	public int							bNonMotorVehicleChecked;
+	/**
+	 * 图片选中
+	 */
+	public int							bImageChecked;		
+	/**
+	 * 预留字段
+	 */
+	public byte[]					    byReserved =new byte[516];			
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java
new file mode 100644
index 0000000..d88369e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VSP_GAVI_PLATFORM_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+import com.netsdk.lib.enumeration.EM_VSP_GAVI_PLATFORM_CODE;
+/**
+ * @author 119178
+ * @description 接入平台范围信息
+ * @date 2021/4/19
+ */
+public class NET_VSP_GAVI_PLATFORM_INFO extends SdkStructure{
+	/**
+	 * {@link EM_VSP_GAVI_PLATFORM_CODE}
+	 * 平台码
+	 */
+	public int	emPlatformCode;			
+	/**
+	 * 平台名称
+	 */
+	public byte[]						szPlatformName = new byte[128];
+	/**
+	 * 预留字段
+	 */
+	public byte[]						byReserved = new byte[132];				
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VTO_DEV_NODE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VTO_DEV_NODE_INFO.java
new file mode 100644
index 0000000..1ffc065
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VTO_DEV_NODE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备树的节点信息
+ * @origin autoTool
+ * @date 2023/10/19 14:16:47
+ */
+public class NET_VTO_DEV_NODE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * / 节点的树的ID
+	 */
+	public byte[] szID = new byte[32];
+	/**
+	 * / 节点的别名
+	 */
+	public byte[] szName = new byte[64];
+	/**
+	 * / 父节点的ID
+	 */
+	public byte[] szParentID = new byte[32];
+	/**
+	 * / 保留字节
+	 */
+	public byte[] szResvered = new byte[256];
+
+	public NET_VTO_DEV_NODE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO.java
new file mode 100644
index 0000000..ba5c330
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO.java
@@ -0,0 +1,101 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 421657
+ * @description 通讯录格式扩展
+ * @origin autoTool
+ * @date 2023/10/26 09:34:52
+ */
+public class NET_VT_CONTACTINFO_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 名字
+     */
+    public byte[] szFirstName = new byte[32];
+    /**
+     * / 姓
+     */
+    public byte[] szFamilyName = new byte[32];
+    /**
+     * / 可视对讲短号
+     */
+    public byte[] szVTShortNumber = new byte[16];
+    /**
+     * / 可视对讲中号
+     */
+    public byte[] szVTMiddleNumber = new byte[16];
+    /**
+     * / 可视对讲长号, 或VTH模拟室内机的序列号
+     */
+    public byte[] szVTLongNumber = new byte[32];
+    /**
+     * / 可视对讲网络地址
+     */
+    public byte[] szVTNetAddress = new byte[40];
+    /**
+     * / 室内机关联的门口号码
+     */
+    public byte[] szVTOPosition = new byte[16];
+    /**
+     * / 昵称
+     */
+    public byte[] szNickName = new byte[32];
+    /**
+     * / 备注
+     */
+    public byte[] szNotes = new byte[32];
+    /**
+     * / 可视对讲所属设备系列, 与设备类型大类不完全对等, 取决于对讲所属的应用场景, "VTH": 室内机, "VTO": 门口机, "VTS": 管理机, "VTA": 紧急求助终端
+     */
+    public byte[] szType = new byte[32];
+    /**
+     * / 注册方式: "public", "local"
+     */
+    public byte[] szRegisterType = new byte[32];
+    /**
+     * / 注册密码
+     */
+    public byte[] szVTHPassword = new byte[32];
+    /**
+     * / 所属幢号
+     */
+    public byte[] szVTOBuilding = new byte[32];
+    /**
+     * / 所属单元号
+     */
+    public byte[] szVTOUnit = new byte[32];
+    /**
+     * / 所属群组
+     */
+    public byte[] szGroupNumber = new byte[32];
+    /**
+     * / 通道号,手机根据通道号订阅呼叫通知消息
+     */
+    public int nChannel;
+    /**
+     * / 楼层号个数
+     */
+    public int nFloorsNum;
+    /**
+     * / 楼层号
+     */
+    public byte[] szFloors = new byte[256 * 4];
+    /**
+     * / 室内机开门触发梯控
+     */
+    public int bLiftControlByVTH;
+    /**
+     * / 通讯录格式扩展,用户申请内存, refer to {@link NET_VT_CONTACTINFO_INFO_EX}
+     */
+    public Pointer pContactInfoEx;
+    /**
+     * /保留字段
+     */
+    public byte[] szResvered = new byte[256 - NetSDKLib.POINTERSIZE];
+
+    public NET_VT_CONTACTINFO_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO_EX.java
new file mode 100644
index 0000000..d4c759a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_VT_CONTACTINFO_INFO_EX.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 通讯录格式扩展
+ * @origin autoTool
+ * @date 2023/10/26 09:34:52
+ */
+public class NET_VT_CONTACTINFO_INFO_EX extends NetSDKLib.SdkStructure {
+    /**
+     * / 是否使用设备所处位置扩展字段
+     */
+    public int bUseNickNameEx;
+    /**
+     * / 设备所处位置扩展
+     */
+    public byte[] szNickNameEx = new byte[256];
+    /**
+     * / 保留字段
+     */
+    public byte[] szResvered = new byte[2044];
+
+    public NET_VT_CONTACTINFO_INFO_EX() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java
new file mode 100644
index 0000000..81b066b
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WANDERDETECTION_RULE_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib.SdkStructure;
+
+/** 事件类型 EVENT_IVS_WANDERDETECTION( 徘徊事件)对应的规则配置 */
+public class NET_WANDERDETECTION_RULE_INFO extends SdkStructure {
+  /** 检测区域顶点数 */
+  public int nDetectRegionPoint;
+  /** 检测区域 */
+  public com.netsdk.lib.structure.POINTCOORDINATE[] stuDetectRegion = (com.netsdk.lib.structure.POINTCOORDINATE[]) new POINTCOORDINATE().toArray(20);
+  /** 触发报警位置数 */
+  public int nTriggerPosition;
+  /** 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心 */
+  public byte[] bTriggerPosition = new byte[8];
+  /** 触发报警的徘徊或滞留人数 */
+  public int nTriggerTargetsNumber;
+  /** 最短持续时间 单位:秒,0~65535 */
+  public int nMinDuration;
+  /** 报告时间间隔,单位秒 0~600;等于0表示不重复报警, 默认值30 */
+  public int nReportInterval;
+  /** 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间 */
+  public int nTrackDuration;
+  /** 规则特定的尺寸过滤器是否有效 */
+  public boolean bSizeFileter;
+  /** 规则特定的尺寸过滤器 */
+  public NET_CFG_SIZEFILTER_INFO stuSizeFileter;
+  /** 保留字节 */
+  public byte[] byReserved = new byte[4096];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java
new file mode 100644
index 0000000..c3d13fa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATERDATA_STAT_SERVER_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  流量统计信息 
+* @date 2022/08/22 17:27:50
+*/
+public class NET_WATERDATA_STAT_SERVER_INFO extends NetSDKLib.SdkStructure {
+/** 
+开始时间
+*/
+public NET_TIME_EX stuStartTime=new NET_TIME_EX();
+/** 
+水质类别 {@link com.netsdk.lib.enumeration.EM_WATER_QUALITY}
+*/
+public			int					emQuality;
+/** 
+水质检测上报数据信息
+*/
+public NET_WATER_DETECTION_UPLOAD_INFO stuUploadInfo=new NET_WATER_DETECTION_UPLOAD_INFO();
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_WATERDATA_STAT_SERVER_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java
new file mode 100644
index 0000000..0415fc8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WATER_DETECTION_UPLOAD_INFO.java
@@ -0,0 +1,105 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  水质检测上报数据信息 
+* @date 2022/08/22 16:51:44
+*/
+public class NET_WATER_DETECTION_UPLOAD_INFO extends NetSDKLib.SdkStructure {
+/** 
+PH值 范围(1-14)
+*/
+public			float					fPH;
+/** 
+浊度值 范围(0-500NTU)
+*/
+public			float					fNTU;
+/** 
+氨氮值 范围(0-50mg/l)
+*/
+public			float					fNH3_N;
+/** 
+总氮值 范围(0-50mg/l)
+*/
+public			float					fTN;
+/** 
+透明度值 范围(0-30 m)
+*/
+public			float					fSD;
+/** 
+化学需氧量 范围(0-100mg/l)
+*/
+public			float					fCOD;
+/** 
+亚硝酸盐氮 范围(0-500mg/l)
+*/
+public			float					fNN;
+/** 
+溶解氧 范围(0-10 mg/l)
+*/
+public			float					fDO;
+/** 
+叶绿素a 范围(0-300 ug/l)
+*/
+public			float					fChl_a;
+/** 
+总磷 范围0-5mg/L
+*/
+public			float					fTP;
+/** 
+高锰酸盐指数范围(0-100mg/l)
+*/
+public			float					fCODMn;
+/** 
+悬浮物 范围(0-1000mg/l)
+*/
+public			float					fSS;
+/** 
+五日生化需氧量 范围(0-50mg/l)
+*/
+public			float					fBOD_5;
+/** 
+硝酸盐 范围(0-500mg/l)
+*/
+public			float					fNO3_N;
+/** 
+富营养状况指数 范围无
+*/
+public			float					fTSI;
+/** 
+黑臭等级 {@link com.netsdk.lib.enumeration.EM_SMELLY_LEVEL}
+*/
+public			int					emSmellyLevel;
+/** 
+预留字节
+*/
+public			byte[]					szReserved=new byte[512];
+
+public NET_WATER_DETECTION_UPLOAD_INFO(){
+}
+
+    @Override
+    public String toString() {
+        return "NET_WATER_DETECTION_UPLOAD_INFO{" +
+                "fPH=" + fPH +
+                ", fNTU=" + fNTU +
+                ", fNH3_N=" + fNH3_N +
+                ", fTN=" + fTN +
+                ", fSD=" + fSD +
+                ", fCOD=" + fCOD +
+                ", fNN=" + fNN +
+                ", fDO=" + fDO +
+                ", fChl_a=" + fChl_a +
+                ", fTP=" + fTP +
+                ", fCODMn=" + fCODMn +
+                ", fSS=" + fSS +
+                ", fBOD_5=" + fBOD_5 +
+                ", fNO3_N=" + fNO3_N +
+                ", fTSI=" + fTSI +
+                ", emSmellyLevel=" + emSmellyLevel +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEKS_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEKS_PLAN_INFO.java
new file mode 100644
index 0000000..8b8bbef
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEKS_PLAN_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周计划列表信息
+ * @date 2021/09/27
+ */
+public class NET_WEEKS_PLAN_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  周计划编号
+     */
+    public int nWeekPlanNumber;
+
+    /**
+     *  周计划个数
+     */
+    public int nWeekPlanNum;
+
+    /**
+     *  周计划名称
+     */
+    public byte[] szWeekPlanName = new byte[32];
+
+    /**
+     *  周计划
+     */
+    public NET_WEEK_PLAN_INFO[] stuWeekPlanInfo = (NET_WEEK_PLAN_INFO[]) new NET_WEEK_PLAN_INFO().toArray(7);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLANS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLANS_INFO.java
new file mode 100644
index 0000000..5a2e24f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLANS_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 可变车道调度计划列表,对应配置项NET_EM_CFG_RTSC_SCH_VARLANE_MANAGEMENT
+ * @date 2021/09/28
+ */
+public class NET_WEEK_PLANS_INFO extends NetSDKLib.SdkStructure{
+    /**
+     *  周计划编号
+     */
+    public int nWeekPlanNumber;
+
+    /**
+     *  周计划名称
+     */
+    public byte[] szWeekPlanName = new byte[64];
+
+    /**
+     *  周计划个数
+     */
+    public int nWeekPlanNum;
+
+    /**
+     *  周计划 
+     */
+    public NET_WEEK_PLAN_INFO[] stuWeekPlanInfo = (NET_WEEK_PLAN_INFO[]) new NET_WEEK_PLAN_INFO().toArray(7);
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLAN_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLAN_INFO.java
new file mode 100644
index 0000000..2267b08
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WEEK_PLAN_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 周计划信息
+ * @date 2021/09/27
+ */
+public class NET_WEEK_PLAN_INFO extends NetSDKLib.SdkStructure{
+	  /**
+     *  星期类型| 0 星期日 | 1 星期一 | 2 星期二 | 3 星期三 | 4 星期四 | 5 星期五 | 6 星期六 |
+     */
+    public int nWeekNumber;
+
+    /**
+     *  日计划编号,从1开始
+     */
+    public int nDayPlanNumber;
+
+    /**
+     *  日计划名称
+     */
+    public byte[] szDayPlanName = new byte[64];
+
+    /**
+     *  预留字节
+     */
+    public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WIEGAND_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WIEGAND_INFO.java
new file mode 100644
index 0000000..25db380
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WIEGAND_INFO.java
@@ -0,0 +1,44 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description 韦根配置
+* @date 2022/03/08 09:56:03
+*/
+public class NET_WIEGAND_INFO extends NetSDKLib.SdkStructure {
+/** 
+工作模式  {@link com.netsdk.lib.enumeration.EM_NET_WIEGAND_MODE}
+*/
+public			int					emMode;
+/** 
+脉冲宽度,单位us
+*/
+public			int					nPulseWidth;
+/** 
+脉冲间隔,单位us
+*/
+public			int					nPulseStep;
+/** 
+传输模式   {@link com.netsdk.lib.enumeration.EM_NET_WIEGAND_TRANSFER_MODE}
+ */
+public			int					emTransferMode;
+/** 
+输出类型  {@link com.netsdk.lib.enumeration.EM_NET_WIEGAND_OUT_TYPE}
+*/
+public			int					emOutType;
+/** 
+掩码值,每一位代表一个接收输入的掩码值,全为0表示不接收输入
+*/
+public			int					dwInputType;
+/** 
+门编号, 例如 0: 门1编号, 1: 门2编号
+*/
+public			int					nDoorNo;
+/** 
+保留字节
+*/
+public			byte[]					bReserverd=new byte[1024];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java
new file mode 100644
index 0000000..fe3c33c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WLAN_ACCESSPOINT_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 接入点信息
+ * @date 2023/03/16 14:10:09
+ */
+public class NET_WLAN_ACCESSPOINT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 无线网络名称
+	 */
+	public byte[] szSSID = new byte[36];
+	/**
+	 * 信号强度 范围0-100
+	 */
+	public int nStrength;
+	/**
+	 * 认证模式0:OPEN;1:SHARED;2:WPA;3:WPA-PSK;4:WPA2;5:WPA2-PSK;
+	 * 6:WPA-NONE(用在adhoc网络模式), 7-11是混合模式,选择其中任何一种都可以进行连接 7:WPA-PSK | WPA2-PSK;
+	 * 8:WPA | WPA2; 9:WPA | WPA-PSK; 10:WPA2 | WPA2-PSK; 11:WPA | WPA-PSK |WPA2
+	 * |WPA2-PSK ;12: UnKnown
+	 */
+	public int nAuthMode;
+	/**
+	 * 0:NONE, 1:WEP, 2:TKIP, 3:AES(CCMP), 4:TKIP+AES( mix Mode), 5:UnKnown
+	 */
+	public int nEncrAlgr;
+
+	public byte[] reserved = new byte[1016];
+
+	public NET_WLAN_ACCESSPOINT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java
new file mode 100644
index 0000000..77cb00d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_ABSTRACT_INFO.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 工装建模结果信息
+ * @date 2022/10/09 11:22:52
+ */
+public class NET_WORKSUIT_ABSTRACT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 工装合规组ID
+	 */
+	public byte[] szGroupID = new byte[64];
+	/**
+	 * 工装建模进度,百分比
+	 */
+	public int nProcess;
+	/**
+	 * 该次工装建模的token值
+	 */
+	public int nToken;
+	/**
+	 * 工装图片建模成功的个数
+	 */
+	public int nSucceedCnt;
+	/**
+	 * 工装图片建模失败的个数
+	 */
+	public int nFailedCnt;
+	/**
+	 * 建模失败的全景图图片名称列表个数
+	 */
+	public int nFailedSourceFileNamesNum;
+	/**
+	 * 建模失败的全景图唯一标识符列表个数
+	 */
+	public int nFailedSourceUIDNum;
+	/**
+	 * 建模失败的全景图图片名称列表
+	 */
+	public Byte64Arr[] szFailedSourceFileNames = new Byte64Arr[200];
+	/**
+	 * 建模失败的全景图唯一标识符列表
+	 */
+	public Byte64Arr[] szFailedSourceUID = new Byte64Arr[200];
+	/**
+	 * 字节对齐
+	 */
+	public byte[] szReserved1 = new byte[4];
+	/**
+	 * 工装建模错误码个数
+	 */
+	public int nErrCodeNum;
+	/**
+	 * 工装建模错误码,参考枚举{ @link EM_WORKSUIT_ABSTRACT_ERRCODE}
+	 */
+	public int[] emErrCode = new int[200];
+	/**
+	 * 预留字段
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_WORKSUIT_ABSTRACT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java
new file mode 100644
index 0000000..4779811
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_APPEND_IDENTI_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 工装合规导入标识信息
+ * @date 2022/10/08 19:49:52
+ */
+public class NET_WORKSUIT_APPEND_IDENTI_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 该次图片导入的token值
+	 */
+	public int nToken;
+	/**
+	 * 表示该次添加图片是否结束,TRUE表示结束,FALSE表示未结束
+	 */
+	public int bAppendEnd;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1024];
+
+	public NET_WORKSUIT_APPEND_IDENTI_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java
new file mode 100644
index 0000000..8fd91b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_CHANNEL_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 合规库布控信息(视频通道角度)
+ * @date 2022/10/08 17:05:54
+ */
+public class NET_WORKSUIT_CHANNEL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 当前组绑定的通道信息, 只读, 获取时有效
+	 */
+	public int nChannel;
+	/**
+	 * 相似度阈值,范围 [1, 100],默认67, 只读, 获取时有效
+	 */
+	public int nSimilarity;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[128];
+
+	public NET_WORKSUIT_CHANNEL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java
new file mode 100644
index 0000000..9d514ab
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_COMPARE_GROUP_INFO.java
@@ -0,0 +1,57 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 工装合规组信息
+ * @date 2022/10/08 17:05:54
+ */
+public class NET_WORKSUIT_COMPARE_GROUP_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 合规组ID, 只读, 由设备生成, 创建工装库时无需指定
+	 */
+	public byte[] szGroupID = new byte[64];
+	/**
+	 * 合规组名称
+	 */
+	public byte[] szGroupName = new byte[128];
+	/**
+	 * 合规组备注信息
+	 */
+	public byte[] szGroupDetail = new byte[256];
+	/**
+	 * 工装优选方案 {@link com.netsdk.lib.enumeration.EM_WORKSUIT_GROUP_POLICY}
+	 */
+	public int emWorkSuitPolicy;
+	/**
+	 * 相似度阈值,范围 [1, 100],默认67
+	 */
+	public int nSimilarity;
+	/**
+	 * 合规组类型 {@link com.netsdk.lib.enumeration.EM_WORKSUIT_GROUP_TYPE}
+	 */
+	public int emGroupType;
+	/**
+	 * 当前组内工装数, 只读, 获取时有效
+	 */
+	public int nGroupSize;
+	/**
+	 * 合规库视频通道布控信息, 只读, 获取时有效
+	 */
+	public NET_WORKSUIT_CHANNEL_INFO[] stuChannelInfo = new NET_WORKSUIT_CHANNEL_INFO[1024];
+	/**
+	 * 当前组绑定的通道数量, 只读, 获取时有效
+	 */
+	public int nChannelInfoNum;
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[2044];
+
+	public NET_WORKSUIT_COMPARE_GROUP_INFO() {
+		for (int i = 0; i < stuChannelInfo.length; i++) {
+			stuChannelInfo[i] = new NET_WORKSUIT_CHANNEL_INFO();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java
new file mode 100644
index 0000000..af43c58
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WORKSUIT_SAMPLE_INFO.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 工装合规样本信息
+ * @date 2022/10/08 19:51:42
+ */
+public class NET_WORKSUIT_SAMPLE_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 合规库组ID
+	 */
+	public byte[] szGroupID = new byte[64];
+	/**
+	 * 合规库组名称
+	 */
+	public byte[] szGroupName = new byte[128];
+	/**
+	 * 全景图唯一标识符,由平台生成
+	 */
+	public byte[] szSourceUID = new byte[64];
+	/**
+	 * 全景图图片名称
+	 */
+	public byte[] szSourceFileName = new byte[64];
+	/**
+	 * 图片信息
+	 */
+	public NetSDKLib.SCENE_IMAGE_INFO stuImageInfo = new NetSDKLib.SCENE_IMAGE_INFO();		
+	/**
+	 *文件路径, 支持HTTP URL表示; 支持FTP URL表示; 支持服务器本地路径,填写图片路径后无需填写图片信息中的offset与length字段
+	 */
+	public byte[] szFilePath = new byte[256];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserved = new byte[1792];
+
+	public NET_WORKSUIT_SAMPLE_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java
new file mode 100644
index 0000000..92b74e5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_BUTTON_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  按钮信息 
+* @date 2022/08/31 14:44:18
+*/
+public class NET_WPAN_ACCESSORY_BUTTON_INFO extends NetSDKLib.SdkStructure {
+/** 
+按键使能
+*/
+public			int					bEnable;
+/** 
+报警类型 {@link com.netsdk.lib.enumeration.EM_BUTTON_ALARM_TYPE}
+*/
+public			int					emType;
+/** 
+警号联动个数
+*/
+public			int					nSirenLinkageNum;
+/** 
+警号联动
+*/
+public			int[]					nSirenLinkage=new int[64];
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_ACCESSORY_BUTTON_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java
new file mode 100644
index 0000000..6bc3e1f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_CAPS_INFO.java
@@ -0,0 +1,43 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  配件能力集 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_ACCESSORY_CAPS_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否支持报警声音设置
+*/
+public			int					bSupportAlarmTone;
+/** 
+是否支持读卡器
+*/
+public			int					bSupportCardReader;
+/** 
+是否支持门铃模式
+*/
+public			int					bSupportChime;
+/** 
+是否支持超温报警
+*/
+public			int					bSupportOverTemperatureAlarm;
+/** 
+是否支持外部wifi设置
+*/
+public			int					bSupportExternalWifi;
+/** 
+是否支持wifi信息设置
+*/
+public			int					bSupportWifiInfo;
+/** 
+预留字段
+*/
+public			byte[]					byreserve=new byte[32];
+
+public			NET_WPAN_ACCESSORY_CAPS_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java
new file mode 100644
index 0000000..0fae68e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_IMAGE_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  图片信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_ACCESSORY_IMAGE_INFO extends NetSDKLib.SdkStructure {
+/** 
+分辨率 {@link com.netsdk.lib.enumeration.CAPTURE_SIZE}
+*/
+public			int					emResolution;
+/** 
+抓图数量
+*/
+public			int					nSnapshotNumber;
+/** 
+抓图次数
+*/
+public			int					nSnapshotTimes;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_ACCESSORY_IMAGE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java
new file mode 100644
index 0000000..e0ea679
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_INFO.java
@@ -0,0 +1,302 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  返回的配件信息 
+* @date 2022/08/31 14:44:18
+*/
+public class NET_WPAN_ACCESSORY_INFO extends NetSDKLib.SdkStructure {
+/** 
+结构体大小
+*/
+public			int					dwSize;
+/** 
+录像使能,必须同时有RecordChannels
+*/
+public			int					bRecordEnable;
+/** 
+外部告警使能
+*/
+public			int					bExternalAlarmEnable;
+/** 
+无密码布防使能
+*/
+public			int					bArmingWithoutPassword;
+/** 
+报警Led灯指示,0:关闭;1:打开
+*/
+public			byte					byAlarmLedIndication;
+/** 
+控制检测外接电源状态的开关,0:关闭;1:打开
+*/
+public			byte					byExPowerCheck;
+/** 
+配件防拆状态,0:关;1:开
+*/
+public			byte					byTamper;
+/** 
+24H防区状态,0:关;1:开
+*/
+public			byte					by24HDefenceStatus;
+/** 
+告警状态,0:正常;1:报警
+*/
+public			byte					byAlarmStatus;
+/** 
+外部告警状态,0:正常;1:报警
+*/
+public			byte					byExternalAlarmStatus;
+/** 
+Led灯指示,0:关;1:开
+*/
+public			byte					byLedIndication;
+/** 
+布撤防以及进入退出延时是否有BEEP声音,0:无;1:有
+*/
+public			byte					byBeepIndication;
+/** 
+紧急按钮状态,0:关;1:开
+*/
+public			byte					bySosStatus;
+/** 
+配件上报方式,0:直连;1:中继上报
+*/
+public			byte					byViaTrace;
+/** 
+传感器类型,0:常闭;1:常开
+*/
+public			byte					bySensorType;
+/** 
+锁定状态,1:非锁定;2:锁定
+*/
+public			byte					byLockState;
+/** 
+传感器故障状态,0:正常;1:故障
+*/
+public			byte					bySensorFailure;
+/** 
+信号强度测试,0:关;1:开
+*/
+public			byte					bySignalStrengthTest;
+/** 
+灵敏度测试,0:关;1:开
+*/
+public			byte					bySensitivityTest;
+/** 
+音量测试,0:关;1:开
+*/
+public			byte					byVolumeTest;
+/** 
+抓图测试,0:关;1:开
+*/
+public			byte					bySnapshotTest;
+/** 
+wifi测试,0:关;1:开
+*/
+public			byte					byWifiTest;
+/** 
+传感器屏蔽状态, 1:关闭屏蔽;2:开启屏蔽
+*/
+public			byte					byBlockState;
+/** 
+配件短地址,从1开始
+*/
+public			int					nShortAddr;
+/** 
+电池电量百分比:0~100
+*/
+public			int					nPercent;
+/** 
+无线信号强度等级
+*/
+public			int					nSignalLevel;
+/** 
+进入延时,单位:秒
+*/
+public			int					nEntryDelay;
+/** 
+退出延时,单位:秒
+*/
+public			int					nExitDelay;
+/** 
+报警持续时间,单位:秒
+*/
+public			int					nAlarmDuring;
+/** 
+触发报警间隔时间,单位:秒
+*/
+public			int					nTriggerAlarmInterval;
+/** 
+探测器状态 {@link com.netsdk.lib.enumeration.EM_DETECTOR_STATUS_TYPE}
+*/
+public			int					emState;
+/** 
+设备布防时音量 {@link com.netsdk.lib.enumeration.EM_ACCESSORY_VOLUME}
+*/
+public			int					emBeepVolume;
+/** 
+灵敏度 {@link com.netsdk.lib.enumeration.EM_ACCESSORY_SENSITIVITY}
+*/
+public			int					emSensentivity;
+/** 
+功率调节 {@link com.netsdk.lib.enumeration.EM_POWER_REGULATION_TYPE}
+*/
+public			int					emPowerRegulation;
+/** 
+在线状态 {@link com.netsdk.lib.enumeration.EM_ONLINE_STATUS}
+*/
+public			int					emOnline;
+/** 
+报警类型 {@link com.netsdk.lib.enumeration.EM_ACCESSORY_ALARM_TYPE}
+*/
+public			int					emAlarmType;
+/** 
+输入类型 {@link com.netsdk.lib.enumeration.EM_ACCESSORY_INPUT_TYPE}
+*/
+public			int					emInputType;
+/** 
+LED亮度 {@link com.netsdk.lib.enumeration.EM_LED_BRIGHTNESS_LEVEL}
+*/
+public			int					emLedBrightnessLevel;
+/** 
+操作模式 {@link com.netsdk.lib.enumeration.EM_OPERATION_MODE}
+*/
+public			int					emOperationMode;
+/** 
+防误按模式 {@link com.netsdk.lib.enumeration.EM_ANTI_MISPRESS_TYPE}
+*/
+public			int					emAntiMispress;
+/** 
+外部电源状态,若未开启检测外接电源状态则为未知 {@link com.netsdk.lib.enumeration.EM_EXPOWER_STATE}
+*/
+public			int					emExPowerState;
+/** 
+设备报警音量 {@link com.netsdk.lib.enumeration.EM_ACCESSORY_VOLUME}
+*/
+public			int					emVolume;
+/** 
+环境温度,单位:摄氏度
+*/
+public			float					fAmbientTemperature;
+/** 
+配件序列号
+*/
+public			byte[]					szSN=new byte[32];
+/** 
+配件名称
+*/
+public			byte[]					szName=new byte[64];
+/** 
+配件版本
+*/
+public			byte[]					szVersion=new byte[64];
+/** 
+配件型号
+*/
+public			byte[]					szModel=new byte[64];
+/** 
+报警提示音
+*/
+public			byte[]					szAlarmTone=new byte[128];
+/** 
+中继状态
+*/
+public NET_WPAN_RELAY_INFO stuRelayTran=new NET_WPAN_RELAY_INFO();
+/** 
+传感器感应方式 {@link com.netsdk.lib.enumeration.EM_BUTTON_ALARM_TYPE}
+*/
+public			int					emType;
+/** 
+心跳信息
+*/
+public			NET_WPAN_HEARTBEAT_INFO					stuHeartbeat=new NET_WPAN_HEARTBEAT_INFO();
+/** 
+配件能力集
+*/
+public			NET_WPAN_ACCESSORY_CAPS_INFO					stuCaps=new NET_WPAN_ACCESSORY_CAPS_INFO();
+/** 
+登录失败的锁定信息
+*/
+public			NET_WPAN_ACCESSORY_LOCK_INFO					stuLockInfo=new NET_WPAN_ACCESSORY_LOCK_INFO();
+/** 
+读卡器配置
+*/
+public NET_WPAN_CARD_READER_INFO stuCardReader=new NET_WPAN_CARD_READER_INFO();
+/** 
+图片信息
+*/
+public NET_WPAN_ACCESSORY_IMAGE_INFO stuImageInfo=new NET_WPAN_ACCESSORY_IMAGE_INFO();
+/** 
+外部wifi信息
+*/
+public NET_WPAN_EXTERNAL_WIFI_INFO stuExternalWifi=new NET_WPAN_EXTERNAL_WIFI_INFO();
+/** 
+Wi-Fi信息
+*/
+public NET_WPAN_WIFI_INFO stuWifiInfo=new NET_WPAN_WIFI_INFO();
+/** 
+超温报警
+*/
+public NET_WPAN_OVER_TEMPERATURE_ALARM_INFO stuOverTemperatureAlarm=new NET_WPAN_OVER_TEMPERATURE_ALARM_INFO();
+/** 
+所属区域个数
+*/
+public			int					nAreaNumberCnt;
+/** 
+所属区域编号,整形数组从1开始
+*/
+public			int[]					nAreaNumber=new int[64];
+/** 
+控制区域个数
+*/
+public			int					nControlAreaNumCnt;
+/** 
+控制区域编号:所属区域编号,从1开始;-1:全局,0:关闭
+*/
+public			int[]					nControlAreaNum=new int[64];
+/** 
+录像通道号个数
+*/
+public			int					nRecordChannelsNum;
+/** 
+录像通道号列表,一维数组,每个成员表示对应的通道需要执行录像,通道号从0开始
+*/
+public			int[]					nRecordChannels=new int[256];
+/** 
+警号联动个数
+*/
+public			int					nSirenLinkageNum;
+/** 
+警号联动
+*/
+public			int[]					nSirenLinkage=new int[256];
+/** 
+布防信息个数
+*/
+public			int					nArmingInfoNum;
+/** 
+布防信息,最大4组
+*/
+public			NET_WPAN_ARMING_INFO[]					stuArmingInfo=new NET_WPAN_ARMING_INFO[4];
+/** 
+按键个数
+*/
+public			int					nButtonNum;
+/** 
+按键信息
+*/
+public			NET_WPAN_ACCESSORY_BUTTON_INFO[]					stuButton=new NET_WPAN_ACCESSORY_BUTTON_INFO[16];
+
+public			NET_WPAN_ACCESSORY_INFO(){
+		for(int i=0;i<stuArmingInfo.length;i++){
+			stuArmingInfo[i]=new NET_WPAN_ARMING_INFO();
+			}
+		for(int i=0;i<stuButton.length;i++){
+			stuButton[i]=new NET_WPAN_ACCESSORY_BUTTON_INFO();
+			}
+		this.dwSize=this.size();
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java
new file mode 100644
index 0000000..098ad38
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ACCESSORY_LOCK_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  登录失败的锁定信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_ACCESSORY_LOCK_INFO extends NetSDKLib.SdkStructure {
+/** 
+登录锁定使能
+*/
+public			int					bLockLoginEnable;
+/** 
+登录失败锁定时间,单位:秒
+*/
+public			int					nLoginFailLockTime;
+/** 
+登录失败可尝试次数
+*/
+public			byte					byLockLoginTimes;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[31];
+
+public			NET_WPAN_ACCESSORY_LOCK_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ARMING_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ARMING_INFO.java
new file mode 100644
index 0000000..06d0e94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_ARMING_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  布防信息 
+* @date 2022/08/31 14:44:18
+*/
+public class NET_WPAN_ARMING_INFO extends NetSDKLib.SdkStructure {
+/** 
+布防模式 {@link com.netsdk.lib.enumeration.EM_ARMING_TYPE}
+*/
+public			int					emType;
+/** 
+布防开关:布防时候是否使能该探测器
+*/
+public			int					bEnable;
+/** 
+延时使能:布防时候是否使用进入退出延时
+*/
+public			int					bDelayEnable;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_ARMING_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java
new file mode 100644
index 0000000..ad834f0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_CARD_READER_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  读卡器配置 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_CARD_READER_INFO extends NetSDKLib.SdkStructure {
+/** 
+读卡器使能
+*/
+public			int					bEnable;
+/** 
+发卡时是否加密卡片,1:加密(软加密);2:不加密
+*/
+public			byte					byEncryption;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[31];
+
+public			NET_WPAN_CARD_READER_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java
new file mode 100644
index 0000000..c0448bc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_EXTERNAL_WIFI_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  外部wifi信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_EXTERNAL_WIFI_INFO extends NetSDKLib.SdkStructure {
+/** 
+外部wifi使能
+*/
+public			int					bEnable;
+/** 
+外部wifi优先级 {@link com.netsdk.lib.enumeration.EM_EXTERNAL_WIFI_PRIORITY}
+*/
+public			int					emPriority;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_EXTERNAL_WIFI_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java
new file mode 100644
index 0000000..d355a3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_HEARTBEAT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  心跳信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_HEARTBEAT_INFO extends NetSDKLib.SdkStructure {
+/** 
+心跳间隔,单位:秒
+*/
+public			int					nInterval;
+/** 
+离线次数
+*/
+public			int					nOfflineTimes;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_HEARTBEAT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java
new file mode 100644
index 0000000..62efefa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_OVER_TEMPERATURE_ALARM_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  超温报警 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_OVER_TEMPERATURE_ALARM_INFO extends NetSDKLib.SdkStructure {
+/** 
+超温报警使能开关
+*/
+public			int					bEnable;
+/** 
+超温报警下限温度值
+*/
+public			double					dbLowerLimit;
+/** 
+超温报警上限温度值
+*/
+public			double					dbUpperLimit;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_OVER_TEMPERATURE_ALARM_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_RELAY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_RELAY_INFO.java
new file mode 100644
index 0000000..0489041
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_RELAY_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  中继状态 
+* @date 2022/08/31 14:44:16
+*/
+public class NET_WPAN_RELAY_INFO extends NetSDKLib.SdkStructure {
+/** 
+是否启用中继转发 {@link com.netsdk.lib.enumeration.EM_RELAY_TYPE}
+*/
+public			int					emEnable;
+/** 
+使用中继地址
+*/
+public			int					nRelayIndex;
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_RELAY_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_WIFI_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_WIFI_INFO.java
new file mode 100644
index 0000000..b44a5bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WPAN_WIFI_INFO.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  wifi信息 
+* @date 2022/08/31 14:44:17
+*/
+public class NET_WPAN_WIFI_INFO extends NetSDKLib.SdkStructure {
+/** 
+Wi-Fi参数信息同步使能
+*/
+public			int					bSyncEnable;
+/** 
+wifi名称
+*/
+public			byte[]					szSSID=new byte[128];
+/** 
+wifi密码
+*/
+public			byte[]					szPassword=new byte[64];
+/** 
+预留字段
+*/
+public			byte[]					byReserved=new byte[32];
+
+public			NET_WPAN_WIFI_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_GUARD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_GUARD_INFO.java
new file mode 100644
index 0000000..897e2b0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_GUARD_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 防割护腕相关属性状态信息
+ * @date 2023/04/21 16:09:59
+ */
+public class NET_WRIST_GUARD_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 是否穿防割护腕, 0:未知,1:未穿防割护腕,2:穿了防割护腕
+     */
+    public int nHasWristGuard;
+    /**
+     * 防割护腕检测结果 , 0-合规 1-不合规 2-未知
+     */
+    public int nHasLegalWristGuard;
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[24];
+
+    public NET_WRIST_GUARD_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java
new file mode 100644
index 0000000..751c784
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_WRIST_MEASURE_MODE_PARAM.java
@@ -0,0 +1,60 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 单点手腕测温模式参数
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/09 17:05
+ */
+public class NET_WRIST_MEASURE_MODE_PARAM extends NetSDKLib.SdkStructure {
+
+    /**
+     *  温度阈值(摄氏度)
+     */
+    public double					dbTempThreshold;
+
+    /**
+     *  温度矫正值(摄氏度)
+     */
+    public double					dbCorrectTemp;
+
+    /**
+     *  有效温度下限,低于此值的温度为无效温度(摄氏度)
+     */
+    public double					dbValidTempLowerLimit;
+
+    /**
+     *  测温超时时间(秒)
+     */
+    public int					nMeasureTimeout;
+
+    /**
+     *  有效温度测量距离(cm),小于该距离测量到的温度认为有效
+     */
+    public int					nValidMeasureDistance;
+
+    /**
+     *  无效温度测量距离(cm),大于该距离测量到的温度认为无效,直接过滤,同时该字段还配合ValidTemperatureDistance字段使用,在有效和无效距离之间测量的温度是不准的,需要提示用户靠近一点。
+     */
+    public int					nInvalidMeasureDistance;
+
+    /**
+     * 预留字段
+     */
+    public byte[]					byReserved = new byte[1020];
+
+    @Override
+    public String toString() {
+        return "NET_WRIST_MEASURE_MODE_PARAM{" +
+                "dbTempThreshold=" + dbTempThreshold +
+                ", dbCorrectTemp=" + dbCorrectTemp +
+                ", dbValidTempLowerLimit=" + dbValidTempLowerLimit +
+                ", nMeasureTimeout=" + nMeasureTimeout +
+                ", nValidMeasureDistance=" + nValidMeasureDistance +
+                ", nInvalidMeasureDistance=" + nInvalidMeasureDistance +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_CUT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_CUT_INFO.java
new file mode 100644
index 0000000..d48b22e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_CUT_INFO.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 421657
+ * @description 切包信息
+ * @origin autoTool
+ * @date 2023/11/27 16:01:55
+ */
+public class NET_XRAY_CUT_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * / 切包的设备本地时间戳,从1970-1-1 00:00:00开始的毫秒数
+     */
+    public long nTimeMS;
+    /**
+     * / 保留字节
+     */
+    public byte[] szReserved = new byte[56];
+
+    public NET_XRAY_CUT_INFO() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_IMAGE_INFO.java
new file mode 100644
index 0000000..40ec412
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_IMAGE_INFO.java
@@ -0,0 +1,48 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * X光机视角类型
+ *
+ * @author : 260611
+ * @since : Created in 2021/10/19 09:19
+ */
+public class NET_XRAY_IMAGE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  视图类型
+     */
+    public int					emViewType;
+
+    /**
+     *  图片类型
+     */
+    public int					emImageType;
+
+    /**
+     *  在二进制数据块中的偏移
+     */
+    public int					nOffset;
+
+    /**
+     *  图片大小,单位:字节
+     */
+    public int					nLength;
+
+    /**
+     *  预留字节
+     */
+    public byte					byReserved[] = new byte[1024];
+
+    @Override
+    public String toString() {
+        return "NET_XRAY_IMAGE_INFO{" +
+                "emViewType=" + emViewType +
+                ", emImageType=" + emImageType +
+                ", nOffset=" + nOffset +
+                ", nLength=" + nLength +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java
new file mode 100644
index 0000000..30e1246
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_INSIDE_ONJECT_TYPE.java
@@ -0,0 +1,22 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 自定义物品类型
+ * @date 2022/05/11 11:33:24
+ */
+public class NET_XRAY_INSIDE_ONJECT_TYPE extends NetSDKLib.SdkStructure {
+	/**
+	 * 物体类型
+	 */
+	public byte[] szObjType = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[256];
+
+	public NET_XRAY_INSIDE_ONJECT_TYPE() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java
new file mode 100644
index 0000000..6b176dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_MULTILEVEL_DETECT_CFG_INFO.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/** 
+* @author 291189
+* @description  安全等级信息 
+* @date 2022/12/01 16:22:06
+*/
+public class NET_XRAY_MULTILEVEL_DETECT_CFG_INFO extends NetSDKLib.SdkStructure {
+/** 
+当前配置等级 {@link com.netsdk.lib.enumeration.EM_XRAY_OBJECT_DETECT_CONFIG_LEVEL}
+*/
+public			int					emCurrentLevel;
+/** 
+等级配置最大个数(用户配置)
+*/
+public			int					nMultiLevelConfigMax;
+/** 
+等级配置个数(实际返回)
+*/
+public			int					nMultiLevelConfigCnt;
+/** 
+等级配置 此部分内存需要用户申请,申请大小为(nMultiLevelConfigMax*sizeof(NET_MULTI_LEVEL_INFO))。
+*/
+public Pointer pstuMultiLevelConfig;
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[1024];
+
+public NET_XRAY_MULTILEVEL_DETECT_CFG_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java
new file mode 100644
index 0000000..f6935aa
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP.java
@@ -0,0 +1,54 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  分组事件联动 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_XRAY_OBJECT_GROUP extends NetSDKLib.SdkStructure {
+/** 
+分组类型 {@link com.netsdk.lib.enumeration.EM_INSIDE_OBJECT_TYPE}
+*/
+public			int					emGroupType;
+/** 
+分组检测使能
+*/
+public			int					bGroupEnable;
+/** 
+分组安全等级 {@link com.netsdk.lib.enumeration.EM_GROUP_GRADE_TYPE}
+*/
+public			int					emGroupGrade;
+/** 
+分组物品颜色 {@link com.netsdk.lib.enumeration.EM_GROUP_COLOR_TYPE}
+*/
+public			int					emGroupColor;
+/** 
+分组事件联动
+*/
+public			NET_XRAY_OBJECT_GROUP_EVENT_HANDLER					stuGroupEventHandler=new NET_XRAY_OBJECT_GROUP_EVENT_HANDLER();
+/** 
+物体
+*/
+public			NET_XRAY_OBJECT_INFO[]					stuObjects=new NET_XRAY_OBJECT_INFO[64];
+/** 
+物体个数
+*/
+public			int					nObjectsNum;
+/** 
+自定义分组类型
+*/
+public			byte[]					szGrouptype=new byte[32];
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[224];
+
+public NET_XRAY_OBJECT_GROUP(){
+		for(int i=0;i<stuObjects.length;i++){
+			stuObjects[i]=new NET_XRAY_OBJECT_INFO();
+			}
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java
new file mode 100644
index 0000000..edd0c76
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_GROUP_EVENT_HANDLER.java
@@ -0,0 +1,55 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  分组事件联动 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_XRAY_OBJECT_GROUP_EVENT_HANDLER extends NetSDKLib.SdkStructure {
+/** 
+报警输出通道号列表 一维数组,每个成员表示对应的通道需要执行报警输出,通道号从0开始。
+*/
+public			int[]					nAlarmOutChannels=new int[64];
+/** 
+报警输出通道号个数
+*/
+public			int					nAlarmOutChannelsNum;
+/** 
+报警输出使能
+*/
+public			int					bAlarmOutEnable;
+/** 
+报警输入停止后,输出延时时间(秒) 范围[1,300]
+*/
+public			int					nAlarmOutLatch;
+/** 
+是否上传到报警中心服务器   报警中心不需要登陆设备,由设备直接推送给报警中心的业务
+*/
+public			int					bMessageEnable;
+/** 
+语音提示
+*/
+public			int					bVoiceEnable;
+/** 
+语音提示联动
+*/
+public			NET_EVENT_HANDLER_VOICE					stuVoice=new NET_EVENT_HANDLER_VOICE();
+/** 
+传送带是否停止(X光机需求)
+*/
+public			int					bMoveStop;
+/** 
+蜂鸣
+*/
+public			int					bBeepEnable;
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[256];
+
+public			NET_XRAY_OBJECT_GROUP_EVENT_HANDLER(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_INFO.java
new file mode 100644
index 0000000..c51989a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_OBJECT_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  X光机物品 
+* @date 2022/12/01 16:27:10
+*/
+public class NET_XRAY_OBJECT_INFO extends NetSDKLib.SdkStructure {
+/** 
+物体类型 {@link com.netsdk.lib.enumeration.EM_INSIDE_OBJECT_TYPE}
+*/
+public			int					emType;
+/** 
+物体检测使能
+*/
+public			int					bEnable;
+/** 
+物体检测阈值 0~100
+*/
+public			int					nDetectThreshold;
+/** 
+解析和下发自定义物体类型时使用
+*/
+public			byte[]					szType=new byte[32];
+/** 
+预留
+*/
+public			byte[]					szReserved=new byte[224];
+
+public			NET_XRAY_OBJECT_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java
new file mode 100644
index 0000000..2e7f7a5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_XRAY_RELATED_IMAGE_INFO.java
@@ -0,0 +1,40 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * X光机关联图片类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 14:46
+ */
+public class NET_XRAY_RELATED_IMAGE_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     *  图片类型  {@link com.netsdk.lib.enumeration.EM_XRAY_RELATED_IMAGE_TYPE}
+     */
+    public int					emImageType;
+
+    /**
+     *  在二进制数据块中的偏移
+     */
+    public int					nOffset;
+    /**
+     *  图片大小,单位:字节	
+     */
+    public int					nLength;
+    /**
+     *  预留字节
+     */
+    public byte					byReserved[] = new byte[64];
+
+    @Override
+    public String toString() {
+        return "NET_XRAY_RELATED_IMAGE_INFO{" +
+                "emImageType=" + emImageType +
+                ", nOffset=" + nOffset +
+                ", nLength=" + nLength +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java
new file mode 100644
index 0000000..22920bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ABNORMAL_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 异常防区信息
+ * @date 2023/03/15 16:29:32
+ */
+public class NET_ZONE_ABNORMAL_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 防区号
+	 */
+	public int nIndex;
+	/**
+	 * 防区名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 异常原因,异常原因,平台直接取值做显示即可
+	 */
+	public byte[] szReason = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] byReserved = new byte[188];
+
+	public NET_ZONE_ABNORMAL_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO.java
new file mode 100644
index 0000000..23dc8b8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 设备异常信息
+ * @origin autoTool
+ * @date 2023/08/10 09:52:29
+ */
+public class NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO extends NetSDKLib.SdkStructure {
+	/**
+	 * 设备名称
+	 */
+	public byte[] szName = new byte[32];
+	/**
+	 * 异常原因
+	 */
+	public byte[] szReason = new byte[32];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szResvered = new byte[1024];
+
+	public NET_ZONE_ARM_MODE_DEVICE_FAULT_INFO() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NEXT_STEP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NEXT_STEP_INFO.java
new file mode 100644
index 0000000..9a0db36
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/NEXT_STEP_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 下一个周期信号方案色步信息
+ * @date 2021/09/01
+ */
+public class NEXT_STEP_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  灯组总数量
+     */
+    public int nLampNumber;
+
+    /**
+     *  信号灯控制路口的进口数量
+     */
+    public int nEnterNumber;
+
+    /**
+     *  灯组色步信息个数
+     */
+    public int nStepInfoNum;
+
+    /**
+     *  灯组色步信息(0~8)包含1到N(进口数量)个灯组色步信息
+     */
+    public STEP_INFO[] stuStepInfo = (STEP_INFO[]) new STEP_INFO().toArray(8);
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Net_PIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Net_PIC_INFO.java
new file mode 100644
index 0000000..2314b1d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/Net_PIC_INFO.java
@@ -0,0 +1,19 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * className:Net_PIC_INFO
+ * description:图片文件信息
+ * author:251589
+ * createTime:2020/12/28 10:57
+ *
+ * @version v1.0
+ */
+public class Net_PIC_INFO extends NetSDKLib.SdkStructure {
+    public int    dwFileLenth;    // 文件大小, 单位:字节
+    public byte[]    szFilePath = new byte[MAX_PATH];    // 文件路径
+    public byte[]    bReserved = new byte[256];    // 保留字段
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OBJECT_RELATED_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OBJECT_RELATED_INFO.java
new file mode 100644
index 0000000..a951d70
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OBJECT_RELATED_INFO.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  目标关联信息
+ * @date 2021/8/24 15:09
+ */
+public class OBJECT_RELATED_INFO  extends NetSDKLib.SdkStructure{
+    public int							nObjectID;									// 物体ID
+    public int							nRelativeID;								// 相关物体ID
+    public byte[]							szObjectType=new byte[128];							// 物体类型,如"HumanFace"
+    public NetSDKLib.NET_RECT stuBoundingBox=new NetSDKLib.NET_RECT();								// 物体包围盒,坐标[0, 8191]
+    public NetSDKLib.NET_RECT stuOriginalBoundingBox=new NetSDKLib.NET_RECT();						// 原始物体包围盒,坐标[0, 8191]
+    public byte[]							byReserved=new byte[1024];							// 预留字段
+
+    @Override
+    public String toString() {
+        return "OBJECT_RELATED_INFO{" +
+                "nObjectID=" + nObjectID +
+                ", nRelativeID=" + nRelativeID +
+                ", szObjectType=" + new String(szObjectType) +
+                ", stuBoundingBox=" + stuBoundingBox +
+                ", stuOriginalBoundingBox=" + stuOriginalBoundingBox +
+                '}';
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectPath.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectPath.java
new file mode 100644
index 0000000..4b9803f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectPath.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 图路径对象
+ * @date 2021/02/23
+ */
+public class ObjectPath extends NetSDKLib.SdkStructure {
+	/**
+	 *  路径字节数组
+	 */
+	public byte[] objectPath = new byte[NetSDKLib.MAX_PATH];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectUrl.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectUrl.java
new file mode 100644
index 0000000..6f1da78
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/ObjectUrl.java
@@ -0,0 +1,14 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * @date 2021/2/22
+ */
+public class ObjectUrl extends NetSDKLib.SdkStructure {
+    public byte[] objectUrl=new byte[MAX_PATH];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OneDimensionalInformation.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OneDimensionalInformation.java
new file mode 100644
index 0000000..1973f90
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/OneDimensionalInformation.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  二维数组中的一维大小
+ * @date 2021/9/9 10:38
+ */
+public class OneDimensionalInformation extends NetSDKLib.SdkStructure {
+  public   byte[]  oneDimensionalSize=new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java
new file mode 100644
index 0000000..84317c4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 路人库去重策略配置(选填)
+ * @date 2021/2/22
+ */
+public class PASSERBY_DB_DUPLICATE_REMOVE_CONFIG_INFO extends NetSDKLib.SdkStructure {
+  /** 使能开关,TRUE:开 FALSE:关 */
+  public boolean bEnable;
+  /** 路人库去重策略类型,对应枚举{@link EM_PASSERBY_DB_DUPLICATE_REMOVE_TYPE} */
+  public int emDuplicateRemoveType;
+  /** 时间段间隔(emDuplicateRemoveType 为 EM_DUPLICATE_REMOVE_TYPE_TIME_SLOT有效) */
+  public NetSDKLib.NET_TSECT[] stuTimeSection =
+      (NetSDKLib.NET_TSECT[]) new NetSDKLib.NET_TSECT().toArray(8 * 6);
+  /** 时间间隔,单位分钟(emDuplicateRemoveType 为 EM_DUPLICATE_REMOVE_TYPE_TIME有效) */
+  public int dwInterval;
+  /** 字节保留 */
+  public byte[] byReserved1 = new byte[4];
+  /** 字节保留 */
+  public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTCOORDINATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTCOORDINATE.java
new file mode 100644
index 0000000..e84acb8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTCOORDINATE.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * PTZ景物坐标 8191x8191 坐标系
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 15:59
+ */
+public class POINTCOORDINATE extends NetSDKLib.SdkStructure {
+    /**
+     * 第一个元素表示景物点的x坐标(0~8191)
+     */
+    public int nX;
+    /**
+     * 第二个元素表示景物点的y坐标(0~8191)
+     */
+    public int nY;
+
+    public POINTCOORDINATE() {
+    }
+
+    public POINTCOORDINATE(int X, int Y) {
+        nX = X;
+        nY = Y;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTINFOS.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTINFOS.java
new file mode 100644
index 0000000..fee405d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POINTINFOS.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_SHAPE_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.MAX_COMMON_STRING_64;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_POLYGON_NUM;
+
+/**
+ * PTZ景物点信息
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 15:56
+ */
+public class POINTINFOS extends NetSDKLib.SdkStructure {
+    /**
+     * 信息点编号
+     */
+    public int nIndex;
+    /**
+     * 信息点是否生效
+     */
+    public byte bEnable;
+    /**
+     * 该信息点是否有子标题
+     */
+    public byte bTitleAttribute;
+    /**
+     * 云台方向与放大倍数(第一个元素为水平角度,0~3600;第二个元素为垂直角度,-1800~1800;第三个元素为放大倍数,0~127)
+     */
+    public POSTION stuPostion;
+    /**
+     * 景物点位置(使用相对坐标体系,取值均为0-8191在整个屏幕上的位置)
+     */
+    public POINTCOORDINATE stuPoint;
+    /**
+     * 一级标题名称
+     */
+    public byte[] szTitleName = new byte[MAX_COMMON_STRING_64];
+    /**
+     * 一级标题名称类型
+     */
+    public byte byTitleType;
+    /**
+     * 预留字节
+     */
+    public byte[] byReserved = new byte[3];
+    /**
+     * 景物形状 {@link NET_EM_SHAPE_TYPE }
+     */
+    public int emShapeType;
+    /**
+     * 景物的轮廓,每个点依次表示轮廓顶点坐标
+     */
+    public NetSDKLib.DH_POINT[] stuPolygon = new NetSDKLib.DH_POINT[NET_MAX_POLYGON_NUM];
+    /**
+     * 返回的景物轮廓顶点个数
+     */
+    public int nRetPolygonPointNum;
+    /**
+     * 保留字段
+     */
+    public byte[] byReserved1 = new byte[184];
+
+    public POINTINFOS() {
+        for (int i = 0; i < stuPolygon.length; i++) {
+            stuPolygon[i] = new NetSDKLib.DH_POINT();
+        }
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POSTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POSTION.java
new file mode 100644
index 0000000..5a8dbd7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/POSTION.java
@@ -0,0 +1,24 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * PTZ 绝对坐标
+ *
+ * @author : 47040
+ * @since : Created in 2020/10/26 15:56
+ */
+public class POSTION extends NetSDKLib.SdkStructure {
+    /**
+     * 水平角度
+     */
+    public int nHorizontalAngle;
+    /**
+     * 垂直角度
+     */
+    public int nVerticalAngle;
+    /**
+     * 放大倍数
+     */
+    public int nMagnification;
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java
new file mode 100644
index 0000000..e6c4ac5
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_NORMALIZED_POSITION_UNIT.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 归一化的云台控制坐标单元
+ * @date 2021/2/20
+ */
+public class PTZ_NORMALIZED_POSITION_UNIT extends NetSDKLib.SdkStructure {
+  /** 云台水平方向角度,范围[-1, 1] */
+  public double dbPositionX;
+  /** 云台垂直方向角度,范围[-1, 1] */
+  public double dbPositionY;
+  /** 云台光圈放大倍率,范围[0, 1] */
+  public double dbZoom;
+  /** 预留字节 */
+  public byte[] szReserved = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_PRESET_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_PRESET_UNIT.java
new file mode 100644
index 0000000..7e25258
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_PRESET_UNIT.java
@@ -0,0 +1,30 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 预置点的坐标和放大倍数
+ * @date 2022/05/10 20:41:58
+ */
+public class PTZ_PRESET_UNIT extends NetSDKLib.SdkStructure {
+	/**
+	 * 水平坐标,范围[0,3599],表示0度到359.9度,度数扩大10倍表示。
+	 */
+	public int nPositionX;
+	/**
+	 * 垂直坐标,范围[-1800,1800],表示-180.0度到+180.0度,度数扩大10倍表示。
+	 */
+	public int nPositionY;
+	/**
+	 * 放大参数,范围[0,127],表示最小倍到最大倍的变倍位置
+	 */
+	public int nZoom;
+	/**
+	 * 预留32字节
+	 */
+	public byte[] szReserve = new byte[32];
+
+	public PTZ_PRESET_UNIT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPACE_UNIT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPACE_UNIT.java
new file mode 100644
index 0000000..b31c0dc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPACE_UNIT.java
@@ -0,0 +1,31 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+
+/**
+ * 轮巡控制类型
+ * 
+ * @author : 260611
+ * @since : Created in 2021/10/19 19:35
+ */
+public class PTZ_SPACE_UNIT extends NetSDKLib.SdkStructure {
+
+    /**
+     * 云台水平运动位置,有效范围:[0,3600]
+     */
+    public int					nPositionX;
+    /**
+     * 云台垂直运动位置,有效范围:[-1800,1800]
+     */
+    public int					nPositionY;
+    /**
+     * 云台光圈变动位置,有效范围:[0,128]
+     */
+    public int					nZoom;
+    /**
+     * 预留32字节
+     */
+    public byte					szReserve[] = new byte[32];
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPEED.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPEED.java
new file mode 100644
index 0000000..a2d66b1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PTZ_SPEED.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 251823
+* @description  云台控制坐标单元 
+* @date 2022/07/21 15:09:08
+*/
+public class PTZ_SPEED extends NetSDKLib.SdkStructure {
+	/**
+	 * 云台水平方向速率,归一化到-1~1
+	 */
+    public float fPositionX;
+    /**
+     * 云台垂直方向速率,归一化到-1~1
+     */
+    public float fPositionY;
+    /**
+     * 云台光圈放大倍率,归一化到0~1
+     */
+    public float fZoom;
+    /**
+     * 预留32字节
+     */
+    public byte[] szReserve = new byte[32];
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PassingCityByteArr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PassingCityByteArr.java
new file mode 100644
index 0000000..d8db14a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PassingCityByteArr.java
@@ -0,0 +1,16 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description  城市名字符串对应字节数组
+ * @date 2021/08/15
+ */
+public class PassingCityByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  城市名字符串对应字节数组
+	 */
+	public byte[] passingCityByteArr = new byte[128];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PlateNumber.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PlateNumber.java
new file mode 100644
index 0000000..fd61830
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PlateNumber.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 车牌
+ * @date 2021/2/22
+ */
+public class PlateNumber extends NetSDKLib.SdkStructure {
+    public byte[] plateNumber=new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PointerSize.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PointerSize.java
new file mode 100644
index 0000000..8c8a649
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PointerSize.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description
+ * @date 2022/3/8 14:05
+ */
+public class PointerSize extends NetSDKLib.SdkStructure {
+    public Pointer pointer;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PtotoListByteArr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PtotoListByteArr.java
new file mode 100644
index 0000000..3068649
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/PtotoListByteArr.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description  雷达控制盒支持的协议字符串对应字节数组
+ * @date 2021/09/23
+ */
+public class PtotoListByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  雷达控制盒支持的协议字符串对应字节数组
+	 */
+	public byte[] ptotoListByteArr = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java
new file mode 100644
index 0000000..10c7c50
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/QUERY_DEVICE_LOG_PARAM.java
@@ -0,0 +1,49 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 260611
+ * @description 查询记录数条件
+ * @date 2023/05/05 11:12:30
+ */
+public class QUERY_DEVICE_LOG_PARAM extends NetSDKLib.SdkStructure {
+    /**
+     * 查询日志类型 {@link com.netsdk.lib.enumeration.DH_LOG_QUERY_TYPE}
+     */
+    public int emLogType;
+    /**
+     * 查询日志的开始时间
+     */
+    public NET_TIME stuStartTime = new NET_TIME();
+    /**
+     * 查询日志的结束时间
+     */
+    public NET_TIME stuEndTime = new NET_TIME();
+    /**
+     * 在时间段中从第几条日志开始查询,开始第一次查询可设为0
+     */
+    public int nStartNum;
+    /**
+     * 一次查询中到第几条日志结束,日志返回条数的最大值为1024
+     */
+    public int nEndNum;
+    /**
+     * 日志数据结构体类型,0:表示DH_DEVICE_LOG_ITEM;1:表示DH_DEVICE_LOG_ITEM_EX
+     */
+    public byte nLogStuType;
+    /**
+     * 保留 对齐
+     */
+    public byte[] reserved = new byte[3];
+    /**
+     * 通道号,0:兼容之前表示所有通道号,所以通道号从1开始; 1:第一个通道
+     */
+    public int nChannelID;
+
+    public byte[] bReserved = new byte[40];
+
+    public QUERY_DEVICE_LOG_PARAM() {
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java
new file mode 100644
index 0000000..a573dec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RADAR_REPORTS_VEHICLE_INFO.java
@@ -0,0 +1,71 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  雷达上报车辆信息 
+* @date 2022/06/07 09:46:01
+*/
+public class RADAR_REPORTS_VEHICLE_INFO extends NetSDKLib.SdkStructure {
+/** 
+车辆ID
+*/
+public			int					nVehicleId;
+/** 
+车辆长度(单位:厘米)
+*/
+public			int					nVehicleLength;
+/** 
+车辆宽度(单位:厘米)
+*/
+public			int					nVehicleWidth;
+/** 
+车辆高度(单位:厘米)
+*/
+public			int					nVehicleHeight;
+/** 
+车辆体积(单位:立方厘米)
+*/
+public			int					nVehicleVolume;
+/** 
+车道号
+*/
+public			int					nLaneID;
+/** 
+车辆行驶方向(相对车道方向) {@link com.netsdk.lib.enumeration.EM_VEHICLE_DRIVING_DIRECTION}
+*/
+public			int					emDrivingDirection;
+/** 
+车辆到达雷达检测位置的时间
+*/
+public			byte[]					szDetectTime=new byte[32];
+/** 
+车辆的挡板高度(单位:厘米)
+*/
+public			int					nVehicleRailingHigh;
+/** 
+车辆速度(单位:千米/小时)
+*/
+public			int					nVehicleSpeed;
+/** 
+车辆类型 {@link com.netsdk.lib.enumeration.EM_RADAR_DETECTION_VEHICLE_TYPE}
+*/
+public			int					emVehicleType;
+/** 
+车辆车轴个数
+*/
+public			int					nAxisNum;
+/** 
+车辆车轴类型
+*/
+public			int					nAxisType;
+/** 
+保留字节
+*/
+public			byte[]					byResverd=new byte[260];
+
+public RADAR_REPORTS_VEHICLE_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RECT.java
new file mode 100644
index 0000000..1421b2c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RECT.java
@@ -0,0 +1,23 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+import com.sun.jna.NativeLong;
+
+/**
+ * @author 251823
+ * @description
+ * @date 2022/06/17 11:14:34
+ */
+public class RECT extends NetSDKLib.SdkStructure {
+
+	public NativeLong left;
+
+	public NativeLong top;
+
+	public NativeLong right;
+
+	public NativeLong bottom;
+
+	public RECT() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RELATED_IMAGE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RELATED_IMAGE.java
new file mode 100644
index 0000000..1df681d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RELATED_IMAGE.java
@@ -0,0 +1,20 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 291189
+ * @version 1.0
+ * @description  关联图片
+ * @date 2021/9/9
+ */
+public class RELATED_IMAGE extends NetSDKLib.SdkStructure {
+ /** 图片类型	0表示包裹所有者的人脸图片 1表示包裹违禁品图片*/
+ public			int					nImageType;
+ /** 在二进制数据块中的偏移*/
+ public			int					nOffset;
+ /** 图片大小,单位:字节*/
+ public			int					nLength;
+
+ public  byte[] szReserved=new byte[128];          // 预留字节
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_LAMP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_LAMP_INFO.java
new file mode 100644
index 0000000..9c2fce4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_LAMP_INFO.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 运行灯组信息
+ * @date 2021/08/30
+ */
+public class RUN_LAMP_INFO extends NetSDKLib.SdkStructure{
+	/**
+     *  通道编号
+     */
+    public int nLampNum;
+
+    /**
+     *  相机状态,参考枚举{ @link EM_CAMERA_STATUS }
+     */
+    public int emCameraStatus;
+
+    /**
+     *  通道对应灯色倒计时
+     */
+    public int nCntDown;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[256];
+	
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_PHASE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_PHASE_INFO.java
new file mode 100644
index 0000000..f4b5b86
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RUN_PHASE_INFO.java
@@ -0,0 +1,45 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description RTSC跑动暂停事件, 对应事件类型 NET_ALARM_RTSC_PHASE_RUNING
+ * @date 2021/08/24
+ */
+public class RUN_PHASE_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  相位编号,A为1
+     */
+    public int nPhaseNum;
+
+    /**
+     *  nt, 相位重复出现的次数,默认为1, A1为1,A2该字段为2
+     */
+    public int nPhaseOrder;
+
+    /**
+     *  当前相位对应的车行灯通道,按位表示,低bit表示通道1
+     */
+    public  int nCarLamp;
+
+    /**
+     *  当前相位对应的行人灯通道,按位表示,低bit表示通道1
+     */
+    public  int nPsgLamp;
+
+    /**
+     *  相机状态,参考枚举{ @link EM_CAMERA_STATUS }
+     */
+    public int emCameraStatus;
+
+    /**
+     *  相位对应灯色倒计时
+     */
+    public int nCntDown;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[512];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RuleTypeByteArr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RuleTypeByteArr.java
new file mode 100644
index 0000000..59c8ecb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/RuleTypeByteArr.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 规则类型字节数组
+ * @date 2021/09/27
+ */
+public class RuleTypeByteArr extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 单个规则类型
+	 */
+	public byte[] szRuleTypeByteArr = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SCENE_SUPPORT_RULE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SCENE_SUPPORT_RULE.java
new file mode 100644
index 0000000..fe1c7d7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SCENE_SUPPORT_RULE.java
@@ -0,0 +1,191 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 场景支持的规则
+ * @date 2021/01/11
+ */
+public class SCENE_SUPPORT_RULE extends NetSDKLib.SdkStructure {
+
+	/**
+	 * 规则类型
+	 */
+	public int dwSupportedRule;
+
+	/**
+	 * 支持的检测物体类型个数
+	 */
+	public int nSupportedObjectTypeNum;
+
+	/**
+	 * 支持的检测物体类型列表
+	 */
+	public MaxNameByteArrInfo[] szObjectTypeName = (MaxNameByteArrInfo[]) new MaxNameByteArrInfo()
+			.toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
+
+	/**
+	 * 支持的检测物体动作个数
+	 */
+	public int nSupportedActionsNum;
+
+	/**
+	 * 支持的检测物体动作列表
+	 */
+	public MaxNameByteArrInfo[] szSupportedActions = (MaxNameByteArrInfo[]) new MaxNameByteArrInfo()
+			.toArray(NetSDKLib.MAX_ACTION_LIST_SIZE);
+
+	/**
+	 * 支持的检测类型个数
+	 */
+	public int nSupportedDetectTypeNum;
+
+	/**
+	 * 支持的检测类型列表
+	 */
+	public MaxNameByteArrInfo[] szSupportedDetectTypes = (MaxNameByteArrInfo[]) new MaxNameByteArrInfo()
+			.toArray(NetSDKLib.MAX_ACTION_LIST_SIZE);
+
+	/**
+	 * 支持的目标检测类型个数
+	 */
+	public int nSupportFaceTypeNum;
+
+	/**
+	 * 支持的目标检测类型列表
+	 */
+	public MaxNameByteArrInfo[] szSupportFaceTypes = (MaxNameByteArrInfo[]) new MaxNameByteArrInfo()
+			.toArray(NetSDKLib.MAX_HUMANFACE_LIST_SIZE);
+
+	/**
+	 * 是否支持触发报警位置
+	 */
+	public int bTriggerPosition;
+
+	/**
+	 * 是否支持触发跟踪
+	 */
+	public int bTriggerTrack;
+
+	/**
+	 * 是否允许配置开启人脸属性识别
+	 */
+	public int bFaceDetection;
+
+	/**
+	 * 支持的人脸属性类型个数
+	 */
+	public int nSupportFeactureNum;
+
+	/**
+	 * 支持的人脸属性类型列表 参考EM_FACEFEATURE_TYPE
+	 */
+	public int[] emFeatureList = new int[NetSDKLib.MAX_FEATURE_LIST_SIZE];
+
+	/**
+	 * 支持规则的最大个数
+	 */
+	public int nMaxRules;
+
+	/**
+	 * 人体检测能力
+	 */
+	public FACEBODY_DETECT_CAPS stuFaceBodyDetectCaps;
+
+	/**
+	 * 人体识别能力
+	 */
+	public FACEBODY_ANALYSE_CAPS stuFaceBodyAnalyseCaps;
+
+	/**
+	 * 是否允许配置FeatureEnable,0-不支持(默认)1-支持(用于绊线检测事件和警戒区域检测事件)
+	 */
+	public int nFeatureSupport;
+
+	/**
+	 * 人员聚集检测是否支持"最小聚集区域"配置,默认TRUE
+	 */
+	public int bSupportMinRegion;
+
+	/**
+	 * 支持的联动特写情况。 0:表示没这个字段或者不支持,1表示支持
+	 */
+	public int nSupportCloseUp;
+
+	/**
+	 * 特写模式个数
+	 */
+	public int nSupportCloseUpTypeNum;
+
+	/**
+	 * 可选择特写模式, 参考{ @link EM_SUPPORT_CLOSE_UP_TYPE}
+	 */
+	public int[] emSupportCloseUpType = new int[32];
+
+	/**
+	 * 睿厨着装检特征列表,参考 { @link EM_FEATURE_LIST_TYPE}
+	 */
+	public int[] emFeature = new int[32];
+
+	/**
+	 * 检测到的特征个数
+	 */
+	public int nDetectFeatureCount;
+
+	/**
+	 * 检测到的厨师服装颜色列表,参考 { @link EM_SUPPORTED_COLOR_LIST_TYPE}
+	 */
+	public int[] emSupportedColorList = new int[8];
+
+	/**
+	 * 检测到的厨师服装颜色个数
+	 */
+	public int nDetectSupportedColorCount;
+
+	/**
+	 * 人群分布图是否支持多边形,TRUE:表示支持任意边形;FALSE:表示没有这个能力表示或者只支持4个点的平行四边形
+	 */
+	public int bSupportPolygon;
+
+	/**
+	 * 活跃度统计规则
+	 */
+	public CFG_ACTIVITY_ANALYSE_CAPS stuActivityAnalyseCaps;
+
+	/**
+	 * 联动业务个数
+	 */
+	public int nLink;
+
+	/**
+	 * 联动业务大类选项
+	 */
+	public CFG_LINK_CLASS_TYPE[] stuLinkClassType = (CFG_LINK_CLASS_TYPE[]) new CFG_LINK_CLASS_TYPE().toArray(16);
+
+	/**
+	 * 人像检测
+	 */
+	public CFG_PORTRAIT_DETECTION_CAPS	 stuPortraitDetectionCaps;
+
+	public SCENE_SUPPORT_RULE() {
+
+		for (int i = 0; i < szObjectTypeName.length; i++) {
+			szObjectTypeName[i] = new MaxNameByteArrInfo();
+		}
+		for (int i = 0; i < szSupportedActions.length; i++) {
+			szSupportedActions[i] = new MaxNameByteArrInfo();
+		}
+		for (int i = 0; i < szSupportedDetectTypes.length; i++) {
+			szSupportedDetectTypes[i] = new MaxNameByteArrInfo();
+		}
+		for (int i = 0; i < szSupportFaceTypes.length; i++) {
+			szSupportFaceTypes[i] = new MaxNameByteArrInfo();
+		}
+		for (int i = 0; i < stuLinkClassType.length; i++) {
+			stuLinkClassType[i] = new CFG_LINK_CLASS_TYPE();
+		}
+
+	}
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java
new file mode 100644
index 0000000..20170ba
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息,对应接口CLIENT_QueryDeviceLog接口
+ * @author 47081
+ */
+public class SDK_DEVICE_LOG_ITEM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 日志类型
+     */
+    public int                 nLogType;
+    /**
+     * 日期
+     */
+    public SDK_DEV_TIME stuOperateTime;
+    /**
+     * 操作者
+     */
+    public byte[]                szOperator=new byte[16];
+    public byte[]                bReserved=new byte[3];
+    /**
+     * union结构类型对应NET_STU_LOG结构体,
+     * 0:szLogContext;
+     * 1:stuOldLog,在NET_STU_LOG结构体内
+     */
+    public byte                bUnionType;
+    //public NET_STU_LOG         stuLog;
+   /**
+    * 日志备注信息
+    */
+    public byte[]            szLogContext=new byte[64];
+    public byte[]                reserved=new byte[16];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java
new file mode 100644
index 0000000..14d7427
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEVICE_LOG_ITEM_EX.java
@@ -0,0 +1,82 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+import java.nio.charset.Charset;
+
+/**
+ * 新日志信息结构,对应接口CLIENT_QueryDeviceLog接口
+ * @author 47081
+ */
+public class SDK_DEVICE_LOG_ITEM_EX extends NetSDKLib.SdkStructure {
+    /**
+     * 日志类型
+     */
+    public int                 nLogType;
+    /**
+     * 日期
+     */
+    public SDK_DEV_TIME stuOperateTime;
+    /**
+     * 操作者
+     */
+    public byte[]              szOperator=new byte[16];
+    public byte[]              bReserved=new byte[3];
+    /**
+     *  union结构类型对应结构体NET_STU_LOG,
+     * 0:stuLog.szLogContext;
+     * 1:stuLog.stuOldLog。
+     */
+    public byte                bUnionType;
+    /**
+     * 具体的操作内容
+     *//*
+    public NET_STU_LOG         stuLog;*/
+    public byte[]              szLogContext=new byte[64];
+    public byte[]              szOperation=new byte[32];
+    /**
+     * 详细日志信息描述
+     */
+    public byte[]              szDetailContext=new byte[4*1024];
+
+    /**
+     * 操作者,默认编码集UTF-8
+     * @return 操作者名称
+     */
+    public String getOperator(){return getOperator(Charset.forName("UTF_8"));}
+    public String getOperator(Charset charset){
+        return new String(szOperation,charset);
+    }
+
+    /**
+     * 操作日期
+     * @return
+     */
+    public String getDate(){
+        return stuOperateTime.getDate();
+    }
+
+    /**
+     * 操作
+     * @return
+     */
+    public String getOperation(){ return getOperation(Charset.forName("UTF_8"));}
+    public String getOperation(Charset charset){return new String(szOperation,charset);}
+    /**
+     * 具体操作内容
+     * @return
+     */
+    public String getLog(){return getLog(Charset.forName("UTF_8"));}
+    public String getLog(Charset charset){
+        return new String(szLogContext,charset);
+    }
+
+    /**
+     * 详细日志信息描述
+     * @return
+     */
+    public String getDetailLog(){return getDetailLog(Charset.forName("UTF_8"));}
+    public String getDetailLog(Charset charset){
+        return new String(szDetailContext,charset);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEV_TIME.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEV_TIME.java
new file mode 100644
index 0000000..c77eb3c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_DEV_TIME.java
@@ -0,0 +1,90 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息里的时间定义
+ * @author 47081
+ */
+public class SDK_DEV_TIME extends NetSDKLib.SdkStructure {
+    /**
+     * 秒    1-60
+     *//*
+    public int                second;
+    *//**
+     * 分    1-60
+     *//*
+    public int                minute;
+    *//**
+     * 时    1-24
+     *//*
+    public int                hour;
+    *//**
+     * 日    1-31
+     *//*
+    public int                day;
+    *//**
+     * 月    1-12
+     *//*
+    public int                month;
+    *//**
+     * 年    2000-2063
+     *//*
+    public int                year;*/
+    public int                date;
+
+
+/**
+ *second:6;                // 秒    1-60
+ *minute:6;                // 分    1-60
+ *hour:5;                  // 时    1-24
+ *day:5;                   // 日    1-31
+ *month:4;                 // 月    1-12
+ *year:6;                  // 年    2000-2063
+ *
+ */
+public int getSecond(){
+    return getAnd(date,0,6);
+}
+public int getMinute(){
+    return getAnd(date,6,6+6);
+}
+public int getHour(){return getAnd(date,6+6,6+6+5);}
+public int getDay(){return getAnd(date,6+6+5,6+6+5+5);}
+public int getMonth(){return getAnd(date,6+6+5+5,6+6+5+5+4);}
+public int getYear(){return 2000+getAnd(date,6+6+5+5+4,6+6+5+5+4+6);}
+
+    /**
+     * c层处理后的原始年份信息
+     * @return
+     */
+    public int getOriginalYear(){return getAnd(date,6+6+5+5+4,6+6+5+5+4+6);};
+public String getDate(){
+    return getYear()+"-"+getMonth()+"-"+getDay()+" "+getHour()+":"+getMinute()+":"+getSecond();
+}
+
+    /**
+     * 按位与
+     * @param date 原始数据
+     * @param start 需要偏移的位数
+     * @param end 与的位数
+     * @return
+     */
+    private int getAnd(int date,int start,int end){
+        return date>>start&getOr(start,end);
+    }
+
+    /**
+     * 按位与的位数
+     * @param start 开始与的位数
+     * @param end 结束与的位数
+     * @return
+     */
+    private int getOr(int start,int end){
+        int result=0;
+        for (int i = 0; i < end-start; i++) {
+            result|=(1<<i);
+        }
+        return result;
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_HARDDISK_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_HARDDISK_STATE.java
new file mode 100644
index 0000000..c53be5f
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_HARDDISK_STATE.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 设备硬盘信息
+ * @date 2021/1/27
+ */
+public class SDK_HARDDISK_STATE extends NetSDKLib.SdkStructure {
+  /** 个数 */
+  public int dwDiskNum;
+  /** 硬盘或分区信息 */
+  public NetSDKLib.NET_DEV_DISKSTATE[] stDisks =
+      (NetSDKLib.NET_DEV_DISKSTATE[]) new NetSDKLib.NET_DEV_DISKSTATE().toArray(256);
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_LOG_ITEM.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_LOG_ITEM.java
new file mode 100644
index 0000000..21923ec
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_LOG_ITEM.java
@@ -0,0 +1,32 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * 日志信息,对应接口CLIENT_QueryLog接口
+ * @author 47081
+ */
+public class SDK_LOG_ITEM extends NetSDKLib.SdkStructure {
+
+    /**
+     * 日期
+     */
+    public SDK_DEV_TIME time;
+    /**
+     * 日志类型,对应结构体 DH_LOG_TYPE
+     */
+    public short               type;
+    /**
+     * 保留
+     */
+    public byte                reserved;
+    /**
+     * 数据
+     */
+    public byte                data;
+    /**
+     * 内容
+     */
+    public byte[]              context=new byte[8];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_PIC_INFO_EX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_PIC_INFO_EX.java
new file mode 100644
index 0000000..baa5821
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_PIC_INFO_EX.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 图片信息(目前仅用于机动车和非机动车),对应C++头文件NET_PIC_INFO_EX
+ * @date 2022/12/03 13:43:56
+ */
+public class SDK_PIC_INFO_EX extends NetSDKLib.SdkStructure {
+	/**
+	 * 图片大小,单位:字节
+	 */
+	public int nLength;
+	/**
+	 * 图片宽度
+	 */
+	public int nWidth;
+	/**
+	 * 图片高度
+	 */
+	public int nHeight;
+	/**
+	 * 用于字节对齐
+	 */
+	public byte[] byReserverd = new byte[4];
+	/**
+	 * 图片路径
+	 */
+	public byte[] szFilePath = new byte[256];
+	/**
+	 * 保留字节
+	 */
+	public byte[] szReserverd = new byte[256];
+
+	public SDK_PIC_INFO_EX() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_TSECT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_TSECT.java
new file mode 100644
index 0000000..e1ae12a
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SDK_TSECT.java
@@ -0,0 +1,42 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 时间段结构
+ * @date 2020/10/19
+ */
+public class SDK_TSECT extends NetSDKLib.SdkStructure {
+    /**
+     * 当表示录像时间段时,按位表示四个使能,从低位到高位分别表示动检录象、报警录象、普通录象、动检和报警同时发生才录像
+     * 当表示布撤防时间段时, 表示使能
+     * 当表示推送时间段时, 表示使能:1表示使能,0表示非使能
+     */
+    public int bEnable;
+    public int iBeginHour;
+    public int iBeginMin;
+    public int iBeginSec;
+    public int iEndHour;
+    public int iEndMin;
+    public int iEndSec;
+
+    /*
+     * 设置时间
+     */
+    public void setTime(int bEnable, int beginHour, int beginMinute, int beginSecond, int endHour, int endMinute, int endSecond) {
+        this.bEnable = bEnable;
+        this.iBeginHour = beginHour;
+        this.iBeginMin = beginMinute;
+        this.iBeginSec = beginSecond;
+        this.iEndHour = endHour;
+        this.iEndMin = endMinute;
+        this.iEndSec = endSecond;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("enable:%d,%02d:%02d:%02d-%02d:%02d:%02d", bEnable, iBeginHour, iBeginMin, iBeginSec, iEndHour, iEndMin, iEndSec);
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_BATTERY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_BATTERY_INFO.java
new file mode 100644
index 0000000..90379e7
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_BATTERY_INFO.java
@@ -0,0 +1,37 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ * <p>
+ * \else
+ * 太阳能蓄电池信息
+ * \endif
+ * @date 2020/8/11
+ */
+public class SOLARCELL_BATTERY_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 电量百分比(范围:0~100)
+     */
+    public int nElectricityQuantityPercent;
+    /**
+     * 电压(单位:伏特)
+     */
+    public float fVoltage;
+    /**
+     * 温度(单位:摄氏度)
+     */
+    public float fTemperature;
+    /**
+     * 控制温度(单位:摄氏度)
+     */
+    public float fControllerTemper;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[256];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_PANEL_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_PANEL_INFO.java
new file mode 100644
index 0000000..4f6806c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_PANEL_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description \if ENGLISH_LANG
+ * <p>
+ * \else
+ * 太阳能板信息
+ * \endif
+ * @date 2020/8/11
+ */
+public class SOLARCELL_PANEL_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 电压(单位:伏特)
+     */
+    public float fVoltage;
+    /**
+     * 电流(单位:安培)
+     */
+    public float fElectricCurrent;
+    /**
+     * 充电功率
+     */
+    public float fChargingPower;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[252];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java
new file mode 100644
index 0000000..1f0943c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SOLARCELL_SYSTEM_HISTORY_INFO.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description
+ * \if ENGLISH_LANG
+ * solarcell system history info
+ * \else
+ * 太阳能系统历史数据信息
+ * \endif
+ * @date 2020/8/11
+ */
+public class SOLARCELL_SYSTEM_HISTORY_INFO extends NetSDKLib.SdkStructure {
+
+    /**
+     * 系统运行时间(单位:天)
+     */
+    public int nSystemTotalRunDay;
+    /**
+     * 蓄电池总过放次数
+     */
+    public int nBatteryOverDischargeCount;
+    /**
+     * 蓄电池总充满电次数
+     */
+    public int nBatteryTotalChargeCount;
+    /**
+     * 保留字节
+     */
+    public byte[] byReserved = new byte[252];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java
new file mode 100644
index 0000000..40420ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/START_LISTEN_FINISH_RESULT_INFO.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @Author 251589
+ * @Description:
+ * @Date 2020/11/27 12:08
+ */
+public class START_LISTEN_FINISH_RESULT_INFO  extends NetSDKLib.SdkStructure {
+    public int dwEventResult;						// 事件订阅返回结果 NET_NOERROR:成功  非0:失败,值为错误码,详见_EC(x)
+    public byte[] byReserved = new byte[508];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_INFO.java
new file mode 100644
index 0000000..b5c0e05
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯组色步信息
+ * @date 2021/09/01
+ */
+public class STEP_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口方向
+     */
+    public int nEnterDir;
+
+    /**
+     *  进口灯组数量
+     */
+    public int nEnterLampNumber;
+
+    /**
+     *  灯色信息个数
+     */
+    public int nLampInfoNum;
+
+    /**
+     *  灯色信息(0~10)包含1到M(进口灯组数量)个灯色信息 
+     */
+    public LAMP_INFO[] stuLightColorInfo = (LAMP_INFO[]) new LAMP_INFO().toArray(10);
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_SEQUENCE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_SEQUENCE_INFO.java
new file mode 100644
index 0000000..d4c6b16
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/STEP_SEQUENCE_INFO.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 色步时间序列信息
+ * @date 2021/09/01
+ */
+public class STEP_SEQUENCE_INFO extends NetSDKLib.SdkStructure{
+	
+	 /**
+     *  灯色个数
+     */
+    public int nLampColorCount;
+
+    /**
+     * // 灯色 当灯组类型EM_LAMP_TYPE为EM_LAMP_TYPE_STRAIGHT-EM_LAMP_TYPE_FLASH_WARN时,int[0]用于表示红色发光单元,int[1]用于表示黄色发光单元,int[2]用于表示绿色发光单元,int[3]保留
+	   // 当灯组类型为EM_LAMP_TYPE_TRAM_DEDICATED_STRAIGHT-EM_LAMP_TYPE_TRAM_DEDICATED_RIGHT时,int[0]用于表示禁止通行信号发光单元,int[1]用于表示过渡信号发光单元,int[2]用于表示通行信号发光单元,int[3]保留 
+		// 具体取值0:无灯1:灭灯2:亮灯3:闪烁
+     */
+    public int[] nLampColor = new int[4];
+
+    /**
+     *  时间长度,单位为秒(s)
+     */
+    public int nTime;
+
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArr32.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArr32.java
new file mode 100644
index 0000000..7519367
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArr32.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 字符串字节数组对象(长度32)
+ * @date 2021/01/13
+ */
+public class StringByteArr32 extends NetSDKLib.SdkStructure{
+	/**
+	 * 二维数组内字符串对应字节数组
+	 */
+	public byte[] data = new byte[32];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArrSixteen.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArrSixteen.java
new file mode 100644
index 0000000..6b61f71
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/StringByteArrSixteen.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 字符串字节数组对象(长度16)
+ * @date 2021/01/13
+ */
+public class StringByteArrSixteen extends NetSDKLib.SdkStructure{
+	/**
+	 * 二维数组内字符串对应字节数组
+	 */
+	public byte[] data = new byte[NetSDKLib.CFG_COMMON_STRING_16];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SupportedModeByteArr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SupportedModeByteArr.java
new file mode 100644
index 0000000..0a54794
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/SupportedModeByteArr.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description  网络模式字符串对应字节数组
+ * @date 2021/09/17
+ */
+public class SupportedModeByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  网络模式字符串对应字节数组
+	 */
+	public byte[] supportedModeByteArr = new byte[NetSDKLib.NET_MAX_MODE_LEN];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java
new file mode 100644
index 0000000..a562a15
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/THERMOMETRY_SHIELD_INFO.java
@@ -0,0 +1,39 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/** 
+* @author 291189
+* @description  每个屏蔽区的测温屏蔽区配置信息 
+* @date 2022/11/07 10:53:23
+*/
+public class THERMOMETRY_SHIELD_INFO extends NetSDKLib.SdkStructure {
+/** 
+屏蔽使能, TRUE开启, FALSE关闭
+*/
+public			int					bEnable;
+/** 
+屏蔽区编号
+*/
+public			int					nShieldId;
+/** 
+自定义名称
+*/
+public			byte[]					szName=new byte[64];
+/**
+ 坐标点
+*/
+public NET_RECT stuRect=new NET_RECT();
+/** 
+预置点编号
+*/
+public			int					nPresetId;
+/** 
+预留字段
+*/
+public			byte[]					szReserved=new byte[128];
+
+public THERMOMETRY_SHIELD_INFO(){
+}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TIME_SECTION_6.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TIME_SECTION_6.java
new file mode 100644
index 0000000..45c20f1
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TIME_SECTION_6.java
@@ -0,0 +1,11 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 6个NET_TSECT时间段结构体
+ * @date 2022/10/14 13:53:01
+ */
+public class TIME_SECTION_6 extends NetSDKLib.SdkStructure{
+	public NetSDKLib.NET_TSECT[] timeSection = new NetSDKLib.NET_TSECT[NetSDKLib.NET_N_REC_TSECT];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_EVENT.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_EVENT.java
new file mode 100644
index 0000000..2407559
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_EVENT.java
@@ -0,0 +1,35 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 交通事件信息
+ * @date 2021/09/01
+ */
+public class TRAFFIC_EVENT extends NetSDKLib.SdkStructure{
+	 /**
+     *  机动车电子标识序列号
+     */
+    public byte[] szCarId = new byte[128];
+
+    /**
+     *  车牌号码
+     */
+    public byte[] szPlateNumber = new byte[128];
+
+    /**
+     *  行驶方向以地理正北方向为起点的顺时针旋转角度,单位为度(°)
+     */
+    public int nDrivingDir;
+
+    /**
+     *  交通事件,参考{ @link EM_TRAFFIC_EVENT }
+     */
+    public int emTrafficEvent;
+
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java
new file mode 100644
index 0000000..fbf4312
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_JUNTION_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 区域路口过车信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_FLOW_JUNTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 区域号
+     */
+    public int nAreaNo;
+    /**
+     * 路口号
+     */
+    public int nJunNo;
+    /**
+     * 方向号,北东南西分别为0/1/2/3
+     */
+    public int nDirNo;
+    /**
+     * 进出口类型,进口道 0,出口道 1
+     */
+    public int nLaneDirType;
+    /**
+     * 检测断面号
+     */
+    public int nSecNo;
+    /**
+     * 车道号0~7
+     */
+    public int nLaneNo;
+    /**
+     * 车辆类型
+     */
+    public int nVehType;
+    /**
+     * 车辆速度,精度1km/h
+     */
+    public int nVehSpeed;
+    /**
+     * 占有时间,单位ms
+     */
+    public int nOccTime;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[252];
+
+    @Override
+    public String toString() {
+        return "TRAFFIC_FLOW_JUNTION_INFO{" +
+                "nAreaNo=" + nAreaNo +
+                ", nJunNo=" + nJunNo +
+                ", nDirNo=" + nDirNo +
+                ", nLaneDirType=" + nLaneDirType +
+                ", nSecNo=" + nSecNo +
+                ", nLaneNo=" + nLaneNo +
+                ", nVehType=" + nVehType +
+                ", nVehSpeed=" + nVehSpeed +
+                ", nOccTime=" + nOccTime +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java
new file mode 100644
index 0000000..ae4caf4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_LANE_INFO.java
@@ -0,0 +1,38 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 车道的车道统计信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_FLOW_LANE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 车道流量
+     */
+    public int nFlow;
+    /**
+     * 车道平均速度,1km/h精度
+     */
+    public int nAveSpeed;
+    /**
+     * 车道占有率
+     */
+    public int nOccupancy;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[252];
+
+    @Override
+    public String toString() {
+        return "TRAFFIC_FLOW_LANE_INFO{" +
+                "nFlow=" + nFlow +
+                ", nAveSpeed=" + nAveSpeed +
+                ", nOccupancy=" + nOccupancy +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java
new file mode 100644
index 0000000..e186a1c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_QUEUE_INFO.java
@@ -0,0 +1,68 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 区域路口排队信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_FLOW_QUEUE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 检测器状态 0-正常 1-故障
+     */
+    public int nDecStatus;
+    /**
+     * 区域号
+     */
+    public int nAreaNo;
+    /**
+     * 路口号
+     */
+    public int nJunNo;
+    /**
+     * 方向号,北东南西分别为0/1/2/3
+     */
+    public int nDirNo;
+    /**
+     * 进出口类型,进口道 0,出口道 1
+     */
+    public int nLaneDirType;
+    /**
+     * 车道信息个数
+     */
+    public int nQueueInfoNum;
+    /**
+     * 0~7车道的信息
+     */
+    public TRAFFIC_QUEUE_INFO[] stuQueueInfo = (TRAFFIC_QUEUE_INFO[]) new TRAFFIC_QUEUE_INFO().toArray(32);
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[256];
+
+    @Override
+    public String toString() {
+
+        String stuQueueInfos = "";
+        if(nQueueInfoNum > 0){
+            stuQueueInfos += "stuQueueInfo[0] = ";
+            stuQueueInfos += stuQueueInfo[0].toString();
+        }
+        for(int i = 1; i < nQueueInfoNum; i ++){
+            stuQueueInfos += ",stuQueueInfo[" + i + "] = ";
+            stuQueueInfos += stuQueueInfo[i].toString();
+        }
+        return "TRAFFIC_FLOW_QUEUE_INFO{" +
+                "nDecStatus=" + nDecStatus +
+                ", nAreaNo=" + nAreaNo +
+                ", nJunNo=" + nJunNo +
+                ", nDirNo=" + nDirNo +
+                ", nLaneDirType=" + nLaneDirType +
+                ", nQueueInfoNum=" + nQueueInfoNum +
+                ", stuQueueInfo=" + stuQueueInfos +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java
new file mode 100644
index 0000000..533d477
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_STAT_EX_INFO.java
@@ -0,0 +1,62 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 路口车道统计信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_FLOW_STAT_EX_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 区域号
+     */
+    public int nAreaNo;
+    /**
+     * 路口号
+     */
+    public int nJunNo;
+    /**
+     * 方向号,北东南西分别为0/1/2/3
+     */
+    public int nDirNo;
+    /**
+     * 检测断面号
+     */
+    public int nSecNo;
+    /**
+     * 0~7车道的车道统计信息
+     */
+    public TRAFFIC_FLOW_LANE_INFO[] stuLaneInfo = (TRAFFIC_FLOW_LANE_INFO[]) new TRAFFIC_FLOW_LANE_INFO().toArray(32);
+    /**
+     * 车道统计信息个数
+     */
+    public int nLaneInfoNum;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[252];
+
+    @Override
+    public String toString() {
+        String stuLaneInfos = "";
+        if(nLaneInfoNum > 0){
+            stuLaneInfos += "stuLaneInfo[0] = ";
+            stuLaneInfos += stuLaneInfo[0].toString();
+        }
+        for(int i = 1; i < nLaneInfoNum; i ++){
+            stuLaneInfos += ",stuLaneInfo[" + i + "] = ";
+            stuLaneInfos += stuLaneInfo[i].toString();
+        }
+        return "TRAFFIC_FLOW_STAT_EX_INFO{" +
+                "nAreaNo=" + nAreaNo +
+                ", nJunNo=" + nJunNo +
+                ", nDirNo=" + nDirNo +
+                ", nSecNo=" + nSecNo +
+                ", stuLaneInfo=" + stuLaneInfos +
+                ", nLaneInfoNum=" + nLaneInfoNum +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
new file mode 100644
index 0000000..e5da75e
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_FLOW_VEHICLE_STOP_INFO.java
@@ -0,0 +1,63 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author : 260611
+ * @description : 区域路口停车信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_FLOW_VEHICLE_STOP_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 区域号
+     */
+    public int nAreaNo;
+    /**
+     * 路口号
+     */
+    public int nJunNo;
+    /**
+     * 方向号,北东南西分别为0/1/2/3
+     */
+    public int nDirNo;
+    /**
+     * 进出口类型,进口道 0,出口道 1
+     */
+    public int nLaneDirType;
+    /**
+     * 车道号0~7
+     */
+    public int nLaneNo;
+    /**
+     * 停车位置,精度1m
+     */
+    public int nStopPos;
+    /**
+     * 停车次数,第几次停车
+     */
+    public int nStopTimes;
+    /**
+     * 停车占有时间,单位ms
+     */
+    public int nStopOccTime;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[256];
+
+    @Override
+    public String toString() {
+        return "TRAFFIC_FLOW_VEHICLE_STOP_INFO{" +
+                "nAreaNo=" + nAreaNo +
+                ", nJunNo=" + nJunNo +
+                ", nDirNo=" + nDirNo +
+                ", nLaneDirType=" + nLaneDirType +
+                ", nLaneNo=" + nLaneNo +
+                ", nStopPos=" + nStopPos +
+                ", nStopTimes=" + nStopTimes +
+                ", nStopOccTime=" + nStopOccTime +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_INFO.java
new file mode 100644
index 0000000..0650d94
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_INFO.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 交通流信息
+ * @date 2021/09/01
+ */
+public class TRAFFIC_INFO extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口数量
+     */
+    public int nEnterNumber;
+
+    /**
+     *  进口方向交通流信息个数
+     */
+    public int nEnterTrafficInfoNum;
+
+    /**
+     *  进口方向交通流信息, 包含1到N(进口数量)个进口方向交通流信息
+     */
+    public ENTER_TRAFFIC_INFO[] stuEnterTrafficInfo = (ENTER_TRAFFIC_INFO[]) new ENTER_TRAFFIC_INFO().toArray(8);
+    /**
+     *  预留字节 
+     */
+    public byte[] byReserved = new byte[128];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_QUEUE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_QUEUE_INFO.java
new file mode 100644
index 0000000..3f028bb
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_QUEUE_INFO.java
@@ -0,0 +1,59 @@
+package com.netsdk.lib.structure;
+
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.NET_EM_OVER_FLOW_STATE;
+
+/**
+ * @author : 260611
+ * @description : 车道的信息
+ * @since : Created in 2022/03/10 10:12
+ */
+
+public class TRAFFIC_QUEUE_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 车道号
+     */
+    public int nLane;
+    /**
+     * 排队长度
+     */
+    public int nQueueLen;
+    /**
+     * 排队起始位置,精度1m
+     */
+    public int nQueueStartPos;
+    /**
+     * 检测区域内车辆数
+     */
+    public int nQueueVehNum;
+    /**
+     * 车道中实时车辆平均速度,精度1km/h
+     */
+    public int nQueueVehSpeed;
+    /**
+     * 停止线最近一个线圈的占有时间,从开始占有算起,单位ms
+     */
+    public int nOccTime;
+    /**
+     * 溢出状态。例:如给当前路段设定允许排队长度阀值,实际排队长度超过阀值后就判定当前时刻该路段有溢出。{@link NET_EM_OVER_FLOW_STATE}
+     */
+    public int emOverflowState;
+    /**
+     * 保留字节
+     */
+    public byte[] szReserverd = new byte[252];
+
+    @Override
+    public String toString() {
+        return "TRAFFIC_QUEUE_INFO{" +
+                "nLane=" + nLane +
+                ", nQueueLen=" + nQueueLen +
+                ", nQueueStartPos=" + nQueueStartPos +
+                ", nQueueVehNum=" + nQueueVehNum +
+                ", nQueueVehSpeed=" + nQueueVehSpeed +
+                ", nOccTime=" + nOccTime +
+                ", emOverflowState=" + NET_EM_OVER_FLOW_STATE.getNoteByValue(emOverflowState) +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_STATE.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_STATE.java
new file mode 100644
index 0000000..2c44bee
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/TRAFFIC_STATE.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 交通运行状态信息
+ * @date 2021/09/01
+ */
+public class TRAFFIC_STATE extends NetSDKLib.SdkStructure{
+	 /**
+     *  进口数量
+     */
+    public int nEnterNumber;
+
+    /**
+     *  进口交通运行状态信息个数
+     */
+    public int nEnterStateInfoNum;
+
+    /**
+     *  进口交通运行状态信息(0~8), 包含1到N(进口数量)个进口交通运行状态信息
+     */
+    public ENTER_STATE_INFO[] stuEnterStateInfo = (ENTER_STATE_INFO[]) new ENTER_STATE_INFO().toArray(8);
+    
+    /**
+     *  统计分析周期,单位分钟1~255
+     */
+    public int  nPeriod; 
+    
+    /**
+     *  预留字节
+     */
+    public byte[] byReserved = new byte[124];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/UNPACKING_CHECK_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/UNPACKING_CHECK_INFO.java
new file mode 100644
index 0000000..d165f3d
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/UNPACKING_CHECK_INFO.java
@@ -0,0 +1,89 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description 开包检查信息
+ * @date 2021/9/9
+ */
+public class UNPACKING_CHECK_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 事件发生时间,带时区偏差的UTC时间,单位秒
+     */
+    public int nUTC;
+    /**
+     * 事件时间毫秒数
+     */
+    public int nUTCMS;
+    /**
+     * 表示包裹标识,用来唯一标识一个包裹
+     */
+    public byte[] szPackageTag = new byte[32];
+    /**
+     * 关联图片
+     */
+    public RELATED_IMAGE[] stuRelatedImage = new RELATED_IMAGE[64];
+    /**
+     * 关联图片数量
+     */
+    public int nRelatedImageRetNum;
+
+    /**
+     * 报警时间(即拍摄违禁品时间),UTC时间,单位秒
+     */
+    public int nAlarmTime;
+
+    /**
+     * 身份信息
+     */
+    public IDENTITY_INFO stuIdentityInfo = new IDENTITY_INFO();
+    /**
+     * 违禁物品分类 已经废弃
+     */
+    public OneDimensionalInformation[] szContrabandClass = new OneDimensionalInformation[16];
+    /**
+     * 违禁物品个数
+     */
+    public int nContrabandRetNum;
+    /**
+     * 处理方式  EM_PROCESS_MODE
+     */
+    public int emProcessMode;
+    /**
+     * 检出人,即开包人员
+     */
+    public byte[] szChecker = new byte[128];
+    /**
+     * 报警地点
+     */
+    public byte[] szAlarmLocation = new byte[256];
+    /**
+     * 违禁物品分类  {@link com.netsdk.lib.enumeration.EM_INSIDE_OBJECT_TYPE}
+     */
+    public int[] emContrabandClass = new int[64];
+    /**
+     * 行程出发地
+     */
+    public byte[] szPlaceOfDeparture = new byte[256];
+    /**
+     * 行程目的地
+     */
+    public byte[] szDestination = new byte[256];
+    /**
+     * 预留字节
+     */
+    public byte[] szReserved = new byte[18688];
+
+    public UNPACKING_CHECK_INFO() {
+        for (int i = 0; i < 16; i++) {
+            szContrabandClass[i] = new OneDimensionalInformation();
+        }
+        for (int i = 0; i < 64; i++) {
+            stuRelatedImage[i] = new RELATED_IMAGE();
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/USER_TIME_SECTION.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/USER_TIME_SECTION.java
new file mode 100644
index 0000000..f7e8a04
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/USER_TIME_SECTION.java
@@ -0,0 +1,13 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 用户的开门时间段
+ * @date 2021/2/8
+ */
+public class USER_TIME_SECTION extends NetSDKLib.SdkStructure {
+    public byte[] userTimeSections=new byte[20];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_CAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_CAPS_INFO.java
new file mode 100644
index 0000000..4d3f3f2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_CAPS_INFO.java
@@ -0,0 +1,26 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description 视频分析能力集
+ * @date 2021/01/11
+ */
+public class VA_CAPS_INFO extends NetSDKLib.SdkStructure {
+	
+	/**
+	 * 支持的场景列表
+	 */
+	public byte[] szSceneName = new byte[NetSDKLib.MAX_SCENE_LIST_SIZE*NetSDKLib.MAX_NAME_LEN];//TODO
+	
+	/**
+	 * 支持的场景个数
+	 */
+	public int nSupportedSceneNum;
+	
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[4];
+		
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java
new file mode 100644
index 0000000..328c3a8
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_DYNAMIC_CAPS_INFO.java
@@ -0,0 +1,27 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 动态能力集
+ * @date 2021/01/11
+ */
+public class VA_DYNAMIC_CAPS_INFO extends NetSDKLib.SdkStructure{
+	
+	/**
+	 * 支持的场景类型,参考{ @link NetSDKLib.EM_SCENE_TYPE}
+	 */
+	public int[] emSceneType = new int[32];
+		
+	/**
+	 * 支持的场景个数
+	 */
+	public int nSceneNum;
+		
+	/**
+	 * 预留字段
+	 */
+	public byte[] byReserved = new byte[252];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_OBJECT_ANIMAL.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_OBJECT_ANIMAL.java
new file mode 100644
index 0000000..8e6a0a4
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VA_OBJECT_ANIMAL.java
@@ -0,0 +1,56 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @version 1.0
+ * @description 视频分析物体(动物)
+ * @date 2022/03/31
+ */
+public class VA_OBJECT_ANIMAL extends NetSDKLib.SdkStructure{
+    /**
+     *  物体ID, 每个ID表示一个唯一的物体
+     */
+    public int nObjectID;
+
+    /**
+     *  目标动物类型
+     */
+    public int emCategory;
+
+    /**
+     *  包围盒 动物对象在全景图中的框坐标,为0~8191相对坐标
+     */
+    public NET_RECT stuBoundingBox;
+
+    /**
+     *  动物对象重量,单位:g
+     */
+    public int nObjectWeight;
+
+    /**
+     *  物体截图
+     */
+    public NET_OBJECT_IMAGE_INFO stuImage;
+
+    /**
+     *  运动状态,参考枚举{ @link ENUM_MOTION_STATUS }
+     */
+    public int emMoveStatus;
+
+    /**
+     *  区域内状态,参考枚举{ @link ENUM_IN_REGION_STATUS }
+     */
+    public int emInRegionStatus;
+
+    /**
+     *  结果类型 0-实时 1-非实时
+     */
+    public int nResultType;
+
+    /**
+     *  保留字节,留待扩展
+     */
+    public byte[] bReserved = new byte[1024];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VaccinateDateByteArr.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VaccinateDateByteArr.java
new file mode 100644
index 0000000..4b606be
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/VaccinateDateByteArr.java
@@ -0,0 +1,15 @@
+package com.netsdk.lib.structure;
+
+import com.netsdk.lib.NetSDKLib;
+/**
+ * @author 251823
+ * @description  历史接种日期字符串对应字节数组
+ * @date 2021/08/15
+ */
+public class VaccinateDateByteArr extends NetSDKLib.SdkStructure{
+	/**
+	 *  历史接种日期字符串对应字节数组
+	 */
+	public byte[] vaccinateDateByteArr = new byte[32];
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java
new file mode 100644
index 0000000..3365d2c
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/CANDIDATE_INFO_CEX.java
@@ -0,0 +1,66 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+import com.netsdk.lib.structure.NET_TIME;
+
+import java.nio.charset.Charset;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 候选人信息拓展结构体,结构体, 日常使用以structure包和NetSDKLib下的同名结构体为主
+ * @date 2021/3/17
+ */
+public class CANDIDATE_INFO_CEX extends NetSDKLib.SdkStructure {
+  /** 姓名 */
+  public byte[] szPersonName = new byte[64];
+  /** 人员唯一标示(证件号码,工号,或其他编号) */
+  public byte[] szID = new byte[32];
+  /** 和查询图片的相似度,百分比表示,1~100 */
+  public byte bySimilarity;
+  /** 人员所属数据库范围,详见EM_FACE_DB_TYPE */
+  public byte byRange;
+  /** 当byRange为历史数据库时有效,表示查询人员出现的时间 */
+  public NET_TIME stTime;
+  /** 当byRange为历史数据库时有效,表示查询人员出现的地点 */
+  public byte[] szAddress = new byte[260];
+  /** 是否有识别结果,指这个检测出的人脸在库中有没有比对结果 */
+  public boolean bIsHit;
+  /** 通道号 */
+  public int nChannelID;
+
+  public String getPersonName() {
+    return new String(szPersonName, Charset.forName(Utils.getPlatformEncode())).trim();
+  }
+
+  public String getID() {
+    return new String(szID, Charset.forName(Utils.getPlatformEncode())).trim();
+  }
+
+  public String getAddress() {
+    return new String(szAddress, Charset.forName(Utils.getPlatformEncode())).trim();
+  }
+
+  @Override
+  public String toString() {
+    return "CANDIDATE_INFO_CEX{"
+        + "szPersonName="
+        + getPersonName()
+        + ", szID="
+        + getID()
+        + ", bySimilarity="
+        + bySimilarity
+        + ", byRange="
+        + byRange
+        + ", stTime="
+        + stTime
+        + ", szAddress="
+        + getAddress()
+        + ", bIsHit="
+        + bIsHit
+        + ", nChannelID="
+        + nChannelID
+        + '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java
new file mode 100644
index 0000000..f5f00ea
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSLINE_INFO.java
@@ -0,0 +1,158 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 船只绊线入侵事件结构体
+ * <p>
+ * ERR210428143 水面预警事件 专用结构体
+ * <p>
+ * 注意: 其他项目不要使用, 通用的停车检测事件结构体见:
+ * {@link NetSDKLib.DEV_EVENT_CROSSLINE_INFO}
+ *
+ * @author 47040
+ * @since Created in 2021/5/13 19:03
+ */
+public class DEV_EVENT_CROSSLINE_INFO extends SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 检测到的物体
+     */
+    public NET_MSG_OBJECT stuObject;
+    /**
+     * 事件对应文件信息
+     */
+    public NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 规则检测线
+     */
+    public NET_POINT[] DetectLine = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_DETECT_LINE_NUM);
+    /**
+     * 规则检测线顶点数
+     */
+    public int nDetectLineNum;
+    /**
+     * 物体运动轨迹
+     */
+    public NET_POINT[] TrackLine = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_TRACK_LINE_NUM);
+    /**
+     * 物体运动轨迹顶点数
+     */
+    public int nTrackLineNum;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     * 表示入侵方向, 0-由左至右, 1-由右至左
+     */
+    public byte bDirection;
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved = new byte[1];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 抓图标志(按位),具体见  NET_RESERVED_COMMON,
+     * 0位:"*",1位:"Timing",2位:"Manual",
+     * 3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件源设备上的index,-1表示数据无效,-1表示数据无效
+     */
+    public int nSourceIndex;
+    /**
+     * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+     */
+    public byte[] szSourceDevice = new byte[MAX_PATH];
+    /**
+     * 事件触发累计次数, 类型为unsigned int
+     */
+    public int nOccurrenceCount;
+    /**
+     * 智能事件公共信息
+     */
+    public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+    /**
+     * 扩展信息
+     */
+    public NET_EXTENSION_INFO stuExtensionInfo;
+    /**
+     * 全景广角图
+     */
+    public SCENE_IMAGE_INFO_EX stuSceneImage;
+    /**
+     * 检测到人的数量
+     */
+    public int nObjetcHumansNum;
+    /**
+     * 检测的到人
+     */
+    public NET_VAOBJECT_NUMMAN[] stuObjetcHumans = (NET_VAOBJECT_NUMMAN[]) new NET_VAOBJECT_NUMMAN().toArray(100);
+    /**
+     * 规则编号,用于标示哪个规则触发的事件,缺省时默认为0
+     */
+    public int nRuleID;
+    /**
+     * 事件级别 {@link EM_EVENT_LEVEL}
+     */
+    public int emEventType;
+    /**
+     * 热成像横向视场角,单位度,实际角度乘以100 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nThermoHFOV;
+    /**
+     * 热成像纵向视场角,单位度,实际角度乘以100 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nThermoVFOV;
+    /**
+     * 船高 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatHeight;
+    /**
+     * 船长 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatLength;
+    /**
+     * 船速 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatSpeed;
+    /**
+     * 船距 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatDistance;
+    /**
+     * 字节对齐
+     */
+    public byte[] byReserved1 = new byte[480];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java
new file mode 100644
index 0000000..d0ab8b6
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_CROSSREGION_INFO.java
@@ -0,0 +1,209 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.enumeration.EM_CAPTURE_PROCESS_END_TYPE;
+import com.netsdk.lib.enumeration.EM_TRIGGER_TYPE;
+
+import static com.netsdk.lib.NetSDKLib.*;
+
+/**
+ * 船只的绊线入侵事件信息
+ * <p>
+ * ERR210428143 水面预警事件 专用结构体
+ * <p>
+ * 注意: 其他项目不要使用, 通用的绊线入侵事件结构体见:
+ * {@link NetSDKLib.DEV_EVENT_CROSSREGION_INFO}
+ *
+ * @author 47040
+ * @since Created in 2021/5/13 17:35
+ */
+public class DEV_EVENT_CROSSREGION_INFO extends SdkStructure {
+
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 检测到的物体
+     */
+    public NET_MSG_OBJECT stuObject;
+    /**
+     * 事件对应文件信息
+     */
+    public NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     * 规则检测区域
+     */
+    public NET_POINT[] DetectRegion = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_DETECT_REGION_NUM);
+    /**
+     * 规则检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 物体运动轨迹
+     */
+    public NET_POINT[] TrackLine = (NET_POINT[]) new NET_POINT().toArray(NET_MAX_TRACK_LINE_NUM);
+    /**
+     * 物体运动轨迹顶点数
+     */
+    public int nTrackLineNum;
+    /**
+     * 事件动作,0表示脉冲事件,1表示持续性事件开始,2表示持续性事件结束;
+     */
+    public byte bEventAction;
+    /**
+     * 表示入侵方向, 0-进入, 1-离开,2-出现,3-消失
+     */
+    public byte bDirection;
+    /**
+     * 表示检测动作类型,0-出现 1-消失 2-在区域内 3-穿越区域
+     */
+    public byte bActionType;
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从0开始
+     */
+    public byte byImageIndex;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON ,
+     * 0位:"*",1位:"Timing",2位:"Manual",
+     * 3位:"Marked",4位:"Event",5位:"Mosaic",6位:"Cutout"
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件源设备上的index,-1表示数据无效
+     */
+    public int nSourceIndex;
+    /**
+     * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+     */
+    public byte[] szSourceDevice = new byte[MAX_PATH];
+    /**
+     * 事件触发累计次数, int 类型
+     */
+    public int nOccurrenceCount;
+    /**
+     * 货物通道信息
+     */
+    public NET_CUSTOM_INFO stuCustom;
+    /**
+     * 扩展信息
+     */
+    public NET_EXTENSION_INFO stuExtensionInfo;
+    /**
+     * 智能事件规则编号,用于标示哪个规则触发的事件
+     */
+    public int nRuleID;
+    /**
+     * 热成像横向视场角,单位度,实际角度乘以100 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nThermoHFOV;
+    /**
+     * 热成像纵向视场角,单位度,实际角度乘以100 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nThermoVFOV;
+    /**
+     * 船高 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatHeight;
+    /**
+     * 船长 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatLength;
+    /**
+     * 船速 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatSpeed;
+    /**
+     * 船距 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatDistance;
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[300];
+    /**
+     * 检测到的物体个数
+     */
+    public int nObjectNum;
+    /**
+     * 检测到的物体
+     */
+    public NET_MSG_OBJECT[] stuObjectIDs = (NET_MSG_OBJECT[]) new NET_MSG_OBJECT().toArray(NET_MAX_OBJECT_LIST);
+    /**
+     * 轨迹数(与检测到的物体个数  nObjectNum 对应)
+     */
+    public int nTrackNum;
+    /**
+     * 轨迹信息(与检测到的物体对应)
+     */
+    public NET_POLY_POINTS[] stuTrackInfo = (NET_POLY_POINTS[]) new NET_POLY_POINTS().toArray(NET_MAX_OBJECT_LIST);
+    /**
+     * 智能事件公共信息
+     */
+    public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+    /**
+     * 全景广角图
+     */
+    public SCENE_IMAGE_INFO_EX stuSceneImage;
+    /**
+     * 检测到人的数量
+     */
+    public int nObjetcHumansNum;
+    /**
+     * 检测的到人
+     */
+    public NET_VAOBJECT_NUMMAN[] stuObjetcHumans = (NET_VAOBJECT_NUMMAN[]) new NET_VAOBJECT_NUMMAN().toArray(100);
+    /**
+     * 车身信息
+     */
+    public NET_MSG_OBJECT stuVehicle;
+    /**
+     * 触发类型,参考 {@link EM_TRIGGER_TYPE}
+     */
+    public int emTriggerType;
+    /**
+     * 标记抓拍帧
+     */
+    public int nMark;
+    /**
+     * 视频分析的数据源地址
+     */
+    public int nSource;
+    /**
+     * 视频分析帧序号
+     */
+    public int nFrameSequence;
+    /**
+     * 抓拍过程,参考 {@link EM_CAPTURE_PROCESS_END_TYPE}
+     */
+    public int emCaptureProcess;
+    /**
+     * 交通车辆信息
+     */
+    public DEV_EVENT_TRAFFIC_TRAFFICCAR_INFO stTrafficCar;
+    /**
+     * 公共信息
+     */
+    public EVENT_COMM_INFO stuCommInfo;
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java
new file mode 100644
index 0000000..893ea60
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/DEV_EVENT_PARKINGDETECTION_INFO.java
@@ -0,0 +1,136 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+
+import static com.netsdk.lib.NetSDKLib.MAX_PATH;
+import static com.netsdk.lib.NetSDKLib.NET_MAX_DETECT_REGION_NUM;
+
+/**
+ * 停船检测事件结构体
+ * <p>
+ * ERR210428143 重型云台 水面预警事件 专用结构体
+ * <p>
+ * 注意: 其他项目不要使用, 通用的停车检测事件结构体见:
+ * {@link NetSDKLib.DEV_EVENT_PARKINGDETECTION_INFO}
+ *
+ * @author 47040
+ * @since Created in 2021/5/13 16:57
+ */
+public class DEV_EVENT_PARKINGDETECTION_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 通道号
+     */
+    public int nChannelID;
+    /**
+     * 事件名称
+     */
+    public byte[] szName = new byte[128];
+    /**
+     * 字节对齐
+     */
+    public byte[] bReserved1 = new byte[4];
+    /**
+     * 时间戳(单位是毫秒)
+     */
+    public double PTS;
+    /**
+     * 事件发生的时间
+     */
+    public NetSDKLib.NET_TIME_EX UTC;
+    /**
+     * 事件ID
+     */
+    public int nEventID;
+    /**
+     * 检测到的物体
+     */
+    public NetSDKLib.NET_MSG_OBJECT stuObject;
+    /**
+     * 规则检测区域顶点数
+     */
+    public int nDetectRegionNum;
+    /**
+     * 规则检测区域
+     */
+    public NetSDKLib.NET_POINT[] DetectRegion = new NetSDKLib.NET_POINT[NET_MAX_DETECT_REGION_NUM];
+    /**
+     * 事件对应文件信息
+     */
+    public NetSDKLib.NET_EVENT_FILE_INFO stuFileInfo;
+    /**
+     *
+     */
+    public byte bEventAction;
+    /**
+     *
+     */
+    public byte[] byReserved = new byte[2];
+    /**
+     * 图片的序号, 同一时间内(精确到秒)可能有多张图片, 从 0 开始
+     */
+    public byte byImageIndex;
+    /**
+     * 抓图标志(按位),具体见NET_RESERVED_COMMON
+     */
+    public int dwSnapFlagMask;
+    /**
+     * 事件源设备上的index,-1表示数据无效
+     */
+    public int nSourceIndex;
+    /**
+     * 事件源设备唯一标识,字段不存在或者为空表示本地设备
+     */
+    public byte[] szSourceDevice = new byte[MAX_PATH];
+    /**
+     * 事件触发累计次数
+     */
+    public int nOccurrenceCount;
+    /**
+     * 智能事件公共信息
+     */
+    public EVENT_INTELLI_COMM_INFO stuIntelliCommInfo;
+    /**
+     * 扩展信息
+     */
+    public NetSDKLib.NET_EXTENSION_INFO stuExtensionInfo;
+    /**
+     * 车位名称
+     */
+    public byte[] szCustomParkNo = new byte[64];
+
+    /**
+     * 热成像横向视场角,单位度,实际角度乘以100 (ERR210428143 专用)
+     */
+    public int nThermoHFOV;
+    /**
+     * 热成像纵向视场角,单位度,实际角度乘以100 (ERR210428143 专用)
+     */
+    public int nThermoVFOV;
+    /**
+     * 船高 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatHeight;
+    /**
+     * 船长 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatLength;
+    /**
+     * 船速 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatSpeed;
+    /**
+     * 船距 (ERR210428143 专用, 其他项目不要使用)
+     */
+    public int nBoatDistance;
+    /**
+     * 保留字节,留待扩展
+     */
+    public byte[] bReserved = new byte[396];
+
+    public DEV_EVENT_PARKINGDETECTION_INFO() {
+        for (int i = 0; i < DetectRegion.length; ++i) {
+            DetectRegion[i] = new NetSDKLib.NET_POINT();
+        }
+    }
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java
new file mode 100644
index 0000000..80987cc
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/EVENT_INTELLI_COMM_INFO.java
@@ -0,0 +1,34 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.POSTION;
+
+/**
+ * 智能报警事件公共信息
+ * <p>
+ * ERR210428143 重型云台 水面预警事件 专用结构体
+ * <p>
+ * 注意: 其他项目不要使用, 通用的停车检测事件结构体见:
+ * {@link NetSDKLib.EVENT_INTELLI_COMM_INFO}
+ *
+ * @author 47040
+ * @since Created in 2021/5/13 23:17
+ */
+public class EVENT_INTELLI_COMM_INFO extends NetSDKLib.SdkStructure {
+    /**
+     * 智能事件所属大类 取值为 {@link NetSDKLib.EM_CLASS_TYPE } 中的值
+     */
+    public int emClassType;
+    /**
+     * 该事件触发的预置点,对应该设置规则的预置点
+     */
+    public int nPresetID;
+    /**
+     * 位置信息  (ERR210428143 专用, 其他项目不要使用)
+     */
+    public POSTION stuPostion;
+    /**
+     * 保留字节,留待扩展.
+     */
+    public byte[] bReserved = new byte[112];
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java
new file mode 100644
index 0000000..ab1b404
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/customize/MEDIAFILE_FACERECOGNITION_INFO.java
@@ -0,0 +1,70 @@
+package com.netsdk.lib.structure.customize;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.Utils;
+import com.netsdk.lib.structure.NET_TIME;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description ERR210301049主动注册重新定向, 结构体, 日常使用以structure包和NetSDKLib下的同名结构体为主
+ * @date 2021/3/17
+ */
+public class MEDIAFILE_FACERECOGNITION_INFO extends NetSDKLib.SdkStructure {
+  /** 结构体大小 */
+  public int dwSize;
+  /** 报警发生时间 */
+  public NET_TIME stTime;
+  /** 报警发生地点 */
+  public byte[] szAddress = new byte[260];
+  /** 通道号 */
+  public int nChannelId;
+  /** 当前人脸匹配到的候选对象(扩展结构体) 数量 */
+  public int nCandidateExNum;
+  /** 当前人脸匹配到的候选对象信息, 实际返回个数同nCandidateNum */
+ // public CANDIDATE_INFO_CEX[] stuCandidatesEx = (CANDIDATE_INFO_CEX[]) new CANDIDATE_INFO_CEX().toArray(50);
+  public CANDIDATE_INFO_CEX[] stuCandidatesEx = new CANDIDATE_INFO_CEX[50];
+
+  public MEDIAFILE_FACERECOGNITION_INFO() {
+
+    for(int i=0;i<stuCandidatesEx.length;i++){
+      stuCandidatesEx[i]=new CANDIDATE_INFO_CEX();
+    }
+
+    this.dwSize = this.size();
+  }
+
+  public void setAddress(String address) {
+    byte[] data = address.getBytes(Charset.forName(Utils.getPlatformEncode()));
+    System.arraycopy(data, 0, szAddress, 0, data.length);
+  }
+
+  public String getAddress() {
+    return new String(szAddress, Charset.forName(Utils.getPlatformEncode())).trim();
+  }
+
+  public List<CANDIDATE_INFO_CEX> getCandidateInfos() {
+    return new ArrayList<>(Arrays.asList(stuCandidatesEx).subList(0, nCandidateExNum));
+  }
+
+  @Override
+  public String toString() {
+    return "MEDIAFILE_FACERECOGNITION_INFO{"
+        + "stTime="
+        + stTime.toStringTime()
+        + ", szAddress="
+        + getAddress()
+        + ", nChannelId="
+        + nChannelId
+        + ", nCandidateExNum="
+        + nCandidateExNum
+        + ", stuCandidatesEx="
+        + getCandidateInfos().toString()
+        + '}';
+  }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java
new file mode 100644
index 0000000..f7b42ca
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ALARM_RTSC_RUNNING_INFO_V1.java
@@ -0,0 +1,80 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.NET_TIME_EX;
+
+/**
+ * @author 251823
+ * @description 信号机运行事件, 对应事件类型NET_ALARM_RTSC_RUNING
+ * @date 2021/09/01
+ */
+public class ALARM_RTSC_RUNNING_INFO_V1 extends NetSDKLib.SdkStructure{
+	 /**
+     *  通道号,从0开始
+     */
+    public int nChannelID;
+
+    /**
+     *  事件动作, 1表示开始, 2表示结束, -1表示未知
+     */
+    public int nEventAction;
+
+    /**
+     *  bit0:运行状态
+		bit1:控制方式
+		bit2:灯色状态信息
+		bit3:车道功能状态
+		bit4:车道/匝道控制状态信息
+		bit5:当前信号方案色步信息
+		bit6: 下一个周期信号方案色步信息
+     */
+    public int dwReportState;
+
+
+    /**
+     *  经度个数
+     */
+    public int nLongitudeNum;
+
+    /**
+     *  经度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLongitude = new double[3];
+
+    /**
+     *  纬度个数
+     */
+    public int nLatitudeNum;
+
+    /**
+     *  纬度,格式:度,分,秒(秒为浮点数)
+     */
+    public double[] dbLatitude = new double[3];
+
+    /**
+     *  高度,单位为米 
+     */
+    public double dbAltitude;
+
+    /**
+     *  事件发生时间,带时区偏差的UTC时间,单位秒
+     */
+    public NET_TIME_EX UTC;
+
+    /**
+     *  设备状态 ,参考{ @link EM_STATUS}
+     */
+    public int emStatus;
+
+    /**
+     *  控制模式,参考{ @link EM_CONTROL_MODE}
+     */
+    public int emControlMode;
+
+    /**
+     *  灯色状态信息
+     */
+    public LAMP_STATE_V1 stuLampStateInfo;
+
+
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ENTER_INFO_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ENTER_INFO_V1.java
new file mode 100644
index 0000000..62ecbc9
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/ENTER_INFO_V1.java
@@ -0,0 +1,33 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 进口灯色状态信息
+ * @date 2022/11/28 09:35:44
+ */
+public class ENTER_INFO_V1 extends NetSDKLib.SdkStructure {
+	/**
+	 * 进口方向
+	 */
+	public int nEnterDir;
+	/**
+	 * 进口灯组数量(0~48)
+	 */
+	public int nLampNumber;
+	/**
+	 * 灯组灯色信息个数
+	 */
+	public int nLampGroupNum;
+	/**
+	 * 灯组灯色信息,包含1到M(进口灯组数量)个灯组灯色信息
+	 */
+	public LAMP_GROUP_INFO_V1[] stuLampGroupInfo = new LAMP_GROUP_INFO_V1[48];
+
+	public ENTER_INFO_V1() {
+		for (int i = 0; i < stuLampGroupInfo.length; i++) {
+			stuLampGroupInfo[i] = new LAMP_GROUP_INFO_V1();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java
new file mode 100644
index 0000000..ff6f4d0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_GROUP_INFO_V1.java
@@ -0,0 +1,36 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯组灯色信息
+ * @date 2022/11/28 09:35:44
+ */
+public class LAMP_GROUP_INFO_V1 extends NetSDKLib.SdkStructure {
+	/**
+	 * 灯组编号
+	 */
+	public int nLampNo;
+	/**
+	 * 灯组类型 {@link com.netsdk.lib.enumeration.EM_LAMP_TYPE}
+	 */
+	public int emLampType;
+	/**
+	 * 信号灯组灯色剩余时间,整数,单位为秒(s)
+	 */
+	public int nRemainTime;
+	/**
+	 * 灯组灯色个数
+	 */
+	public int nLampColorCount;
+	/**
+	 * 灯组灯色当灯组类型为1~12时,int[0]表示红色发光单元,int[1]表示黄色发光单元,int[2]表示绿色发光单元,int[3]保留
+	 * 当灯组类型为13~15时,int[0]用于表示禁止通行信号发光单元,int[1]用于表示过渡信号发光单元,int[2]用于表示通行信号发光单元,int[3]保留
+	 * 具体取值 0:无灯 1:灭灯 2:亮灯3:闪烁
+	 */
+	public int[] nLampColor = new int[4];
+
+	public LAMP_GROUP_INFO_V1() {
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_STATE_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_STATE_V1.java
new file mode 100644
index 0000000..affe327
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/LAMP_STATE_V1.java
@@ -0,0 +1,29 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 251823
+ * @description 灯色状态信息
+ * @date 2022/11/28 09:35:44
+ */
+public class LAMP_STATE_V1 extends NetSDKLib.SdkStructure {
+	/**
+	 * 信号灯控制路口的进口数量(0~8)
+	 */
+	public int nEnterNumber;
+	/**
+	 * 进口灯色状态信息个数
+	 */
+	public int nEnterInfoNum;
+	/**
+	 * 进口灯色状态信息,包含1到N(路口进口数量)个进口灯色状态信息
+	 */
+	public ENTER_INFO_V1[] stuEnterInfo = new ENTER_INFO_V1[8];
+
+	public LAMP_STATE_V1() {
+		for (int i = 0; i < stuEnterInfo.length; i++) {
+			stuEnterInfo[i] = new ENTER_INFO_V1();
+		}
+	}
+}
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java
new file mode 100644
index 0000000..5335814
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_IN_WM_GET_COLLECTIONS_V1.java
@@ -0,0 +1,17 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_GetMonitorWallCollectionsV1接口输入参数(获取电视墙预案信息)
+ * @date 2022/12/21 14:01
+ */
+public class NET_IN_WM_GET_COLLECTIONS_V1 extends NetSDKLib.SdkStructure{
+    public int                 dwSize;
+    public  int                  nMonitorWallID;                // 电视墙ID
+    public NET_IN_WM_GET_COLLECTIONS_V1(){
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java
new file mode 100644
index 0000000..7f9faf3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/netsdk/lib/structure/optimized/NET_OUT_WM_GET_COLLECTIONS_V1.java
@@ -0,0 +1,28 @@
+package com.netsdk.lib.structure.optimized;
+
+import com.netsdk.lib.NetSDKLib;
+import com.netsdk.lib.structure.BYTE_64;
+import com.sun.jna.Pointer;
+
+/**
+ * @author 291189
+ * @version 1.0
+ * @description CLIENT_GetMonitorWallCollectionsV1接口输出参数(获取电视墙预案信息)
+ * @date 2022/12/21 14:09
+ */
+public class NET_OUT_WM_GET_COLLECTIONS_V1 extends NetSDKLib.SdkStructure {
+    public  int                        dwSize;
+    public byte[]						szReserved=new byte[4];
+    public Pointer pBuff;           // 电视墙预案
+    public int                         nBuffSize;		 // 电视墙预案申请的大小,由用户申请
+    public int                         nRetBuffSize;    // 电视墙预案实际返回的长度
+    public int							nNameCount;		 // 电视墙预案名称个数
+    public BYTE_64[]				szName=new BYTE_64[128]; // 电视墙预案名称
+
+    public NET_OUT_WM_GET_COLLECTIONS_V1(){
+        for(int i=0;i<szName.length;i++){
+            szName[i]=new BYTE_64();
+        }
+        this.dwSize=this.size();
+    }
+}
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/application-dev.yml b/iailab-module-data/iailab-module-data-biz/src/main/resources/application-dev.yml
index f01b8c0..f528d97 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/application-dev.yml
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/application-dev.yml
@@ -47,7 +47,7 @@
     host: 127.0.0.1 # 地址
     port: 6379 # 端口
     database: 0 # 数据库索引
-    # password: 123456 # 密码,建议生产环境开启
+    password: 123456 # 密码,建议生产环境开启
 
 influx-db:
   org: iailab
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yml b/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yml
index 44bf6e2..46343cd 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yml
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/application.yml
@@ -54,6 +54,9 @@
 
 server:
   port: 8982
+  servlet:
+    session:
+      timeout: 120s
 
 logging:
   file:
@@ -194,12 +197,15 @@
       - t_http_tag
       - t_http_token
       - t_ind_data_set
-      - t_ind_data_set_field
+      - t_ind_data_set_field8982
       - t_ind_item_category
       - t_ind_item
       - t_ind_item_atom
       - t_ind_item_der
       - t_ind_item_cal
+      - t_dev_nvr
+      - t_dev_log
+      - t_dev_camera
   app:
     app-key: data
     app-secret: 85b0df7edc3df3611913df34ed695011
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/dynamic-lib-load.xml b/iailab-module-data/iailab-module-data-biz/src/main/resources/dynamic-lib-load.xml
new file mode 100644
index 0000000..e5f10b3
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/dynamic-lib-load.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dynamic-lib>
+    <win64>
+        <lib>avnetsdk</lib>
+        <lib>dhconfigsdk</lib>
+        <lib>dhnetsdk</lib>
+        <lib>dhplay</lib>
+        <lib>RenderEngine</lib>
+        <lib>ImageAlg</lib>
+        <lib>Infra</lib>
+        <lib>IvsDrawer</lib>
+        <lib>StreamConvertor</lib>
+    </win64>
+    <win32>
+        <lib>avnetsdk</lib>
+        <lib>dhconfigsdk</lib>
+        <lib>dhnetsdk</lib>
+        <lib>dhplay</lib>
+        <lib>RenderEngine</lib>
+        <lib>Infra</lib>
+        <lib>ImageAlg</lib>
+        <lib>StreamConvertor</lib>
+    </win32>
+    <linux64>
+        <lib>avnetsdk</lib>
+        <lib>dhnetsdk</lib>
+        <lib>dhconfigsdk</lib>
+        <lib>StreamConvertor</lib>
+    </linux64>
+    <linux32>
+        <lib>avnetsdk</lib>
+        <lib>dhconfigsdk</lib>
+        <lib>dhnetsdk</lib>
+    </linux32>
+    <mac64>
+        <lib>avnetsdk</lib>
+        <lib>dhnetsdk</lib>
+        <lib>dhconfigsdk</lib>
+        <lib>StreamConvertor</lib>
+    </mac64>
+</dynamic-lib>
\ No newline at end of file
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/res_en_US.properties b/iailab-module-data/iailab-module-data-biz/src/main/resources/res_en_US.properties
new file mode 100644
index 0000000..b4085d0
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/res_en_US.properties
@@ -0,0 +1,1071 @@
+# FunctionList
+FUNCTIONLIST=FunctionList
+REALPLAY=RealPlay
+CAPTURE_PICTURE=Capture Picture
+MULTIREALPLAY=MultiRealPlay
+DOWNLOAD_RECORD=Download Record
+ITS_EVENT=TrafficEvent
+TALK=Talk
+DEVICESEARCH_DEVICEINIT=DeviceSearchAndInit
+PTZ=PTZ Control
+TARGETRECOGNITION=TargetRecognition
+ALARM_LISTEN=Alarm Listen
+DEVICE_CONTROL=Device Control
+AUTOREGISTER=AutoRegister
+REMOTE_OPEN_DOOR=Remote Open Door
+
+ONLINE=Online
+
+# Login Info
+DEVICE_IP=Device IP
+DEVICE_PORT=Port
+USERNAME=UserName
+PASSWORD=Password
+IP=IP
+
+LOGIN=Login
+LOGOUT=Logout
+
+LOGIN_SUCCEED=Login Succeed
+LOGIN_FAILED=Login Failed
+DISCONNECT=Device disconnect
+DISCONNECT_RECONNECTING=Device disconnect, reconnecting
+PROMPT_MESSAGE=Prompt Message
+ERROR_MESSAGE=Error Message
+
+SUCCEED=Succeed
+FAILED=Failed
+
+PLEASE_INPUT_DEVICE_IP=Please input device IP
+PLEASE_INPUT_DEVICE_PORT=Please input device port
+PLEASE_INPUT_DEVICE_USERNAME=Please input userName
+PLEASE_INPUT_DEVICE_PASSWORD=Please input password
+PLEASE_INPUT_CONFIRM_PASSWORD=Please input confirm password
+
+# Error Info
+NET_NOERROR=No error 
+NET_ERROR=Unknown error
+NET_SYSTEM_ERROR=System error
+NET_NETWORK_ERROR=Protocol error it may result from network timeout
+NET_DEV_VER_NOMATCH=Device protocol does not match 
+NET_INVALID_HANDLE=Handle is invalid
+NET_OPEN_CHANNEL_ERROR=Failed to open channel 
+NET_CLOSE_CHANNEL_ERROR=Failed to close channel 
+NET_ILLEGAL_PARAM=User parameter is illegal 
+NET_SDK_INIT_ERROR=SDK initialization error 
+NET_SDK_UNINIT_ERROR=SDK clear error 
+NET_RENDER_OPEN_ERROR=Error occurs when apply for render resources
+NET_DEC_OPEN_ERROR=Error occurs when opening the decoder library 
+NET_DEC_CLOSE_ERROR=Error occurs when closing the decoder library 
+NET_MULTIPLAY_NOCHANNEL=The detected channel number is 0 in multiple-channel preview 
+NET_TALK_INIT_ERROR=Failed to initialize record library 
+NET_TALK_NOT_INIT=The record library has not been initialized
+NET_TALK_SENDDATA_ERROR=Error occurs when sending out audio data 
+NET_REAL_ALREADY_SAVING=The real-time has been protected
+NET_NOT_SAVING=The real-time data has not been save
+NET_OPEN_FILE_ERROR=Error occurs when opening the file
+NET_PTZ_SET_TIMER_ERROR=Failed to enable PTZ to control timer
+NET_RETURN_DATA_ERROR=Error occurs when verify returned data
+NET_INSUFFICIENT_BUFFER=There is no sufficient buffer
+NET_NOT_SUPPORTED=The current SDK does not support this funcntion
+NET_NO_RECORD_FOUND=There is no searched result
+NET_NOT_AUTHORIZED=You have no operation right
+NET_NOT_NOW=Can not operate right now 
+NET_NO_TALK_CHANNEL=There is no audio talk channel
+NET_NO_AUDIO=There is no audio
+NET_NO_INIT=The network SDK has not been initialized
+NET_DOWNLOAD_END=The download completed
+NET_EMPTY_LIST=There is no searched result
+NET_ERROR_GETCFG_SYSATTR=Failed to get system property setup
+NET_ERROR_GETCFG_SERIAL=Failed to get SN
+NET_ERROR_GETCFG_GENERAL=Failed to get general property
+NET_ERROR_GETCFG_DSPCAP=Failed to get DSP capacity description
+NET_ERROR_GETCFG_NETCFG=Failed to get network channel setup
+NET_ERROR_GETCFG_CHANNAME=Failed to get channel name
+NET_ERROR_GETCFG_VIDEO=Failed to get video property
+NET_ERROR_GETCFG_RECORD=Failed to get record setup
+NET_ERROR_GETCFG_PRONAME=Failed to get decoder protocol name 
+NET_ERROR_GETCFG_FUNCNAME=Failed to get 232 COM function name
+NET_ERROR_GETCFG_485DECODER=Failed to get decoder property
+NET_ERROR_GETCFG_232COM=Failed to get 232 COM setup
+NET_ERROR_GETCFG_ALARMIN=Failed to get external alarm input setup
+NET_ERROR_GETCFG_ALARMDET=Failed to get motion detection alarm
+NET_ERROR_GETCFG_SYSTIME=Failed to get device time
+NET_ERROR_GETCFG_PREVIEW=Failed to get preview parameter
+NET_ERROR_GETCFG_AUTOMT=Failed to get audio maintenance setup
+NET_ERROR_GETCFG_VIDEOMTRX=Failed to get video matrix setup
+NET_ERROR_GETCFG_COVER=Failed to get privacy mask zone setup
+NET_ERROR_GETCFG_WATERMAKE=Failed to get video watermark setup
+NET_ERROR_GETCFG_MULTICAST=Failed to get config, omulticast port by channel
+NET_ERROR_SETCFG_GENERAL=Failed to modify general property
+NET_ERROR_SETCFG_NETCFG=Failed to modify channel setup
+NET_ERROR_SETCFG_CHANNAME=Failed to modify channel name
+NET_ERROR_SETCFG_VIDEO=Failed to modify video channel 
+NET_ERROR_SETCFG_RECORD=Failed to modify record setup 
+NET_ERROR_SETCFG_485DECODER=Failed to modify decoder property 
+NET_ERROR_SETCFG_232COM=Failed to modify 232 COM setup 
+NET_ERROR_SETCFG_ALARMIN=Failed to modify external input alarm setup
+NET_ERROR_SETCFG_ALARMDET=Failed to modify motion detection alarm setup 
+NET_ERROR_SETCFG_SYSTIME=Failed to modify device time 
+NET_ERROR_SETCFG_PREVIEW=Failed to modify preview parameter
+NET_ERROR_SETCFG_AUTOMT=Failed to modify auto maintenance setup 
+NET_ERROR_SETCFG_VIDEOMTRX=Failed to modify video matrix setup 
+NET_ERROR_SETCFG_COVER=Failed to modify privacy mask zone
+NET_ERROR_SETCFG_WATERMAKE=Failed to modify video watermark setup 
+NET_ERROR_SETCFG_WLAN=Failed to modify wireless network information 
+NET_ERROR_SETCFG_WLANDEV=Failed to select wireless network device
+NET_ERROR_SETCFG_REGISTER=Failed to modify the actively registration parameter setup
+NET_ERROR_SETCFG_CAMERA=Failed to modify camera property
+NET_ERROR_SETCFG_INFRARED=Failed to modify IR alarm setup
+NET_ERROR_SETCFG_SOUNDALARM=Failed to modify audio alarm setup
+NET_ERROR_SETCFG_STORAGE=Failed to modify storage position setup
+NET_AUDIOENCODE_NOTINIT=The audio encode port has not been successfully initialized 
+NET_DATA_TOOLONGH=The data are too long
+NET_UNSUPPORTED=The device does not support current operation 
+NET_DEVICE_BUSY=Device resources is not sufficient
+NET_SERVER_STARTED=The server has boot up 
+NET_SERVER_STOPPED=The server has not fully boot up 
+NET_LISTER_INCORRECT_SERIAL=Input serial number is not correct
+NET_QUERY_DISKINFO_FAILED=Failed to get HDD information
+NET_ERROR_GETCFG_SESSION=Failed to get connect session information
+NET_USER_FLASEPWD_TRYTIME=The password you typed is incorrect You have exceeded the maximum number of retries
+NET_LOGIN_ERROR_PASSWORD=Password is not correct
+NET_LOGIN_ERROR_USER=The account does not exist
+NET_LOGIN_ERROR_TIMEOUT=Time out for log in returned value
+NET_LOGIN_ERROR_RELOGGIN=The account has logged in 
+NET_LOGIN_ERROR_LOCKED=The account has been locked
+NET_LOGIN_ERROR_BLACKLIST=The account has been in the block list
+NET_LOGIN_ERROR_BUSY=Resources are not sufficient System is busy now
+NET_LOGIN_ERROR_CONNECT=Time out Please check network and try again
+NET_LOGIN_ERROR_NETWORK=Network connection failed
+NET_LOGIN_ERROR_SUBCONNECT=Successfully logged in the device but can not create video channel Please check network connection
+NET_LOGIN_ERROR_MAXCONNECT=Exceed the max connect number
+NET_LOGIN_ERROR_PROTOCOL3_ONLY=Only support 3 protocol
+NET_LOGIN_ERROR_UKEY_LOST=There is no USB or USB info error
+NET_LOGIN_ERROR_NO_AUTHORIZED=Client-end IP address has no right to login
+NET_LOGIN_ERROR_USER_OR_PASSOWRD=user or password error 
+NET_LOGIN_ERROR_DEVICE_NOT_INIT=cannot login because the device has not been init,please init the device and then login
+NET_RENDER_SOUND_ON_ERROR=Error occurs when Render library open audio
+NET_RENDER_SOUND_OFF_ERROR=Error occurs when Render library close audio 
+NET_RENDER_SET_VOLUME_ERROR=Error occurs when Render library control volume
+NET_RENDER_ADJUST_ERROR=Error occurs when Render library set video parameter
+NET_RENDER_PAUSE_ERROR=Error occurs when Render library pause play
+NET_RENDER_SNAP_ERROR=Render library snapshot error
+NET_RENDER_STEP_ERROR=Render library stepper error
+NET_RENDER_FRAMERATE_ERROR=Error occurs when Render library set frame rate
+NET_RENDER_DISPLAYREGION_ERROR=Error occurs when Render lib setting show region
+NET_RENDER_GETOSDTIME_ERROR=An error occurred when Render library getting current play time
+NET_GROUP_EXIST=Group name has been existed
+NET_GROUP_NOEXIST=The group name does not exist 
+NET_GROUP_RIGHTOVER=The group right exceeds the right list!
+NET_GROUP_HAVEUSER=The group can not be removed since there is user in it!
+NET_GROUP_RIGHTUSE=The user has used one of the group right It can not be removed 
+NET_GROUP_SAMENAME=New group name has been existed
+NET_USER_EXIST=The user name has been existed
+NET_USER_NOEXIST=The account does not exist
+NET_USER_RIGHTOVER=User right exceeds the group right 
+NET_USER_PWD=Reserved account It does not allow to be modified
+NET_USER_FLASEPWD=password is not correct
+NET_USER_NOMATCHING=Password is invalid
+NET_USER_INUSE=account in use
+NET_ERROR_GETCFG_ETHERNET=Failed to get network card setup
+NET_ERROR_GETCFG_WLAN=Failed to get wireless network information
+NET_ERROR_GETCFG_WLANDEV=Failed to get wireless network device
+NET_ERROR_GETCFG_REGISTER=Failed to get actively registration parameter
+NET_ERROR_GETCFG_CAMERA=Failed to get camera property 
+NET_ERROR_GETCFG_INFRARED=Failed to get IR alarm setup
+NET_ERROR_GETCFG_SOUNDALARM=Failed to get audio alarm setup
+NET_ERROR_GETCFG_STORAGE=Failed to get storage position 
+NET_ERROR_GETCFG_MAIL=Failed to get mail setup
+NET_CONFIG_DEVBUSY=Can not set right now 
+NET_CONFIG_DATAILLEGAL=The configuration setup data are illegal
+NET_ERROR_GETCFG_DST=Failed to get DST setup
+NET_ERROR_SETCFG_DST=Failed to set DST 
+NET_ERROR_GETCFG_VIDEO_OSD=Failed to get video OSD setup
+NET_ERROR_SETCFG_VIDEO_OSD=Failed to set video OSD 
+NET_ERROR_GETCFG_GPRSCDMA=Failed to get CDMA\GPRS configuration
+NET_ERROR_SETCFG_GPRSCDMA=Failed to set CDMA\GPRS configuration
+NET_ERROR_GETCFG_IPFILTER= Failed to get IP Filter configuration
+NET_ERROR_SETCFG_IPFILTER=Failed to set IP Filter configuration
+NET_ERROR_GETCFG_TALKENCODE=Failed to get Talk Encode configuration
+NET_ERROR_SETCFG_TALKENCODE=Failed to set Talk Encode configuration
+NET_ERROR_GETCFG_RECORDLEN=Failed to get The length of the video package configuration
+NET_ERROR_SETCFG_RECORDLEN=Failed to set The length of the video package configuration
+NET_DONT_SUPPORT_SUBAREA=Not support Network hard disk partition
+NET_ERROR_GET_AUTOREGSERVER=Failed to get the register server information
+NET_ERROR_CONTROL_AUTOREGISTER=Failed to control actively registration
+NET_ERROR_DISCONNECT_AUTOREGISTER=Failed to disconnect actively registration
+NET_ERROR_GETCFG_MMS=Failed to get mms configuration
+NET_ERROR_SETCFG_MMS=Failed to set mms configuration
+NET_ERROR_GETCFG_SMSACTIVATION=Failed to get SMS configuration
+NET_ERROR_SETCFG_SMSACTIVATION=Failed to set SMS configuration
+NET_ERROR_GETCFG_DIALINACTIVATION=Failed to get activation of a wireless connection
+NET_ERROR_SETCFG_DIALINACTIVATION=Failed to set activation of a wireless connection
+NET_ERROR_GETCFG_VIDEOOUT=Failed to get the parameter of video output
+NET_ERROR_SETCFG_VIDEOOUT=Failed to set the configuration of video output
+NET_ERROR_GETCFG_OSDENABLE=Failed to get osd overlay enabling
+NET_ERROR_SETCFG_OSDENABLE=Failed to set OSD overlay enabling
+NET_ERROR_SETCFG_ENCODERINFO=Failed to set digital input configuration of front encoders
+NET_ERROR_GETCFG_TVADJUST=Failed to get TV adjust configuration
+NET_ERROR_SETCFG_TVADJUST=Failed to set TV adjust configuration
+NET_ERROR_CONNECT_FAILED=Failed to request to establish a connection
+NET_ERROR_SETCFG_BURNFILE=Failed to request to upload burn files
+NET_ERROR_SNIFFER_GETCFG=Failed to get capture configuration information
+NET_ERROR_SNIFFER_SETCFG=Failed to set capture configuration information
+NET_ERROR_DOWNLOADRATE_GETCFG=Failed to get download restrictions information
+NET_ERROR_DOWNLOADRATE_SETCFG=Failed to set download restrictions information
+NET_ERROR_SEARCH_TRANSCOM=Failed to query serial port parameters
+NET_ERROR_GETCFG_POINT=Failed to get the preset info
+NET_ERROR_SETCFG_POINT=Failed to set the preset info
+NET_SDK_LOGOUT_ERROR=SDK log out the device abnormally
+NET_ERROR_GET_VEHICLE_CFG=Failed to get vehicle configuration
+NET_ERROR_SET_VEHICLE_CFG=Failed to set vehicle configuration
+NET_ERROR_GET_ATM_OVERLAY_CFG=Failed to get ATM overlay configuration
+NET_ERROR_SET_ATM_OVERLAY_CFG=Failed to set ATM overlay configuration
+NET_ERROR_GET_ATM_OVERLAY_ABILITY=Failed to get ATM overlay ability
+NET_ERROR_GET_DECODER_TOUR_CFG=Failed to get decoder tour configuration
+NET_ERROR_SET_DECODER_TOUR_CFG=Failed to set decoder tour configuration
+NET_ERROR_CTRL_DECODER_TOUR=Failed to control decoder tour
+NET_GROUP_OVERSUPPORTNUM=Beyond the device supports for the largest number of user groups
+NET_USER_OVERSUPPORTNUM=Beyond the device supports for the largest number of users 
+NET_ERROR_GET_SIP_CFG=Failed to get SIP configuration
+NET_ERROR_SET_SIP_CFG=Failed to set SIP configuration
+NET_ERROR_GET_SIP_ABILITY=Failed to get SIP capability
+NET_ERROR_GET_WIFI_AP_CFG=Failed to get "WIFI ap' configuration 
+NET_ERROR_SET_WIFI_AP_CFG=Failed to set "WIFI ap" configuration  
+NET_ERROR_GET_DECODE_POLICY=Failed to get decode policy 
+NET_ERROR_SET_DECODE_POLICY=Failed to set decode policy 
+NET_ERROR_TALK_REJECT=refuse talk
+NET_ERROR_TALK_OPENED=talk has opened by other client
+NET_ERROR_TALK_RESOURCE_CONFLICIT=resource conflict
+NET_ERROR_TALK_UNSUPPORTED_ENCODE=unsupported encode type
+NET_ERROR_TALK_RIGHTLESS=no right
+NET_ERROR_TALK_FAILED=request failed
+NET_ERROR_GET_MACHINE_CFG=Failed to get device relative config
+NET_ERROR_SET_MACHINE_CFG=Failed to set device relative config
+NET_ERROR_GET_DATA_FAILED=get data failed
+NET_ERROR_MAC_VALIDATE_FAILED=MAC validate failed
+NET_ERROR_GET_INSTANCE=Failed to get server instance 
+NET_ERROR_JSON_REQUEST=Generated json string is error
+NET_ERROR_JSON_RESPONSE=The responding json string is error
+NET_ERROR_VERSION_HIGHER=The protocol version is lower than current version
+NET_SPARE_NO_CAPACITY=Hotspare disk operation failed The capacity is low
+NET_ERROR_SOURCE_IN_USE=Display source is used by other output
+NET_ERROR_REAVE=advanced users grab low-level user resource
+NET_ERROR_NETFORBID=net forbid
+NET_ERROR_GETCFG_MACFILTER=get MAC filter configuration error
+NET_ERROR_SETCFG_MACFILTER=set MAC filter configuration error
+NET_ERROR_GETCFG_IPMACFILTER=get IP/MAC filter configuration error
+NET_ERROR_SETCFG_IPMACFILTER=set IP/MAC filter configuration error
+NET_ERROR_OPERATION_OVERTIME=operation over time 
+NET_ERROR_SENIOR_VALIDATE_FAILED=senior validation failure
+NET_ERROR_DEVICE_ID_NOT_EXIST=device ID is not exist
+NET_ERROR_UNSUPPORTED=unsupport operation
+NET_ERROR_PROXY_DLLLOAD=proxy dll load error
+NET_ERROR_PROXY_ILLEGAL_PARAM= proxy user parameter is not legal
+NET_ERROR_PROXY_INVALID_HANDLE=handle invalid
+NET_ERROR_PROXY_LOGIN_DEVICE_ERROR=login device error
+NET_ERROR_PROXY_START_SERVER_ERROR=start proxy server error
+NET_ERROR_SPEAK_FAILED=request speak failed
+NET_ERROR_NOT_SUPPORT_F6=unsupport F6
+NET_ERROR_CD_UNREADY=CD is not ready
+NET_ERROR_DIR_NOT_EXIST=Directory does not exist
+NET_ERROR_UNSUPPORTED_SPLIT_MODE=The device does not support the segmentation model
+NET_ERROR_OPEN_WND_PARAM=Open the window parameter is illegal
+NET_ERROR_LIMITED_WND_COUNT=Open the window more than limit
+NET_ERROR_UNMATCHED_REQUEST=Request command with the current pattern don't match
+NET_RENDER_ENABLELARGEPICADJUSTMENT_ERROR=Render Library to enable high-definition image internal adjustment strategy error
+NET_ERROR_UPGRADE_FAILED=Upgrade equipment failure
+NET_ERROR_NO_TARGET_DEVICE=Can't find the target device
+NET_ERROR_NO_VERIFY_DEVICE=Can't find the verify device 
+NET_ERROR_CASCADE_RIGHTLESS=No cascade permissions
+NET_ERROR_LOW_PRIORITY=low priority
+NET_ERROR_REMOTE_REQUEST_TIMEOUT=The remote device request timeout
+NET_ERROR_LIMITED_INPUT_SOURCE=Input source beyond maximum route restrictions
+NET_ERROR_SET_LOG_PRINT_INFO=Failed to set log print
+NET_ERROR_PARAM_DWSIZE_ERROR="dwSize" is not initialized in input param
+NET_ERROR_LIMITED_MONITORWALL_COUNT=TV wall exceed limit
+NET_ERROR_PART_PROCESS_FAILED=Fail to execute part of the process
+NET_ERROR_TARGET_NOT_SUPPORT=Fail to transmit due to not supported by target
+NET_ERROR_VISITE_FILE=Access to the file failed
+NET_ERROR_DEVICE_STATUS_BUSY=Device busy
+NET_USER_PWD_NOT_AUTHORIZED=Fail to change the password
+NET_USER_PWD_NOT_STRONG=Password strength is not enough
+NET_ERROR_NO_SUCH_CONFIG=No corresponding setup
+NET_ERROR_AUDIO_RECORD_FAILED=Failed to record audio
+NET_ERROR_SEND_DATA_FAILED=Failed to send out data 
+NET_ERROR_OBSOLESCENT_INTERFACE=Abandoned port 
+NET_ERROR_INSUFFICIENT_INTERAL_BUF=Internal buffer is not sufficient 
+NET_ERROR_NEED_ENCRYPTION_PASSWORD=verify password when changing device IP
+NET_ERROR_NOSUPPORT_RECORD =device not support the record
+NET_ERROR_SERIALIZE_ERROR=Failed to serialize data
+NET_ERROR_DESERIALIZE_ERROR=Failed to deserialize data
+NET_ERROR_LOWRATEWPAN_ID_EXISTED=the wireless id is already existed
+NET_ERROR_LOWRATEWPAN_ID_LIMIT=the wireless id limited
+NET_ERROR_LOWRATEWPAN_ID_ABNORMAL=add the wireless id abnormaly
+NET_ERROR_ENCRYPT=encrypt data fail
+NET_ERROR_PWD_ILLEGAL=new password illegal
+NET_ERROR_DEVICE_ALREADY_INIT=device is already initiation
+NET_ERROR_SECURITY_CODE=security code check out fail
+NET_ERROR_SECURITY_CODE_TIMEOUT=security code out of time
+NET_ERROR_GET_PWD_SPECI=get password specification fail
+NET_ERROR_NO_AUTHORITY_OF_OPERATION=no authority of operation 
+NET_ERROR_DECRYPT=decrypt data fail
+NET_ERROR_2D_CODE=2D code check out fail
+NET_ERROR_INVALID_REQUEST=Invalid request
+NET_ERROR_PWD_RESET_DISABLE=password reset unable
+NET_ERROR_PLAY_PRIVATE_DATA=Failed to display private data,such as rule box
+NET_ERROR_ROBOT_OPERATE_FAILED=robot operate failed
+NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT=photo size exceeds limit
+NET_ERROR_USERID_INVALID=Invalid userId 
+NET_ERROR_EXTRACTFEATURE_FAILED=photo extract feature failed
+NET_ERROR_PHOTO_EXIST=photo exist
+NET_ERROR_PHOTO_OVERFLOW=photo over flow
+NET_ERROR_CHANNEL_ALREADY_OPENED=channel has already been opened
+NET_ERROR_CREATE_SOCKET=create socket error
+NET_ERROR_CHANNEL_NUM=Invalid channel number
+NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED=target recognition server group id exceed
+
+# RealPlay Info
+START_REALPLAY=Start RealPlay
+STOP_REALPLAY=Stop RealPlay
+ATTACH=Attach
+DETACH=Detach
+REALPLAY_SUCCEED=Success to start realPlay
+REALPLAY_FAILED=Failed to start realPlay
+
+CHN=Chn
+CHANNEL=Channel
+STREAM_TYPE=Stream
+MASTER_AND_SUB_STREAM=Main/Sub stream
+MASTER_STREAM=Main Stream
+SUB_STREAM=Sub Stream
+
+# Capture Picture
+LOCAL_CAPTURE=Local Capture
+REMOTE_CAPTURE=Remote Capture
+TIMER_CAPTURE=Timer Capture
+STOP_CAPTURE=Stop Capture
+INTERVAL=Interval
+
+TIME_INTERVAL_ILLEGAL=Time Interval Illegal 
+PLEASE_START_REALPLAY=Please Start Real Play
+
+# PTZ Info 
+PTZ_CONTROL=PTZControl
+LEFT_UP=LeftUp
+UP=Up
+RIGHT_UP=RightUp
+LEFT=Left
+RIGHT=Right
+LEFT_DOWN=LeftDown
+DOWN=Down
+RIGHT_DOWN=RightDown
+
+ZOOM_ADD=Zoom+
+ZOOM_DEC=Zoom-
+FOCUS_ADD=Focus+
+FOCUS_DEC=Focus-
+IRIS_ADD=Iris+
+IRIS_DEC=Iris-
+
+SPEED=Speed
+
+#ITS
+EVENT_INFO=Event Information
+EVENT_NAME=Event Name
+EVENT_TIME=Event Time
+EVENT_PICTURE=Event and Picture
+PLATE_PICTURE=Plate Picture
+LICENSE_PLATE=License Plate
+PLATE_TYPE=Plate Type
+PLATE_COLOR=Plate Color
+VEHICLE_TYPE=Vehicle Type
+VEHICLE_SIZE=Vehicle Size
+VEHICLE_COLOR=Vehicle Color
+FILE_COUNT=File Count
+FILE_INDEX=File Index
+GROUP_ID=Group ID
+ILLEGAL_PLACE=Illegal Place
+LANE_NUMBER=Lane Number
+MANUAL_CAPTURE=Manual Capture
+OPEN_STROBE=Open Strobe
+CLOSE_STROBE=Close Strobe
+INDEX=Index
+
+OPERATE=Operate
+FUNCTION=Function
+
+UNDEFINED_COLOR=Undefined Color
+BLACK=Black
+WHITE=White
+RED=Red
+BLUE=Blue
+GREEN=Green
+YELLOW=Yellow
+GRAY=Gray
+ORANGE=Orange
+
+LIGHT_DUTY=Light Duty
+MEDIUM=Medium
+OVER_SIZE=Over Size
+MINI_SIZE=Miniature Size
+LARGE_SIZE=Large Size
+
+NO_PLATENUMBER=No PlateNumber
+MANUALSNAP_SUCCEED=Manual snap succeed
+MANUALSNAP_FAILED=Manual snap failed
+
+OPEN_STROBE_SUCCEED=Open strobe succeed
+OPEN_STROBE_FAILED=Open strobe failed
+CLOSE_STROBE_SUCCEED=Close strobe succeed
+CLOSE_STROBE_FAILED=Close strobe failed
+
+EVENT_IVS_TRAFFICJUNCTION=Junction
+EVENT_IVS_TRAFFIC_RUNREDLIGHT=RunRedLight
+EVENT_IVS_TRAFFIC_OVERLINE=OverLine
+EVENT_IVS_TRAFFIC_RETROGRADE=ReTrograde
+EVENT_IVS_TRAFFIC_TURNLEFT=TurnLeft
+EVENT_IVS_TRAFFIC_TURNRIGHT=TurnRight
+EVENT_IVS_TRAFFIC_UTURN=UTurn
+EVENT_IVS_TRAFFIC_OVERSPEED=OverSpeed
+EVENT_IVS_TRAFFIC_UNDERSPEED=UnderSpeed
+EVENT_IVS_TRAFFIC_PARKING=Parking
+EVENT_IVS_TRAFFIC_WRONGROUTE=WrongRoute
+EVENT_IVS_TRAFFIC_CROSSLANE=CrossLane
+EVENT_IVS_TRAFFIC_OVERYELLOWLINE=OverYellowLine
+EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE=YellowPlateInLane
+EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY=PedestrainPriority
+EVENT_IVS_TRAFFIC_MANUALSNAP=ManualSnap
+EVENT_IVS_TRAFFIC_VEHICLEINROUTE=VehicleInRoute
+EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE=VehicleInBusRoute
+EVENT_IVS_TRAFFIC_BACKING=Backing
+EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING=ParkingSpaceParking
+EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING=ParkingSpaceNoParking
+EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT=WithoutSafeBelt
+
+# DownLoad Info
+DOWNLOAD_RECORD_BYTIME=DownloadRecordByTime
+DOWNLOAD_RECORD_BYFILE=DownloadRecordByFile
+QUERY=Query 
+DOWNLOAD=DownLoad
+STOP_DOWNLOAD=StopDownLoad
+START_TIME=Start Time
+END_TIME=End Time
+RECORD_TYPE=Record Type
+
+GENERAL_RECORD=General Record
+ALARM_RECORD=Alarm Record
+MOTION_DETECTION=Motion Detection Record
+CARD_NUMBER_RECORD=Card Number Record
+INTELLIGENT_DETECTION=intelligent Record
+POS_RECORD=pos Record
+
+
+QUERY_RECORD_IS_NOT_EXIST=Query record is not exist
+PLEASE_CHECK_RECORD_TIME=Please check record time
+PLEASE_SELECT_TIME_AGAIN=Please select time again,max time different is 6 hour
+DOWNLOAD_COMPLETED=Download completed
+
+PLEASE_FIRST_QUERY_RECORD=Please first query record
+PLEASE_FIRST_SELECT_ROW_WITH_DATA=Please first select row with data
+
+# Time Set
+YEAR=Year
+MONTH=Month
+DAY=Day
+HOUR=Hour
+MINUTE=Minute
+SECOND=Second
+CONFIRM=Confirm
+CANCEL=Cancel
+DATE_CHOOSER=Date Chooser
+
+MONDAY=Mon
+TUESDAY=Tue
+WEDNESDAY=Wed
+THURSDAY=Thur
+FRIDAY=Fri
+SATURDAY=Sat
+SUNDAY=Sun
+
+# Talk
+TRANSMIT_TYPE=Transmit Type
+LOCAL_TRANSMIT_TYPE=Local(not transmit)
+REMOTE_TRANSMIT_TYPE=Remote(transmit)
+TRANSMIT_CHANNEL=Speaker Channel
+START_TALK=Start Talk
+STOP_TALK=Stop Talk
+TALK_FAILED=Talk Failed
+
+# DeviceSearchAndInt
+DEVICESEARCH_OPERATE=DeviceSearch Operate
+DEVICESEARCH_RESULT=DeviceSearch Result
+DEVICEINIT=DeviceInit
+
+DEVICESEARCH=DeviceSearch
+DEVICE_POINT_TO_POINT_SEARCH=Device IP Point To Point Search
+
+START_SEARCH=Start Search
+STOP_SEARCH=Stop Search
+
+START_IP=Start IP
+END_IP=End IP
+
+DEVICE_TYPE=Device Type
+MAC=MAC
+SN=SN
+DEVICE_INIT_STATE=Initialized State
+INIT_PASSWD=Initialization Password
+PHONE=Phone
+MAIL=Mail
+IP_VERSION=IP Version
+SUB_MASK=Sub Mask
+GETWAY=GetWay
+DETAIL_TYPE=Detail Type
+HTTP_PORT=HTTP Port
+LOCAL_IP=local ip
+CONFIRM_PASSWORD=Confirm Password
+
+OLD_DEVICE=Old Device
+DONOT_SUPPORT_INITIALIZATION=Do not support initialization
+NOT_INITIALIZED=Uninitialized
+INITIALIZED=Initialized
+
+THE_IP_CONTROL_SCOPE=The scope is too large, please control it between the 1000
+PLEASE_FIRST_SELECT_INITIALIZED_DEVICE=Please first select initialized device
+PLEASE_INPUT_PHONE=Please input phone
+PLEASE_INPUT_MAIL=Please input mail
+INCONSISTENT=The password and the confirm password are inconsistent
+PLEASE_CHECK_IP=Please check IP
+
+SEARCHING_WAITING=Searching, please waiting
+
+START_LISTEN=Start Listen
+STOP_LISTEN=Stop Listen
+SHOW_ALARM_EVENT=Show Alarm Event Info
+ALARM_LISTEN_FAILED=Alarm Listen Failed
+ALARM_MESSAGE=Alarm Message
+
+EXTERNAL_ALARM=External alarm 
+MOTION_ALARM=Motion detection alarm 
+VIDEOLOST_ALARM=Video loss alarm 
+SHELTER_ALARM=Camera masking alarm 
+DISKFULL_ALARM=HDD full alarm 
+DISKERROR_ALARM=HDD error alarm 
+START=start
+STOP=stop
+
+CURRENT_TIME=Current Time
+DEVICE_REBOOT=Device Reboot
+SYNCHRONIZE_TIME=Synchronize Time
+REBOOT=Reboot
+SET_TIME=Set Time
+GET_TIME=Get Time
+REBOOT_TIPS=Are you sure you want to reboot it?
+OPERATE_SUCCESS=Operate Success
+
+#FaceRecognition
+FACE_GROUP_ID=Group Id
+FACE_GROUP_NAME=Group Name
+PERSON_COUNT=Person Count
+
+GROUP_OPERATE=Group Operate
+PERSON_OPERATE=Person Operate
+
+TARGET_RECOGNITION_EVENT=TargetRecognition Event
+TARGET_DETECT_EVENT=TargetDetect Event
+
+GLOBAL_PICTURE=Global Picture
+PERSON_PICTURE=Person Picture
+CANDIDATE_PICTURE=Candidate Picture
+
+TIME=Time
+SEX=Sex
+AGE=Age
+COLOR=Color
+EYE=Eye
+MOUTH=Mouth
+MASK=Mask
+BEARD=Beard
+MALE=Male
+FEMALE=Female
+ID_CARD=Id Card
+OFFICE_CARD=office card
+PASSPORT=Passport
+UNIDENTIFIED=Unidentified
+HAVE_BEARD=Have Beard
+NO_BEARD=No Beard
+OPEN_MOUTH=Open Mouth
+CLOSE_MOUTH=Close Mouth
+YELLOW_COLOR=Yellow
+BLACK_COLOR=Black
+WHITE_COLOR=White
+OPEN_EYE=Open Eye
+CLOSE_EYE=Close Eye
+SMILE=Smile
+ANGER=Anger
+SADNESS=Sadness
+DISGUST=Disgust
+FEAR=Fear
+SURPRISE=Surprise
+NEUTRAL=Neutral
+LAUGH=Laugh
+WEAR_MASK=Wear Mask
+NO_MASK=No Mask
+WEAR_GLASSES=Wear Glasses
+NO_GLASSES=No Glasses
+UNKNOW=UnKnow
+UNLIMITED=Unlimited
+
+NAME=Name
+BIRTHDAY=Birthday
+ID_NO=Id No
+ID_TYPE=ID Type
+SIMILARITY=Similarity
+UID=UID
+STRANGER=Stranger
+GLASSES=glasses
+PICTURE_PATH=picture path
+FACE_LIBRARY_ID=face library id
+FACE_LIBRARY_NAME=face library name
+
+
+ADD=Add
+MODIFY=Modify
+FRESH=Fresh
+ADD_GROUP=Add Group
+MODIFY_GROUP=Modify Group
+DEL_GROUP=Delete Group
+DISPOSITION=Disposition
+DEL_DISPOSITION=Delete Disposition
+
+FIND_CONDITION=Find Condition
+FIND_PERSON=Find Person
+ADD_PERSON=Add Person
+MODIFY_PERSON=Modify Person
+DEL_PERSON=Delete Person
+
+PREVIOUSPAGE=Previous Page
+LASTPAGE=Last Page
+SELECT_PICTURE=Select Picture
+SEARCH_BY_PIC=Search by Picture
+DOWNLOAD_QUERY_PICTURE=Download the query Picture
+FACE_LIBRARY=face library
+HISTORY_LIBRARY=history library
+CHOOSE_FACE_PIC=Please select a face picture
+EVENT_TYPE=Event Type
+PAGES_NUMBER=Pages Number
+
+SIMILARITY_RANGE=Similarity range[0, 100]
+PLEASE_INPUT_GROUPNAME=Please input groupName
+PLEASE_SELECT_GROUP=Please select group
+
+PLEASE_SELECT_PERSON=Please select person
+PLEASE_ADD_DISPOSITION_INFO=Please add disposition info
+PLEASE_SELECT_DEL_DISPOSITION_INFO=Please select delDisposition info
+
+#AutoRegister
+AUTOREGISTER_LISTEN=AutoRegister Listen
+DEVICE_CONFIG=Device Configure
+DEVICE_LIST=Device List
+DEVICE_MANAGER=Device Manager
+ADD_DEVICE=Add Device
+MODIFY_DEVICE=Modify Device
+DELETE_DEVICE=Delete Device
+CLEAR_DEVICE=Clear Device
+IMPORT_DEVICE=Import Device
+EXPORT_DEVICE=Export Device
+DEVICE_ID=Device ID
+ENABLE=Enable
+REGISTER_ADDRESS=Register Address
+REGISTER_PORT=Register Port
+GET=Get
+SET=Set
+RECORD=Record
+DEVICE_LOGIN=Device has logged in
+
+ALREADY_EXISTED=Already existed
+ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER=Already existed, whether or not to cover(no, not export)
+FILE_OPEN_PLEASE_CLOSE_FILE=The file is opened, please first close the file
+IMPORT_COMPLETION=Import completed
+EXPORT_COMPLETION=Export completed
+FILE_NOT_EXIST=File is not existed
+
+PLEASE_INPUT=Please input 
+MAX_SUPPORT_100=Maximum support is 100
+
+#Attendance
+ATTENDANCE=Attendance
+USER_ID=User ID
+USER_NAME=User Name
+CARD_NO=Card No
+QUERY_CONDITION=Query Condition
+USER_OPERATE=User Operate
+FINGERPRINT_OPERATE=FingerPrint Operate
+OPERATE_BY_USER_ID=Operate FingerPrint By User ID
+OPERATE_BY_FINGERPRINT_ID=Operate FingerPrint By FingerPrint ID
+FINGERPRINT_ID=FingerPrint ID
+DELETE=Delete
+SEARCH=Search
+SEARCH_FINGERPRINT=Search FingerPrint
+ADD_FINGERPRINT=Add FingerPrint
+DELETE_FINGERPRINT=Delete FingerPrint
+SUBSCRIBE=Subscribe
+UNSUBSCRIBE=UnSubscribe
+USER_LIST=User List
+NEXT_PAGE=Next Page
+USER_INFO=User Info
+DOOROPEN_METHOD=Open Door Method
+FINGERPRINT=FingerPrint
+FINGERPRINT_INFO=FingerPrint Info
+FINGERPRINT_DATA=FingerPrint Data
+CARD=Card
+DELETE_FINGERPRINT_PROMPT=It will delete all fingerprint of this user
+SUBSCRIBE_FAILED=Subscribe failed
+FINGERPRINT_ID_ILLEGAL=FingerPrint id illegal
+FINGERPRINT_COLLECTION=FingerPrint Collection
+START_COLLECTION=Start Collection
+STOP_COLLECTION=Stop Collection
+IN_THE_COLLECTION=In collection...
+COLLECTION_COMPLETED=Collection completed
+COLLECTION_FAILED=Collection failed
+FINGERPRINT_ID_NOT_EXIST=FingerPrint Id not exist
+USER_ID_EXCEED_LENGTH=User id exceed max length
+USER_NAME_EXCEED_LENGTH=User name exceed max length
+CARD_NO_EXCEED_LENGTH=Card no exceed max length
+CARD_NAME_EXCEED_LENGTH=Card name exceed max length
+CARD_PASSWD_EXCEED_LENGTH=Card password exceed max length
+
+#Gate
+GATE=FaceOpenDoor
+
+CARD_OPERATE=Card Operate
+CARD_INFO=Card Information
+CARD_MANAGER=Card Manager
+
+CLEAR=Clear
+
+OPEN_STATUS=Open Status
+OPEN_METHOD=Open Method
+
+TEMPERATURE=temperture
+MASK_STATUS=mask status
+
+CARD_UNKNOW=UnKnown Card
+CARD_GENERAL=General Card
+CARD_VIP=VIP Card
+CARD_GUEST=Guest Card
+CARD_PATROL=Patrol Card
+CARD_BACKLIST=BackList Card
+CARD_COERCE=Coerce Card
+CARD_POLLING=Polling Card
+CARD_MOTHERCARD=Mother Card
+
+STATE_UNKNOWN=UnKnown
+STATE_NORMAL=Normal
+STATE_LOSE=Lose
+STATE_LOGOFF=LogOff
+STATE_FREEZE=Freeze
+STATE_ARREARS=Arrears
+STATE_OVERDUE=OverDue
+STATE_PREARREARS=PreArrears
+
+RECORD_NO=Record No
+CARD_NAME=Card Name
+CARD_STATUS=Card Status
+CARD_PASSWORD=Card Password
+CARD_TYPE=Card Type
+CARD_NUM=Card Number
+USE_TIMES=Use Times
+IS_FIRST_ENTER=IsFirstEnter
+IS_VALID=IsValid
+VALID_PERIOD=Valid Period
+VALID_START_TIME=Valid Start Time
+VALID_END_TIME=Valid End Time
+FIRST_ENTER=FirstEnter
+NO_FIRST_ENTER=No FirstEnter
+VALID=Valid
+INVALID=Invalid
+
+PLEASE_SELECT_CARD=Please select card
+PLEASE_INPUT_CARDNO=Please input cardNo
+PLEASE_INPUT_USERID=Please input userId
+WANT_CLEAR_ALL_INFO=Do you want to clear all information ?
+
+ADD_CARD_INDO_FAILED=Failed to add card information 
+ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=Succeed to add card information and person picture
+ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED=Succeed to add card information, but failed to add person picture
+CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED=Card information is existed, succeed to add person picture
+
+MODIFY_CARD_INFO_SUCCEED=Succeed to modify card information
+MODIFY_CARD_INFO_FAILED=Failed to modify card information
+MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=Succeed to modify card information and person picture
+MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED=Succeed to modify card information, but failed to modify person picture
+
+NET_ACCESS_DOOROPEN_METHOD_UNKNOWN=UnKnow
+NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY=Password
+NET_ACCESS_DOOROPEN_METHOD_CARD=Card
+NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST=First Card Then Password
+NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST=First Password Then Card 
+NET_ACCESS_DOOROPEN_METHOD_REMOTE=Remote Open
+NET_ACCESS_DOOROPEN_METHOD_BUTTON=Open Door Button
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT=fingerprint lock
+NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT=password+swipe card+fingerprint combination unlock
+NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT=password+fingerprint combination unlock
+NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT=swipe card+fingerprint combination unlock
+NET_ACCESS_DOOROPEN_METHOD_PERSONS=multi-people unlock
+NET_ACCESS_DOOROPEN_METHOD_KEY=Key
+NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD=Use force password to open the door   
+NET_ACCESS_DOOROPEN_METHOD_QRCODE=Use QR Code  
+NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION=face recogniton to open the door
+NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD=comparsion of face and ID card
+NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD=ID card  and compasion of face and ID card
+NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH=Bluetooth
+NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD=Custom password
+NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD=UserID and password
+NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD=Face and password
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD=Fingerprint and password
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE= FingerPrint and face
+NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE=Card and face
+NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD=Face or password
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD=Fingerprint or password
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE=Fingerprint or face
+NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE=Card or face
+NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT=Card or fingerprint
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD=Fingerprint and face and password
+NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD=Card and face and password
+NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD=Card and fingerprint and password
+NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE=Card and password and face
+NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD=Fingerprint or face or password
+NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD=Card or face or password
+NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE=Card or fingerprint or face
+NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD=Card and fingerprint and face and password 
+NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD=Card or fingerprint or face or password
+NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE=ID card  and compasion of face and ID card or card or face
+NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE=ID card  and compasion of face or card or face
+
+#ThermalCamera
+THERMAL_CAMERA=Thermal Camera
+THERMAL_OPERATE=Operate
+POINT_QUERY=Query Point
+ITEM_QUERY=Query Item
+TEMPER_QUERY=Query Temperature 
+HEATMAP=HeatMap
+POINT_TEMPER=Point Temperature
+ITEM_TEMPER=Item Temperature
+X=X
+Y=Y
+COORDINATE_ILLEGAL=Coordinate Illegal
+QUERY_RESULT=Query Result
+METER_TYPE=Meter Type
+TEMPER_UNIT=Temperature Unit
+TEMPER=Temperature
+UNKNOWN=Unknown
+SPOT=Spot
+LINE=Line
+AREA=Area
+CENTIGRADE=Celsius
+FAHRENHEIT=Fahrenheit
+PRESET_ID=Preset Id
+RULE_ID=Rule Id
+TEMPER_AVER=Average Temperature
+TEMPER_MAX=Maximum Temperature
+TEMPER_MIN=Minimum Temperature
+TEMPER_MID=Middle Temperature
+TEMPER_STD=Standard Deviation
+INPUT_ILLEGAL=Input Illegal
+TEMPER_INFO=Temperature Info
+FIVE_MINUTES=Five Minutes
+TEN_MINUTES=Ten Minutes
+FIFTEEN_MINUTES=Fifteen Minutes
+THIRTY_MINUTES=Thirty Minutes
+SAVE_PERIOD=Save Period
+QUERY_LIST=Query List
+RECORD_TIME=Record Time
+ITEM_NAME=Name
+COORDINATE=Coordinate
+NO_RECORD=No Record
+HEATMAP_OPERATE=Operate
+IDLE=Idle
+ACQUIRING=Acquiring
+RADIOMETRY_ATTACH=Attach
+RADIOMETRY_DETACH=Detach
+RADIOMETRY_FETCH=Fetch
+SAVE_HEATMAP=Save HeatMap
+HEATMAP_METADATA_INFO=HeatMap MetaData
+HEIGHT=Height
+WIDTH=Width
+LENGTH=Size
+SENSOR_TYPE=Sensor Type
+HEATMAP_SAVE_SUCCESS=HeatMap Save Success
+
+#matrix screen
+MATRIX_SCREEN=Lattice Screen
+PASSING_STATE=Passing state
+PASSING_CAR=pass car
+NO_CAR=no car
+IN_TIME=Entry time
+OUT_TIME=departure time
+PLATE_NUMBER=plate number
+CAR_OWNER=car owner
+PARKING_TIME=parking time
+USER_TYPE=user type
+MONTHLY_CARD_USER=monthly card user
+ANNUAL_CARD_USER=annual card user
+LONG_TERM_USER=long term user/VIP
+TEMPORARY_USER=temporary user/Visitor
+PARKING_CHARGE=parking charge
+DAYS_DUE=days due
+REMAINING_PARKING_SPACES=Remaining parking spaces
+VEHICLES_NOT_ALLOWED_TO_PASS=vehicles not allowed to pass
+ALLOWED_VEHICLES_TO_PASS=allowed vehicles to pass
+SET_UP=set up
+SUCCESSFULLY_ISSUED=Successfully issued
+DELIVERY FAILED=Delivery failed
+CUSTOM_USER_CLASS=Custom user class
+REMARKS_INFORMATION=Remarks information
+CUSTOM_INFORMATION=Custom information
+
+# human number statistic
+HUMAN_NUMBER_STATISTIC_TITLE=Human Number Statistic
+HUMAN_NUMBER_STATISTIC_CONTROL=Human Number Statistic Control
+
+HUMAN_NUMBER_STATISTIC_EVENT_TITLE=Human Number Statistic Event List
+
+HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL=Channel
+HUMAN_NUMBER_STATISTIC_EVENT_TIME=EventTime
+HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN=HourIn
+HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT=HourOut
+HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN=TodayIn
+HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT=TodayOut
+HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN=TotalIn
+HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT=TotalOut
+
+HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR=OSD Clear
+
+VTO_ALARM_EVENT_ROOM_NO=RoomNo.
+VTO_ALARM_EVENT_CARD_NO=CardNo.
+VTO_ALARM_EVENT_TIME=Time
+VTO_ALARM_EVENT_OPEN_METHOD=OpenMethod
+VTO_ALARM_EVENT_STATUS=Status
+
+VTO_REAL_LOAD_ROOM_NO=RoomNo.
+VTO_REAL_LOAD_CARD_NO=CardNO.
+VTO_REAL_LOAD_TIME=Time
+VTO_REAL_LOAD_EVENT_INFO=EventInfo
+
+VTO_OPERATE_MANAGER_TITLE=Card&Fingerprint&FaceManager
+VTO_OPERATE_MANAGER_REC_NO=RecNo.
+VTO_OPERATE_MANAGER_ROOM_NO=RoomNo.
+VTO_OPERATE_MANAGER_CARD_NO=CardNo.
+VTO_OPERATE_MANAGER_FINGER_PRINT_DATA=FingerprintData
+VTO_OPERATE_INFO_TITLE=Add
+
+VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE=CollectionFingerPrint
+
+DOOR_OPEN=Open Door
+DOOR_CLOSE=Close Door
+EVENT_OPERATE=Event Operate
+START_REAL_LOAD_PIC=StartRealLoad
+STOP_REAL_LOAD_PIC=StopRealLoad
+ALARM_EVENT=AlarmEvent
+REAL_LOAD_EVENT=RealLoadEvent
+COLLECTION_RESULT=CollectionResult
+NEED_FINGER_PRINT=Need FingerPrint
+FACE_INFO=FaceInfo
+OPEN=open
+VTO=VTO
+SCADA=SCADA
+TRAFFIC_ALLOW_LIST=Traffic Allow List
+MODIFY_CARD_FACE_FAILED=failed to modify face info.
+EM_MASK_STATE_UNKNOWN=unknown
+EM_MASK_STATE_NODISTI=unrecognized
+EM_MASK_STATE_NOMASK=Not wearing mask
+EM_MASK_STATE_WEAR=wearing mask
+END_SEARCH=End of query
+DOWNLOAD_PICTURE=download picture
+ENTER_PICTURE_PATH=Please enter the picture path
+LOADING=The equipment is being processed
+QUERY_CARD_EXIST_FAILED=Check if the cardNo exists failed
+CARD_EXIST=The cardNo already exists
+INPUT_ROOM_NO=please input room number
+ROOM_NO_EXCEED_LENGTH=room number exceed max length
+REMOVE_CARD_FACE_FAILED=remove card face failed
+STOP_LISTEN_FAILED=stop listen failed
+
+SCREEN_NUMBER=screen number
+TEXT_CONTENT=text content
+TEXT_CONTENT_TYPE=text content type
+TEXT_CONTENT_COLOR=text content color
+SCROLL_TYPE=scroll type
+SCROLL_SPEED=scroll speed
+
+ORDINARY=ordinary
+QR_CODE=QR code
+LOCAL_TIME=local time
+RESOURCE=resource
+
+NOT_ROLLING=not rolling 
+SCROLL_LEFT_AND_RIGHT=scroll left and right
+SCROLL_UP_AND_DOWN=scroll up and right
+
+NUMBER_STRING=number string
+VOICE_TEXT=vioce text
+ISSUED=issued
+PROMPT=Please add corresponding parameters
+
+
+SCADA_DEVICE_LIST=device list
+
+DEVICE_NAME=device name
+POINT_ID=point id
+IF_VALID_SIGNAL_POINT=valid signal point
+POINT_NAME=point name
+ALARM_DESCRIBE=alarm describe
+ALARM_LEVEL=alarm level
+ALARM_DELAY=alarm delay
+ALARM_TYPE=alarm type
+ALARM_TIME=alarm time
+COLLECT_TIME=collect time
+
+SCADA_POINT_LIST=point list
+SCADA_ATTACH_ALARM=attach alarm
+SCADA_ATTACH_INFO=attach info
+SCADA_ATTACH=start listen
+BTN_LIST = get
+
+ALLOWLIST_OPERATION=allowlist operation
+
+SINGLE_UPLOAD=single upload
+
+LICENSE_PLATE_RUN=The license plate to run
+FUZZY_QUERY=fuzzy query
+DELETE_ALL=delete all
+AUTHORIZATION=authorization
+UNAUTHORIZATION=unauthorized
+BATCH_UPLOAD=batch upload
+BROWSE=browse
+UPLOAD=upload
+QUERY_INFORMATION=query information
+DIALOG=dialog
+LICENSE_PLATE_NUMBER=license plate number
+MODIFY_PANEL=modify panel
+SERIAL_NUMBER=serial number
+OPEN_MODEL=open model
+LICENSE_PLATE_LENGTH_TOO_LONG=License plate length is too long
+NAME_TOO_LONG=The name is too long
+ADD_SUCCESS= add a success
+ADD_FAIL=add a fail
+DELETE_SUCCESS=delete a success
+DELETE_FAIL=delete a fail
+MODIFY_SUCCESS=modify the success
+MODIFY_FAIL=modify the fail
+UPLOAD_SUCCESS=Uploaded successfully
+ENTER_QUERY_DATA=Please enter the data to query
+FILLING_RULES=fill in legal characters
+UPLOAD_FAIL=upload fail
+UPLOADING=uploading
+SURE_UPLOAD=Are you sure to upload?
+DATA_NUMBER=pieces of data
+SELECT_DATA=Please select data
diff --git a/iailab-module-data/iailab-module-data-biz/src/main/resources/res_zh_CN.properties b/iailab-module-data/iailab-module-data-biz/src/main/resources/res_zh_CN.properties
new file mode 100644
index 0000000..8b9e2b2
--- /dev/null
+++ b/iailab-module-data/iailab-module-data-biz/src/main/resources/res_zh_CN.properties
@@ -0,0 +1 @@
+# FunctionList
FUNCTIONLIST=\u529f\u80fd\u5217\u8868
REALPLAY=\u5b9e\u65f6\u9884\u89c8
CAPTURE_PICTURE=\u6293\u62cd\u56fe\u7247
MULTIREALPLAY=\u53cc\u901a\u9053\u5b9e\u65f6\u9884\u89c8
DOWNLOAD_RECORD=\u4e0b\u8f7d\u5f55\u50cf
ITS_EVENT=\u667a\u80fd\u4ea4\u901a
TALK=\u8bed\u97f3\u5bf9\u8bb2
DEVICESEARCH_DEVICEINIT=\u8bbe\u5907\u641c\u7d22\u548c\u8bbe\u5907\u521d\u59cb\u5316
PTZ=\u4e91\u53f0\u63a7\u5236
TARGETRECOGNITION=\u76ee\u6807\u8bc6\u522b
ALARM_LISTEN=\u62a5\u8b66\u76d1\u542c
DEVICE_CONTROL=\u8bbe\u5907\u63a7\u5236
AUTOREGISTER=\u4e3b\u52a8\u6ce8\u518c

ONLINE=\u5728\u7ebf

# Login Info
DEVICE_IP=\u8bbe\u5907\u5730\u5740
DEVICE_PORT=\u7aef\u53e3\u53f7
USERNAME=\u7528\u6237\u540d
PASSWORD=\u5bc6\u7801
IP=\u5730\u5740

LOGIN=\u767b\u5f55
LOGOUT=\u767b\u51fa

LOGIN_SUCCEED=\u767b\u5f55\u6210\u529f
LOGIN_FAILED=\u767b\u5f55\u5931\u8d25
DISCONNECT=\u8bbe\u5907\u65ad\u7ebf
DISCONNECT_RECONNECTING=\u8bbe\u5907\u65ad\u7ebf\uff0c\u6b63\u5728\u91cd\u8fde\u4e2d
PROMPT_MESSAGE=\u63d0\u793a\u4fe1\u606f
ERROR_MESSAGE=\u9519\u8bef\u4fe1\u606f

SUCCEED=\u6210\u529f
FAILED=\u5931\u8d25

PLEASE_INPUT_DEVICE_IP=\u8bf7\u8f93\u5165\u8bbe\u5907\u5730\u5740
PLEASE_INPUT_DEVICE_PORT=\u8bf7\u8f93\u5165\u8bbe\u5907\u7aef\u53e3\u53f7
PLEASE_INPUT_DEVICE_USERNAME=\u8bf7\u8f93\u5165\u7528\u6237\u540d
PLEASE_INPUT_DEVICE_PASSWORD=\u8bf7\u8f93\u5165\u5bc6\u7801
PLEASE_INPUT_CONFIRM_PASSWORD=\u8bf7\u8f93\u5165\u786e\u8ba4\u5bc6\u7801

# Error Info
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_GETCFG_MULTICAST=\u83b7\u53d6\u914d\u7f6e\u5931\u8d25\u4f4d\u7f6e\uff1a\u7ec4\u64ad\u7aef\u53e3\u6309\u901a\u9053\u914d\u7f6e
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\u8c61\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\u7981\u6b62\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_LOGIN_ERROR_DEVICE_NOT_INIT=\u8bbe\u5907\u5c1a\u672a\u521d\u59cb\u5316\uff0c\u4e0d\u80fd\u767b\u5f55\uff0c\u8bf7\u5148\u521d\u59cb\u5316\u8bbe\u5907
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_RENDER_GETOSDTIME_ERROR=Render\u5e93\u83b7\u53d6\u5f53\u524d\u64ad\u653e\u65f6\u95f4\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\u5220\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\u53d6WIFIap\u914d\u7f6e\u5931\u8d25
NET_ERROR_SET_WIFI_AP_CFG=\u8bbe\u7f6eWIFIap\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=\u8bbe\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\u9a8c\u8bc1\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_NOSUPPORT_RECORD=\u8bbe\u5907\u4e0d\u652f\u6301\u6b64\u8bb0\u5f55\u96c6
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
NET_ERROR_ENCRYPT=\u52a0\u5bc6\u6570\u636e\u5931\u8d25
NET_ERROR_PWD_ILLEGAL=\u65b0\u5bc6\u7801\u4e0d\u5408\u89c4\u8303
NET_ERROR_DEVICE_ALREADY_INIT=\u8bbe\u5907\u5df2\u7ecf\u521d\u59cb\u5316
NET_ERROR_SECURITY_CODE=\u5b89\u5168\u7801\u9519\u8bef
NET_ERROR_SECURITY_CODE_TIMEOUT=\u5b89\u5168\u7801\u8d85\u51fa\u6709\u6548\u671f
NET_ERROR_GET_PWD_SPECI=\u83b7\u53d6\u5bc6\u7801\u89c4\u8303\u5931\u8d25
NET_ERROR_NO_AUTHORITY_OF_OPERATION=\u65e0\u6743\u9650\u8fdb\u884c\u8be5\u64cd\u4f5c
NET_ERROR_DECRYPT=\u89e3\u5bc6\u6570\u636e\u5931\u8d25
NET_ERROR_2D_CODE=2Dcode\u6821\u9a8c\u5931\u8d25
NET_ERROR_INVALID_REQUEST=\u975e\u6cd5\u7684RPC\u8bf7\u6c42
NET_ERROR_PWD_RESET_DISABLE=\u5bc6\u7801\u91cd\u7f6e\u529f\u80fd\u5df2\u5173\u95ed
NET_ERROR_PLAY_PRIVATE_DATA=\u663e\u793a\u79c1\u6709\u6570\u636e\uff0c\u6bd4\u5982\u89c4\u5219\u6846\u7b49\u5931\u8d25
NET_ERROR_ROBOT_OPERATE_FAILED=\u673a\u5668\u4eba\u64cd\u4f5c\u5931\u8d25
NET_ERROR_PHOTOSIZE_EXCEEDSLIMIT=\u56fe\u7247\u5927\u5c0f\u8d85\u9650
NET_ERROR_USERID_INVALID=\u7528\u6237ID\u4e0d\u5b58\u5728
NET_ERROR_EXTRACTFEATURE_FAILED=\u7167\u7247\u7279\u5f81\u503c\u63d0\u53d6\u5931\u8d25
NET_ERROR_PHOTO_EXIST=\u7167\u7247\u5df2\u5b58\u5728
NET_ERROR_PHOTO_OVERFLOW=\u7167\u7247\u6570\u91cf\u8d85\u8fc7\u4e0a\u9650
NET_ERROR_CHANNEL_ALREADY_OPENED=\u901a\u9053\u5df2\u7ecf\u6253\u5f00
NET_ERROR_CREATE_SOCKET=\u521b\u5efa\u5957\u63a5\u5b57\u5931\u8d25
NET_ERROR_CHANNEL_NUM=\u901a\u9053\u53f7\u9519\u8bef
NET_ERROR_FACE_RECOGNITION_SERVER_GROUP_ID_EXCEED=\u7ec4ID\u8d85\u8fc7\u6700\u5927\u503c

# RealPlay Info
START_REALPLAY=\u5f00\u59cb\u9884\u89c8
STOP_REALPLAY=\u505c\u6b62\u9884\u89c8
ATTACH=\u667a\u80fd\u8ba2\u9605
DETACH=\u53d6\u6d88\u8ba2\u9605
REALPLAY_SUCCEED=\u5b9e\u65f6\u9884\u89c8\u6210\u529f
REALPLAY_FAILED=\u5b9e\u65f6\u9884\u89c8\u5931\u8d25

CHN=\u901a\u9053
CHANNEL=\u901a\u9053
STREAM_TYPE=\u7801\u6d41
MASTER_AND_SUB_STREAM=\u4e3b\u8f85\u7801\u6d41
MASTER_STREAM=\u4e3b\u7801\u6d41
SUB_STREAM=\u8f85\u7801\u6d41

# Capture Picture
LOCAL_CAPTURE=\u672c\u5730\u6293\u56fe
REMOTE_CAPTURE=\u8fdc\u7a0b\u6293\u56fe
TIMER_CAPTURE=\u5b9a\u65f6\u6293\u56fe
STOP_CAPTURE=\u505c\u6b62\u6293\u56fe
INTERVAL=\u95f4\u9694

TIME_INTERVAL_ILLEGAL=\u65f6\u95f4\u95f4\u9694\u8f93\u5165\u975e\u6cd5 
PLEASE_START_REALPLAY=\u8bf7\u5148\u6253\u5f00\u5b9e\u65f6\u9884\u89c8

# PTZ Info
PTZ_CONTROL=\u4e91\u53f0\u63a7\u5236
LEFT_UP=\u5de6\u4e0a
UP=\u4e0a
RIGHT_UP=\u53f3\u4e0a
LEFT=\u5de6
RIGHT=\u53f3
LEFT_DOWN=\u5de6\u4e0b
DOWN=\u4e0b
RIGHT_DOWN=\u53f3\u4e0b

ZOOM_ADD=\u53d8\u500d+
ZOOM_DEC=\u53d8\u500d-
FOCUS_ADD=\u8c03\u7126+
FOCUS_DEC=\u8c03\u7126-
IRIS_ADD=\u5149\u5708+
IRIS_DEC=\u5149\u5708-

SPEED=\u901f\u7387

#ITS
EVENT_INFO=\u4e8b\u4ef6\u4fe1\u606f
EVENT_NAME=\u4e8b\u4ef6\u540d\u79f0
EVENT_TIME=\u4e8b\u4ef6\u65f6\u95f4
EVENT_PICTURE=\u4e8b\u4ef6\u4ee5\u53ca\u56fe\u7247
PLATE_PICTURE=\u8f66\u724c\u56fe
LICENSE_PLATE=\u8f66\u724c\u53f7
PLATE_TYPE=\u8f66\u724c\u7c7b\u578b
PLATE_COLOR=\u8f66\u724c\u989c\u8272
VEHICLE_TYPE=\u8f66\u8f86\u7c7b\u578b
VEHICLE_SIZE=\u8f66\u8f86\u5927\u5c0f
VEHICLE_COLOR=\u8f66\u8f86\u989c\u8272
FILE_COUNT=\u6587\u4ef6\u603b\u6570
FILE_INDEX=\u6587\u4ef6\u7f16\u53f7
GROUP_ID=\u7ec4ID
ILLEGAL_PLACE=\u8fdd\u6cd5\u5730\u70b9
LANE_NUMBER=\u8f66\u9053\u53f7
MANUAL_CAPTURE=\u624b\u52a8\u6293\u62cd
OPEN_STROBE=\u51fa\u5165\u53e3\u5f00\u95f8
CLOSE_STROBE=\u51fa\u5165\u53e3\u5173\u95f8
INDEX=\u5e8f\u53f7

OPERATE=\u64cd\u4f5c
FUNCTION=\u57fa\u672c

UNDEFINED_COLOR=\u672a\u5b9a\u4e49\u989c\u8272
BLACK=\u9ed1\u8272
WHITE=\u767d\u8272
RED=\u7ea2\u8272
BLUE=\u84dd\u8272
GREEN=\u7eff\u8272
YELLOW=\u9ec4\u8272
GRAY=\u7070\u8272
ORANGE=\u6a59\u8272

LIGHT_DUTY=\u5c0f\u578b\u8f66
MEDIUM=\u4e2d\u578b\u8f66
OVER_SIZE=\u5927\u578b\u8f66
MINI_SIZE=\u5fae\u578b\u8f66
LARGE_SIZE=\u957f\u8f66

NO_PLATENUMBER=\u65e0\u8f66\u724c
MANUALSNAP_SUCCEED=\u624b\u52a8\u6293\u62cd\u6210\u529f
MANUALSNAP_FAILED=\u624b\u52a8\u6293\u62cd\u5931\u8d25

OPEN_STROBE_SUCCEED=\u5f00\u95f8\u6210\u529f
OPEN_STROBE_FAILED=\u5f00\u95f8\u5931\u8d25
CLOSE_STROBE_SUCCEED=\u5173\u95f8\u6210\u529f
CLOSE_STROBE_FAILED=\u5173\u95f8\u5931\u8d25

EVENT_IVS_TRAFFICJUNCTION=\u4ea4\u901a\u5361\u53e3
EVENT_IVS_TRAFFIC_RUNREDLIGHT=\u95ef\u7ea2\u706f
EVENT_IVS_TRAFFIC_OVERLINE=\u538b\u8f66\u9053\u7ebf
EVENT_IVS_TRAFFIC_RETROGRADE=\u9006\u884c
EVENT_IVS_TRAFFIC_TURNLEFT=\u8fdd\u7ae0\u5de6\u8f6c
EVENT_IVS_TRAFFIC_TURNRIGHT=\u8fdd\u7ae0\u53f3\u8f6c
EVENT_IVS_TRAFFIC_UTURN=\u8fdd\u7ae0\u6389\u5934
EVENT_IVS_TRAFFIC_OVERSPEED=\u8d85\u901f
EVENT_IVS_TRAFFIC_UNDERSPEED=\u4f4e\u901f
EVENT_IVS_TRAFFIC_PARKING=\u8fdd\u7ae0\u505c\u8f66
EVENT_IVS_TRAFFIC_WRONGROUTE=\u4e0d\u6309\u8f66\u9053\u884c\u9a76
EVENT_IVS_TRAFFIC_CROSSLANE=\u8fdd\u7ae0\u53d8\u9053
EVENT_IVS_TRAFFIC_OVERYELLOWLINE=\u538b\u9ec4\u7ebf
EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE=\u9ec4\u724c\u8f66\u5360\u9053
EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY=\u6591\u9a6c\u7ebf\u884c\u4eba\u4f18\u5148
EVENT_IVS_TRAFFIC_MANUALSNAP=\u4ea4\u901a\u624b\u52a8\u6293\u62cd
EVENT_IVS_TRAFFIC_VEHICLEINROUTE=\u6709\u8f66\u5360\u9053
EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE=\u5360\u7528\u516c\u4ea4\u8f66\u9053
EVENT_IVS_TRAFFIC_BACKING=\u8fdd\u7ae0\u5012\u8f66
EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING=\u8f66\u4f4d\u6709\u8f66
EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING=\u8f66\u4f4d\u65e0\u8f66
EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT=\u4ea4\u901a\u672a\u7cfb\u5b89\u5168\u5e26

# DownLoad Info
DOWNLOAD_RECORD_BYTIME=\u6309\u65f6\u95f4\u4e0b\u8f7d
DOWNLOAD_RECORD_BYFILE=\u6309\u6587\u4ef6\u4e0b\u8f7d
QUERY=\u67e5\u8be2 
DOWNLOAD=\u4e0b\u8f7d
STOP_DOWNLOAD=\u505c\u6b62\u4e0b\u8f7d
START_TIME=\u5f00\u59cb\u65f6\u95f4
END_TIME=\u7ed3\u675f\u65f6\u95f4
RECORD_TYPE=\u5f55\u50cf\u7c7b\u578b

GENERAL_RECORD=\u666e\u901a\u5f55\u50cf
ALARM_RECORD=\u62a5\u8b66\u5f55\u50cf
MOTION_DETECTION=\u79fb\u52a8\u68c0\u6d4b\u5f55\u50cf
CARD_NUMBER_RECORD=\u5361\u53f7\u5f55\u50cf
INTELLIGENT_DETECTION=\u667a\u80fd\u5f55\u50cf
POS_RECORD=POS\u5f55\u50cf

QUERY_RECORD_IS_NOT_EXIST=\u67e5\u8be2\u5f55\u50cf\u4e0d\u5b58\u5728
PLEASE_CHECK_RECORD_TIME=\u8bf7\u68c0\u67e5\u5f55\u50cf\u65f6\u95f4
PLEASE_SELECT_TIME_AGAIN=\u8bf7\u91cd\u65b0\u9009\u62e9\u65f6\u95f4\uff0c\u6700\u5927\u65f6\u95f4\u5dee6\u5c0f\u65f6
DOWNLOAD_COMPLETED=\u4e0b\u8f7d\u7ed3\u675f

PLEASE_FIRST_QUERY_RECORD=\u8bf7\u5148\u67e5\u8be2\u5f55\u50cf
PLEASE_FIRST_SELECT_ROW_WITH_DATA=\u8bf7\u5148\u9009\u62e9\u6709\u5f55\u50cf\u7684\u4e00\u884c

# Time Set
YEAR=\u5e74
MONTH=\u6708
DAY=\u65e5
HOUR=\u65f6
MINUTE=\u5206
SECOND=\u79d2
CONFIRM=\u786e\u5b9a
CANCEL=\u53d6\u6d88
DATE_CHOOSER=\u65f6\u95f4\u9009\u62e9

MONDAY=\u661f\u671f\u4e00
TUESDAY=\u661f\u671f\u4e8c
WEDNESDAY=\u661f\u671f\u4e09
THURSDAY=\u661f\u671f\u56db
FRIDAY=\u661f\u671f\u4e94
SATURDAY=\u661f\u671f\u516d
SUNDAY=\u661f\u671f\u65e5

# Talk
TRANSMIT_TYPE=\u8f6c\u53d1\u7c7b\u578b
LOCAL_TRANSMIT_TYPE=\u672c\u5730\uff08\u4e0d\u8f6c\u53d1\uff09
REMOTE_TRANSMIT_TYPE=\u8fdc\u7a0b\uff08\u8f6c\u53d1\uff09
TRANSMIT_CHANNEL=\u8f6c\u53d1\u901a\u9053
START_TALK=\u5f00\u59cb\u901a\u8bdd
STOP_TALK=\u7ed3\u675f\u901a\u8bdd
TALK_FAILED=\u901a\u8bdd\u5931\u8d25

# DeviceSearchAndInt
DEVICESEARCH_OPERATE=\u8bbe\u5907\u641c\u7d22\u64cd\u4f5c
DEVICESEARCH_RESULT=\u8bbe\u5907\u641c\u7d22\u7ed3\u679c
DEVICEINIT=\u8bbe\u5907\u521d\u59cb\u5316

DEVICESEARCH=\u8bbe\u5907\u641c\u7d22
DEVICE_POINT_TO_POINT_SEARCH=\u8bbe\u5907IP\u70b9\u5bf9\u70b9\u641c\u7d22

START_SEARCH=\u5f00\u59cb\u641c\u7d22
STOP_SEARCH=\u505c\u6b62\u641c\u7d22

START_IP=\u8d77\u59cbIP
END_IP=\u7ed3\u675fIP

DEVICE_TYPE=\u8bbe\u5907\u7c7b\u578b
MAC=MAC
SN=\u5e8f\u5217\u53f7
DEVICE_INIT_STATE=\u521d\u59cb\u5316\u72b6\u6001
INIT_PASSWD=\u521d\u59cb\u5316\u5bc6\u7801
PHONE=\u624b\u673a\u53f7
MAIL=\u90ae\u7bb1
IP_VERSION=IP\u7248\u672c
SUB_MASK=\u5b50\u7f51\u63a9\u7801
GETWAY=\u7f51\u5173
DETAIL_TYPE=\u8be6\u7ec6\u7c7b\u578b
HTTP_PORT=HTTP\u7aef\u53e3\u53f7
LOCAL_IP=\u672c\u5730ip
CONFIRM_PASSWORD=\u786e\u8ba4\u5bc6\u7801

OLD_DEVICE=\u8001\u8bbe\u5907
DONOT_SUPPORT_INITIALIZATION=\u4e0d\u652f\u6301\u521d\u59cb\u5316
NOT_INITIALIZED=\u672a\u521d\u59cb\u5316
INITIALIZED=\u5df2\u521d\u59cb\u5316

THE_IP_CONTROL_SCOPE=\u8303\u56f4\u592a\u5927\uff0c\u8bf7\u63a7\u5236\u57281000\u4e2a\u4e4b\u95f4
PLEASE_FIRST_SELECT_INITIALIZED_DEVICE=\u8bf7\u5148\u9009\u62e9\u9700\u8981\u521d\u59cb\u5316\u7684\u8bbe\u5907
PLEASE_INPUT_PHONE=\u8bf7\u8f93\u5165\u624b\u673a\u53f7
PLEASE_INPUT_MAIL=\u8bf7\u8f93\u5165\u90ae\u7bb1
INCONSISTENT=\u5bc6\u7801\u548c\u786e\u8ba4\u5bc6\u7801\u4e0d\u4e00\u81f4
PLEASE_CHECK_IP=\u8bf7\u68c0\u67e5IP

SEARCHING_WAITING=\u6b63\u5728\u641c\u7d22\uff0c\u8bf7\u7b49\u5f85\u641c\u7d22\u7ed3\u675f

START_LISTEN=\u5f00\u59cb\u76d1\u542c
STOP_LISTEN=\u505c\u6b62\u76d1\u542c
SHOW_ALARM_EVENT=\u62a5\u8b66\u4e8b\u4ef6\u7ed3\u679c\u4fe1\u606f
ALARM_LISTEN_FAILED=\u62a5\u8b66\u76d1\u542c\u5931\u8d25
ALARM_MESSAGE=\u62a5\u8b66\u4fe1\u606f

EXTERNAL_ALARM=\u5916\u90e8\u62a5\u8b66
MOTION_ALARM=\u52a8\u6001\u68c0\u6d4b\u62a5\u8b66
VIDEOLOST_ALARM=\u89c6\u9891\u4e22\u5931\u62a5\u8b66
SHELTER_ALARM=\u89c6\u9891\u906e\u6321\u62a5\u8b66
DISKFULL_ALARM=\u786c\u76d8\u6ee1\u62a5\u8b66
DISKERROR_ALARM=\u574f\u786c\u76d8\u62a5\u8b66
START=\u5f00\u59cb
STOP=\u7ed3\u675f

CURRENT_TIME=\u5f53\u524d\u65f6\u95f4
DEVICE_REBOOT=\u8bbe\u5907\u91cd\u542f
SYNCHRONIZE_TIME=\u65f6\u95f4\u540c\u6b65
REBOOT=\u91cd\u542f
SET_TIME=\u8bbe\u7f6e\u65f6\u95f4
GET_TIME=\u83b7\u53d6\u65f6\u95f4
REBOOT_TIPS=\u60a8\u786e\u5b9a\u8981\u91cd\u542f\u5417\uff1f
OPERATE_SUCCESS=\u64cd\u4f5c\u6210\u529f

#FaceRecognition
FACE_GROUP_ID=\u4eba\u8138\u5e93ID
FACE_GROUP_NAME=\u4eba\u8138\u5e93\u540d\u79f0
PERSON_COUNT=\u4eba\u5458\u4e2a\u6570

GROUP_OPERATE=\u4eba\u8138\u5e93\u64cd\u4f5c
PERSON_OPERATE=\u4eba\u5458\u64cd\u4f5c

TARGET_RECOGNITION_EVENT=\u76ee\u6807\u8bc6\u522b\u4e8b\u4ef6
TARGET_DETECT_EVENT=\u76ee\u6807\u68c0\u6d4b\u4e8b\u4ef6

GLOBAL_PICTURE=\u5168\u666f\u56fe
PERSON_PICTURE=\u4eba\u8138\u56fe
CANDIDATE_PICTURE=\u5019\u9009\u4eba\u56fe

TIME=\u65f6\u95f4
SEX=\u6027\u522b
AGE=\u5e74\u9f84
COLOR=
EYE=\u773c\u775b
MOUTH=\u5634\u5df4
MASK=\u53e3\u7f69
BEARD=\u80e1\u5b50
MALE=\u7537
FEMALE=\u5973
ID_CARD=\u8eab\u4efd\u8bc1
OFFICE_CARD=\u519b\u5b98\u8bc1
PASSPORT=\u62a4\u7167
UNIDENTIFIED=\u672a\u8bc6\u522b
HAVE_BEARD=\u6709\u80e1\u5b50
NO_BEARD=\u6ca1\u80e1\u5b50
OPEN_MOUTH=\u5f20\u5634
CLOSE_MOUTH=\u95ed\u5634
YELLOW_COLOR=
BLACK_COLOR=
WHITE_COLOR=
OPEN_EYE=\u7741\u773c
CLOSE_EYE=\u95ed\u773c
SMILE=\u5fae\u7b11
ANGER=\u6124\u6012
SADNESS=\u60b2\u4f24
DISGUST=\u538c\u6076
FEAR=\u5bb3\u6015
SURPRISE=\u60ca\u8bb6
NEUTRAL=\u6b63\u5e38
LAUGH=\u5927\u7b11
WEAR_MASK=\u6234\u53e3\u7f69
NO_MASK=\u6ca1\u6234\u53e3\u7f69
WEAR_GLASSES=\u6234\u773c\u955c
NO_GLASSES=\u4e0d\u6234\u773c\u955c
UNKNOW=\u672a\u77e5
UNLIMITED=\u4e0d\u9650

NAME=\u59d3\u540d
BIRTHDAY=\u751f\u65e5
ID_NO=\u8bc1\u4ef6\u53f7
ID_TYPE=\u8bc1\u4ef6\u7c7b\u578b
SIMILARITY=\u76f8\u4f3c\u5ea6
UID=\u4eba\u5458\u6807\u8bc6\u7b26
STRANGER=\u964c\u751f\u4eba
GLASSES=\u773c\u955c
PICTURE_PATH=\u56fe\u7247\u8def\u5f84
FACE_LIBRARY_ID=\u4eba\u8138\u5e93ID
FACE_LIBRARY_NAME=\u4eba\u8138\u5e93\u540d\u79f0


ADD=\u6dfb\u52a0
MODIFY=\u4fee\u6539
DELETE=\u5220\u9664
FRESH=\u5237\u65b0
ADD_GROUP=\u6dfb\u52a0\u4eba\u8138\u5e93
MODIFY_GROUP=\u4fee\u6539\u4eba\u8138\u5e93
DEL_GROUP=\u5220\u9664\u4eba\u8138\u5e93
DISPOSITION=\u5e03\u63a7
DEL_DISPOSITION=\u64a4\u63a7

FIND_CONDITION=\u67e5\u627e\u6761\u4ef6
FIND_PERSON=\u67e5\u627e\u4eba\u5458
ADD_PERSON=\u6dfb\u52a0\u4eba\u5458
MODIFY_PERSON=\u4fee\u6539\u4eba\u5458
DEL_PERSON=\u5220\u9664\u4eba\u5458

PREVIOUSPAGE=\u4e0a\u4e00\u9875
LASTPAGE=\u4e0b\u4e00\u9875
SELECT_PICTURE=\u9009\u62e9\u56fe\u7247
SEARCH_BY_PIC=\u4ee5\u56fe\u641c\u56fe
DOWNLOAD_QUERY_PICTURE=\u4e0b\u8f7d\u67e5\u8be2\u5230\u7684\u56fe\u7247
FACE_LIBRARY=\u4eba\u8138\u5e93
HISTORY_LIBRARY=\u5386\u53f2\u5e93
CHOOSE_FACE_PIC=\u8bf7\u9009\u62e9\u4eba\u8138\u56fe\u7247
EVENT_TYPE=\u4e8b\u4ef6\u7c7b\u578b
PAGES_NUMBER=\u9875\u6570

SIMILARITY_RANGE=\u76f8\u4f3c\u5ea6\u8303\u56f4[0, 100]
PLEASE_INPUT_GROUPNAME=\u8bf7\u8f93\u5165\u4eba\u8138\u5e93\u540d\u79f0
PLEASE_SELECT_GROUP=\u8bf7\u9009\u62e9\u4eba\u8138\u5e93

PLEASE_SELECT_PERSON=\u8bf7\u9009\u62e9\u4eba\u5458
PLEASE_ADD_DISPOSITION_INFO=\u8bf7\u6dfb\u52a0\u5e03\u63a7\u4fe1\u606f
PLEASE_SELECT_DEL_DISPOSITION_INFO=\u8bf7\u9009\u62e9\u64a4\u63a7\u4fe1\u606f

#AutoRegister
AUTOREGISTER_LISTEN=\u4e3b\u52a8\u6ce8\u518c\u76d1\u542c
DEVICE_CONFIG=\u8bbe\u5907\u914d\u7f6e
DEVICE_LIST=\u8bbe\u5907\u5217\u8868
DEVICE_MANAGER=\u8bbe\u5907\u7ba1\u7406
ADD_DEVICE=\u6dfb\u52a0\u8bbe\u5907
MODIFY_DEVICE=\u4fee\u6539\u8bbe\u5907
DELETE_DEVICE=\u5220\u9664\u8bbe\u5907
CLEAR_DEVICE=\u6e05\u7a7a\u8bbe\u5907
IMPORT_DEVICE=\u5bfc\u5165\u8bbe\u5907
EXPORT_DEVICE=\u5bfc\u51fa\u8bbe\u5907
DEVICE_ID=\u8bbe\u5907ID
ENABLE=\u542f\u7528
REGISTER_ADDRESS=\u6ce8\u518c\u5730\u5740
REGISTER_PORT=\u6ce8\u518c\u7aef\u53e3\u53f7
GET=\u83b7\u53d6
SET=\u8bbe\u7f6e
RECORD=\u5f55\u97f3
DEVICE_LOGIN=\u8bbe\u5907\u5df2\u767b\u5f55

ALREADY_EXISTED=\u5df2\u5b58\u5728
ALREADY_EXISTED_WHETHER_OR_NOT_TO_COVER=\u5df2\u5b58\u5728\uff0c\u662f\u5426\u8986\u76d6(\u5426\uff0c\u4e0d\u4f1a\u5bfc\u51fa)
FILE_OPEN_PLEASE_CLOSE_FILE=\u6587\u4ef6\u88ab\u6253\u5f00\uff0c\u8bf7\u5148\u5173\u95ed\u6587\u4ef6
IMPORT_COMPLETION=\u5bfc\u5165\u5b8c\u6210
EXPORT_COMPLETION=\u5bfc\u51fa\u5b8c\u6210
FILE_NOT_EXIST=\u6587\u4ef6\u4e0d\u5b58\u5728

PLEASE_INPUT=\u8bf7\u8f93\u5165
MAX_SUPPORT_100=\u6700\u5927\u652f\u6301100\u4e2a

#Attendance
ATTENDANCE=\u8003\u52e4\u673a
USER_ID=\u7528\u6237ID
USER_NAME=\u7528\u6237\u540d
CARD_NO=\u5361\u53f7
QUERY_CONDITION=\u67e5\u8be2\u6761\u4ef6
USER_OPERATE=\u7528\u6237\u64cd\u4f5c
FINGERPRINT_OPERATE=\u6307\u7eb9\u64cd\u4f5c
OPERATE_BY_USER_ID=\u901a\u8fc7\u7528\u6237ID\u64cd\u4f5c\u6307\u7eb9
OPERATE_BY_FINGERPRINT_ID=\u901a\u8fc7\u6307\u7eb9ID\u64cd\u4f5c\u6307\u7eb9
FINGERPRINT_ID=\u6307\u7eb9ID
SEARCH=\u67e5\u627e
SEARCH_FINGERPRINT=\u67e5\u627e\u6307\u7eb9
ADD_FINGERPRINT=\u6dfb\u52a0\u6307\u7eb9
DELETE_FINGERPRINT=\u5220\u9664\u6307\u7eb9
SUBSCRIBE=\u8ba2\u9605
UNSUBSCRIBE=\u53d6\u6d88\u8ba2\u9605
USER_LIST=\u7528\u6237\u5217\u8868
NEXT_PAGE=\u4e0b\u4e00\u9875
USER_INFO=\u7528\u6237\u4fe1\u606f
DOOROPEN_METHOD=\u5f00\u95e8\u65b9\u5f0f
FINGERPRINT=\u6307\u7eb9
FINGERPRINT_INFO=\u6307\u7eb9\u4fe1\u606f
FINGERPRINT_DATA=\u6307\u7eb9\u6570\u636e
CARD=\u5361
DELETE_FINGERPRINT_PROMPT=\u5c06\u4f1a\u5220\u9664\u8be5\u7528\u6237\u4e0b\u6240\u6709\u6307\u7eb9\u6570\u636e
SUBSCRIBE_FAILED=\u8ba2\u9605\u5931\u8d25
FINGERPRINT_ID_ILLEGAL=\u6307\u7eb9ID\u975e\u6cd5
FINGERPRINT_COLLECTION=\u6307\u7eb9\u91c7\u96c6
START_COLLECTION=\u5f00\u59cb\u91c7\u96c6
STOP_COLLECTION=\u505c\u6b62\u91c7\u96c6
IN_THE_COLLECTION=\u91c7\u96c6\u4e2d...
COLLECTION_COMPLETED=\u91c7\u96c6\u5b8c\u6210
COLLECTION_FAILED=\u91c7\u96c6\u5931\u8d25
FINGERPRINT_ID_NOT_EXIST=\u6307\u7eb9ID\u4e0d\u5b58\u5728
USER_ID_EXCEED_LENGTH=\u7528\u6237ID\u8d85\u8fc7\u6700\u5927\u957f\u5ea6
USER_NAME_EXCEED_LENGTH=\u7528\u6237\u540d\u8d85\u8fc7\u6700\u5927\u957f\u5ea6
CARD_NO_EXCEED_LENGTH=\u5361\u53f7\u8d85\u8fc7\u6700\u5927\u957f\u5ea6
CARD_NAME_EXCEED_LENGTH=\u5361\u540d\u8d85\u8fc7\u6700\u5927\u9650\u5236
CARD_PASSWD_EXCEED_LENGTH=\u5361\u5bc6\u7801\u8d85\u8fc7\u6700\u5927\u9650\u5236

#Gate

GATE=\u4eba\u8138\u5f00\u95e8
CARD_OPERATE=\u5361\u64cd\u4f5c
CARD_INFO=\u5361\u4fe1\u606f
CARD_MANAGER=\u5361\u7ba1\u7406

CLEAR=\u6e05\u7a7a

OPEN_STATUS=\u5f00\u95e8\u72b6\u6001
OPEN_METHOD=\u5f00\u95e8\u65b9\u5f0f

TEMPERATURE=\u6e29\u5ea6
MASK_STATUS=\u53e3\u7f69\u72b6\u6001

CARD_UNKNOW=\u672a\u77e5\u5361
CARD_GENERAL=\u4e00\u822c\u5361
CARD_VIP=VIP\u5361
CARD_GUEST=\u6765\u5bbe\u5361
CARD_PATROL=\u5de1\u903b\u5361
CARD_BACKLIST=\u7981\u6b62\u540d\u5355\u5361
CARD_COERCE=\u80c1\u8feb\u5361
CARD_POLLING=\u5de1\u68c0\u5361
CARD_MOTHERCARD=\u6bcd\u5361

STATE_UNKNOWN=\u672a\u77e5
STATE_NORMAL=\u6b63\u5e38
STATE_LOSE=\u4e22\u5931
STATE_LOGOFF=\u6ce8\u9500
STATE_FREEZE=\u51bb\u7ed3
STATE_ARREARS=\u6b20\u8d39
STATE_OVERDUE=\u903e\u671f
STATE_PREARREARS=\u9884\u6b20\u8d39

RECORD_NO=\u8bb0\u5f55\u96c6\u7f16\u53f7
CARD_NAME=\u5361\u540d
CARD_STATUS=\u5361\u72b6\u6001
CARD_PASSWORD=\u5361\u5bc6\u7801
CARD_TYPE=\u5361\u7c7b\u578b
CARD_NUM=\u8bc1\u4ef6\u53f7
USE_TIMES=\u4f7f\u7528\u6b21\u6570
IS_FIRST_ENTER=\u662f\u5426\u9996\u5361
IS_VALID=\u662f\u5426\u6709\u6548
VALID_PERIOD=\u6709\u6548\u671f
VALID_START_TIME=\u6709\u6548\u5f00\u59cb\u65f6\u95f4
VALID_END_TIME=\u6709\u6548\u7ed3\u675f\u65f6\u95f4
FIRST_ENTER=\u9996\u5361
NO_FIRST_ENTER=\u975e\u9996\u5361
VALID=\u6709\u6548
INVALID=\u65e0\u6548

PLEASE_SELECT_CARD=\u8bf7\u9009\u62e9\u5361
PLEASE_INPUT_CARDNO=\u8bf7\u8f93\u5165\u5361\u53f7
PLEASE_INPUT_USERID=\u8bf7\u8f93\u5165\u7528\u6237ID
WANT_CLEAR_ALL_INFO=\u4f60\u662f\u5426\u60f3\u8981\u6e05\u7a7a\u6240\u6709\u4fe1\u606f?

ADD_CARD_INDO_FAILED=\u6dfb\u52a0\u5361\u4fe1\u606f\u5931\u8d25 
ADD_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=\u6dfb\u52a0\u5361\u4fe1\u606f\u548c\u4eba\u8138\u6210\u529f
ADD_CARD_INFO_SUCCEED_BUT_ADD_PERSON_PICTURE_FAILED=\u6dfb\u52a0\u5361\u4fe1\u606f\u6210\u529f\uff0c\u4f46\u6dfb\u52a0\u4eba\u8138\u5931\u8d25
CARD_EXISTED_ADD_PERSON_PICTURE_SUCCEED=\u5361\u4fe1\u606f\u5df2\u5b58\u5728\uff0c\u6dfb\u52a0\u4eba\u8138\u6210\u529f

MODIFY_CARD_INFO_SUCCEED=\u4fee\u6539\u5361\u4fe1\u606f\u6210\u529f
MODIFY_CARD_INFO_FAILED=\u4fee\u6539\u5361\u4fe1\u606f\u5931\u8d25
MODIFY_CARD_INFO_AND_PERSON_PICTURE_SUCCEED=\u4fee\u6539\u5361\u4fe1\u606f\u548c\u4eba\u8138\u6210\u529f
MODIFY_CARD_INFO_SUCCEED_BUT_MODIFY_PERSON_PICTURE_FAILED=\u4fee\u6539\u5361\u4fe1\u606f\u6210\u529f\uff0c\u4f46\u4fee\u6539\u4eba\u8138\u5931\u8d25

NET_ACCESS_DOOROPEN_METHOD_UNKNOWN=\u672a\u77e5
NET_ACCESS_DOOROPEN_METHOD_PWD_ONLY=\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD=\u5237\u5361\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_FIRST=\u5148\u5237\u5361\u540e\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_PWD_FIRST=\u5148\u5bc6\u7801\u540e\u5237\u5361\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_REMOTE=\u8fdc\u7a0b\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_BUTTON=\u5f00\u9501\u6309\u94ae\u8fdb\u884c\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT=\u6307\u7eb9\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_PWD_CARD_FINGERPRINT=\u5bc6\u7801+\u5237\u5361+\u6307\u7eb9\u7ec4\u5408\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_PWD_FINGERPRINT=\u5bc6\u7801+\u6307\u7eb9\u7ec4\u5408\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_FINGERPRINT=\u5237\u5361+\u6307\u7eb9\u7ec4\u5408\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_PERSONS=\u591a\u4eba\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_KEY=\u94a5\u5319\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_COERCE_PWD=\u80c1\u8feb\u5bc6\u7801\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_QRCODE=\u4e8c\u7ef4\u7801\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_FACE_RECOGNITION=\u76ee\u6807\u8bc6\u522b\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD=\u4eba\u8bc1\u5bf9\u6bd4
NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_AND_IDCARD=\u8eab\u4efd\u8bc1+ \u4eba\u8bc1\u6bd4\u5bf9
NET_ACCESS_DOOROPEN_METHOD_BLUETOOTH=\u84dd\u7259\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_CUSTOM_PASSWORD=\u4e2a\u6027\u5316\u5bc6\u7801\u5f00\u95e8
NET_ACCESS_DOOROPEN_METHOD_USERID_AND_PWD=UserID+\u5bc6\u7801
NET_ACCESS_DOOROPEN_METHOD_FACE_AND_PWD=\u4eba\u8138+\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_PWD=\u6307\u7eb9+\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE=\u6307\u7eb9+\u4eba\u8138\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE=\u5237\u5361+\u4eba\u8138\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FACE_OR_PWD=\u4eba\u8138\u6216\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_PWD=\u6307\u7eb9\u6216\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE=\u6307\u7eb9\u6216\u4eba\u8138\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE=\u5237\u5361\u6216\u4eba\u8138\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT=\u5237\u5361\u6216\u6307\u7eb9\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD=\u6307\u7eb9+\u4eba\u8138+\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FACE_AND_PWD=\u5237\u5361+\u4eba\u8138+\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD=\u5237\u5361+\u6307\u7eb9+\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_AND_PWD_AND_FACE=\u5361+\u6307\u7eb9+\u4eba\u8138\u7ec4\u5408\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD=\u6307\u7eb9\u6216\u4eba\u8138\u6216\u5bc6\u7801
NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FACE_OR_PWD =\u5361\u6216\u4eba\u8138\u6216\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE=\u5361\u6216\u6307\u7eb9\u6216\u4eba\u8138\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD=\u5361+\u6307\u7eb9+\u4eba\u8138+\u5bc6\u7801\u7ec4\u5408\u5f00\u9501 
NET_ACCESS_DOOROPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD=\u5361\u6216\u6307\u7eb9\u6216\u4eba\u8138\u6216\u5bc6\u7801\u5f00\u9501
NET_ACCESS_DOOROPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE=(\u8eab\u4efd\u8bc1+\u4eba\u8bc1\u6bd4\u5bf9)\u6216 \u5237\u5361 \u6216 \u4eba\u8138
NET_ACCESS_DOOROPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE=\u4eba\u8bc1\u6bd4\u5bf9 \u6216 \u5237\u5361(\u4e8c\u7ef4\u7801) \u6216 \u4eba\u8138

#ThemalCamera
THERMAL_CAMERA=\u70ed\u6210\u50cf
THERMAL_OPERATE=\u64cd\u4f5c
POINT_QUERY=\u67e5\u8be2\u6d4b\u6e29\u70b9
ITEM_QUERY=\u67e5\u8be2\u6d4b\u6e29\u9879
TEMPER_QUERY=\u67e5\u8be2\u6e29\u5ea6
HEATMAP=\u70ed\u56fe\u4fe1\u606f
POINT_TEMPER=\u6d4b\u6e29\u70b9
ITEM_TEMPER=\u6d4b\u6e29\u9879
X=X
Y=Y
COORDINATE_ILLEGAL=\u5750\u6807\u975e\u6cd5
QUERY_RESULT=\u67e5\u8be2\u7ed3\u679c
METER_TYPE=\u6d4b\u6e29\u9879\u7c7b\u522b
TEMPER_UNIT=\u6e29\u5ea6\u5355\u4f4d
TEMPER=\u6e29\u5ea6
UNKNOWN=\u672a\u77e5
SPOT=\u70b9
LINE=\u7ebf
AREA=\u533a\u57df
CENTIGRADE=\u6444\u6c0f\u5ea6
FAHRENHEIT=\u534e\u6c0f\u5ea6
PRESET_ID=\u9884\u7f6e\u70b9\u7f16\u53f7
RULE_ID=\u89c4\u5219\u7f16\u53f7
TEMPER_AVER=\u5e73\u5747\u6e29\u5ea6
TEMPER_MAX=\u6700\u9ad8\u6e29\u5ea6
TEMPER_MIN=\u6700\u4f4e\u6e29\u5ea6
TEMPER_MID=\u4e2d\u95f4\u6e29\u5ea6
TEMPER_STD=\u6807\u51c6\u65b9\u5dee
INPUT_ILLEGAL=\u8f93\u5165\u975e\u6cd5
TEMPER_INFO=\u6d4b\u6e29\u4fe1\u606f
FIVE_MINUTES=\u4e94\u5206\u949f
TEN_MINUTES=\u5341\u5206\u949f
FIFTEEN_MINUTES=\u5341\u4e94\u5206\u949f
THIRTY_MINUTES=\u4e09\u5341\u5206\u949f
SAVE_PERIOD=\u4fdd\u5b58\u5468\u671f
QUERY_LIST=\u67e5\u8be2\u5217\u8868
RECORD_TIME=\u8bb0\u5f55\u65f6\u95f4
ITEM_NAME=\u540d\u79f0
COORDINATE=\u5750\u6807
NO_RECORD=\u65e0\u8bb0\u5f55
HEATMAP_OPERATE=\u64cd\u4f5c
IDLE=\u7a7a\u95f2
ACQUIRING=\u83b7\u53d6\u4e2d
RADIOMETRY_ATTACH=\u8ba2\u9605\u70ed\u56fe\u6570\u636e
RADIOMETRY_DETACH=\u505c\u6b62\u8ba2\u9605
RADIOMETRY_FETCH=\u83b7\u53d6\u70ed\u56fe
SAVE_HEATMAP=\u4fdd\u5b58\u70ed\u56fe
HEATMAP_METADATA_INFO=\u70ed\u56fe\u5143\u6570\u636e
HEIGHT=\u9ad8
WIDTH=\u5bbd
LENGTH=\u6570\u636e\u5927\u5c0f
SENSOR_TYPE=\u673a\u82af\u7c7b\u578b
HEATMAP_SAVE_SUCCESS=\u70ed\u56fe\u4fdd\u5b58\u6210\u529f

# matrix screen
MATRIX_SCREEN=\u70b9\u9635\u5c4f\u4e0b\u53d1
PASSING_STATE=\u8fc7\u8f66\u72b6\u6001
PASSING_CAR=\u8fc7\u8f66
NO_CAR=\u65e0\u8f66
IN_TIME=\u5165\u573a\u65f6\u95f4
OUT_TIME=\u51fa\u573a\u65f6\u95f4
PLATE_NUMBER=\u8f66\u724c\u53f7\u7801
CAR_OWNER=\u8f66\u4e3b
PARKING_TIME=\u505c\u8f66\u65f6\u957f
USER_TYPE=\u7528\u6237\u7c7b\u578b
MONTHLY_CARD_USER=\u6708\u5361\u7528\u6237
ANNUAL_CARD_USER=\u5e74\u5361\u7528\u6237
LONG_TERM_USER=\u957f\u671f\u7528\u6237/VIP
TEMPORARY_USER=\u4e34\u65f6\u7528\u6237/Visitor
PARKING_CHARGE=\u505c\u8f66\u8d39
DAYS_DUE=\u5230\u671f\u5929\u6570
REMAINING_PARKING_SPACES=\u5269\u4f59\u8f66\u4f4d
VEHICLES_NOT_ALLOWED_TO_PASS=\u4e0d\u5141\u8bb8\u8f66\u8f86\u901a\u8fc7
ALLOWED_VEHICLES_TO_PASS=\u5141\u8bb8\u8f66\u8f86\u901a\u8fc7
SET_UP=\u8bbe\u7f6e
SUCCESSFULLY_ISSUED=\u4e0b\u53d1\u6210\u529f
DELIVERY_FAILED=\u4e0b\u53d1\u5931\u8d25
CUSTOM_USER_CLASS=\u81ea\u5b9a\u4e49\u7528\u6237\u7c7b
REMARKS_INFORMATION=\u5907\u6ce8\u4fe1\u606f
CUSTOM_INFORMATION=\u81ea\u5b9a\u4e49\u4fe1\u606f

# \ufffd\ufffd\ufffd\ufffd\u0373\ufffd\ufffd
HUMAN_NUMBER_STATISTIC_TITLE=\u4eba\u6570\u7edf\u8ba1
HUMAN_NUMBER_STATISTIC_CONTROL=\u4eba\u6570\u7edf\u8ba1\u63a7\u5236

HUMAN_NUMBER_STATISTIC_EVENT_TITLE=\u4eba\u6570\u7edf\u8ba1\u4e8b\u4ef6\u5217\u8868

HUMAN_NUMBER_STATISTIC_EVENT_CHANNEL=\u901a\u9053
HUMAN_NUMBER_STATISTIC_EVENT_TIME=\u4e8b\u4ef6\u65f6\u523b
HUMAN_NUMBER_STATISTIC_EVENT_HOUR_IN=\u672c\u5c0f\u65f6\u8fdb
HUMAN_NUMBER_STATISTIC_EVENT_HOUR_OUT=\u672c\u5c0f\u65f6\u51fa
HUMAN_NUMBER_STATISTIC_EVENT_TODAY_IN=\u4eca\u65e5\u8fdb
HUMAN_NUMBER_STATISTIC_EVENT_TODAY_OUT=\u4eca\u65e5\u51fa
HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_IN=\u603b\u5171\u8fdb
HUMAN_NUMBER_STATISTIC_EVENT_TOTAL_OUT=\u603b\u5171\u51fa

HUMAN_NUMBER_STATIC_EVENT_OSD_CLEAR=OSD\u6e05\u9664

VTO_ALARM_EVENT_ROOM_NO=\u623f\u95f4\u53f7
VTO_ALARM_EVENT_CARD_NO=\u5361\u53f7
VTO_ALARM_EVENT_TIME=\u65f6\u95f4
VTO_ALARM_EVENT_OPEN_METHOD=\u5f00\u95e8\u65b9\u5f0f
VTO_ALARM_EVENT_STATUS=\u72b6\u6001

VTO_REAL_LOAD_ROOM_NO=\u623f\u95f4\u53f7
VTO_REAL_LOAD_CARD_NO=\u5361\u53f7
VTO_REAL_LOAD_TIME=\u65f6\u95f4
VTO_REAL_LOAD_EVENT_INFO=\u4e8b\u4ef6\u4fe1\u606f

VTO_OPERATE_MANAGER_TITLE=\u5361\u4e0e\u6307\u7eb9\u4e0e\u4eba\u8138\u7ba1\u7406
VTO_OPERATE_MANAGER_REC_NO=\u7f16\u53f7
VTO_OPERATE_MANAGER_ROOM_NO=\u623f\u95f4\u53f7
VTO_OPERATE_MANAGER_CARD_NO=\u5361\u53f7
VTO_OPERATE_MANAGER_FINGER_PRINT_DATA=\u6307\u7eb9\u6570\u636e

VTO_OPERATE_INFO_TITLE=\u589e\u52a0

VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE=\u91c7\u96c6\u6307\u7eb9
DOOR_OPEN=\u5f00\u95e8
DOOR_CLOSE=\u5173\u95e8
EVENT_OPERATE=\u4e8b\u4ef6\u64cd\u4f5c
START_REAL_LOAD_PIC=\u5f00\u59cb\u667a\u80fd\u76d1\u542c
STOP_REAL_LOAD_PIC=\u505c\u6b62\u667a\u80fd\u76d1\u542c
ALARM_EVENT=\u62a5\u8b66\u4e8b\u4ef6
REAL_LOAD_EVENT=\u667a\u80fd\u4e8b\u4ef6
COLLECTION_RESULT=\u91c7\u96c6\u7ed3\u679c
NEED_FINGER_PRINT=\u9700\u8981\u6307\u7eb9
FACE_INFO=\u4eba\u8138\u4fe1\u606f
OPEN=\u6253\u5f00
VTO=\u53ef\u89c6\u5bf9\u8bb2\u95e8\u53e3\u673a
TRAFFIC_ALLOW_LIST=\u667a\u80fd\u4ea4\u901a\u5141\u8bb8\u540d\u5355
MODIFY_CARD_FACE_FAILED=\u4fee\u6539\u4eba\u8138\u5931\u8d25
EM_MASK_STATE_UNKNOWN=\u672a\u77e5
EM_MASK_STATE_NODISTI=\u672a\u8bc6\u522b
EM_MASK_STATE_NOMASK=\u6ca1\u6234\u53e3\u7f69
EM_MASK_STATE_WEAR=\u6234\u53e3\u7f69

END_SEARCH=\u67e5\u8be2\u7ed3\u675f
DOWNLOAD_PICTURE=\u4e0b\u8f7d\u56fe\u7247
ENTER_PICTURE_PATH=\u8bf7\u8f93\u5165\u56fe\u7247\u8def\u5f84
LOADING=\u8bbe\u5907\u6b63\u5728\u5904\u7406\u4e2d
REMOTE_OPEN_DOOR=\u8fdc\u7a0b\u5f00\u95e8
QUERY_CARD_EXIST_FAILED=\u68c0\u67e5\u5361\u53f7\u662f\u5426\u5b58\u5728\u5931\u8d25
CARD_EXIST=\u5361\u53f7\u5df2\u5b58\u5728
INPUT_ROOM_NO=\u8bf7\u8f93\u5165\u623f\u95f4\u53f7
ROOM_NO_EXCEED_LENGTH=\u623f\u95f4\u53f7\u8d85\u8fc7\u6700\u5927\u957f\u5ea6
REMOVE_CARD_FACE_FAILED=\u5220\u9664\u4eba\u8138\u5931\u8d25


#SCADA
SCADA=\u52a8\u73af\u4e3b\u673a
SCADA_DEVICE_LIST=\u8bbe\u5907\u8868
SCADA_POINT_LIST=\u70b9\u4f4d\u8868
SCADA_ATTACH_ALARM=\u8ba2\u9605\u62a5\u8b66
SCADA_ATTACH_INFO=\u8ba2\u9605\u4fe1\u606f
SCADA_ATTACH=\u8ba2\u9605
BTN_LIST = \u83b7\u53d6
BTN_ATTACH = \u8ba2\u9605

STOP_LISTEN_FAILED=\u505c\u6b62\u76d1\u542c\u5931\u8d25

SCREEN_NUMBER=\u5c4f\u5e55\u7f16\u53f7
TEXT_CONTENT=\u6587\u672c\u5185\u5bb9
TEXT_CONTENT_TYPE=\u6587\u672c\u7c7b\u578b
TEXT_CONTENT_COLOR=\u6587\u672c\u989c\u8272
SCROLL_TYPE=\u6eda\u52a8\u7c7b\u578b
SCROLL_SPEED=\u6eda\u52a8\u901f\u5ea6

ORDINARY=\u666e\u901a
QR_CODE=\u4e8c\u7ef4\u7801
LOCAL_TIME=\u672c\u5730\u65f6\u95f4
RESOURCE=\u8d44\u6e90\u6587\u4ef6

NOT_ROLLING=\u4e0d\u6eda\u52a8
SCROLL_LEFT_AND_RIGHT=\u5de6\u53f3\u6eda\u52a8
SCROLL_UP_AND_DOWN=\u4e0a\u4e0b\u7ffb\u9875\u6eda\u52a8

NUMBER_STRING=\u6570\u5b57\u5b57\u7b26\u4e32
VOICE_TEXT=\u8bed\u97f3\u6587\u672c
ISSUED=\u4e0b\u53d1
PROMPT=\u8bf7\u6dfb\u52a0\u5bf9\u5e94\u53c2\u6570

DEVICE_NAME=\u8bbe\u5907\u540d\u79f0
POINT_ID=\u70b9\u4f4dID
IF_VALID_SIGNAL_POINT=\u662f\u5426\u6709\u6548\u4fe1\u53f7\u70b9
POINT_NAME=\u70b9\u4f4d\u540d\u79f0
ALARM_DESCRIBE=\u62a5\u8b66\u63cf\u8ff0
ALARM_LEVEL=\u62a5\u8b66\u7ea7\u522b
ALARM_DELAY=\u62a5\u8b66\u65f6\u5ef6
ALARM_TYPE=\u62a5\u8b66\u7c7b\u578b
ALARM_TIME=\u62a5\u8b66\u65f6\u95f4
COLLECT_TIME=\u91c7\u96c6\u65f6\u95f4


ALLOWLIST_OPERATION=\u5141\u8bb8\u540d\u5355\u64cd\u4f5c
SINGLE_UPLOAD =\u5355\u4e2a\u4e0a\u4f20
LICENSE_PLATE_RUN=\u8f93\u5165\u8981\u67e5\u7684\u8f66\u724c\u53f7
FUZZY_QUERY=\u6a21\u7cca\u67e5\u8be2
DELETE_ALL=\u5168\u90e8\u5220\u9664
AUTHORIZATION=\u6388\u6743
UNAUTHORIZATION=\u672a\u6388\u6743
BATCH_UPLOAD=\u6279\u91cf\u4e0a\u4f20
BROWSE=\u6d4f\u89c8
UPLOAD=\u4e0a\u4f20
QUERY_INFORMATION=\u67e5\u8be2\u4fe1\u606f
DIALOG=\u5bf9\u8bdd\u6846
LICENSE_PLATE_NUMBER=\u8f66\u724c\u53f7
MODIFY_PANEL=\u4fee\u6539\u9762\u677f
SERIAL_NUMBER=\u5e8f\u53f7
OPEN_MODEL=\u5f00\u95f8\u6a21\u5f0f
LICENSE_PLATE_LENGTH_TOO_LONG=\u8f66\u724c\u957f\u5ea6\u8fc7\u957f
NAME_TOO_LONG=\u540d\u5b57\u957f\u5ea6\u8fc7\u957f
ADD_SUCCESS=\u6dfb\u52a0\u6210\u529f
ADD_FAIL=\u6dfb\u52a0\u5931\u8d25
DELETE_SUCCESS=\u5220\u9664\u6210\u529f
DELETE_FAIL=\u5220\u9664\u5931\u8d25
MODIFY_SUCCESS=\u4fee\u6539\u6210\u529f
MODIFY_FAIL=\u4fee\u6539\u5931\u8d25
UPLOAD_SUCCESS=\u4e0a\u4f20\u6210\u529f
ENTER_QUERY_DATA=\u8bf7\u8f93\u5165\u8981\u67e5\u8be2\u7684\u6570\u636e
FILLING_RULES=\u586b\u5199\u5408\u6cd5\u5b57\u7b26
UPLOAD_FAIL=\u4e0a\u4f20\u5931\u8d25
UPLOADING=\u6b63\u5728\u4e0a\u4f20
SURE_UPLOAD=\u786e\u5b9a\u4e0a\u4f20?
DATA_NUMBER=\u6761\u6570\u636e
SELECT_DATA=\u8bf7\u9009\u62e9\u6570\u636e


\ No newline at end of file
diff --git a/iailab-module-data/pom.xml b/iailab-module-data/pom.xml
index 7990037..84f1266 100644
--- a/iailab-module-data/pom.xml
+++ b/iailab-module-data/pom.xml
@@ -22,4 +22,23 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <build>
+        <pluginManagement>
+            <plugins>
+                <!-- maven-surefire-plugin 插件,用于运行单元测试。 -->
+                <!-- 注意,需要使用 3.0.X+,因为要支持 Junit 5 版本 -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${maven-surefire-plugin.version}</version>
+                    <configuration>
+                        <skip>true</skip>
+                    </configuration>
+                </plugin>
+                <!-- maven-compiler-plugin 插件,解决 Lombok + MapStruct 组合 -->
+            </plugins>
+        </pluginManagement>
+    </build>
+
+
 </project>
\ No newline at end of file
diff --git a/iailab-module-model/iailab-module-model-biz/pom.xml b/iailab-module-model/iailab-module-model-biz/pom.xml
index 50222a5..77029ae 100644
--- a/iailab-module-model/iailab-module-model-biz/pom.xml
+++ b/iailab-module-model/iailab-module-model-biz/pom.xml
@@ -32,17 +32,17 @@
             <version>${revision}</version>
         </dependency>
 
-        <!-- 依赖服务 -->
-        <dependency>
-            <groupId>com.iailab</groupId>
-            <artifactId>iailab-module-infra-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.iailab</groupId>
-            <artifactId>iailab-module-system-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
+<!--        &lt;!&ndash; 依赖服务 &ndash;&gt;-->
+<!--        <dependency>-->
+<!--            <groupId>com.iailab</groupId>-->
+<!--            <artifactId>iailab-module-infra-api</artifactId>-->
+<!--            <version>${revision}</version>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>com.iailab</groupId>-->
+<!--            <artifactId>iailab-module-system-api</artifactId>-->
+<!--            <version>${revision}</version>-->
+<!--        </dependency>-->
 
         <!-- 业务组件 -->
         <dependency>
@@ -84,10 +84,6 @@
         <dependency>
             <groupId>com.iailab</groupId>
             <artifactId>iailab-common-monitor</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.iailab</groupId>
-            <artifactId>iailab-common-biz-data-permission</artifactId>
         </dependency>
 
         <!-- Test 测试相关 -->
diff --git a/iailab-module-model/pom.xml b/iailab-module-model/pom.xml
index b982f5a..6c962af 100644
--- a/iailab-module-model/pom.xml
+++ b/iailab-module-model/pom.xml
@@ -22,4 +22,23 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <build>
+        <pluginManagement>
+            <plugins>
+                <!-- maven-surefire-plugin 插件,用于运行单元测试。 -->
+                <!-- 注意,需要使用 3.0.X+,因为要支持 Junit 5 版本 -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${maven-surefire-plugin.version}</version>
+                    <configuration>
+                        <skip>true</skip>
+                    </configuration>
+                </plugin>
+                <!-- maven-compiler-plugin 插件,解决 Lombok + MapStruct 组合 -->
+            </plugins>
+        </pluginManagement>
+    </build>
+
+
 </project>
\ No newline at end of file
diff --git a/iailab-module-system/iailab-module-system-api/pom.xml b/iailab-module-system/iailab-module-system-api/pom.xml
index d6b11ff..b04920a 100644
--- a/iailab-module-system/iailab-module-system-api/pom.xml
+++ b/iailab-module-system/iailab-module-system-api/pom.xml
@@ -63,11 +63,6 @@
                         </goals>
                     </execution>
                 </executions>
-                <configuration>
-                    <descriptorRefs>
-                        <descriptorRef>jar-with-dependencies</descriptorRef>
-                    </descriptorRefs>
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/auth/AuthController.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/auth/AuthController.java
index ef22778..fc005c4 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/auth/AuthController.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/auth/AuthController.java
@@ -7,6 +7,7 @@
 import com.iailab.framework.common.pojo.CommonResult;
 import com.iailab.framework.common.util.object.BeanUtils;
 import com.iailab.framework.security.config.SecurityProperties;
+import com.iailab.framework.security.core.LoginUser;
 import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
 import com.iailab.module.system.controller.admin.app.vo.AppMenuRespVO;
 import com.iailab.module.system.controller.admin.app.vo.AppRespVO;
@@ -32,6 +33,7 @@
 import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.core.Authentication;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -44,7 +46,7 @@
 
 import static com.iailab.framework.common.pojo.CommonResult.success;
 import static com.iailab.framework.common.util.collection.CollectionUtils.convertSet;
-import static com.iailab.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.iailab.framework.security.core.util.SecurityFrameworkUtils.*;
 import static com.iailab.framework.tenant.core.context.TenantContextHolder.getTenantId;
 
 
@@ -178,6 +180,7 @@
         List<MenuDO> menuList = menuService.getMenuList(menuIds);
         menuList = menuService.filterDisableMenus(menuList);
         MenuDO menuDO = menuService.getMenuByAppId(id);
+        AppDO info = appService.getInfo(id);
         List<MenuDO> children = new LinkedList<>();
         // 遍历每一层
         Collection<Long> parentIds = Collections.singleton(menuDO.getId());
@@ -203,6 +206,7 @@
                 parentMenu.setVisible(true);
                 parentMenu.setAlwaysShow(false);
                 parentMenu.setParentId(menuDO.getId());
+                parentMenu.setPath("/");
                 menu.setParentId(parentMenu.getId());
                 tempChildren.add(parentMenu);
                 tempChildren.add(menu);
@@ -210,7 +214,7 @@
                 tempChildren.add(menu);
             }
         });
-        menuVOS = AuthConvert.INSTANCE.buildMenuTree(tempChildren, menuDO.getId(), menuDO.getPath());
+        menuVOS = AuthConvert.INSTANCE.buildMenuTree(tempChildren, menuDO.getId(), menuDO.getPath(), info.getType());
         // 2. 拼接结果返回
         return success(menuVOS);
     }
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/permission/MenuController.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/permission/MenuController.java
index 67553f1..9f85a00 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/permission/MenuController.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/controller/admin/permission/MenuController.java
@@ -21,7 +21,9 @@
 import java.util.Comparator;
 import java.util.List;
 
+import static com.iailab.framework.common.pojo.CommonResult.error;
 import static com.iailab.framework.common.pojo.CommonResult.success;
+import static com.iailab.framework.tenant.core.context.TenantContextHolder.getTenantId;
 
 @Tag(name = "管理后台 - 菜单")
 @RestController
@@ -96,7 +98,13 @@
     @Operation(summary = "获取应用菜单列表", description = "用于【应用菜单】界面")
     @PreAuthorize("@ss.hasPermission('system:app-menu:query')")
     public CommonResult<List<MenuRespVO>> getAppMenuList(MenuListReqVO reqVO) {
-        List<MenuDO> list = menuService.getAppMenuList(reqVO);
+        // 获取 tenantId
+        Long tenantId = getTenantId();
+        // 管理员租户不在此管理菜单
+        if(tenantId == 1l) {
+            return error(-1, "管理员租户请在“菜单管理”中管理菜单!");
+        }
+        List<MenuDO> list = menuService.getAppMenuList(tenantId, reqVO);
         list.sort(Comparator.comparing(MenuDO::getSort));
         return success(BeanUtils.toBean(list, MenuRespVO.class));
     }
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
index e8e73c5..9aab0a7 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/convert/auth/AuthConvert.java
@@ -165,11 +165,55 @@
         // 获得到所有的根节点
         List<AuthPermissionInfoRespVO.MenuVO> menuVOS = filterList(treeNodeMap.values(), node -> id.equals(node.getParentId()));
         menuVOS.stream().forEach(menuVO -> {
-            menuVO.setPath(parentPath + "/" + menuVO.getPath());
+            menuVO.setPath((parentPath + "/" + menuVO.getPath()).replace("//", "/"));
         });
         return menuVOS;
     }
 
+    /**
+     * 将菜单列表,构建成菜单树
+     *
+     * @param menuList 菜单列表
+     * @return 菜单树
+     */
+    default List<AuthPermissionInfoRespVO.MenuVO> buildMenuTree(List<MenuDO> menuList, Long id, String parentPath, Integer type) {
+        if (CollUtil.isEmpty(menuList)) {
+            return Collections.emptyList();
+        }
+        // 移除按钮
+        menuList.removeIf(menu -> menu.getType().equals(MenuTypeEnum.BUTTON.getType()));
+        // 排序,保证菜单的有序性
+        menuList.sort(Comparator.comparing(MenuDO::getSort));
+
+        // 构建菜单树
+        // 使用 LinkedHashMap 的原因,是为了排序 。实际也可以用 Stream API ,就是太丑了。
+        Map<Long, AuthPermissionInfoRespVO.MenuVO> treeNodeMap = new LinkedHashMap<>();
+        menuList.forEach(menu -> treeNodeMap.put(menu.getId(), AuthConvert.INSTANCE.convertTreeNode(menu)));
+        // 处理父子关系
+        treeNodeMap.values().stream().filter(node -> !node.getParentId().equals(id)).forEach(childNode -> {
+            // 获得父节点
+            AuthPermissionInfoRespVO.MenuVO parentNode = treeNodeMap.get(childNode.getParentId());
+            if (parentNode == null) {
+                LoggerFactory.getLogger(getClass()).error("[buildRouterTree][resource({}) 找不到父资源({})]",
+                        childNode.getId(), childNode.getParentId());
+                return;
+            }
+            // 将自己添加到父节点中
+            if (parentNode.getChildren() == null) {
+                parentNode.setChildren(new ArrayList<>());
+            }
+            parentNode.getChildren().add(childNode);
+        });
+        // 获得到所有的根节点
+        List<AuthPermissionInfoRespVO.MenuVO> menuVOS = filterList(treeNodeMap.values(), node -> id.equals(node.getParentId()));
+        if(type == 0) {
+            menuVOS.stream().forEach(menuVO -> {
+                menuVO.setPath((parentPath + "/" + menuVO.getPath()).replace("//", "/"));
+            });
+        }
+        return menuVOS;
+    }
+
     SocialUserBindReqDTO convert(Long userId, Integer userType, AuthSocialLoginReqVO reqVO);
 
     SmsCodeSendReqDTO convert(AuthSmsSendReqVO reqVO);
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/app/AppServiceImpl.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/app/AppServiceImpl.java
index 9956f88..dd0be59 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/app/AppServiceImpl.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/app/AppServiceImpl.java
@@ -163,7 +163,6 @@
     @Override
     public List<AuthPermissionInfoRespVO.MenuVO> getAppMenu(Long id) {
         MenuDO menuDO = menuMapper.selectById(id);
-
         List<MenuDO> children = new LinkedList<>();
         // 遍历每一层
         Collection<Long> parentIds = Collections.singleton(id);
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuService.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuService.java
index ca267b6..e7ca3b7 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuService.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuService.java
@@ -84,7 +84,7 @@
      * @param reqVO 筛选条件请求 VO
      * @return 菜单列表
      */
-    List<MenuDO> getAppMenuList(MenuListReqVO reqVO);
+    List<MenuDO> getAppMenuList(Long tenantId, MenuListReqVO reqVO);
 
     /**
      * 获得权限对应的菜单编号数组
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuServiceImpl.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuServiceImpl.java
index d3c0c46..1497663 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuServiceImpl.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/MenuServiceImpl.java
@@ -158,8 +158,10 @@
 
     @Override
     public List<MenuDO> getAppMenuListByTenant(MenuListReqVO reqVO) {
+        // 获取 tenantId
+        Long tenantId = getTenantId();
         // 查询所有菜单,并过滤掉关闭的节点
-        List<MenuDO> menus = getAppMenuList(reqVO);
+        List<MenuDO> menus = getAppMenuList(tenantId, reqVO);
         // 开启多租户的情况下,需要过滤掉未开通的菜单
         tenantService.handleTenantMenu(menuIds -> menus.removeIf(menu -> !CollUtil.contains(menuIds, menu.getId())));
         return menus;
@@ -215,9 +217,7 @@
     }
 
     @Override
-    public List<MenuDO> getAppMenuList(MenuListReqVO reqVO) {
-        // 获取 tenantId
-        Long tenantId = getTenantId();
+    public List<MenuDO> getAppMenuList(Long tenantId, MenuListReqVO reqVO) {
         List<MenuDO> menuDOS = menuMapper.selectAppMenuList(tenantId, reqVO);
         Set<Long> menuDOIds = menuDOS.stream().map(MenuDO::getId).collect(Collectors.toSet());
         // 获得角色列表
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/PermissionServiceImpl.java b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/PermissionServiceImpl.java
index 06ea1cb..0ad56ef 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/PermissionServiceImpl.java
+++ b/iailab-module-system/iailab-module-system-biz/src/main/java/com/iailab/module/system/service/permission/PermissionServiceImpl.java
@@ -239,15 +239,14 @@
         if (CollUtil.isEmpty(roleIds)) {
             return Collections.emptySet();
         }
-
+        // 获取 tenantId
+        Long tenantId = getTenantId();
         // 如果是管理员的情况下,获取全部应用菜单编号
         if (roleService.hasAnySuperAdmin(roleIds)) {
             MenuListReqVO reqVO = new MenuListReqVO();
-            return convertSet(menuService.getAppMenuList(reqVO), MenuDO::getId);
+            return convertSet(menuService.getAppMenuList(tenantId, reqVO), MenuDO::getId);
         }
         // 如果是非管理员的情况下,获得拥有的应用菜单编号
-        // 获取 tenantId
-        Long tenantId = getTenantId();
         TenantDO tenant = tenantService.getTenant(tenantId);
         TenantPackageDO tenantPackage = tenantPackageService.getTenantPackage(tenant.getPackageId());
         Set<Long> menuIds = tenantPackage.getMenuIds();
diff --git a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
index 09cdce0..ea07602 100644
--- a/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
+++ b/iailab-module-system/iailab-module-system-biz/src/main/resources/application.yaml
@@ -202,6 +202,7 @@
       - sms_template
     ignore-tables:
       - system_app
+      - system_app_group
       - system_tenant
       - system_tenant_package
       - system_dict_data

--
Gitblit v1.9.3